Wednesday, December 19, 2018


So much for my blog. It's a bit hard to start and restart. Like my PhD research, sometimes I get the urge to write and sometimes not.

I'm a bit depressed about my work and study at the moment. I've been on sabbatical from June to December, yet don't seem to have achieved much. I feel terrible burnt out a the moment.
I just came back from 6 weeks in Hong Kong at the HK Polytecnic University.
However, because my work visa didn't get through on time, I ended up only doing visiting not working. My family where there from the beginning of November till mid November so at least I got to holiday a bit with them, though we didn't really do anything apart from shop.
After they returned to Sydney, had a small conference ICKD 2019 and then got invited to the ETTE (Excellent Teachers Teaching Excellence) conference at HKPU, and participated in the Learning Analytics workshop with my sponsor, Prof Erif Tsui and met the EDC where I promised to talk to them about changes at UTS and about the Graduate Attributes Project and the Curriculum Information System and CUSP systems at USyd.

I was invited to present the director of the EDC, head of ITS and the AVP of Leearning and Teaching about UTS' decision to move from Blackboard to Canvas.
As an incidenal question about the Gradbook lead to a deep discussion about the CIS and CUSP systems where I demo'ed reports and charts which were of great interest.
I was then asked to present about this that afternoon. - talk about last minute presentations to senior educators!!!
I've been asked to return to HK in Jan. Though I will probably be at my own expense ??

Anyway, I've returned to Sydney to my family for Xmas. In time for my eldest daughters birthday.
I feel like a stranger here now. Especially with my wife.

I would like to say how I really feel about their reactions to me but this is private and too depressing. All I believe is that I could probably spend most of the year away without them noticing.

I guess this is a really strong incentive to get papers into A graded conferences like ITICSE and AIED? Them either of my universities might help pay for it.

Oh well, life sucks but you have to carry on. Somehow ...

Monday, September 10, 2018

Blog restart

It's about time - I've started a PhD so will be regularly posting in this blog again. Please be aware that this is a personal blog and will contain a mix of personal observations and research notes. I might be retro-blogging based on my experiences so far in 2017 and 2018 so some blogs might be jumping around the place!!

So be temporal-spatially warned!!!

Saturday, January 16, 2016

Google Shared Calendars not showing in iphone or ipad

We normally manage the kids schedules on my wifes google calendar but today we decided that it was time they managed their own calendars - so we shared their calendars on our own calendars.

But it didnt sync on the iphone.

Further investigation revealed that you need to enable sync on your own calendar to allowed shared calendars to appear on your iphone

Use  and choose the calendars to show.. then go into your IOS calendar app, choose the Calendars button, and press the refresh (circle-arrow) button.

For some reason this only affects the iphone - you dont need to do this for android or shared calendars!

Sunday, September 07, 2014

The Future of Networking and the Network Engineer - Jason Edelman's Blog

The Future of Networking and the Network Engineer - Jason Edelman's Blog

What really gets me is this paragraph:

This was just a glimpse of what McKeown spoke about and is one of the industries that he thinks will significantly increase as SDN adoption begins to gain wheels.  Unfortunately, this isn’t good news for me and who I will call “traditional” network folks.  When asked by a participant if this type of automation for testing, development, and debugging will “wack” us, you heard a light chuckle from the audience, but believe me, everyone wanted to know Nick McKeown’s thoughts.  He answered honestly saying he sees an overall increase in jobs in the network industry, BUT, there will be less admins/engineers needed to maintain and operate networks.  

The large surplus of jobs will be in software and application development for network systems.  This is of no surprise for those who have been following these trends.  It will be interesting though to see how it plays over the coming years (don’t worry, it’s not weeks or months!).  The network engineer of yesterday could very well become the PBX phone guy of the late 90s early 2000s.  These network guys will adapt new skills such as programming and system administration or find the company that won’t adopt new technologies to try and stay in their comfort zone.  

Friday, September 05, 2014

OpenWrt and Open vSwitch Integration � Plvision

At last - someone has integrated openWRT and OpenVswitch. Supports Atheros 71xx Broadcom 47xx and 63xx chipsets

