Wednesday, July 25, 2007

Code Camp SA: Darren Neimke

Remote location On Sunday July 8th, Darren of Readify, and most importantly of Adelaide, closed the inaugural Code Camp SA with a quality presentation. After a couple of false starts it was eventually revealed that Darren would be discussing remote development.

Remote development doesn't necessarily mean sitting atop the Alps with a laptop and some pretty amazing Wi-Fi Internet. It can be a simple as working apart from your fellow development team members such that you can't simply step over to the neighbouring office and discuss your task face to face.

While I generally share an office with the other developers where I work, we do have two offices about thirty minutes apart and I have been working from home on an increasingly regular basis. With this trend likely to continue, the ability to effectively communicate with the team when separated is a growing concern.

In the office I can ask a coworker to look over my shoulder to give a second opinion on some code or we can step over to the whiteboard and represent the problem visually and discuss a solution. In my study at home I have email, I have instant messaging, and I have my mobile phone. These are all excellent systems for communicating verbally or textually but that's where it ends.

I've tried the whiteboard-style collaboration software but drawing class diagrams with a mouse or notebook touchpad just isn't helpful. The other benefit you lose on your own is other team members overhearing your coding pains and butting in with a solution that you probably would have struggled with for much longer before finally asking for help.

Darren demonstrated that having a Tablet PC (or a similar device) can be great for shared whiteboard sessions and new tools like SharedView can help with peer code review or even Pair Programming. I'm not sure what to do about "overhearing" your coworkers apart from a persistent VOIP conference call running in the background and that could be embarrassing when you forget it's on.

Overall, Darren's presentation gave me some good solutions for working remotely and gave me some other ideas to ponder on. And, Darren, if you are reading this, do you have any recommendations for coffee shops with good affordable Wi-Fi Internet in Adelaide?

 Wednesday, July 11, 2007

Code Camp SA: Mitch Denny

Mitch's presentation about "TFS Virtualization and Advanced Build Techniques" was my highlight for day one of Code Camp SA.

Mitch suggested that one of the major benefits of virtualizing Team Foundation Server was the ability to rollback the whole server at any point. While that is certainly helpful if the service packs don't install right the first time, the benefit I've found personally is being able to pick up the whole VHD and drop it on another Virtual Server machine without any reconfiguration. Great for hardware failures.

Mitch also suggested getting a *big* server to host the virtual TFS and use the slack space to host additional virtual build servers. We toyed with a build server once and based on performance I figured a physical machine would be best but Mitch demonstrated a great idea combining multiple virtual build servers with a false TFS build agent to auto-redirect to a free, pre-cleaned build server.

In fact, the Readify team have some great TFS tools available to get the most from the system:

Mitch showed how, with these tools and some PowerShell glue, you can have a complete, automated process to go from a check-in, automatic build, to update dependencies, rebuild those, deploy for QA, then deploy to production. Nice.

With a lot of VB in our production code we've been held back from a CI system by the MSBuild secondary reference issue but a quick chat with Mitch after the presentation cleared that up:

Me: "Doctor, it hurts when I do this."

Mitch: "Well, don't do that."

 Sunday, July 08, 2007

Code Camp SA: Dave Glover

Dave Glover, an always delightful presenter, spoke on two topics this weekend. Saturday morning he spoke about Silverlight and the related Popfly, and Sunday morning he repeated his Windows Mobile 6.0 presentations from Code Camp Oz for those who missed it.

I have been reading many things about Silverlight over the past month or so but have been too overwhelmed to really look into it. Dave's coverage was just what I was looking for. Ultimately, Silverlight is Microsoft's answer to flash, and in version 1.0 with the JavaScript backend it is especially so. However, version 1.1 will be the real winner, combining the existing XAML/WPF based visual layer with .NET code behind.

The range of Microsoft Expression tools make drawing and animations look easy, even with Dave wrestling with a notebook touchpad. Microsoft are tackling portability of the Silverlight engine properly too with plugins for both IE and Firefox on Windows and even an implementation for Mac OS. The Linux community have stepped up to the plate too with their own complete implementation called Moonlight, developed in a stunning 21 days.

Popfly is a neat system for combining multiple "Web 2.0" applications into a clever mashup. Examples, like plotting Twitter messages onto Virtual Earth or building bar charts from custom web services are just the beginning.

Code Camp SA: Michael Baker

Michael Baker presented a session entitled "Design By Contract" on Saturday morning. Design by contract is a broad idea that can be approached in several ways. Michael focused on the idea of using pre- and post-condition macros in all your functions and combining that with extensive testing to ensure the conditions are met at runtime on all code paths. He also focused on implementing the macros as assertions rather than error return codes or exceptions.

