2011–2026
1,408 posts
2026 64
October 2026
- Rejoice, leap seconds are dead!
- Noctua Fan Swap on a Calnex Rb/GPS Frequency Reference
- Ubiquiti's $99 Vape Detector is actually pretty good
- Upgrade your PHP installs immediately to protect against php2shell
- Formlabs dropped the Raspberry Pi on the way to a $699 SLA printer
- Radxa's Q8B has 2x the performance and expansion of the Pi 5
September 2026
- I'm starting HomelabFest (in St. Louis, Sep 2027)
- Raspberry Pi locks down Pi 5 RAM upgrades in firmware
- NTP, an atomic clock, and having a great time at the world's largest VCF
- OpenNMC is an open replacement for expensive APC management cards
- Rebuilding a 1995 GPS Time Server so I don't get Telstra'd
August 2026
- Before NTP there were Time and Daytime
- Building a mini Homelab that fits in my carry-on
- Debugging Ubiquiti's 5G Backup on AT&T
- Getting the Steam Deck LCD working on a Raspberry Pi
- Hands-on with Raspberry Pi's CM5 Programming Jig
- I'm excited for Intel after testing the XPS 13
- Proxmox officially supports Arm, with some caveats
July 2026
- Getting 25 Gbps Thunderbolt Ethernet on my Mac Studio
- Adding a backup Internet WAN on my OPNsense Router
- Open Sauce and GPS time were my summer AI Antiseptics
- QuadRF can spot drones and see WiFi through my wall
- The Special Value Pi 4 was extremely short-lived
June 2026
- Quickly apply LUTs (color grading) with ffmpeg
- Framework's 10G Ethernet module exposes USB-C's complexity
- You can finally power on a Mac remotely
- I tested every IP KVM in my Homelab
May 2026
- It's hard to justify buying a Framework 12
- Tuning in FM Radio on a 3D Printer Heatbed
- I patched iozone for better disk benchmarks on modern macOS
- News about Raspberry Pi 6 and Microcontroller Development
- Wi-Wi Is Wireless Time Sync at 1 nanosecond
- Bambu Lab is abusing the open source social contract
- HomePod mini feels like magic, but it's just good timing
- SBC Clusters are a terrible value, but they're fun anyway
April 2026
- Raspberry Pi Connect may control Windows soon
- New 10 GbE USB adapters are cooler, smaller, cheaper
- An Arm Mainboard for the Framework Laptop
- Build your own Dial-up ISP with a Raspberry Pi
- DRAM pricing is killing the hobbyist SBC market
March 2026
- Bring back MiniDV with this Raspberry Pi FireWire HAT
- Using FireWire on a Raspberry Pi
- The best laptop Apple ever made
- Restoring an Xserve G5: When Apple built real servers
- Can the MacBook Neo replace my M4 Air?
- A PTP Wall Clock is impractical and a little too precise
- I built a pint-sized Macintosh
- Expert Beginners and Lone Wolves will dominate this early LLM era
February 2026
- Upgrading my Open Source Pi Surveillance Server with Frigate
- How to Securely Erase an old Hard Drive on macOS Tahoe
- Frigate with Hailo for object detection on a Raspberry Pi
- AI is destroying Open Source, and it's not even good yet
- Testing Reachy Mini - Hugging Face's Pi powered robot
- Exploring a Modern SMPTE 2110 Broadcast Truck With My Dad
- The first good Raspberry Pi Laptop
January 2026
- Ode to the AA Battery
- Recapping My 5 Year Old Studio Monitors
- Migrating 13,000 Comments from Drupal to Hugo
- Raspberry Pi's new AI HAT adds 8GB of RAM for local LLMs
- Raspberry Pi Pico Mini Rack GPS Clock
- Local Email Debugging with Mailpit
- Raspberry Pi is cheaper than a Mini PC again (that's not good)
- JeffGeerling.com has been Migrated to Hugo
- Testing the Mono Gateway, a custom-built 10 Gbps Router
2025 90
December 2025
- Dell's version of the DGX Spark fixes pain points
- NIST was 5 μs off UTC after last week's power cut
- Big GPUs don't need big PCs
- 1.5 TB of VRAM on Mac Studio - RDMA over Thunderbolt 5
- CM0 - a new Raspberry Pi you can't buy
- Benchmarking NVENC video transcoding on the Pi
- The DC-ROMA II is the fastest RISC-V laptop and is odd
- The RAM Shortage Comes for Us All
- Why doesn't Apple make a standalone Touch ID?
November 2025
- Nvidia Graphics Cards work on Pi 5 and Rockchip
- Air Lab is the Flipper Zero of air quality monitors
- How to silence the fan on a CM5 after shutdown
- Using AMD GPUs on Raspberry Pi without recompiling Linux
- All Intel GPUs run on Raspberry Pi and RISC-V
- Minisforum stuffs an entire Arm Homelab in the MS-R1
- Converting hot dog plasma video to sound with OpenCV
- It's not that hard to stop a Trane
October 2025
- The Arduino Uno Q is a weird hybrid SBC
- Why do some radio towers blink?
- Recovering videos from my Sony camera that I stupidly deleted
- blown away
- Resizeable BAR support on the Raspberry Pi
- How much radiation can a Pi handle in space?
- Qualcomm's buying Arduino – what it means for makers
September 2025
- The AI Emperor Has No Clothes
- Not all OCuLink eGPU docks are created equal
- Testing the Raspberry Pi 500+'s new mechanical keyboard
- Full eGPU acceleration on the Pi 500+ with a 15-line patch
- I regret building this $3000 Pi AI cluster
- You can finally manage Macs with FileVault remotely in Tahoe
- Save video still frames from QuickTime Player with a shortcut
- Digging deeper into YouTube's view count discrepancy
- CubeSats are fascinating learning tools for space
- YouTube views are down (don't panic)
- I bought the cheapest EV (a used Nissan Leaf)
August 2025
- How to install TrueNAS on a Raspberry Pi
- Reverse Engineering ALL the Raspberry Pis
- Build log: Macintosh Classic
- TrueNAS on Arm is finally a thing
- Jellyfin on macOS for a quick self-hosted media library
- Reverse Engineering the Raspberry Pi Zero 2W
- Increasing the VRAM allocation on AMD AI APUs under Linux
- I clustered four Framework Mainboards to test huge LLMs
July 2025
- Decoding Meshtastic with GNURadio on a Raspberry Pi
- Recording vintage CRTs with a modern Sony mirrorless camera
- Open Sauce is a confoundingly brilliant Bay Area event
- Adding GPS and off-grid maps to my Meshtastic T-Deck
- Upgrading an M4 Pro Mac mini's storage for half the price
- Mini NASes marry NVMe to Intel's efficient chip
- You will own nothing and be happy (Stop Killing Games)
June 2025
- Getting weather data from my Acurite sensors was shockingly easy
- How I make thumbnails for YouTube
- Setting up an Ubuntu Desktop installation for SSH, quickly
- How I monitor and control all my powered devices (Zigbee + HA)
- Self-hosting your own media considered harmful (updated)
- Sipeed NanoCluster fits 7-node Pi cluster in 6cm
May 2025
- A limited-time flavor: Blue Raspberry Pi
- Using GPS for the most accurate time possible on a Mac
- Installing an outdoor GPS antenna for more accurate time
- Radxa Orion O6 brings Arm to the midrange PC
- 4x faster network file sync with rclone (vs rsync)
April 2025
- Trying out a cheap USB VK-172 GPS dongle on a Mac
- The (almost) perfect mini NAS for my mini rack
- It's easier than ever to de-censor videos
- Raspberry Pi cluster spotted inside $6k audio processor
- BPS is a GPS alternative that nobody's heard of
- Running the LAMP Stack in a Lamp Rack
March 2025
- DIY PTP Grandmaster Clock with a Raspberry Pi
- Never in a million years...
- I won't connect my dishwasher to your stupid cloud
- Exploring WiFi 7 (at 2 Gbps) on a Raspberry Pi 5
- YouTube scares me; I need RAID 1 for my video content
- Is an Intel N100 a better value than a Raspberry Pi?
February 2025
- Windows 11 Arm VMs on a Raspberry Pi, with BVM
- Progress on Intel and Nvidia GPUs on Raspberry Pi
- Project MINI RACK - what have we started??
- NUT on my Pi, so my servers don't die
- Benchmarking multiple network interfaces at once in Linux with iperf3
- SiFive's HiFive Premier P550 is a strange, powerful RISC-V board
- How to Recompile Linux (on a Raspberry Pi)
- Build Box64 with Box32 for X86 emulation on RISC-V Linux
- How to build Ollama to run LLMs on RISC-V Linux
- Orion O6 ITX Arm V9 board - temper your expectations
January 2025
2024 93
December 2024
- Documenting an 1115 ft radio tower climb
- Getting beyond ProcessExecutionErrors when installing Ubuntu on arm64
- Pi modder successfully adds M.2 slot to Pi 500
- Raspberry Pi 500 uses QMK Firmware for built-in keyboard
- The Pi 500 is much faster, but lacks M.2
- AmpereOne: Cores are the new MHz
- Raspberry Pi boosts Pi 5 performance with SDRAM tuning
November 2024
- Raspberry Pi CM5 is 2-3x faster, drop-in upgrade (mostly)
- Home Assistant Yellow - instant 2x IoT speedup with CM5
- LLMs accelerated with eGPU on a Raspberry Pi 5
- AMD Radeon PRO W7700 running on Raspberry Pi
- Popular Rockchip SBC distro in limbo after maintainer burns out
- M4 Mac mini's efficiency is incredible
- Why Raspberry Pi for an SBC guy
- Home Assistant and CarPlay with the Pi Touch Display 2
October 2024
- LTT's Precision Screwdriver - better than iFixit?
- Finding a server's BMC / IPMI IP address with ipmitool
- JetKVM: tiny IP KVM that's not an Apple Watch
- Qualcomm cancels Snapdragon Dev Kit, refunds all orders
- Realizing Meshtastic's Promise with the T-Deck
- 3rd Party PoE HATs for Pi 5 add NVMe, fit inside case
- Use an External GPU on Raspberry Pi 5 for 4K Gaming
- Snapdragon Dev Kit for Windows - the fastest X Elite, tested
September 2024
- AVerMedia Live Gamer Portable 2 Plus - Can't record to microSD
- Qualcomm Snapdragon Dev Kit for Windows Teardown (2024)
- Elecrow responded, apologized for AI voice cloning
- They stole my voice with AI
- Sipeed NanoKVM: A RISC-V stick-on
- What happens when you touch a Pickle to an AM radio tower?
August 2024
- New 2GB Pi 5 has 33% smaller die, 30% idle power savings
- Positron - an upside-down and portable 3D printer
- Radxa X4 SBC Unites Intel N100 and Raspberry Pi RP2040
- Raspberry Pi Pico 2 - RP2350 adds more PIO, RISC-V cores
- Milk-V Jupiter is the first ITX RISC-V board I've tested
July 2024
- Hacking Pi firmware to get the fastest overclock
- Fixing curl install failures with Ansible on Red Hat-derivative OSes
- Getting Started with Meshtastic
- The state of Docker on popular RISC-V platforms
- Where is Qualcomm's Snapdragon X Elite Dev Kit?
- NUMA Emulation speeds up Pi 5 (and other improvements)
- If AI chatbots are the future, I hate it
- Installing Ansible on a RISC-V computer
June 2024
- Testing new Raspberry Pi 5 Cases - $7 to $79
- Remote shell to a Raspberry Pi at 39,000 ft
- Giving away 480 Raspberry Pis was harder than I expected
- Newer versions of Ansible don't work with RHEL 8
- 55 TOPS Raspberry Pi AI PC - 4 TPUs, 2 NPUs
- Testing Raspberry Pi's AI Kit - 13 TOPS for $70
- Saying a lot while saying nothing at all about Ansible AWX
May 2024
- Can the Raspberry Pi 5 handle 4K?
- Testing object detection (yolo, mobilenet, etc.) with picamera2 on Pi 5
- LattePanda Mu crams x86 PC into SoM form factor
- The Cicadas are Here
- microSD cards' SBC days are numbered
- Import unsupported camera RAW files into Apple Photos
- Quick NVMe performance testing with fio
- Achieving Pro Zoom meeting quality on my Mac
- Raspberry Pi is getting into the services game
- 4-way NVMe RAID comes to Raspberry Pi 5
April 2024
- Turing RK1 is 2x faster, 1.8x pricier than Pi 5
- Corporate Open Source is Dead
- Building a Pi Frigate NVR with Axzez's Interceptor 1U Case
- Resetting and upgrading old Hikvision IP Cameras
- AM phasor has no setting for 'stun'
- Photographing the 2024 Total Solar Eclipse (results)
- Radxa's SATA HAT makes compact Pi 5 NAS
- macOS Finder is still bad at network file copies
March 2024
- Sipeed's new handheld RISC-V Cyberdeck
- Talking Hot Dog gives new meaning to 'Ham radio'
- Build log: Macintosh PowerBook 3400c
- Build log: Power Mac G4 MDD
- Die shots and transistor-level debugging on Raspberry Pi 5
- Raspberry Pi 5 *can* overclock to 3.14 GHz
- An important consideration about Pi 5 overclocking
- Fixing nginx Error: Undefined constant PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
- Set a static IP address with nmtui on Raspberry Pi OS 12 'Bookworm'
- Getting files to and from a PowerBook 3400c with hfsutils
February 2024
- Learning about ZFS and efficiency on my new Arm64 NAS
- Water cooling is overkill for Pi 5
- My TODO list is a .txt file on the desktop
- Photographing the 2024 Total Solar Eclipse
- Building an efficient server-grade Arm NAS
- Waveshare's PoE HAT is the first for Raspberry Pi 5
- Resolving 'Temporary failure in name resolution' on Pi OS 12 Bookworm
- Highly-condensed time-lapse footage with Frigate
- SimpliSafe Video Doorbell: Halt and Catch Fire
January 2024
2023 74
December 2023
- Keeping one Game Gear out of the landfill
- My SimpliSafe doorbell lit its own fire this winter
- Forget spaceships; I just want my music
- Raspberry Pi 5 and RP1 X-ray scans
- Pi clusters aren't dumb
November 2023
- External GPUs working on the Raspberry Pi 5
- So you want to make a Raspberry Pi killer...
- HTGWA: How to completely erase a hard drive in Linux
- How to customize the dtb (device tree binary) on the Raspberry Pi
- A PCIe Coral TPU FINALLY works on Raspberry Pi 5
- The Mighty 'MOX: 50kW AM Tower site tour
- Smart home automation shouldn't be stupid
- Reducing Raspberry Pi 5's power consumption by 140x
- Getting RISC-V (again): Milk-V's Mars CM
- Setting up a Mikrotik 10 Gbps Switch the first time
October 2023
- Everything I've learned building the fastest Arm desktop
- Ansible Galaxy error 'Unable to compare role versions'
- NVMe SSD boot with the Raspberry Pi 5
- Configuring wifi headless with connmanctl on LibreELEC via SSH
- Forcing PCI Express Gen 3.0 speeds on the Pi 5
- Overclocking and *Underclocking* the Raspberry Pi 5
September 2023
- nmcli for WiFi on Raspberry Pi OS 12 'Bookworm'
- Testing PCIe on the Raspberry Pi 5
- Answering some questions about the Raspberry Pi 5
- 100 SBCs, Python Flask, and two NUCs for MrBeast
- Testing the Coral TPU Accelerator (M.2 or PCIe) in Docker
- Testing 10 GbE throughput on Windows - iperf3 is outdated
August 2023
- Getting my amateur radio (ham) license
- How to solve "error: externally-managed-environment" when installing via pip3
- A Pigeon is still faster than the Internet
- My own magic-wormhole relay, for zippier transfers
- Soundproofing my studio: what's in a wall?
- Testing iperf through an SSH tunnel
- Fork Yeah! Examining open source history after Red Hat's move
July 2023
- Time Card mini adds Pi, GPS, and OCXO to your PC
- Clearing up FUD surrounding Red Hat's actions
- Building a tiny 6-drive M.2 NAS with the Rock 5 model B
- Ampere Altra Max - Windows, GPUs, and Gaming
- I was wrong
June 2023
- GPLv2, Red Hat, and You
- Self-published Ansible book – 87k copies, 300k revenue, 41 revisions
- I'm done with Red Hat (Enterprise Linux)
- Removing official support for Red Hat Enterprise Linux
- Dear Red Hat: Are you dumb?
- How I installed TrueNAS on my new ASUSTOR NAS
- Messing with the Beepy (formerly known as Beepberry)
- How Raspberry Pis are made (Factory Tour)
- Tireless volunteers are the lifeblood of community
May 2023
- What Eben Upton said about RISC-V
- Self-hosting with AT&T Fiber Internet
- Build your own private WireGuard VPN with PiVPN
- First look: ASUSTOR's new 12-bay all-M.2 NVMe SSD NAS
April 2023
- Testing a 96-core Ampere Altra Developer Platform
- I built a special PCIe card to test GPUs on the Pi
- Secure Computing with Zymbit's D35
March 2023
- TV for one million: Exploring KSDK's broadcast tower
- Testing Raspberry Pi's new Global Shutter Camera
- RISC-V Business: Testing StarFive's VisionFive 2 SBC
February 2023
- My daughter's school took over my personal Microsoft account
- Testing Raspberry Pi's new Debug Probe
- Transcribing recorded audio and video to text using Whisper AI on a Mac
- Moving my PC into my rack in a 2U case
- Trying every combination to flash my ASUS motherboard's BIOS
- Fixing Rode Wireless Go II RF Interference or buzz
- The Rock 5 B is not a Raspberry Pi killer—yet
- Removing RF interference from a cell phone from audio recording
January 2023
- Is AM Radio Dead?
- Using PiBenchmarks.com for SBC disk performance testing
- Hyperscale in your Homelab: The Compute Blade arrives
- Shaving Hours off my Workflow - Trimming silence with FCPX and AppleScript
- I'm also on Mastodon
- How many AMD RX 7900 XTX's are defective?
- Raspberry Pi's Camera Module 3 adds autofocus and new Sony sensor
- Getting to 1.5 Gbps WiFi 6E on the Raspberry Pi CM4
2022 92
December 2022
- Part of the wrong 1% — Ostomy surgery, part 2
- Limiting Handbrake threads to prevent throttling on M2 Macbook Air
- 1 Million Watts of RF - how the FM Supertower works
- Crohn's Disease takes its toll - back in 2023!
November 2022
- Just Say No
- Pi Cluster vs Ampere Altra Max 128-core ARM CPU
- Ubuntu's settings won't open after setting CPU to 'performance'
- Exploring a 1 MW FM Radio Tower with my Dad
- I tested on Microsoft's Windows Dev Kit 2023
October 2022
- Why I use Jellyfin for my home media library
- Docker and systemd, getting rid of dreaded 'Failed to connect to bus' error
- Batch transcode a folder of videos with Handbrake's CLI
- An easier way to find an ASUSTOR NAS to set it up
- Automating my Homelab with Ansible (AnsibleFest 2022)
- Streaming services lost the plot
- Monitoring my ASUS RT-AX86U Router with Prometheus and Grafana
- Clearing Cloudflare and Nginx caches with Ansible
- You can't buy a Raspberry Pi right now
September 2022
- Homelab Pi Rack upgrade, just in time for AnsibleFest 2022
- Jeff Geerling, Stably Diffused
- BliKVM PCIe puts a computer in your computer
- Short is good
- A YouTuber built a tool that beat Snap-On
- How to download an MP4 from YouTube, every time
- Cosplaying as a Sysadmin
August 2022
- apt_key deprecated in Debian/Ubuntu - how to fix in Ansible
- Upgrading 4G LTE modem firmware is an experience
- 6 Raspberry Pis, 6 SSDs on a Mini ITX Motherboard
- Much-needed upgrades to my PC
- Microsoft is still far behind: Windows on ARM
- Install Raspberry Pi OS's desktop environment over a Lite install
July 2022
- Chaos Engineer - T-shirt on RedShirtJeff.com
- Starlink's current problem is capacity
- Building a fast all-SSD NAS (on a budget)
- Making Noctua fans work (quietly) with a Supermicro motherboard
- Resetting IPMI and upgrading BIOS on a Supermicro motherboard under FreeBSD (or not)
- PTP and IEEE-1588 hardware timestamping on the Raspberry Pi CM4
June 2022
- The Raspberry Pi Pico W brings WiFi for $6
- Answering Questions about the PetaPi
- Industrial Raspberry Pi computers (one is explosion-proof)
- ESPHome on the Raspberry Pi Pico!
- Raspberry Pi CM3E joins CM4S in the old SO-DIMM form factor
- Benchmarking DNS on my Mac with Pi-Hole
- The TV that's not: NEC's Pi-powered 55" Display
- Two Macs in my Rack: Mac Studio rackmount review
- Using LibreELEC like a pro—management via SSH
May 2022
- Watching the Earth move with a Raspberry Pi
- How to transcribe audio to text using Dictation on a Mac
- The Petabyte Pi Project
- 64 megapixel 'Hawk-Eye' brings high-res imaging to the Pi
- Starlink Roaming makes mobile usage possible
April 2022
- External graphics cards work on the Raspberry Pi
- A few of the things I hate about my Sony a6600
- 8 New Compute Module 4 boards for Spring 2022
- How I rip DVDs and Blu-Rays into my Mac (2022 Edition)
- How to run glmark2-drm to benchmark an external GPU on a Raspberry Pi
- 2.5 Gigabit homelab upgrade - with a PoE+ WiFi 6 AP
- Using a reverse-NFS mount to access Docker container's data from macOS
- Getting a new IP address via DHCP from Spectrum Internet
- New Raspberry Pi: Compute Module 4S
March 2022
- Installing the Asahi Linux Alpha on my M1 Mac mini
- Mac Studio is 4x more efficient than my new AMD PC
- It was DNS - T-shirt on RedShirtJeff.com
- New Docker for Mac VirtioFS file sync is 4x faster
- Three DDoS attacks on my personal website
- ASUSTOR Lockerstor 4RS Review - 1U 4-drive NAS
- Playing sounds with Python on a Raspberry Pi
- Rate limiting requests per IP address in Nginx
- Getting an RX 6700 XT to work for Gaming on Linux
- Livestream: I attempt to build a modern Linux gaming PC
February 2022
- Top 10 Pi Projects for Raspberry Pi's 10th Birthday
- Deadbolt impacts some ASUSTOR NASes — check your backup plan!
- Building a desktop Pi PC with Axzez's Interceptor
- Gaming at 1080p and 120 Hz on a Raspberry Pi 4
- Testing Raspberry Pi's new Network Install feature
- How to update the Raspberry Pi Compute Module 4 Bootloader / EEPROM
- BliKVM - a PiKVM (KVM over IP) box based on the Compute Module 4
- I almost got banned from Hacker News
- Hosting this website on a farm - or anywhere
- Enable the external antenna connector on the Raspberry Pi Compute Module 4/5
- It's official: Raspberry Pi OS goes 64-bit
- I took down Starlink (but I haven't cancelled)
January 2022
- It's dire: Raspberry Pi availability tracker is launched
- Using an Ansible playbook with an SSH bastion / jump host
- Ansible playbook to upgrade Ubuntu/Debian servers and reboot if needed
- Using 4G LTE wireless modems on a Raspberry Pi
- Home Assistant Yellow - Pi-powered local automation
- Network interface routing priority on a Raspberry Pi
- Autofocus on a Pi - ArduCam's new 16MP camera
- Quick 'Hello World' HTTP deployment for testing K3s and Traefik
- SSH and HTTP to a Raspberry Pi behind CG-NAT
- The burden of an Open Source maintainer
2021 91
December 2021
- Red Shirt Jeff Special and 2021 YouTube channel retrospective
- Raspberry Pi holds its own against low-cost ARM NAS
- Check your driver! Faster Linux 2.5G Networking with Realtek RTL8125B
- HTGWA: Use bcache for SSD caching on a Raspberry Pi
- Pine64 and Radxa's new Pi CM4-compatible boards
- Fix for Nvidia Jetson Nano 2GB Developer Kit stuck in boot loop
- Install Python 3.9 on Raspberry Pi OS or Debian 10 (for Ansible or other uses)
- Making sure symlinks work on CIFS/SMB mounted shares
- Turing Pi 2: 4 Raspberry Pi nodes on a mini ITX board
November 2021
- 2021 Open Source Pay-it-Forward Pi Giveaway
- Mini-ITX Seaberry adds 11 PCIe slots to a Raspberry Pi
- Controlling PWM fans with the Raspberry Pi CM4 IO Board's EMC2301
- Using Compute Module 4 IO Board pins as an ATX case front panel header
- Working with multiple WiFi interfaces on a Raspberry Pi
- I built a $5,000 Raspberry Pi server (yes, it's ridiculous)
- HTGWA: Create a Samba (SMB) share on a Raspberry Pi
- HTGWA: Create an NFS share in Linux on a Raspberry Pi
- HTGWA: Create a ZFS RAIDZ1 zpool on a Raspberry Pi
- HTGWA: Create a RAID array in Linux with mdadm
- CutiePi - a Raspberry Pi CM4 Linux Tablet
- HTGWA: Partition, format, and mount a large disk in Linux with parted
- Appearance on Tom's Hardware's The Pi Cast - Nov 2021
October 2021
- Raspberry Pi Zero 2 powers the Null 2 RetroPie gaming handheld
- Look inside the Raspberry Pi Zero 2 W and the RP3A0-AU
- Disabling cores to reduce the Pi Zero 2 W's power consumption by half
- Kubesail's PiBox mini 2 - 16 TB of SSD storage on a Pi
- Getting a Raspberry Pi to boot after cutting it in half
- Automating the Uncommon - AnsibleFest 2021 presentation
- Attaching to a Raspberry Pi's Serial Console (UART) for debugging
September 2021
- Face detection for my leaf blower
- Raspberry Pi 4 model Bs arriving with newer 'C0' stepping
- Raspberry Pi KVMs compared: TinyPilot and Pi-KVM v3
- Monitoring my home's air quality (CO2, PM2.5, Temp/Humidity) with AirGradient's DIY sensor
- Review: Sennheiser MKE 200 supercardioid on-camera mic
- Time Card and PTP on a Raspberry Pi Compute Module 4
August 2021
- Modeling my Grandpa with 3D Photogrammetry
- I made a custom ceiling mount for my camera
- Why build a Raspberry Pi Cluster?
- How to Export a 2D illustration of a 3D model in OpenSCAD
- Uptime Lab's CM4 Blade adds NVMe, TPM 2.0 to Raspberry Pi
July 2021
- Raspberry Pi OS now has SATA support built-in
- Review: MyElectronics Raspberry Pi hot-swap rack system
- SpaceX's Starlink Review - Four months in
- Ethernet was slower only in one direction on one device
- Getting faster 10 Gbps Ethernet on the Raspberry Pi
- The Raspberry Pi IoT Notification Bell
June 2021
- Ansible might be running slow if libyaml is not available
- Monitor your Internet with a Raspberry Pi
- Review of Raspberry Pi's PoE+ HAT (June 2021)
- Retrieving individual files from S3 Glacier Deep Archive using AWS CLI
- Allowing Ansible playbooks to work with new user groups on first run
- AWS S3 Glacier Deep Archive - Difficulty deleting files with accents
- The Wiretrustee SATA Pi Board is a true SATA NAS
- Moving my home media library from iTunes to Jellyfin and Infuse
- My Backup Plan
- Don't fall in love with your Mac—automate it!
- The Apple M1 compiles Linux 30% faster than my Intel i9
May 2021
- Two Tiny Dual-Gigabit Raspberry Pi CM4 Routers
- Freenode is dead. Long live IRC?
- My 6-node 1U Raspberry Pi rack mount Cluster
- Setting up a Raspberry Pi with 2 Network Interfaces as a very simple router
- OBS Task List Overlay for livestream TODO / Checklist
- Tried Nvidia's GTX 1080 - still no external GPU on a Pi
- Trying KIOXIA CM6 and PM6 Enterprise SSDs on a Raspberry Pi
- Taking control of the Pi PoE HAT's overly-aggressive fan
- Beautiful 3D Print time-lapses with my Nikon D700 and Octolapse
April 2021
- I'm switching from Nikon to Sony mirrorless
- Three more graphics cards on the Raspberry Pi CM4
- Using the Shelly Plug to monitor Starlink's power consumption
- MirkoPC - a full-featured Raspberry Pi desktop computer
- Setting up Starlink, SpaceX's Satellite Internet
- Raspberry Pi 2.5 Gbps 16 TB OMV NAS - Setup and Performance
March 2021
- Building a 2.5 Gbps 5-drive Pi NAS - Hardware Setup
- Setting up a Pi for remote Internet connection monitoring
- Building the World's Tiniest NVMe RAID Array
- The Raspberry Pi can boot off NVMe SSDs now
- How to join multiple MP4 files from a GoPro with ffmpeg
- Ignore noisy logs with fluentd in EKS or other Kubernetes clusters
- M.2 on a Raspberry Pi - the TOFU Compute Module 4 Carrier Board
- Pi Day 2021 - Livestream of 16 drives on a Raspberry Pi (2nd attempt)
February 2021
- Launched: Red Shirt Jeff merch store
- Hardware RAID on the Raspberry Pi CM4
- Microsoft repo and key are automatically added to Raspberry Pis
- How I make my YouTube videos - 100K Office/Studio Tour
- Kubernetes 101 series retrospective, and a new book!
- Argon One M.2 Raspberry Pi SSD Case Review
January 2021
2020 93
December 2020
- Testing 2.5 Gbps Ethernet on the Raspberry Pi CM4
- Setting 9000 MTU (Jumbo Frames) on Raspberry Pi OS
- WiFi 6 gets 1.34 Gbps on the Raspberry Pi CM4
- Kubuntu Focus M2 Linux laptop review and MacBook Pro comparison
- The Raspberry Pi 4 has a fan now - the Case Fan
- Building the fastest Raspberry Pi NAS, with SATA RAID
November 2020
- I'm thankful for GitHub, Patreon, and my sponsors this year
- The Raspberry Pi makes a great USB webcam for $100
- USB 2.0 ports not working on the Compute Module 4? Check your overlays!
- Kubernetes 101 livestream series starts Nov 18th!
- Travis CI's new pricing plan threw a wrench in my open source works
- Cross-compiling the Raspberry Pi OS Linux kernel on macOS
- How to flash Raspberry Pi OS onto the Compute Module 4 eMMC with usbboot
- The Raspberry Pi 400 - Teardown and Review
- The Raspberry Pi 400 can be overclocked to 2.2 GHz
October 2020
- 5 Gbps Ethernet on the Raspberry Pi Compute Module 4
- External GPUs and the Raspberry Pi Compute Module 4
- Overclocking the Raspberry Pi Compute Module 4
- The Raspberry Pi Compute Module 4 Review
- Continuous Testing with Molecule, Ansible, and GitHub Actions
September 2020
- Raspberry Pi USB Boot - UASP, TRIM, and performance
- What does Nvidia buying ARM mean for Raspberry Pi?
- Enabling TRIM on an external SSD on a Raspberry Pi
- Testing how long it takes Chromium to open, load a web page, and quit on Debian
- Using a Nikon D750 as a webcam or for live streaming
- Why I haven't sold my $166 MRR SaaS product
August 2020
- Raspberry Pi High Quality Camera - YouTube Video Series
- Did breaking backwards compatibility kill Drupal?
- Setting up a Mac mini from MacStadium for headless CI
- Self-publishing and the 2nd edition of Ansible for DevOps
- The fastest USB storage options for Raspberry Pi
July 2020
- Raspberry Pi Cluster Episode 6 - Turing Pi Review
- I replaced my office lights to get better video
- Transition from blogging to YouTube - my experience
- The Pi 4 Compute Module might support NVMe storage
- Drupal VM 6 'Rectifier' is here!
- UASP makes Raspberry Pi 4 disk IO 50% faster
- Ansible Questions and Answers from the final Ansible 101 livestream
June 2020
- Raspberry Pi Cluster Episode 5 - Benchmarking the Turing Pi
- Ansible 101 live streaming series - a retrospective
- What does Apple Silicon mean for the Raspberry Pi and ARM64?
- For posterity... Geerling's Law of Kubernetes
- I replaced my MacBook Pro with a Raspberry Pi 4 8GB for a Day
- I'm booting my Raspberry Pi 4 from a USB SSD
- Recording multiple camera angles, full-size, simultaneously, on a Mac
- Raspberry Pi Cluster Episode 4 - Minecraft, Pi-hole, Grafana and More!
- The world's first Drupal 9 LIVE upgrade!
May 2020
- 25K Open Source Pay-it-Forward Pi 4 8GB Giveaway!
- Raspberry Pi 4 goes 8GB, and Raspberry Pi OS goes 64-bit!
- Raspberry Pi Cluster Episode 3 - Installing K3s Kubernetes on the Turing Pi
- The FINAL Drupal 7 to 8 migration live stream - May 19
- Watch out if composer update keeps replacing a dependency
- 10,000 Kubernetes Pods for 10,000 Subscribers
- Getting colorized output from Molecule and Ansible on GitHub Actions for CI
- Making a Terminal window the right aspect ratio for streaming or recording
- 2020 Drupal Local Development Survey Results
- Raspberry Pi Cluster Episode 2 - Setting up the Cluster
- I gave away my books for free, and sales increased 4x
- 'Drupal 7 to 8 Migration' presentation from CMS Philly
April 2020
- End of April - #DrupalCares pledge matched, $3000 total raised!
- Raspberry Pi Cluster Episode 1 - Introduction to Clusters
- Flashing a Raspberry Pi Compute Module on macOS with usbboot
- Presenting on Drupal Dev Environments and Migrations at CMS Philly on May 1st
- Preserving the Web - JJJCL and 'Duel' video
- Donating $1 per like (matched to $3) to the Drupal Association
- Basement Sewing Room Build - Timelapse
- How I livestream with OBS, a Sony a6000, and a Cam Link
- Install Drupal Coder and PHP CodeSniffer to your Drupal project to lint PHP code
- DIY Garage Shelving How-to Timelapse
- Resolving intermittent Fedora DNF error "No such file or directory: '/var/lib/dnf/rpmdb_lock.pid'"
March 2020
- My DevOps books are free in April, thanks to Device42!
- Markdown is an excellent choice for documentation
- Ansible 101 by Jeff Geerling - YouTube streaming series
- How to livestream Masses or other liturgies on YouTube
- Don't let people be alone now that we're (mostly) work from home
- You can get my DevOps books free the rest of this month
- Be careful, Docker might be exposing ports to the world
- Revisiting Docker for Mac's performance with NFS volumes
- The 2020 Drupal Local Development Survey
- Enabling a stale issue bot on my GitHub repositories
- Ansible best practices: using project-local collections and roles
February 2020
- Automatically building and publishing Ansible Galaxy Collections
- Quick and dirty way to strip ANSI terminal output in PHP
- Everyone might be a cluster-admin in your Kubernetes cluster
- Collections signal major shift in Ansible ecosystem
- The Kubernetes Collection for Ansible
- Z shell or Bash command alias to open two tabs to specified directories in macOS Terminal
- The power curve
- Running a Github Actions workflow on schedule and other events
- Saying 'No' to burnout as an open source maintainer
- Migrating JeffGeerling.com from Drupal 7 to Drupal 8 - How-to video series
January 2020
2019 53
December 2019
- Review: Nikon Z50
- Ansible for Kubernetes, my second self-published book
- Debugging networking issues with multi-node Kubernetes on VirtualBox
- Another year, another Crohn’s hospitalization
- Drupal VM 5.1 ('Recognizer') brings PHP 7.4 support
- How to idempotently change file attributes (e.g. immutable) with Ansible
November 2019
- Run Ansible Tower or AWX in Kubernetes or OpenShift with the Tower Operator
- Everything I know about Kubernetes I learned from a cluster of Raspberry Pis
- The best way to keep your cool running a Raspberry Pi 4
- Upgrade the Raspberry Pi 4's firmware / bootloader for better thermals
- The Raspberry Pi 4 might not need a fan anymore
- If you're having trouble formatting a new SSD in a Mac, it could be the cable
- Sponsor my Open Source development work on GitHub
October 2019
- Limiting disk iops on a larger Munin server using rrdcached
- Rescue photos and other files from an SD or microSD card with PhotoRec
- Molecule fails on converge and says test instance was already 'created' and 'prepared'
- Ostomy Awareness Day 2019 - #MyOstomyMyLifesaver
September 2019
- Notes from the AnsibleFest Atlanta 2019 Ansible Contributor Summit
- How to evaluate community Ansible roles for your playbooks
- Mcrouter Operator - demonstration of K8s Operator SDK usage with Ansible
- Re-gripping a Nikon D700 DSLR
- Review: Choetech T535-S Dual Wireless Qi Charger
- Trying out CRC (Code Ready Containers) to run OpenShift 4.x locally
August 2019
- A hospital stay and MLB blackouts led me to RTL-SDR radio
- The physical Apple Card is a case of form over function
- How to add integration tests to an Ansible collection with Molecule
- Discovering whether an Ansible component is 'core' or 'community'
- A Drupal Operator for Kubernetes with the Ansible Operator SDK
- How to add integration tests to an Ansible Collection with ansible-test
- Make your Ansible playbooks flexible, maintainable, and scalable - AnsibleFest Austin 2018 Presentation
July 2019
- Raspberry Pi microSD follow-up, SD Association fools me twice?
- A2-class microSD cards offer no better performance for the Raspberry Pi
- The Raspberry Pi 4 needs a fan, here's why and how you can add one
- Raspberry Pi microSD card performance comparison - 2019
June 2019
- Moving on, aka 'New job, 2019 edition'
- Follow logs from multiple K8s Pods in a Deployment, ReplicaSet, etc.
May 2019
April 2019
- DrupalCon Seattle 2019 is a wrap! It's all about the people
- Running Drupal in Kubernetes with Docker in production
- Drupal VM 5 ('Flynn Lives') brings updates to all the things!
- Drupal 8 successes and failures
March 2019
- Running 'php artisan schedule:run' for Laravel in Kubernetes CronJobs
- Display webcam content overlaid on your presentation on a Mac
- Basement electrical work - electric dryer and clothes washer wiring
February 2019
- Monitoring Kubernetes cluster utilization and capacity (the poor man's way)
- The 2019 Drupal Local Development Survey (updated with results)
- Expanding K8s PVs in EKS on AWS
- How I upgrade Drupal 8 Sites with exported config and Composer
- It's not me, Google, it's you - from GA to Fathom
January 2019
2018 64
December 2018
- Make composer operations with Drupal way faster and easier on RAM
- Updating a Kubernetes Deployment and waiting for it to roll out in a shell script
- AirPods get stuck in low-quality 16 kHz audio mode when starting a VM
- Review: AUKEY Mechanical Keyboard Blue Switch with RGB Backlighting
- Hosted Apache Solr now supports Drupal Search API 8.x-2.x, Solr 7.x
- Deploying an Acquia BLT Drupal 8 site to Kubernetes
- The best way to get the full PHP version string
- Deploying a React single-page web app to Kubernetes
- Testing the 'Add user' and 'Edit account' forms in Drupal 8 with Behat
November 2018
- Analyzing a MySQL slow query log with pt-query-digest
- Running Drupal Cron Jobs in Kubernetes
- Nginx serving up the wrong site content for a Drupal multisite install with https
- Decoding Kubernetes Ingress auth Secrets
- Real World DevOps
- Install kubectl in your Docker image, the easy way
- Review: Night soccer with the Nikon 300mm f/2.8 VR II
- Drupal startup time and opcache - faster scaling for PHP in containerized environments
- Using BLT with Config Split outside Acquia Cloud or Pantheon Hosting
October 2018
- Fall Leaves in St. Louis (2018)
- Testing your Ansible roles with Molecule
- Jeff Geerling.com now supports Dark Mode in macOS 10.14
- Fixing '503 Service Unavailable' and 'Endpoints not available' for Traefik Ingress in Kubernetes
- AnsibleFest 2018 is a Wrap! Slides from my presentation and notes
- Things I learned at the AnsibleFest Austin 2018 Contributor's Summit
September 2018
- Get a list of all a user's public GitHub repositories using GitHub API and jq
- Logging in as an existing user in a Behat test with the Drupal Extension
- Review: Wosports Trail Camera for Hunting and Wildlife
- St. Louis Cam from EarthCam
- Convert Protected M4V videos from iTunes to MP4s with TunesKit
- Getting AWS STS Session Tokens for MFA with AWS CLI and kubectl for EKS automatically
- Idempotently adding an SSH key for a host to known_hosts file with bash
- Fixing Safari's 'can't establish a secure connection' when updating a self-signed certificate
- Fixing 'UNREACHABLE' SSH error when running Ansible playbooks against Ubuntu 18.04 or 16.04
- How to focus stack a set of images in Photoshop
- Review: Sony 20mm f/2.8 E-mount pancake lens SEL20F28
August 2018
- Fixing Jenkins CLI 'ERROR: anonymous is missing the Overall/Read permission'
- Speaking about Playbooks at AnsibleFest Austin 2018
- NEDCamp 2018 - Keynote on DevOps
July 2018
June 2018
- Colons, semicolons, and Crohns surgery, oh my!
- Kubernetes' Complexity
- Dell XPS 13 (9360) Review from a lifelong Mac user
May 2018
- How to upgrade the SSD hard drive in a Dell XPS 13 (9360)
- Reboot and wait for reboot to complete in Ansible playbook
- Hosted Apache Solr's Revamped Docker-based Architecture
- Converting a non-Composer Drupal codebase to use Composer
April 2018
- Drupal Camp St. Louis is taking a break for 2018
- Post-Mollom, what are the best options for preventing spam for Drupal?
- Use Ansible's YAML callback plugin for a better CLI experience
- The ASUS Tinker Board is a compelling upgrade from a Raspberry Pi 3 B+
- Re-partitioning and reinstalling a newer version of Fedora on my laptop
- Drupal, the Fastest - Improving the evaluator experience
- Installing PHP 7 and Composer on Windows 10, Using Ubuntu in WSL
- A modern way to build and develop Drupal 8 sites, using Composer
- Installing PHP 7 and Composer on Windows 10, Natively
- Raspberry Pi microSD card performance comparison - 2018
- Raspberry Pi 3 B+ Review and Performance Comparison
March 2018
- Updating drupal/core with Composer - but Drupal core doesn't update
- Two MidCamp Sessions: Local Dev for Dummies, Jenkins and Drupal
- Getting Started with Lando - testing a fresh Drupal 8 Umami site
February 2018
January 2018
2017 92
December 2017
- Fixing a 2011 MacBook Pro booting to a Grey Screen - AMD Radeon Video Glitch
- Getting the best performance out of Amazon EFS
- Properly deploying updates to or shutting down Jenkins
November 2017
- Getting Munin-node to monitor Nginx and Apache, the easy way
- Ansible for DevOps - 50% off on LeanPub for Black Friday 2017
- Stripping the 'Vary: Host' header from an Apache response using Varnish
October 2017
- Photos of St. Michael the Archangel Catholic Parish
- Generating self-signed OpenSSL certs with Ansible 2.4's crypto modules
- Stopping Docker containers via fuzzy matching on the name
- Ansible jenkins_plugin module and 404 'Plugin not found.'
September 2017
- CI for Ansible playbooks which require Ansible Vault protected variables
- Drupal Camp St. Louis 2017 is a wrap!
- Using MaxMind's free GeoIP databases with the official Docker PHP image
- Patching or using a forked version of an Ansible Galaxy role
- Get started using Ansible AWX (Open Source Tower version) in one minute
- Ansible open sources Ansible Tower with AWX
- Git gives 'ERROR: Repository not found.' when URL is correct and SSH key is used
- Quick way to check if you're in AWS in an Ansible playbook
August 2017
- Reverse-proxying a SOAP API accessed via PHP's SoapClient
- Apache, fastcgi, proxy_fcgi, and empty POST bodies with chunked transfer
- Self-signed certificates via Ansible for local testing with Nginx
- Photographing the 2017 Total Solar Eclipse
- Slow Ansible playbook? Check ansible.cfg!
- Get a list of all available images in the DigitalOcean v2 API
- Add a path to the global $PATH with Ansible
- Parsing YAML files on the command line using Ruby
July 2017
- Review: Arc Hub USB-C Adapter
- DIY threaded solar filter for taking pictures of 2017's total solar eclipse
- How to fix "Host '172.18.0.1' is not allowed to connect" with MySQL Docker
- DrupalCamp St. Louis 2017 Keynote announcement: Adam Bergstein
- Dealing with Drupal 8 and a giant cache_render table
- Review: Innergie PowerJoy 30C USB-C Wall Charger
- Fixing MySQL 'The table is full' error using the official MySQL Docker image
June 2017
- Drupal VM 4.6 adds Debian 9 (Stretch), Vagrant plugin auto-install, and more Docker
- Ansible playbook to upgrade all Ubuntu 12.04 LTS hosts to 14.04 (or 16.04, 18.04, 20.04, etc.)
- Mount an AWS EFS filesystem on an EC2 instance with Ansible
- Updating all your servers with Ansible
- Changing a deeply-nested dict variable in an Ansible playbook
- Fixing the blurry focus on some Raspberry Pi Camera v2 models
- Adding strings to an array in Ansible
- Use an ARG in Dockerfile FROM for dynamic image specification
- Mount a Raspberry Pi SD card on a Mac (read-only) with osxfuse and ext4fuse
May 2017
- dockrun oneshot — quick local environments for testing infrastructure
- Drupal VM does Docker
- Call for Sessions is open for DrupalCamp St. Louis 2017 - come and speak!
- Bash logic structures and conditionals (if, case, loops, etc.) in Travis CI
- How to fix SSH errors when using Ansible with newer OSes like Ubuntu 16.04
- AirPort Extreme showing 'Device Not Found'? Here's a fix
- Composer and Drupal are still strange bedfellows
- How to make Safari accept Google search strings in the Location bar quickly
- Cloning private GitHub repositories with Ansible on a remote server through SSH
April 2017
- Follow up questions to 'Don't drown in your open source project'
- Don't drown in your open source project!
- Composer BoF at DrupalCon Baltimore
- Review: CHOETECH USB-C to DisplayPort cable
- Using Ubuntu Bash in Windows Creators' Update with Vagrant
- Setting up a Pi Hole for whole-home ad/tracker blocking
- Fix for Ansible hanging when used with Docker and TTY
- MidCamp 2017 Presentation - Drupal VM for Drupal 8 Development
March 2017
- Drupal VM on Windows - a fast container for BLT project development
- Review: AUKEY 30,000 mAh USB-C Portable Charger (with USB A, USB C, Micro USB)
- Soup to Nuts: Using Drupal VM to build local and prod
- Use a Drupal 8 BLT project with Drupal VM on Windows 7 or Windows 8
- Discussing Open Source project maintenance ('how to not drown') at DrupalCon Baltimore
- Raspberry Pi Zero W as a headless time-lapse camera
- Drupal's Contrib floodgates are open, PAReview your projects in Drupal VM!
- Refurbishing a classic microphone - the Electro-Voice RE20
- How I discovered my left AirPod was bad
February 2017
- Colonoscopy, or: Mount Vesuvius followed by blissful sleepytime!
- Thoughts on the Acquia Certified Front end Specialist - Drupal 8 Exam
- Getting low input level with a USB mic or audio interface? Check your hub
- Rebuilding an Electro-Voice RE20 microphone
- Thoughts on the Acquia Certified Back end Specialist - Drupal 8 Exam
- Adding Configuration Split to a Drupal site using BLT and Acquia Cloud
- Tips for Managing Drupal 8 projects with Composer
- Profiling Drupal 8 Sites in Drupal VM with XHProf and Tideways
- YAML formatting and Drupal 8 - making things readable
- Preserve the ability to Quick Edit nodes when theming node templates!
- Review: NOYCE 13' (4m) Lightning cable
- Review: Satechi USB Type-C inline Power Meter (ST-TCPM)
January 2017
- Set up BLT and Drupal VM entirely within Windows 10
- Apple's Photos for macOS taking forever to scan photos for People?
- Re-save all nodes of a particular type in an update hook in Drupal 8
- Can't upload more than 20 files using Media Image Entities in Drupal 8?
- Testing redirections using Behat and the Behat Drupal Extension
- Drupal VM Tips & Tricks - brief remote presentation for DrupalDC
- Add a set of Taxonomy terms via a custom Drupal module's update hook
- I returned my 2016 MacBook Pro with Touch Bar
- How to securely erase free space on a hard drive (Mac)
- Review: AUKEY USB-C Hub for New MacBook Pro
- Removing Sticker Residue from a MacBook Air (or another laptop)
- Thoughts on the Acquia Certified Drupal 8 Site Builder Exam
2016 106
December 2016
- Setting up Faceted Apache Solr search in Drupal 8
- Why I close PRs (OSS project maintainer notes)
- External display waking up? Disable notifications when your screen is off
- A Tale of Two Apples: AirPods and the Touch Bar
- Upgrading Drupal VM in a BLT-powered project
- Drupal VM 4 is Here! With PHP 7.1 and easy PHP switching
- MetaZ - Alternative to MetaX and iDentify 2 for tagging video content in iTunes
- Review: Epson DS-40 WiFi portable document scanner
November 2016
- Ansible for DevOps is $0.99 for Black Friday/Cyber Monday 2016!
- Review: Nikon D500 DX SLR
- Figuring out why an external USB hard drive won't spin down on my Mac
October 2016
- I made the switch from Aperture to Photos
- Fix macOS Screen Sharing frequent pauses or freezes
- Remove ALL your local Vagrant Boxes via this bash command
- Experience with getting LASIK a second time (2016 Edition)
- Apple giveth, and Apple taketh away — the Escape key
- Replacing the foam speaker surround on my JBL speakers
- How I test Ansible configuration on 7 different OSes with Docker
- Using Ansible through Windows 10's Subsystem for Linux
- Review: Elecrow HDMI 5" 800x480 TFT Display with XPT2046 Touch Controller
- Migrating 20,000 images, audio clips, and video clips into Drupal 8
- Drupal VM supports MySQL, MariaDB, and PostgreSQL
September 2016
- Require a minimum Ansible version in your Playbook
- How to get your server's emails through Gmail's spam filter with Exim
- Interview with Cal Evans on Voices of the elePHPant
- Remapping the Caps Lock key to Escape in macOS Sierra
- Change the displayed username in Drupal 8 ala Realname
- Server Check.in turns 4 years old
- My Favorite Aunt
- Self-Publish, don't write for a Publisher
- The Joy of Crohn's
August 2016
- AnsibleFest 2016 Review and Ansible Roles for Fun and Profit video online!
- Remove a single Certbot (LetsEncrypt) certificate from a server
- Increase the Guzzle HTTP Client request timeout in Drupal 8
- Converting a batch of Dashcam videos into a timelapse
- Mobius Mini Action Cam Pro - Dashcam setup and review
- Register and Submit Sessions for DrupalCamp St. Louis - Sep 10-11 2016
- Should I disable PHP warnings and notices?
- What to do if Twitter won't allow Verification because of unconfirmed email
- Changing the font for one character in a string on a Drupal site
- How to attach a CSS or JS library to a View in Drupal 8
- Hide the page title depending on a checkbox field in a particular content type
July 2016
- The Crêpe I made in honor of Juno's mission to Jupiter
- Reviving an old dresser by rebuilding the wooden drawer rails
- Gluten, egg, and dairy-free sweet crêpe recipe
- Migrating Link fields with multiple properties with Drupal 8
- Poor Man's XHProf profiling of Drupal 8 Migrations and Drush commands
- Getting Emoji and multibyte characters on your Drupal 7 site with 7.50
- I hit inbox zero!
- Raspberry Pi (or another device) suddenly not getting a DHCP address?
June 2016
- Speaking about Ansible Roles at AnsibleFest SF 2016
- Setup a FOSCAM WiFi camera directly connected to a Mac via Ethernet
- Reintroducing the sanity of CM to container management
- DrupalCamp St. Louis 2016 - Call for Sessions!
- Deleting a directory in Windows 10 with 'Source path too long' using robocopy
- Hosted Apache Solr — now for Drupal 8!
- Fixing ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY SSL error in Chrome
- DrupalCamp St. Louis 2016 will be September 10-11
- Speeding up Composer-based Drupal installation
May 2016
- How I record my own conference presentations
- Ensuring Drush commands run properly using Drush 8.x via Acquia Cloud Hooks
- Highly available Drupal on a Raspberry Pi Cluster - phptek 2016 session
- Tips for Staying Sane while Working from Home - phptek 2016 session
- Drupal VM 3 is here!
- Adding a role to a user programmatically in Drupal 8
- SSH into a Raspberry Pi with only a network cable using OS X's 'Internet Sharing'
- Thoughts on the Acquia Certified Developer - Drupal 8 Exam
- How to build your own Raspberry Pi Cluster
- Two Raspberry Pi Zeros, making a smiley face
- Set up faceted Apache Solr search on Drupal 8 (2016 - deprecated)
- Latest DIY project: Fireplace/Chimney removal for a nicer living room
April 2016
- Migrate a custom JSON feed in Drupal 8 with Migrate Source JSON
- Drupal VM - DrupalEasy Podcast and DrupalCon NOLA BoF
March 2016
- Streaming PHP - disabling output buffering in PHP, Apache, Nginx, and Varnish
- New stores around Kenrick Plaza development in Shrewsbury
- Review: ODROID-C2, compared to Raspberry Pi 3 and Orange Pi Plus
- Yes, Drupal 8 is slower than Drupal 7 - here's why
- Use Drupal 8 Cache Tags with Varnish and Purge
- Review: Raspberry Pi model 3 B, with Benchmarks vs Pi 2
- Fastest way to reset a host key when rebuilding servers on the same IP or hostname frequently
- How to overclock the microSD card reader on a Raspberry Pi 3
- Developing with VirtualBox and Vagrant on Windows
- Happy #PiDay 2016 - Celebrating with the Raspberry Pi
- What's new in Ansible 2 and Ansible Galaxy 2 (Presentation)
- Setting a Static IP address with Raspbian Jessie Lite on the Raspberry Pi
- Format eMMC storage on an Orange Pi, Radxa, etc.
- Orange Pi Plus Setup, Benchmarks, and Initial Impressions
- DIY project - removing floor-to-ceiling mirrors from a wall in our house's dining room
February 2016
- Blog post id enumeration can lead to unwanted information disclosure
- Photos from Memorial Mass for Justice Antonin Scalia
- Coming soon: Highly-available Drupal 8 on a Raspberry Pi Cluster
- Drupal VM - Quick Introduction Video
- Honeypot is the 'Drupal 8 Module of the Week'
- Reddit AMA on Monday, Feb 22 – ask me about Drupal VM, Honeypot or anything!
- Drupal VM 2.3.0 released - dashboard, Windows, tests, and more
- Using SMB with symlinks instead of native synced folders with Vagrant and VirtualBox
- Set up a hierarchical taxonomy term Facet using Facet API with Search API Solr
January 2016
- Pater Nobis (Our Father)
- How to shoot a large event (photography gear / workflow)
- Honeypot makes an appearance on the Modules Unraveled podcast
- Speaking at php[tek] in St. Louis May 25 and 26!
- Configuring CloudFlare with Drupal 8 to protect the Pi Dramble
- Drupal VM's latest update adds Redis, PHP-FPM support to Apache
- Podcast interview with Len Epp on the LeanPub podcast
- A good use for a Raspberry Pi - Missile Control
- Hello, World! (For the thousandth time)
2015 68
December 2015
- Always getting X-Drupal-Cache: MISS? Check for messages
- Use Vagrant 1.8's new ansible_local provisioner for Ansible provisioning
- Benchmarking PHP 7 vs HHVM - Drupal and Wordpress
- Winterizing your irrigation system with a Febco 765-1 Backflow preventer
- Rorate Mass at St. James the Greater in St. Louis
- Drupal 8 with Redis, PHP 7, Nginx, and MariaDB on Drupal VM using CentOS
- "Error: The libsass binding was not found" when running gulp
- Raspberry Pi microSD card performance comparison - 2015
November 2015
- Raspberry Pi Zero - Conserve power and reduce draw to 80mA
- Upgrade an Apache Solr Search index from 1.4 to 3.6 (and later versions)
- Raspberry Pi Zero - Power Consumption Comparison
- Celebrate Drupal 8 in St. Louis, MO on Nov 19 - Food, Drinks, and a Raspberry Pi!
- Drupal Pi project featured on Acquia Dev Center Blog
October 2015
- Experience with LASIK
- Finished writing my first book, Ansible for DevOps
- 6 Lessons learned self-publishing my first book
- Ansible for DevOps - available now!
- Souls and Goals - 2015 Soccer Game
September 2015
- Shrewsbury, MO Walmart opens September 23, 2015
- $25K in book sales, and I'm almost ready to publish
- New features in Ansible 2.0: Blocks
August 2015
July 2015
- The Constraints of in-home Website Hosting
- Launching my first Drupal 8 website — in my basement!
- How to Build Your Own Raspberry Pi Cluster ('Bramble')
- The Raspberry Pi Dramble, in Videos
- Nginx Load Balancer Visualization on a Raspberry Pi Cluster
- Simple GlusterFS Setup with Ansible
- Solving the Emoji/character encoding problem in Drupal 7
- Tips for a better Vagrant-based development workflow
- Ansible 101 - on a Cluster of Raspberry Pi 2s
- Teaching Ansible with six Raspberry Pis
- Review: Truffol Autograph Fusion iPhone 6 case
- Ansible St. Louis Meetup on July 8, 2015, at Riot Games
- Major improvements to Drupal VM - PHP 7, MariaDB, Multi-OS
June 2015
- DrupalCamp St. Louis 2015 finished, session videos available online!
- High Performance Drupal - Speaking at DrupalCamp STL.15
- Creating custom dynamic inventories for Ansible
- Sessions are Live for DrupalCamp STL.15!
May 2015
- Review: Intocircuit Power Castle 15000 mAh Dual USB portable charger
- DrupalCamp St. Louis 2015 - register now, come help at our first-ever sprint day!
- Review: iClever 6-port 10A USB charging station
- Automating Your Automation with Ansible Tower
- DrupalCamp St. Louis 2015 - Keynote Speaker and Session Submission Deadline
- Thoughts on the Acquia Certified Drupal Site Builder Exam
- Ansible for Drupal infrastructure and deployments - DrupalCon LA 2015 BoF
- Hosted Apache Solr now includes Tika attachment support!
April 2015
- Developing for Drupal with Vagrant and VMs
- Honeypot for Drupal 8, 3 years in the making
- Thoughts on the Acquia Certified Developer - Front End Specialist Exam
- How to edit and navigate chunks of a giant text file on Mac/Linux
- Thoughts on the Acquia Certified Developer - Back End Specialist Exam
- Solr for Drupal Developers, Part 3: Testing Solr locally
- Kenrick Plaza Walmart Redevelopment - April 2015
- Drupal on Mothballs - Convert Drupal 6 or 7 sites to static HTML
March 2015
- Lessons Learned building the Raspberry Pi Dramble
- Camp Organizers BoF at MidCamp 2015
- MidCamp 2015 - Ansible + Drupal 8 Presentation
- Ansible + Drupal + Raspberry Pi Dramble - Presentation at MidCamp 2015
- Controlling PWR and ACT LEDs on the Raspberry Pi
- Everything over Cat5 Cable
- New standing desk, a Raspberry Pi cluster, and upcoming presentations
- Ansible deployments Visualized with a Raspberry Pi cluster
February 2015
- Setting up GlusterFS with Ansible
- Introducing the Dramble - Raspberry Pi 2 cluster running Drupal 8
- Getting Gigabit Networking on a Raspberry Pi 2, 3 and B+
- Mounting a Raspberry Pi's ext4 SD card on Ubuntu 14.04 inside VirtualBox on Mac OS X
- Setting up the Edimax EW-7811Un or Tenda W311Mi 802.11b/g/n WiFi Adapter on a Raspberry Pi
2014 71
December 2014
- Garden Glow at the Missouri Botanical Garden
- Highly-Available Infrastructure Provisioning and Configuration with Ansible
- Highly-Available PHP infrastructure with Ansible
November 2014
- NFS, rsync, and shared folder performance in Vagrant VMs
- Viewing email in Linux using postfix's mailq and postcat
- Creating a contact form programmatically in Drupal 8
- Midwestern Mac's Vagrant Boxes - CentOS and Ubuntu
- Sync a Shared Google Calendar with macOS, OS X, iOS (iPhone, iPad), or CalDav
- Preventing yourself from accidentally breaking production with Drush
October 2014
- How to set complex string variables with Drush vset
- #vBrownBag DevOps presentation - Oct 29 [Updated]
- Resizing a VirtualBox Disk Image (.vmdk) on a Mac
- Fixing Drupal Fast - Using Ansible to deploy a security update on many sites
- St. Louis Drupal Group - Hackathon on Headless Drupal 8 & AngularJS
- Writing on LeanPub - $0.21 per word
- Souls and Goals - 2014 Soccer Game
September 2014
- Basement Home Office Build
- Kenrick Plaza Walmart Redevelopment - October 2014
- Secure your servers from Shellshock Bash vulnerability using Ansible
- SVN2Git and "fatal: bad default revision 'HEAD'"
August 2014
- YAML best practices for Ansible playbooks - tasks
- Solr for Drupal Developers, Part 2: Solr and Drupal, A History
- Solr for Drupal Developers, Part 1: Intro to Apache Solr
- Switching an SVN repository to Git using git svn
July 2014
June 2014
- Yet Again: Catholics, please stop stealing artwork and graphics!
- DevOps for Humans - Ansible presentation at DrupalCon Austin
- DevOps for Humans - Ansible presentation at DrupalCon Austin
- Thoughts on the Acquia Drupal Developer Certification Exam
- Route local emails to another email address using Postfix on Linux
May 2014
- DrupalCon Austin 2014 - Notes on my First Timer's Guide
- Testing Ansible Roles with Travis CI on GitHub
- Simple Git-based multi-server deployments
- Drupal and Node.js at STLJS Meetup - Thursday, May 15!
- A Busy Spring!
- Diagnosing Disk I/O issues: swapping, high IO wait, congestion
April 2014
- Drupal 8 - A Brief Introduction (DrupalCamp STL.14 Presentation)
- PHP: It doesn't have to be a bad experience
- The Easy Chicken - Backyard eggs in St. Louis, MO
- A brief history of SSH and remote access
- DrupalCon and DrupalCamp news + free DrupalCon ticket!
- Sessions at DrupalCon and DrupalCamp
March 2014
- Building VM images with Ansible and Packer
- Switching an SVN repository to Git with KDE's Svn2Git
- Meet Phergie, an efficient PHP IRC bot
- Meetings and Introverts
- rsync in Vagrant 1.5 improves file performance and Windows usage
- Using Ansible Galaxy
- Announcing DrupalCamp STL.2014 - April 26 in St. Louis, MO
- Remove Tower's .git folder association in Mac OS X's Finder
- Farewell, Grandpa Charlie
February 2014
- Self-Publishing a Book (on Ansible)
- Self-publishing my first technical book on LeanPub
- Multisite Apache Solr Search with Domain Access
- Ansible Playbooks for Drupal 8 Testing and Mac Dev
- Vagrant - NFS shared folders for Mac/Linux hosts, Samba shares for Windows
- Dump an entire database with structure only for some tables with mysqldump
- Connect to IRC via Adium when connected through an LTE hotspot
- Getting a file from a Samba server in an Ansible playbook
- Review: Logos' Verbum Bible Software
January 2014
- Start a Node.js app with Forever and Ansible
- Debugging Varnish VCL configuration files
- VirtualBox, Vagrant, and Ansible: local development environment prowess
- Running Ansible within Windows
- Snow Bird
- 2013 MacBook Air WiFi Problems (high latency, dropped connections) [Updated]
- Build a Wood Standing Desk for your Cubicle
- A new year, a new standing desk
- Drupal 2014 - New Year's Resolutions
2013 86
December 2013
- Quick logrotate example for Apache logs and some gotchas
- Easily manage Apache VirtualHosts with Ansible and Jinja2
- Responsive design > mobile sites
- This Advent: Simplify
November 2013
October 2013
- reCAPTCHAs are easier to read—but they're still a bad idea
- Kerberos authentication on a Mac OS X workstation with Chrome
- Apache Kerberos Authentication and basic authentication fallback
- Fixing SSH unknown error when provisioning a Vagrant VM with Ansible
- Souls and Goals Clergy vs. Seminarian Soccer Match - November 7
- Can't Disable Annoying Chrome Notifications menu bar item on Mac OS X
- Migrating style and script tags from node bodies into Code per Node
September 2013
- How to redirect a user after login to a specific page
- Use a Raspberry Pi running Raspian OS behind a proxy server
- CI: Deployments and Static Code Analysis with Drupal/PHP
- Why are there no female Roman Catholic priests?
- DevOps, Server Deployment and Configuration Management
- Fixing sonar-runner error - Can not add twice the same measure
- Hosted Apache Solr for Drupal
- Staying Current - Tech News and Development Trends
- From the Server Check.in Blog: Keeping a Lid on Technical Debt
August 2013
- Interesting St. Louis History - How the River Des Peres became a Sewer
- Ensuring Drupal email doesn't get sent from a local development environment
- Restrict access to the Apache Solr admin interface
- Overriding a template file (.tpl.php) from a module
- D8CX at MWDS - Porting Wysiwyg Linebreaks to Drupal 8
- The Drupal Way™
- Install Node.js on CentOS 6 using yum
- Running Vagrant + VirtualBox from an External Drive
July 2013
- Pope Francis is not the anti-Benedict
- Steubenville 2013 - Chosen
- Migrating Drupal 7 users from site to site while preserving password hashes
- Copyright, the USCCB, and Evangelization
- Quickly generate secure, random passwords (Mac)
June 2013
- On Low-Cost Web Hosting/VPSes
- Boost Expire module being deprecated; how to switch to Cache Expiration
- Quickly resetting a local MySQL database from the command line [Updated]
- The New Shiny
- Review: Anker Ultra Slim Mini Bluetooth 3.0 Wireless Keyboard
- CNMC Boston - Website up, registration open
- A few of the best books I've read in a long time [Rinzler's Making of Star Wars]
- Stop letting .DS_Store slow you down
May 2013
- Feeling Better, and a Contest!
- Moving Server Check.in functionality to Node.js increased per-server capacity by 100x
- 2013 VPS Benchmarks - Linode, Digital Ocean, Hot Drupal
- In the Hospital
- 2013 Deacon Ordination Mass Pictures Online
April 2013
- Review: iRig Mic Cast
- Push your Git repositories to a central server, in a bare repository
- Make sure your Linux servers' date and time are correct and synchronized
- Giving Back - Helping with Drupal's Issue Queues
- Fixing Munin's [FATAL ERROR] Lock already exists: /var/run/munin/munin-update.lock. Dying.
- Real User Monitoring (RUM) with Pingdom and Drupal
- Shuttering isthereamoduleforthat.com
- A New Job (2013 edition)
- 3 Small Tweaks to make Apache fly
March 2013
- Time Refines Code
- Tolerating the Hatred
- Review: RODE smartLav iPhone Microphone
- The Story of the PING Program
- Review: Honeywell Lynx 5100 Security System
- This Bud's for You, Grandpa
February 2013
- DrupalCon Portland is Coming Up... and Spam-Fighting News!
- #ThanksPontifex for your infectious joy
- Review: Audio-Technica ATH-M30 Stereo Headphones
- Taking Twitter by Storm: Let's get #ThanksPontifex trending on Feb. 28
- Aquinas and More Closing
- Setting a max_execution_time limit for PHP CLI
- Using FeedBurner? For the sake of control, enable MyBrand service
- The Mass, Explained by an App
- Need to evaluate a Drupal module, theme, or distro quickly? [Updated]
- Review: Philips Dimmable 12.5 Watt LED Light Bulb
- What's a good video camera to use for short YouTube videos?
- Beautiful tour of the Sistine Chapel (VR)
- It's going to be a good Saturday
January 2013
- 3 million pageviews
- Daddy #protips
- What were they thinking?
- Great video on Altar Servers
- How to Build a Simple $50 Standing Desk
- The Meaning of Life
- Buying and Owning a Gun
- Drupal News from the Midwest!
- Il bambino / La bambina and retrospective
- Review: The Making of Star Wars: The Empire Strikes Back
- "Ordain a Lady" - Thérèse of Lisieux is not impressed
2012 108
December 2012
- More Christian Allegory in The Dark Knight Rises: Peter Foley and Sampietrini
- Server Check.in - Website and Server uptime monitoring
- Announcing Server Check.in - A simple, inexpensive website monitoring service
- Pope Benedict XVI joins Twitter as @pontifex
November 2012
- Replacing the hard drive in a (non-unibody) MacBook Pro
- I couldn't resist [Gangnam style nun dance]
- Save space by removing Photo Stream photos from your Mac
- Tips and Tools for New Homeowners
- Preventing Security Holes
- The Importance of All Souls
October 2012
- Windows 8 - A Long Way to Go [Updated]
- Year of Faith - Resources
- Trouble sending emails from localhost or MAMP? Check your SPF
- Contraception, Abortion, and the HHS Mandate
- 'Stir' over Facebook comment caused by breach of privacy [Updated x2]
- Force SSL (https://) for only one virtual host with .htaccess
- Line breaks instead of Paragraphs in TinyMCE (by default)
September 2012
- Goodbye, iPhone 4
- Questions about Wordpress
- Catholic Memes
- Review: iPhone 5 and External Microphone Comparison
- Review: iPhone 5
- Checklist for Setting up a CentOS 6 LAMP Server
- Adapting Your iOS App to work with iPhone 5/iOS 6
- Facebook OAuthException when posting to Wall for a Page
- New St. Louis-area Catholic Blogger
- Hum or Buzz with a Logitech USB Headset
- Review: Audio Technica PRO88W-R35 Wireless Lavalier System
- 16-bit Catholic Podcast - CNMC and politics
- APC Caching to Dramatically Reduce MySQL traffic
- Glitchy Video and Freezes on MacBook Pros
- Review: Kensington Wireless Presenter with Laser Pointer
- Catholic New Media Conference (CNMC) 2012 - Wrap-up
August 2012
- Review: Tascam iXZ Mic and Guitar Interface for iOS
- Tweet your Keynote Presentation - While you're presenting
- iPhone - A Powerful Tool for the New Evangelization
- My Password Management Strategy
- Manage your Passwords Wisely
- WiFi for a Small Tech Conference/Meetup
- Dot-Matrix Printers
- Reclaim Your Hard Drive - Saving Tons of Space with MySQL InnoDB tables
- Mac OS X Lion/Mountain Lion - Could not join network/timeout
- LCWR Assembly in St. Louis
July 2012
- Photography Weekend Part 3 - Backup Strategies and Disaster Preparedness
- "Noli irritare leonem" – Don't disturb the lion
- Photography Weekend Part 2 - Taking Photos
- Review: TouchType iPad Case
- Photography Weekend Part 1 - Packing My Gear
- Too Hot for the Birds!
June 2012
- App for iOS/Android - Jesuit Conference App
- Jesuit App for iPhone and Android
- Android Map Marker Drawables/Icons - Original Vector Illustration
- Pushing the Positive (Catholic PR and Marketing)
- Don't Wait, Delegate! Proper use of threading and queueing
- Use delegation, threading, and queues to speed up operations
- Computers are amazing
- My Workstation (2012 edition)
- How a Hard Drive Works (in Slow Motion)
- Interview with the 16-Bit Catholic (Dustin Faber)
- YouTube Channel Update Video
- Tech Talk Interview on CatholicMom.com
- PSR-0 PSR-1 PSR-2, Drupal, and You!
May 2012
- Beautiful Flower at the Cathedral
- 2012 Mass of Priesthood Ordination (Photos)
- For Greater Glory - Movie about Cristero War
- Gracious in victory, gracious in defeat
- Archdiocese of St. Louis and Catholic Charities sue federal government over HHS Mandate
- Catholic New Media Conference 2012 - See you there!
- Pope exhorts us to reflect in silence during 2012 Communications Day
- Photography book – thoughts and questions
- Filter/Search on multiple fields with Views 3.x
- Pope Benedict XVI on Catholic Identity in Educational Institutions
April 2012
- Review: Nikon 18-35mm AF-D Lens
- Getting Back into Photography - Lens Debates
- Minecraft Patching Guide for Macs
- Finding an Image's width/height dimensions using JavaScript
- A Few New Sites
- Camera and Lens Rentals in St. Louis, MO
- Getting Ping statistics with PHP
- Making your current Drupal theme responsive, simply
March 2012
- Life is a Prayer - Looking great on your smartphone!
- Review: October Baby (Movie)
- Getting XHProf working well on Mac OS X Lion
- Using Batch API to build huge CSV files for custom exports
- St. Louis Catholic Business Owner Sues HHS over Contraception Mandate
- Simple iptables rules for a typical LAMP server
- "You have inserted a Blank DVD" – Opening discs from Windows on a Mac
- Deleted my Google+ Pages
- A First Timer's Guide to DrupalCon
- Pope Benedict on Silence
- Creating an Image Effect to put a play button on Video thumbnails
- HHS Mandate - Why Birth Control?
February 2012
- Old Mac of the Month - Macintosh IIci (on 512 Pixels)
- Life will find a way...
- Obama's HHS 'Concession' is no concession at all
- Quick Resizer - My first Mac App
- Ethics in Media Use: Catholics are NOT Excused from Licensing, Copyright
January 2012
- Craigslist etiquette
- Mobile Phone SMS Spam Can be Expensive
- What happened to Life is a Prayer.com?
- Running a Windows XP VM in Parallels (Mac) from a USB Flash Drive
- Interview on Make Web Not War
- Crestwood Mall - Ghost Town
- Inspiration and Garbage
- Buzz or Hum in Computer Speakers
- Moving Comments into a Block - Drupal 7
- Routines and Marriage - Keeping it Together
- Sending emails to multiple receipients with Amazon SES
2011 163
December 2011
- Using apachebench (ab) with Drupal 7 to load test site with authenticated users
- Bullfrog best at eating virtual ants, cameramen
- Review: GuitarJack Model 2 - Audio Interface for iPhone 4/4S, iPad
- Why I don't develop for Android first
- Posting to Facebook: Use a service or DIY via the Open Graph API?
- Changing RSS Feed item links (and other data) in Drupal 7
- TextMate 2.0 Alpha Released
- Things are working out good
- Microsoft Xbox 360 2011 December Update Apes iOS slide-to-search
- Simple Git feature branch workflow
November 2011
- Calling form validate functions in include files from other modules
- Simple MAMP/MAMP Pro VirtualHosts in Parallels / Windows XP
- HostGator Cyber Monday Deals [sponsor]
- Advent Wreath - Vector Illustration
- The Catholic Developer and Blogger Christmas Wishlist, 2011
- Steve Jobs, on Pornography
- Steve Jobs, on Abortion
- Catholic News Live mobile app for Android
- Freedom from Choice (Reasons to be Catholic)
- User-friendly spam prevention for your Drupal site
- St. Louis Coalition for Life Launched 11/11/11
- Removed Leaderboard Ads over Articles
- Drupal 6.x and PHP 5.3.x - Date Timezone warnings
- Problems copying a huge Aperture library from one drive to another
- Rooting Android - General Observations and OG Droid + LG Ally
- Preventing Form Spam
- Catholic Apps make faith aids mobile
- St. Louis-area Catholic Bloggers / Websites
- Configure sendmail on CentOS to allow sending of email from localhost
- Problems with Android's Back Button
October 2011
- Rally Squirrel Says "Relax..."
- Server Move... Site Reorganization
- Pick and Choose F-key usage (Brightness, Sound, Dashboard, etc.) on a Mac
- Modern Office Computers
- Prefill the Subject of a Privatemsg Message
- Life, Liberty, and Social Media
- Views from the Willis Tower SkyDeck
- The Catholics Next Door - Appearance on The Catholic Channel
- Willis Tower, Chicago IL
- Shedd Aquarium Aquatic Show - Dolphin Show (White-sided Dolphins)
- Supercharge your Key Repeat rates in Mac OS X Lion
- MobileMe Stuck on 'Registering Computer...'? Try this
- Force-Sleep the Display on a 2010-2011 MacBook Air
- Changes
- Review: Black & Decker 15.6V DustBuster
- Steve
- Ninja Nuns!
- Catholic New Media Conference 2011 - Kansas City
- From the Word Made Flesh to the Word Gone Digital
- Keynote: Sr. Ann Flanagan (#CNMC11)
- The Catholic Church in New Media (#CNMC11)
- #CNMC11 Keynote: Seán Patrick Lovett
September 2011
- Vainglory: Best Catholic Blog to read on the Toilet
- Turning your web presence into a social network
- Sanctifying Mobile Technology - #CNMC11
- Checking in at Church: Parish website development
- The Continuity of the Eternal Word in New Media
- Gadgets & Gizmos - Sanctifying Mobile Technology
- Reset
- Apps I Like: BreakTime - Great for Desk Workers
- New Tool for Telling Time: Alltheti.me
- Review: Fostex AR-4i iPhone 4/4S Stereo Audio Interface
August 2011
- Wrapper function for simple drupal_mail() sending in Drupal 7
- MySQL Select rows that are in one table but not in another
- WYSIWYG Editing on iOS 5
- WYSIWYG Editing (contentEditable support) in iOS 5
- Using Migrate to Import Content from a Legacy Database
- My Computing History - All the Computers I've Owned
- Fostex AR-4i Allows Stereo Recording with iPhone 4 and 4S [Updated]
- jQuery Code to Select Textarea or Text Input Field when Selected
- Introducing the Honeypot form spam protection module for Drupal
- MySQL General Errors on MAMP/WAMP/XAMPP
- Go to Confession
- The Revised Translation of the Roman Missal
- All the Hubbub About Drupal 7
- Trouble Printing in Mac OS X Lion? Reinstall the driver
- Storm Mimics Shape of Eastern Missouri Border
- flockNote v3 is Launched
- Dreaming in Drupal
July 2011
- 15 Minutes...
- PNG Compression Tool for Mac OS X Lion
- AirPort Express - Flashing Yellow Light, Not Getting DHCP Address from Cable Modem
- PHP: Calculating Monthly/Yearly Billing Dates - Same day next month
- Making an old iPod Mini Awesome Again
- The Church and New Media - Book on Catholic New Media use
- Disabling Autocomplete on forms in Drupal 6 or 7 - Forms API
- 2011 Ordination Season Over
- Adding Images to Search Results (Drupal Search)
- Programmatically adding and removing roles to users in Drupal
June 2011
- Tips for Using a MacBook (Air, Pro) in Clamshell Mode
- Review: TRENDnet 5-Port Gigabit GREENnet Switch
- Review: Bose Companion 2 Series II Multimedia Computer Speaker System
- Programmatically Adding or Removing a User or Node Reference from a Node (D7 / References)
- Do the Ends Justify the Means?
- Does it Surprise Anybody?
- [Updated] No Reason for Catholic Charities to Support Hooters
- Views: Show "Showing X-X of X results" (page and result counter) in Drupal 7
- Reeder (RSS reader) for Mac released - finally out of beta!
- Reeder App for Mac released on Mac App Store
- Review: iRig mic for iOS and Android
May 2011
- Adding a class to <body> in a module in Drupal 7
- Archdiocese of St. Louis' Eucharistic Video
- Catholic Tech Talk's Top-Five Diocesan Websites
- Moving Scheduler Module's 'Scheduling Options' Out of the Vertical Tabs in D7
- Review: MaxConnect USB External Enclosure for Unibody MBP Optical Drive
- Fixing Problems with Passwordless SSH Authentication
April 2011
- On Writing Documentation
- The Magic Keyhole in Rome
- A New Job
- Grab a Single Frame from a Video in QuickTime X
- Rome from St. Peter's Dome (Cupola)
- Who needs a Calculator? Spotlight is better.
- Declustering Markers in Google Maps with Drupal?
- Morality and Politics
- Things: Opportunity Lost
- Doing Some Benchmarks - Mac Processor Speed
- One of the best things I've read in years - from George Orwell
- Florissant, MO Mayoral Elections - Susan Geerling for Mayor!
March 2011
- The Exodus App – Pulled from App Store for being "Gay Cure"
- CNL - Catholic News Live iOS/Android Mobile App
- Converting between Exposure Value and LUX
- Our Lady of Perpetual Help - Original Icon in Rome
- Catholic News Live App on the App Store!
- Best Practices and Tips for In-App iPhone or iPod Touch UIWebView Browsers
- iPhone App Development... DrupalCon... Life...
- John Hancock Center - Guitar Hero Style
- Scaling the Drupal Community - Notes and Reflections
- Archdiocese of St. Louis has a new App - Catholic STL
- Catholic STL - iPhone App for Archdiocese of St. Louis
- Two from the Review - Sunday Obligation + Marriage in a Church
- Review: iPhone 4 Tripod Mount - SnapMount
- iPad 2 - Mobile Audio/Video Recording + External Microphones
- Some iPad 2 Hidden Gems
February 2011
- Technology and Faith
- As Seen on IRC...
- Gitting Started with New Drupal.org VCS
- Git through an NTLM Proxy (Corporate Firewall) for drupal.org
- On Being Overpriced
- Drupal 7 Front-End Performance - Shared Hosting Recommendations
- In Kenya, Catholic Seminary Has Priorities Straight
- Prepping for Git on drupal.org - Need a Git client? Try Tower
- On Developing for Android... or Not
- Winter Ice and Snow Storm Hits St. Louis Hard
January 2011
- Integrate a Webform (3.x) with PayPal
- One Billion Stories - Catholic Stories
- Visibility for Mac
- Xbox 360 Red Ring of Death - Repaired! (in St. Louis)
- Mac OS X Mail - Exchange Account Stuck unless Mail Quit and Restarted?
- Removing a Stuck Disc (CD/DVD) from a Mac - EVERY Way Possible
- Photo Used in History Channel Documentary
- Susan Geerling for Mayor of Florissant, MO
- Review of Nikon D7000 - Almost Complete
- Review: iShot iPhone Tripod/Window Mount
- Developer Experience on the Mac App Store
- Review: Nikon D7000
- Mac App Store - Real Reason for It?
- Switched back to Safari from Chrome... Again
- Sending High-Definition Video over Long Distances
- Articles on Professional Video and Audio Distribution
- WYSIWYG Force Linebreaks - a Module for Input Format/WYSIWYG Zen
- My Experience with the Apple TV
- Drupal 7 Released - The World's Best Content Management System
- My Simple, but Nerve-Calming, drush Update Workflow