-
Building Pebble Watchfaces on Modern Systems
How I got the Pebble command line tools, emulator, etc. to work on my Apple Silicon Mac, and Linux machine
-
Debugging an obscure Vex Robotics build issue
On one of our team's Windows 11 PCs, the Vex Robotics VSCode extension would refuse to compile their code. Here's the solve.
-
Getting Git Revision info within your iOS App
A simple build script exposes the git commit hash and branch name of the source code that the app was built from
-
Flipper Zero: Cloning Christmas Tree Remotes
Using my Flipper Zero, I was able to clone the remote for my Christmas Tree, in case I ever lose it.
-
React Native - Efficient File Reads into a Buffer
How to efficiently load a file into a JavaScript Buffer using React Native & expo-file-system/next.
-
Compiling Expo Prebuild apps in XCode Cloud
The setup I'm using for shipping my react native apps to TestFlight, using Expo prebuild in the XCode Cloud.
-
Intro.JS - Skipping hidden elements
A quick tip on how to skip tooltips for hidden elements using IntroJS
-
The "Passport" - a RAKWireless case for Meshtastic
A custom external hard-drive form factor, 3d-printed case for the RAK19007 base. Designed to accommodate GPS, Bluetooth, and LoRA antennas internally.
-
Experiments with Meshtastic
Documenting some of my adventures in getting started with Meshtastic
-
Dark Mode with Design Tokens in Tailwind CSS
An approach for implementing design system tokens in Tailwind, for more symbolic theming
-
Flashlights / Gear Recommendations
Some of my favorite flashlights, hiking and camping gear
-
Sending Data from Ambient Weather Station to Home Assistant
A local-only option for integrating your Ambient Weather station with Home Assistant
-
A pattern for asynchronous loops in JavaScript
For loop-heavy JavaScript code, I've found it can be helpful to use both a combination of async & traditional loops.
-
Privilege Escalation in EC2, using Session Manager
The dangers of granting ssm:StartSession permissions to your EC2 instances
-
Flexbox Layout Engine
A simple flexbox-like layout engine I built for my dashboard project to simplify layout computations.
-
Satellite Tracking Dashboard Widget
A satellite tracking widget for my monitoring dashboard project
-
Lightweight dashboards via the Linux Framebuffer
A lightweight Python module I wrote for my Raspberry Pi to display monitoring dashboards using without any GUI, just the framebuffer.
-
Simple Dynamic DNS With Route53 and AWS Lambda
Using an AWS function to update a DNS record in Route53
-
Setting up NGINX and LetsEncrypt on my Home Server
I set up nginx and use LetsEncrypt wildcard certificates using the Route53 plugin to secure my home server's services.
-
Auto mount encrypted drives, using 1Password and systemd
How I automatically mount the encrypted RAID array for my home server at boot time, using 1Password and systemd.
-
Static Password Protected Posts, pt. 2
Some updates on my original post about encrypted content for this blog
-
Express / WebSockets for Real-Time Updates
A quick primer on using Express and WebSockets to enable real-time updates in your app or website.
-
Layer Alignment in FDM 3D Printing
How to design parts and align your print layers to make them stronger.
-
Reducing Digital Distraction on iOS & macOS
I've been using the Screen Time utility on my devices to help remove distractions
-
"My Code's Crashing" - A Robot Debugging Story
An anecdote about software debugging and incorrect assumptions
-
3D Printed Signet Ring
Designing and 3d printing custom rings & printing them in metal
-
A Backlit Picture Frame for Movie Film
An electronics project featuring a dimmable backlight for a movie souvenir film strip
-
Password Protecting Blog Posts WebCrypto!
A process to password protect blog posts in my static site, using encryption to keep the contents secure.
-
Running local LLMs using Ollama
An example of how to run models like llama3 locally, and how to use them programmatically
-
VueJS - Digging into v-model
A cheat-sheet for what the VueJS "v-model" syntactic sugar is doing under the hood so we can customize the behavior of our components.
-
Thoughts on Code Clarity & Maintainability
Some thoughts on best practices for keeping code maintainable as a team scales
-
Better macOS Screenshot Workflow
Customizing the default save location of the built-in macOS screenshot tool and adding it to the dock to enhance usability
-
My Dotfiles, Refreshed
Refreshing and simplifying my dotfiles for zsh, vim, and tmux.
-
Typescript trick: Required enum values as keys
A quick trick I've found useful for enforcing that a typescript string enum's values are used as keys in a record.
-
Hacker News Dark Theme
A uBlock Origin filter providing a dark theme for hacker news
-
Detecting ECS Task Failures with EventBridge
A few rules I'm using for detecting ECS task failures, for both container errors and non-zero exit codes.
-
blg - a 'social' rss feed reader
A new RSS feed reader I'm working on, with some plans for cool future social features
-
Local iOS builds using Expo Prebuild and Fastlane
A simple example of using Fastlane alongside Expo's Prebuild to deliver React Native apps to Testflight
-
3D Printed "Red Button"
An ultra-dramatic stand alone enter key for your computer.
-
Quick JQ Usage & Examples
Quick examples for getting the hang of using jq in your terminal
-
Terraform with EC2 instances as data source
Creating AWS cloudwatch CPU alarms for all instances using a terraform data source.
-
Using Certificate Transparency Logs for DNS Enumeration
A tool for enumerating DNS records using cert transparency and dictionary files
-
iPhone Backup Tools v2
Introducing a new version of my iOS backup tools, now featuring decryption. Written in rust.
-
Site Redesign, new pages
I've overhauled the visual look of this site to be simpler and a bit more modern.
-
Raspberry Pi External Status Lights
Wiring up "online" and cpu activity lights via GPIO.
-
Instrumenting Utilities Usage
How I monitor water and electricity usage for my house, using a raspberry pi, an rtl-sdr, and prometheus+grafana.
-
Pi Pico Digital Clock
A digital clock project I'm working on using a Pi Pico and a DS3231 Module
-
3D Printing
Introducing the 3D printing section of this site, where I publish prints I've designed.
-
Common Web App Security Bugs and where to find them
A (non-exhaustive) list of common web security bugs with examples, including XSS and command injection.
-
Christmas Light Troubleshooting Guide
A guide on troubleshooting, and managing strands of holiday lights.
-
Effectively using ed (1)
A tutorial/cheatsheet on using ed (a line-oriented text editor) effectively
-
A Cheap Video Capture Solution
Save your home videos stuck in arcane formats, using this inexpensive setup
-
PlantCam (how it works)
Technical information on how my plant camera operates using ffmpeg and raspistill
-
Decentralizing Your Digital Life
A list of sites & services that aren't run by mega-corporations.
-
Tools for Small Electronics Projects
Tools that I find useful when working on side-projects involving electronics & circuitry
-
Debian (XFCE/Wfm4) with macOS-like keybindings
Some keybindings & shortcuts I configured to make my transition to linux a little easier.
-
Making Maple Syrup
Steps (and mistakes) I made while making my first batch of maple syrup
-
Reverse Engineering some Wordpress Malware
Wordpress Hardening & Reverse engineering some wordpress malware
-
Setting up Bind9 as a forwarding DNS server
Setting up Bind9 to forward DNS requests to cloudflare + google, and adding some additional records for my lan.
-
IR Remote-Controlled Light
My design for a IR-remote-controlled light using an Adafruit Trinket M0, and CircuitPython
-
WASM Basics using WAST
Examples using the WebAssembly Text format (a.k.a. WAT or WAST).
-
Fix your 2012 Honda Civic's charging system
The 2012 honda civic likes to drain its battery - here's how we fixed it.
-
Converting Video for the Web with FFMPEG
How I generate videos for this website, using ffmpeg.
-
Making GIFs with FFMPEG
Terminal commands for generating gifs from a video, using ffmpeg.
-
Farming Notes
Notes + Information I've collected from my growing of Pumpkins, Corn, Carrots, and other fruits and vegetables.
-
Building a new Static Site Generator
Progress in building a static site generator in rust, using servo's html5ever and mozjs packages
-
Enabling Dark Mode in CSS
Using the prefers-color-scheme css media query to darken pages depending on system preferences.
-
SHBAR - Shell Scripts in your macOS Menu
An experimental swift menu bar app which gives you the ability to script your menu bar
-
Debian 9 NAS
Setting up NAS box on top of debian, using RAID 1
-
My Raspberry Pi Setup Checklist
My checklist for Americanizing and configuring a new raspberry pi.
-
Retrocomputing - Repairing my old PC
Repairing my old PC, and going through some old software
-
Root Shell on your Drone!
Syma X5SW - Getting a root shell, streaming video, taking pictures, and more!
-
Custom Solar Light using a Mason Jar
Constructing a solar light using Mason Jars, LEDs, and misc. parts.
-
ARKit + 3D printing: STL files in AR
We can display STL files in ARKit with relative ease. STL files are typically used in the process of 3D printing.
-
Visualizing Algorithms
Using some custom code to generate interesting graphs of algorithmic operations.
-
Swift Errors
An improved way of getting debug strings for Swift Error instances, and demystifying error codes for custom error enums
-
Linux Framebuffer Graphics
Using the linux framebuffer for raw graphics without a window system.
-
iOS Backup Information Extractor Tool Updated
I've updated my tool to extract tons of useful data from iOS backups
-
Using Swift DispatchGroups
Using Swift DispatchGroups for improved performance in iOS Apps
-
Essential Shell Shortcuts
Here's a list of some really awesome shell (bash/zsh/etc) shortcuts that I use all the time.
-
Tutorial: AWS Static Hosting
How to set up hosting for your static site on aws, that doesn't cost a fortune
-
My Summer Internship!
This summer, I interned at ABC News in New York. I worked on their iOS and tvOS apps.
-
JS 0x01 - Multiple Return Values in JavaScript
Since ES2015, a much better way to express multiple return values is available.
-
Reverse Engineering the iOS Backup
Explore the format of iOS backups and ways to extract data.
-
Extending the UIButton tap area
Extending the touch area of a UIButton with Edge Insets
-
BeachParking.com solves beach parking hassles
BeachParking.com solves beach parking hassles!
-
Swift is open source
Apple's swift programming language is now open source, which opens numerous doors for using the language elsewhere.
Subscribe to my Newsletter
Get new posts right in your inbox.