Writing
Everything I've written since 2004 — on shipping software, emerging technology, building products, and working from wherever I happen to be. Older posts were first published on vertis.io and have moved here.
170 posts · RSS
2025
- Nov 17, 2025 Automating Business Processes: A Systematic Guide to AI Workflow Automation A practical guide to implementing business process automation using AI. Learn how to identify opportunities, choose the right approach, and deliver measurable ROI.
- Nov 17, 2025 Driving Innovation in Your Organization: A Systematic Approach to Transformation Learn proven innovation strategies for driving organizational innovation through systematic excellence. Discover frameworks for innovation management that balance experimentation with discipline.
- Nov 17, 2025 Effective Prompt Engineering: A Practical Guide to Mastering LLM Prompting Learn proven prompt engineering techniques to optimize your AI interactions. Discover core principles, common mistakes, and progressive strategies for effective LLM prompting.
- Nov 17, 2025 How to Use LLMs in Your Business: A Practical Guide to AI Implementation Discover proven LLM applications and business use cases that drive real ROI. Learn how to implement large language models systematically without unnecessary risk.
- Nov 17, 2025 Optimizing Remote Operations: A Practical Guide from 7 Years Across 54 Countries Practical guide to optimizing remote operations based on 7 years of post-geographic experience. Learn async workflows, communication strategies, and productivity systems that work.
- Nov 17, 2025 Responsible AI Development: A Practical Guide to LLM Ethics and Ethical AI Discover how to balance innovation with responsibility in AI development. Learn practical frameworks for ethical AI implementation, LLM ethics, and responsible AI governance.
- Nov 17, 2025 Securing AI Systems: A Systematic Approach to AI Security and Cybersecurity A comprehensive guide to securing AI systems through systematic security practices, threat mitigation, and protective frameworks for enterprise AI deployment.
2024
- Aug 18, 2024 Shipping LLM Pilots in Days, Not Quarters A simple blueprint for turning stakeholder interviews into a measurable pilot without adding a CMS, ticket queue, or committee.
- Aug 4, 2024 Introducing Far Horizons Lab Notes How we use lightweight experiments and ruthless prioritisation to turn hazy LLM ideas into production-grade systems.
- Apr 18, 2024 Railscamp Tanks
- Mar 12, 2024 Using ChromaDB to Generate Related Blog Content
- Mar 10, 2024 Why I'm Embracing AI as a Programmer
- Mar 9, 2024 Reflections on a Startup Misstep: A Decade of Perspective Reflections On Startup Failure. Product Market Fit. Resilience
- Feb 8, 2024 That Time I Accidentally Terminated 600 Instances That Time I Accidentally Terminated 600 Instances - Otherwise known as "The Zombie Apocalypse"
- Jan 26, 2024 How SingleFile Transformed My Obsidian Workflow SingleFile
- Jan 26, 2024 Migrating from Plausible to Umami for Web Analytics Self hosted web analytics setup
2022
2021
- Jun 17, 2021 My Digital Nomad Carry My Digital Nomad Carry
- Mar 28, 2021 Inspiration from near-term Sci-Fi Inspiration from near-term Sci-Fi
- Mar 28, 2021 The Crumpler Light Delight Messenger The Crumpler Light Delight Messenger
- Mar 3, 2021 Case Study: Self-Service Laundry Case Study: Self-Service Laundry
- Feb 6, 2021 rEFInd: SIP and Secure Boot rEFInd: SIP and Secure Boot
- Feb 3, 2021 Exploring NFTs Exploring NFTs
2020
- Dec 29, 2020 Things To Look for in a Coworking Membership Things to consider when searching for a coworking membership
- Dec 24, 2020 Spaces Coworking and the Pandemic My Spacesworks membership should have been a perfect fit. Then the pandemic hit.
- Dec 21, 2020 Healthcare in Estonia for Digital Nomads Healthcare is not a topic that comes up often when talking about being a digital nomad
- Nov 24, 2020 My Digital Nomad and Bootstrapper Xmas Suggestions
2019
2018
2017
2016
2015
- Dec 20, 2015 RepRap Prusa i3
- Nov 13, 2015 Future Assembly
- Oct 5, 2015 HTC Vive Dev Kit
- Sep 23, 2015 Automated Trading resources
- Sep 23, 2015 Ready Player One - Thoughts on OC2
- Aug 4, 2015 Ray White Conference - Matterport
- Jul 18, 2015 Nerdy Places you should visit
- May 31, 2015 AREC + Zero Latency
- May 11, 2015 Recon Glasses
- Apr 23, 2015 News Foundry
- Apr 12, 2015 Embedding Matterport
- Apr 1, 2015 Leap Motion + DK2
- Feb 12, 2015 Rails 3.2 Precompile error
- Jan 1, 2015 Scorecard for 2014
- Jan 1, 2015 Things I Want To Do This Year (2015)
2014
- Oct 3, 2014 HackDay 17: Virtual Museum of Homelessness
- Sep 21, 2014 Oculus Connect
- Sep 18, 2014 Techcrunch VR meetup
- Sep 12, 2014 Silicon Valley VR
- Jun 19, 2014 Convert an AWS Route53 Resource Record Set to point to an Alias Target
- Jun 17, 2014 Mount an S3 bucket using IAM roles
- Jan 31, 2014 Awesome Links #10
- Jan 1, 2014 Things I Want To Do This Year
2013
- Dec 23, 2013 Awesome Links #9
- Dec 17, 2013 An update on my AWS bill
- Dec 16, 2013 My run in with Unauthorised Litecoin mining on AWS
- Dec 5, 2013 Awesome Christmas Gifts 2013
- Nov 22, 2013 Awesome Reading: Open Companies
- Nov 11, 2013 Links for Good
- Oct 14, 2013 Awesome Links #7
- Oct 8, 2013 Awesome Links #6
- Oct 3, 2013 Awesome Links #5
- Sep 30, 2013 Awesome Links #4
- Sep 25, 2013 Awesome Links #3
- Sep 24, 2013 Awesome Links #2
- Sep 23, 2013 Awesome Links #1
- Sep 19, 2013 How to build an RPM using Mock
- Jun 11, 2013 My Post-PRISM checklist
- May 8, 2013 This is Bullshit!
- Mar 15, 2013 StriveHQ: Searching for a new name
- Mar 14, 2013 Bootstrapping a Fitness App in 30 days
- Mar 3, 2013 Rails3 Asset Pipeline On Heroku
2012
- Dec 2, 2012 Random Hacks of Kindess: FGIS
- Nov 2, 2012 Creating a Vagrant base box from an existing Vmdk
- Oct 23, 2012 An awesome collection of ruby tricks from JEG2
- Jan 29, 2012 const_defined? wrong constant name Yum.Key (NameError)
- Jan 24, 2012 git: fatal: index file smaller than expected
- Jan 15, 2012 Renaming a Rails 3 app
2011
- Jun 16, 2011 TinyTds::Error: Unable to open socket (Sequel::DatabaseConnectionError)
- Jun 3, 2011 Getting the root directory of your gem
- May 25, 2011 An inefficient MongoDB query
- Apr 2, 2011 List of Rackspace flavors and images
- Mar 30, 2011 Removing a collaborator from all GitHub repos
- Feb 1, 2011 Review: Data Source Handbook by Peter Warden (O'Reilly)
- Jan 19, 2011 Quick Reminder: ssh-copy-id on Mac OS X
- Jan 12, 2011 Big Data in Real-Time at Twitter
2010
- Sep 30, 2010 Switching to RVM+REE+NGINX+Passenger
- Sep 28, 2010 Daily Stand Up #1
- Aug 30, 2010 Rails security resources
- Aug 1, 2010 This week I learned - that bundler needs work
- May 19, 2010 Scott Berkun, How to call bullshit on a guru
- May 18, 2010 When you don’t create things
- Mar 24, 2010 Ruby non-greedy matching (OR how interro saved the day)
- Mar 7, 2010 Why "Mad Libs" style signup forms are just a gimmick
- Mar 5, 2010 Security wake up call
- Feb 21, 2010 Sinatra on Java
- Feb 19, 2010 Exploring Documentum RESTful Services - Part 2
- Feb 12, 2010 What people are looking to connect to Facebook
- Feb 11, 2010 Less twitter more tumblr
- Feb 9, 2010 Copy the structure but not the data.
- Feb 9, 2010 I Don't Get It
- Feb 8, 2010 Copy the structure but not the data.
- Feb 8, 2010 Multi-tasking the presentation away.
- Feb 8, 2010 The Building Blocks of Ruby « Katz Got Your Tongue?
- Feb 1, 2010 Lighter weight deployment with git-deploy
2009
- Dec 17, 2009 RockYou gets rocked by hackers
- Nov 30, 2009 ActiveDocumentum
- Oct 28, 2009 Kilroy was here
- Oct 25, 2009 Getting started with Google Maps
- Oct 23, 2009 Foursquare
- Oct 22, 2009 The API Challenge
- Sep 17, 2009 Transport out has not been set
- Sep 9, 2009 Rack - NoMethodError: undefined method `call' for nil:NilClass
- Jul 30, 2009 Lotus Notes 8 Development
- Jul 8, 2009 Exploring Documentum RESTful Services - Part 1
- Jul 7, 2009 Rails Rumble 2009
- Jun 12, 2009 Installing Documentum Administrator 6SP1 (Patch Release) on IBM Websphere 6.1.0.23
- May 7, 2009 ActiveDocumentum teaser #1
- May 4, 2009 D6.5 Experiments (Part 2)
- May 4, 2009 My ongoing battle to get Oracle working on CentOS 5.3
- May 1, 2009 Zillow(?) vs. Social Media
- Apr 29, 2009 RE: Rails is not a ghetto, it's a train station.
- Apr 28, 2009 D6.5 Experiments (Part 1)
- Apr 28, 2009 Rails is not a ghetto, it's a train station.
- Apr 9, 2009 IS-t in an Economic Crisis
- Mar 11, 2009 Quick Update
- Feb 4, 2009 Falling in with the wrong twrowd.
- Jan 12, 2009 CSS Design: Learning from scratch
- Jan 10, 2009 Boiler updated.
- Jan 10, 2009 Getting started Twitter
- Jan 1, 2009 Back from melbourne and SSH Botnets
2008
- Dec 13, 2008 The Christmas cleanup
- Dec 10, 2008 Documentum, old world document management (or why to avoid Documentum 6.0SP1)
- Dec 10, 2008 DQL stuff
- Dec 5, 2008 Etsy Api repositories x2
- Nov 30, 2008 Internet Filtering: One ticket to...anywhere else.
- Nov 12, 2008 Corkscrew to the Net
- Nov 12, 2008 Mongrel service tip
- Nov 10, 2008 Are Linux users lemmings collectively jumping off of the cliff of reliable, well-engineered commercial software? -- Matt Welsh
- Nov 6, 2008 JRubyOnRails for the enterprise
- Nov 6, 2008 Turn on Authentication Tracing in Documentum Administrator
- Oct 15, 2008 Rails Rumble 2008
- Oct 2, 2008 Word of the Day: Resource
- Sep 22, 2008 The pain that is VS 2008
- Sep 20, 2008 Apple iPhone Dev
- Sep 20, 2008 EtsyTools
- Aug 18, 2008 Internet Limbo
- Jun 21, 2008 A little SQL injection to make the weekend more interesting.
- Jun 19, 2008 Passenger, Typo and Sqlite
2007
2006
2005
- Dec 27, 2005 Why Open Source is fundamentally flawed...
- Dec 20, 2005 Thoughts on Java
- Dec 12, 2005 And Ubuntu changes the game.
- Oct 31, 2005 The Great Debate: Windows vs. Linux
- Oct 26, 2005 Stronghold 2 Review
- Aug 31, 2005 DidTheyReadIt.com - Worth the Risk?
- Aug 10, 2005 Remote X11 Applications on Windows