Posts

Technical Debt - The Unseen and Surprising

TL;DR; We accrue technical debt in different, often unseen and innocent ways: 'Unexpected' - created by unpredictable or aggressive change. 'Unintended' - created by something missed at the design/development phase. 'Tools and Tech' - opportunity cost of not leveraging faster, more effective tooling and technologies. 'Team changes' - codebase incoherence due to number of contributors (who may no longer be part of the team). As with all work - get it into the backlog so it's visible. Weigh up not only the cost of clearing technical debt, but also the value gained from clearing quickly . If you can't 'sell' the benefits of a refactoring - you probably shouldn't do it. 'Technical Debt' (Tech Debt) is explained nicely by Wikipedia : Technical debt (also known as design debt or code debt, but can be also related to other technical endeavors) is a concept in software development that reflects the implied cost of ad...

Deliberate Practice for Programmers - Learn a New Language!

In the last post - we talked about why deliberate practice is important, and that I aim to approach my practice with: Purpose - I’m spending my non-refundable time on something, I want it to count. Plan - Before I start, I think about how I’m going to structure my practice so that it (hopefully) meets it’s purpose. Progress - Ensuring I take time to reflect on the practice, and adjust as necessary. To get specific (we’re programmers, after all) - this translates to: Defining Purpose Creating plans to exercise ‘something’ that I encounter in my career - for example (and this list is far from exhaustive): Learning a new programming language. Working with different IDE’s to develop and debug. Traversing and processing data. Effective automated testing. From unit to end-to-end. Creating build and deployment pipelines. Working with different databases and ORMs. Performance profiling and testing. Finding memory leaks. Rapid prototyping. Paradigm shifts - e.g. object-...

Programmers Need Deliberate Practice

TL;DR; Consistent, effective practice is a key part of a healthy, enjoyable career. Most people practice without purpose. This means they either quit and/or learn less than they could. Read this for inspiration on how to take a more considered approach to your practice. Note: I’m English, but opted for the US English spelling of ‘Practice’ throughout (as opposed to ‘practise/practice’) to avoid confusion with the difference in spelling within the term ‘Deliberate Practice’. Practice? I think we can all agree on a couple of things: People who are experts practice often. Experts are extremely disciplined with their practice. This will generally come as no surprise when I mentioned, and people will rarely argue those points. They make sense. Thanks to the growing number of interviews and podcasts - experts are getting more limelight, and we’re getting more sneak-peeks into that practice routines, habits and rituals (podcasts like Tim Ferriss’ are awesome for this). However...

Using Private NuGet Packages in Azure Web Sites

After wayyy too long – I’ve finally started breaking up my code into re-usable components and putting together NuGet feeds for them. In many case – I’m trying to put these together into a state that is suitable for others and releasing them as Open Source on GitHub . However, there is some code that I don’t want to go out to the public – but I still want to be able to break them up into components and generate NuGet packages for them. Enter the awesome MyGet . MyGet allows you to create your own private NuGet feeds amongst a whole load of other cool stuff – now the next challenge: how do I get Azure to build my site and restore the package from the private feed? Enable NuGet Package Restore This is super-easy, and in many cases you might have already done it . Right click the Solution and click “ Enable NuGet Package Restore ”. This will create a “.nuget” directory within your solution folder. In here are a few key files: NuGet.Config NuGet.exe NuGet.targets Now – we just...

Installing Windows Live Writer on Windows 8

It’s been a LONG time since I blogged – and I figured I’m going to get back ON IT! So – first things first, I needed to install the awesome Windows Live Writer. So I Google “Windows Live Writer” – and it brings me to this download page . The problem? This installer doesn’t work on Windows 8. I get the error message: Couldn’t install programs You already have a more recent version of Windows Live. Another quick Google later – and I came across the Windows Live Essentials Page – hit the “Download now” button and you’ll be good to go :) Side Note: I know that upon expanding “System Requirements” – I can see Windows 8 isn’t listed. But it’s not immediately obvious and the browser knows my OS anyway :P

Could not load file or assembly msshrtmi or one of its dependencies

So, I recently upgraded my Azure Tools to October 2012, and everything decided to fall apart in my deployment environment . Great. Thanks Microsoft. I installed the latest tools, fixed the code caused by the breaking changes in the Azure Storage Client Library  and then having tested locally - fired off a deployment to Azure. I then got greeted with a YSOD saying: Could not load file or assembly msshrtmi or one of its dependencies Erm, say what now? I don't even have a reference to this anywhere in my project. However, I know that when that is the case, this is normally some low-level GAC'd thing that is causing the problems. A quick Google reveals that I am far from alone on this issue. I ended up trying out the steps outlined Trying out  this stackoverflow answer . I skipped over this code-based solution as frankly, it seemed way too hacky for me. I tried removing all the 'PlatformTarget' references, as mentioned here . All to no avail.. I Found This F...

I'm Debt Free!

