10 Oct 2019

This blog has been updated infrequently over the six years that I have intended to write, and the nearly twenty years that I have owned this domain. Part of this probably comes from trying to bite off more than I can chew in my personal life, which is often eclipsed by obligations when consulting or working. For the past six years, much of my work has been in supporting startups, and as anyone knows, bootstrapping a startup can take all of the time and energy that one has.

03 Nov 2017

For the past nine months, I have been engaged with work. I have not had a chance to complete my Kinetis Deep Dive series, but I do intend to write more articles on this topic shortly.

03 Feb 2017

In this article, we will begin the process of writing a microkernel OS for the Cortex-M4 by building some simple task switching logic. The initial goal for this OS is to have support for unprivileged tasks running in thread mode. We will use cooperative multitasking early on so that we can implement some I/O bound tasks, and we will extend this to a pre-emptive multitasking model later on using the system tick timer. In this article, we’ll write a very simple cooperative multitasking implementation, which we will extend to support a barebones implementation of the Actor Model in a subsequent article.

16 Dec 2016

In this article, we’ll begin the Kinetis Deep Dive by setting up an embedded build and debug toolchain. Then, we can test the toolchain on an evaluation board through GDB.

15 Dec 2016

It has been nearly two years since my last blog post. For the past two years, I have been busy with work related projects, and I haven’t had much time to update this blog. Yet again, I am going to attempt to put together a series of technical articles. Hopefully, this time, I will be more successful in following up on them. In this post, I’ll talk about a new embedded project I’ll be documenting here.

29 Jan 2015

This article describes the AES reference implementation that I wrote in Haskell. I have implemented this algorithm half a dozen times over my career, for use in FIPS compliant implementations, for use in embedded systems, and even for use as a building block for more interesting things. This implementation is destined to be used for such an interesting project, which we will talk about during the next blog entry. First, we need an AES algorithm. AES is an interesting algorithm that combines some of the common elements typical of encryption, such as Confusion and Diffusion and Abstract Algebra, in this case Galois Field Theory. AES is based on the Rijndael block cipher, but with specific tunings as decided by NIST. Rijndael is a more general algorithm. This article stays close to AES, but implements tunable parameters which takes the algorithm away from the standard by adding back some ideas found in the original cipher. Since the point of this implementation is to build a parameterized PRNG and not to build an encryption system, I think this is a decent trade-off.

26 Jun 2013

Social media has come a long way since I first starting dabbling with the Internet in the ’90s. I purchased this domain back in 2000, and planned for years to turn it into my own personal weblog, long before “blogging” was a thing. In later years, I wrote under several pseudonyms on sites such as Livejournal. Soon, it became apparent that this “Social Media” thing was catching on, and I found myself on Twitter and Facebook.