OpenWrt and Open vSwitch Integration 

Update 13 NOVEMBER 2015:

Wonderful! someone has actually integrated openWRT and Openflow on the low-end TP-Link WR1043ND v2 home wifi router/switch.

Turning TP-LINK WR1043NDv2.1 router into OpenFlow-enabled switch

Mininet: An Instant Virtual Network on your Laptop (or other PC) - Mininet

Mininet: An Instant Virtual Network on your Laptop (or other PC) - Mininet

Also see this with openflow and open vswitch

Thursday, January 03, 2013

VMware security flaw

Oops. Vmware has a security flaw.

Seems that if you point vmx file on a hosting service you can hack other files.

Bit tenuous though from microsoft gloating - which hosting service would ever give VMX access to a customer??

Tuesday, January 01, 2013

Installing Centos 6.3 under vmware workstation 7

If you plan to install VMware Tools under Centos 6.3, ensure that you use the latest iso (vmware tools 9.0.0 for linux) . This can be extracted from the free version of vmware player/workstation 9.

The issue with VMware workstation 7 is that it doesn't support kernels later than 2.6.18, and has problems re-building under centos 6.3 (gets confused about kernel versions).

Much simpler this way!

Step 1: do not use the default VM > Install vmtools
Instead mount the iso as a cd/dvd drive

Step 2: Unpack the tar file from the iso disk into /tmp

Step 3: Run vmware-tools-distrib/

Step 4: Just accept the defaults. Let the new initrd be built. Don't say yes to automatic modules

Step 5:  reboot

Step 6: If you want seamless advanced X;
start /usr/bin/vmware-user
restart your desktop session & X (simplest to logout and logon)

If you want to use vmxnet (more efficient) restart network:
/etc/init.d/network stop
rmmod pcnet32
rmmod vmxnet
modprobe vmxnet
/etc/init.d/network start

Saturday, March 03, 2012

Abi jigsaw #2

Abigail doing another jigsaw while at gymnastics - waiting for pascale to complete her session. I have to admit that I helped a bit, since she only had about 45minutes to complete it!

Abi Jigsaw puzzle

A rightly pleased abigail who did the 300 piece jigsaw herself. Took her AGES to do this one...

Wednesday, February 29, 2012

Gmail wont open eml files

Curse gmail. Unresponsive knaves.

It seems that if someone sends you attachments as '.eml' filetypes, gmail won't read it as anything else but plain text. C'mon, this is just a simple mime file.

So how to read it?

  1. Download the file as a .mht file eg: so  photos1.eml becomes photos1.mht
  2. Open the file with IE9 or Opera 11. Nope chrome, firefox don't work. 

Saturday, February 18, 2012

[dataists] Ranking the popularity of programming languages

Ranking the popularity of programming languages

Correlates Stackoverflow vs Github projects.

Turns out that the most popular are: javascript, python, php, ruby,java, c, perl, shell, objectiveC, c++, c#

R seems like a good data mining language. Might learn that asap.

Thursday, November 10, 2011

the four agreements, don miguel ruiz book - a code for life and personal development

the four agreements, don miguel ruiz book - a code for life and personal development

I would love to do this, but is it possible to live by the 4 arguments:

the four agreements - don miguel ruiz's code for life

  1. Be impeccable with your word
  2. Don’t take anything personally
  3. Don’t make assumptions
  4. Always do your best

Saturday, September 17, 2011

The 20 most useful Android smartphone apps of 2011 | TechRepublic

The 20 most useful Android smartphone apps of 2011 | TechRepublic

