Topics /

Software Engineering

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

Any year
9632

Solving Probabilistic Tic-Tac-Toe

This morning, I came accross Cameron Sun’s Probabilistic Tic-Tac-Toe on HN . However, the comments were disappointing, with people proposing probabilistic models, linear programming, minimax algorithms, and heuristic evaluations to develop AI approaches for the game, none of which quite correct. In this post, I’ll…

9633

Ray Tracing Denoising

An overview of ray tracing denoising, reviewing filtering, spatiotemporal, sampling and AI techniques to improve convergence and temporal coherency in real time ray traced applications.

9638

Fast Perfect Hashing

A perfect hash function is one that is collision-free. By implication, the hash must be at least as many bytes as the key and the function is theoretically reversible, though not always tractably so. In other words, perfect hashing is a special case of encryption. Because the hash is no smaller than the key, the…

9639

Good Practices for Writing Rust Libraries

For a bit more than a year now, I've been inter­ested in Rust , a pro­gram­ming lan­guage by Mozilla research that “runs blaz­ingly fast, pre­vents nearly all seg­faults, and guar­an­tees thread safety.” It is as low-level as C or C++, has a nice type sys­tem (with gener­ics and traits), a help­ful com­piler, and a…

9643

Tree-Structured Concurrency

For a while now I've been trying to find a good way to explain what structured concurrency is, and how it applies to Rust. I've come up with zingers such as: "Structured concurrency is structured programming as applied to concurrent control-flow primitives" . But that requires me to start explaining what structured…

9645

Playing Fasttracker2 .XM files in JavaScript

Hit the play button above and it will play music; specifically, music composed with (or at least, compatible with) a program released in 1994 called FastTracker 2; this is a Javascript homage I wrote in a fit of nostalgia. The source code is on GitHub if you'd like to check it out.

9647

Shenanigans With Hash Tables

One reason to know how your data structures work is so that when your problem has unusual constraints you can tweak how they work to fit the problem better or work faster. In this article I’ll talk about four different fun tweaks to the concept of a hash table that I made in the process of using hash tables to…

9649

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.

9650

Clojure and Deps.edn: A basic guide

After a rather long break from programming and Clojure I decided give them another go. When it comes to managing Clojure projects, Leiningen is de-facto standard tool. Recently, Clojure CLI tools are becoming more and more popular, though. Switching to yet-another-build-tool doesn't have any pragmatic value, but it's…

9653

Efficient simulation through linear algebra

I spent a lot of time working on a project in which physically plausible simulation of soft materials with pressure chambers was a key part, and in doing so, we managed to improve a part of our simulation by a significant amount. I was very happy with how this small part of the whole system turned out, and I've been…

9656

I like Odin

As someone who is interested in systems programming, and has experience working with Go, but not with C or C++1, The Odin language is a great fit. Proper systems language Odin is a systems langauge…

9658

The Evolution of a Haskell Programmer (2001)

Some time later, I came across Iavor’s "jokes" page, including a funny bit called “ The Evolution of a Programmer ” in which the traditional imperative "Hello, world" program is developed through several variations, from simple beginnings to a ridiculously complex extreme. A moment’s thought turned up the factorial…