iPhone development talk in Philly

Last Tuesday I travelled down to Philadelphia to speak at the Philly ALT.NET meeting. Brian Donahue, the group organiser, invited me to talk about my experience of developing iPhone application from a .NET perspective. Over 20 people turned up and I was surprised that most of them already owned an iPhone and a Mac (remember this is a .NET group afterall).

I began with listing out the things require for iPhone development (hardware and software), then moved onto comparing Objective-C/Xcode with C#/Visual Studio. I showed a quick code demo to illustrate my points on language and environment differences. Finally I talked about the good, bad, and ugly things I feel about iPhone development up to this point.

This is the first time I gave this talk and feel the Philly audience got good value from my experience. The event was hosted at Drexel University campus and a few of the iSchool students were in the audience. One of them even came up to me afterward and asked whether I’d be interested in doing more talks on iPhone development for iSchool!

Here are the slides I presented:

 

 

 

One of the attendee also took some videos and I’ll post them as soon as I receive the link.

 

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.

 

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.

NY ALT.NET October meeting

Last Wednesday the NY ALT.NET group met up again at the Microsoft office. This time we discussed various project management techniques (Agile, Scrum, etc.). We had a great turn out with nearly 40 members, all cramped into a medium size room. ThoughtWorks (my employer) sponsored the food and drinks of this meeting and we were greeted with fantastic pizza!

 

 

 

This time round, the video streams are provided by Vimeo after I experienced continuous upload issue with MobileMe’s gallery from iMovie. So far I have been very impressed by their service and quality, and would be migrating all of the existing NY ALT.NET videos to Vimeo in the next two weeks. Hopefully I’ll be recording in HD when Santa delivers a brand new HD camera in Dec! 🙂

 

NY ALT.NET First meeting: OR/M

Tonight was the first NY ALT.NET meetup and I think it has gone very well. Over 30 people turned up and many have not participated in a fishbowl style discussion before. Stephen Bohlen first gave a quick, 10 minutes, overview of OR/M. Then after a quick pizza break Don Demsak, Stephen Bohlen, and Mark Pollack kicked off the discussion and soon more people joined in the fishbowl experience. After the meeting, I talked to a few attendees and all of them gave very favorable feedback about this more interactive style of meetup, verses the traditional presentation by a speaker style.
On the technical side, we decided to stream the video live after we received a few requests from people who couldn't attend in person. The logistic of setting a stream up using Ustream.tv is trivia but there are a huge amount of fingercrossing and wood touching because everything had to come together at the same time:
  • Mark's DV camera talks to my Macbook Pro via Firewire and record to tape at the same time.
  • Ustream.tv's player recognized Mark's camera
  • Ability to get onto Microsoft's guest wi-fi network
  • Ability to find a place to put the camera that doesn't get into people's view but close enough to get decent sound reception
Having said that, I can't imagine streaming live video on the internet to the public 5 years ago (or even 2!) without huge infrastructure expense, lots of testings, and poor results. Now, it is free, easy to setup, and provide great user experience.
Here is Stephen Bohlen gave an overview of OR/M before the main discussion (~10 mins):

The main discussion (~1 hr 47 mins):

Read and post comments |
Send to a friend

Website Built with WordPress.com.

Up ↑