Programming Leftovers
-
Natural Language Inputs
The argument against this approach is likely: it’s difficult to accept and parse user input. But you know what else is hard? Building user inputs that are sophisticated, usable, accessible, progressively-enhanced, and format-specific, not to mention needing them to work across varying inputs and device types.
-
[Repeat] Bullshit Software Projects
This was my introduction to busy work: work to be done for no other reason than to keep yourself looking busy. It fits into a larger category of bullshit work: work that the worker must do despite having no purpose.
-
Using Rust at a startup: A cautionary tale
I hesitated writing this post, because I don’t want to start, or get into, a holy war over programming languages. (Just to get the flame bait out of the way, Visual Basic is the best language ever!) But I’ve had a number of people ask me about my experience with Rust and whether they should pick up Rust for their projects. So, I’d like to share some of the pros and cons that I see of using Rust in a startup setting, where moving fast and scaling teams is really important.
-
Changelog Driven Versioning
Versioning is one of the many hard problems when it comes to writing software. There is no one correct way to do it, and all have various tradeoffs.
After reading keep a changelog, I was inspired to implement this into a couple of CLI tools that I am working on at the moment: Flagon (feature flags on the CLI, for CI usage), and Cas (Content Addressable Storage for Make), but I also wanted to solve my versioning and release process.
-
A Better Way to Borrow in Rust: Stack Tokens
As a Rust programmer you are probably quite familiar with how references work in Rust. If you have a value of type T you can generally get various references to it by using the ampersand (&) operator on it. In the most trivial case &T gives you just that: a reference to T. There are however cases where you can get something else. For instance String implements Deref
which lets you also get a &str from it and that system also can be extended to work with mutable references as well. -
Measuring the overhead of HashMaps in Rust
While working on a project where I was putting a lot of data into a HashMap, I started to notice my hashmaps were taking up a lot of RAM. I mean, a lot of RAM. I did a back of the napkin calculation for what the minimum memory usage should be, and I was getting more than twice what I expected in resident memory.
I'm aware that HashMaps trade off space for time. By using more space, we're able to make inserts and retrievals much more efficient. But how much space do they trade off for that time?
I didn't have an answer to that question, so I decided to measure and find out. If you just want to know the answer, skip to the last section; you'll know you're there when you see charts. Also, all the supporting code and data is available if you want to do your own analysis.
-
Sprint Driven Development
Agile talks about doing work in sprints, but it never felt like a “sprint” to me. It just feels like we’re chopping work up arbitrarily into 2-week chunks. When I run, sprinting is a top-speed run focused on getting to a clear destination as soon as possible. I need a long rest before I can sprint again. The agile version of this doesn’t seem like it has much in common.
-
Hungarian developer receives $70,000 reward from Google
-
Squish That Stack With Rampart
[P B Richards] and [Aaron Flin] were bemoaning the resource hunger of modern JavaScript environments and planned to produce a system that was much stingier with memory and CPU, that would fit better on lower-end platforms. Think Nginx, NodeJS, and your flavour of database and how much resource that all needs to run properly. Now try wedge that lot onto a Raspberry Pi Zero. Well, they did, creatingRampart: a JavaScript-based complete stack development environment.
-
A new constant expression interpreter for Clang
In this blog post, I explain the upstream work I have been doing on a new constant expression interpreter for Clang.
-
Kephra: Select All | lichtkind [blogs.perl.org]
To continue my previous post about Kephra, please let me ramble about just one seemingly little feature.
[...]
Repeating the same key stroke doesn't cost much finger movement and expanding selection is kinda the same thing over and over.
-
Qt for Android Automotive 6.4.1 is released
We are happy to announce that the latest Qt for Android Automotive is out, based on Qt 6.4.1. This is a minor fix release where several qmake example projects can be correctly built.
-
[python] Generate ranges from items | Pablo Iranzo Gómez blog
Some years ago, I added a script for updating headers for (C) in the python files I was developing for Risu.
In this way, the header got the list of authors and years working on the files updated automatically.
With the pass of the years, the list started to became a bit too long, so I worked on creating code for getting ranges instead.