AtlasCamp 2010 at last!

AtlasCamp 2010

This year I'll be heading to my third AtlasCamp. It's becoming a tradition I hope never to break.

AtlasCamp is a whirlwind three days of activities targeted at developers who are customizing, writing plugins for and generally hacking Atlassian products.

There are two things that impress me most about Atlassian together with AtlasCamp:

#1 Atlassian continues to put a huge amount of effort and resources into enhancing their product platforms for developers which consist of cutting edge technologies, frameworks, APIs and tools. Sure there are challenges sometimes when things don't quite work, but for the most part they're quite simply a joy to build on.

#2 What happens at AtlasCamp does NOT stay at AtlasCamp: The last couple of years developers and Atlassians talked about quite a few initiatives. These were things that would make the lives of developers better and easier. The amazing thing is that many of these things are now reality. Here are a few examples:

  • We talked about Atlassian hosting a studio of their tools for plugin developers. Now we have s.p.a.c.
  • At the first AtlasCamp we talked about how it would be nice to have an SDK to help plugin developers get going. Now we have the quite excellent (IMHO) Atlassian SDK
  • I'm pretty sure along the way folks griped (myself included) about the documentation. It has become possibly the best in the industry.

AND

Last year we talked about how it would have been better to have AtlasCamp attendees get to know each other ahead of time through being able to post profiles. Atlassian stepped up as usual and went one better creating a clever contest with a contest with Herculean Tasks and Points.

Atlassian is a unique company which offers a glimpse of what could be a golden age for software developers through it's innovation, strong culture and unique approach to selling enterprise software.

How to recover files when your DELL laptop harddrive crashes

Summary: If your DELL laptop suddenly won't boot to Windows and your IT department says your files are unrecoverable - the files probably are in fact recoverable using this tool - R-Studio Emergency .

I've recently had two associates whose DELL laptop harddrives have stopped booting to Windows. In both cases the IT department said the files were unrecoverable. However I found a tool which did indeed recover all their files in both cases.

The tools is R-Studio Emergency downloadable here.

Their setup is very clever. You can download their demo-recovery-tool for free which shows you all the files the tool can recover - file names, sizes, location, etc. However you must pay ~$75 to unlock the tool which will allow you to actually get the files off the ailing hard drive.

You install their tool to a USB thumb drive and can then startup your computer from the thumb drive itself. Doing this skips the operating system (most likely M$ Windows in this case) and boots the computer directly to their tool which has an easy to navigate GUI letting you go through the directories and files easily marking the ones you want to recover.

Once you have unlocked the tool and selected the files you can copy them back to the USB key and from there onto another computer. There are various other networking options but in most cases that will probably not be the easiest route.

For the files I recovered it what I didn't realize right away was that they were encrypted - thus I had to hand the files over to the IT department for decryption rather than handing a bag of happiness directly to my associates.

time for a standing desk - maybe even a GeekDesk

So it turns out sitting all day is REALLY bad for everyone - not just bad as in you might not be able to fit into last summer's shorts but bad as in you're probably moving up your expiration date.

Or to put it more bluntly: MSNBC - You sitting down? Experts say it'll kill you

So what's the answer? It would seem to do less sitting, maybe a lot less.

It's even possible in a few years the way classrooms look could be very different:

More options:

or even DIY!

A virtuous cycle fueled by micro-bribes

We're trying an experiment of zero TV for the summer in the hopes that Aidan (our 6 year old) will get more into reading. I'm also paying him off shamelessly to the tune of $0.05 per book he reads.

It's working out much better than any plan I've hatched to date.  There were not even two minutes of combined complaining about summer tv deprivation. This after I braced for at least two weeks of protests.

I'm also incentivizing his little brother Dylan (3 years old) to coax Aidan into reading him books. I'm paying off Dylan on the side (1 cent) for every book he talks Aidan into reading. 

It's been surprisingly successful virtuous cycle fueled by micro-bribes.

Git - A quantum leap in software version control

"This is too important to miss out on. This is possibly the biggest advance in software development technology in the ten years I've been writing articles here." - Joel Spolsky

Every so often a software developer comes across a new tool that positively changes the fundamental way they work. This experience is invigorating and refreshing. For myself this seems to happen about once every two or three years it seems if I'm lucky.

Just recently this has thankfully happened in the form of ?Git. There are loads of great articles on Git - why to use it, tutorials, etc.  So instead of repeating those I'll just link to a small subset of the very best ones I would tell 'pre-Git-Brendan' to get started with.

My favorite Git articles and sites:

Why I love Git

It's soooo easy to create your repository:  git init

