I am a Ruby and JavaScript engineer from Belfast living in London.

I hope you enjoy my articles, if you have any questions please feel free to comment on them or contact me using the links in the footer.

Latest Posts

Please enjoy my three latest posts

Ruby Ramblings

For several years now Ruby has been my backend language of choice, here are articles that relate to my favourite programming language.

JavaScript Jollies

Like anyone who has spent time working on the internet I have cause to get my hands dirty with JavaScript regularly. Hopefully you will enjoy what I have to share on the matter.

Writing Woes

Something I am always trying to get better at is writing. In this section I share the tips and tricks I have learned over the years of writing on the internet and for publications.

Raving Reviews

My first taste of writing was reviewing Metal bands, and I never really stopped. Here I normally review tech and tech books.

Marketo Musings

I use the Marketo API quite frequently, normally with Ruby, here are my tips and thoughts on it.

Personal Ponderings

Since this is my personal blog it is hardly surprising that sometimes I write about personal topics.

Server Basics

I wanted to write up a selection of articles covering really basic server stuff, most posts assume little or no prior knowledge. I hope you find them useful.

Everything Else

Here is everything that I haven't put into its own category yet. As I get more oranised this list should shrink!

  1. Viewing what is running on the server
  2. How does Capistrano work?
  3. Debriefing Development Teams
  4. Art & Math & Science, Oh My!
  5. Setting up Moat and DFP
  6. Omnifocus Custom Columns
  7. Safari Extensions I am using
  8. What I have learned about roadmaps
  9. Speeding up accessing Safari’s URL bar on El Capitan
  10. Meteor @dev was not detected
  11. I am starting a fortnightly email list
  12. The steps I take before a large backup on the Mac
  13. Setting up the Windows 200 Wired keyboard on the Mac
  14. Udemy Fail
  15. Breathing new life into an older Mac
  16. Finding new people on Chatter
  17. Mastering Your Tools
  18. Mac Productivity Workshop
  19. A simple guide to how computers work for idiot redditors
  20. Mac Apps I use to say productive
  21. Some of my favourite mac shortcuts
  22. Up the tracking speed on your mouse
  23. Hiding the dock for fun and profit
  24. Custom Routing of Github emails
  25. iTerm Tricks
  26. You can’t use the webcam on OS X without having a Photo Booth Library?!?!
  27. iPhone photos not freeing up space when deleted
  28. Speeding up the internet on OSx Yosemite
  29. Come play Codewars with me
  30. Good Habits for Student Developers – Documentation
  31. Katrina Owen – Here be Dragons
  32. Robert Wint – Using Content to Improve the Customer Journey
  33. Patrick Jubb – Re-building the Marketing Department to be Fit for the Future
  34. Martin Trickey – Do we Tell Stories Differently Now?
  35. Mark Elkins – From Passion to Purchase
  36. Kerensa Samanidis – Breaking in to the online video market
  37. Chief Digital Officer Summit London - Day 1 Morning
  38. Ana Serrano – Digital Transformation & Continuous Innovation
  39. Amanda Neylon – The Importance of Focusing on Social Strategy
  40. Getting Money out of Uganda
  41. Good habits for student developers – Time Keeping
  42. What to do when refactoring a large codebase without tests
  43. What I would look for in a junior developer
  44. How the technical direction of a project can be influenced
  45. Sed fun on OSx
  46. Squash br inside contenteditable
  47. Good Habits for Student Developers - Backups
  48. Facebook's Anonymous Login
  49. A beginners guide to ARIA
  50. Please don't actually use Retweet and Favourite for polls on Twitter
  51. Hearthstone APIs
  52. My thoughts on the latest TechHubTuesday Demo Night
  53. Divs still have their place
  54. My highlights from On the Shortness of Life by Seneca
  55. The correct way to markup an image and caption in HTML
  56. View Markdown Files in your Terminal
  57. Some stumbling blocks I hit following my first Swift tutorial
  58. Quick Semantic Wins
  59. Accessibility and SEO are tightly linked
  60. How I am using Omnifocus
  61. What the header element can be used for
  62. Gender Neutral Swear Words
  63. Every developer makes mistakes all the time
  64. Backblaze is part of a great backup solution
  65. Kill off any process on a particular port - An explaination
  66. Space Invaders
  67. WhiteHat Aviator Phoning Home?
  68. Backing up an s3 bucket to another s3 bucket
  69. Force a CSV download from a WordPress Plugin
  70. Nav Elements, not just ul wrappers
  71. Marketing is More Important than Your Code
  72. The ways I have made Sites Pay for Themselves
  73. How Much Does Your Website Cost You?
  74. Running VimR From the Command Line
  75. VimR - A first look
  76. Turning off the PiFace Control and Display
  77. Derek Johnson talking about Modern Web Design
  78. How many people should be on my email list before I send the first email?
  79. Review: HTML5 Game Development Hotshot
  80. Kali Linux 32 bit mini ISO getting stuck on samba
  81. Raspberry Pi B+ Webinar
  82. Advertising in China
  83. Why thinking small helps create software that lasts.
  84. Removing "Protected:" and "Private:" from WordPress posts
  85. Copy and Rename multiple files in Linux
  86. The worst thing you can do for your productivity
  87. Not able to cd or ls into drive mounted by s3fs
  88. Quitting Postgres psql
  89. The safest way to track goal URLs in Google Analytics
  90. Setting to change to get notified of all interactions on Twitter
  91. Setting I changed to up my Chromebook's internet speed
  92. My Chromecast Setup
  93. Making Tech for the sake of Tech isn't always right, but it is necessary
  94. Font Faces for Dyslexic Folk
  95. Packt have a really great sale on
  96. Some HipChat Tips and Tricks
  97. CodeIgniter - when to use get_instance()
  98. Resources for getting up to speed with Redis
  99. How to install the latest version of Redis on Ubuntu
  100. Newbie Programming Resources
  101. Open a file in Github from your command line
  102. Values returned to ActiveMerchant by SagePayGateway during 3d secure
  103. Some Interview Tips for Junior Developers
  104. You should serve up assets without a protocol
  105. Things to remember to do before any video conference / online call
  106. Looking for Bootstrap's popover-inner?
  107. GitGutter – A Sublime Text plugin for seeing changes in git
  108. Indenting Text using Vim
  109. Copy and Paste in Vim
  110. Interview with Trevor Orsztynowicz about Caliper
  111. Show off your Localhost with LocalTunnel
  112. Linking Google Adwords and Analytics accounts
  113. Right clicking inside Linux on your Chromebook
  114. Getting Debian to recognise your UK Chromebook
  115. Automation is a lot like your windscreen wipers
  116. Cheap Belfast PHP/WordPress Hosting
  117. If someone does something really sucky, hit them in the Twitter
  118. Nobody Will Train You But You - A talk by Zach Briggs
  119. Getting rid of annoying text selection at the bottom of Sublime Text documents
  120. Some useful Github shortcuts
  121. Deploying a particular branch to Engine Yard from the command line
  122. Bad example of how to do unsubscribe pages.
  123. Stacking the founder chips in your favour.
  124. Internet Explorer Version 999.1
  125. MySQLslap - A quickstart guide
  126. Web Developer Equipment
  127. Working out which merge to keep in Git
  128. Stack Exchange is winning the internet and this is not a good thing
  129. Sublime Text reading SASS files as HAML
  130. Safari on Windows doesn't like outline inside of :after
  131. Slightly funny application names in ChromeOS in developer mode
  132. Turn Off the built in apache on OSx
  133. Firefox honours !important in CSS animations, no one else seems to
  134. Speculation on why Google stopped blocking sites
  135. Good Surge Protecting Power Blocks
  136. Open all your browsers at once in OSx
  137. How I got my links out of Google Reader
  138. Different ways to undo in Git
  139. Some Notes on SSL Certificates
  140. Big Wet Fish Get Marketing
  141. Some command line tips for the web developer
  142. OSx Screenshot Cleaner
  143. How to turn on invisible characters in Sublime Text 2
  144. Update your Git install
  145. Installing PEAR for PHP on OSx
  146. Google Translate tracking in Analytics
  147. Quick Tip for Reddit and Imgur and multiple sub-sections
  148. A checklist of things you will need to learn to make Firefox OS applications
  149. Using Mozilla's Mortar and App stub for bootstrapping Firefox OS apps
  150. Getting Firefox OS on your Android phone.
  151. If you store WordPress code on Github think about your wp-config.php
  152. Added some non-js social share buttons
  153. The easiest way to test out Firefox OS
  154. Using Stack Exchange to be better at what you do.
  155. A pragmatic approach to dealing with interruptions whilst you are developing
  156. The W3C Technical Architecture Group elections end today
  157. Replacing Social Media Share Buttons with non-JavaScript counterparts
  158. Quick email tip if you need to clear out your inbox
  159. Editing remote files locally in OSx
  160. Finding email to delete if you are over quota in mail.app on OSx
  161. Git branches seem to be case insensitive
  162. Barry Adams SEO Talk About the Future of SEO at DigiExNI
  163. Shopify Workshop
  164. Nobody Puts Baby In The Corner - Except Me.
  165. New Evernote
  166. Changing the font-style of placeholder text CSS
  167. Every time you write non-standard or invalid code
  168. Setting up Redmine from a blank Ubuntu install
  169. Working with Ubunutu? Save yourself a headache and run sudo apt-get install build-essential
  170. Commit Driven Development
  171. Finding out what version of Apache and PHP a webserver is running when you have little access
  172. Infographic on website monetising
  173. Entering your email at the inbox is a bad idea
  174. Setting up Apache on OSx Mountain Lion
  175. Things about learning to drive I wish I knew when I was learning to program
  176. The trigger that gets hit when you get a positive Twitter ratio.
  177. Tidy up your PayPal buttons
  178. CakePHP and htaccess caching funtimes
  179. Facebook - The optimal size for posting an image to a page wall
  180. Styling Scroll Bars
  181. Google should minify their 404 page
  182. An interview with Umut Muhaddisoglu from Uptime Robot
  183. How to search PayPal transactions by email address or name
  184. Adding plugins to Sublime Text 2
  185. How I use MindNode to help craft blog posts
  186. What would you like to see more of on the web - a follow up with Zoe Bogner
  187. HTML5 Rocks Hangout 1
  188. A case for going agile
  189. Interview with Stephen Kinkaid from Big Wet Fish
  190. Copying a CakePHP Project from Linux to Windows
  191. I just made an affiliate program.
  192. PHP - Turn UK Date into US Date
  193. Interview with Derek Johnson
  194. Things to check for in your htaccess file
  195. Chrome's Lord of the Rings Easter Egg
  196. Useful WordPress Links
  197. Printing on the web
  198. Tech Tweets - Thursday 15th March 2012
  199. Validation in CakePHP 1.3
  200. Permissions issue with Iomega Home Media Network Drive
  201. Useful CSS Links
  202. Useful PHP Links
  203. Deleting Magento Session Files
  204. Reducing Google Contacts storage on Android devices
  205. CakePHP 2.0 Read Recursive
  206. CSS Vendor Prefixes - A potential use case
  207. Canonical and Base URLs
  208. Having FTP in your IDE is part of a broken model
  209. Useful Web Developer Bookmarklets
  210. Updating PHP5.2 to PHP5.3 using apt-get
  211. Too many posts about the same thing on your Twitter timeline?
  212. The Importance of First Contact
  213. Interview with Patrick McKenzie and Keith Perhac about their podcast
  214. Get rid of var $name in CakePHP
  215. Keeping on top of my to-do list.
  216. Things I will be reading this week: 05-12-2011
  217. BuildConf is still being awesome even after the event.
  218. Kalzumeus Podcast
  219. Open Proposal: Companies - get your employees to answer questions on Stack Exchange
  220. A recipe for creating a great workshop
  221. Things I will be reading this week: 06-11-2011
  222. Interview with Shiela Dixon
  223. Things I will be reading this week: 31-10-2011
  224. My thoughts on The Increasing Importance of APIs in Web Development
  225. Things I will be reading this week: 24-10-2011
  226. Parameterise everything.
  227. Managing a Facebook development project.
  228. Uptime Robot gets an API
  229. Testing if your domain is accessible from China
  230. Checking if a password field is present in Selenium.
  231. Issue with table content held in a div not printing over several pages
  232. An open letter to EUKHost
  233. Techzing hits 150
  234. Inspiration.
  235. Trying to get a designer into a meeting...
  236. Less Than Vs Less Than or Equal To - which is more efficient?
  237. Magento Auto Install
  238. Netbeans Private Key Authorisation Problem
  239. MySQLTuner - An excellent free MySQL tool
  240. How I think I am going to start using the big 3 social networks
  241. Google+ Invites
  242. Claiming ownership of your content.
  243. [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring!
  244. What I would change about the Computer Science degree course
  245. The W3C have released Web Application Privacy Best Practices - What do we do with it?
  246. My Feelings On Adobe Edge
  247. The Big Three Social Codes
  248. Disqus showing bullets.
  249. Changing upload permissions in vsftpd
  250. Getting Netbeans Working with OS X Lion
  251. Settings up Netbeans to develop Android applications
  252. The Obligatory Dropbox Post
  253. Soon I will be in the market for a new laptop.
  254. The importance of using the ellipsis character.
  255. Using Git to create an archive of changed files.
  256. Enabling telnet in Windows 7
  257. Interview: What is your take on the rise of e-learning sites over a more traditional text-book or course based approach
  258. IE7 td colspan width 'issue'
  259. Uninstalling Lotus Notes Traveler from your Android Device
  260. Netbeans 7.0 released
  261. HTML5 Canvas Tutorial
  262. Git command to show files changed in a commit
  263. Securing Facebook
  264. The importance of supporting OWASP
  265. Edit an option of a select menu using jQuery
  266. Interview: What would you like to see more of on the web
  267. Netbeans Redmine Integration Version 0.1 released.
  268. Netbeans and Redmine Integration.
  269. Explaining Version Control (Git) in Simple Terms
  270. Getting my Dublin Core on
  271. Yum not installing 7zip.
  272. Location of bookmarks.nsf on the mac.
  273. Speed up Lotus Notes on a Mac
  274. Two excellent talks on Git
  275. Show hidden files on the Mac OSx
  276. Howto: Email A Support Request
  277. Getting the most out of StackExchange
  278. Quick way to switch between folders in the terminal
  279. Importing a backup file from another MS SQL machine.
  280. Possible issue when using parseInt function.
  281. PHP Security - General PHP setup Gotchas
  282. Finding your SQL Server Version
  283. MySQL snippet - Selecting from table a items that aren't in table b.
  284. PHP - Quick Is Not Set Replace
  285. Internet Explorer Cannot Open The Internet Site - Operation Aborted
  286. Allowing your own From header with sSMTP
  287. What you actually do when you untar something.
  288. Find out which version of Ubuntu I am on.
  289. Help with your Social Media Strategy
  290. Useful Git Links
  291. Using Open Source - Some Legal Considerations
  292. Robin Christopherson - Accessibility in Web Design
  293. Eoghan McCabe and Des Traynor - Sexy or Meaningful
  294. Skipfish - No such file or directory.
  295. Owen DeLong - Content Providers must lead the way to IPv6
  296. Martha Rotter - Too Much Information [University Session]
  297. Gotta love the google font API
  298. Renier Lemmens - The future of Mobile Apps
  299. Simon Wardley - What is the cloud?
  300. Raffi Krikorian - How to use Geolocation in your web app
  301. Replace ereg with preg_match
  302. Useful Security Pages
  303. Clean up your variables
  304. Uptime Robot Monitors From Multiple Locations
  305. My Security Adventure Begins
  306. PHP_DEBUG a very handy little constant
  307. Uptime Robot
  308. Tweetminer is now Pluggio
  309. Editing Git Repository Descriptions
  310. Switching between full screen modes in PuTTY
  311. InFrame - Dynamic iFrame creation with jQuery
  312. Exploring Built In Functions
  313. Bloody Windows...
  314. Google Tells Us What A Browser Is
  315. Tweet Miner, why I use it
  316. HTML5 Video
  317. Mapping the inside of buildings.
  318. Refresh Belfast - The State of Typography on the Web
  319. Wordpress Cheat Sheet
  320. Webmasters - Clean out your links!
  321. Acronym and Abbreviation Tags
  322. Internet Explorer 8 Checkbox Issues
  323. Microformat Cheat Sheets
  324. Damn this guy can wireframe!
  325. Awesome Firefox Multitouch
  326. New Google Search
  327. A/B Testing with Wordpress
  328. Looking Critically at Your Design
  329. Really cool dropdown menu
  330. PHP Whitespace/Comment Removal
  331. CSS Techniques Run Down
  332. HTML5 - Anyone Played With It Yet?
  333. About Pages - Are they totally necessary?
  334. Out of the box design