Goings on at Softwire, technical and otherwise

Friday Lunch and Learns: HTML5 and Mobile Dev

Every Friday lunchtime at Softwire we all get lured into a meeting room with the promise of free food, and one of our colleagues gives a talk on something they’ve been working on recently.

We filmed my talk on HTML5 and Mobile Dev, so that others can enjoy it too.


Clandestine Maths Club: Interview with Kenny Hung

previous article in series

Following on from my previous posts about the “clandestine maths club” that has sprung up at Softwire, I interviewed one of the ringleaders – Kenny Hung.

Kenny Hung

READ MORE…


Staying DRY with LINQ to Entities

A common problem with LINQ to Entities is that it can often lead to code repetition. This post explains why and when this happens, and how to get around it using LinqKit.

In this article I’m going to assume that you have at least a passing familiarity with the concept of DRY (Don’t Repeat Yourself) and why it’s a good thing, and with LINQ to Entities.

READ MORE…


Debugging Third-Party Applications – Part 3

previous article in series

This is the last in a short series of posts about a problem I had with Microsoft Exchange’s Outlook Web Access (OWA): reading the Old New Thing blog through OWA suddenly stopped working with error:

This link has been disabled for your security.

In the second part I tracked down the .NET code that was rejecting the blog article URL as unsafe and I guessed that the problem was the URL was relative not absolute – and so looked to OWA like an attempt to reference one of its own resources, potentially maliciously, and not a real link to a page on the internet.

READ MORE…


Google Code Search is dead

One of the best online tools for programmers, Google Code Search, is now dead. This amazing tool was very useful for looking through open source code. You could just type in a class name, or an error string, and be taken instantaneously to a hyperlinked, browseable source listing. This search engine was one of my most used bookmarks.

So what can we use instead?

  • In many cases your IDE debugger will provide the information you want – and often in a more useful fashion.
  • Otherwise, there are plenty of other search engines you can try.

READ MORE…


Web Development in 2012

It’s 2012 and we’ve seen a lot of new changes in web development in the last year or two. So here’s my quick overview of some of the highlights and some examples from the best of the web, along with lots of links!

READ MORE…


Unit testing NHibernate-based data access code using SQLite

Code that interacts with a database, either directly or through an Object-Relational Mapping (ORM) library like NHibernate, is often quite difficult to test. This blog post looks at unit testing data access code using FluentNHibernate mappings, but it should apply just as well to vanilla NHibernate and other ORMs.

NHibernate provides interfaces for everything, which you theoretically could use to provide mocks to your code under test, but mocking complex 3rd-party library classes like this is not necessarily a good idea: you’d need to know exactly how your code was using the NHibernate API in order to do so. It’s best to think of NHibernate as part of your standard library and provide a real NHibernate session to your code under test.

The problem with this is that a real NHibernate session needs a real database. If you want to test with the same DB as your production code, this means keeping a database server running for your test, getting data into it, working out how to cope with multiple tests using the same database, etc… the resulting test runs are going to be slow and a lot of work to maintain.

Enter SQLite. It’s a single-DLL relational database management system (RDBMS) that can create a database from scratch for each test (so no worrying about setting up fixtures for tests running in parallel), in a single file on disk or in memory (the latter of which is *fast*). Using SQLite for unit tests is nothing new, but there are a lot of configuration options to consider, and I thought it would be worth documenting the end result that we arrived at when doing this sort of testing on our previous project.

READ MORE…


How we run a software company: Monitoring employee progress

previous article in series

It is essential for any company to be aware of how each of their employees is getting on. Fail to spot and reward good work and you’ll have disaffected and un-incentivised employees. Fail to spot and correct poor work and you’ll fall some way short of 100% productivity.

It’s the nature of a Software house that employees will change teams often, with project lifetimes usually falling between one month and one year. This presents a challenge for monitoring progress, but also an opportunity.

At Softwire we recognise the importance of having some consistency in your management line, but we also consider it imperative that you’re looked after by someone who’s working with you on a day-to-day basis. That’s why everyone here has two managers: a Line Manager (LM) and a Task Manager (TM).

READ MORE…


Getting Objective, part 4: Please release me (let me go)

previous article in series

Recap

Last time, we enhanced our Hello World application so that it could interpret our feedback and take some appropriate action. I closed off by declaring it to be “very bad indeed“. This time, we’re going to find out why…

READ MORE…


Debugging Third-Party Applications – Part 2

previous article in series

This is a short series of posts about a problem I had with Microsoft Exchange’s Outlook Web Access (OWA): reading the Old New Thing blog through OWA suddenly stopped working with this error:

This link has been disabled for your security

In the first part I tracked down this error message to a static page UrlBlockedError.aspx in the OWA files on the Exchange server.

READ MORE…