TLDR: Click here for code to implement a lightweight, resilient clickable YouTube preview. YouTube videos are expensive to load on a web page. This compounds if you want your page to display many v…| SOS
I am a software engineer and manager from Ireland. I spent 7 years working in Ireland from 2003 – 2010, then ten years in Silicon Valley from 2010 to 2020. In California I spent about 6.5 years a…| SOS
Working with very large JSON files (20MB+) using online tools tends to be a crashy affair. Whether you’re looking to format or search them, all the tools I found just crash. I found myself having to work with huge JSON files recently, so I built a tool specifically optimized for huge JSON files, called Huge … Continue reading Search Huge JSON files on the Web→| SOS
Many years ago (2010 or so) I released an app called Flickr Addict for Palm WebOS phones, which automatically downloaded beautiful images from the Flickr photography website and changed the phone background image on a regular basis. I wanted to see if I could rebuild that app in the Apple language Swift, which I didn’t … Continue reading Explore Wallpapers for Mac→| SOS
Last month I decided to do a quick fun project as an excuse to try out AI coding tools, called iWittr.com. It’s a fan site for the Kermode & Mayo podcast, which I’ve been listening to for over 10 years. I might do another post about that experience, but this one is about reducing it’s … Continue reading Optimizing iWittr.com to reduce Google Cloud & Vercel costs→| SOS
For a long time in Kidz Fun Art, the tablet app I built, you could draw with a rainbow brush, which is the favourite feature of many people. I noticed my eldest daughter trying to use it in such a way so to only use a subset of the colors and it was really awkward, … Continue reading Custom Gradients in Kidz Fun Art→| SOS
TLDR: Easily keep your NodeJS projects translated in many languages with my JSON AI Translation NPM package. A few months ago I translated KidzFun.art to multiple other languages, using ChatGPT’s AI for the translations. This worked fine when dealing with a blank slate, but I found that every time I wanted to add a new … Continue reading Translate your UI Strings with AI→| SOS
TLDR: Demo is here, Code is here, App is here In Kidz Fun Art, the web app for tablets I’ve built for my kids and hopefully yours, I recently added a nice little feature where you can fill in any area with a linear gradient. It’s highly responsive to the user moving their pen/finger, and … Continue reading Fast Linear Gradient Fills with OffscreenCanvas→| SOS
Over the past couple of years I’ve been building KidzFun.art, an art & education app for my young kids and hopefully yours. The first feature I ever added was simple colouring pages, hand drawn by my lovely and talented wife. However that was a slow and laborious process, and with the advances in AI since … Continue reading Using Dall-E/AI to create kids colouring pages in KidzFun.art→| SOS
Thanks to ChatGPT for this recipe with no stupid SEO in it. Total time to make: 80 minutes if you’re a normal slow chopper of vegetables (like me), 50 minutes if you’re super fast with a knife. For a simple chicken soup with potatoes, you’ll need the following ingredients: 500g (1 lb) chicken breast or … Continue reading Quick chicken soup recipe for sick people→| SOS
In case you’re working with the Origin Private File System on a browser whose dev tools don’t yet support browsing the files (all browsers as of Nov 2023, though Chrome does have an unofficial extension which is nice), then here’s a code snippet you can use to list all the contents of the file system. … Continue reading How to list all files in a browser’s Origin Private File System (OPFS)→| SOS
How to run a clean up script when your NextJS dev server is shut down| SOS
Many years ago, back in 2018, I wrote a tiny NPM package called gcloud-storage-json-upload, which lets you authenticate with Google Cloud Storage and upload a file without needing to install any huge Google SDKs. I recently needed to use it with NextJS to upload Gifs created in my iPad/tablet/browser app Kidz Fun Art (you can … Continue reading Lightweight NextJS example of uploading files to Google Cloud Storage→| SOS
TLDR: Demo is at https://shaneosullivan.github.io/example-canvas-fill/ , code is at https://github.com/shaneosullivan/example-canvas-fill . The Problem When building a website or app using HTML Canvas, it’s often a requirement to support a flood fill. That is, when the user chooses a colour and clicks on a pixel, fill all the surrounding pixels that match the colour of the … Continue reading Instant colour fill with HTML Canvas→| SOS
Bun.js is a new (as of 2023) JavaScript runtime that is still very much in development, with it’s primary focus being on extreme speed. I’ve been following it for a while but until today haven’t had a good excuse to use it. (Edit: There’s some good conversation about this post on Hacker News here) The … Continue reading Using Bun.js as a bundler→| SOS
In 2022 I had the great pleasure to chat with Ida Bechtle (https://twitter.com/BechtleIda) as part of a retelling of the early story of the creation of the React.js JavaScript library (I wrote about this previously here). The documentary is now available to watch for free on YouTube, as is the Q&A session that most of … Continue reading React.js: The Documentary & Q&A→| SOS
In mid-2022 I had a great time taking part in a documentary about the JavaScript framework ReactJS by the good people at Honeypot, along with many wonderful engineers who also played a part in its success. The film focuses on the early years in the life of ReactJS, including before it was open sourced and … Continue reading React.js: The Documentary→| SOS
I’ve built a fun new app for young kids, called Kidz Fun Art. Get it at https://kidzfun.art. I’m a software engineer, but far more importantly I’m the happy dad of two amazing girls, currently 4 and 6 years old. They love to draw, colour in pictures and tell stories, and when I went looking for … Continue reading Kidz Fun Art – Tablet app for kids→| SOS
tldr: I’ve built a multiplayer Sudoku game which you can play at Countdoku.app. Read on if you are interested in the technical details, (they’re cool, honest!) Many years ago I became interested in how to generate Sudoku puzzles efficiently, as a thought exercise. Having solved this fairly well writing a program in Java, I continued … Continue reading Building Countdoku, a multiplayer Sudoku Web app→| SOS
SendGrid.com is a great service for sending emails programmatically, but it also has an InboundParse feature that will call your webhook for any emails sent to your domain. It can be useful to forward these emails elsewhere, e.g. sending support@mydomain.com to your own personal email. There’s not really a good example of how to do … Continue reading Forwarding an email with attachments using SendGrid and Formidable→| SOS
Cloudinary is a fantastic cloud service for storing, serving and transforming images and videos. However the documentation for uploading an image or video from the browser, in a secure fashion, are…| SOS
Shane O'Sullivan's technical blog... really ties the room together| SOS
I’ve been building Kidz Fun Art (web, iPad & Windows) since 2021, so 4 years at time of writing. It’s a tablet optimized application intended to be used by children of all ages R…| SOS