WWDC Historic Dates

Year Dates Announced Sold-out Notice
2012 Jun 11 – Jun 15 Wed, Apr 25 Apr 25, 2 hours 47 days
2011 Jun 6 – Jun 10 Mon, Mar 28 Mar 28, 12 hours 70 days
2010 Jun 7 – Jun 11 Wed, Apr 28 May 6, 8 days 40 days
2009 Jun 8 – Jun 12 Thr, Mar 26 Apr 28, 49 days 74 days
2008 Jun 8 – Jun 13 Thr, Mar 13 May 14, 61 days 87 days
2007 Jun 11 – Jun 15 Tue, Feb 06 124 days
2006 Aug 7 – Aug 11 Tue, Mar 07 153 days
2005 Jun 6 – Jun 10 Tue, Feb 15 111 days
2004 Jun 28 – Jly 2 Thr, Feb 26 123 days
2003 Jun 23 – Jun 27 Mon, Feb 10 133 days

WWDC 2012: Tickets were announced and became available at 8:30am EDT. At that time Apple updated the site http://developer.apple.com/wwdc and also the Public Relations site http://www.apple.com/pr. The email announcement from Apple arrived at 9:43am EDT. I first learned that the tickets were on sale from am Apple news site http://9to5mac.com close to 8:35am EDT.

WWDC 2011: I purchased my WWDC 2011 ticket at 9:29am EDT. I learned that the tickets were on sale from am Apple news site http://9to5mac.com.

Posted in Uncategorized | Leave a comment

Cryptography pioneer: We need good code

In Black Hat keynote, Whitfield Diffie formulates three rules for making applications secure in the age of the Internet.

Cryptographer Whitfield Diffie reckons one of the most important things for good cryptography and security in the age of the Internet is good code. Unfortunately, really good code is generally too expensive to write.

First, “We need to learn good programming”, he said. The second challenge is fixing human interfaces, so every Internet user can understand what is happening. And third, liability issues should be fixed. “That isn’t easy”, he said, because fixing liability issues should go hand in hand with the technologies that system producers need.


We are so fortunate that Civil Engineers don’t build bridges with the same level of acceptable engineering typically used in software development.

Posted in Uncategorized | 7 Comments

iPad micro-SIMs in Europe

In The Netherlands go to a “BelCompany” store and buy a “vodafone” micro-SIM card: €5, 200MB.

In Belgium go to a “Belgacom” store and buy a “Play&Surf for iPad” proximus MicroSim Card: €10, 200MB.

In England go to a “Three store” and buy an “iPad 3G micro-SIM Ready-t0-Go.”: £9.95, 1GB. Beware that many Internet Cafes have iPhone micro-SIMS but they will not authorize in an iPad.

Posted in Uncategorized | Leave a comment


The first two of the Stanford online courses are now available!

Here are the first two I am taking, I’m still waiting for a couple more.

ALthough the following two courses don’t officially start until March 12, 2012 the first week of lectures, slides, and problem sets are all posted.

These sources are presented under the Coursera umbrella and all current courses can be seen here: About Coursera

Check out the other great current and upcoming titles.

Posted in Uncategorized | 1 Comment

Open-plan Offices

From: The New York TImes, Sunday Review

Anyone who has ever needed noise-canceling headphones in her own office

Headphones are the new office?

People whose work is interrupted make 50 percent more mistakes and take twice as long to finish it.

Is this a good result?

What distinguished programmers at the top-performing companies wasn’t greater experience or better pay. It was how much privacy, personal workspace and freedom from interruption they enjoyed.

This _is_ a good result

Our offices should encourage casual, cafe-style interactions, but allow people to disappear into personalized, private spaces when they want to be alone.

Posted in Uncategorized | Leave a comment

Bizarre code of the day from Stackoverflow


unsigned char* _pos = …;

double result;

*((int*)&result) = *((int*)_pos);

Let’s see: taking int size bytes and moving them to a double.

One can only view with amazement and contemplate the horror a maintainer will experience. Oh BTW, it does cause a crash under some levels of compiler optimization.

Posted in Uncategorized | Leave a comment

Fast Enumeration

I was looking at some client code and saw essentially this:

NSArray *items = [NSArray arrayWithObjects:@"one", @"two", @"three", @"four", nil];

MyClass *myClass = [[MyClass alloc] init];

for (int i=0; i<4; i++) {

    myClass.thing = @”test”;

    myClass.widget = [items objectAtIndex:i];

    // …


There are several issues, among them:

  • In the for loop the termination value is hard coded, if the number of items in the NSArray constant are changed the code will break. This could have be averted by using items.count
  • The indexing into the NSArray is not close to the declaration of the index (“i”) and is easily missed.
  • It is not clear if the index (“i”) is used elsewhere in the loop.

Fast enumeration could be used eliminating the above three issues.

Fast enumeration example:

NSArray *items = [NSArray arrayWithObjects:@"one", @"two", @"three", @"four", nil];

MyClass *myClass = [[MyClass alloc] init];

for (NSString *item in items) {

    myClass.widget = item;

    myClass.thing = @”test”;

    // …


No lines of code are eliminated, that is not the point, what is important is that the code is future-proofed and is more clear.

Posted in Uncategorized | Tagged | Leave a comment

Code Clarity

Code clarity is the ability to easily understand what code does.

Clarity is the single most important issue when writing code.Inevitably code to increase performance degrades from code clarity. Speed, size and memory usage are all secondary. After the code is written and functional measure performance and those areas that show performance deficits are to be addressed at that time.

In general performance decisions made when writing the code are almost always in the wrong places. Code clarity suffers and overall performance is not improved.

Here are a couple of examples I was involved in:

I have seen input routines for a teletype that runs at 110 baud optimized saving a couple of microseconds per character, less than a 0.002% savings in CPU cycles and 0% overall performance improvement and there was more code to try and understand. OK, I admit I did that—in the first week I was programming computers. What a waste of time and code clarity.

Years later we wrote a unix meta-port and after getting it to run it was slow. We were at a loss to understand why the performance was so bad. After a few attempts that did not improve things I wrote a performance monitor. What we found was that 90% of the CPU time was spend in memcpy()—who would have thought of that. Using the performance monitor we were able to reduce the CPU usage of memcpy() to 10%. This was only possible with performance measurement. All the time we had put into optimizing the other areas OS was basically wasted time and we did not optimize the one most significant area.

Write for clarity then measure and optimize the actual performance bottlenecks.

Posted in Uncategorized | Tagged | Leave a comment

Unit Testing

When testing private methods the compiler generates warning messages such as:
“Instance MethodheaderEncodingFromXML:not found.”
The solution is to add an Informal Protocol:

@interface SegmentedParse (TestingInformalProtocol)

- (NSString *)headerEncodingFromXML:(NSString *)xml;


Posted in Uncategorized | Tagged | Leave a comment


Posted in Uncategorized | Tagged | Leave a comment