Successful contributions to open source projects are a kind of currency. GitHub in particular encourages this in a number of ways: by showing avatars of contributors on repository pages, by showing your contributions to your followers via the activity feed and by signalling contributions per day on the activity graph of your profile. Potential hiring managers often take note of this. Recruiters…
It seems that there is no group of people more divided by the rise of LLMs than developers. Debates on whether LLMs are going to help us work, improve our lives, replace us outright or kill us all are certainly not new, but they rarely end with a consensus. One thing that’s becoming evident, however, is that AI is becoming unavoidable, especially within the open source industry. LLMs have advanced…
Today, the Matrix protocol is pretty much entirely JSON over HTTP. This is true of the client-server protocol, the server-server (federation) protocol or any of the other supporting protocols (i.e. for appservices/bridges). When you send a message into a room, a persistent data unit (PDU, otherwise known as an “event”) is generated which is also JSON. Same for typing notifications, read receipts,…
Go is a programming language which passes by value, which effectively means that if you give a value as a parameter to a function, the received value within the function is actually a copy of the original. You can modify it however you wish and your changes will not affect the original value or escape the function scope. This is in contrast to some languages which pass values by reference instead…
In a world where so many of our interactions now take place online, it feels strange that we build in so many features into messaging platforms that serve to apply pressure or stress to one user just for the mild convenience of another. Read receipts, typing notifications, online presence status all feel as if they fit under this category—they are blatantly user-hostile. Worse, they are often…
Since starting at New Vector in December 2019, I have been working mostly on Dendrite, a Matrix homeserver written in Go. Part of this is to hopefully produce a Matrix homeserver implementation that can stand as a fully feature-complete alternative to Synapse. However, we’ve also been using Dendrite as a testbed for an entirely new model of Matrix federation which is fully peer-to-peer.
I have been a casual iPad user for many years now and I recently made the decision to replace my personal laptop with the iPad Pro. Outside of work, the iPad has long been the first device that I reach for and the laptop was, admittedly, collecting dust. I figured that, with a keyboard, the iPad Pro would be more than sufficient for day-to-day general use and that I can always fall back to using…
Goroutines in Go are effectively lightweight threads. The Go runtime will schedule goroutines across a number of real operating system threads (often based on the number of available CPU cores on the system) so that they run concurrently on multi-core systems. It’s common in Go to communicate between goroutines using channels, which are inherently thread-safe.
ICMP, or “Internet Control Message Protocol”, is a protocol designed to help computers understand when things go wrong out on a network. It’s a supporting protocol - that is, to say, that IP does not strictly require on ICMP to function, however typical networking devices such as routers and endpoints are expected to speak and understand ICMP. You might also know ICMP thanks to “ping”, a utility…