NY Alt.NET April meeting

Last Wednesday's NY Alt.NET meeting topic was Continuous Integration. Being a ThoughtWorker and had worked on build and deployment project at an enterprise level, it fells naturally to me to not only prepare the presentation material but also present it.

I was a bit nervous about the presentation, as it has been a while (over a year) since I last stood up in a group setting and presented. But I think it went fine, though of course there are always improvement to be made.
I also have the honour of speaking at Philly Alt.NET meeting on May 5th. The topic is on iPhone development for .NET developer. It is something completely different and still pretty new to me.

Read and post comments

|

Send to a friend

Advertisements

Build there, check status everywhere

I've been using the iPhone SDK since its original release way back in March. Many frustrating moment in the beginning but the recent beta 7 and beta 8 release proved to be ready for prime time. Apple has added many helper classes or helper methods to classes to make it far easier to work with the UI components, which is by far the most frustrating things I encountered. I am still having problem wrapping my head around the idea of Interface Builder but since the apps that I am building do not involve very complex UI, I just hand coded all the UI instead.

To illustrate, the original iPhone app idea I had that I started developing using the original SDK is a mobile application for Mingle. The application would consist of a series of table views showing projects, cards, and card details, along with some network code to talk to the Mingle server through REST API. At that time, progress was slow because of many factors. First, learning Cocoa/Cocoa Touch API and Xcode at the same time was tough. Second, the Cocoa Touch API was a bit 'primitive' in the beginning. What I mean is that while the API provides all the necessary hooks for developers to create an iPhone app it does not provide many pre-build components, making it difficult and required lots more work from developers to re-create the look and feel of the built-in iPhone apps.

I was so put off by the initial experience that I skipped beta 4-6 and did not open up Xcode until last weekend. And what a refreshing change with beta 7! Now it is straightforward to make an app that looks and feels just like an Apple's one. I was so fired up that last Sunday evening I decided that I would try to create an app for an idea that one of my fellow ThoughtWorker suggested to me. Instead of days of tearing my hair out and got no where, I was able to create a almost features completed app within hours, using beta 8.
So what is this app? It checks the build status on the CruiseControl server. Just like CCTray (Windows) or CCMenu (OS X), it allows users to monitor their software build status. Following the convention, I am calling it CCPhone. The app isn't more complex than the Mingle app but the fact that I was able to almost match the productivity I normally get on my Windows development environment means that I was excited about working on the app rather than dreading it.
Now here are couple of screen shots:
ProjectProjectDetails

