NDC Porto 2024

I had the pleasure of spending ISO Week 42 in the beautiful Portuguese coastal city of Porto, attending the NDC Porto 2024 conference for software developers by NDC Conferences. It’s been a long time since I attended a multi-day conference – perhaps even as long ago as Software Architect 2007 (where I first learned about Dependency Injection and IOC Containers) which makes me feel quite ancient. Having been a freelancer since 2008, it’s often difficult to justify taking time out to attend conferences, no matter how valuable they might be to one’s career in the longer term. The face cost of the conference ticket is usually dwarfed by the loss of contract income (real or perceived) whilst being unable to bill a client. ...

20 October 2024

DDDNorth 2022

Yesterday morning I arose unusually early for a Saturday and drove eastwards to attend this year’s DDDNorth at the University of Hull. These free, community-driven events held at the weekend offer an invaluable opportunity to learn from peers in the industry in a relaxed environment. Five concurrent sessions in each timeslot means that tough decisions often have to be made about which to attend! In acknowledgement of my maturing years (I’ve been reading up on optimal stopping) and the niche that I have carved out for myself, I chose to stick to those sessions that focused on backend and distributed architecture and development. ...

4 December 2022

Temperature Blanket – A Rare Opportunity for My Coding to Assist Jocelyn's Crafting

As the resident geek in our family, it won’t surprise you to hear that I am occasionally approached by Jocelyn and our kids to provide tech support. Sadly, most of these queries are invariably of the “how do I print from my phone” or “the Sky box stopped working” ilk, and rarely trouble my software skills. So it came as a pleasant surprise when I recently encountered a genuine reason to use .NET, APIs and Docker in support of one of Jocelyn’s craft projects. ...

16 February 2020

How to Install RabbitMQ Server in Docker on a Synology NAS

One of the game-changing features of Synology‘s NAS (Network-Attached Storage) devices is their ability to run Docker, the industry-standard containerization technology. This opens up the possibility of running all kinds of applications on the NAS, turning them into home servers with boundless possibilities. One of things I wanted to run on my own Synology NAS is RabbitMQ, the popular open-source message broker. I intend to use this as the heart of a distributed home climate measuring project, with a bunch of low-cost Raspberry Pi devices sending regular sensor readings to a database, or directly to a real-time web application. ...

25 January 2020

DDDNorth 2014 Review

I had no excuse for not attending DDDNorth this year, as it was held at Leeds University, a relatively short drive from home. Not that I’d be looking for an excuse – these free events are always superbly organised and provide a valuable opportunity to see sessions from a wide range of speakers without having to take time off work. It’s no wonder the tickets are always snapped up so quickly. ...

22 October 2014

Back To Basics: On The Use And Abuse Of The Humble Boolean

“We who cut mere stones must always be envisioning cathedrals” — Stonecutter’s creed Consider for a moment, if you will, the humble Boolean. Taking only two possible values, it is the most basic of all the data types we programmers use, and its existence is fundamental to all the code we write. At the end of the day, when all is said and done, everything we do is just a big bunch of ones and zeroes. ...

1 July 2014

Star Of The Week

As a lowly sellsword amongst the ensemble cast that make up the incestuous York/Leeds IT scene, I am not usually one to be influenced by the promise of titles and honours. Time was, long ago, in my first graduate job, that I yearned for a promotion from “Solution Developer” to “Development Specialist”. Now I give little consideration to what I’m called, and sell my services on the basis of what I can do, and the value I can bring to a project and an organisation. ...

8 May 2014

Friday Retrospective: My First Printer

