Configuring Postfix For Local Development

Whilst working through “Agile Web Development With Rails 4”, I was genuinely surprised to find the author advocating configuring your local development environment to send e-mail via an external SMTP server. To me, this is a bad idea, since there’s a real risk of unintentionally delivering mail to real accounts.... [Read More]
Categories: Code

7 Languages in 7 Weeks… Or Maybe A Bit Longer

Technical writing can be broadly categorised three ways – introductory, reference and developmental. Introductory writing is about introducing the reader to a new subject, hand holding them through the initial steps, and generally taking some of the pressure off learning a new skill. Reference writing is an in-depth look on... [Read More]
Categories: Code

Google Maps Geocoding API v2

Google have “turned down” v2 of their Geocoding API as of the 9th of September. For “turned down”, read “turned off”, making some interesting breakages for sites that rely on this API. Information available here: [Read More]
Categories: Code

Project Types – MVC 2 and MVC 3

Visual Studio ends up having a bit of a hissy fit if the project file has the incorrect project type. This appears to be especially common between MVC 2 and MVC3, where your project may have MVC3 binaries, but the MVC2 project type. Visual Studio 11 simply refuses to open... [Read More]
Categories: Code

SSH on Android

There are a few SSH clients out there for Android, ConnectBot being the most popular and BTEP also proving popular. Both of these provide good front end interfaces, but suck on keyboard support. There’s nothing more frustrating than pressing Ctrl on a bluetooth keyboard, only for it to behave entirely... [Read More]
Tags: android ssh
Categories: Code

A Quick Introduction To Screen

By popular request, I’ve been asked to write a quick introduction to screen. Screen is a terminal window manager, that allows you to run multiple shell windows concurrently from a single connection. In summary, you can do this: [Read More]
Categories: Code

gVim on Ubuntu – Running in Fullscreen

I admit, I am a fan of working in full-screen. Whilst coding, or writing I don’t want to see anything else unless I explicitly ask for it. If I want the time, or to see the screaming requests of clients I will make the point of switching to that information.... [Read More]
Categories: Code

JsonRequestBehaviour.AllowGet & Visual Studio Regex

Nice quick win – currently upgrading a client Intranet project from ASP.NET MVC1 to MVC2. Microsoft changed how get requests are handled in this release and disallowed GET JSON requests by default. Before going any further, note that there are security implications in allowing JSON get requests. [Read More]
Categories: Code Uncategorized

Parcelable, AIDL and IntelliJ

If you’re using IntelliJ IDEA to build your Android apps (as moi does), and you try to create AIDL files to sit beside your classes (specifically for the Parcelable interface), you may notice your own classes magically disappearing at compile time. [Read More]
Categories: Code

Fizz Buzz

I just read “Why Can’t Programmer’s Program” over on Coding Horror. Out of sheer curiosity, I googled “Fizz Buzz C#” just to see what some people had engineered. The idea of the “Fizz Buzz” test is to provide a starting point to prove you can write working code. Nothing complicated,... [Read More]
Categories: Code

Fiddler 2 and MVC Forms

I’ve been using ASP.NET MVC for a couple of projects now, and so far my assessment is lukewarm. I like it in that it lets me play with raw data and is increadibly powerful, extensible and testable. It does take quite a while to spin things up though, and you... [Read More]
Categories: Code

Internet Explorer User-Agent Strings

Internet Explorer can be a right PITA when it wants to be. I’m using Thickbox to render on page dialogues in one of my projects. Thickbox relies on testing $jquery.browser.version for determining the version number of Internet Explorer. [Read More]
Categories: Code

Log Parser Is My New Best Friend

SEO may be something of a dark art, but even if we don’t practice it, as web developers we’re usually responsible for putting into place the mechanisms that allow the Mouldy-morts to practice their forbidden forms. Recently, that usually consists of dropping analytics code onto a page to track your... [Read More]
Categories: Code

Javascript Intellisense & jQuery.noConflict();

I’ll make no bones about it, VS08 SP1’s Javascript Intellisense saves me from having to dive into the docs every five seconds. Not having that fingertip intelligence to my hand would probably cost me quite a bit of time each day. However, since I often end up using multiple frameworks... [Read More]
Categories: Code

The Massive Dev Chart for Android

Edit: The Orange Tentacle version of the Massive Dev chart has now been unpublished at the request of Digital Truth. Digital Truth now have their own paid version of the application which is availible on the Android Market. [Read More]
Categories: Code Photog

ISO Countries and Their Codes In SQL

