Tooling Icon

Tooling

Tooling and apps used to create and deliver awesome software.
243 Stories
All Topics

The Changelog The Changelog #475

Making the ZFS file system

This week Matt Ahrens joins Adam to talk about ZFS. Matt co-founded the ZFS project at Sun Microsystems in 2001. And 20 years later Adam picked up ZFS for use in his home lab and loved it. So, he reached out to Matt and invited him on the show. They cover the origins of the file system, its journey from proprietary to open source, architecture choices like copy-on-write, the ins and outs of creating and managing ZFS, RAID-Z and RAID-Z expansion, and Matt even shares plans for ZFS in the cloud with ZFS object store.

PostgreSQL github.com

An easy-to-use, zero-downtime schema migration tool for Postgres

Reshape… automatically handles complex migrations that would normally require downtime or manual multi-step changes. During a migration, Reshape ensures both the old and new schema are available at the same time, allowing you to gradually roll out your application.

Designed for Postgres 12+ and experimental for now. Do not use in production until it shapes up.

Konrad kolaente.dev

Simple, zero-fuss docker database backups

Back in the olden days, I would just put a mysqldump > dump.sql in a crontab and called it a day. When I started to host more and more stuff with docker, I first just migrated that approach to docker and put it all in a container. That still required me to mess around with config files. Once I started to host postgres containers it all got even more complicated. Thus, I needed a new solution.

I built this tool to make backups easy: Simply point it to a host running docker containers and it will automatically inspect and find all mysql/mariadb and postgres containers and do backups of them on a schedule. No configuration required, it “just works”.

RSS github.com

The RSS feed for websites missing it

RSS-Bridge is a PHP project capable of generating RSS and Atom feeds for websites that don’t have one. It can be used on webservers or as a stand-alone application in CLI mode.

I made a very poor-man’s version of this as my first ever Sinatra app way back in the day. It’s cool to see that vision live on, but it sucks that tools like this have to exist. It seems that the author agrees with me on that:

We want to share with friends, using open protocols: RSS, Atom, XMPP, whatever. Because no one wants to have your service with your applications using your API force-feeding them. Friends must be free to choose whatever software and service they want.

We are rebuilding bridges you have willfully destroyed.

Ship It! Ship It! #33

🎄 Merry Shipmas 🎁

Merry Shipmas! This is our special Christmas episode which sums up two months of very early mornings and a few late nights. After many twists and turns, stuff which didn’t work out, as well as pleasant surprises, this is what we ended up with:

  • 🎁 PR #395 - CI/CD Lego set with Guillaume de Rouville & Joel Longtine
  • 🎁 PR #396 - Continuous CPU profiling with Frederic Branczyk
  • 🎁 PR #399 - Auto-restoring Kubernetes clusters with Dan Mangum & Muvaffak Onuş

While we initially intended to have five Christmas presents in total, only three got delivered in time. We planned, worked hard and eventually shipped the best we could just in time for this special Christmas episode. Our hope is that the latest additions to our changelog.com GitHub repository will help you just as much as they will help our 2022 setup.

🎄Merry Shipmas everyone! 🎄

Julia Evans messwithdns.net

Mess with DNS

Julia Evans has a cool new web tool for experimenting with DNS. She wrote up why she created it and some of the tech behind the tool on her announcement post:

Mess With DNS gives you a real subdomain, and it’s running a real DNS server (the address is mess-with-dns1.wizardzines.com). The interesting thing about DNS is that it’s a global system with many different computers interacting, and so I wanted people to be able to actually see that system in action.

Mess with DNS

Austin Gil austingil.com

Making accessibility more accessible

Austin Gil writes an excellent post on how to get more team members involved with accessibility by sharing tools they’ll actually use. He covers tools for designers, developers, editor plugins, frontend frameworks, stylesheets, and even CI/CD integrations.

