Wizards and warriors, part one
A common problem I see in object-oriented design is: A wizard is a kind of player. A warrior is a kind of player. A staff is a kind of weapon. A sword is a kind of weapon. A player has a weapon. Bu…
Topics /
The most popular blog posts about software engineering on Hacker News. 21,845 posts.
A common problem I see in object-oriented design is: A wizard is a kind of player. A warrior is a kind of player. A staff is a kind of weapon. A sword is a kind of weapon. A player has a weapon. Bu…
A tale of two PHP remote vulnerabilities
This PEP specifies how Python software packages should specify what build dependencies they have in order to execute their chosen build system. As part of this specification, a new configuration file is introduced for software packages to use to specify...
I've written previously about the problem recursive descent parsers have with expressions, especially when the language has multiple levels of operator precedence.
This is an essential truth of async in its purest form: There is no thread.
It's everywhere . Sometimes they tell you to ignore certificates as well (looking at you, Salt). That's dumb.
I couldn't remember every UUID so I wrote them all down
The Modus themes for Emacs meet the highest accessibility standard for colour contrast. This is their official manual.
Find and mark the next part of the buffer matching the currently active region, while also keeping the current region. Get it here .
Long time Pythoneer Tim Peters succinctly channels the BDFL’s guiding principles for Python’s design into 20 aphorisms, only 19 of which have been written down.
On 14 May 2018, Sebastiano Vigna added a page to his website (archived here) entitled “The wrap-up on PCG generators” that attempts to persuade readers to avoid various PCG generators. That day, he al
Learn how code execution with the Model Context Protocol enables agents to handle more tools while using fewer tokens, reducing context overhead by up to 98.7%.
This post is a more carefully thought out and peer reviewed version of a floating-point comparison article I wrote many years ago. This one gives solid advice and some surprising observations about…
An introduction to the Go's defer, panic, and recover control flow mechanisms.
"If it hurts - do it more often". Good advice if the amount of pain raises exponentially with the time between actions, such as for integrating software.
Take control of your web by running your own personal cloud server with Sandstorm.
A frequently emphasized advantage of XML is the availability of plenty tools to analyse, transform and selectively extract data out of XML documents. XPath is one of these powerful tools.
I love regular expressions. No, I’m not sure you understand: I really love regular expressions. You may find it a little odd that a hack who grew up using a language with the ain’t keyword would fall so head over heels in love with something as obtuse and
How to use Go's built-in profiler to understand and optimize your programs.
CPython has supported multiple interpreters in the same process (AKA “subinterpreters”) since version 1.5 (1997). The feature has been available via the C-API. [c-api] Multiple interpreters operate in relative isolation from one another, which facilit...
Craft is a demo running on its own minimalistic demo platform. The demo platform is based on an ATmega88 microcontroller.
Flipboard launched during the dawn of the smartphone and tablet as a mobile-first experience, allowing us to rethink content layout principles from the web for a more elegant user experience on a variety of touchscreen form factors.
What goes on behind the magical macros in the C protothreads library? Why are they macros? How do the macros work? Read on for the explanation.
Have you heard of the Bitcoin Lightning Network? It is a proposal that claims that:
Numerous claims about Judy's performance are made in the Judy whitepaper . I don't think any of those claims are wrong. However, it does not appear that sufficient effort was put in benchmarking Judy against other data structures. Now, it is unlikely there is another data structure that is both as fast and as small as…
As we’ve discussed, in Batman Begins 1960s-style full employment and antipoverty programs lead to skyrocketing crime while in The Dark Knight Rises 1980s-style tough-on-crime policies and neoliberal economics lead to a revolt of the economic underclass. The films are mirror images, one about the failure of liberal…
This post evaluates the programming languages ATS, C#, Go, Haskell, OCaml, Python and Rust to try to decide which would be the best language in which …
This page collects resources about implementing regular expression search efficiently.
“The Implementation of Functional Languages” is a book about implementing functional programming languages using lazy graph reduction, and it divides into three parts. The first part describes how to translate a high-level functional language into an intermediate language, called the lambda calculus, incuding detailed…