Creează un cont pentru a te abona la acest blog și a-i urmări articolele pe pagina Lectură.
-
Landline phones with Google Homes
Ok Google, call Dad.
-
Meshtastic meets Tomagotchi: Long Range Mesh Radio Network
Dennis (AD6DM) told me about Meshtastic before Defcon 34, so I bought 2 little radios from the merch area to try it out.
-
Makecode Arcade Games on Retropie
My son has been building a game called MONKEY MADNESS GHOULS GHOSTS (beats the initial working name of "w/ dad copy") on Makecode Arcade.
-
Apple Numbers vs Google Sheets
I'm a big fan of spreadsheets for tracking stuff.
-
Serverless Offline Audiobook player
I built Audiobook Player to play local and iCloud audiobooks offline1 without any syncing2 or importing3.
-
Troubleshooting NetworkManager DHCP
After migrating from Debian Bookworm to Fedora Workstation 43, I getting ip addresses from my main network.
-
Campfire lessons: colors, icons, and inputs
Gather around folks, here's what I learned and applied to jch.app from 37signal's "Modern CSS Patterns in Campfire", and the source code from Campfire and Fizzy.
-
Pico CSS notes
Introduction Modules Minimal reset Customization with CSS variables Low specificity defaults Responsiveness Icons Conclusion Introduction A minimalist and lightweight starter kit that prioritizes semantic syntax, making every HTML element responsive and e…
-
December 2025
What I’m learning and building Learning The Easy Way to Pick UI Colors.
-
Reducing Tailwind asset size
I consolidated the form and typography styling I was using across jch.app and reduced the stylesheet bundle size 56% from 156kb to 68k.
-
Quiet, but discoverable
When a new iOS lands, a handful of features are highlighted after the phone restarts.
-
No CSS, No Javascript. Longevity on the web.
Remember CSS Zen Garden?
-
SSL for local Rails development
Works with https://localhost:3000 or https://custom-hostname.local No insecure site warning because certificated is signed by a system trusted CA My goal was to test jch.app serviceworkers with different devices on the same network.
-
Japan 2025
This was our first trip to Japan.
-
Fugit gem: defining recurring tasks for background jobs
Fugit parses cron syntax and various time and date strings.
-
HENRY's Guide to Taxes, Loans, and Cars
I shared my personal experiences with these personal finance topics with r/HENRYfinance.
-
CSS Fragmentation issues with multi column
After reading When and How to Use CSS Multi-Column Layout, I tried to use it for a masonry layout for the jch.app dashboard.
-
Monthly finance night
A tidy home is easier to clean.
-
My computers 2025
The last time I was excited about hardware was 2008, when I spent hard earned Starbucks money to buy a 12" iBook G4.
-
Sourdough
During covid, I ran out of yeast.
-
Popovers and Anchor Positioning
Popover made it into baseline this year.
-
Ruby HTTP Streaming Revisited
This morning I read "You might not need Websockets".
-
iOS Progressive Web App Dialog bug
This was a fun one.
-
Dark mode and RSS
Bit of clean up for the blog.
-
Environmental Hardware Upgrades: iPhone 16e
Apple announced the new iPhone 16e today.
-
Building an accessible search page with progressive enhancements
This article documents what I learned building a search page for stocks, ETFs, and other securities for https://jch.app.
-
Self hosting Rails on a Mac
https://jch.app now runs on a 2016 Macbook Pro with i7-6920HQ CPU @ 2.90GHz, 16GB DDR3 ram, and 2TB SSD.
-
Progressive HTML Currency Input
When entering a money value, I like to see the number in my locale.
-
Things I learned this week
View transitions and Turbo https://jch.github.io/turbo-cancel-view-transition/.
-
Customizing Turbo lifecycle events: iOS swipe view transitions
View transitions became available in Safari 18.
-
Bake-off: It's Performance Week!
tl;dr I spent a week to bring https://jch.app from 3s+ pages to ~150ms at the 99%tile Back again after my earlier rant about deployments this week.
-
Personal project deployment is both harder than easier than ever
Played with kamal for the first time today to deploy my app to a digital ocean droplet.
-
Saving $1,000 in interest using money market funds to pay bills
When interest rates were near 0% between 2008 through 2020, it made a negligible difference to pay bills from checkings or savings.
-
Ruby timezones and testing
I had a test in jch.app which fetched data by date, and kept being off by one day.
-
Managing Rails client side navigation state
tl;dr: Over thought it.
-
Skip tailwindcss build if already running
This speeds up tests and other rake tasks.
-
Rails 5 Production Database Protection
Rails 5 prevents bad things™ from happening to production databases: $ RAILS_ENV=production rake db:drop rake aborted!
-
How to sort GitHub notifications in Gmail
Too many GitHub notifications in Gmail?
-
How to have an effective one on one
I have half hour weekly one on one meetings with my manager, Dave.
-
Building reusable Ruby scripts
Write programs that do one thing and do it well.
-
Protecting Resque::Server
Resque ships with a Sinatra app that can be mounted within your application for inspecting the status of your workers and jobs.
-
Interview your libraries
I love working with John Barnette, even if we don't work on the same stuff regularly.
-
Ruby Incompatible Encoding Errors
String encodings is like air.
-
Ruby on Rack
Rack is a simple and flexible library for building Ruby web applications and web frameworks.
-
Blog Reboot, Lessons Learned
It's been four years since I initially started this blog.
-
And You Thought Render Farms Were Just For Pixar!
Rails views are typically rendered after some controller action is executed.
-
Building Streaming REST APIs with Ruby
Twitter popularized the term "firehose API", to mean a realtime stream of data sent through a persistent connection.
-
Define Custom Callbacks for ActiveRecord and More
Rails ActiveRecord models have a lifecycle that developers are allowed to hook into.
-
Faraday: One HTTP Client to Rule Them All
Faraday is a Ruby HTTP client which allow developers to customize its behavior with middlewares.
-
Real Web Performance for Users, not Robots
Republished from Opperator blog If I told you that a page took 130 requests to load 170 KB of data?