Essential JavaScript design patterns
Learning JavaScript Design Patterns is a book with examples of JavaScript design patterns and how to apply them to your code.
Topics /
The most popular blog posts about software engineering on Hacker News. 14,544 posts.
Learning JavaScript Design Patterns is a book with examples of JavaScript design patterns and how to apply them to your code.
Metaprogramming is the writing of computer programs with the ability to treat programs as their data. It means that a program could be designed to read, generate, analyse and/or transform other programs, and even modify itself while running.
Algorithms, circle mazes, hex grids, masking, weaving, braiding, 3D and 4D grids, spheres, and more!
For a week or so now, I've been writing niënor , a "lispy environment for uxn" . I did not want it to become a full-blown lisp but just another way of writing uxntal . Uxntal is a bit too dense for my liking, and I prefer lisp/scheme s-expression syntax. Niënor is just a compiler and a macroexpander that takes in…
Today’s A To Z term is another proposed by @aajohannas. I couldn’t find a place to fit this in the essay proper. But it’s too good to leave out. The simplex method, discussed with…
Platform Specific Series - Lets learn how the hardware of the systems work, so we can get it to do what we want... Covers Amsrad CPC,MSX,ZX Spectrum, TI-83,Enterprise 128/64 and Sam Coupe! Lesson P1 - Basic Firmware Text functions Lesson P2 - More Text Functions, Improvements... and the Sam Coupe! Lesson P3 - Bitmap…
By the end of this blog post, we aim to improve the results of my previous blog post of approximating circular bokeh with a sum of 4 separable filters and reducing its artifacts (left) through an o…
The conflict between subclassing and composition is as old as object-oriented programming. The latest crop of languages like Go or Rust prove that you don’t need subclassing to successfully write code. But what’s a pragmatic approach to subclassing in Python, specifically?
This post is the last in a three-part series about Cranelift . In the first post , I covered overall context and the instruction-selection problem; in the second post , I took a deep dive into compiler performance via careful algorithmic design.
Rust currently has very strong support for concurrency in the form of actors which exchange messages and do not share memory. However, there are many tasks for which actors are not a good fit. The unbounded lifetime of actors means that they cannot safely access stack-allocated memory from another task, even if it is…
They say “performance is king’… It was true a decade ago and it certainly is now. With more and more data the world generates each day, we need more and more computing power to process it. It used to be the case that some SW vendors preferred to wait for a new generation of HW to speed up their application and did not…
Source code can be found at: https://github.com/dyoo/brainfudge . The latest version of this document lives in http://hashcollision.org/brainfudge .
The tar format is one of the oldest archive formats in use. It comes as no surprise that it is ugly — built as layers of hacks on the older format versions to overcome their limitations. However, given the POSIX standarization in late 80s and the popularity of GNU tar, you would expect the interoperability problems to…
It's no surprise that modern deep-learning libraries have production-level, highly-optimized implementations of most operations. But just what is the black magic that these libraries use that we mere mortals don't? What exactly does one do to "optimize" or accelerate neural networks operations?
I maintain two builds of the Linux kernel, a linux/arm64 build for gokrazy, my Go appliance platform, which started out on the Raspberry Pi, and then a linux/amd64 one for router7, which runs on PCs. The update process for both of these builds is entirely automated, meaning new Linux kernel releases are automatically…
It has been 2 years since I published “CamelCase vs underscores: Scientific showdown”, and it still is easily the most visited article on this blog. Yesterday alone it got 2,614 views t…
What the **** does that mean?
Object-Relational Mappers get a lot of hate from people who misjudge the complexities of the task.
Pair programming is where two programmers work together on a single computer. One writes the code, while the other observes and offers suggestions. I'm not talking about debugging or brainstorming together, but this p...
Over the course of working on PSRayTracing (PSRT), I've been trying to find all sorts of tricks and techniques to squeeze out more performance from this C++ project. Most of it tends to be alternative algorithms, code rewriting, and adjusting data structures. I thought sprinkling the final keyword like an all purpose…
Linux doesn’t have Photoshop. One common rant I get to hear when I try to help someone to switch to Linux. It is almost 2020 and say what? people still agree with this statement.
The other day at work a colleague posed the seemingly innocent question "Can I find out the value of the GNU make -j parameter inside a Ma...
Some may think Fortran is an archaic language, and certainly not one that should be taught, but in any respects modern Fortran is an exceptionally good language to teach programming in. Certainly b…
If you've used CSS, you know what a class name is. They're a very poor proxy for the web today. Let's stop using them.