Image
Hello Ladies and Gentlemen! I've just logged into my Internet banking and confirmed it -  I'm finally debt free . The last payment on my last loan went out yesterday, and the only credit I have now is on a air miles card that I pay off in full every month. My money is my own again. This is awesome stuff - not only for the financial gain, but also for the immense emotional relief this gives me. To Be Cathartic.. There was a lot of bad emotion and memories attached to this loan in particular, here's some mental associations that spring to mind: Not being able to afford proper food - basically living on pasta and ketchup during the worst parts. This of course had the knock-on effect of making me unhealthy, I was sick - a lot. No hot water or heating - this actually did wonders for my ability to take cold showers! The banging of the front door as debt collectors wanted to get money I didn't have. The constant stream of red letters, legal threats, phone calls ha...

HSBC "Fast Balance" App for iPhone - Unable to Verify *RESOLVED*

Wow, this is just a nice big bag of fail.. I recently downloaded HSBC "Fast Balance"  since it'll make keeping my budget up to date, but I was having epic problems registering my account with them, I kept getting an error message saying "Unable to Verify" and something about my address not matching up. Well, after trying about 500 permutations of my address, I was about ready to give up. I ended up getting on the phone to Internet Banking Support (08456 002 290) and walking through it with them.. Turns out, their address validation doesn't seem to like flat numbers. My address is similar to: Flat X A Number Some Street London POSTCODE Turns out, in order to get it to validate, I had to do this: A Number Some Street London POSTCODE Which in my mind, is a completely different address. Also keep in mind that when I log into Internet Banking, it appears exactly like the top one.. So as far as I was concerned, that's how they had it on the system. So...

Lean Startup Machine London Review

29 hours across 3 days, 25 interviews, 3 pivots, 1 idea. Last weekend I attended the Lean Startup Machine (LSM) here in London. I wasn't really sure what to expect since I don't know anyone who had already been to one. I definitely wanted to go to something practical and hands-on, because while I feel I "get" the Lean books (" The Lean Startup " and " Running Lean ") in terms of why they outline the Customer Development (I really recommend " The Startup Owners Manual " to learn about this) they do - where I was struggling was the how to do it . What's Lean Startup Machine? It's an event that will really get you focused on the first part of the 3 stages of a startup* - Problem/Solution Fit . Before we start worry about producing the end-product we need to ensure that it's designed to solve a problem that people actually have. * At least this one was - there may be future events focused on other areas. Why Should I Go to...

Apple MBP Cracked Screen - AppleCare "The Worlds Most Archaic Support"

Sad times, today I dropped my Macbook Pro while leaving the office. Got home to find that I had a series of small fractures across the screen. Thankfully, the LCD is still intact, so only the glass needs to be replaced. Naturally, I get on the phone to Apple Care: After spending 25 minutes on the phone on hold (having given all the problem details to a robot woman), I finally get through to someone. I then have to re-state all the information that I gave to the robot woman to the gent on the phone. I then explain the level of damage to the screen, as ask for a quote at what the cost would be (roughly) to get it replaced. I get told "£150 for an older model". I ask "Is my [early 2011] model considered old? Is that what it would cost for this model?" - the response is "no" to both. He doesn't know what it would cost "since we don't know the extent of the damage". I repeat the level of damage. Support guy then says ...

10 Things You Didn't Know Rails Could Do

Came across this great slide deck with some nice gems in it! I hope you find it useful! From:  http://speakerdeck.com/u/jeg2/p/10-things-you-didnt-know-rails-could-do Check out James Edwards Gray II on GitHub

Reflection.. "I want an upgrade" - 1 year on

Since my whole "I want to be Rob 2.0" spiel back at the end of 2010, I have been working hard in so many areas. As I look out the window at this beautiful morning, I realise that the changes have individually been subtle. But the end result has been quite profound. In the last ~12 months, I have been scared, upset, tired, haemorrhaging money and humbled. And I wouldn't change any of it. I feel more confident, passionate, well-rounded and above all - alive . How's your upgrade going? Now go be awesome.

Startup Lessons Learned: Your Idea

I have been meaning to start posting my thoughts on findings on my startup experience for a while now, and since I am now in the run-up to returning to contracting (temporarily I might add), the timing seems appropriate. I want to start with where it all began - the idea . Beware of your noisy mind Over the years, I have had lots  of ideas. I often sit there getting on my soap-box and start putting the world to rights about just how different things would be "if I were in charge" (and of course I still do). As a geek, this is natural - our very career is built on solving problems, simplifying things (or at least attempting  to). Exercise caution .   The truth is,  most of your ideas are stupid . Now, this isn't to insult your intelligence - but most ideas we come up with are spur-of-the-moment. They lack the clarity and experience that you will need to get them off the ground. My advice:  Don't write off ideas immediately, but write them down i...

Ruby Open Classes

