Scalable Program Architectures
How to design resilient architectural patterns that last the test of time
How to design resilient architectural patterns that last the test of time
Broccoli is an asset pipeline for building JS+CSS apps running in the browser. Read about the architecture, and how it compares to other build tools.
If your app makes use of two separate instances of the SQLite library, you can end up with a corrupted SQLite data file.
…that I wish I had known when I started grad school
Reverse engineering is a special subgenre of computer programming. It's about the closest that I as a programmer get to being a scientist. Gather data, formulate a hypothesis, test, refine, repeat: reverse engineering is basically applying the scientific method to a very, very small knowledge domain. If you've never…
A few months ago, I read an article by Harry Roberts where he introduced an interesting concept for working with related classes in CSS. In his article, he describes the use of the [] characters in class attributes to help understand their purpose at a quick glance. He presents this example, arguing that it makes the…
UPDATE: This post now contains obsolete information. Please read the new ClojureScript Quick Start instead
There has been a lot of discussion lately about Rust’s allocator story, and in particular our relationship to jemalloc. I’ve been trying to catch up, and I wanted to try and summarize my understanding and explain for others what is going on. I am trying to be as factually precise in this post as possible. If you see a…
Let's assume Go has one killer feature – cheap concurrency – not present in any other language with similar serial performance (ruling out say Erlang). And let's agree that it gives Go its perfect niche – and we're only discussing uses of Go outside that niche from now on. So we won't come back to concurrency till the…
An apparently trivial and uninteresting task nonetheless received some special optimization care within FSE : counting the bytes (or 2-...
Note : This article is for an obsolete version of Rust, and has been superceded by the slightly less misleadingly named "A Practical Intro to Macros in Rust 1.0" .
This book and its on-line version are distributed under the terms of the Creative Commons Attribution-NoDerivs 1.0 license, with the additional proviso that the right to publish it on paper for sale or other for-profit use is reserved to Pearson Education, Inc. A reference copy of this license may be found at…
Two interesting things in formally verified software happened recently. The big one was the release of SeL4 - a formally verified L4 microkernel. The second was much smaller, but closer to my usual scope: a paper which showed the correctness of sections of a couple of the assembly implementations of Curve25519.
correction: php core developers have urged that it is improper to call this version “5.7” (despite the versioning file stating so) PHP 5.7 PHP NG is still in alpha development…
I’m a huge fan of interactive programming (see: JavaScript , Java , Lisp , Clojure ). That is, modifying and extending a program while it’s running. For certain kinds of non-batch applications, it takes much of the tedium out of testing and tweaking during development. Until last week I didn’t know how to apply…
This is the latest in a series of articles about writing a simple HTML rendering engine:
Recently I gave an itemis internal talk about basic functional programming (FP) concepts. Towards the end I made a claim that objects and their blueprints (a.k.a. classes) have severe downsides and that it is much better to "leave data alone", which is exactly how Clojure and Haskell treat this subject.
Our industry has been infected by a dangerous meme, and it’s one that hasn’t been given its proper scrutiny. Like many memes that explode in popularity, “Worse is Better” gave a name to an underlying fragment of culture or philosophy that had been incubating for some time. I point to C++ as one of the first instances…
Well, not quite but let's start from the beginning.
WARNING: 2018-04-12 : The code snippets for this post are no longer available. This is just as well anyway, since they all depended on an unstable internal compiler interface, which hasn’t existed for years.