Topics /

Software Engineering

The most popular blog posts about software engineering on Hacker News. 14,541 posts.

Any year
9873

Introduction to P vs. NP

Series Introduction In this series of articles I would like to share with you a set of ideas that are meant to help non-technical people build a better intuition as to what the current software and…

9874

On the Beauty of Python's ExitStack (2015)

I believe Python's ExitStack feature does not get the recognition it deserves. I think part of the reason for this is that its documentation is somewhere deep down in the (already obscure) contextlib module because formally ExitStack is just one of many available context managers for Python's with statement . But…

9877

Text layout is a loose hierarchy of segmentation

I love text layout, and have been working with it in one form or other for over 35 years. Yet, knowledge about it is quite arcane. I don’t believe there is a single place where it’s all properly written down. I have some explanation for that: while basic text layout is very important for UI, games, and other contexts…

9887

Formatting Is Unreasonably Expensive for Embedded Rust

As a (late) part of the #rust2020 request, I wanted to talk about one of the paper-cuts that has become decently problematic for new and experienced users of Embedded Rust: The size costs of formatting in Rust today are unreasonably expensive for users of Rust on bare metal embedded systems. In particular there are…

9894

Retrofitting JIT Compilers into C Interpreters

C interpreters are a common language implementation technique and the basis for the reference implementations of languages such as Lua, Ruby, and Python. Unfortunately, C interpreters are slow, especially compared to language implementations powered by JIT compilers. In this post I’m going to show that it is possible…

9895

Protocol Buffers, Avro, Thrift & MessagePack

Perhaps one of the first inescapable observations that a new Google developer ( Noogler ) makes once they dive into the code is that Protocol Buffers (PB) is the "language of data" at Google. Put simply, Protocol Buffers are used for serialization, RPC, and about everything in between .

9896

How to Write a Computer Emulator

I wrote this document after receiving large amounts of email from people who would like to write an emulator of one or another computer but do not know where to start. Any opinions and advices contained in the following text are mine alone and should not be taken for an absolute truth. The document mainly covers…

9897

Per Brinch Hansen's books on compilers

Brinch Hansen was one of the pioneers of concurrent programming and operating systems (kernels). In the 1960s, Brinch Hansen worked at the Danish computer company Regnecentralen, first in the compiler group headed by Peter Naur and Jørn Jensen, and, later, as the chief architect of the RC 4000 minicomputer and its…

9898

Donut.c Without a Math Library

My little donut.c has been making the rounds again, after being featured in a couple YouTube videos (e.g., Lex Fridman and Joma Tech ). If I had known how much attention this code would get over the years, I would have spent more time on it.