Had a headdesk moment as I sat down this morning to write a delivery page for a web site I’m current working on. I needed a table of countries, their ISO numbers and two and three letter codes. I’ve done this once or twice before, but had misplaced the script... [Read More]
Categories: Code

SQL Server Management Studio – Unable to browse databases.

I often end up working in collaborative environments, with SQL Server accounts which only allow me access to one database on any given server. Using the SQL Server 2005 tools, this wasn’t a problem. SQL SMS showed me all the databases available but threw an “access denied” if I tried... [Read More]
Categories: Code

The Venerable “if” Statement

It’s one of the first keywords every programmer is taught, and it’s the first real sense of control you’re given over your programming. It’s translated into almost every language (there is the odd exception, and they are odd) and makes the basis for every conditional statement there-in. [Read More]
Categories: Code

Accessing Session State in Handlers (.ashx)

I use generic handlers (.ashx) quite a bit when working with client side Javascript, they’re a good way of getting data to and from the client. I’ll do an in-depth post at some point showing a nice way of chaining generic handlers, JQuery and JSON in a quick way of... [Read More]
Categories: Code



There’s plenty of resources on individual frameworks, and whilst it’s not necessarily trivial to learn an individual frameworks (ask anyone who’s done a deep dive in to C), programming as a skill extends beyond that to learning how to approach problems. The following is a list of resources that are focused on thinking rather any any one technical skill.

  • Pragmatic Programmer - I have a habit of hitting juniors around the head with this book. An excellent primer to sensible thinking, there’s very little in here that’s not common sense, but really does need laying out in a book. Will revisit, and occasionally hit myself around the head.
  • Beautiful Code - This book is a collection of essays on different viewpoints of “beautiful code”. This is not for those starting out, but for those who have their feet already wet. It challenges preconceptions, especially if you’re used to thinking from the viewpoint of a single framework and single ideology.
  • Seven Languages In Seven Weeks - Melt your brain. Learn how to learn. This hurt more than I would like to admit. This is an excellent book on learning to be adaptable. There are other books in a similar vein “seven databases in seven weeks”, “seven web frameworks”, the idea is to get used to getting your feet wet often and taking on board new ideas and new viewpoints. Some languages were familiar, some were very much not. This is an excellent way to gain a crash course in how to critically learn new languages, and how to discover new programming paradigms.
  • Don’t Make Me Think - At some point, your code will have to interface with people. Don’t fall in to the trap of declaring “I’m a programmer, UX is someone else’s program”, understand the basics of UX and how to look at usability problems. This covers web and (oh, an update) mobile, but the principles are sound.

A few tools are universal. Learn them once and they stick with you, irrespective of what you’re doing.

  • Modern Vim/Learning the Vi and Vim Editors - I was a a happy Vi person for a long time. I’ve now mostly switched over to Visual Studio Code (with Vi extensions), but the premise still holds, get to know an editor intimately, you’ll live inside it. IDEs come and go, but editors are (almost) for life.
  • Pro Git - Learn git properly. Ideally from the command line so you can get underneath its skin when things go a little pear shaped. Which will happen.
  • LEARN SOME SHELL. Powershell, Bash, whatever suits the OS you’re living in. Learn the glue.

Anything below here is general interest - sometimes it’s just nice to know your history.

  • Fire In The Valley - Well written history of personal computing from the 1970s to the 1990s.
  • Digital Retro - Pretty pictures and history of early computers.


Podcasts exist in two groups here - culture/thinking and technology specific. Both are useful, and sometimes they’ll blur the line. I don’t particularly get on with rambling podcasts, I tend to consume podcasts either in the car or whilst running, so prefer there to be a sharp focus to the content.

Culture/Technology Agnostic

  • Hansleminutes - Possibly the best produced current developer podcast available. Interview and topic led each week, content is delivered in a way that’s accessible to a range of audiences. This is general interest, there’s usually something here to suit everyone.
  • This Developer’s Life - The best produced developer podcast. Unfortunately, currently inactive, but their archive is a goldmine. You’ll find an exploration of developer culture in here, looking at what drives developers.
  • Weekly Dev Tips - Short (5 minute) tip podcast. Direct, often features guests. Little bit sized snippets of pragmatic advice, delivered in a friendly and accessible way.

.NET Specific

  • .NET Core Podcast - Interview led, project focused. Strong look at culture, architecture, uses, integrations of projects. Excellent work. Often come away googling the podcast projects.

I'm Kian Ryan

TLDR; I sport, code, make stuff.

Wear a F-ing mask.