Is your JavaScript function actually pure?
Open Source Freelancer
From first principles: Why I bet on Scala.js
Three years ago, I downloaded the nascent Scala.js compiler and tried to use it on a toy project.
The sad graph of software death
Create beautiful emails, automate campaigns, and track performance. Try it now and see how our tools can drive your business.
Building an IBM Watson-powered AI Chatbot in 50 lines of code
Developing a speech-to-text bot using IBM’s Supercomputer.
Interview with Matt Might
Interview with Matt Might, a professor, programming languages researcher, investigator of rare disease, and popular blogger.
Why I switched from Vim to Emacs
EDIT: As pointed out on reddit (both in r/emacs and r/vim), many of my criticisms of Vim are unfair. Everything I posted about was based purely on my personal experience with the two, but much of m…
Zero size arrays in C
The current structure definition of the ion system heap involves a zero sized array:
Generalizing JSX: Delivering on the Dream of Curried Named Parameters
We deconstruct JSX to create a new general purpose programming tool.
Ray Tracing in One Weekend
The books are now available in unprotected pdf for PAY WHAT YOU WISH, with 50% going to not for profit programming education organizations. ...
The limitations of sampling profilers
Perf is probably the most widely used general purpose performance debugging tool on Linux. There are multiple contenders for the #2 spot, and, like perf, they're sampling profilers. Sampling profilers are great. They tend to be easy-to-use and low-overhead compared to most alternatives. However, there are large…
Boosting zopfli performance
Introduction Deflate compression has been around for over 20 years. It's the format used inside most ZIP files. It's used by HTTP to redu...
Simple Guide to Finding a JavaScript Memory Leak in Node.js (2015)
Please consider reviewing this guide on Amazon, if you’ll find it helpful. Few months ago, I had to debug a memory leak in Node.js. I found a good number of articles dedicated to the subject…
Why I don’t use CSS preprocessors
I don’t use CSS preprocessors they way many people do. Here’s an attempt to explain why.
What is wrong with “A successful Git branching model”?
Update 2018-07. The branching model described here is called trunk based development. I and other people who I collaborated with did not know about the articles that used this name. Nowadays there are excellent web resources about the subject, like trunkbaseddevelopment.com. They have a lot of...
Tcl/tk vs. the web
I agree with you. How is it that in order to build an application on the web I need to know at least seven technologies? Client side: - Javascrit - Coffescript to make JS seem sane - Angular or Jquery to make JS seem productive - CSS - SASS to make CSS seem sane - HTML5 - localstorage (to save somethnig) Server side …
Notes on concurrency bugs
Do concurrency bugs matter? From the literature, we know that most reported bugs in distributed systems have really simple causes and can be caught by trivial tests, even when we only look at bugs that cause really bad failures, like loss of a cluster or data corruption. The filesystem literature echos this result …
Version SAT
The package version selection problem is to find a set of dependencies that can be used to build a top-level package P that is complete (all dependencies satisfied) and compatible (no two incompatible packages are selected). There may be no such set, because of the diamond dependency problem: perhaps A needs B and C…
How to print things
Purpose Terminology Single-sided Standard double-sided Möbius double-sided Two-way double-sided Purpose The purpose of this page is to collect and summarize concise explanations of the pros and con…
Machine Learning in Rust
This post is aimed at readers who are familiar with Rust and want some insight into why it is great for machine learning.
Fast Fibonacci Algorithms (2015)
Definition: The Fibonacci sequence is defined as \(F(0) = 0\), \(F(1) = 1\), and \(F(n) = F(n-1) + F(n-2)\) for \(n ≥ 2\). So the sequence (starting with \(F(0)\)) is 0, 1, 1, 2, 3, 5, 8, 13, 21, ….