Wednesday, 24 October 2012

Blogs as an indication of job satisfaction?

When was the last time you updated your blog?

Have you done anything lately that was worth blogging about?

These are all questions that have been rattling around my head recently. I've experienced it myself, I've seen it via my colleagues. When people are working on interesting stuff, focused on solving clearly defined business goals, their blogs are full of detail and insightful to read! If the business is losing or has lost direction, blogs become an attempt to stay focused and continue honing skills but slowly over time the drain of the working day drags the blog content down to just notes or, worse still, silence.

I'm beginning to see the worth of a blog as a litmus test on job satisfaction - a stagnating or random blog probably indicates a day job that is doing something similar! Many posts (regardless of the stats) probably indicates a full on and enjoyable day job focused on solving tangible business goals

There is probably a good argument that a job shouldn't define you and that you can exist out of work, but if you are a developer and you're spending at least 8 hours per day, 5 days a week doing something that is not progressing your skills and you're not enjoying, then you probably need to question what you are doing! (and the first person that you should question is your boss!)

Monday, 8 October 2012

Project Euler #24

I'm trying to start up on project Euler again, one thing I do like is that it highlights how poor some of my maths knowledge actually is. Neither school or college covered many of these algorithms; which is bit of a surprise given that I did a four year mechanical apprenticeship with applied mathematics.....still never too late to learn

So I (re)started on problem 24 which read:

A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:

012 021 102 120 201 210

What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?

I usually start with a brute force attack on the problem, using TDD and the supplied example to verify the output. This worked nicely for the given example, but even on modern computing power I couldn't get it to finish in a reasonable time to determine the required answer - it was taking much too long!

Resorting to Google for "fast ways to calculate lexicographic permutations" I found a great solution and explanation on www.mathblog.dk. On previous problems I've tried to stay away from exact answers, instead I learnt about the sieve of eratosthenes when trying to find ways to determine the 'nth' prime number and then implementing it myself, but in this case I decided to take their answer and plug it into my code. Having used TDD the whole way through I quickly extracted an interface off my brute force attempt and created a new implementation with this code, dropping that into my unit tests proved it would work and provided the answer in under 3ms.

Now 27 problems "solved" and counting, hopefully I'll find a problem that will allow me to reuse the algorithm from this problem so I can learn bout it some more.

Thursday, 4 October 2012

VS2012/.NET4.5 and Server 2003

Just a word of warning:

Windows NT and Windows Server 2003 do not support .NET 4.5 - you can not install the framework onto these systems.

So if you are building in visual studio 2012 and have to support Server 2003 (or earlier) then you must remember to target .NET4.0 (or lower) in your project(s) otherwise you will not be able to run them on the target system. That would be a really bad thing to find at the end of the project; another good reason to implement continuous integration/deployment into any project from the outset (and deploy to an instance/server that represents the target o/s)