Open Source .NET three years later
A little over 3 years ago Microsoft announced that they were open sourcing large parts of the .NET framework and as Scott Hanselman said in his Connect 2016 keynote, the community has been contributing in a significant way:
Extracting Chinese Hard Subs from a Video, Part 1
I’ve been watching the Chinese TV show 他来了,请闭眼 (Love Me If You Dare). It’s a good show, kinda reminiscent of the BBC series Sherlock, likewise a crime drama ...
A step-by-step guide to building a simple chess AI
Let’s explore some basic concepts that will help us create a simple chess AI:
How to Write Portable C Without Complicating Your Build
Suppose you’re writing a non-GUI C application intended to run on a number of operating systems: Linux, the various BSDs, macOS, classical unix , and perhaps even something as exotic as Windows. It might sound like a rather complicated problem. These operating systems have slightly different interfaces (or very…
Working on Chrome made me develop a tool for reading source code
Coati is a developer tool for fast and efficient source code navigation and exploration. This is the story of how an internship at Google…
Kalman filters and functional programming
A paper on Kalman filtering and functional folds that I alluded to previously has been split into several papers and posted online.
UIDebuggingInformationOverlay
Update, December 9, 2017: This overlay still exists, but this post’s instructions don’t work on iOS 11 and later. In an update to his excellent book, Advanced Apple Debugging and Reverse Engineering, Derek Selander describes how to get the panel working in iOS 11. He’s generously posted the chapter for free here.While…
Ways to Get Better at C++
Expressive code in C++
PostgreSQL's Hash Indexes Are Now Cool
Since I just committed the last pending patch to improve hash indexes to PostgreSQL 11, and since most of the improvements to hash indexes w...
Rust: A Scala Engineer's Perspective
Looking back at my year of Rust. Part reflection, part waymark.
Why many developers still prefer Objective-C to Swift
Lack of ABI stability, slow compile times, poor Xcode support, and more hold Swift back
Key differences between Python 2.7.x and Python 3.x (2014)
Many beginning Python users are wondering with which version of Python they should start. My answer to this question is usually something along the lines…
Writing a Unix Shell – Part II
Building your own UNIX shell in parts. This post explains how to execute commands.
Game Engine Black Book Postmortem
I am pleased to announce that the Game Engine Black Book about Wolfenstein 3D has shipped. It is 316 pages, full color and made of three parts describing the hardware of 1991, id Software tools, and the game engine internals. You can read a preview on Google Books and buy it here:
Curl doesn’t spew binary anymore
One of the least favorite habits of curl during all these years, I've been told, is when users forget to instruct the command line tool where to store the downloaded file and as a direct consequence, curl instead sends a lot of binary "gunk" to the terminal. The end result of that is at best … Continue reading curl…
Building a QNX 7 Desktop
Describes the process of building a QNX 7 x86_64 machine from (almost) scratch.
Windows 3.1 All Over Again
Reactive programming and thread sharing. Javascript, Node.js, Go, Rails, Elixir and Erlang. Rewind the clocks to Windows 3.1 In 1992 with Windows 3.1 we had this thing non-preemptive multitasking, i.e. “Cooperative Multitasking”. Cooperation is a funny term, it should actually be “Programmer Controlled Multitasking”…
How Many X86-64 Instructions Are There Anyway?
Personal website of Stefan Heule
Type-safe GraphQL with OCaml
In July 2016, I spent some time writing a GraphQL endpoint for an existing application in Go. I chose to implement the endpoint in Go based on prior experience, good concurrency support and the desire to have static type system. The GraphQL library for Go, graphql-go , worked pretty well, and I was able to build the…
Announcing Remacs: Porting Emacs to Rust
programming, language design, and human factors
Clojure Linear Algebra Refresher: Eigenvalues and Eigenvectors
I stumble upon eigenvectors and eigenvalues regularly when reading about machine learning topics. They seem to be important. They are not introduced in those...