A while ago some Rust / Linux drama hit the news because of tension between people who are pushing for more Rust in the kernel, and those who seem to be opposed to the idea.A while ago some Rust / Linux drama hit the news because of tension between people who are pushing for more Rust in the kernel, and those who seem to be opposed to the idea.Reading the opinions of those involved, and looking at the “evidence”Reading the opinions of those involved, and looking at the “evidence”, you can see that people are feeling strong emotions and so it becomes less clear to what extent this is a technical disagreement, a political..., you can see that people are feeling strong emotions and so it becomes less clear to what extent this is a technical disagreement, a political...
In my previous post I argued that Go has exceptions because of panic/recover. Some people understood the message, some others had objections that roughly amounted to “you’re just being pedantic, there’s no practical consequence to it”.In my previous post I argued that Go has exceptions because of panic/recover. Some people understood the message, some others had objections that roughly amounted to “you’re just being pedantic, there’s no practical consequence to it”.Oh man, if only.Oh man, if only.The The talktalk that I linked in the other post goes over this point with exemplary clarity but, since I’m bothering to write a follow up post, I will just go through the... that I linked in the other post goes over this point with exemplary clarity but, since I’m bothering to write a follow up post, I will just go through the...
The Zig official website states in its The Zig official website states in its Overview pageOverview page the following (emphasis mine): the following (emphasis mine): varvar aa = = bb ++ cc..dd;; foofoo(()); bar();; bar(); Examples of hidden control flow:Examples of hidden control flow:D has D has @property@property functions, which are methods that... functions, which are methods that...
In front of you are two personal websites, each used as a blog and to display basic contact info of the owner:One is a complex CMS written in PHP that requires a web server, multiple workers, a Redis cache, and a SQL database. The site also has a big frontend component that loads as a Single Page Application and then performs navigation by requesting the content in JSON form, which then gets "rehydrated" client-side.The other is a collection of static HTML files...
In this blog post I want to encourage Zig community members, starting from project authors, to take a more deliberate approach towards building communication channels between our communities scattered across various social platforms.Andrew Kelley moved a few days ago some of the "instant messaging" portion of the compiler development discussion from Discord to Zulip (you can find a link to it in the list of Zig communities), after the former platform showed him one ad too many...
As somebody directly involved with an upcoming programming language, I'm often in discussions about how to model things in the ecosystem like, say, the package manager, and how those decisions impact the project in the long term.When reading Simon Willison’s excellent blog post "Things I’ve learned serving on the board of the Python Software Foundation" (which I recommend...
You might already be familiar with the two hardest problems in Computer Science, but here I'm talking about Software Engineering.Naming things is still very hard, but what are the three things that you wish the software engineering industry got better at? Or, conversely, what are your top three sources of frustration?This is my list.1. User-hostile softwareWay too much software is botched even before the first line of boilerplate gets flushed to...
Over the last year I worked on a static site generator written from scratch in Zig. It's called Zine, like in fanzine (wiki) and in this blog post I'll briefly present the reasons why I decided to create my own, and describe what's innovative about it.If you want to try it out (or just jump straight into the docs) the official website is
The story of how I gained two world-firsts, somehow.This might sound hard to believe but, as far as I know, I published the first ever Language Server for HTML that reports syntax errors, and then I also gained a second world-first after that.VSCode extension (OpenVSX) (or search "SuperHTML" in...
AKA the three laws of mental thermodynamics.You are a software engineer and have the luxury of facing interesting problems. You would like to tell others about the interesting stuff that you work on, but once your pen is pointed at blank paper (or your cursor is at offset 0 of an empty file), you just don't know how to make progress.In this post I have some advice for you, but beware: advice for complex problems (writing is...
A suggestion for better Zig meetups.If you're trying to learn Zig in 2024, one key ingredient is still interacting with the Zig community. More docs, blog posts, videos about Zig are getting released over time, but in my opinion direct collaboration is still the most effective way to dispel unknown unknowns, get unblocked when you're stuck, and improve your overall coding style by adopting new patterns as they get discovered by other members of the community.When it comes...
The Zig ecosystem is still growing and a lot of important building blocks have not yet reached their final form.One notable example is the current language server situation: ZLS is a brilliant community effort, capable of keeping up with language changes (they have a few clever ways to automate the process), but that has one big flaw: it is not able to resolve complex comptime expressions.The result is that ZLS...
In the last few weeks I've heard reports of quite a few people in the Zig community being contacted by multiple publishers about writing a Zig book for them.In this post I want to share some information with everybody in order to support the decision making of those who might be interested in working on a Zig book, be it with a publisher, or without one.Before I jump into the meat of the discussion, here are my own personal plans, which are not a big secret (I've...
Zig has just gained new for loop syntax that allows you to iterate on multiple slices / arrays at the same time. In this blog post I'm going to explain in detail the rationale behind this choice, while also introducing you to a couple useful patterns that the syntax is meant to encourage.If you want to try it out, you will need an unstable build of Zig, which you can get from the downloads page.Basic...
Why self-host Zig? For great justice, of course… and also a few more reasons actually.With the upcoming 0.10.0 release of Zig on November 1st, we are going to ship the new self-hosted compiler. This is the result of a huge amount of work that brings a lot of benefits, some obvious, some others less so.Even though the self-hosted compiler is now shipped, there's still more work to do on it but, at the same time, now the door has opened to more exciting features, like...
If you read my blog in the past, you know I'm often complaining about Open Source, but today I'm here to say something supportive for once. This doesn't change the fact that I'm still running Software You Can Love this October as an explicit departure from the general "Microsoft ❤️ Open Source" mentality, but recent events are a good excuse to talk about the one thing that Open Source does well: reduce risk when using somebody...
Wohpe is a sci-fi novel by Antirez, who doesn't need any introduction on this blog. At the moment of writing, the original book is only available in Italian, with an English release scheduled for this fall. This is the English incipit as published by Antirez, so we can assume it's final:Twenty years had passed since the morning when Nathan Frei, feet firmly planted in his...
This October I'm going to host "Software You Can Love" (SYCL, pronounced "cycle"), an in-person conference about the art of creating software for humans. If that sounds interesting already, you can find information about the location and ticket prices on the official website.What does SYCL mean?Software you can love is software whose main goal is to serve the end user, and it's alarming how rarely we get to...
If you are interested in contributing to the ecosystem of a programming language (or any big software project really), it's important to know its governance model and how that reflects on the community.This might seem a boring point at first glance, especially if you just want to get to the code, but the reality is that if you don't do this due diligence, you are setting yourself up for a lot of disappointment. Having unmet expectations when doing open source work might lead to...
No matter what language you program in or what applications you use: everything you do with a computer today is powered at some level by a piece of C/C++ code.C and C++ are kings when it comes to writing efficient software and the C ABI is the lingua franca of software interoperability, allowing C libraries to be used by almost any other language. This ubiquity, coupled with the rise of free and open source software development, has created over the course of the last 40 years a...
The Zig project has a non-profit foundation that needs to be managed, a community to shape, and the actual language to develop. These are all big, complex problems that don't default to a positive outcome without active care.Andrew did an amazing job laying the foundations, from deliberately choosing a non-profit corporate model, to picking clear values based on respect and empathy for the community to crystallize around,...
Up until the publication of this post, if you went to the front page of https://ziglang.org, you would be greeted with a multi-page explanation about how Zig improves over the systems programming toolchains that today we take for granted.If you have done enough of that kind of programming, you'll immediately see how Zig is tackling relevant problems, but if you don't have such experience, then the front page could very easily...
Let's talk about Secret Hitler, now that everyone is playing Among Us and Among U.S.In games like D&D, you start by creating a character for yourself. The character has a background, a set of skills and a personality of their own. Ideally, you should try to play characters with a different disposition than yours, and part of the enjoyment is acting like them, to the point of even occasionally making disastrous choices knowingly, because that’s what the character would...
While not yet at version 1.0, Zig is about to reach a new level of maturity and stability.In the early days, Zig was but a thin frontend in front of LLVM. This was instrumental for getting started quickly and filling in gaps of Andrew’s knowledge as a compiler developer. Now, the training wheels of the bicycle are coming off, and LLVM is transitioning into an optional component.
Addio Redis, I'm leaving Redis Labs
Thanks Antirez for the code, the Redis manifesto, and for the free karma especially.Last week I resigned from my position as developer advocate at Redis Labs.I’ve never talked much about Redis on this blog because I made a point of trying to write interesting posts about different topics, and also to avoid any form of conflict of interest: I didn’t want people to think this blog was being used as a marketing outlet by Redis Labs.Now that I’m not with the company...
An introduction to Zig's curious concurrent programming API.Zig is a new, general-purpose programming language that is rethinking from the ground up the way languages and related tooling should work. I’ve already discussed compile-time code execution, and now I’m going to introduce another innovative concept from the language: async/await.But wait a minute, isn’t async/await present also...
As we adventure into the phase where society needs to learn to cohabit with the virus, the tech industry comes to the full realization that in-person conferences and meetups are not going to resume anytime soon. Good, but not good enough, especially when it comes to online events.Organizers have had enough time to think it through, and yet we are still seeing many of them host what are basically extracurricular meetings. If you join a conference now, you are likely to see...
Make the most of the global remote-working experiment.A virus goes pandemic and now you’re not allowed to go to the office anymore. Welcome to the remote worker’s club. I’ve been a member for nearly 1.5 years, and it’s been one of the best work experiences of my life. No commute, the comfort of your home, cooking your own meals; what’s not to like? Well, for some, a lot. I’ve had a fantastic experience but it’s a peculiar equilibrium and you might have already discovered that...
“In this world there are two types of standup, my friend: comedy and meetings.You do meetings.”It's not always easy to understand what makes meetings successful and since Zen stories aren't the learning tool of choice in the business world, we have certified practitioners teach people what they call "ceremonies": rituals that you're supposed to imitate with the expectation that, hopefully, illumination will eventually dawn on you.I don't claim to know everything...
Imagine you're a developer who mainly works with Go. You go to an event and, while chatting with some people, you decide to share with them the news that you wrote a small tool that does something. You claim that since you wrote it in Go, it's fairly fast, it's a single binary, etc. The group seems pleased with your recount and you start feeling good, but then you notice a stranger approaching from behind. A bone-chilling wind blows and you hear: "Why Go and not...
Let's take a quick look at what compile-time execution looks like in Zig.If you've only experienced compile-time execution in the form of macros, generics or codegen, be ready to be surprised by what Zig can do.What is ZigZig is a new general-purpose programming language developed by Andrew Kelley. While still under heavy development, I think the language is already showing great promise. Zig aims to be a better C, similarly to how Rust can be understood as a...
Simple → Complex is the dimension that describes how irregular and interconnected a system is. Simple systems can be broken down into smaller pieces that are understandable in isolation. If you make changes to one of those pieces, you don't have to fear unexpected ramifications in parts not directly connected to what you're operating on. Complex systems are the exact opposite: you'll need to keep in mind a lot of things and tread carefully.Easy →...