...making Linux just a little more fun!

Away Mission: Google I/O and Better Software Practices

By Howard Dyckoff

On the surface, these are two very different conferences with two different kinds of attendees. Looking at two obvious differences, Better Software was again held in Vegas, a tradition it continues to uphold (praise Elvis!), while Google I/O, the first of a promised series of annual events, was held at the Moscone Center in San Francisco. The original Google Developer Day was held in nearby Santa Clara last year, and then repeated around the globe; since Google's Palo Alto HQ provides an anchor of sorts, Google I/O is likely to remain a Bay Area event.

Both occupy the late spring calendar, when IT budgets push up against the end of the corporate fiscal year and funds might be tightening; one occurs as Vegas temps break into the triple digits (and stay there) and the other as the summer fog layer is forming on SF Bay. Both, however, are aimed at the developer community and both look for those elusive "Best Practices".

Making Software Development Better

The Better Software conference is organized in part by Better Software magazine, formerly Software Testing and Quality Engineering (or STQE) magazine. Better Software tries to treat its attendees like old friends returning home - so naturally some of them sport graying hair and are a bit pear-shaped. These are the tech leads, project managers, and software architects from the Web 1.0 revolution and some revolutions before that. There are also security, test, and Q/A engineers. Still, Google would be interested in hiring many of them, because these are very senior and experienced people who all have a good understanding of the arcane process of software development.

Better Software magazine teamed up with Agile methods trainer SQE (Software Quality Engineering) which also runs the StickyMinds.com Web site (an on-line resource for developers and project managers) to produce this annual event, as well as the annual Agile Development Practices conference. So these folks also have Agile religion and an Open Source bias, and that's really refreshing! They are about methodology, not commercial interests, so there are no "suits" (corduroys, maybe, but no wool suits...)

For the tech sessions, the conference planners correctly separated Agile Development from Agile Management. There were also tracks for Security and Testing and Q/A as well as Requirements, Software Metrics, and Design and Architecture. The keynotes reflected the main interest of the attendees, which is effectively applying applying Agile Development Methods and Scrum to differing environments and conditions. The choir is already converted, so this event is really about sharing war stories and attaining mastery.

Better Software Keynotes

People have been swearing for years that Agile Methodology delivers software faster and with fewer defects. An SRO keynote by Michael Mah of QSM Associates went beyond colorful anecdotes and provided quantitative results of going Agile for different organization types. He also compared the effectiveness of XP, Scrum, pair programming, etc. The long and short of it... Agile will help almost all organizations.

That keynote was titled "The Good, the Better, and the Rather Puzzling: The Agile Experience at Five Companies". Mah talked about the how old metrics can be reversed when Agile methods turn the "laws of software physics" upside down when applied successfully. Those predictable relationships between schedule pressure, staff ramp-up, and bug rates, all could be changed with Agile. His productivity findings at five mostly-Agile companies show a range of results for time-to-market, productivity, and quality. Each company did Agile their own way and all the metrics show process gains. They also show that new Agile approaches are moving to the mainstream. And the teams that best understood and practised Agile methods seemed to show the most gains - roughly double the output of teams just beginning Agile.

