Building a Distributed Log from Scratch: Scaling Message Delivery
In part two of this series we discussed data replication within the context of a distributed log and how it relates to high availability. Next, we’ll look at what it takes to scale the log such that it can handle non-trivial workloads. Data Scalability A key part of scaling any kind of data-intensive system is the…
Fear of Macros
Practical Racket macros
Fun with NFL Stats, Bokeh, and Pandas
An exploration of NFL play-by-play statistics with Bokeh and Pandas.
Go on Very Small Hardware
How low we can Go and still do something useful? I recently bought this ridiculously cheap board: I bought it for three reasons. First, I have never dealt (as a programmer) with STM32F0 series. Second, the STM32F10x series is getting old. MCUs belonging to the STM32F0 family are just as cheap if not cheaper and has…
Personal Notes on Corman Lisp 3.1 Release
Today, as I announced earlier, the Corman Lisp 3.1 has been released after more than a decade-long break. Somehow it happened that I am one of the active mai...
Kotlin: The Problem with null
このドメイン名は所有者により ドメインマーケット で売りに出されています。 誰でも購入できる状態であり、このドメイン名を利用してサイト運営やメールアドレスの利用を行うことができます。
Go and Versioning: Minimal Version Selection
A versioned Go command must decide which module versions to use in each build. I call this list of modules and versions for use in a given build the build list . For stable development, today’s build list must also be tomorrow’s build list. But then developers must also be allowed to change the build list: to upgrade…
Xamarin Forms: it works
In July 2017, I received a call from a former colleague asking me wether I wanted to begin a new app journey with him. The client would be Paris Turf, an editor specialized in horse races results. My lovely lovely lovely horse [1] They wanted to diversify and launch a
Zombie Processes Are Eating Your Memory
Zombies probably won’t consume 32 GB of your memory like they did to me, but zombie processes do exist, and I can help you find them and make sure that developers fix them. Tool source link is at t…
Lightweight Concurrency in Lua
wingolog: article: lightweight concurrency in lua
Programming Bottom-Up (1993)
(This essay is from the introduction to On Lisp .) It's a long-standing principle of programming style that the functional elements of a program should not be too large. If some component of a program grows beyond the stage where it's readily comprehensible, it becomes a mass of complexity which conceals errors as…
Python's GIL implemented in pure Python
Python's GIL explained in Python code
Implementing a JIT-compiler with Rust
I am writing Dora, a simple JIT-compiler with Rust. Dora is both the name of the custom programming language and of the JIT-compiler. After some time working on it, I want to write about the experiences I made. I started this project to get a better understanding of the low-level implementation details of a…
Oil Shell: Success with Aboriginal, Alpine, and Debian Linux
Three months ago, in Roadmap #5 , I wrote that OSH will be a better shell for building Linux distributions . It will run existing code, including bash scripts, but it's stricter and easier to debug.
Java’s Mysterious Interrupt
One of the lesser known parts of Java is InterruptedException. With its vague-sounding name and non-committal Javadoc, few people are able to figure out what they need to do with it. Since I myself didn’t really grok it, I decided to put together a post explaining how interruption works. If you are looking for a more…
Multi-Armed Bandits, Conjugate Models and Bayesian Reinforcement Learning
This is the first of a two-part series about Bayesian bandit algorithms. Check out the second post here. Let’s talk about Bayesianism. It’s developed a reputation (not entirely justified, but not entirely unjustified either) for being too mathematically sophisticated or too computationally intensive to work at scale…
When optimising code, never guess, always measure
This page has been Tagged As Software This is a truism that lots of people quote, but it can be hard to remember, especially in the heat of battle (as it were). Rather fortunately it came to mind just when needed, as I found something completely unexpected.
A guide to better embedded C++
Disclaimer: this, by no means, is not a definitive description of the whole embedded-specific development. This is just a small good practice about interaction with hardware.
Copying objects in JavaScript
In this article we will look at the various ways an object can be copied in Javascript. We will take a look at both shallow and deep copying. While shallow copying is rather straightforward, deep copying is more tricky. Currently, there is a HTML5 specification for a deep copy algorithm but it is not publically…