Sign in

Rob

@r0b.io
105 followers 120 following 611 posts

Research software engineer @ Open Lab, HCI, design, infrastructure, stroopwafels. Maker of web stuff, tinkerer of apps & player of video games. www.r0b.io

PostsRepliesMedia
Rob @r0b.io · 13/07/2026
❤️
000
Rob @r0b.io · 21/05/2026
I could only find raspberry ..
110
Rob @r0b.io · 02/02/2026
Got myself a lil treat 😍
010
Rob @r0b.io · 23/12/2025
Fine additions to my collection
000
Rob @r0b.io · 20/12/2025
Some pics from today
010
Rob @r0b.io · 17/12/2025
I can’t decide between these two. Help me pick!
210
Rob @r0b.io · 04/12/2025
This is the only thing it says, I had to open the developer networking tab to see the actual error
010
Rob @r0b.io · 03/12/2025
Current favourite Pebble face + new diver strap — cc @ericmigi.com
A white Pebble watch with a bright orange diver strap with a black and white Casio-esk watch face
3121
Rob @r0b.io · 25/11/2025
So good!
130
Rob @r0b.io · 22/11/2025
New watch day!
040
Rob @r0b.io · 06/11/2025
Hardware upgrades 👀
A UniFi UDR7 sat between house plants and a brass lamp
010
Rob @r0b.io · 05/11/2025
Love a regex in the morning
screenshot of a regex: /^(?<key>.*?)="?(?<value>.*)"?$/gm
010
Rob @r0b.io · 31/10/2025
I had a CD that would not rip on Windows/iTunes and sounded awful when played. I gave it a last chance from my home server which happened to have an CD drive in it and it worked! Feels pretty cool to be doing it from the CLI too. The CD drive does sound like it's on its last legs though 😅
Terminal output of a the progress of ripping a CD
000
Rob @r0b.io · 11/10/2025
I’ve been pootling around Manchester today. Last photo was my hotel last night 😍
120
Rob @r0b.io · 08/10/2025
It lives!
040
Rob @r0b.io · 01/10/2025
Got bored and made a watch face — time.r0b.io
010
Rob @r0b.io · 24/09/2025
It’s been a while
110
Rob @r0b.io · 20/09/2025
000
Rob @r0b.io · 19/09/2025
Progress update
110
Rob @r0b.io · 13/09/2025
100
Rob @r0b.io · 13/09/2025
It’s happening 👀
130
Rob @r0b.io · 01/09/2025
Buy a new PC NAS case or … rubber bands to dampen the HDDs? My wallet is saved … for now
000
Rob @r0b.io · 25/08/2025
Beach, miscellaneous
010
Rob @r0b.io · 21/08/2025
Little pre birthday present to myself 👀
210
Rob @r0b.io · 25/07/2025
Managed to get an extra 170 nectar points just getting the things I went into get 🎉
000
Rob @r0b.io · 22/07/2025
I mean this is just Star Wars porn, I’m kinda here for it. So many ridiculous bits, callbacks & tropes, it’s great and silly and Star Wars. Filmic content is low and I think a lot of things would be lost on you if you didn’t know all the canon though. #Films themoviedb.org/movie/181
The movie poster for Star Wars: The Rise of Skywalker, 2019 - ★★★½
010
Rob @r0b.io · 19/07/2025
Got a bit sidetracked needing some semi-secure random passwords and ended up making a quick website 👀 passwords.r0b.io #Web #HTML #CSS #JavaScript
Screenshot of a web-app with buttons to generate different types of password
010
Rob @r0b.io · 12/07/2025
I have a new Ethernet port on the wall! 🎉
020
Rob @r0b.io · 06/07/2025
I tightened up this paintwork line and it has brought me exceeding amounts of joy
020
Rob @r0b.io · 05/07/2025
Being an adult is getting fun tools from Screwfix but also getting some Lego from Sainsbury’s on the way home
130
Rob @r0b.io · 02/07/2025
The "createLock" method is quite simple too. It returns null when the lock was not established. If it can be locked, it writes the value to true and returns an object with the special "dispose" method.
dark-themed JavaScript code reading:

