Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 808 posts.
Sum Types Are Coming (2015)
Just as all mainstream languages now have lambda functions, I predict sum types are the next construct to spread outward from the typed functional programming community to the mainstream. Sum types are very useful, and after living with them in Haskell for a while, I miss them deeply when using languages without them…
The Value of Undefined Behavior
In several places, the C and C++ language specifications use a curious, and fairly controversial, phrase: undefined behavior . For certain program constructs, the specification prescribes no specific behavior, instead allowing anything to happen . Such constructs are considered erroneous, and so the result depends on…
Incrementally improving the performance of a Python script
I have been doing a lot of competitive programming problems on Kattis lately. It is my favourite online judge, and I have been enjoying my climb up the Irish scoreboard in an attempt to regain my former glory of first place. In particular, today I was tackling the problem Pivot.
Connected Components – The one Graph Algorithm you need to know
Graphs provide us with a very useful data structure.
Making art with SSH key randomart
SSH is everywhere in the development or operations world now. For development it’s what allows you to push to GitHub. For operations it’s what allows you to reasonably securely log into Linux servers.
Unsafe Zig Is Safer Than Unsafe Rust
This pattern is pretty common if you are interacting with Operating System APIs . Another example .
How Numba and Cython speed up Python code
A high-level overview of Numba and Cython architectures
Introduction and Quick Guide to GraphQL for BackEnd and FrontEnd
GraphQL is an API query language. It provides a runtime to describe & query the data for any storage. Here is an Introduction & Quick guide on GraphQL
Path Tracing vs. Ray Tracing (2016)
Path tracing is all the rage in the offline rendering space these days. From Cycles to SuperFly (based on the open source Cycles) to Octane, most new rendering engines seem to be using this technology. Sometimes referred to as “unbiased, physically correct rendering” what is path tracing, how is it different to ray…
Augmenting Agile with Formal Methods
I really like the c2 wiki as a historical artifact: a lot of big names in Agile and Extreme Programming argued with each other there.1 One thing they did was the Extreme Programming Challenge, where people tried to test the limits of these approaches. They’d find edge problems (designing databases, remote teams, etc)…
Create QR codes in Excel
Great to create and know the algorithm of QR code... very information! Thanx Bala
Instruction explosion in Guile
wingolog: article: instruction explosion in guile
Anatomy of a Program in Memory (2009)
Memory management is the heart of operating systems; it is crucial for both programming and system administration. In the next few posts I'll cover memory with an eye towards practical aspects, but wi
An EPYC NixOS Build Farm
Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. It provides atomic upgrades and rollbacks, side-by-side installation of multiple versions of a package, multi-user package management and easy setup of build environments.
Beware of strncpy and strncat
Most C programmers also know to avoid the legacy strcpy() and strcat() functions, as these commonly introduce buffer-overflow problems. Instead, C programmers should use the newer strncpy() and strncat() functions, which check the size of the buffer they're copying data into.
Doubling Mono’s Float Speed
Miguel de Icaza's Blog
Clojure Don’ts: Lazy Effects (2015)
Laziness is often useful. It allows you to express “infinite” computations, and only pay for as much of the computation as you need.
Pythran as a bridge between fast prototyping and code deployment
As a researcher/engineer (really, an algorithm developer) in the general area of audio and speech processing, I've always run into the same difficulty at all the companies I've worked at: How to quickly prototype and develop algorithms, and subsequently turn them into efficient code that can be deployed to customers.
History of Symbolics Lisp Machines (2007)
Richard Stallman has been telling a story about the origins of the Lisp machine companies, and the effects on the M.I.T. Artificial Intelligence Lab, for many years. He has published it in a book, and in a widely-referenced paper, which you can find at http://www.gnu.org/gnu/rms-lisp.html .
Make your own build system
On this page I present a robust, custom build system for a software project written in C, in less than 500 lines of Python code. I think it is about as minimal as a practical dependency-tracking build system can get. Although it adds to the code that must be maintained as part of the project, I think that having a…