Alt.NET Seattle ’09

Couple of weekends ago, I was at Redmond for the Alt.NET Seattle conference. As this was my second time there, I was no longer a Open Space/Alt.NET virgin. Just like last year, an amazing amount of discussions were packed into two full days. It was very difficult to pick which sessions to attend, having to decide whether to sit in a technical discussion or a meta-discussion. But with so many people recording videos, it is almost possible to not miss anything. We are not quiet there yet, but I am sure in the future every session would be recorded/streamed in some manner.
Ward Cunningham Keynote

Ward Cunningham showed us the work he did during his time with the Eclipse project on unit testing on a new level of complexity. He calls it SWIM and was implemented in PHP/HTML/CSS/JavaScript. He proposed to start a new open source project to implement the same concept in .NET. This create enough interest to spawn off a separate session later this weekend. (The test case runner was provisionally named Swim Runner. Personally I think it should be named Swimmer!)
Encouraging Open Source in .NET

Last year in Seattle, a similar session was convened to discuss how to create more buzz and interest in open source projects in .Net space. This year’s session centered around how we can get more open source projects to start, worked on, and succeed. Scott Hanselman hosted this session and asked what the community can do. Should Microsoft give Oren Eini a mail-order bride so he can finish LINQ-to-NHibernate? (Joke) What about OSS projects adaption by VB.NET developers?
.NET/Mono on Mac, Linux, and iPhone