I think that design by contract should not be treated so specifically but more as a combination of both discipline and an effective implementation for early problem detection.

You may establish a rule to document all methods with a comment header describing the intentions and expectations or you may insist (like FxCop) on throwing exceptions for invalid parameters. The important point is that it is done consistently.

As for effective implementation, comments are great for readability and guard clauses or unit tests are great for automated checking. However, the best outcome will be achieved with a system that can verify at compile time that all code paths pass the conditions and perhaps autogenerate human readable documentation too.

Defining the type of method parameters and return values in C# and VB is already a basic form of compile time verification of very basic conditions. Microsoft Research offers a variant of C#, known as Spec#. It extends on the C# language using new keywords and a variety of custom attributes to enable the developer to specify, declaratively, what values are valid as inputs and outputs from methods. The Spec# compiler is then able to use basic static analysis technique during build to highlight problem errors of code that could pass unacceptable values.

However, this all falls down when there are environmental conditions that cannot be verified at compile time. The absence of an expected file could throw an exceptions at runtime and the availability of network resources is a common problem also. Both Java and Spec# help here with checked exceptions and more advanced static analysis tools can track where possible exceptions can be thrown and verify that the application handles them appropriately.

Code Camp SA: Che Metcalfe

I turned up a few minutes late to this presentation after wrestling with directions to the venue. Based on the title "Kukan Studio and mEgaSA" I had no idea what to expect. The presentation was based on the idea of starting a mobile network, Podmo, where developers can easily publish their mobile games and applications and get a fair deal compared to other mobile content publishers.

The biggest highlight for me was the confirmation of something that I had always felt but never investigated: mobile phone data rates are disgustingly and prohibitively expensive. According to data Che had pulled from the Telstra website a few months ago, a user with a casual data plan can expect to pay approximately $15.00 per MB. On the Telstra Next G Network (which I use) the minimum expected speed is 550kbps which equates to about $45.00 of data downloaded in a minute at the afore mentioned rate.

Even better, in true geek style, Podmo plans to utilise Bluetooth hot spots at cafes, homes, and possibly eventually a scatternet across the CBD to enable free data for mobile users looking for Podmo contents. Way to stick it to the telcos!

 Saturday, July 07, 2007

Code Camp SA vs Code Camp Oz

Peter Griffith introducing the next presentation Today I attended the inaugural Code Camp SA, a two day event with presentations about .NET development inspired by the successful Code Camp Oz held in Wagga Wagga over recent years. Not everyone in Adelaide can afford the time and travel costs to spend a weekend in Wagga so it is great that ADNUG, UniSA, and the ACS have sponsored this event.

I was privileged to attend Code Camp Oz (CCOZ) this year and can't help but compare Code Camp SA (CCSA) to it. CCSA is held in a well-equipped lecture theatre at the local university and an excellent array of accomplished speakers have been gathered to present on relevant topics and upcoming technologies.

The sponsors have also arranged for morning and afternoon tea to be provided to attendees and a tasty BBQ lunch too. All this comes at no cost to the attendees. Unfortunately, CCSA missed a few issues that the CCOZ organisers have learned to expect.

Firstly, the University of South Australia's City West campus is not an area I'm familiar with, posted signage would have been very helpful for locating the venue.

Secondly, attendees like to bring notebook PCs to the presentations and most notebook batteries don't last the seven hours of the event. CCOZ supplied a box of power extension cables to allow attendees to switch their notebooks to AC.

Lastly, for an event dedicated to software developers, the wireless Internet connectivity was poorly organised. At a time when my work colleagues, my friends, myself, and even my parents all have high-speed wireless broadband connections at work and home, I expect the university to offer the same.

 Tuesday, June 12, 2007

Code Camp Is In Tents

A tent on the beach I was privileged to attend Code Camp Oz 2007 in Wagga Wagga this year and I highly recommend it to anyone working with .NET. Unfortunately not everyone can find the time to drive twelve hours across the country for a weekend.

However, anyone living in South Australia will have an opportunity to attend the upcoming Code Camp SA, a free event sponsored by the University of South Australia, the Adelaide .NET Users Group, and the Australian Computer Society.

It will be held at the UniSA City East West campus for both days of the July 7th and 8th weekend. Specific details and registration can be found on the ACS web site for Saturday and Sunday. When available, the scheduled program will be published on the ADNUG news page.

If the content and quality of Code Camp Oz is anything to go by, this is an event that shouldn't be missed. See you there.