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.
Read More
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.
Read More
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.
Read More
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.
Read More
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.
Read More
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.
Read More
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.
Read More