I hope you enjoy some of these articles – I've split them up into some categories and uncategorised stuff sits at the bottom.

Latest Posts

Please enjoy my three latest posts


If you only care about a particular subset of what I write about, you may enjoy digging into one or more of these categories.


If you just want a list of everything, here it is!

  1. Andreas Jung Interview
  2. Interview with Håkon Wium Lie
  3. When to include irb in Ruby 2.4.0
  4. The Settlers Packaging
  5. BuzzSumo Review
  6. How I Started a UK Business
  7. Working whenever you want is amazing and has some unique challenges
  8. ActiveJob Vs ApplicationJob
  9. Doubling Down on Recurring Revenue
  10. Some stats from frontend focus
  11. Removing Kadira from Meteor
  12. My first thoughts of Alexa
  13. What I’ve learned from looking through my old posts
  14. A guide to writing up conference talks
  15. Reducing Image Size for better page load times
  16. Eric Brantner Freelancing Interview
  17. Removing AMP pages from your Jekyll Sitemap
  18. Remote Interim CTO
  19. Ruby Contractor London
  20. Daniel Miller Freelancing Interview
  21. London Interim CTO
  22. Getting OS X to trust self-signed SSL certificates
  23. Banks Getting My Name Wrong
  24. Why Centralise Email Functionality
  25. Judson Lester Freelancing Interview
  26. Tom Hirst Freelancing Interview
  27. Conor O'Neill Freelancing Interview
  28. Najaf Ali Freelancing Interview
  29. Gina Charles Freelancing Interview
  30. Freelancer Interviews
  31. Owning the conversation about your company
  32. Going Freelance
  33. How I try and accelerate my learning
  34. Spring and Foreman complaining about secret_key not being set
  35. API
  36. What to do if your employee is worried about team culture and their depression
  37. Rust
  38. Slack Shortcuts
  39. LRUG July 2016
  40. Brighton Ruby 2016
  41. AWS Summit
  42. Lead Developer Conference Reading List
  43. Some notes on my last Out of Office message
  44. Captioning at Conferences
  45. Code Review
  46. Nginx Cache Busting Rewrite Rule
  47. List of Countries without a Postcode
  48. Fixing No Default Alternative Specified error in rails
  49. GitKraken Review
  50. Posting to Slack with PHP
  51. Quickly tidy up old git branches
  52. Tracking AdWords Conversions within JavaScript
  53. Fueling Hyper Growth – A Salesforce Event
  54. Close proximity leads to ideas being shared too soon
  55. Instagram Vintage Computing
  56. Complete list of custom icon properties for Bootstrap 3 Datepicker
  57. Getting access to Channel 13 on a Raspberry Pi 3
  58. My takeaways from the Productive Habits email course
  59. Basic intro to Reddit and Hacker News
  60. Open iTerm2 links in Vim
  61. Fix for OpenSSL::SSL::SSLError on RestForce / Faraday
  62. S3
  63. What to do when things go wrong
  64. The EU Cookie Law
  65. Using Slack as part of the GTD capture stage
  66. Recursion
  67. Introducing Simple CS
  68. CSS
  69. Stopping your wireless from turning off on your Raspberry PI
  70. Loading a specific file into Dotenv
  71. Now
  72. Steps for replacing an SSL certificate
  73. See what disk space is left on your Linux web server
  74. Review Pibow Zero
  75. The SSH Command
  76. Grep flags that I like
  77. How to overcome thinking that no one will find your posts useful
  78. Viewing what is running on the server
  79. How does Capistrano work?
  80. Debriefing Development Teams
  81. Art & Math & Science, Oh My!
  82. Setting up Moat and DFP
  83. Omnifocus Custom Columns
  84. Notes from LRUG
  85. Pictures from LRUG Nov ‘15
  86. Safari Extensions I am using
  87. What I have learned about roadmaps
  88. Speeding up accessing Safari’s URL bar on El Capitan
  89. Meteor @dev was not detected
  90. The steps I take before a large backup on the Mac
  91. Setting up the Windows 200 Wired keyboard on the Mac
  92. Udemy Fail
  93. Adding Alt tags to images using image_tag in Rails
  94. Breathing new life into an older Mac
  95. Finding new people on Chatter
  96. Review: BubbleSort – How do Calculators Even
  97. What is a Gemfile
  98. Finding the List ID for the Marketo API
  99. Adding skip_after_filter to Rails Admin
  100. 6 Months in and bowing out
  101. Checking for both versions of Google Analytics with JavaScript
  102. Tracking Ctrl+F events in Google Analytics
  103. Key code for Command on OS X
  104. Join the Anthony Nolan Register
  105. Uploading files with Capybara in Rspec tests
  106. An experiment in highlighting words
  107. The difference between Render and Redirect in Rails
  108. Quality of your Input and Output
  109. Mastering Your Tools
  110. Mac Productivity Workshop
  111. The iPhone is my main content creation computer
  112. A simple guide to how computers work for idiot redditors
  113. Lets talk vasectomies
  114. Mac Apps I use to say productive
  115. Some of my favourite mac shortcuts
  116. Up the tracking speed on your mouse
  117. Hiding the dock for fun and profit
  118. What is a Proc?
  119. Raspberry Pi for Secret Agents
  120. Getting HTTP Status Codes from the Command Line
  121. Custom Routing of Github emails
  122. HTTP Status Codes for SEO
  123. iTerm2 Tricks
  124. Deleting Attachments with rails_admin
  125. Scrutiny5
  126. You can’t use the webcam on OS X without having a Photo Booth Library?!?!
  127. Never assume your wage is safe.
  128. Adding Descriptions to Pages with Jekyll
  129. iPhone photos not freeing up space when deleted
  130. Speeding up the internet on OSx Yosemite
  131. Come play Codewars with me
  132. What a Developer can take away from SEO Now 2015
  133. I love programming
  134. My first screencast
  135. Good Habits for Student Developers – Documentation
  136. Lightening Talk on Schema
  137. A Pragmatic Approach to adding Schema
  138. Updating a Slug on a live Rails System
  139. Katrina Owen – Here be Dragons
  140. Robert Wint – Using Content to Improve the Customer Journey
  141. Patrick Jubb – Re-building the Marketing Department to be Fit for the Future
  142. Martin Trickey – Do we Tell Stories Differently Now?
  143. Mark Elkins – From Passion to Purchase
  144. Kerensa Samanidis – Breaking in to the online video market
  145. Chief Digital Officer Summit London - Day 1 Morning
  146. Ana Serrano – Digital Transformation & Continuous Innovation
  147. Amanda Neylon – The Importance of Focusing on Social Strategy
  148. Ruby’s Partition for Enumerables
  149. Getting Money out of Uganda
  150. First week at Innovation Enterprise
  151. POODIR On Testing
  152. Good habits for student developers – Time Keeping
  153. Creating an iOS application in 5 minutes using Meteor.
  154. What to do when refactoring a large codebase without tests
  155. What I would look for in a junior developer
  156. How the technical direction of a project can be influenced
  157. New Website
  158. Innovation Enterprise
  159. Squash br inside contenteditable
  160. Good Habits for Student Developers - Backups
  161. Facebook's Anonymous Login
  162. CSS last-of-type as a fix for last-child in Ember applications
  163. Rails Migrations for Beginners
  164. Using Monodraw for fun tweets
  165. CreepedIn
  166. A beginners guide to ARIA
  167. Getting Rid of Vintage Belfast – Do you want it?
  168. Set Intersection in Ruby
  169. Please don't actually use Retweet and Favourite for polls on Twitter
  170. Hearthstone APIs
  171. My thoughts on the latest TechHubTuesday Demo Night
  172. Some useful resources for generating content ideas
  173. Divs still have their place
  174. My time at Buffer wasn't great
  175. Making an app in just over an hour with Meteor and Heroku
  176. My highlights from On the Shortness of Life by Seneca
  177. The correct way to markup an image and caption in HTML
  178. View Markdown Files in your Terminal
  179. Some stumbling blocks I hit following my first Swift tutorial
  180. Quick Semantic Wins
  181. Accessibility and SEO are tightly linked
  182. How I am using Omnifocus
  183. My Birthday Haul
  184. What the header element can be used for
  185. Review: A Web for Everyone: Designing Accessible User Experiences
  186. Gender Neutral Swear Words
  187. Every developer makes mistakes all the time
  188. Backblaze is part of a great backup solution
  189. A rough guide I am going to try and follow for blog posts
  190. Imagine your RAM was erroring
  191. 365 Articles in 2015
  192. Backup of Making Your Website Pay for Itself
  193. My Wedding Speech
  194. Review: Abraham Lincoln: Presidential Fuck Machine
  195. Some notes and links on websockets with rails
  196. Great content has no shelf life
  197. Please stop using features by testing for browser
  198. Kill off any process on a particular port - An explaination
  199. Space Invaders
  200. Nokogiri won't install? Check that you have accepted Xcode's EULA
  201. WhiteHat Aviator Phoning Home?
  202. Converting numbers to hex using to_s in Ruby
  203. Backing up an s3 bucket to another s3 bucket
  204. Force a CSV download from a WordPress Plugin
  205. Nav Elements, not just ul wrappers
  206. Marketing is More Important than Your Code
  207. The ways I have made Sites Pay for Themselves
  208. How Much Does Your Website Cost You?
  209. Review: PiFace Control and Display
  210. Review: Raspberry Pi Camera Board
  211. Running VimR From the Command Line
  212. VimR - A first look
  213. Turning off the PiFace Control and Display
  214. I fucked up
  215. Derek Johnson talking about Modern Web Design
  216. Tools I Use When Blogging
  217. Review: HTML5 Game Development Hotshot
  218. How many people should be on my email list before I send the first email?
  219. Review: Node.js Blueprints
  220. Review: Penetration Testing with the Bash Shell
  221. Kali Linux 32 bit mini ISO getting stuck on samba
  222. Advertising in China
  223. Get the name of a Ruby class
  224. Belfast Bloggers 3rd Meetup
  225. My face - on a stamp!
  226. Review: Raspberry Pi Server Essentials
  227. Review: Raspberry Pi Robotic Projects
  228. Packt Publishing
  229. Why thinking small helps create software that lasts.
  230. Removing Protected and Private from WordPress posts
  231. Copy and Rename multiple files in Linux
  232. The worst thing you can do for your productivity
  233. Resources for making your website pay for itself.
  234. Not able to cd or ls into drive mounted by s3fs
  235. What App.reset() does in Ember
  236. Using Ember's App.reset() to kill off any local data
  237. The Tim Ferriss Show might be the most important podcast I listen to
  238. Quitting Postgres psql
  239. The safest way to track goal URLs in Google Analytics
  240. Research has shown a case for closing down Vim for a while.
  241. Setting to change to get notified of all interactions on Twitter
  242. Disable a button component with Ember
  243. Using JavaScript's debugger statement with Firefox
  244. Review: Raspberry Pi Projects for Kids
  245. Setting I changed to up my Chromebook's internet speed
  246. Review: Understanding the 4 Rules of Simple Design
  247. Programmatically finding out the size of the retry queue with Sidekiq
  248. Problems with Evergreen Content
  249. My Chromecast Setup
  250. Making Tech for the sake of Tech isn't always right, but it is necessary
  251. Using Ruby to get access to Google Keywords
  252. Font Faces for Dyslexic Folk
  253. David Stewart of Marketing Digital Solutions thinks it is OK to creep on females on LinkedIn
  254. Review: Backbone.js Patterns and Best Practice
  255. Generating migrations with couchrest_model
  256. CouchRest Rails Setup - Setting a blank username/password is not the same as not setting a username/password
  257. An introduction to Ruby/Rails/Git - Belfast Ruby
  258. When testing the datasift ruby gem locally be sure to turn SSL off
  259. Review: Work - How to find joy and meaning in each hour of the day
  260. Things I do not love
  261. What tools / technologies / ideas / principles / things I am most passionate about
  262. Who is Marvel's Mightiest Hero? (I will give you a clue - it is Beast)
  263. A case for writing unit tests for your blog posts
  264. Hacker News follow up post
  265. Some HipChat Tips and Tricks
  266. CodeIgniter - when to use get_instance()
  267. Resources for getting up to speed with Redis
  268. How to install the latest version of Redis on Ubuntu
  269. My first week at Buffer
  270. I get very ill if I mix Citalopram and Green Tea
  271. Newbie Programming Resources
  272. Open a file in Github from your command line
  273. Values returned to ActiveMerchant by SagePayGateway during 3d secure
  274. Soon I will be joining the Buffer team!
  275. Some Interview Tips for Junior Developers
  276. You should serve up assets without a protocol
  277. Review: Whitehat Aviator
  278. Things to remember to do before any video conference / online call
  279. Keep your CV fresh
  280. Looking for Bootstrap's popover-inner?
  281. Good things happen to those that blog
  282. GitGutter – A Sublime Text plugin for seeing changes in git
  283. Indenting Text using Vim
  284. Copy and Paste in Vim
  285. Belfast Ruby: Talks on Elixir, Tmux and Jekyll
  286. A quick post about depression and software development
  287. Interview with Trevor Orsztynowicz about Caliper
  288. Show off your Localhost with LocalTunnel
  289. Using Devise to verify an email address and password
  290. navigator.mozApps.installPackage will no longer work use navigator.mozApps.install
  291. Barry Gordon talks about Vagrant - Belfast Ruby
  292. Accessing Popover Data with Bootstrap 3
  293. Right clicking inside Linux on your Chromebook
  294. Getting Debian to recognise your UK Chromebook
  295. Automation is a lot like your windscreen wipers
  296. Upgrading from Bootstrap's Typeahead to Typeahead.js
  297. A fix for window.location.origin in Internet Explorer
  298. Transliteration with Typeahead.js
  299. Typeahead.js The Book!
  300. Setting a minimum length for your search in Typeahead.js
  301. Cheap Belfast PHP/WordPress Hosting
  302. Getting the flot-rails gem to play nicely with IE8
  303. Refreshing local data with typeahead.js
  304. Rspec's be_an_instance_of is pretty useful
  305. If someone does something really sucky, hit them in the Twitter
  306. Passing a day of the week into Ruby's Date.parse
  307. Some things I have learned about Ruby's fetch method
  308. Nobody Will Train You But You - A talk by Zach Briggs
  309. The quickest way to get from nothing to Ruby and Rails
  310. Getting rid of annoying text selection at the bottom of Sublime Text documents
  311. Some useful Github shortcuts
  312. Deploying a particular branch to Engine Yard from the command line
  313. Killing all instances of Ruby on Rails running on a certain port.
  314. Bad example of how to do unsubscribe pages.
  315. Using Loops in Jasmine
  316. Useful Chrome Extension for Backbone.js Debugging
  317. Insane Chown Posse
  318. Stacking the founder chips in your favour.
  319. Internet Explorer Version 999.1
  320. MySQLslap - A quickstart guide
  321. Unboxing the Firefox OS Developer Preview Phone
  322. Review: jQuery HotShot
  323. Location, Location, Location
  324. Web Developer Equipment
  325. BornInBlood
  326. Controlling a jQuery datepicker with Watir
  327. Using Dropdowns in Watir Webdriver
  328. Write simple rspec tests on one line for fun and profit
  329. Using Bootstrap's typeahead from inside a modal window
  330. Stack Exchange is winning the internet and this is not a good thing
  331. Adding Data Attributes using haml_tag
  332. Sublime Text reading SASS files as HAML
  333. Getting the rmagick 2.12.2 gem working on Mac OS X
  334. Safari on Windows doesn't like outline inside of :after
  335. Turn Off the built in apache on OSx
  336. Ruby Podcasts I have been recommended
  337. Review: Wunderlist
  338. My immediate impressions of the Samsung Chromebook
  339. Firefox honours !important in CSS animations, no one else seems to
  340. Speculation on why Google stopped blocking sites
  341. Review: Mastering Redmine
  342. Good Surge Protecting Power Blocks
  343. Open all your browsers at once in OSx
  344. Link Dump of everything that was in my Google Reader
  345. Validation Helpers
  346. Different ways to undo in Git
  347. Some Notes on SSL Certificates
  348. Big Wet Fish Get Marketing
  349. Some command line tips for the web developer
  350. Insert Gists without JavaScript
  351. How to turn on invisible characters in Sublime Text 2
  352. Update your Git install
  353. Installing PEAR for PHP on OSx
  354. Google Translate tracking in Analytics
  355. Quick Tip for Reddit and Imgur and multiple sub-sections
  356. A checklist of things you will need to learn to make Firefox OS applications
  357. Using Mozilla's Mortar and App stub for bootstrapping Firefox OS apps
  358. Getting Firefox OS on your Android phone.
  359. If you store WordPress code on Github think about your wp-config.php
  360. Secure your Redmine install by patching Ruby on Rails
  361. Added some non-js social share buttons
  362. Using Stack Exchange to be better at what you do.
  363. A pragmatic approach to dealing with interruptions whilst you are developing
  364. Replacing Social Media Share Buttons with non-JavaScript counterparts
  365. Quick email tip if you need to clear out your inbox
  366. Editing remote files locally in OSx
  367. Finding email to delete if you are over quota in mail.app on OSx
  368. Git branches seem to be case insensitive
  369. Barry Adams SEO Talk About the Future of SEO at DigiExNI
  370. People who give a shit will always get my business
  371. Shopify Workshop
  372. Nobody Puts Baby In The Corner - Except Me.
  373. Changing the font-style of placeholder text CSS
  374. Every time you write non-standard or invalid code
  375. This Charmander is adorable
  376. Setting up Redmine from a blank Ubuntu install
  377. Commit Driven Development
  378. Finding out what version of Apache and PHP a webserver is running when you have little access
  379. Entering your email at the inbox is a bad idea
  380. Setting up Apache on OSx Mountain Lion
  381. Things about learning to drive I wish I knew when I was learning to program
  382. The trigger that gets hit when you get a positive Twitter ratio.
  383. CakePHP and htaccess caching funtimes
  384. Facebook - The optimal size for posting an image to a page wall
  385. What is the RAILS_GEM_VERSION
  386. Styling Scroll Bars
  387. Google should minify their 404 page
  388. An interview with Umut Muhaddisoglu from Uptime Robot
  389. How to search PayPal transactions by email address or name
  390. How I use MindNode to help craft blog posts
  391. What would you like to see more of on the web - a follow up with Zoe Bogner
  392. The EU Cookie Law website
  393. Review: CodeLobster
  394. What Meteor does when you install it
  395. A case for going agile
  396. Interview with Stephen Kinkaid from Big Wet Fish
  397. Copying a CakePHP Project from Linux to Windows
  398. PHP - Turn UK Date into US Date
  399. Review: The CSS3 Anthology
  400. Interview with Derek Johnson
  401. Things to check for in your htaccess file
  402. Hit Tail
  403. Chrome's Lord of the Rings Easter Egg
  404. Useful WordPress Links
  405. Printing on the web
  406. Validation in CakePHP 1.3
  407. Permissions issue with Iomega Home Media Network Drive
  408. Deleting Magento Session Files
  409. Reducing Google Contacts storage on Android devices
  410. My scribbled thoughts on Belfast Ruby's first meet up.
  411. CakePHP 2.0 Read Recursive
  412. CSS Vendor Prefixes - A potential use case
  413. Canonical and Base URLs
  414. What can The Girl With The Dragon Tattoo teach us about web design.
  415. Having FTP in your IDE is part of a broken model
  416. Ruby Fizz Buzz Solution
  417. Useful Web Developer Bookmarklets
  418. Too many posts about the same thing on your Twitter timeline?
  419. Updating PHP5.2 to PHP5.3 using apt-get
  420. Ruby Testing and Documenting best practice
  421. The Importance of First Contact
  422. Interview with Patrick McKenzie and Keith Perhac about their podcast
  423. Get rid of var $name in CakePHP
  424. Keeping on top of my to-do list.
  425. BuildConf is still being awesome even after the event.
  426. Kalzumeus Podcast
  427. Open Proposal: Companies - get your employees to answer questions on Stack Exchange
  428. A recipe for creating a great workshop
  429. Interview with Shiela Dixon
  430. Managing a Facebook development project.
  431. Testing if your domain is accessible from China
  432. Checking if a password field is present in Selenium.
  433. My first doodle in about 7 years.
  434. An open letter to EUKHost
  435. Trying to get a designer into a meeting...
  436. Less Than Vs Less Than or Equal To - which is more efficient?
  437. Magento Auto Install
  438. Netbeans Private Key Authorisation Problem
  439. MySQLTuner - An excellent free MySQL tool
  440. Google+ Invites
  441. [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring!
  442. Accessing PHP variables from within JavaScript under WordPress
  443. What I would change about the Computer Science degree course
  444. IsTwitterUp? Nope
  445. The W3C have released Web Application Privacy Best Practices - What do we do with it?
  446. My Feelings On Adobe Edge
  447. Disqus showing bullets.
  448. Changing upload permissions in vsftpd
  449. Getting Netbeans Working with OS X Lion
  450. Settings up Netbeans to develop Android applications
  451. Soon I will be in the market for a new laptop.
  452. The importance of using the ellipsis character.
  453. New Challenges
  454. Using Git to create an archive of changed files.
  455. Enabling telnet in Windows 7
  456. Interview: What is your take on the rise of e-learning sites over a more traditional text-book or course based approach
  457. IE7 td colspan width 'issue'
  458. Uninstalling Lotus Notes Traveler from your Android Device
  459. Git command to show files changed in a commit
  460. The importance of supporting OWASP
  461. Edit an option of a select menu using jQuery
  462. Interview: What would you like to see more of on the web
  463. Netbeans Redmine Integration Version 0.1 released.
  464. Netbeans and Redmine Integration.
  465. Explaining Version Control (Git) in Simple Terms
  466. Yum not installing 7zip.
  467. Location of bookmarks.nsf on the mac.
  468. Speed up Lotus Notes on a Mac
  469. Got an article printed in the IEEE software journal.
  470. Getting my Dublin Core on
  471. Two excellent talks on Git
  472. Howto: Email A Support Request
  473. Getting the most out of StackExchange
  474. Quick way to switch between folders in the terminal
  475. Importing a backup file from another MS SQL machine.
  476. Possible issue when using parseInt function.
  477. PHP Security - General PHP setup Gotchas
  478. Finding your SQL Server Version
  479. MySQL snippet - Selecting from table a items that aren't in table b.
  480. PHP - Quick Is Not Set Replace
  481. Internet Explorer Cannot Open The Internet Site - Operation Aborted
  482. Allowing your own From header with sSMTP
  483. What you actually do when you untar something.
  484. Find out which version of Ubuntu I am on.
  485. Useful Git Links
  486. Using Open Source - Some Legal Considerations
  487. Robin Christopherson - Accessibility in Web Design
  488. Eoghan McCabe and Des Traynor - Sexy or Meaningful
  489. Skipfish - No such file or directory.
  490. Owen DeLong - Content Providers must lead the way to IPv6
  491. Martha Rotter - Too Much Information [University Session]
  492. Renier Lemmens - The future of Mobile Apps
  493. Simon Wardley - What is the cloud?
  494. Raffi Krikorian - How to use Geolocation in your web app
  495. Replace ereg with preg_match
  496. Clean up your variables
  497. PHP_DEBUG a very handy little constant
  498. Uptime Robot
  499. Editing Git Repository Descriptions
  500. Switching between full screen modes in PuTTY
  501. YayQuery
  502. InFrame - Dynamic iFrame creation with jQuery
  503. Exploring Built In Functions
  504. Mapping the inside of buildings.
  505. JavaScript KeyCodes
  506. Refresh Belfast - The State of Typography on the Web
  507. Webmasters - Clean out your links!
  508. Acronym and Abbreviation Tags
  509. Internet Explorer 8 Checkbox Issues
  510. About Pages - Are they totally necessary?
  511. Out of the box design