Thursday, 25 February 2010

Mercurial

Today i was planning to write about my decent into the world of Distributed Version Control Systems (DVCS. Specifically i was going to talk about Mercurial but it turns out that most of the heavy lifting has been done for me.
I felt very motivated to use a DVCS in my next personal project after reading Martin Fowlers bliki and then writing about them last week. Based purely on Martin Fowlers recommendation, some light googling and my magic 8-ball I decided to go with Mercurial. Also the fact it has strong windows and mac support (unlike GIT) and is a fairly mature product might have had something to do with it :)

Coming from a Subversion background i had a bit of unlearning to do. My first mistake was forgetting that as a distributed version control system every machine needs to have its own repositories. Whoops.... that little assumption took me about half an hour of fluffing around trying to understand why my mac client (murky) kept tanking on me.

Anyway it turns out that there are some great articles/tutorials out there of those who have done the hard yards for you. So why reinvent the wheel?

  • Joel Spolsky has put together a fantastic series of six tutorials at http://hginit.com outlining the key concepts. My favourite is the first tutorial where you are forced to unlearn your bad subversion habits
  • StackOverflow has a great wiki on all you would ever need to know on the who/what/where/why/how of Mercurial
  • A great Mercurial client for the mac by Jens Alfke called Murky
  • And for windows subversion users there is of course TortoiseHg to ease the pain of transition
So enough blogging. Time to cut some code

What happens when you type in a url

This is a great blog post by Igor Ostrovsky at Microsoft about what happens when a url is entered.

This should be compulsary reading for any web developer or anyone at all interested in the actual workings of the internet. This is where the magic happens :)

Thursday, 18 February 2010

Source control

Martin Fowler has just posted a really interesting blog on source control... my favourite part was this comment about Visual Source Safe

"I've heard too many tales of repository corruption to trust it with anything more valuable than foo.txt."

Brillant! I think anyone who has touched VSS would agree with these sentiments.


The blog actually got me thinking about source control and continuous integration which is a natural level of progression from it.
I was never introduced to to any type of source control or even an overview of what source control was, while i was studying at university. Although that shouldn't really surprise me i guess... i hear they still teach the waterfall software development methodology anyway.
The point is, is that these are major tools in any developers arsenal, from one man start ups to large developer teams. Yet graduates are coming out of their studies and we have to teach them from scratch, the why as well as the how. Being language and platform agnostic there is no reason for universities not to teach these fundamental skills.

Anyway I have been keen to take a look at a distributed version control system (DVCS) for some time now so perhaps this is the push i need. The only question is now GIT or Mercurial?

What is your preference and why?

Thursday, 11 February 2010

From C# to Objective-C

The book The Pragmatic Programmer recommends that as part of a programmers ongoing learning that we should learn a new language every year. So this year i thought I would actually follow through on this and learn Objective-C.

The reasoning was pretty simple. I love my iPhone, so messing round with writing apps for it in my own time kind of appeals. Also i own a still shiny late 2009 MacBook Pro, so i can just download the SDK and start having a poke around. Finally i have always wanted to learn C in some way shape or form, (in fact Joel Spolsky has quite a strong opinion on this) and as Objective-C is classed as being a "Strict superset of C" i thought this would be an ideal way to knock off two goals of mine.

Now as a Java/C# developer by study and then professional life I'm not quite used to the different syntax or degree of flexibility that a lower level language live Objective-C offers. For example an Interface is not what i understand an Interface to be, for that you need a Protocol (or are they more abstract classes?) Good times!!

Fortunately in my potting around i've found some good links/resources which i've included below. I'll continue to update this list so please feel free to drop me any of your tips or hints. 

  • This is a great post by Scott C Reynolds who also gave me the inspiration for this post  as well. 
  • Very useful article on going from C# to Objective-C and some of the pitfalls encountered. Also a nice reminder of some very helpful design patterns. 
  • Great blog by Chris Small with heaps of detailed code examples comparing C# to Objective-C 
  • A useful question raised by someone in a similar situation on StackOverflow


Let me know what works for you


  

Google as an ISP?

Anytime that Google wants to come to New Zealand and try this out is fine by me

http://googleblog.blogspot.com/2010/02/think-big-with-gig-our-experimental.html

1 gigabit per second over fibre straight to your door! I don't think the day is far away when houses will start needing fibre in the house, not just leading to it.

Tuesday, 9 February 2010

Xcode - Can't find outlet or action server on the inspector panel


Turns out it's on the library window on the classes tab. As they refer to the class not the instance.

Monday, 8 February 2010

So it turns out that vaccines do not cause autism

What i don’t get is how come it took the lancet so long to print the retraction

Friday, 5 February 2010

Great comment on flash… or the lack thereof

I really enjoyed this little article by Barry Dorrans talking about how Apple not having flash (or the little blue brick) on the forthcoming iPad is not such a bad thing
My favourite line “It’s not a little blue brick people, it’s a little blue condom …