Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 21,837 posts.
A Tour of Go - Real examples of interfaces and concurrency
Last week, I gave a talk about Go at the Boston Google Developers Group meeting. There were some problems with the recording, so I have rerecorded the talk as a screencast and posted it on YouTube.
Street Fighter II, Sound System Internals
This article is part of a series about Street Fighter II and the CPS-1. It is recommended to read the previous entries before reading this one.
Superlogical
I authored 1 the announcement post on the Superlogical homepage , which describes the problem statement and what we're building. 2 Read that to learn more. This post is more of a personal statement about what led to this, how it relates to my recent work, and what comes next.
Stack traces in GHCi, coming in GHC 8.0.1
Bluesky: @simonmar.bsky.social Github: simonmar Email: marlowsd@gmail.com LinkedIn: Simon Marlow
Deconstructing K&R C (2010)
Learn C The Hard Way (LCTHW) is a practical book teaching real world useful C using the same proven Learn The Hard Way method. LCTHW teaches real robust C coding and defensive programming tactics on real hardware rather than abstract machines and pedantic theory. The book emphasizes breaking your code on purpose, and…
Go’ing Insane: Endless Error Handling
I’ve been using Go for a few years now, mostly in my open source project Lazygit. In my day job I use Ruby and Typescript, and I’ve also spent some time with Rust. Each of those languages have design quirks that can grind a developer’s gears, and although my own precious gears have been ground by every language I’ve…
Object Oriented Programming is Inherently Harmful
“ Object-oriented programming is an exceptionally bad idea which could only have originated in California. ” – Edsger Dijkstra
Launching Version 13.1 of Wolfram Language and Mathematica
Substantial set of new and updated functions in Version 13.1 covers generalized listability, language conveniences, emoji computations, default toolbar, large-scale code editing, drawing in notebooks, Tree expansion, video capture, mathematics, customizable documentation, chemical quantities, machine learning…
Vim is touch-typing on steroids
Code level discussion of web scraping, gray hat automation, growth hacking and bounty hunting
Just what does “code as data” mean anyway? (2014)
Recently, I’ve seen popular articles on macros and metaprogramming in Nimrod and Elixir . Both of these are wonderful metaprogramming systems, to be sure, but I couldn’t help but imagine some in the audience smirking inwardly – and occasionally less inwardly. What odd syntax! How out-of-place they are! If only there…
Optimizers need a rethink
Thoughts on how compiler and database optimizers should evolve in the future, focusing on predictability and guarantees instead of smarts and heroics
Tests Are Overhyped
Let me lead off by saying that I don’t think tests are bad. I really don’t. But here’s the thing: I don’t care what your test-code ratios are. You know what the best test-code ratio is? Whatever you need to make sure your crap works while still getting product out the door.
The lat/lon floating point delusion
This morning I had a shower for 6.11686718 minutes. For breakfast I had 189.41576911 ml of fruit juice, followed by 75.24902503 g of muesli topped with 36.55668786 ml of milk and 15.44171338 g of yogurt.
Game Development Post-Unity
What are the options for game developers looking to migrate away from Unity?
C++ says “We have try... finally at home”
The destructor serves as the "finally".
Evaluating new software forges
What options are there other than GitHub?
Programming isn’t coding (2020)
When teaching “programming”, a surprisingly small amount of time is spent actually helping students with logic – and a lot helping them learning & managing programming tools.
UTF-7: a ghost from the time before UTF-8
On Halloween this year I learned two scary things. The first is that a young toddler can go trick-or-treating in your apartment building and acquire a huge amount of candy. When they are this young they have no interest in the candy itself, so you are left having to eat it all yourself.
Rust without the async (hard) part
A comparison between async Rust's and lunatic's approach to massive concurrency.
A response about dep and vgo
Peter Bourgon has a web site, and this is that web site.
JEP 286: Local-Variable Type Inference
Enhance the Java Language to extend type inference to declarations of local variables with initializers.
Making Code Faster
I’ve enjoyed writing software for 40+ years now. Lots of activities fall into that “writing software” basket, and here’s my favorite: When you have a body of code with a decent unit-test suite and you need to make it go faster. This part of the Quamina diary is a case study of making a piece of the library faster.
Why Lisp is now an acceptable scripting language
ASDF , the de facto standard build system for Common Lisp, has been vastly improved between 2009 and 2014. These and other improvements finally bring Common Lisp up to par with "scripting languages" in terms of ease of writing and deploying portable code that can access and "glue" together functionality from the…
.NET Standard 2.1
Since we shipped .NET Standard 2.0 about a year ago, we’ve shipped two updates to .NET Core 2.1 and are about to release .NET Core 2.2. It’s time to update the standard to include some of the new concepts as well as a number of small improvements that make your life easier across the various implementations […]
Long Names are Long
One smart thing Google does is rigorous code reviews. Every change, before you can land it, gets reviewed in at least two ways. First, someone on the team does a normal review to make sure the code does what it’s supposed to.