The melody of The Sound by Carly Rae Jepsen plays in the background as I write the opening sentence for this blog post. When I hear a song in a playlist that I love, I often take a screenshot of the song name to remind me to listen to the song later. I often forget to go back and look at the songs. This weekend, however, I decided to look through...
Software licenses are a reflection of our values. How you choose to license a piece of software says a lot about what you want to achieve with it. Do you want to reach the maximum amount of users? Do you want to ensure future versions remain free and open source? Do you want to preserve your opportunity to make a profit? They can also be used to...
For the past years Vitto and I have used Tricount to track our shared expenses. The app is actually pretty good, but there’s one small thing that annoys me quite a bit. Even though we spoke English to each other for the first month, we’ve since spoken a …
When I hover over an image, I can add a border to a link, or change the colours of an SVG icon.
I have travelled a lot this year, and after yet another trip where I lugged too many things around, I’ve been thinking about ways to cut back. The classic guide for this is onebag.com, which covers a very interesting mix of techniques and some carefully-chosen lightweight gear that will take you to the farthest corners of the map. Perma-nomad...
[IMG_0764.jpeg]I saw a post on Mastodon the other day, suggesting you post about the 20 games had a big impact on you. The challenge was to share one game a day,...
In order to further iterate on Fischer, I'm going to need to be able to test with a reasonably large pile of bookmarks. That's going to get tedious quickly if I can't import and export them as I experiment. In the past, the shortest path to doing this has been using django-import-export and either a script or django admin integration. I'd prefer...
Justine Tunney recently wrote a blog post titled The Fastest Mutexes where she describes how she implemented mutexes in Cosmopolitan Libc. The post discusses how her implementation uses futexes by way of Mike Burrows’s nsync library. From her post nsync enlists the help of the operating system by using futexes. This is a great abstraction …...
Local programmer is inconvenienced by error-handling boiler plate, writes uninformed article about experimental programming language features. More at 11.
PDF generation and processing is a common requirement in many web applications, especially for generating invoices, reports, or documents dynamically. PHP provides various libraries to handle PDF creation, manipulation, and extraction. In this article, we will evaluate the most popular PHP libraries for PDF handling, breaking down their pros and...
Anyone who has implemented a simple HTTP 1.1 server can tell you that it is a really simple protocol. Basically, it’s a text file that has some specific rules to make parsing it easier. All HTTP requests look something like this: 1 GET /path HTTP/1.1\r\n Host: aarol.dev\r\n Accept-Language: en,fi-FI\r\n Accept-Encoding: gzip, deflate\r\n \r\n The...
Oct 06 2024Oct 06 2024 Rust has two main string types: Rust has two main string types: StringString and and &str&str. Sometimes, people argue that these two types make Rust code difficult to write, because you have to think about which one you should be using in a given situation. My experience of writing Rust is that I don’t really think about this very much, and this post is about some rules of thumb that you can use to be like me.. Sometimes, people argue that these two types make Rust code difficult to write, because you have to think about which one you should be using in a given situation. My experience of writing Rust is that I don’t really think about this very much, and this post is about some rules of thumb that you can use to be like me. Level 1: Don’t...Level 1: Don’t...
Some thoughts on how programming’s unlikely relations to poetry, and some implications of those relations I don’t have much time recently to work on articles about programming (especially considering my typical article length); but I have some previously written content to share. This article was drafted as a Twitter thread on my 39th birthday:...
Asheville is in crisis right now. They're without drinking water, faucets run dry, and it's difficult to flush toilets. As of yesterday, the hospital has water (via tanker trucks), but 80% of the public water system is still without running water. Things are really bad. Lots of infrastructure has been washed away. Even when water is back, there...
(This is part of a series on the design of a language. See the list of posts here.) Many 'scripting' languages use a hashmap for their default associative data-structure (javascript objects, python dicts, etc). Hashtables have a lot of annoying properties: Vulnerable to hash flooding....
Besides retries, circuit breakers1 are probably one of the most commonly employed resilience patterns in distributed systems. While writing a retry routine is pretty simple, implementing a circuit breaker needs a little bit of work. I realized that I usually just go for off-the-shelf libraries for circuit breaking and haven’t written one from...
Why are there so many programming languages? One of the driving reasons for this is that some languages tend to produce fast code, but are a bit of a pain to use (C++), while others are a breeze to write, but run somewhat slow (Python). Depending on the ratio of CPUs to programmers, one or the other might be relatively more important.
In the article about using mrbgems we had a situation when ARGV constant was not defined, but referenced. As a result the code execution failed (the side-effects were not produced), however it did that completely silently. No error message was emitted. And even the exit code was zero. This is obviously bad. So I set to fix it. By examining mruby...
At the end of his apologia for the Social Web Foundation, Ben Werdmuller says this of what he terms both the growth fediverse and the movement fediverse: “Each group is approaching the problem in good faith.” The foundation’s very name disputes this contention. Inherent to the foundation’s formulation of itself and of the social web is the...
At the end of his apologia for the Social Web Foundation, Ben Werdmuller says this of what he terms both the growth fediverse and the movement fediverse: “Each group is...
The other night I spoke at a quantum computing event and was asked—for the hundredth time? the thousandth?—whether I agreed that the quantum algorithm called QAOA was poised revolutionize industries by finding better solutions to NP-hard optimization problems. I replied that while serious, worthwhile research on that algorithm continues, alas, so...
Gaming hasn’t exactly been one of my most intensive pastimes–it has its highs and lows, and typically tends to be more intensive in the cold seasons. But this year, with the public demise of Switch emulation and my interest in preserving a time capsule of my high-performance Zelda setup, I decided to create a VM snapshot of it and (re)document...
Warm Handoffs are a procedure I’ve implemented with several teams and organizations to improve communication and collaboration in Slack. As organizations grow and ownership shifts and splits as teams are formed and re-formed, Slack channels proliferate, and it gets harder for folks across an org to know the right channel to get help for a...
I didn’t like how Quartz looked on mobile, one thing led to another and BOOM we’re on WordPress now…. I’ll put content back on here over the next few days (weeks) ❤️ The main issue with Quartz was the way...
When “personhood” is decided by the Big Five My partner and I recently moved states in order to benefit from lower rent and a more affordable living environment. We found a place on Craigslist for the winter that was not only scam-free, but extremely cute. We visited it in person, met the landlord, and agreed to tenancy until April after the...
Getting timely posts out there in the open is becoming a bit of a challenge, it seems. Nonetheless, it’s still early October, so here’s my overview of stuff I’ve hauled back from last month’s internet spelunking. I’m also lagging behind my RSS reads so this haul is not as big as it could have been, but hey, it’s not exactly a contest. Previous...
I got a call from an ex-student asking me “how do you know when you found product market fit?” There’s been lots of words written about it, but no actual recordings of the moment. I remembered I had saved this 90 second, 26 year-old audio file because this is when I knew we had found […]
I’m pretty sure that my incessant blog hosting changes have lost me most subscribers to my RSS over the years, but for those of you still following, or for those...
“Time for Peace” (זמן לשלום), Lyrics: Amnon Abutbul, Yair Dalal, Fathi Kasem; Melody: Amnon Abutbul. Performing Shlomit Aharon and Yevgeni Shapovalov. This year I had the rare event that the new Jewish year coincides with my birthday, and “time for … Continue reading →
The below is taken from an interview conducted at the Computer History Museum in 2004 by Grady Booch. He interviewed early Apple developers Bill Atkinson and Andy Hertzfeld about the development of the original Apple Mac, and in particular MacPaint software.On the art of developing softwareGrady Booch: So what makes software beautiful for you? Do...
Performance-oriented developers usually throw around "data-oriented design" when talking about optimizing for cutting-edge CPUs and GPUs with advanced SIMD units, but some of their tricks are surprisi…
One interesting language design thread we've stumbled upon with Swift, but haven't fully developed, is the use of coroutines as an alternative to higher-order functions for building "control flow like…
One of the things I like about retrocomputing is the way the limitations of older computers give a "grain" to the software that runs on them, like how film grain affects the quality of the image in a …
--> Back in 2017, luxury fashion house Chanel did a "Data Center Collection" runway show featuring a bunch of their classic purse designs with integrated LED displays. I don't think these pieces…
The previous owner of my FM TOWNS UX20 thoughtfully removed the CMOS battery from the computer to keep it from exploding and damaging the electronics inside, but unfortunately, TOWNS OS uses the CMOS …
This book I got in a pile of FM TOWNS books turns out to be a lot more interesting that I was expecting an '80s C compiler manual to be. For as long as C and its relatives have been in mainstream use,…
I got a KryoFlux so that I could image the original disks from some FM TOWNS software packages I recently got a hold of. The FM TOWNS, along with the NEC PC98 and Sharp X68000, all use a different phy…
The FM TOWNS keyboard doesn't have a PrintScreen key, so how do you get Windows to take a screenshot when Alt+PrintScreen isn't available? After failing to find an answer on the Internet, I randomly p…
The FM TOWNS was the first computer to come with a CD-ROM drive, and it well predates attempts to standardize bootable CD-ROM behavior on the IBM PC and other platforms. The FM TOWNS' boot process for…
Earlier this year, I read Martin Uecker's proposal N3212 to add parametric polymorphism to C. It's easy to scoff at the idea of adding generic programming to plain C, when C++ already has templates, a…
I recently bought the Eight Sleep Pod 4—a smart mattress cover that tracks your heart rate, HRV, snoring, and cools or warms the mattress during the night. There’s a lot to like about the mattress but in the end I opted to return it. This post describes my experience with the Pod 4. Sleep is important enough to offset the steep price The Eight...
'We're not just a company, we're a family!' It's a nice sentiment, sure. But it's also a load of crap.
teleportation does exist and so does time travel but only forward from OR to recovery room from discomfort to relief from a permanent pain to a temporary one I left something behind not quite a part of myself —unwelcome guests poisoning me from the inside no longer welcome
I’ve spent the past several years working with functional programming languages in my free time – primarily Haskell and OCaml. I love both languages but also find aspects of each frustrating. Haskell is terse and elegant with type classes providing a powerful mechanism for ad-hoc polymorphism. However, it can also be confusingly implicit and I...
In Part 1, I learned how to do views and routes in nanodjango, got some basic templates set up, and vendored Pico CSS to make those pages look a little nicer. Tagging is going to be an important part of making this all work the way I want, and the easiest way to solve that is with django-taggit. I'm tackling this next so I can learn whether...
My fairly banal, basic, but beautiful command line setup
This part isn't Zig-specific. If you're familiar with length-prefixed messages and binary encoding vs text encoding, you can probably skip it. When thinking about communication between systems using TCP, we generally think about it in terms of messages: an HTTP response, a database record, etc. The implementation though comes down to writing and...
In the last article , I took an initial look at mruby: how to install it using asdf, how to execute a simple code and how to build a standalone binary from a Ruby source. Now it’s time to try to look further and build something more complex. But first, let me just acknowledge how really basic the mruby is. It supports almost all Ruby syntax...
I know there are a few new practices that I should adopt as I start new projects, but part of the purpose of this one is trying out nanodjango. So I’m keeping my other stuff the same, including pyenv, black, and poetry usage, for now in order to save my “innovation tokens.” Some Quick Ceremony to Make a Comfortable Environment cd fischer git init...
Although I've never written about them, I've been interested in music synthesisers for ages. My colleagues know this. Whilst I've been off sick, they had a whip-round and bought me a voucher for Andertons, a UK-based music store, to cheer me up. I'm absolutely floored by this generosity. And so, I'm now on a quest to buy a synthesizer! Although,...
I’m not interested in getting into Freddie deBoer’s primary contention about people faking disabilities (via Sara Hendren), if only because I had my worst-ever fatigue day yesterday and today had...
I’m not interested in getting into Freddie deBoer’s primary contention about people faking disabilities (via Sara Hendren), if only because I had my worst-ever fatigue day yesterday and today had to be up early for the landlord to come fix the intermittent beeping coming from my basement, which as a sensory experience certainly didn’t at all help...
The other day in our morning rush before school my wife asked for help figuring out how to put lunch money on our kids’ school accounts. For some time she’s been doing it “the hard way”: talk to the people in the front office of the school every few months and swipe a credit card. Every time she did it, they would remind her there was an “easier...
When I first started talking about Leaftlet, I mentioned how it was "only" a map library, and by that I mean, only able to present a view/wrapper around tiles representing map data. There's a heck of a lot of services that Google Maps, HERE, and so forth, add on top that won't be present, things like routing, geocoding, and more. Considering the...
The Moom giveaway has ended, and I have winners to announce! The winners! Congratulations to: Hadi Zainudin Dan McClain Nate Terpstra Tracy Jenkins Gavin Jerman Marco Onderstal John Miller Kris Schofield Cristobal Torres-Velez Michail Litke You should have received an email with details, please let me know if you didn’t hear...
Web excursions brought to you in partnership with Backblaze. Back up everything. Create VS Code Themes Easily - Theme Studio - The VS Code Theme Editor I’ve switched to VS Code (finally) and I’m mostly loving it. Started playing around with porting my favorite things and found VS Code Theme Studio. It’s “the easiest way to create a theme for...
This is a special milestone: 700th post, after 14 years of blogging here.700 posts is a lot of blogging. But that comes down to 50 posts per year, which is one post a week, totally doable, right?If I can get another 14 years of blogging at this rate, I will get to 1400. That is more than the EWD documents in terms of the sheer number of posts,...
Uprighting a mesially-inclined (impacted) third molar
Ok, continuing on the SRDS day 1 post, I bring you SRDS day 2.Here are my summaries from the keynote, and from the talks for which I took some notes. Mahesh Balakrishnan's KeynoteMahesh's keynote was titled "An Hourglass Architecture for Distributed Systems". His talk focused on the evolution of his perspective on distributed systems research and...