Archive for January, 2010

Proffesional Self Assesment for 2009

Monday, January 11th, 2010

I am just filling in my companies annual self assessment form and thought I would share some of my thoughts regarding 2009.

Value and Quality

“Quality is doing things right when no-one is looking” this is a quote from John T Ford, mentioned in the infamous software book “The Mythical Man Month” by Fredrick Brookes. This year I have strived to fulfil this meme to it’s upmost. I believe the quality achieved by automating things that previously used unreliable human methods to achieve adds the same level of value to the client as the entire creative process. A relevant historical example of this can be found in the automotive industry and the subsequent collapse of poor quality American vehicle engineering as the Japanese and Asian markets obliterated them with durable, reliable, inexpensive import cars. The same is true of software and the beginning of this trend can be seen in companies like Goggle.

Productivity

This year, I have learned about the most important form of productivity as espoused by the agile and Lean principles. “Sustainable development” is a quality generally completely misunderstood in this certain circles, but is in fact the source of a large amount of client dissatisfaction. Selling projects in under budget and with the assumption that developers will work overtime to get them completed is a fallacy perpetuated by incompetence. Rushed, ill thought out work leads to unrealistic expectations for the client and ultimately disappointment in the output which is then reflected onto our company and the production staff. Even more harmful is the attrition it leads to as experienced developers leave unfulfilled and frustrated. In which case productivity should be measured by a lack of overtime and encouragement of advanced thinking.

Strategic Context

With a marketplace of vendors that are consolidating into large inefficient groups driven by bureaucracy and nepotism, trying to win the business of other larger inefficient monoliths, there are few things that will allow one to distinguish themselves from the crowd. Honesty, integrity and reliability are the three main things that will allow us to stand tall above the rest and are the most important things for our strategic context in terms of winning the business of the companies of tomorrow.

Quickstart tutorial to Mercurial and GoogleCode

Sunday, January 3rd, 2010

I love using new technology. I really do. It’s great, basic things you knew how to do with an older system, get reinvented and become no longer trivial. They become a long drawn out, painful process, that involves your blood pressure raising to that perfect level where it reduces you lifespan by a twenty minutes. Each time.

mercurial-logoSo when I switched to command line Mercurial from Tortoise GUI SVN, you can imagine my delight.

To be fair, I actually had already got command line SVN experience, so thought the transition might be somewhat simpler. It wasn’t. The commands may be very similar but the process itself is not.

code_logoFrustratingly it is actually very simple once you know the command-set to get you up and running, unfortunately no has written a basic, 123 guide to setting up a googleCode mercurial instance on windows XP. So I thought I’d be the first.

  1. Download and install Mercurial command line. Make sure to check the last check box on the installation screen along with the readme, this allows you to access Mercurial from the command line.
  2. Create your Google code project. This part’s easy, follow the steps enter the words and navigate youself to the main project screen. It helps if you already have a Google account.
  3. Now we get to the fun part. Open your command line in windows, by going to Start->run->type cmd in the input box and click ok. Or if you have style double click the short-cut you’ve created for yourself on the desktop.
  4. You’ll want to navigate to a folder where you can store your project. For the sake of this example, lets say your project is named testproject and is in the root of c:\. first back out to the root with:
    cd \
    
  5. Then make a directory to store the project in:
     mkdir testproject
  6. enter the directory
     cd testproject 
  7. Now you want to take a clone of your googlecode repository, to do this type the following command:
    hg clone https://testproject.googlecode.com/hg/ testproject
    
  8. The last parameter is the directory to copy it into on the local file system. This should result in Mercurial spewing out some output identifying that it has correctly downloaded.
  9. To check, type:
    cd testproject
    dir
    
  10. If it was successful, you’ll see a directory called “.hg”
  11. If it’s there, now you want to make your first commit. Create a text file called readme and dump it in the directory with the .hg in. To add your new files type:
    hg add *
    
  12. Next you’ll want to commit them, type:

    hg commit -m "added first file to repository"
    
  13. So you have commited your first change to the repository, but this does not mean it’s gone up to the main node on Google, it is currently just committed to your local file server. To commit the changes back up to Google’s servers, you’ll need to run the following:
    hg push
    

    This will prompt you for a user name and password, the password IS NOT YOUR DEFAULT PASSWORD. Go to your accounts hosting page to find it.

  14. Now, if your like me, i.e. LAZY, you don’t want to have to enter your username and password each friggin’ time you want to push. You want an automated way to authenticate your https googlecode push actions. The way to get around this is to open the “.hg” directory and find the file “hgrc”. Edit this in your preferred text editor. Where you see the line
  15. default = https://testproject.googlecode.com/hg
  16. change it to
  17. https://(your username here):(your password here)@testproject.googlecode.com/hg
  18. And Voila! everytime you push, it automatically skips the login and password steps.

I hope this helps, I spent sometime this weekend trawling the internet for clues as to how to do this most basic of processes but could find no simple explanation, written in a language people could understand.