41554 blogs ยท [ { "id": "01a087e5-81d1-724a-80e6-1cb0cd3dd841", "title": "MicroLighter is Living Span-Free In My <head>", "url": "https://www.steele.blue/microlighter/", "published_at": "2026-08-30T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0ce34afa5", "title": "My house alerts me when my cat climbs into the ceiling", "url": "https://www.steele.blue/ceiling-cat-presence-detection/", "published_at": "2026-04-10T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0ceaa19c7", "title": "The Year Of The Linux Desktop (for fitness games)", "url": "https://www.steele.blue/linux-desktop-zwift-beat-saber/", "published_at": "2026-01-25T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0cef53bc6", "title": "Hacking custom GIFs onto an LED Mask with mitmproxy", "url": "https://www.steele.blue/hacking-led-mask-mitmproxy/", "published_at": "2025-12-01T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0cf7e343f", "title": "Keep Your Running Cadence With a Garmin Music Playlist", "url": "https://www.steele.blue/running-cadence-playlist/", "published_at": "2025-09-19T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d05b8b72", "title": "Thank Java for Better JavaScript Dates", "url": "https://www.steele.blue/java-script-dates/", "published_at": "2025-04-15T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d0aa4bb9", "title": "This blog's comments are powered by Webmentions", "url": "https://www.steele.blue/webmentions/", "published_at": "2025-01-19T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d0df4cac", "title": "From Gatsby to Eleventy", "url": "https://www.steele.blue/gatsby-to-eleventy/", "published_at": "2024-11-25T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d1a59768", "title": "Side projects should be fun", "url": "https://www.steele.blue/side-projects-should-be-fun/", "published_at": "2024-04-28T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d1b011e0", "title": "Mutation Testing with StrykerJS", "url": "https://www.steele.blue/mutation-testing-with-strykerjs/", "published_at": "2024-04-21T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d1f33a64", "title": "My favorite water bottles", "url": "https://www.steele.blue/my-favorite-water-bottles/", "published_at": "2024-03-24T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d2842f05", "title": "Web Push is almost usable with iOS 17", "url": "https://www.steele.blue/web-push-ios17/", "published_at": "2023-09-21T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d2ba5689", "title": "I wired up my bike's GPS to order me pizza during a gravel race ๐Ÿ•", "url": "https://www.steele.blue/geofence-pizza-ordering/", "published_at": "2023-09-10T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d2d6f7af", "title": "Running a Playwright script on AWS Lambda", "url": "https://www.steele.blue/playwright-on-lambda/", "published_at": "2023-09-09T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d2e7ffb3", "title": "Overly Complicate Starting Your Vehicle, Using Home Assistant, an ESP8266, and a Spare Car Fob", "url": "https://www.steele.blue/esp8266-chevy-bolt-fob-homeassistant/", "published_at": "2023-07-02T00:00:00+00:00" }, { "id": "01a087e5-81d1-724a-80e6-1cb0d398a767", "title": "Generating Custom OpenGraph Cards with Gatsby and the 11ty Screenshot Service", "url": "https://www.steele.blue/gatsby-opengraph-11ty-screenshots/", "published_at": "2023-03-13T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac2a614de", "title": "Keeping your Fediverse followers when moving Owncast servers", "url": "https://www.steele.blue/moving-owncast-followers-fediverse/", "published_at": "2023-03-12T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac366286d", "title": "Running Owncast with Hardware Acceleration on a Raspberry Pi 4", "url": "https://www.steele.blue/owncast-raspberry-pi-4/", "published_at": "2023-03-05T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac3850d64", "title": "Vite is Neat", "url": "https://www.steele.blue/vite-is-neat/", "published_at": "2023-01-31T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac4411cc7", "title": "Serverless Bike Tracking with a SPOT Tracker, AWS Location + Friends", "url": "https://www.steele.blue/serverless-bike-gps/", "published_at": "2022-10-10T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac4cd87ce", "title": "ACEing Ocarina of Time", "url": "https://www.steele.blue/sgdq/", "published_at": "2022-07-11T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac56caa48", "title": "Advent of Code as Soulcraft", "url": "https://www.steele.blue/advent-of-code/", "published_at": "2021-12-26T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac62f326b", "title": "Gravel Worlds - Long Voyage", "url": "https://www.steele.blue/gravel-worlds/", "published_at": "2021-08-23T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac67d63e5", "title": "Making a Raspberry Pi Photo Booth with Pibooth, NeoPixels, and Giant Buttons", "url": "https://www.steele.blue/photo-booth/", "published_at": "2021-08-17T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac69b1fea", "title": "3 Things I Learned Trying out the JavaScript Temporal API", "url": "https://www.steele.blue/js-temporal/", "published_at": "2021-08-11T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac6babdc5", "title": "Vaccinated", "url": "https://www.steele.blue/vaccinated/", "published_at": "2021-03-11T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac6f5a5bf", "title": "Green Screen Zwifting with retroreflective fabric", "url": "https://www.steele.blue/zwift-greenscreen/", "published_at": "2021-01-11T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac7ab5f59", "title": "Getting the PPPoE Credentials from your C4000XG without calling CenturyLink", "url": "https://www.steele.blue/c4000xg-ppoe-password/", "published_at": "2020-08-24T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac84e97bc", "title": "Setting up a Livestream with Owncast", "url": "https://www.steele.blue/livestream-setup/", "published_at": "2020-08-17T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac89facb3", "title": "Indieweb Livestreaming your Wedding with Owncast", "url": "https://www.steele.blue/indieweb-wedding-livestream/", "published_at": "2020-08-12T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac8d4e970", "title": "Maybe mashups in 2020 are just Jamstack sites", "url": "https://www.steele.blue/jamstack-mashups/", "published_at": "2020-07-06T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ac98f0e19", "title": "Secret Strava", "url": "https://www.steele.blue/secret-strava/", "published_at": "2020-06-15T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83aca267ce4", "title": "and Renderless Web Components", "url": "https://www.steele.blue/renderless-web-components/", "published_at": "2020-05-04T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83acaf0ae3c", "title": "Going Dark (Mode)", "url": "https://www.steele.blue/dark-mode/", "published_at": "2019-10-14T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83acb34a75f", "title": "Building Fast, Tiny GitHub Actions with Go and Docker", "url": "https://www.steele.blue/tiny-github-actions/", "published_at": "2019-09-23T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83acbb9671d", "title": "Why I Built Blumhouse to Purge My Twitter History", "url": "https://www.steele.blue/blumhouse/", "published_at": "2019-03-20T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83acbba994a", "title": "Toolchainless", "url": "https://www.steele.blue/toolchainless/", "published_at": "2019-02-26T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83acc8bde20", "title": "Web Components Aren't Weird Anymore", "url": "https://www.steele.blue/web-components-arent-weird-anymore/", "published_at": "2018-08-08T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83acd7c09ae", "title": "Rube Goldberg Machines", "url": "https://www.steele.blue/rube-goldberg-youtube/", "published_at": "2018-04-16T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ace29c8bc", "title": "Welcome to RSS Club", "url": "https://www.steele.blue/rss-club/", "published_at": "2018-04-15T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83aceb568e9", "title": "JavaScript Gardening with the Particle Photon", "url": "https://www.steele.blue/pi-gardening/", "published_at": "2018-03-18T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83acf42a694", "title": "The Neverending Side Project", "url": "https://www.steele.blue/neverending-side-project/", "published_at": "2018-02-06T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83acfecf0e2", "title": "Light Up Your Bike with Web Bluetooth and StencilJS", "url": "https://www.steele.blue/web-bluetooth-bike-leds/", "published_at": "2017-12-17T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad024bb47", "title": "Every Java Developer Should Learn TypeScript", "url": "https://www.steele.blue/typescript-for-javaers/", "published_at": "2017-11-01T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad0429dc4", "title": "Marginal Revolutions", "url": "https://www.steele.blue/marginal-revolutions/", "published_at": "2017-03-26T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad13e5fd0", "title": "Web Bluetooth Is Your New Squeeze", "url": "https://www.steele.blue/web-bluetooth/", "published_at": "2017-03-13T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad1aa498e", "title": "Building Custom Elements That Work With AngularJS 1.x and Angular", "url": "https://www.steele.blue/custom-elements-angularjs/", "published_at": "2016-09-08T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad263ac67", "title": "How to Run a Board Game Library At Your Conference After-Party", "url": "https://www.steele.blue/conference-board-games/", "published_at": "2016-08-28T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad294a1a8", "title": "The Languages Which Almost Became CSS (Recap)", "url": "https://www.steele.blue/languages-almost-css/", "published_at": "2016-07-06T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad3084aef", "title": "Upgrading to Angular 2 using ngUpgrade", "url": "https://www.steele.blue/upgrading-to-ng2-with-ngupgrade/", "published_at": "2016-04-27T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad3a2fc83", "title": "Reacting to Heart Rate and Bike Sensors With RxJS", "url": "https://www.steele.blue/reactive-programming-bike-sensors/", "published_at": "2016-01-03T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad3fc28e3", "title": "Driving an LED Light Strip with Heart Rate and Bike Sensors", "url": "https://www.steele.blue/raspberry-pi-bike/", "published_at": "2015-12-12T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad48b5079", "title": "Bringing ArnoldC to JavaScript", "url": "https://www.steele.blue/arnoldc-to-js/", "published_at": "2015-05-12T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad4c25216", "title": "Source Maps in 2015", "url": "https://www.steele.blue/source-maps/", "published_at": "2015-05-11T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad57f7806", "title": "We're hosting a JavaScript conference!", "url": "https://www.steele.blue/announcing-nejsconf/", "published_at": "2015-02-15T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad612fb14", "title": "Building a Handcrafted IR Blaster for Arduino-Powered Bike Lights", "url": "https://www.steele.blue/arduino-bike-lights/", "published_at": "2014-12-14T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad63272a8", "title": "Responsive Images using and srcset/sizes", "url": "https://www.steele.blue/responsive-images-picture-srcset/", "published_at": "2014-07-01T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad6356092", "title": "Responsive Web Design Workshop at Interface", "url": "https://www.steele.blue/responsive-web-design-workshop/", "published_at": "2014-05-13T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad690e02f", "title": "Hardware is the new Geocities", "url": "https://www.steele.blue/hardware-is-the-new-geocities/", "published_at": "2014-01-16T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad6ec9882", "title": "Go(lang) for Broke", "url": "https://www.steele.blue/golang-for-broke/", "published_at": "2013-12-05T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad767458e", "title": "Clickbait HTTP Status Codes", "url": "https://www.steele.blue/clickbait-status-codes/", "published_at": "2013-11-20T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad7b2d053", "title": "A fresh coat of paint", "url": "https://www.steele.blue/a-fresh-coat-of-paint/", "published_at": "2013-10-20T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad84480b6", "title": "Exploring the Device APIs", "url": "https://www.steele.blue/exploring-the-device-apis/", "published_at": "2013-08-06T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad9153044", "title": "Diving into the Device API", "url": "https://www.steele.blue/diving-into-the-device-api/", "published_at": "2013-06-19T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ad9cf66fc", "title": "Unit Testing JavaScript when you're Afraid of JavaScript", "url": "https://www.steele.blue/unit-testing-javascript-when-youre-afraid-of-javascript/", "published_at": "2013-03-16T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ada1e6995", "title": "What Zelda Taught Me About Front End Engineering", "url": "https://www.steele.blue/what-zelda-taught-me-about-front-end-engineering/", "published_at": "2012-12-06T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adad04099", "title": "Unit Testing in JavaScript with Jasmine", "url": "https://www.steele.blue/unit-testing-in-javascript-with-jasmine/", "published_at": "2012-10-21T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adba4283e", "title": "Town Tester - How well does your city unit test?", "url": "https://www.steele.blue/town-tester/", "published_at": "2012-09-18T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adc07ee2c", "title": "Zen and the Art of TDD", "url": "https://www.steele.blue/zen-and-the-art-of-tdd-barcamp/", "published_at": "2012-09-09T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adc956d30", "title": "Lessons Learned from the first Hack Omaha", "url": "https://www.steele.blue/lessons-learned-from-the-first-hack-omaha/", "published_at": "2012-04-19T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adcfc94be", "title": "I have a cameo in The Clean Coder", "url": "https://www.steele.blue/i-have-a-cameo-in-the-clean-coder/", "published_at": "2011-11-04T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83add9668b3", "title": "Test-driven source code formatting", "url": "https://www.steele.blue/test-driven-source-code-formatting/", "published_at": "2011-05-02T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adda2301f", "title": "Scramble Squares puzzle game solver", "url": "https://www.steele.blue/scramble-squares-puzzle-game-solver/", "published_at": "2010-12-26T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adda24157", "title": "Omaha Public Library card symbology", "url": "https://www.steele.blue/omaha-public-library-card-symbology/", "published_at": "2010-01-28T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adde5d8f5", "title": "Now this is a story all about how my bike got flipped, turned upside down", "url": "https://www.steele.blue/bike-recovered/", "published_at": "2009-10-18T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ade248e59", "title": "The King of Kong - A Fistful of Inaccuracies", "url": "https://www.steele.blue/the-king-of-kong-a-fistful-of-inaccuracies/", "published_at": "2008-02-18T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adee471ce", "title": "Inelegant code affects your reputation", "url": "https://www.steele.blue/inelegant-code-affects-your-reputation/", "published_at": "2008-01-21T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adf0c9d96", "title": "Unintended consequences of the Internet", "url": "https://www.steele.blue/unintended-consequences-of-the-internet/", "published_at": "2007-11-27T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83adf6cf7e0", "title": "Screen scraping Google Spreadsheets exported as HTML", "url": "https://www.steele.blue/screen-scraping-google-spreadsheets-exported-as-html/", "published_at": "2007-11-03T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ae043c778", "title": "UI designs in Leopard that I really hope grow on me", "url": "https://www.steele.blue/ui-designs-in-leopard-that-i-really-hope-grow-on-me/", "published_at": "2007-10-29T00:00:00+00:00" }, { "id": "01a087e5-81d2-70be-a0c2-f83ae0698f01", "title": "The Thatcher Illusion", "url": "https://www.steele.blue/the-thatcher-illusion/", "published_at": "2007-09-23T00:00:00+00:00" } ] posts Claim your blog
Back to steele.blue
Blog ยท corpus.blog/blogs/steele.blue/posts

steele.blue

steele.blue

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010

2009

2008

2007