Miguel de Icaza of the Mono Project hosted the session. He showed us the tooling and technique to develop iPhone app/game using the Mono stack on the Mac. He also demonstrated autogeneration of linux bootable image with pre-configured apps. (Side observation #1: only a few people at last year Alt.NET Seattle had iPhones, this year very few people has phones that *isn’t* an iPhone. Since this year’s event was just before MVP Summit, there are lots of MVPs there with iPhones! Just to show loyalty does not lie with brand but usability! #2: Less than 1/3 of attendees aware of Twitter last year, this year, very few are *not* on Twitter.)
Why so mean?

Hosted by Scott Hanselman. We explored why there is an perception of elitism in the software developer community. Why C# developers talk down to VB.NET developers, why average Microsoft developers are dimmed un-savable. This discussion led to a new session on Sunday about teaching, ALT.NET Pedagogy.
Oxite Retrospective #2

When the Oxite project (a sample blogging engine created using ASP.NET MVC framework) was put up on CodePlex, it created a huge controversy in the Alt.NET community. This is the second part of the retrospective on the project and the aftermath. One of the Oxite team member from Microsoft joined us on Sunday and gave his point of view from the inside.
When to use F#?

With F# being the first class language within the Visual Studio ecosystem, functional programming is gathering more interest. When is functional programming be appropriate for a .NET project? What type of problem would it solve better than plain old C#/VB.NET? Why not just use F# for everything?
Abstract Test Assertions

The ASP.NET MVC Contrib project relies heavily, of course, on TDD. An interesting problem arise when contributors want to develop using different unit testing framework. This session explored the idea of abstracting test assertions so that any frameworks can be used for the project, and what technique should be employed to achieve that.
I’ve recorded all these sessions on video for those who couldn’t attend. Scott Hanselman also streamed live via Kyte.tv for a number of sessions. My videos can be viewed on Vimeo, with the rest of video links on the Alt.NET wiki.

 

Dentist and Power Distance Index

I went to the dentist for a checkup today for the first time in over 2 years. First of all, I am not one of those 'I hate/scare of dentist' type person. All those drilling and cleaning implements don't scare me at all. What I don't welcome is the pushy dentists who always want to me to have some operation or other, despite how unnecessary it may be. For example, the last few dentists I visited always commented on the slightly impacted wisdom teeth I had, and how I should have them taken out "just in case". The first time I was told, my thought was "Why?" They are not causing me any problem now. Why can't I have them out if and when they become a problem? Funnier still, the last dentist suggested that I had all of my wisdom teeth taken out, and at his office! Ah, no thanks!

Anyhow, I came to expect this line of upsale-ing whenever I visit a dentist. Imagine my surprise when I visited a new dentist today and he did not even mention the wisdom teeth, let alone trying to sale me some operations. But that was not what really impress me today. The singular event that increases my trust in this dental office was when I was with the oral hygienist. She was just about to check out the health of my gums and asked a nurse to jot down the result. Nothing new there and the conversation went something like this:
Hygienist: 432
Hygienist: 433
Hygienist: 322
Nurse: It's for number 3?
Hygienist: Yes
Hygienist: 333
Hygienist reached for some tools and shifted position.
Hygienist: Are we on number 5?
Nurse: Yes, number 5
Hygienist: 223
And so on.
If you are familiar with flight operations, you will notice the similarity where the captain will call out an item on the checklist and the first officer will respond, verbally, back to ensure the right action is performed.
What advantage does this system bring?
First, there is no implicit assumption on what action each person is performing. There is periodic checkpoint to ensure both the hygienist and the nurse are recording the data for the correct tooth. Second, and more important in my view, is the low Power Distance Index (PDI) between the hygienist and the nurse. The data recording is not a dictation where the hygienist called out the result without pause and the poor nurse struggles to keep up.

I first came across Power Distance Index (Wikipedia) in Malcolm Gladwell's book, Outliers, where he described high PDI being a factor in a string of Korean airline crashes. He went on to suggest that low PDI tends to lower the incidence rate because the subordinate is more willing to challenge the superior and thus prevents errors to occur or develop into disaster.
Coming back to my dental hygienist experience, my confidence in this dental office increase dramatically when I observed the low PDI between the hygienist and nurse, because I could see they care about patient welfare. Whether they knowingly implement this system to lower the PDI or just happen upon it, I don't particularly care. I only care that they care about me.
And the result is that the hygienist achieved something her peers had not managed in over a decade. Namely, gain my trust to the point where she convinced me to floss!

Read and post comments

|

Send to a friend

iMovie needs batch export

Since I was a teenager, I have been fascinated by the process of video production but purely from the technical point of view. The complexity of capturing video, editing (the process not the artistic element), video effects, etc. drove my curiosity. A few years ago I worked with someone who also really into video as well. He captured videos for lots of family events and learnt to use professional tools and techniques. While I get really excited as I discussed the ins and outs of the equipment and setup my friend has, I was definitively unable to find a reason to take video for personal use. Capturing family memory is great but who actually would sit down and watch hours upon hours of family videos, apart from the family themselves?

It all changed when I started organising the NY ALT.NET events last September. We decided that we would video tape each meeting so members who were unable to attend would have a chance to participate, albeit in a passive form. As a result, I started learning to use iMovie ’08 as a tool to process approximately 2 hours of video from each monthly meeting.

When Apple rebuilt iMovie from the ground up for the ’08 version, lots of complains were raised because many features from iMovie ’06 were dropped. What the user gained, however, was a much simpler user interface that makes editing movies a snap. Without any preparation and little learning time, I was able to import, pick video clips, add title and transition, and export videos within minutes. Literally. And the new version iMovie ’09 added new features that were missing from iMovie ’06, such as Precision Editor, themes, more transitions, etc. I especially love the Precision Editor because I can easily control the entry and exit points of each clip with ease.

But, and there’s always a but, all these great time-saving features come to nothing when I need to export the video for people to consume. Because Apple is targeting the consumer market with iMovie (Final Cut Express for prosumer, and Final Cut Studio for pros), there is no facility to batch up video export.

Why is it important? Let’s look at the typical time I spent working on videos for a monthly meeting:

  1. ~2-2.5 hours importing from camcorder. This is fixed time because it is a MiniDV tape camcorder and the only way to get from tape to hard disk is to replay all the footage in realtime.
  2. ~20-30 minutes editing each part. I break down the 2 hours meeting into around 30 minutes parts (actual length depends on the nature stopping point of the conversation). I then change the opening credit, make some adjustment to the audio (boast volume) and video (colour correction).
  3. ~2 hours exporting each final video to hard disk for uploading. This result in a 640×480 H.264 QuickTime video file around 550MB.
  4. ~1 hours uploading to Vimeo.

Now, there is no way for me to multi-task step #1. There is only one camcorder and thus I can only do one import at a time. Not a big problem as I can do other things once the import has started.

Step #4 is a background process. Once I kicked it off in the browser, I can do other things on the computer. For example, step #2.

The problem is with step #3. iMovie does not have the ability to export video in the background. What it means is that once the exporting process has started, I can’t use iMovie to work on my next clip and thus save time. It would not be that bad if iMovie uses all the CPU power my computer has. My Mac Pro has two CPUs, each CPU has two cores, making it a total of four cores. That’s a lot of computing power. But iMovie can only take advantage of one CPU at a time! So instead of a reasonable export time of around an hour, I have to wait for two before I can work on the next clip.

Now, if iMovie is able to export in the background, then at least I can work on the next clip using one CPU while exporting uses the other CPU. Alternatively, if iMovie has the facility to batch up videos for export in a queue, then I can work on editing all the clips and export them in a single batch while I sleep, or do whatever. But iMovie has neither and so the process of producing four 30 minutes video clips basically takes up most of my weekend instead of a few hours. Granted most of the time is spent waiting but still…

Of course one can argue that background or batch exporting is a pro feature and I agree. But when should I sacrifice the ease of use of iMovie, learn a completely different editing paradigm (arguably more difficult to use), just so I can save a few hours each months when my hardware is more than capable? I am more than willing to pay extra for iMoviePlus or plug-ins to achieve what I need but unfortunately I don’t think either would be available any time soon.

The Parkinson’s Limit and agile team size

In the January issue of New Scientist, there is a article about Parkinson's Law and how researchers in Austria put the law in a more scientific footing via mathematic. The essence of the law is, "work expands to fill the time available for its completion", which is intriguing  but I am more interested in the second half of the article where Parkinson's limit is discussed.

Parkinson conjectured that there is a limit to any working group/committee size (20) beyond which no consensus would be reached no matter how the group is structured. I am curious whether this is also the limit of an agile/XP team size since an agile team tends to be of a flatter structurally (verses the traditional hierarchical nature).
Parkinson also noted that there is an anomaly around group with 8 members. He noticed that, for example, no nation has cabinet of 8 members. I have the good(?) fortune of working with teams sized on either size of 8 so I can't verify this claim. I wonder what are the proportion of previous failed or not so successful projects had exactly 8 team members. Then the question of how would one define team members. Would only developers, testers, BA count as a team member and not PM because they work very closely together day-in and day-out, whereas PM less so?
If you have previously (or currently) worked with team of 8 or larger than 20, what is your experience? Does the group dynamic change when the group size hit 8 or grew larger than 20?

Read and post comments |
Send to a friend

iPhone Developer’s Cookbook review

When learning a new language/platform/framework, sometimes learning from a book is a good approach. But that depends heavily on picking the 'right' book. What I mean is that the book contains the 'right' amount of content for the reader's skill level. So when I looked for book to learn more about iPhone development, I have something specific in my mind already.

With Apple's original rather restrictive NDA placed on iPhone developers, all the iPhone development books were placed on hold until Apple changed of mind a few months back. One of the book that I received good recommendation from fellow ThoughtWorkers who were also interested in iPhone development was Erica Sudan's iPhone Developer's Cookbook. I bought it earlier this month along with Christmas presents so I can read it during the holiday vacation.

The book is not thick at all, coming just under 340 pages, and took me couple of afternoons to read through. It is written half in traditional cover-to-cover manner and half in 'recipe' manner where developers can find solutions to problem quickly. Perhaps because I've been part of the iPhone SDK program since the beginning and had seen the evolution from the first beta, most of the book content (I'd say 90%) is not new to me. Particularly the sections on table, advanced table, and UI controls are areas that I am already very familiar with after poking around the SDK for over 6 months. I did learn some valuable tips on media and animation, which I've not spent any time on yet.
I'm kind of disappointed by the book because I was hoping I would learn how to create great iPhone app. Particular I was looking for code examples of common application requirements (e.g. how to implement options screen) with in-depth discussion on the limitations imposed by the public API, alternative ways to work around them using legitimate means, as well as undocumented API. I am also hoping to see some mention of unit testing with OCUnit or Google's unit testing framework, profiling using Instrument, and other libraries that would fill in the API gaps. Instead, the book only provides isolated information on each topic and spends to my mind, a disproportion amount of time on undocumented API thus giving it an implicit approval. (On the topic of private/undocumented API, I am in the camp of John Gruber of Daring Fireball)
In the end, I would give this book 3 out of 5 because it provides a lot of valuable information for any one starting out with iPhone development. But it does not provide any insight into building great iPhone application, which I think is sorely missing in this area.

Read and post comments |
Send to a friend

Website Built with WordPress.com.

Up ↑

%d bloggers like this: