Topics /

Software Engineering

The most popular blog posts about software engineering on Hacker News. 1,508 posts.

2020
1082

Programming at the REPL (2018)

Clojure REPLs are used for a broad spectrum of purposes, from learning the language to data exploration to live music performance. This chapter will provide some guiding principles for applying Clojure REPLs to the more common use case of pragmatic software development.

1088

Doing a math assignment with the Lean theorem prover

Note: this post was written for Lean 3; the latest version, Lean 4, is a very different language. Turn back the clock to 2009: a confused physics major newly infatuated with math and computer science, I enrolled in MATH 273: Numbers and Proofs at the University of Calgary. This wasn’t my first encounter with…

1101

Taking PHP Seriously (2016)

Slack uses PHP for most of its server-side application logic, which is an unusual choice these days. Why did we choose to build a new project in this language? Should you? Most programmers who have only casually used PHP know two things about it: that it is a bad language, which they would never use if…

1102

Don't trust default timeouts

Modern applications don’t crash; they hang. One of the main reasons for it is the assumption that the network is reliable. It isn’t. When you make a network call without setting a timeout, you are telling your code that you are 100% confident that the call is going to succeed. Would you really take that bet? If you…

1103

A Little Clojure

This expression: (1 2) represents the list containing the integers 1 and 2 in that order. If you want an empty list, that’s just () . And the list of the first five letters of the alphabet is just (\a \b \c \d \e) .

1105

F# Data Type Providers in .Net Core (2018)

As one of F#'s killer features; type providers have the ability to make rooms full of developers gasp when shown for the first time. Support has recently been added to the FSharp.Data library [https://www.nuget.org/packages/FSharp.Data] for .Net Standard 2.0, allowing us to