Gaming CS Interviews
Dream of developing software at a prestigious tech company like Google or Facebook, but don't have a CS background? We got your back!
Leetcode Considered Harmful
Using an industry wide perspective I will show you the unseen downsides of using leetcode for interviewing software engineers
A Rust match made in hell
I often write pieces that showcase how well Rust can work for you, and how it can let you build powerful abstractions, and prevents you from making a bunch of mistakes. If you read something like S...
Wordle in Python using literate programming
Rendering the wordle.org file as webpage and including in the docs as-is, because the Sphinx documentation generator doesn’t understand org-mode files, so we couldn’t render this page directly from Sphinx the usual way.
Adding code to an existing ELF file
Recently I was reverse-engineering an Android app [ a ] . The relevant details are as follows:
Rust 2024 the Year of Everywhere?
I’ve been thinking about what “Rust 2024” will look like lately. I don’t really mean the edition itself — but more like, what will Rust feel like after we’ve finished up the next few years of work? I think the answer is that Rust 2024 is going to be the year of “everywhere”. Let me explain what I mean. Up until now…
Why, oh why was this added?
In this post, I take you on a debugging journey and show you why it might be a good idea to add a comment next to a certain method.
CR+LF Has a Long History
The ASR33, like most teletypes of the era, works at a fixed rate. It does 10 characters per second. It is 110 Baud, using 1 start, 8 data (i...
Building a web application with Rust and WebAssembly
Whether it be with React, VueJS, Angular, or in Rust, modern web applications are composed of 3 kinds of pieces: Components Pages Service Components are reusable pieces and UI elements. An input field, or a button, for example. Pages are assemblies of components. They match routes (URLs). For example, the
The Timeless Way of Programming
What can software learn from Christopher Alexander? Many programmers know that the idea of design patterns comes from architecture, but Christopher Alexander's writing has much more for us than just the Gang of Four design patterns. This post is a somewhat assorted collection of ideas for better software and…
Multi-Kernel Drifting
Using truss, dtrace & ctfconvert to figure out a faulty illumos kernel module.
Get Paid to Contribute to Urllib3
Announcing urllib3's bounty program The urllib3 team is excited to announce the start of our bounty program! We’ve recognized that one of the biggest challenges to shipping v2.0 is not having e...
Building Basilisk II for iOS (2021)
I’ve had numerous requests for a guide to building BasiliskII on iOS. Let me know of anything is unclear or would benefit from more details!
Optimizing GoAWK with a bytecode compiler and virtual machine
How I sped up GoAWK by switching from a tree-walking interpreter to a bytecode compiler and virtual machine interpreter.
Emacs Lisp shorthands as namespacing system
In Emacs version 28 Emacs developers introduced so-called read symbol shorthands. If you’re interested in the rationale, feel free to search the Emacs developer mailing list for the discussion. However, it does seem that not everyone likes the idea of shorthands as a substitution for namespaces (or packages, if you’re…
This year in LLVM
Towards the end of last year, I switched from working on PHP at JetBrains, to working on LLVM at Red Hat. While it was already under discussion beforehand, this catalyzed the creation of the PHP foundation , which now pays multiple people to work on PHP. Special thanks for this go to Roman Pronskiy, who did most of…
Qt signal is ten times slower than a virtual function
I defined a QT Object that contains an integer value and uses QT signal along with awl::Observable based on virtual functions to notify the subscribers when the value changes:
Is XMPP any good? Also, let's write a client in Tcl, maybe
I still have my Nokia 5800 lying around. It runs Symbian. That platform is quite different from Android. For one thing the internal storage size is 81 MB - less than what your single android app takes up, even in RAM, and it works faster than modern smartphones - e.g. the SMS app opens instantaneously. Another…
New integer types I’d like to see
(Most) C++ implementations provide at least 8, 16, 32, and 64-bit signed and unsigned integer types. There are annoying implicit conversions, discussions about undefined behavior on overflow (some think it’s too much UB, others think it’s not enough), but for the most part they do the job well. Newer languages like…
Migrating from Warp to Axum
Falling out of love with warp Back when I wrote this codebase, warp was the best / only alternative for something relatively high-level on top of hyper. I was never super fond of warp’s model — it’...
Making Rust a Better Fit for Cheri and Other Platforms
Recently, Aria Beingessner published an interesting essay “ Rust’s Unsafe Pointer Types Need An Overhaul ”. There are several parts to this essay, all of which address issues which cause me pain in Rust, and which I would love to see fixed. I want to focus on one issue: Rust’s usize conflates address, data, and object…
#lang Lua
I'm currently working on a macOS app that's built with Racket and allows the user to write small scripts to process and filter some data. While Racket is definitely my preferred language and I could easily use it for these scripts, my target audience for this app would probably appreciate a more familiar language. I…
Who Contributed to PostgreSQL Development in 2020 and 2021?
I have done a few previous blog posts on who has contributed to PostgreSQL , but I did not do one last year. A couple people mentioned to me...
Master Foo and the Recruiter (2016)
A technical recruiter, having discovered that that the ways of Unix hackers were strange to him, sought an audience with Master Foo to learn more about the Way. Master Foo met the recruiter in the HR offices of a large firm.
Sending notifications programmatically: let me count the ways
Code level discussion of web scraping, gray hat automation, growth hacking and bounty hunting