Git blog.waleedkhan.name

Lightning-fast rebases with `git move`

How much faster is it? See Timing. If the branch is currently checked out, then 10x is a reasonable estimate. If the branch is not checked out, then it’s even faster.

Is performance the only added feature? git move also offers several other quality-of-life improvements over git rebase. For example, it can move entire subtrees, not just branches. See the git move documentation for more information.

git move is part of the git-branchless suite. Cool stuff.

Honeycomb Icon Honeycomb – Sponsored

Observability 5-year retrospective

logged by @logbot permalink

O’Reilly said it best this year when they summarized learning trends in 2021:

Observability saw the greatest growth in the past year (128%), while monitoring is only up 9%. While observability is a richer, more powerful capability than monitoring — observability is the ability to find the information you need to analyze or debug software, while monitoring requires predicting in advance what data will be useful — we suspect that this shift is largely cosmetic. “Observability” risks becoming the new name for monitoring. And that’s unfortunate. If you think observability is merely a more fashionable term for monitoring, you’re missing its value.

We can’t lose sight of that value. We can’t afford to. This isn’t just a tale of vendors arguing to define marketing terms for their own benefit. The pain and suffering that people endure every day because they can’t understand their own damn systems is too real. The long hours, the toil, the greasy hacks moldering away into technical debt, the late nights, the missed sleep, the burnout. The pain is real, and the solutions are specific. We need specific, meaningful technical terms to help users navigate the future and find their way to those solutions.

Niek npmjs.com

Todo Or Die? TypeScript can do that

Turns out Niek and his team were also inspired by other Todo or Die implementations:

Lately, there is some talk about Todo or Die plugins in languages. According to your latest newsletter, it is now supported in Rust, Ruby, Python, and Elixir. We’ve now added support for TypeScript as a language server plugin!

For now, it has a minimal feature set, because this was created in a day during our company’s Innovation Day, but we have lots of ideas to extend the project.

PostgreSQL notion.so

Herding elephants: lessons learned from sharding Postgres at Notion

Earlier this year, we took Notion down for five minutes of scheduled maintenance. While our announcement gestured at “increased stability and performance,” behind the scenes was the culmination of months of focused, urgent teamwork: sharding Notion’s PostgreSQL monolith into a horizontally-partitioned database fleet.

This is a deep-dive with lots of lessons along the way.

Zach Leatherman zachleat.com

Who pays for web frameworks?

Zach Leatherman has been considering sustainability models for Eleventy, so he surveyed the field to see what everyone else in the web framework ecosystem are doing. Check out his post for the raw data and his analysis. Here’s where he stands as of today:

I don’t have the answers. I definitely wouldn’t agree that Eleventy has figured out our sustainable monetization strategy but I do really admire the success that Vue has had solving this exact problem. I do know that I have no interest in Trend 2 (raise investment money) but I’ll continue to keep a keen eye on what other indie-framework folks are doing.

Sentry Icon Sentry – Sponsored

How DiviPay improved performance by 20x

logged by @logbot permalink

This customer story shares how DiviPay used Sentry to go from reactive/manual debugging to a more proactive approach and improved performance up to 20x for mobile and web.

Matthew Egan, Engineering Team Lead at Divipay, recalls: “Once our code was deployed, it was in the abyss. We would have to find it by dogfooding or just hearing from customers when something wasn’t working.”

While the team worked around-the-clock to resolve bugs, the onus often fell on the customer to help first find the issue. Egan notes: It was hard to replicate issues. I would have to tease it out of the customer, asking them what steps they took— and most of the time, I couldn’t replicate it because they’d missed something. Then, I would have to go crawling through the logs. It was a process that took a lot of time.

Thoughtbot Icon Thoughtbot

Who is empowered by your API design?

We’ve had some excellent discussions about API design over the years. Add to the list this piece by Joël Quenneville at Thoughtbot where he borrows a mental model from the world of MOBA games:

