Grokking Diesel, Rust's ORM
Diesel (http://diesel.rs) is an ORM (Object-relational mapper) and Query Builder written in Rust. It supports Postgresql, Mysql and SQLite…
A reasonably speedy Python ray tracer
Cyrille Rossant's small ray-tracer is an nice self-contained Python program (using NumPy) that renders this 400×300 image in about 15 seconds on a fast PC:
FreeBSD/EC2 on C5 instances
Ever since the first EC2 instances launched — the ones which were retrospectively named "m1.small" — Amazon has relied on the Xen hypervisor. No longer: C5 instances use KVM. This sounds like it would be a problem, but in fact that change didn't bother FreeBSD at all: Now that everything uses hardware-based paging…
Connecting to Google Sheets with Python
I wrote up my experience using Python to process data from a shared Google Sheets spreadsheet
Bruce Lee’s Letters to Himself About Authenticity, Personal Development
“Where some people have a self, most people have a void, because they are too busy in wasting their vital creative energy… actualizing a concept of what they should be like rather than …
Maintainers Don't Scale
This is the write-up of my talk at LCA 2017 inHobart. It’s not exactlythe same, because this is a blog and not a talk, but the same contents. Theslides for t...
Why isn't memset() async-signal-safe?
Really, POSIX? Really? memset() isn't async-signal-safe? How is it not safe? … oh … that's why
Reading Simple Haskell
-> is right associative, The function definitions from the previous slide will be parsed like this:
I'm Joining Report URI
What if I told you... that you can get visitors to your site to automatically check for a bunch of security issues. And then, when any are found, those visitors will let you know about it automatically. And the best bit is that you can set this up in a
The Neural Net Tank Urban Legend
AI folklore tells a story about a neural network trained to detect tanks which instead learned to detect time of day; investigating, this probably never happened.
A Deep Dive into HandBrake and Video Transcoding
An obvious interest area of mine is in ripping (and watching) movies using my Mac. I've talked about everything from installing the tools I use to how I rip to how to make sure I update the ripping tools . And though I've included some comparison pictures in the how-I-rip article, I've never done a deep dive into the…
Debugging macOS Kernel Using VirtualBox
Update: In the HN discussion, awalton mentioned you can set CPUID flags in VMWare. Simply adding cpuid.7.ebx = "-----------0--------------------" to the vmx file will disable SMAP. Late last year, I upgraded my old MBP to the 2016 model with a Skylake processor. As I was debugging a kernel exploit, it turned out that…
Realizing Hackett, a metaprogrammable Haskell
Almost five months ago, I wrote a blog post about my new programming language, Hackett , a fanciful sketch of a programming language from a far-off land with Haskell’s type system and Racket’s macros. At that point in time, I had a little prototype that barely worked, that I barely understood, and was a little bit of…
A ReasonReact Tutorial
An in-depth introduction to Reason/OCaml and the official React.js bindings, aimed at JavaScript developers.
JavaScript is Eating the World
NodeJS is quickly becoming one of the most commonly used language in building web applications and is beginning to find its way into the Enterprise.
Is Semantic Versioning an Anti-Pattern?
The classic X.Y.Z style of software numbering, sometimes known as Semantic Versioning, may be hurting more than it helps. Semver.org has codified how these numbers should be used for some cases, describing what is meant by the major and minor version numbers, when to change them, what
China is catching up to the USA, while Japan is being left behind
I have previously reported that there has been a silent revolution in science where countries like China, India, South Korea... that previously contributed few research articles... have started to catch up and even exceed the productivity of the western world. The National Science Foundation (NSF) in the US has…
Diving into the world of hash tables
Diving into the world of Hash Tables and understanding the underlying mechanics is extremely interesting, and very rewarding. So let's get into it and get started from the beginning. They are used commonly in algorithm design.
Epoll is fundamentally broken
This time we'll focus on Linux's select(2) successor - the epoll(2) I/O multiplexing syscall.
The scourge of web analytics
I’ve been making web apps since 2003, which means that I’ve been doing this for fourteen years now, or it means that I can’t count. So, there are few people more qualified than me to tell you this:
What the heck is a parser-combinator?
Introduction to parser combinators. Understand this functional programming concept for building parsers from smaller components.
Undefined vs. Unsafe in Rust
Recently Julia Evans wrote an excellent post about debugging a segfault in Rust. (Go read it, it’s good) One thing it mentioned was I think “ …
Why TDD isn't crap
After my recent vitriol about unit testing, a couple of people sent me Why TDD is Crap as a thorough debunking of TDD and unit testing. As someone very interested in software correctness, I ended up writing a debunking of his debunking. Transcriptions will be in quotes, my responses below. Some important notes: From…