My first printer was a Star LC-20 nine pin dot matrix that I received as a Christmas present when I was 15 years old. That’s the kind of nerdy teenager I was, folks. All yuletide long our home rang out with the deafening noise made by those pins rapidly and repeatedly punching through a flimsy ink-soaked ribbon. Incidentally, Radio 4 are forever running features about the ongoing decline in audible birdsong in the English countryside. Personally, I think it’s a travesty that a whole generation of kids will grow up unfamiliar with the nerve-shattering noise of a built-to-last dot matrix, the inimitable caterwauling of a 33.6 kbps modem connecting to a dial-up BBS, or the satisfying clunk as a 3.5 inch floppy is gleefully accepted by a disk drive. Moving to an SSD may have provided an incredible boost to my development productivity, but there’s a part of me that misses hearing the faint humming and scratching sounds of traditional hard disk heads moving across a highly-polished platter. But I digress… ...

25 April 2014

One Reason Why NCrunch Is Worth The Cost

I have been merrilly using NCrunch – an “automated concurrent testing tool for Visual Studio” – for almost three years now. I ponied up for a paid license when it made the transition from beta to RTM, and I recently shelled out again for an upgrade to version 2. Why?! Why do this when plenty of test runners are free, or bundled with software I already own such as ReSharper and Visual Studio itself? ...

22 April 2014

A Personal Stack Overflow Milestone

In the grand scheme of things, ’tis but a minor achievement, but I was quite chuffed with myself this evening when my Stack Overflow reputation finally reached the 10,000 mark: My girls made me a special “10K” cake to celebrate 🙂 Kudos to Jeff, Joel and the team for creating a site that I have found engaging, entertaining and very useful for the last 3 years and 4 months. ...

4 January 2012

Wacom Bamboo

Almost everyone who has wandered past the various desks that I’ve occupied over the last year has passed comment on my Wacom Bamboo Pen Graphics Tablet. So, let me say a few words about my experiences with that. For the longest time, I had been perfectly content to use various Logitech VX / MX mouses as my secondary input device, occasionally using a Microsoft Arc Mouse (very convenient to carry around in my rucksack). ...

13 September 2011

Schoolboy Error Of The Day

This dumb mistake just cost me an hour spelunking around in the debugger: var status = source.Substring(source.LastIndexOf("/" + 1)); (where source is e.g. “http://foo.com/status/all-is-good“) Fortunately the ramifications were picked up in the acceptance tests, but the root cause wasn’t at all obvious from such a high level. Lesson for the day – code is never too trivial to warrant unit testing.

17 August 2011

Entity Framework Week Part 4: Features and Further Investigations

This is the fourth in a series of five posts recounting my experiences using Entity Framework Code-First to replace ADO.NET and stored procedures in a client’s existing application. The introductory post in the series is here. I didn’t want this series of posts to descend into a point-scoring NHibernate-versus-Entity Framework comparison, but… I now have a basic proof-of-concept up and running, with my client’s nascent application now being powered by Entity Framework Code-First CTP5 rather than a hand-rolled DAL. So, I had some time to consider future functional and non-functional requirements that the team would be asked to develop and support, and investigate how EF would meet the challenge. ...

10 March 2011

Entity Framework Week Part 3: Runtime Issues Encountered

This is the third in a series of five posts recounting my experiences using Entity Framework Code-First to replace ADO.NET and stored procedures in a client’s existing application. The introductory post in the series is here. Having configured and initialized Entity Framework, and tweaked the mappings, by Day 3 I was all set to start consuming my shiny new DbContext implementation from the application code, and actually get some CRUD work done. Not unexpectedly, I hit a few issues along the way… ...

9 March 2011

Entity Framework Week Part 2: Conventions and Fluent Mappings

This is the second in a series of five posts recounting my experiences using Entity Framework Code-First to replace ADO.NET and stored procedures in a client’s existing application. The introductory post in the series is here. As mentioned in yesterday’s post, I was attempting to use Entity Framework Code-First CTP5 to map an existing domain model to an existing database schema. Fortunately the project was in its infancy and there was a high degree of cohesion between the two models. I therefore didn’t anticipate too many difficulties ahead – the occasional naming discrepancy to resolve, and table-per-hierarchy mappings that would need their discriminators specifying – nothing too complicated really. I hoped to make as few changes as possible to either the database schema or domain model. ...

8 March 2011