As an independent contractor type I'm often working with multiple clients on multiple projects. The problem for me is that I'll sometimes work for a few weeks on a particular project but then switch off it for weeks, months or even years but then need to jump back in. For some of these projects I have Subversion repository created, but honestly it's can be a pain to get one started - find an appropriate server, check in your code trying to tip toe around compiled things your shouldn't be checking in, checkout another copy, switch your new 'subversioned copy' around, etc. The worst part is though even when you go to this trouble you often find that if you leave the project and come back some months later the repository has changed locations or your credentials were removed or EVEN history was lost. This seems like it should be rare but happens all-the-time even with the best intentioned of hosts.

Not to complain about Subversion too much because until recently it was the best option. I only mention it because it's important to understand what makes git so easy.

With Git you switch to your project dir, type 'git init' - your repository is created! A couple more commands to check everything in.  $ git init
$ git add .$ git commit -m 'initial commit'It just doesn't get any easier. And since I will have everything (commits, history, etc.) local I know that no amount of other people screwing around upstream will ever cause me to lose this work.

It's super fast

Everything you do is nearly instantaneous. You can just take my word for it or do some more reading. 

It's distributed so no cloud required!

The lack of a server being available or even an Internet connection will never again prevent you from researching your code bases history or making meaningful detailed commits.

Git is extremely flexible

You can literally do just about anything imaginable with Git in terms of version control. Detailing the exotic options before you is beyond my scope or really understanding here. I just stick to my own workflows for the most part. But one quick example is that if you accidentally push or check in a plain text password file for instance (something you clearly don't want to do) you can actually erase that from the history. Powerful - yes. Dangerous - possibly, but really it's like any other tool - to be used for good or evil. And Git does try to prevent you from doing things that you probably don't want to usually be doing.

By the way trying to 'uncommit' a file with secret stuff in Subversion is a bit of a nightmare. Someone who has had to do this in Subversion might use Git for this reason alone.

Git and DVCS in general has huge momentum

DVCS is what's happening in 2010. For a lot of people it was happening earlier certainly. I'm perhaps a little late to this party even. But I think it's safe to say any developer who makes an effort to upgrade their skill sets has picked up DVCS or will be doing so very soon.

The most compelling article I've read on the momentum side is Distributed Version Control is here to stay, baby by Joel Spolsky. His article discusses the other DVCS option Mercurial but everything he says is true of both.

Why I seriously love Git

Committing with reckless abandon!

Since I usually have to do so much context switching I like to commit a lot. With Git this is so fast and easy without screwing anyone else up that I find myself doing it more....A LOT MORE.  In fact I'm starting to use the comment in Git as a way to report in detail everything I've done so I can find my way back later. With Subversion and other systems you just don't commit nearly as often and by the time you do it's pretty easy to forget a lot of the details about what you've done.

One spin on this is just how easy tagging is....as easy as it could possibly be. With Subversion tagging is actually pretty heavy weight, slow and eats up a lot of disk space. I've never been clear on why people take that approach in Subversion but there it is.

I've already gotten loads of mileage out of doing this, not to mention it just feels good. With a DVCS you can optionally wrap up each minor feature or fix with a commit. You needn't worry about the ramifications that commit will have on the larger team. 

If you prefer to pair down the comments in your public commits this is an option - so you don't have to be concerned about the local log you're creating.

Sill have to publish your changes to Subversion or Perforce? No problem!

Git has excellent Subversion integration so it's easy to use Subversion as your public repository. Just as good is that when you clone a Subversion repository to Git you get all the history local! Additionally Git has integration with some other version control systems such as Perforce.

Suddenly all my projects are under version control

No project no matter how small ever needs to be without version control. There are projects I've been coming back to for 10 years where I haven't always adequately documented my most recent changes and the re-discovery process is needlessly time consuming. Git puts an end to this.

SmartGit

SmartGit is a solid, easy to us GUI which has gone a long way towards making Git accessible to me. You still need to really understand Git to use it effectively. I started out trying to use SmartGit as a crutch which was a FAIL. But once I spent enough time learning Git concepts I found SmartGit a great way to get a quick handle on a lot of basic operations. SmartGit seems to currently target and handle the commands I use 90% of the time,  but I find myself definitely needing to revert to the command line in several instances. This is actually with me because I'd still prefer to ultimately have a solid grasp of the command line too.

SmartGit is probably also a faster way to help educated teams of developers on the basic concepts.   But again without understanding the Git specific concepts like the "index" I guarantee you'll quickly get lost.

So give Git a try. Once you've gotten the hang of it you'll feel like you're finally in control of your version control system and not the other way around.