Fixing “cURL error 60”

We have a number of sites that use webhooks, which were having trouble connecting to our back-end services. This problem only occurred recently as everything was working in the past. Searching for the specific error message, “cURL error 60: SSL certificate problem: unable to get local issuer certificate” gave a Read more…

GoAccess

I have discovered this useful tool for web-server log analysis – GoAccess. It is a pretty nifty tool and shows various information collated from a typical NCSA log file produced by most web-servers. This tool came in handy recently, particularly when trouble-shooting specific customer complaints about a service that we Read more…

Preserving LVM Cache

While there are a lot of examples that describe how to set up a LVM cache on an SSD for a HDD backed storage, they mostly fail to describe an additional step needed to preserve the cache across a reboot on a Ubuntu system. The culprit is that the drivers Read more…

Photo by Harrison Broadbent on Unsplash

LTSP on Raspberry Pi 3B+

We have been running a thin-client setup in the office for a number of years now as we’ve found them to be easier to maintain, and it allowed everyone to login on any PC and access their work. Our thin-clients were all desktop PC-based machines with Gigabit Ethernet and no Read more…

Photo by Alexandre Debiève on Unsplash

HDL 102: Synthesis

The following is the simplified design flow for digital circuits. Design Entry Behavioral Simulation Synthesis Functional Simulation Place and Route Timing Simulation Implementation Synthesis is the process of turning the HDL code into circuitry. A software analogy for this is the compilation process that turns software code into machine binary. Read more…

PoW as Checksum

The purpose of a checksum is to determine whether a message was transmitted error free. There are many ways to determine a checksum and one of the ways to do this is to use a cryptographic hash. A cryptographic hash function has several useful properties to do this: A single Read more…

Photo by Alexandre Debiève on Unsplash

HDL 101: Introduction

Our new hires have to go through a series of refresher courses on basic/fundamental skills that are important here – Git, C/C++ programming, etc. For most of these things, there are plenty of resources online that can be used. However, there seems to be a shortage of materials for a Read more…

Understanding Proof-of-Work

I was curious to study the behaviour of the Proof-of-Work protocol in block-chains. The essence of POW is the use of a nonce as part of the payload being signed. In order to do this, I decided to test it out with a simple signing test program. The signature algorithm Read more…

Blockchain SQL

While there are many arguments about the value and valuation of Bitcoin, the crypto-currency, there is overall consensus on the importance of the block-chain, which is the technology that underpins all crypto-currencies in this world. The block-chain, as a distributed ledger, is extremely useful as a storage mechanism to replace Read more…

Remote Wireshark

Wireshark is a free and open source packet analyser. It is used for network troubleshooting, analysis, software and communications protocol development, and education. This is not a well advertised feature but it is possible to use Wireshark to monitor the traffic on a third machine. This may come in handy Read more…