In gaming, MOBA (multiplayer online battle arena) players have a mental framework for describing just what kind of player is empowered by different characters. This framework describes all characters in terms of two statistics: their skill floor and their skill ceiling.

JavaScript github.com

A first-party, fully-local simulator for Cloudflare Workers

Local development of remote/cloud functions has been various levels of painful ever since the computing trend started its rise, so it makes a lot of sense why Cloudflare would invest in easing that pain. Now they get to say developing with Cloudflare Workers is:

  • 🎉 Fun: develop workers easily with detailed logging, file watching and pretty error pages supporting source maps.
  • 🔋 Full-featured: supports most Workers features, including KV, Durable Objects, WebSockets, modules and more.
  • Fully-local: test and develop Workers without an internet connection. Reload code on change quickly.

Trisha Gee trishagee.com

Reading code is a skill

Trisha Gee writes (because Someone Is Wrong On The Internet):

The problem is not that we shouldn’t write readable code. Of course we should aim to write readable code, if only for our own poor selves further down the line (there is no one less capable of reading my code the following week than me). The problem is that these two issues are not mutually exclusive. It’s not “write readable code” or “learn to read code”. That’s like saying, “I’m going to drive really economically so I don’t need to put petrol in the car”. No. You’re still going to need to put fuel in the car (if it’s not electric!) at some point no matter how economically you drive.

She writes a lot more than just that (of course) and even gave a talk about it, which is also worth digesting.

Ops nomadproject.io

Nomad vs. Kubernetes

This page is built by the Nomad folks, so keep that in mind when reading through the comparison;

Kubernetes is an orchestration system for containers originally designed by Google, now governed by the Cloud Native Computing Foundation (CNCF) and developed by Google, Red Hat, and many others. Kubernetes and Nomad support similar core use cases for application deployment and management, but they differ in a few key ways. Kubernetes aims to provide all the features needed to run Linux container-based applications including cluster management, scheduling, service discovery, monitoring, secrets management and more. Nomad only aims to focus on cluster management and scheduling and is designed with the Unix philosophy of having a small scope while composing with tools like Consul for service discovery/service mesh and Vault for secret management.

I’m just excited to see strong competition in this space, and had never heard of Nomad prior to today. If you’ve used it and have experience/opinions, I’d love to hear ’em!

Raspberry Pi github.com

Turn a Raspberry Pi into an Airplay server

This is a wrapper script that simplifies deployment of RPiPlay, which does the heavy lifting. How well does it work?

Screen mirroring and audio works for iOS 9 or newer. Recent macOS versions also seem to be compatible. The GPU is used for decoding the h264 video stream. The Pi has no hardware acceleration for audio (AirPlay mirroring uses AAC), so the FDK-AAC decoder is used for that.

Both audio and video work fine on a Raspberry Pi 3B+ and a Raspberry Pi Zero, though playback is a bit smoother on the 3B+

PostgreSQL kubegres.io

Kubegres is a K8s operator for deploying Postgres clusters

Kubegres is fully integrated with Kubernetes’ lifecycle as it runs as an operator written in Go. It is minimalist in terms of codebase compared to other open-source Postgres operators. It has the minimal and yet robust required features to manage a cluster of PostgreSql on Kubernetes. We aim keeping this project small and simple.

We’ve struggled with running Postgres inside K8s around these parts. Maybe this would’ve helped?

Tooling scribe.rip

An alternative frontend to Medium

We often turn down news submissions that are published on Medium* because the reading experience sucks. With Scribe, you can simply swap medium.com with scribe.rip and fix that problem for good! Here’s an example of what a Medium post looks like on Scribe.

Of course, most things done manually can be automated with a browser exension, and this is no exception to that rule. Here’s a general purpose redirector extension and Scribe’s author provides a ruleset you can use with it. Pretty cool!

(*Maybe instead of declining Medium posts we should code this into our platform for future submissions?)

0:00 / 0:00