How Python asyncio works: recreating it from scratch
Learn how asyncio works by recreating it from scratch with Python generators and using the __await__ dunder method for the async/await keywords.
Topics /
The most popular blog posts about software engineering on Hacker News. 14,534 posts.
Learn how asyncio works by recreating it from scratch with Python generators and using the __await__ dunder method for the async/await keywords.
This article is part of a study about the ports of Another World. It is highly recommended to read Another World 101 before reading this.
On your Python learning journey, you may have heard that a great way to get better is to read code written by other people. That's true, but finding good code to study is not easy, mostly because the design philosophy and the reasoning behind the code are rarely documented. The Python standard library is special in…
If you prefer video over blog posts, here is my talk on this at GopherCon 2016: https://www.youtube.com/watch?v=KyuFeiG3Y60
Jack Schultz's blog.
Anubis could not load its JavaScript. The server may be overloaded. Please reload the page to try again.
The story of a bug, and how I addressed it.
Kubernetes is the 800-pound gorilla of container orchestration. It powers some of the biggest deployments worldwide, but it comes with a price tag...
If you need an unguessable random string (for a session cookie or access token, for example), it can be tempting to reach for a random UUID, which looks like this: 88cf3e49-e28e-4c0e-b95f-6a68a785a…
It’s been about 6 weeks since I joined Tano, and this is what my commit history looks like:
Learn to write and modify Zero Knowledge Proofs from scratch. You'll build a digital signature scheme using hash-based commitments, gaining practical ZKP programming skills and intuition along the way. By the end, you'll have all the tools you need to implement things like group signatures.
Rules of optimization: 1) Design for performance from day 1 2) Profile often 3) Be vigilant on performance regressions 4) Understand the data 5) Understand the HW 6) Help the compiler 7) Verify your assumptions Performance is everyone's responsibility https://t.co/CwwJffnHGz
I have spent a large portion of my career working in Java. In that time, you get used to huge classes. New functionality? Just add a new method and field to the class. The cost of each new field is rarely considered. Performance is often considered from a classic computer science perspective by considering asymptotic…
Many seasoned engineers working in JVM based languages have seen errors like this: [error] (run-main-0) java.lang.OutOfMemoryError: unable to create native thread: [error] java.lang.OutOfMemoryError: unable to create native thread: [error] at java.base/java.lang.Thread.start0(Native Method) [error] at…
PostgreSQL isn’t just a simple relational database; it’s a data management framework with the potential to engulf the entire database…
I’ve been hearing about io_uring on and off for the last couple of years. Its a relatively new technology in Linux to allow high-performance IO with very few overheads. Whenever its been mentioned, its usually been presented as a new alternative to select, poll and epoll. This led me to believe that it was just the…
On the 31st August I got an email from a customer, telling me that they had found an imitation of my data wrangling software on Github. I’m not linking to it, but here is a screenshot: It is …
Not the entire thing, just "a subset". It's not stated very clearly exactly what that subset is but the easy interface is mentioned in the Chrome bug about this project. What? The Chromium bug states that they will create a library of their own (named libcrurl) that will offer (parts of) the libcurl API and … Continue…
How Mac applications evolved from a multitude of resources to a bundle formed from a standard layout of directories, and how they have come to be largely self-contained in macOS 26.
If you wanted to identify an inflection point in the recent development of CSS thinking, you’d probably pick Christopher Chedeau’s “CSS in JS” talk from NationJS in November, 2014. It was a watershed moment that set a bunch of different minds spiralling off in their own directions like particles after a high-energy…
This post is about minimizing amount of disk IO and CPU overhead when reading Zip files. I recently saw an article about a new format that was faster than zip. This is quite surprising as to my mind, zip is one of the most flexible and low-overhead formats I’ve encountered. Some googling showed me that over past 11…
This article is part of a study about the ports of Another World. It is highly recommended to read Another World 101 before reading this.
The Grymoire - Tutorial on the SED stream editor.
Flash cartridges (= "carts") are commonly used to run Game Boy ROMs, such as homebrew games or dumped officially released games, on real hardware. Different kinds of flash carts with various features and performance characteristics have been available for a long time, but flash carts have in general the reputation of…