1. google voice  ** got it - but dont use it **
2. advanced task killer (rechild) ** samsung has a good built in one
3. dropbox ** I live on this for work
4. evernote  ** great for a while, but I like to share. Try Springpad, it's better
5. taskos
6. droidanalytics
7. documents2go  ** desperately in love with this. Best on my ipad though :-(

See also the Hackers Keyboard:

I personally use the swype keyboard on my samsung galaxy S2, it's way fast "typing" for me.
But hey, when I hack the operating system of my smartphone, I need a Linux compatible keyboard and this is the perfect one for me

Sunday, July 31, 2011

Eclipse and ctrl-space

I've been plagued by this problem for years now. And it has been a pain in the neck.
Basically, windows XP chinese IME had a bug where you couldn't switch off the ctrl-space code assist button regardless of what you set the control panel settings to be.
I used to stop the chinese input method when I coded, and enabled it when writing chinese (not that I really know what I'm typing!)

Solution? Registry hack:
  • open "regedit.exe" in run dialog
  • Browse the registry editor to the location: HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\
  • Now delete registry entries that with the name: 0000007x (x indicates any number)

HK Life: Disable ctrl space for language bar switch

Wednesday, June 22, 2011

The worst decision Google ever made | ZDNet

The worst decision Google ever made | ZDNet

Agreed. Google should have bought Sun. Then all the Sun java team wouldn't have left Oracle and left java in a big hole.
Then all the android.* api's will eventually become javax.* instead :-)
Would google android then implement Java ME? LOL.

Five Word tips that could change your life | TechRepublic

Five Word tips that could change your life | TechRepublic

Wow, I love these tips!
1. vertical text selection: hold alt key down
2. Use ctrl-z to remove autocorrect stuff
3. Use --- for horizontal line. See also ~~~, ___, ***, ===, ### for other styles. Again, use ctrl-z to remove if accidentally created
4. Move text (in table, a row, else a block of text). Click, then Hold alt-shift then use the arrow keys
5. Save All. Hold shift. Then pull down File menu. Save All appears.

More quickies:
Keystroke Function
Ctrl + Shift + D Double underline the selected text
Ctrl + ] Increase the size of selected text by 1 point
Ctrl + [ Decrease the size of selected text by 1 point
Ctrl + Shift + A Make selected text all caps
Ctrl + = Toggle subscripting for selected text
Ctrl + + Toggle superscripting for selected text
Ctrl + Shift + Q Apply Symbol font to selected text
Ctrl + Shift + N Apply Normal style to current paragraph
Ctrl + Alt + 1 Apply Heading 1 style to current paragraph
Ctrl + Alt + 2 Apply Heading 2 style to current paragraph
Ctrl + Alt + 3 Apply Heading 3 style to current paragraph
Ctrl + Shift + L Apply List Bullet style
Ctrl + 0 (zero) Apply or remove space above current paragraph
A line break Shift+Enter
A page break Ctrl+Enter
A column break Ctrl+Shift+Enter
An optional hyphen Ctrl+- (hyphen)
A nonbreaking hyphen Ctrl+Shift+- (hyphen)
A nonbreaking space Ctrl+Shift+Spacebar
A copyright symbol Alt+Ctrl+C
A registered trademark symbol Alt+Ctrl+R
A trademark symbol Alt+Ctrl+T
An ellipsis Alt+Ctrl+. (period)
An em dash Alt+Ctrl+\
An en dash Ctrl+- (on numeric keypad)
The page number Alt+Shift+P
The current date Alt+Shift+D
The current time Alt+Shift+T
Keystroke Function Notes
Shift + F3 Toggles through capitalization options. This one isn’t perfect — for instance, it insists on capitalizing articles and prepositions in Title Case mode — but it’s still a big timesaver.
Ctrl + Shift + N Applies the Normal style. If you work with documents that are riddled with obscure and specialized styles (typically other people’s), it’s handy to turn them into Normal paragraphs on the fly.
Ctrl + Shift + C Copies the formatting of selected text. Once you’ve copied the format, you can press Ctrl + Shift + V to paste the formatting onto a new selection. Yeah, I know — Format Painter does this, too. But Format Painter forgets the formatting as soon as you’re finished with it. This shortcut remembers what you copied until you close out of Word.
Alt + F9 Toggles the display of field codes on and off. Unless you work with field shading turned on — and I don’t know many users who do — you can’t necessarily tell what’s literal text and what’s being generated by an underlying field code. A quick peek using this shortcut can prevent the headache of inexplicable changes and unwanted editing consequences.
F4 Repeats your most recent action. This might be the all-time best shortcut (except for Undo, which I’m not including in this list because for me, at least, it’s like breathing and requires no conscious thought). The F4 shortcut will repeat nearly all the actions you take on document text: typing: formatting, deleting.It will also let you repeat the action of adding or removing table rows, but it isn’t well implemented with tables overall. For instance, changing table properties is not replicable via this shortcut.
Ctrl + H Opens the Find And Replace dialog box with the Replace tab selected. Replace functionality is my constant companion, so this one is essential for me. Ctrl + F opens to the Find tab if you just want to locate something in a document (or make sure something isn’t in there).
Ctrl + drag text or an object Creates a copy of the text or object. Apologies to the keyboard purists, but this useful trick does require mouse action. It’s handy when you need to copy an object and control where that copy ends up. For example, a picture or other object that has certain positioning attributes may land in some unpredictable location if you use the standard copy and paste functions. This shortcut lets you drag it exactly where you want it.Just make sure you drop the text or object before you release the Ctrl key or Word will move the original instead of copying it.
BONUS: If you hold down Shift along with Ctrl as you drag, Word will keep the copy aligned with the original.
Ctrl + Q Removes paragraph formatting that isn’t part of the style assigned to a selected paragraph. When you want to strip out manually applied formats and return to only those characteristics defined by a paragraph style, this is the quickest way to get there. Ctrl + Spacebar works the same way for character formatting.
Ctrl + 0 (zero) Applies or removes 12 points of space above the current paragraph. This sounds a little lame, but you can improve readability of selected text in about two seconds using this trick. For instance, table text is often jammed up against top borders. Select the table and hit Ctrl + 0 and you’ll get an instant improvement.
Alt + drag the mouse vertically Make a vertical text selection. Another keyboard/mouse hybrid, this one is obscure but useful. Some users have trouble making it work, but the problem is usually sequence. Just make sure you press Alt before you press the mouse button and drag. Then, release Alt before you release the mouse button.

Security or convenience: Does it have to be a choice? | TechRepublic

Security or convenience: Does it have to be a choice? | TechRepublic

Parno's thesis "Trust Extension as a Mechanism for Secure Code Execution on Commodity Computers "is that we can make security more convenient by leveraging the security possessions we have - the Trusted Computing Module in my thinkpad, the new Flicker architecture in the latest x86 architecture, a USB keyfob.
We specifically ask for elevations of security when we need it, not the all-in-one approach of logging in.
Finally, remote execution via Yao’s Garbled Circuits and homomorphic encryption.

nice thesis

Wednesday, June 08, 2011

Eclipse Helios vs Netbeans 7 for PHP development

I'm currently trying to install PDT on top of Eclipse WTP Helios SR2 for university. Pain trying to set up minimal configurations.
This guy's blog has a very good compare and contrast between them!

Sunday, May 01, 2011

xkcd: Fairy Tales

xkcd: Fairy Tales

I like the "Inductive White and the (n-1) dwarfs"
or the "lim[x->infinity] (x) Little pigs" fairy tails seem a bit weird...

or the time management comic:

Friday, March 18, 2011

The dead grandmother syndrome

being an academic, I get to see bright and enthusiastic students every day who cheer me up with their joy, their views of life and wonder at the future. .... except...

now I am also the course coordinator for the BSc(Information Technology) and academic advisor for the faculty of engineering and IT for IT undergraduates. This means, apart from my normal teaching and research workload, I have the additional joy of dealing with special considerations, misconduct appeals, exclusion "suspension" appeals, heaps of paperwork and administrivia and ... blarghhh!!!

Normally it's great. But one thing I have noticed (and my fellow coordinators and directors) is the dreaded .... drumroll ... DEAD GRANDMOTHER SYNDROME.

It seems that for some unknown reason, grandmothers start to get sick just before the final assignments are due at the end of semester, then die just before the exam. In fact, sometimes students claim all 5 grandmothers   have died over their past 3 years at uni. Oh, wait, was that the other grandma? Oh, sorry, we don't have death notices or records in vietnam. Oh, I meant my girlfriend's grandmother.

But seriously, here is a paper on the dead grandmother syndrome, also called the "The Toadstool Waxing Plan" in bulgaria. See

Further research is needed over why grandfathers don't have the same problem...

Wednesday, October 27, 2010

Callan Park - OUR plan, OUR say

This website is the worst example I have ever seen of 'push polling' - your options are only to 'support this plan' or do some minor tinkering with 'my options' questions which are specifically designed so you can't change the major parts of the plan.

As an academic, I find this planning/survey question process quite un-transparent and would violate/fail our ethics committee on the structure of the questions.

I would almost laugh at this attempt to push an opinion, except instead I am crying since I am a local resident.
How on earth did this so-called survey occurred? Who approved it?

Monday, September 20, 2010

TinEye Reverse Image Search

TinEye Reverse Image Search

Tried this out today - you can upload an image, or provide an image URL and it will detect (using image recognition) where else in the web is the picture. It's quite remarkable and works quite well. I'm using it to track where students are copying images and diagrams from, without acknowledgements..

Now only if turnitin does the same thing for essays/reports ...

Wednesday, September 08, 2010

Bug in Helios - J2EE Module dependencies KAPUT!

Those idiots in charge of Eclipse WTP have done it again.

Apparently they have removed the J2EE module dependencies feature in Eclipse 3.6 Helios WTP 3.2.0
What this means that if you have user libraries which your project will depend on (like.. say... JSTL or JDBC or something like that) normally under the old Galileo version you would:

1. Add a user library (or external jar or whatever) to the Java build path (Libraries -> Add External Jars).
2. Modify the J2EE Module Dependencies to export this (so it will get copied into the WEB-INF/lib directory or / depending on whether it's a WAR, JAR or EAR project)

Helios way:
They removed J2EE module dependencies, and now have a new feature called "Deployment Assembly" - which by itself looks interesting (directly map the source paths to deployment paths - this is goodness indeed). However, it forgets completely about the Java build path - ahem folks, how the F^*(^ do you mark the libraries to be exported to WEB-INF/lib ?? ooops... bbzzztt... epic fail.

Effectively, the missing libraries will appear due to the "Classpath dependency validator" which will indicate which libraries will be missing from the Webapp. You then select each miscreant and press QuickFix (Ctrl-1) to fix - ie: "Mark the associated raw classpath entry as a publish/export dependency"
(or the negative case: Exclude the associated raw classpath entry from the set of potential publish/export dependencies")

From what I gather, this is the ONLY way to do this until this bug is fixed.

The referenced bug may be fixed in Helios SR1:


UPDATE: New way around this stupidity
Choose Deployment Assembly:
Click Add > Classpath Container > User Library > whatever
Now it will work. Geez!!

Wednesday, August 25, 2010

Android still sucks - still no WPA2 enterprise support!

Now I am running android 2.1, update 1, and still Google have not updated their fricking UI for WPA2 Enterprise.
Are they mad? Are they INSANE?
Even worse my wireless no longer works - their update overwrote my /etc/wifi/wpa_supplicant.conf with a dummy WRITE PROTECTED one so my old wifihelper app (and wifinder) can't write to it.

This means my Motorola Milestone does not work with most common university/corporate networks. My ipod touch seemlessly works. Android developers - I HATE YOU.

Oh, of course, I could ROOT my phone so I could update it myself (or use wifinder again). Pain in the (*^(*^(!

What is so embarrassing is that we teach android at this uni and our students can't connect to the network here - we use UTS-WPA (a WPA2 Enterprise network - simple set up,  just use WPA2 + AES for stage one, and EAP = PEAP for stage 2. Just use student/staff number and your email password)

For eduroam, you use EAP-TTLS, and use the PAP (, password) instead.


Monday, August 02, 2010

Quality-oriented teaching of programming

Quality-oriented teaching of programming

Worth reading. I see this all the time too.
Why is there a double hump marks distribution with programming subjects?

This post is a good reason why.


Tuesday, July 27, 2010

What is your personal organisation style?

Love this quote:
Schlenger and Roesch describe five distinct styles to organizing time:


  • The Hopper quickly and and frequently switches tasks throughout the day. Hoppers often enjoy variety and like to feel the gratification of completing small tasks, but they may be easily distracted by other people or technology. This is the most common of the temporal organizing styles.
  • The Perfectionist Plus seeks excellent performance in every activity, sets very high standards for herself and others, and may have difficulty distinguishing between valuable and less-valuable uses of her time.
  • The person who is Allergic to Detail enjoys thinking about the big picture and new ideas, sometimes neglecting smaller details or follow-through.
  • The Fence Sitter can see both sides of an issue and thoroughly researches upcoming decisions, both large and small, sometimes to the point of forestalling action.
  • The Cliff Hanger thrives on adrenaline, deadlines, and external pressure, but sometimes loses track of all the commitments he's juggling.
Schlenger and Roesch describe five styles of organizing physical space:


  • The Everything Out likes to have reminders, mementoes, and project materials in plain sight and within easy reach.
  • The Nothing Out prefers to have surfaces cleared off and materials stored away.
  • The Right Angler enjoys having things look a certain way, with the appearance of precision.
  • The Pack Rat keeps almost everything.
  •  The Total Slob believes that organizing things is a waste of time that could be spent on creative pursuits.

Chinese spam

Recently there have been a large number of chinese spamsters hitting my website with comments about their hackware websites (or some just plain strange ones). naturally these are blocked by me since I moderate every single comment.

But why do they pick on me, not the other ones I am aware of?

If you are a chinese blog-spamster,  F*** off!!

Blackboard aka UTS Online - how I hate thee

Our learning management system here at UTS is a pile of dog poo. It's so tedious to do anything and adds a lot of work to make life as an instructor painful.

There are so many websites and blogs  (google it)  bemoaning the pile of crap Blackboard inc. have written.


Tuesday, July 13, 2010

App Inventor for Android

App Inventor for Android

Oh dear, does this make us programmers redundant?

Apps for Android made easy - I now see a million iFart applications appearing...

Incidentally, It's amazing how your mind explores links - from this website I got to Kawa, then qexo (Xquery) which then leads back to HTML + JSP vs HTML generation via Xquery ( ...

Monday, June 14, 2010

Go Ahead: Next generation Java Programming Style

Code Monkeyism: Go Ahead: Next Generation Java Programming Style

here is a brief summary of style changes recommended:
Final is your new love
No setters
Do not use loops for list operations (hint: Use functional programming style)
Use one liners
Use many, many objects with many interfaces (ie: domain driven design)   
Use Erlang-Style Concurrency (huh?)
Use Fluent Interfaces (and Domain Specific Languages)
Data Transfer Objects without setters and getters (yeah, makes your code look simpler)

Sunday, May 30, 2010

Too Smart for good?

Being an academic, I find this article too close to the truth - I see the "honour roll" student and "gifted slacker" students in the same classes everyday.
Both need special motivation techniques. And I find them the greatest students to teach of all!!

What disturbs me is the "completely clueless" student who got in via "alternative" enrolment conditions. Most of these got into their enrolment WELL below the cut off marks.
Most universities offer "bonus" marks - some make sense (eg: 4 bonus HSC marks if you got high marks in Math for an engineering degree), but some of the marks are well ... pure charity...

Enterprise Software Development with Java: Spring and Google vs. Java EE 6

Spring and everything around it is heading for the could. Literally with the speed of light. It only takes few weeks between new announcements around this topic. At the end of the day, Spring, VMWare and Google are providing a cloud based deployment platform for Spring based Java applications. That sounds modern, fast, easy and is potentially very interesting. It may provide the easiest, no-comprise way to publish Java applications. If you look at other cloud alternatives they are either more restrictive for the developers ("old" Google AppEngine) or provide services at an infrastructure level like Amazon's EC2. 

But: Spring and VMware are going to build their own Java universe where they dictate momentum, their 'standards' and more and more the commercial consequences as well. From an Enterprise Java point of view it's simpler. Too many things are called "Spring". And this makes it easy on the first look. You don't have to talk about 30 something specifications but about one big framework. And while Spring and Rod Johnson in particular have been extremely valuable in influencing the direction of Java (2)EE after the 1.4 release to the new, much more pragmatic world of Java EE 5, Spring has also caused polarization and fragmentation. Instead of helping forge the Java community together, it has sought to advanced its own cause. Which is perfectly valid - but should be recognized for what it is. Spring is not necessarily open, is not free, is not a community or even multi-vendor effort. Lock in with Spring is just another type of vendor-lockin. And that is, why it will never be a replacement for Java EE.
But there is another takeaway for the Java community and the owner of Java. The hype around innovative and integrated solutions is a proof for the Java EE universe moving too slowly along. Bring in more flexibility. Have more courage with changes. Find a way to adopt trends faster and support better modularity.

Monday, April 12, 2010

All Your Apps Are Belong to Apple: The iPhone Developer Program License Agreement | Electronic Frontier Foundation

UPDATED: All Your Apps Are Belong to Apple: The iPhone Developer Program License Agreement | Electronic Frontier Foundation

Oh boy. Apple have really made me angry. They are forcing this agreement down our throats.

Here is a partial quote:

The entire family of devices built on the iPhone OS (iPhone, iPod Touch, iPad) have been designed to run only software that is approved by Apple—a major shift from the norms of the personal computer market. Software developers who want Apple's approval must first agree to the iPhone Developer Program License Agreement.

So what's in the Agreement? Here are a few troubling highlights:

Ban on Public Statements: As mentioned above, Section 10.4 prohibits developers, including government agencies such as NASA, from making any "public statements" about the terms of the Agreement. This is particularly strange, since the Agreement itself is not "Apple Confidential Information" as defined in Section 10.1. So the terms are not confidential, but developers are contractually forbidden from speaking "publicly" about them.

App Store Only: Section 7.2 makes it clear that any applications developed using Apple's SDK may only be publicly distributed through the App Store, and that Apple can reject an app for any reason, even if it meets all the formal requirements disclosed by Apple. So if you use the SDK and your app is rejected by Apple, you're prohibited from distributing it through competing app stores like Cydia or Rock Your Phone.

Ban on Reverse Engineering: Section 2.6 prohibits any reverse engineering (including the kinds of reverse engineering for interoperability that courts have recognized as a fair use under copyright law), as well as anything that would "enable others" to reverse engineer, the SDK or iPhone OS.

No Tinkering with Any Apple Products: Section 3.2(e) is the "ban on jailbreaking" provision that received some attention when it was introduced last year. Surprisingly, however, it appears to prohibit developers from tinkering with any Apple software or technology, not just the iPhone, or "enabling others to do so." For example, this could mean that iPhone app developers are forbidden from making iPods interoperate with open source software, for example.


Kill Your App Any Time: Section 8 makes it clear that Apple can "revoke the digital certificate of any of Your Applications at any time." Steve Jobs has confirmed that Apple can remotely disable apps, even after they have been installed by users. This contract provision would appear to allow that.

We Never Owe You More than Fifty Bucks: Section 14 states that, no matter what, Apple will never be liable to any developer for more than $50 in damages. That's pretty remarkable, considering that Apple holds a developer's reputational and commercial value in its hands—it's not as though the developer can reach its existing customers anywhere else. So if Apple botches an update, accidentally kills your app, or leaks your entire customer list to a competitor, the Agreement tries to cap you at the cost of a nice dinner for one in Cupertino.

Overall, the Agreement is a very one-sided contract, favoring Apple at every turn. That's not unusual where end-user license agreements are concerned (and not all the terms may ultimately be enforceable), but it's a bit of a surprise as applied to the more than 100,000 developers for the iPhone, including many large public companies. How can Apple get away with it? Because it is the sole gateway to the more than 40 million iPhones that have been sold. In other words, it's only because Apple still "owns" the customer, long after each iPhone (and soon, iPad) is sold, that it is able to push these contractual terms on the entire universe of software developers for the platform.

In short, no competition among app stores means no competition for the license terms that apply to iPhone developers.