New
The latest blog posts to take off on Hacker News. 1,420 posts.
How Unreal Renders a Frame
This is part 1 of the “How Unreal Renders a Frame” series, you can access part 2 and part 3 as well. I was looking around the Unreal source the other day and inspired by some excellent …
Node v8.8.0
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
Build your own Terminal using Qt
I'm a huge fan of Unix as an IDE and so the terminal is the core of my computational environment: I run everything from my development tools and text editor to my chat apps and email. There are a variety of terminals out there with their own set of pros and cons, but here we'll find out how to build our own terminal…
Dynamic Progamming: First Principles
Many problems of todays world require multiple decisions made throughout the lifetime of the problem. Choices are made based upon information, including previous decisions made in the problem. This article looks at how Dynamic Programming can be applied to help solve these problems in an efficient manner.
Faktory, a new background job system
Yesterday I explained how a good background job framework is critical to scaling business applications. Today, meet Faktory. I’ve spent the last six months building Faktory, a new background job system which aims to bring the best practices developed over the last five years in Sidekiq to every programming language…
Why does one Nginx worker take all the load?
Scaling up TCP servers is usually straightforward. Most deployments start by using a single process setup. When the need arises more worker processes are added.
Filesystem error handling
We’re going to reproduce some results from papers on filesystem robustness that were written up roughly a decade ago : Prabhakaran et al. SOSP 05 paper , which injected errors below the filesystem and Gunawi et al. FAST 08 , which looked at how often filesystems failed to check return codes of functions that can…
Welp, there go my Git signatures
Hello! If you already know about the RoCA vulnerability, and you know what I did about it (or you don’t care), then feel free to skip down to the good stuff! Signs of Trouble Monday morning,…
Swagger is now the OpenAPI Specification
A while back I wrote an OSS Spotlight post about the Swagger project. In short, Swagger is “the world’s most popular API tooling”. It’s a powerful open source framework back…
Seven habits of effective text editing (2000)
If you spend a lot of time typing plain text, writing programs or HTML, you can save much of that time by using a good editor and using it effectively. This paper will present guidelines and hints for doing your work more quickly and with fewer mistakes.
An ode to pack: gzip’s forgotten decompressor
The latest 4.13.9 source release of the Linux kernel is 780MiB, but thanks to xz compression, the download is a much more managable 96 MiB (an 88% reduction)
The Xerox Alto, Smalltalk, and Rewriting a Running GUI
Be sure to read the comment from Alan Kay at the bottom of the article! We succeeded in running the Smalltalk-76 language on our vintag...
Getting the Most Out of Sqlite3 with Python
Simplex Sigillum Veri
Why I'm Productive in Clojure (2013)
Dmitri's blog about programming, Clojure, and software development
UEFI Programming – First Steps (2009)
In this article, I will describe steps needed to start on with development of real UEFI applications on x86 PC, and share some practical experiences with problems doing so. I will focus on 64-bit version of UEFI, because the 32-bit version isn't much used in this area (most likely due to Microsoft decision not to…
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:
DotNetAnywhere: An Alternative .NET Runtime
Recently I was listening to the excellent DotNetRocks podcast and they had Steven Sanderson (of Knockout.js fame) talking about ‘WebAssembly and Blazor’.
Writing a Bootloader
This post describes how to write a simple Hello world bootloader
Pointer Free Programming and the Future of Nim
What do ParaSail, "modern" C++ and Rust have in common? They focus on "pointer free programming" (ok, maybe Rust doesn't, but it uses similar mechanisms). In this blog post I am exploring how we can move Nim into this direction. My goals are:
URG
If you asked software engineers some of their “least hated” things, you’ll likely hear both UTF-8 and TCP. TCP, despite being 35 years old, is rock-solid, stable infrastructure that we take for granted today; it’s hard to sometimes realize that TCP was man-made, given how well it’s served us. But within every single…
Hey Siri: An On-Device DNN-Powered Voice Trigger for Apple’s Personal Assistant
The “Hey Siri” feature allows users to invoke Siri hands-free. A very small speech recognizer runs all the time and listens for just those…
CKEditor 5: New approach to rich text editing on the web
The heart of the new CKEditor Ecosystem is undoubtedly our brand new editor, CKEditor 5.
Why we switched from Python to Go
Deciding on a programming language is always a difficult choice, learn why Stream switched from Python to Go as our language of choice.
Choosing between names and identifiers in URLs
The best APIs implement both permalink URLs based on identifiers for stable identification and search URLs based on names (and perhaps other values) for ease-of-use. Here's why.