To-do:
  • Fix the build time being 1 hours off (probably day time saving bug)
  • Better status icons
  • Create application icon (currently it uses icon from CCMenu)
  • Finish coding the 'Force Build' functionality
  • Add startup screen bitmap (so it won't be just a black screen)
  • Add auto detect of CruiseControl server (Java, .Net, or Ruby)

Read and post comments |
Send to a friend

What do you do?

I don't often met new people and thus question of what I do does not pop up this frequently. But it has been hard to describe what I do to people who are not in the software development community since the first day I started my first job. Normally I just say I am a software developer and that tends to put most people off since they don't understand software at all. To them software is a black box, it is magic, it is voodoo. But every now and then there will be someone who does a bit of Visual Basic Scripting in the office and thinks s/he knows software development. This person would then try to probe deeper about what I actually do. In that situation, I'd have no mercy and just tell the person exactly what I do. 99.99% of the time, eyes would glazed over within 10 seconds and conversation would die as soon as I finish my sentence.


Recently my father-in-law asked me about my current project (via my wife). Note that he is a software project manager so I did not filter/dumb down my response. My reply is below and if you understand what I am talking about, give me a shout; ThoughtWorks is looking for someone like you!

We are developing the build & deploy system for the whole enterprise. That is, a system that allows in-house developers to build their applications and deploy the applications to the machines. Sounds simple but we are also implementing Continuous Integration concept using build servers, trigger off source control checkins. (The main reason ThoughtWorks was brought in as we are known in the industry as build expert, re: CruiseControl)


We are also solving their source and binary dependency problem so applications would be self-contained when they are built, tested, and packaged by the build server. The deployment/install process would allow environment specific properties to be substitute during deploy time so packages can be deployed to multiple environments without going through the build process again. (Build once, deploy everywhere)


Deployment process also includes workflow steps to manage code review/gatekeeper approvals, security audits, and code signing.


All of these are built with extensibility in mind so future technology, such as Ruby, IronPython, can be introduced into the organization via plugins with minimum alteration to the system.


In addition, we are also advising the client on code branching and merging strategy, best development and unit testing practices, dependency management, database upgrades (model and data) using delta scripts, etc.

Read and post comments |
Send to a friend

Bragging rights

This last Saturday many ThoughtWorkers and I went to the ThoughtWorks Away day here in the UK. This is mainly so we can meet each other because not all of us work in the UK office. Throughout the day many talks were given by other ThoughtWorkers, relating lessons they learnt from projects. Here are the sessions I went to:

  • What kind of thing is it? Applying Domain Driven Design – Very interesting session. A different take on DDD from my current project. Some even diametric ideas such as no mock testing on EVA (entity, value objects, aggregates), which makes us think.
  • When do we have enough tests? – Another interesting one. Does test coverage actually provides business value, or are we chasing coverage for metric sake? Is this a question of quantity vs. quality? Are we compromising design for testability?
  • CI and Theory of Constraint – Probably the most pertinent session of the day. Great lessons on how Continuous Integration may actually make the project goes slower if it is the main bottleneck, and how to spot and remove them. Lots of audience participation and couple of us from my project took valuable lessons from it.
  • New features of C# 3.0 – Been there, done that, got the t-shirt. Nothing I didn't know already. Mainly a session to try to get Ruby people to see C# is not as bad as they think 🙂
  • A Thought Experiment, projects without project managers – Promised to be controversial but turned out to be pretty boring. Might have something to do with the fact there were three PM in the room…
  • ???? – A top-secret product demo that I can't talk about. I've already seen some of it when I was in Bangalore so it wasn't as exciting as I thought. Should have gone to the meta-programming with Ruby session instead.

It won't be a TW event without our esteem leader and troublemaker, Roy, to give us a speech. Many achievement were mentioned. Plenty under NDA but here is one that we can brag about publicly:

  • Oracle Mix (http://mix.oracle.com) – Launched this week at Oracle World. Built by TW in 5 weeks with 4 TWers and 2 Oracle people using JRuby running on Oracle stack. "Impressive!" as Yoda said! And if you scroll to the bottom and look to the right, you will see something that normally doesn't appear from our work with clients.

And we play as hard as we work so in the chilling out room, some of us play Jenga Tower.

Read and post comments |
Send to a friend

Refreshing

It's been a week and a half since I've joined a ThoughtWorks project in London. It's been such a refreshing change. The whole team lives and breathes Agile. The code base is not the cleanest I've worked on but actually easier to work with because the team made sensible compromises and did not being stubborn about ideas or patterns. (Actually we still have some way to go on the Mingle front, but that's another story.) We are doing TDD, continuous integration, pair programming with regular rotation, 9-5:30 hours, everyone are treated as equal, basically the whole nine yards! I can foresee the next three months will just disappear quickly. You know what they say, time flies by when you are having fun…

As for London itself, I was pleasantly surprised by all the good/new stuff they have. But at the same time, the Tube still pisses me off, with the never ending tunnels and the asinine system of having to swipe your ticket/card on exit. At least the travel cost is paid for by my company!

I'm going up to Shropshire this weekend to visit my parents. Instead of taking a 2+ hours train ride, I'll be driving a rental car up. I know, it's not environmentally friendly but consider the total amount of driving I haven't done in the last 7 years, I think I can take this carbon emission hit.

Read and post comments

|

Send to a friend