RSSAmplifier

Blog

slash blog

Recent content on slash blog

/RSS feed ↗35 posts

Latest posts

Open invite: play chess with me

In the past month I’ve taken an interest in improving my chess. I learned the basics and played perhaps a few dozen games in school over a decade ago but I’ve otherwise not given it any attention since. I know that sharing the journey with others makes it that much more likely that I’ll build a successful habit so if you’re learning chess and fancy playing a weekly game or…

It's going to happen

It’s a matter of when , not if . And it’s going to be great .

til: FaceTime has built-in screen share and remote control

A combination TIL/PSA: since iOS 18 shipped last year FaceTime has both screen sharing and remote control functionality available if both sides are sufficiently up to date. I’ve found this to be a huge help when providing remote tech-support to family and friends. At the very least it spares folks of the challenge of having to explain all the relevant detail on their screen but it might also…

til: Using `virt-customize` to modify VM images

This week I was working on a QEMU-based integration test suite and needed to customize the base QCoW2 images shipped by the Ubuntu project for use in my test harness. Previously I would have treated this in a similar manner to EC2 and AMIs: launching a VM, SSH’ing into it and applying tweaks, and cloning it to create our desired VM image. Unsurprisingly there is a better way in the form of…

Game recommendation: Spilled!

tl;dr Spilled! is the prototypical small, relaxing, cute game. You clean up ocean waste to reveal lovely pixelated landscapes and creatures below, accompanied by a wonderful soundtrack. Runs excellent on Steam Deck - well worth your $6 entry. Separately, check out the noclip_2 interview with the developer Lente on her life and journey to game dev (she developed Spilled! while living on a canal…

til: Adding Tailscale to OpenWrt backups

Very briefly TIL that, if like me you happen to run Tailscale on your OpenWrt device, you can extend OpenWrt’s backup/restore script to include its Tailscale state allowing its identity to persist through upgrades or restore procedures. To do so, add a new line with /etc/tailscale/ to /etc/sysupgrade.conf . This directs OpenWrt to include the contents of this directory in its backup. NB: The…

til: Making self-contained Python executables using PyInstaller

In the last year I have developed a strong interest in simracing as a hobby. We are currently living in a golden age of simulated racing with many great titles to choose from, but my preferred one is iRacing . Alongside iRacing’s official matchmaking races there exists a large and healthy ecosystem of community-operated league races. These leagues run the spectrum from extremely competitive…

til: You can `git clone` Github gists

tl;dr Every Github Gist can be accessed as a Git repository over either HTTPS via their URL or via SSH using the keys you have registered with Github. Github Gist clone menu showing 'clone via HTTPS' and 'clone via SSH' options I enjoy using gists to share example code but when multiple files are necessary it can be very cumbersome to copy and paste them one at a time and re-create their metadata.…

til: NVIDIA DLSS 4 Multi Frame Generation requires HAGS

I recently acquired a 50 series NVidia GPU and was unable to get DLSS 4 multi frame gen working in any of the supported titles before realizing that HAGS (Hardware-Accelerated GPU Scheduling) is required to be enabled for it to function. If you are having trouble getting DLSS 4 to work with a supported GPU make sure that you have not accidentally turned HAGS off in the past like me. Hopefully this…

til: Using htmltest to find broken links in your blog

While working on my blog I discovered that some of the image and link sources in different posts had become broken without me noticing. Outside of “hugo says OK” I don’t have any other validation running on my blog so I decided to look for something that could lint the rendered output for dead links and other issues. I tried a number of different tools but ended up using htmltest…

til: Addressing S3 URIs with Pandas using s3fs

Another short “today I learned” post from the analytics mines. If you have previous experience writing any form of data munging or analytics tasks then you have almost certainly encountered Python, Pandas, and AWS S3 in some combination. These jobs usually follow the structure: download the files from S3. deserialize them into Python objects & create Pandas dataframes. perform…

til: About the `/.well-known/change-password` URI

I attended BSidesSF this year for the first time in a while and saw Aalaa Kamal Satti and Yuru Shao of Pinterest speak about their efforts on password security for both Pinterest’s consumer and business users . During their talk they spoke about implementing support for the /.well-known/change-password URI that allows websites to integrate with the password managers that ship within most…

My Favourite Pen and Paper

One constant throughout my past decade has been the presence of a work and personal journal on my desk. I journal for a number of different reasons: to capture contemporaneous notes and details about meetings and life to reference later, to organize and document the different bits of projects and to make them legible into plans, and to leave myself instructions on how to repeat tasks in the future…

til: A simple ETL task in Airflow using PostgresHook

This week at work I had the need to build a small ETL (Export, Transform, Load) process to move some data from PostgreSQL database A (a primary relational database used by our application to serve customer traffic) to PostgreSQL database B (a back-of-house instance used to perform metering and other usage analytics). We already use Apache Airflow to orchestrate the metering tasks, data sync and…

Secure Developer Podcast EP 111 - Alignment, Agility, and Security

I recently had the chance to join Guy Podjarny of Snyk to record an episode of The Secure Developer podcast . We spoke about my time at Intercom and my winding journey into security engineering starting from the product side. You can find a link to the recording and a full transcript of the episode .

Share early, share often

Last year I started making a more deliberate effort to make digital memories of everyday life in the form of audio recordings, photos, and video. While I’ve long been a fan of taking a camera with me on trips, the months-long absences of any photos in my Lightroom library made me realize how much every day life I was neglecting to record. As a byproduct of this new habit I’ve ended up…

Making a More Accessible Web

Web content accessibility has been on my mind recently as I watched one of the other engineering teams at Intercom in San Francisco undertake to make the Intercom Messenger accessible and compliant with the Web Content Accessiblity Guidelines (WCAG) 2.0 Level AA . Despite the continued growth and evolution of the internet it has yet to really live up to its true potential as universally accessible…

Current projects

The following is a list of some of the projects that I’m currently working on and about which I hope to write periodically on the blog. Eurorack Modular Synthesis (as written about in making again SatNOGS ground station an open hardware/software satellite ground station You might also know me from such projects as: SunshineSF - a public resource to make San Francisco Sunshine Ordinance…

Making again

This is an extension of my last post: A brief musical journey , as well as a number of stories which I’ve been posting on Instagram in recent days. As part of my of my adventures in the world of producing elecronic music I came across the fascinating world of modular synthesis. Modular synthesizers are composable musical instruments which are built up of many discrete modules, almost like…

A brief musical journey

I’m back! It’s been a while but I’ve decided to dust off my old blog and to start trying to write some more regular updates as to what I’ve been doing these last 18 months. For those of you who I’ve not seen in a while it’s been a busy time. One of the primary things I’ve been spending time at recently has been all things music, in particular both learning…

About Me

My name is Patrick O’Doherty. Originally from Dublin Ireland, I live in San Francisco’s Inner Sunset neighborhood with my wife Ariane and our wonderful rescue dog Sophie. I’m a big fan of making of all types, and this blog hosts a smattering of some of the things that I’m working on. I hope you find it both entertaining and educational. You can find me on all the usual…

Hugo

This weekend I took the opportunity of some downtime and the fact that I’ve deployed a new primary VPS (with the wonderful iocoop ) to migrate my blog source to use hugo , leaving behind the Octopress setup I’ve had for a while. Why? Well I’ve been on a small Go kick recently at $DAYJOB and elsewhere and having played with some of the other utilities developed by spf13 such as…

No more snowflakes

Administrating a single server that’s your sole responsibility isn’t that much of a hassle but anyone who’s shared this responsibility with others or inherited machines manually configured by others knows without documentation will quickly tell you it’s a pain to work backwards from the finished server and maintain it going forward. Getting bitten by this once or twice is…

Running, reading, blue hair, and orbital mechanics

I’ve lapsed yet again in the weekly writing requirement of the Iron Blogger project at Noisebridge and so feel compelled to give a core-dump type post to recount the happenings of the last two weeks. I made a real breakthrough in my running in the last two weeks, after picking out some advice from /r/running on Reddit. I was absentmindedly browsing looking for training plans when I came upon…

Rust barcode scanner v0.1, Freecon, and exercise

This week I finished the first version of the barcode scanning flow I’ve been working on for Noisebridge . It’s a very simple Rust CLI that listens for input from a specified input device, and outputs only valid ISBN13 codes that it receives. Today I’ll work on a small Go program to take the ISBN numbers, looks them up and records the books in a PostgreSQL database. The next step…

Breaking radio silence

It’s been a while since I’ve had the opportunity to sit down and write a nicely thought out blog post, but in the complete absence of any rhythm in recent postings I figured I’d write down some thoughts about the last 2 weeks. I’ve been making slow (mostly due to time commitments), but good progress on the USB barcode scanner project I’ve been hacking on for…

Linux Fest North West & Hackers on a Train recap

I’ve been neglecting my weekly blog post the last few weeks, but I’m back! The last few weeks and weekends have been busy with fun stuff. The workshop I gave on Data Security for Journalists at the CPJ conference was really wonderful fun. It was great to meet Cyrus and Micah and hang out with them teaching journalists how to use security tools to protect both themselves and their…

Thoughts on teaching crypto to journalists

Last Saturday I gave a workshop on Data Security to a small group of Bay Area journalists at Noisebridge. The workshop was a small-group test of the same material that’ll be used at a larger workshop I’m helping to lead at the Committe to Project Journalism’s SF conference later this month. Overall it was a great success and a really awesome experience, with 4 journalists walking…

Cycling bikes is fun

I started riding my bike to work the other day, and it’s very enjoyable. I’ve been feeling a bit sedentary in recent times, so a more active morning and evening commute is a really welcome change. I’d kinda forgotten that nice feeling you get post-exercise, and it’s made me realise that I should do this more often. I find it easy to fill time with non-exercise related…

Anti-pattern checkin week #3

It’s been 3 weeks since Noisebridge’s Iron Blogger kicked off. While I’m happy to have kept myself to a schedule of writing at least once a week, I’m still trying to beat the anti-pattern of scrambling to write something last thing on a Sunday evening. Thankfully, I have a few things I’m working on that I’d like to write about in more detail. I’m hoping to…

Don't lock your data in proprietary products: Or, why I'm replacing my Drobo with a FreeNAS box

PSA: Don’t trust your valued data to proprietary products. When they break you’ll be up a proverbial creek without a paddle. The Drobo FS honeymoon period Back in 2011 I bought a Drobo FS with the intention of using it as a home backup solution. The features it offered were exactly what I was looking for: some RAID-like setup promising single parity as well as a neat ability to setup…

Iron Blogger: It begins

I finally, this past weekend, got around to implementing the Iron Blogger group that I’d been hoping to start at Noisebridge before Christmas (better late than never). This post is actually the first of my weekly obligations. Watch this space for more blogging. Things are going well. Life is busy on many fronts. The plans that I had for Linux Fest North West and, more specifically Hackers on…

Linux Fest North West - Hackers on a train

I realise it’s been a while since I last posted. I’ve had some ideas for meaty blog posts but I’ve found them to be very difficult to shape into something I actually want to publish. The solution I think is to post more frequently about lighter material in a bid to get the hang of this blogging thing. Just before Christmas, Torrie took a long train ride from Jack London Square in…

2015: Resolutions

As I write this I’m back in Dublin having been at 31C3 these last few days. It was a fantastic time meeting a whole range of new interesting people, as well as getting to know better the wonderful friends that I’ve made this year. Running into the end of the year I was feeling a little burnt out, mostly due to fire-fighting interpersonal drama in Noisebridge. I was very much looking…

Reading mailing list archives with Python: Noisechain Pt. 1

Inspired by the twitter account “Shit Noisebridge says” I set about recently to script together that trains a Markov chaina on the complete archive of the noisebridge-discuss@ mailing list to create a rival account “Shit noisebridge probably says”. It’s not yet complete but one useful thing to have fallen out of this project already is a script that makes it easy to…