Coming from the .NET world, if we ever wanted to improve a class (by adding to it's code), we really only had a couple of options: Subclass This is limiting because .NET is a single-inheritence model. This means a class can only be subclassed once. So if other developers want to add more functionality, you can end in an inheritance chain nightmare. Extension Methods Since .NET 3.0, we've had extension methods . These allow you to bolt your own methods on to a type - the one gotcha being that they must be static. This would mean that you could only get at any public members of the instance you are executed against. (I should note, these are not criticisms of the language. Just because I have jumped ship to Ruby, I still consider .NET to be a top-notch framework) Enter "Open Classes" In Ruby, we have what are called " Open Classes " - and they are pretty much what they say on the tin. Classes are open for extension and modification (yups, dire...

2012: The Plan

So, here we are with another new year just around the corner. Call be boring, but this is one of my favourite times of year, not for any parties that may ensue, but because I get a chance to plan exciting things to do - and then do them . I really did a lot of ground work in 2011, which I really want to build on in 2012 - so here we go! Business Goals New category because I started this in 2011 :) Get moflo  and  dreamBIGLY  to the point where it is earning enough for myself and my co-founder back to a normal salary (we have taken a rather substantial paycut since we are  bootstrapping ). Get one charity project out of the door. Start a secondary business that is completely out of my area of expertise (software development). Financial Goals Not much to do here really, I did too good last year ;) Get investments up and running. I've been talking about this for ages - time to stop talking and start doing . Goal is 10% ROIC. Clear my last piece of...

2011 Round-Up - How Did I Do?

Wow, doesn't time fly? I can't believe it was a year ago that I wrote this . So - how did I get on? :) Supplement income by 25% I started off with this one quite slow - I sold a few items (which dovetailed nicely with my minimalism goals) and made a few hundred pounds. Obviously, this is a long way off my goal. I then decided that is was time to take the plunge and go contracting. This then really gave my bank account the cash injection it needed and brought me up to about 20% increase. While this didn't hit my goal of 25% - it's pretty damn good because it pushed me to take a bigger step that has pretty much changed my life. Leonis Software was born. Reduce fixed outgoings by 25% Last year, I was living on my own in a 2 bedroom flat in Southampton. I was spending a small fortune commuting, not to mention had a relatively high cost of living. I was hellbent on reducing these costs. I am really, really pleased to report I have reduced my fixed outgoin...

Agile: Do Or Do Not, There Is No Try

Recently, Paul Stack asked me a leading question in preparation for his post: " Is it really agile? ". The question was: "do you think organisations are turning their back on agile?" My answer to this question was "no", and here are my thoughts. Who are we talking about here? Firstly, we need to establish that there are two kinds of organisation. Those that are actually living, breathing, functioning agile teams that have no problems adopting all the processes, ship regularly and deliver things of high value to their customers. These guys are not who we are going to be looking at here. We are interested in the remainder, the guys that may or may not be "trying" agile, but for one or more reasons, cannot be considered "agile" (more on this to follow in a later post). This is to keep it simple so we can just focus on the current "problem". The three wannabe agile-eers Let's look a bit more closely at these agile wannabes. I...

Finding a Cure for the Creative Itch

Image
I am on a journey, and I am walking pretty fast - it feels great, it's invigorating . As I progress, I find myself entering a new environment, one that I have yearned for but is still somewhat alien to me. I am entering a strange new land and I need to acclimatise. My Journey Thus Far I am working my way toward my dream. I have freed myself of the corporate shackles and now working on my own project in the background while contracting. Once I have enough cash in the bank, I intend to quit work altogether and go full time on said project to bring it to fruition (or fail and move on). But as I progress towards this strange new world, I feel one key emotion - sheer excitement. Yes, there is a little fear in there too, but this is the indicator of doing something worth doing. Risk often means greater reward. Rewards are exciting. Yay. My Best Allergic Reaction Yet But, I have found myself suffering with something... I have discovered that the only thing really holding me back from do...

Minimalist Moment: Lose Everything? Not I!

As I am sure you are aware, there have been several bouts of "rioting" here in London recently. I say this in the loosest sense, because it's not really been in protest of anything, it's actually just been mindless violence and looting. And this is what worried me the most. Peoples homes were getting set on fire, for nothing. Like a lot of other Londoners, I live above shops in a big old building. Fire safety? Didn't exist when these were built! So in short, the plan was to get out. FAST. So, when word on the street was that the mobs were coming to my area, I got a little concerned. I thought it would be sensible to just have a quick scoot around the flat to go over an exit strategy in case I/we needed to get out of dodge in a hurry. Luck favours the prepared . So I decided to sleep clothed, and pack a bag with everything I would need to get by: 2x underpants. 2x socks. Pair of jeans. 2x TShirts Passport Cash/Cards I also packed my Macbook Pro ...

2011 Update: What's Done & What Will Be Done

Hey Guys! Long time no speak right! I said in my previous post that I had been busy, so I thought I would share with you what I have been up to, and what's on the plan for the rest of 2011. Here's where I stand on my 2011 goals : Financial Goals Supplement Income by 25% - The plan here was to get more creative about how I earn my cash. Rather than floating from paycheck to paycheck, I wanted to get more money from more sources. I am pleased to say I have formed my own company, have my first contracting gig signed and am starting to flesh out my first product idea, which I want a working prototype well before the year is out. By the end of the year, my turnover would be yielding an increase of about 23-25% extra on last years income . WIN . Reduce Fixed Outgoings by 25% - As well as trying to make more, I want to spend less - I want to funnel cash into doing stuff rather than spending it on mindless crap. I am super-pleased to say that I have reduced by fixed outgoings ...