Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 808 posts.
Writing a recursive ascent parser by hand
I’ve been exploring various ways to write parsers. For a long time, I’ve used hand-written recursive descent for its straightforwardness, flexibility, and performance. There is another way—parser generators like Menhir , LALRPOP , or the venerable Bison use the bottom-up LR algorithm .
Ruby’s Rack Push: Decoupling the real-time web application from the web
(UPDATED: updated to the PR are now reflected in the post) Something exciting is coming. Everyone is talking about WebSockets and their older cousin EventSource / Server Sent Events (SSE). Faye and…
Typesafe Neural Networks in Haskell with Dependent Types
It seems these days like programming with dependent types in Haskell (and its advantages) is moving slowly but steadily to the mainstream of Haskell programming. In the current state of Haskell education, dependent types are often considered topics for “advanced” Haskell users. However, I can foresee a day where the…
Building a Distributed Log from Scratch: Sketching a New System
In part four of this series we looked at some key trade-offs involved with a distributed log implementation and discussed a few lessons learned while building NATS Streaming. In this fifth and final installment, we’ll conclude by outlining the design for a new log-based system that draws from the previous entries in…
Why Rust closures are somewhat hard
My Rustic Ramblings
Validating UTF-8 strings using as little as 0.7 cycles per byte
Most strings found on the Internet are encoded using a particular unicode format called UTF-8. However, not all strings of bytes are valid UTF-8. The rules as to what constitute a valid UTF-8 string are somewhat arcane. Yet it seems important to quickly validate these strings before you consume them. In a previous…
Game Programming Patterns: Double Buffer (2014)
Cause a series of sequential operations to appear instantaneous or simultaneous.
Python as a declarative programming language (2017)
If you look at the programming languages benchmarks game, Python is one of the slowest commonly used programming languages out there . Typical programs written in pure Python average around 40 times slower than the equivalent program written in C or C++.
De-anonymizing programmers from executable binaries
When coding style survives compilation: de-anonymizing programmers from executable binaries Caliskan et al., NDSS’18 As a programmer you have a unique style, and stylometry techniques can be used t…
Do or undo – there is no VACUUM
What if PostgreSQL didn’t need VACUUM at all? This seems hard to imagine. After all, PostgreSQL uses multi-version concurrency control (MVC...
How to implement strings
There are many alternatives to C strings. Here we explore the design space.
Datomic: Look at all the things I'm not doing
A post by August Lilleaas, published April 20, 2018.
More fun with reactive-banana-automation
My house knows when people are using the wifi, and keeps the inverter on so that the satellite internet is powered up, unless the battery is too low. When nobody is using the wifi, the inverter turns off, except when it's needed to power the fridge.
The Costs of Programming Language Fragmentation
Robert O'Callahan. Christian. Kiwi. Software guy. All content human-authored unless otherwise noted.
Optimising Docker Layers for Better Caching with Nix
Nix users value its isolated, repeatable builds and simple sharing of development environments. Nix makes it easy to go back in time and rebuild software from years ago without issue.
Compiling Lisp to JavaScript in 350 Lines of Haskell
λm.me - Compiling Lisp to JavaScript from scratch in 350 LOC
Introduction to compute shaders
Anteru's blog is a blog about development, software architecture and 3D graphics.
One Giant Leap for SQL: MySQL 8.0 Released
MySQL is the last major SQL database that has evolved beyond SQL-92 by introducing window functions (OVER) and common table expressions (WITH [RECURSIVE])
Model View Controller isn't
Maybe the most misunderstood design pattern.
Teaching Programming Languages by Experimental and Adversarial Thinking
After we published this paper, Matthias Hauswirth kindly pointed out similarities between this work and the PL-detective , a body of work that is very closely related that we did not previously know. Less similar but also related---and entertainingly written up---is smeagol . Since we published the paper, we have…
Twenty years, 1998 – 2018
Do you remember this exact day, twenty years ago? March 20, 1998. What exactly happened that day? I'll tell you what I did then. First a quick reminder of the state of popular culture at the time: three days later, on the 23rd, the movie Titanic would tangent the record and win eleven academy awards. … Continue…
Comparing Pythagorean triples in C++, D, and Rust
EDIT: As pointed out in the Rust reddit thread, the Rust version can be modified to run faster due to a suble difference between ..=z and ..(z+1). I’ve updated the measurements with rustc0 be…
Why Do React Hooks Rely on Call Order?
Lessons learned from mixins, render props, HOCs, and classes.
Guidelines for writing readable code
Reading someone else's code can be quite confusing. Hours can go on issues that should have been fixed in minutes. In this article, I would like to share some advice on how to write code that will be easier to understand and maintain.