(This was also a big topic of discussion in JS party #204: JavaScript will kill you in the Apocalypse.)

Rust github.com

elfshaker is version control fine-tuned for binaries

elfshaker is a CLI tool written in the Rust programming language. It stores snapshots of directories into highly-compressed pack files and provides fast on-demand access to the stored files. It is particularly good for storing lots of similar files, for example object files from an incremental build.

They’ve had phenomenal results when using this with clang builds.

macOS danpetrov.xyz

The secret of the macOS Monterey network quality tool

TIL Apple added a networkQuality utility to Monterey which measures the quality of your device’s internet connection much like speedtest.net and fast.com.

λ networkQuality
==== SUMMARY ====
Upload capacity: 14.696 Mbps
Download capacity: 21.661 Mbps
Upload flows: 20
Download flows: 12
Responsiveness: Low (103 RPM)

What’s interesting about it is that it measures your upload and download in parallel by default, which is more aligned with real-world usage than running them back-to-back like other tests do.

NGINX digitalocean.com

A web UI for generating various NGINX configs

NGINX can do a lot. But configuring it to do various things can be tedious. Enter Digital Ocean’s NGINXConfig project:

You can deep dive into the NGINX documentation right now OR you can use this tool to check how NGINX works, observe how your inputs are affecting the output, and generate the best config for your specific use-case (in parallel you can also still use the docs).

freeCodeCamp Icon freeCodeCamp

Learn the 50 most-used linux & terminal commands

I’m sharing this because I’m watching this course, so learn with me as I learn from Colt Steele. It’s awesome because it has chapters so you can easily jump to the sections that interest you most.

Touch cat tail. Find man head. Who?

The previous seven words are common Linux commands. If you are a programmer, you are likely going to need to use Linux and terminal commands at some point.

All these commands work on Linux, macOS, WSL, and anywhere you have a UNIX environment.

Pairs well with Modern Unix tools and Oh my! Zsh. 🍷

Learn the 50 most-used linux & terminal commands

Founders Talk Founders Talk #81

The future of code search

Today Adam is joined by Quinn Slack, CEO of Sourcegraph. He’s been tracking Sourcegraph for years now and knew one day they would hit Unicorn status, and that happened this year. They’re just off a massive $125M Series D funding round led by Andreessen Horowitz at a $2.625B valuation to bring code search to every developer. The future of code search has never been more clear and we’re excited to share today’s show with you.

Ship It! Ship It! #23

A universal deployment engine

In today’s episode, Gerhard is talking to Sam Alba, Docker’s first employee, and Solomon Hykes, the Docker co-founder. Together with Andrea Luzzardi, they are the creators of Dagger, a universal deployment engine that trades YAML for CUE, and uses Buildkit as the runtime.

Why? Because we should stop rewriting the same application deployment logic in scripts, makefiles or continuous delivery configuration. That’s right, this is the YAML vaccine that we have all been waiting for.

Gerhard believes that one day, Dagger will become just as meaningful for application delivery, as Docker is today for application code.

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?)

Command line interface hurl.dev

A CLI that runs HTTP requests defined in a simple plain text format

There are a lot of HTTP client tools out there. This one is neat because of its simple/repeatable plain text API that I’d imagine works great for writing integration tests.

# Get home:
GET https://example.net

HTTP/1.1 200
[Captures]
csrf_token: xpath "string(//meta[@name='_csrf_token']/@content)"

# Do login!
POST https://example.net/login?user=toto&password=1234
X-CSRF-TOKEN: {{csrf_token}}

HTTP/1.1 302

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.

Brian Underwood hex.pm

Todo or Die, now for Elixir too

Good ideas get legs and run. It appears that “self-destructing” TODO comments is a good idea, because the concept has now been implemented in Rust, Ruby, Python, and Elixir (as a credo check). Here’s some insight on that decision shared by the package author, Brian Underwood:

I talked with a couple of other people on the Elixir Slack about it when I started and we all liked the idea of doing it as a check (like with credo) as opposed to at runtime because that could fail on production (not very with the “stability” Elixir ethos 😅).

Compile time would be better, but if you wanted to implement something like the check of GitHub issues then you’re adding HTTP requests to your application’s compile, which maybe means that you’re app doesn’t compile if the HTTP request fails (like because GitHub is down, even if the issue isn’t closed yet).

Alexander Al github.com

DeepfakeHTTP – Your 100% static dynamic backend

This may seem silly at first, but DeepfakeHTTP actually has a bunch of interesting use cases:

  • Creating the product PoC or demo before even starting out with the backend
  • REST, GraphQL, and other API prototyping and testing
  • Hiding critical enterprise infrastructure behind a simple static facade
  • Hacking and fine-tuning HTTP communications on both server and client sides
0:00 / 0:00