export function createLock(ref: Ref<boolean>) {
  if (ref.value) return null;
  ref.value = true;
  return {
    [Symbol.dispose]() {
      ref.value = false;
    },
  };
}
110
Rob @r0b.io · 02/07/2025
Explicit Resource Management in #JavaScript is very useful for creating semaphores/locks around code. Here's one I just wrote with #vue There's a ref that contains the lock value, the template binds to "disabled" on the form/button below.

Alt text

dark-themed JavaScript code reading:

const isWorking = ref(false);

async function submitAnnotationLayer(e: Event) {
  using lock = createLock(isWorking);
  if (!lock) return;

  const data = new FormData(e.target as HTMLFormElement);
  console.log("create annotation", data);

  await apiClient.maps.createAnnotationLayer(props.mapId, {
    name: data.get("name") as string,
    geometry: { type: "FeatureCollection", features: [] },
  });
}
120
Rob @r0b.io · 30/06/2025
Current state
Tv watching the Always Sunny episode where they move to the suburbs. The subtitles read “Boy, sure is a hot one today, huh?”
020
Rob @r0b.io · 27/06/2025
This note is getting longer and longer, I think it might have to be a full blog post at some point
Screenshot of a note titled "Notes on notebooks"
100
Rob @r0b.io · 26/06/2025
Back to ui dev today, creating some map interactions
000
Rob @r0b.io · 23/06/2025
(excluding the hslToHex function) the JavaScript is pretty consise! There is a "Thing" API to send commands to the ESP and you use regular standards APIs like setInterval
000
Rob @r0b.io · 23/06/2025
I worked on our sign again today, it's almost there! Now you can upload a JavaScript file to animate the LEDs
230
Rob @r0b.io · 23/06/2025
They did foreshadow Leia’s force sensitivity! Or was it edited in? #Films themoviedb.org/movie/1892
The movie poster for Return of the Jedi, 1983
000
Rob @r0b.io · 21/06/2025
I know #Films themoviedb.org/movie/1891
The movie poster for The Empire Strikes Back, 1980
000
Rob @r0b.io · 21/06/2025
notebook update — they arrived

Alt text

4 notebooks on a desk, a larger A5 Green and yellow one, and two smaller field notes graph and dot ones
110
Rob @r0b.io · 15/06/2025
I’ve been having a play with Dumify on #iOS to make a minimal Home Screen. It’s really nice to name things more like tools than apps. You add apps/shortcuts in their app, then use their widgets on your home screen after removing other apps.
100
Rob @r0b.io · 11/06/2025
Adding a #PWA to your homescreen on #ios26 is as hard as ever, there are now 4 steps to do it! - press "..." - pick "share" - another "..." - [scroll] - "Add to homescreen" 🥵
110
Rob @r0b.io · 10/06/2025
COOKIES
130
Rob @r0b.io · 08/06/2025
Lovely to rewatch, -0.5 for CGI changes. So cool to see the origin of what is now a massive franchise #Films themoviedb.org/movie/11
The movie poster for Star Wars, 1977 - ★★★★½
000
Rob @r0b.io · 07/06/2025
Great to rewatch after Andor, it fit with the show a lot more than I was expecting but there were bits that didn’t quite work. Like seeing andor unsure about sniping Gailen after things like the events on Gorman. Such a fast pace compared to the show too, if the show took this on it could easily b
The movie poster for Rogue One: A Star Wars Story, 2016 - ★★★★
100
Rob @r0b.io · 05/06/2025
I made my own code theme and I lowkey love it
JavaScript code with a vibrant green-purple syntax highlighting
020
Rob @r0b.io · 04/06/2025
I had a hack around with my GPS recorder app, I’ve been using it a lot in the background but haven’t had any time to making it into an actually usable app.
App screen shot of GeepyX, there is a new “live” section showing time elapsed, distance, altitude and elevation gainedThe same view but in a live activity in the iOS lock screen A collapsed icon and distance around the iOS Dynamic Island
110
Rob @r0b.io · 26/05/2025
nice
unit test output ending with the line: ok | 69 passed
000
Rob @r0b.io · 22/05/2025
I don't see what else I could have called this variable? #JavaScript
code reading:

export const arnie = getTerminator({
  timeout: appConfig.env === "development" ? 0 : 5_000,
});
000
Rob @r0b.io · 16/05/2025
Graffiti walk
010