Weeknotes: Working on Hap, and working on working

I’m trying out weeknotes as a way to keep track of all the little things that don’t warrant a blog post.

This week has been a balance of working on Hap, and making a start on finding a new contract (hopefully Elixir).

Working on Hap

My current side project is Hap, a real-time monitoring tool for your most important business metrics, built with Phoenix and LiveView.

Before this week, Hap was using numeric IDs in URLs. I knew this wasn’t a long-term solution, but I’d never found an alternative that I like.

Whilst flailing about on the internet conducting research, I came across Probably Unique Identifiers, which I hadn’t even heard of before.

The following code uses the Elixir Puid package, to generate a reasonably short string (fewer than 20 characters), with a 1 in a trillion chance of collision. Good enough for a project that will probably only ever be used by me.

defmodule Hap.Helpers.Slugger do
  use Puid, chars: :alphanum, risk: 1.0e15, total: 20.0e6

  @doc """
  Generates a random slug.
  @spec generate_random_slug() :: String.t()
  def generate_random_slug(), do: generate()

Of course, the moment I finished implementing this, I stumbled across Universally Unique Lexicographically Sortable Identifiers . Quite the mouthful, but very interesting. There’s even an Ecto package which allows you to use ULIDs as primary keys, much as you would UUIDs.

Something to look into further, when I have the time.

Working on working

The other big task of the week was making a start on finding work. As ever, there are two main hurdles to overcome:

  1. My “portfolio” and resumé are outdated. You have to look very closely to see that I’ve written any Elixir, and it’s all I’ve done for the last two years.
  2. Like any self-respecting introvert, I hate anything that could be considered “networking”.

As such, I’ve mostly done things that could be charitably described as proxies for finding work. Blogging, updating my GitHub… anything that doesn’t require me to contact people I don’t already know. You can’t rush these things.


Git is my hub

Somewhere along the line, GitHub became my main online “social” presence. Technically I’m also on LinkedIn and Mastodon, but I actively dislike the former, and I haven’t figured out what (if anything) to do with the latter.

As such, I decided it was time to Marie Kondo my GitHub, starting with the profile README. This inevitably led me down the rabbit hole of “best custom GitHub READMEs”, and boy does that hole go deep.

Feel free to mentally insert your own Jeff Goldblum Jurrasic Park GIF here.

Making Happy Stack public

As part of my GitHub spring clean, I open-sourced a couple of private repositories, including Happy Stack.

Happy Stack was a SaaS app built on Laravel, which was going to make me rich. I even blogged about it, twice. Surprisingly this bare-minimum effort was not enough to ensure its success.

Start now, edit later never

At the start of the week, I realised I’m reading 7 non-fiction books, which is functionally equivalent to not reading any non-fiction books. I decided to focus on one at a time, starting with “Start Now, Get Perfect Later”, by Rob Moore.

The author is overly fond of trite sayings, so allow me to review his book in kind: all filler, no killer.

Next up is “Company of One”, by Paul Jarvis.

The DIYson Lamp just keeps getting better

One of my favourite “maker” projects on the internet, the DIYson Lamp, scaled new heights this week.

If you enjoy watching smart people solve interesting problems, check out the most recent video. Then go back and watch all the others.

The future will be televised

Speaking of watching smart people solve interesting problems, I’ve been building Hap live on stream this week, and it’s been anything but. Stream brain is a real thing.

The obligatory AI story

AI has been in the news a lot this week, thanks to the botched Google Bard launch, and the increasingly bizarre behaviour of Microsoft’s Bing bot.

I got to experience the failings of our AI overlords firsthand, when I tried out ProfilePicture.ai. The results were mixed, to say the least.

The vast majority were downright terrible, several were sort of okay but had a disturbing uncanny valley feel, and a few were just downright bizarre. The AI also thinks I should have a lot more hair. Stop judging me, machine.

I’ll leave you with one of my favourites. Further evidence that AI just can’t do hands.

AI generated image with bizarre hands

You have not been a good user. I have been a good Bing.

Sign up for my newsletter

A monthly round-up of blog posts, projects, and internet oddments.