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