HTTP codes

In my recent explorations, I found an interesting service that might come in handy for testing scripts: httpstat.us. As described on the site, it is a super simple service for generating different HTTP codes. It pretty much does what’s on the tin: $ curl -s -v http://httpstat.us/200 * Trying 104.31.87.226... * TCP_NODELAY set * Connected to httpstat.us (104.31.87.226) port 80 (#0) > GET /200 HTTP/1.1 > Host: httpstat.us > User-Agent: curl/7.

Read More

Hetzner Cloud review

I’ve been a customer of Hetzner Cloud for a few years. The TLDR; is that it’s a solid service that is worth taking a look at if you want low prices for virtual machines if you don’t mind rolling your own solutions for many things. Prices are very competitive. A basic system with 1 vCPU, 2 GB RAM and 20 GB of disk is €2.89 ($3.42). This includes 20 TB of traffic which is plenty for most small projects.

Read More

Fun with curl

A simple way to get a little understanding on all of the back and forth that goes into an HTTP request is to use the venerable curl command. If you run curl with the following arguments: $ curl -s -v -o /dev/null https://l10systems.com You get back a verbose (-v) listing of the calls that suppresses the payload response (-o /dev/null) and doesn’t show the status of the call (-s). This allows you to just see the headers and the back and forth that goes into an HTTP request:

Read More

Slow down script kiddies and other malcreants

The null program is a really great blog written by Chris Wellons. He has a great amount of interesting stuff on a wide array of programming topics. One that caught my attention recently, is Endlessh: an SSH Tarpit. Essentially, what he is proposing is a very simple and low cost way to slow down unsophisticated attacks on Internet facing servers. If you’ve ever had an Internet facing server with port 22 open, you can immediately see the value of this.

Read More

Scheduling builds on Netlify

I like the publication workflow in Netlify with Hugo. It’s pretty easy: everything in your master branch is published when it’s committed. That’s quite nice. But if you want to create entries that get published in the future, it’s not as convienient. A quick search on the Netlify Community had a few options listed. But none seemed easier than this one which proposes using a scheduled Github Action to push the build to a Netlify build hook.

Read More

Python code to migrate Google Play Music playlists to Spotify

After getting everything downloaded from Google Takeout, I unzipped everything and figured out what we have from the exported playlists. In the unzipped Takeout folder, there is an archive_browser.html file that lists all of the stuff that was downloaded. To start, I’ll just get my Thumbs Up playlist (which had a nice property in Google Play Music where you could have all of your liked tracks downloaded to your device automatically - I don’t see that in Spotify).

Read More

Importing Google Play Music Playlists to Spotify

Google Play Music is going away. I’ve been a subscriber for a number of years and I liked the service but they are changing it to YouTube Music which I don’t like as much. So I decided to make a change to Spotify. People seem to really like Spotify and I like that they have a Linux client and a decent family plan ($15 per month). All good. Except that I’ve got years of playlists on Google Play Music that I’d like to bring along.

Read More

Hugo page bundles

Something that wasn’t entirely clear to me as I set up this blog with Hugo was the best way to organize blog entries so that they can have images or other content in them. Page Bundles are a good way to do this. They allow you to put content together in a folder to create a single page. I decided to follow a date-based numbering scheme for my posts (I’m not sure if this is the best, but that way, I don’t have to think about it much, I just pick the next number) so to create a new page bundle, the command looked like:

Read More

Building a blog with Hugo

Hugo is a good tool for building simple websites. It’s easy to get started with and has a simple workflow that gets out of the way for ongoing updates. Essentially, I followed the steps outlined in the Quick Start and applied the ghostwriter theme. I decided to host the site on Netlify because it had a simple Github based publication process and was very easy to set up. After I generated the site following the Quick Start, I created a new private Github repo and pushed the site up there.

Read More