(Michael Mah is an author with the Cutter Consortium, and managing partner of QSM Associates, Inc., specializing in software measurement and project estimation. Michael has collected data on thousands of projects worldwide; his book-in-progress, Optimal Friction, examines team dynamics under time pressure and as a factor contributing to success or failure. His Web site is at https://www.qsma.com.)

During his omnibus presentation, Mah referred to the work and suggestions of Agilist Mike Cohn, who delivered the first day morning keynote:

"I'm sure we all know this from experience, but try arguing with management. One of Mike Cohn's slides mentioned Kent Beck and the subject of sustainable overtime for software development teams. Although pure Agilists will say "no overtime ever", as an experienced consultant Cohn quoted one of Beck's "rules" for Agile teams: never work two consecutive weeks of overtime.

"This actually meets my experience from pre-Agile days and early Agile experiments: you can manage to get a little recovery if you choose to push yourself or your team extra hard in a single week, but Cohn showed data on a slide illustrating how productivity levels fall when teams violate this one week rule. Productivity only rose in the first overtime week - then fell more and more for every other week that overtime was imposed. Well-documented burnout!"

Tech Sessions and Tutorials

Tutorials ran from Lean Agile Management to Software Security, with Test-Driven Development and Design Principles, Risk Management, and even a unit on Behavior-Driven Development: "Behavior-driven development (BDD) is a new evolution in Agile software delivery. With its roots in test-driven development, domain-driven design, and automated acceptance testing, BDD enables teams to deliver valuable software more quickly. It puts the tester at the heart of the delivery process rather than in the usual position at the end."

Two days of tutorials ran at the beginning of the conference; there were full-day and half-day sessions. Regular conference sessions spanned the same topics in sessions of 90 minutes, so they were a bit more complete than at other conferences but almost half the length of half-day tutorials; so were some of the intros of related tutorials.

This link shows the archived Better Software 2008 conference site:

https://www.sqe.com/conferencearchive/bettersoftwareconf2008/Default.html

Content

Unlike some more modern community software conferences (like Q-con, JavaOne, MySQL, OScon, etc.), the content at Better Software is, sadly, locked away. Some materials will appear as future articles at Better Software magazine, but the presentations are held at the StickyMinds.com Web site and access is based on conference attendance and/or the premium "Power Pass" that comes with a paid subscription to StickyMinds.com. The Power Pass grants access to all conference materials (for several conferences), magazine articles, and even search of on-line books, while the free registration offers more limited access.

The content at StickyMinds is great food for thought for software developers and software project managers, and even the free membership has significant content. An example of this is a then-current feature story in the Better Software August issue, "How to Fail with Agile" (by Clinton Keith and Mike Cohn) that actually was the basis for the first conference keynote, "Agile and the Seven Deadly Sins of Project Management". That presentation also mapped traditional "sins" like lust to feature crazes, and sloth to ignoring code quality. This is the direct link rather than clicking on the link for the past August feature: https://www.stickyminds.com/BetterSoftware/magazine.asp?fn=cifea&id=111 (valid in Sept 08)

The article lists twenty (somewhat tongue-in-cheek) guidelines to help you sabotage your Agile project. E.g., Guideline 8: "Do not create cross-functional teams - put all the testers on one team, all the programmers on another, and so on." Guideline 15: "Drop and customize important Agile practices before fully understanding them." We can guess how that one turns out...

For more great content, see Scott Ambler's detailed article on Agile Model-Driven Development from the June issue archive. There are also articles by many of the conference contributors on subjects related to their presentations and tutorials. E.g., Johanna Rothman's "Does Exploratory Testing Have A Place On Agile Teams?". Exploratory testing - questioning and learning about the product as you design and execute tests rather than slavishly following predefined scripts - makes sense for many projects. Rothman also thinks it helps in Agile projects.

The Better Software conference was held at The Venetian Hotel and Conference Center in Las Vegas, NV. It will return there June 8-11, 2009. That may not sound like a familiar venue, but it's the old Sands Convention Center redecorated from the earlier Comdex days. While Better Software took place on the upper 2 floors, Symantec Vision took place on the lower 3 floors. It's a large and workable conference venue, but you have to like going to and staying in Vegas - in the hotter part of June. When I was there, Elvis had left the building.

The Google I/O 2008 conference

The two day developer conference took place in late May and almost 3000 attended. This is breaking into the big leagues for Google, especially with the major SF venue for tech conferences.

First, this was a very low cost event. The nominal charge was $400 for 2 days, including about 90 sessions, 2 lunches, and an evening reception. That's hard to beat, especially when the content is decent.

Of course, the Google Developer Day in May 2007 had been completely free and actually had better food (it's true; there was also more of it). But 'free' is hard to maintain and this conference was much broader and covered many topics not specific to Google. Although there were some sessions similar to the ones at the recent Web 2.0 and JavaOne, the content was decent and of a level comparable to other technical conferences.

Google recorded everything but the lab sessions (which should have been at least audio recorded since the many verbal comments were also valuable). These were supposed to be up on the Google I/O Web site in a week or two (and I did find them when I checked 6 weeks later.) So that $400 is a bargain - not to mention that you may get chatted up by a Google employee for a job. Of course, there was some Google marketing and an emphasis on Google products and initiatives, but this really took a back seat to the tech content. There were also sessions on broader topics like social networking APIs. That's a thumbs up for this event.

Staying with the technical emphasis, most of the keynotes were interesting - and this goes double for the GA announcement of the recent Google App Engine. That was a good overview that enticed attendees to go to the deep dive sessions later.

Here's a hit list of main announcements:

Session slides and videos can be found at: https://sites.google.com/site/io/

Follow that link to see sessions like: "Building an Android Application 101" or "Meet the OpenSocial Containers" or "Underneath the Covers at Google: Current Systems and Future Directions" (a peek at the architecture of Google's data centers.)

Consider starting with "Open Source Projects and Poisonous People" which tries to identify people that may poison the atmosphere in a developer community and how to de-fuse them. Also consider "Rapid Development with Python, Django, and Google App Engine" by Guido van Rossum (the creator of Python, who now works for Google).

And don't miss the sessions on Shindig such as: "Apache Shindig: Make your Social Site an OpenSocial Container." Shindig, a new Apache Software Foundation incubator project, is an open source implementation of both the OpenSocial specification and gadgets specification in Java and PHP. The goal of Shindig is to make it easier for social networking sites to extend functionality using the OpenSocial API.

Painless Python

Among other sessions I'd recommend is "Painless Python - part 1 & 2" by Alex Martellki, who wrote Python in a nutshell and the Python cookbook published by O'Reilly. I'll summarize a bit here.

The audience for this session is primarily programmers with no Python experience, but even sysadmins and Perl hackers could get a decent grounding in Python. This is useful since Google App Engine and some other tools are Python-based.

For people getting started with Python, he recommended on-line resources like https://python.org and https://diveintopython.org as a good start. He also mentioned Usenet's news://comp.lang.python and help@python.org.

Some points about Python: it is a very high level language with a very deep connection to C. According to Martellki, "Python is 87% in the spirit of C..." since it can use both OOP and procedural programming and supports operator overloading and multiple inheritance.

Like Java, Python is compiled into byte code. Everything inherits from the Object class, but in Python, everything is a first class object.

In the zen of Python, simple is better, complex better than complicated, flat better than nested. But, as Martellki emphasized, "There should be one, and preferably only one, obvious way to do it."

Python is strongly typed, but it is also dynamic. There are no declared types, no declarations, just statements. The standard Python library has over 200 modules, most purely Python, but some coded in C. Over 4000 additional modules can be found at: https://cheeseshop.python.org/pypi

Presenting App Engine

Google App Engine was one of the highlights of the event. This is a Web-hosting service that lets 'customers' run applications on Google's infrastructure. For a small fee, your app can run in a Google datacenter. Apps are either run on your domain or on a free domain from https://appspot.com.

App Engine applications are implemented in Python. The runtime environment includes the full Python language and most of the Python standard library.

Google App Engine went live after the conference, which meant that over 100k developers and potential users that had been wait-listed during the restricted beta can now participate in the on-going beta. This time, Google lifted the use limits and also began to charge for serious use. When enrolling, all App Engine users get up to half a GB of storage and up to 5 million page views a month, free. That's probably enough for a small Web-based business. But success will have a price. The rates vary a bit but it's roughly 10 cents per CPU core hour and GB of bandwidth. Add 15-20 cents per GB per month of storage - about $2-3/year - and a serious Web enterprise might pay hundreds or thousands of dollars for 99.99% uptime. Does that make your data center into an expensive boat anchor?

Well, Google's reputation was tarnished by a major outage about a month after the conference but other Internet stars all had major and more frequent outages. It's still a bargain and significantly less expensive than Amazon's more mature cloud computing services. Also note that at present Google does not also charge "per-request" as Amazon does.

Google also announced and described new tools in the App Engine toolkit: a memcache utility for key-value caches comparable to memcache utilities in other scripting languages, and an API for simple image manipulation (to rotate, scale, and crop images). These are important because App Engine customers are not provisioning their own VMs with their own tools and utilities. App Engine is an automated application hosting environment. In contrast, Amazon offers separate computing resources like storage (S3), and virtual servers (EC2) which customers have to organize into Web applications piece by piece.

Find out more about App Engine here:
https://code.google.com/appengine/docs/whatisgoogleappengine.html
https://code.google.com/appengine/docs/python/

A demo video on using App Engine is available here: https://www.youtube.com/watch?v=bfgO-LXGpTM

App Engine is built in Python and uses the Django Web application framework. Guido van Rossum described both in detail in a technical session, "Rapid Development with Python, Django and Google App Engine":
(https://sites.google.com/site/io/rapid-development-with-python-django-and-google-app-engine)

App Engine works simply as an HTTP request handler; HTTP is like an RPC mechanism and supports Web applications and AJAX. Requests are handled serially or in parallel while App Engine handles app scaling and load balancing automatically.

Through Python APIs, App Engine provides for datastore, Google Accounts authentication, URL fetch and email services. Application code can only run in response to a Web request. A request handler cannot spawn a sub-process or execute code after the response has been sent.

App Engine apps must use App Engine's own DB facilities. This is a highly scalable data store based on Google's BigTable, which has as an advantage: no need for traditional SQL table joins.

There is a Django helper to convert DB models to App Engine use. See: https://code.google.com/p/google-app-engine-django/

Customer applications are basically directories containing Python and Django files (ie:/mayapp' runs from the myapp subdirectory). Symbolic links are followed. A single file controls the URL mapping and app meta-data; request handlers are invoked by URL patterns like CGI scripts, and output goes to stdout. See the slides for file defs and code samples.

In the end...

Similar tracks at Google I/O covered Android, Google Gears, OpenSocial, Mapping, JavaScript, and other technologies. This is a broad technical conference featuring many Web 2.0 building blocks.

Kudos also for placing the conference in downtown SF. That's a better location for out-of-state visitors and reasonably accessible to all Bay Area locals. The mid-week timing of the conference also made it a bit easier to fly in and out of San Francisco.

Besides good grub and bins of freely available snack food, participants got a Google I/O T-shirt and a simple cloth tote bag. Since with Google, it's all net, there were no developer CDs and the only hardware were those Google lapel pins also available at other tech conferences.

One minor fiasco occurred on opening day. Google decided to keep the I/O conference registration open right up to keynote hour. That led to huge lines in the hour before the opening keynote. I waited over an hour for a badge and just as I trudged off late to the keynote, a Goggler stood up on a registration desk and shouted that everybody could go in for the morning sessions - sans badges - and complete registrations in the early afternoon. Then the escalators went into overload... At Google I/O, we didn't need no stinking badges!


Talkback: Discuss this article with The Answer Gang


Bio picture

Howard Dyckoff is a long term IT professional with primary experience at Fortune 100 and 200 firms. Before his IT career, he worked for Aviation Week and Space Technology magazine and before that used to edit SkyCom, a newsletter for astronomers and rocketeers. He hails from the Republic of Brooklyn [and Polytechnic Institute] and now, after several trips to Himalayan mountain tops, resides in the SF Bay Area with a large book collection and several pet rocks.

Howard maintains the Technology-Events blog at blogspot.com from which he contributes the Events listing for Linux Gazette. Visit the blog to preview some of the next month's NewsBytes Events.


Copyright © 2008, Howard Dyckoff. Released under the Open Publication License unless otherwise noted in the body of the article. Linux Gazette is not produced, sponsored, or endorsed by its prior host, SSC, Inc.

Published in Issue 155 of Linux Gazette, October 2008

Tux