In the software engineering community, LLM's are often compared to the industrial revolution, or seen as a second industrial revolution. I've heard this used as some sort of fact in discussions about AI and LLM's for years now, and I'm growing tired of it. There is one important difference few seem to mention: While the industrial revolution was built on technical innovation,…
Like many, I too have been spending much time thinking about (generative) AI and its values. In my field of work (Software Engineering), on online forums such as Hacker News and in blog posts, generative AI has become an almost polarized topic between the believers and the unbelievers. Of course there's a middle ground, yet as it often is, the outer ends are the most vocal, and usually are…
Today, I came across the following post Rust Project Perspectives on use of AI . I realize there are more opinions in this post, but I will only focus on Niko's opinion as it made me think about the different sides of empowerment. NB: I do not intend to pick on Niko's opinion here; there's no ill intent behind this reply. Consider it a post-dinner thought if you will. In particular,…
I've been playing with LLM's over the past few years; probably in part was just a fear of missing out. I've both used AI via chats, and let LLM's program agentically. My feelings are mixed. One day I will write a more detailed opinion, but hey, with all this hype, there are enough opinions 1 . One thought keeps repeating though; I reminisce about this lesson from one of my…
I've been a Spotify subscriber for over 11 years. Over the years I've tried several of the other music apps, but Spotify stuck. It is however not an app without its pain points. On occasion I've been using the venerable Spicetify to fix issues, like when Spotify tried to go above and beyond in promoting podcasts.Spicetify did have its disadvantages however and one is that it broke…
In the past four days or so, I've had notifications popping up for repositories which I didn't subscribe to myself. At first I thought the notification bubble just wouldn't disappear because of a little bug in Refined GitHub , but on closer inspection (and disabling the extension to be sure), it turned out it wasn't so. This is what it looks like in my notifications list: And…
Four days ago, news came in that several packages on NPM were compromised; later it turned out to that it wasn't just one NPM account that was compromised by the (it seems) the same phishing attack, but multiple. The compromised accounts published new package versions containing malware which intercepted network traffic and replaced crypto wallet addresses with alternative malicious…
A few months ago I learned of the existence of Harper , which describes itself as a lightweight, offline, grammar checker. Both the website and GitHub repository are a bit sparse on how to use it, but they do link to all sorts of integrations , which I think all use the Harper language server. There is also harper.js , mostly for web applications and browser extensions. While the language server…
Today marks the 10th anniversary of Rust 1.0 . Rust 1.87 will be released live on stage at the 10 years of Rust celebration this afternoon (hosted by RustWeek, there are still tickets I heard). Over these past 10 years, Rust had a major positive impact on my life in various ways, and I'm extremely grateful for that. Thanks to all Rust contributors and to our community, it has been a blast 🎉…
Just hours ago, the first full conference day of RustWeek 2025 ended. Everything went smoothly, so big props to the organisers, volunteers*, the audio and video crew, and staff at the venue. Also shoutout to the people who designed and organized the stickers, they're really really great, and also to the excellent barista coffee ☕. The day ended for me by attending the live recording of the…
Every project needs a changelog. And let's be honest, the work keep-a-changelog did to make this a more common practice is awesome. But there is something many seem to forget: Did you ever notice [version numbers] in release titles within a CHANGELOG.md ? These brackets were supposed to be links . But in reference style, you need to complete the reference elsewhere. Let's look at an…
Today I rediscovered a slide deck I made for a lunch talk I gave at the beginning of 2022. It is an introduction to Rust, and specifically the features which made me fall in love with Rust since 2014. It was aimed at an engineering audience consisting of among others software engineers, mechanical engineers and control systems engineers. Everyone in the audience had at least some programming…
A quick tour through some of the cargo msrv 0.16.0 highlights. What is cargo-msrv ? cargo-msrv is a cargo plugin which helps you "Find the minimum supported Rust version (MSRV) for your project". Aside from finding the MSRV, it has additional tools baked in, such as listing the MSRV's of dependencies and verifying your (new) code against a given MSRV. Find out more here 😉. The tour The…
Alternative title: ... And a short introduction to cargo msrv The problem In cargo-msrv we have the following situation. The top level command is used when "finding the MSRV" of a Rust project, while a subcommand can be used to verify that a specific MSRV works for a given project. The former can be done by running cargo msrv while the latter would be cargo msrv verify . Once upon a time, an issue…
At work, I've been building a new React Native app. Initially, I wanted this app to be as simple as possible, to allow for quick iterative cycles. Now this app needs to refetch a certain resource from the server in regular intervals. I have to admit: I briefly considered to use React Query , but decided it wasn't quite time for that yet. Simple first. Complex later. I looked at the React…
What is Yare? Yare is a lean parameterized testing macro for Rust. This practically means that when using #[yare::parameterized] , it is easier to write a test scenario, which can be tested against multiple different inputs. Each set of inputs is a separate test case. For example: use yare :: parameterized ; #[ parameterized ( apple = { Fruit :: Apple , " apple " }, pear = { Fruit :: Pear , " pear…
Let's sketch a situation. You're designing and implementing a library in Rust, for some great idea you had. And, you aim to create a seamless API that makes this library user-friendly not only for others, but also for yourself. One way to figure out the design of the library is to write a prototype, and write the bare minimum code to stub out the the initial API. I hear you think: Rust…