For a while, I’ve been meaning to check out how WordPress handles category-specific feeds. Having such feeds available would free me to write boring posts like this without fearing people will spill their cornflakes as they browse the morning Software Development feed. Thus, this post is under “General”, which I will use for a confusing combination of administrivia and anything that’s not really tech. Basically non-core stuff that most people wouldn’t bother subscribing to. And if that doesn’t put you off the General entry, then please, be my guest and read on.
HumansAndTech I’m using for “high-level” software and tech stuff, like usability, podcasting, blogging, business, etc.
SoftwareDev is all the relatively low-level stuff. The two assembly programmers reading this blog will no doubt be disgusted by my use of “low-level” to refer to concepts as high-level as software methodology.
Podcast simply indicates there’s a podcast in there, so you could use that feed for ipodder or other podcast clients. Or it’s fine to use the “All Feeds” category; the bandwidth difference will be trivial compared to the size of the MP3s. Theoretically, “Podcast” is orthogonal, as I could rabbit on about any one of “General”, “SoftwareDev”, or “HumansAndTech”. In practice, I’m keeping my podcasts on the topic of software development, so most will be SoftwareDev. (Anything on usability will be HumansAndTech.)
Hopefully, the change hasn’t caused any problems with aggregators – I refactored the categories of some old entries, but didn’t update their timestamp.
I can’t help being meta about this and pointing out that refactoring the domain model has been a win-win: users (admittedly not many of them) benefit from a structure which is coarser-grained but nonetheless satisfies most usage profiles; I gain by having to think less each time I post something.
Triple J, a fine Aussie youth radio station, has started podcasting (thanks Splatt). Right now, it’s just a trial by one show – Hack. Still, this is a milestone for Aussie radio. First. Podcast. Ever. I’m feeling out of touch as I haven’t heard it before, but this “Hack” show seems to be more about politics than porting Linux to your refrigerator.
Triple J is part of the ABC, an organisation similar to the BBC, so the station is something like UK’s Radio 1, but with more talk content. Its always had excellent formats and presenters, and I can’t wait for them to jump on the podwagon.
On Internet Explorer, Click the left mouse button to listen, or click the right mouse buttton and “Save As…” to download. You can subscribe for updates straight into your PC or ipod – it’s easy and free. Refer to the podcasting FAQ at http://podca.st.
Here’s the third of four podcasts on agile software development. The first – an overview on agile – is available here and the second – a survey of methodologies – is here. This 37-minute podcast focuses on the best known – and most controversial – of the methodologies: Extreme Programming.
About embracing change, a rapid departure from plan-and-build.
So don’t just tweak traditional processes … reinvent them.
Four core values:
- The Planning Process. Elicitation by negotiation and ongoing discussion; specification by index cards rather than exhaustive documents.
- Small Releases. 1-4 week iterations.
- Simple Design. Minimalist approach. Simple, not stupid. Once and once only. "You Ain’t Gonna Need It".
- Metaphor. Cohesive design.
- Testing. JUnit.
- Refactoring. "Refactor mercilessly."
- Pair Programming. Constant review improves design and testing, enables collective ownership.
- Collective Ownership. Keeps tacit knowledge spread across team, supports refactoring and ongoing design improvement, acts as contingency against staff departure.
- Continuous Integration. Ensures code can change quickly, keeps developers’ attention on adding business value rather than micro-managing infrastructure.
- On-Site Customer. Allows tacit requirements.
- Coding Standard. Supports collective ownership.
- **40-hour Week. ** "Sustainable Pace"
- C3 project
- Smalltalk and unit testing
- Design patterns
Stayed tuned for the next podcast, the final in this Agile Software Riffcast series: The Dark Side of Agile.
Thanks again to My Morning Jacket for the sample used in the lead-in track.
I’ve recently noticed several systems that go out of their way to optimise the out-of-the-box experience:
A FreeView TV box . When I turned it on for the first time, it came up with a menu asking me a few basic questions, like what area I’m in. So the main preferences were done, and I didn’t have to spend half-an-hour diving into the menu system and poring through the manual. The rest of the preferences could be filled in at my leisure, or never.
Tried out Copernic today. It provided a wizard-type interface to get st up quickly. And when I tried searching for something soon after, it explained that it’s not finished indexing yet. I’m not 100% sure, but it certainly sounded like a message optimised for first-time usage.
As people are drowning in choice, it’s critical for product designers to optimise the out-of-the-box experience – put an explicit check in to see if this is the first usage (and let the user reset it somehow). Especially for software downloads, where it’s so easy to give up and try one of the hundred alternatives. A few patterns are suggested (“virgin usability patterns”?) here:
Virgin Wizard: Provide a really quick wizard to focus the user’s attentions on the most important settings. Just taking the time to tune a few key settings can have a big impact on the subsequent experience.
Still Moving In: If there are exceptional circumstances – e.g. empty lists or high delays – occurring during first-time usage, make that explicit to the user.
Martin Fowler is talking about incrementally improving specialised requirements such as usability or security or internationalisation one step at a time, in much the same way as agile projects should enhance functionality one step at a time.
On usability, it can be done. Indeed, one of the nice things about agile projects is you can get more rapid feedback from users, and iterative development is the holy grail of usability. We touched in this in our Extreme Usability workshop last November.
However, there is a big downside: user training. Many users are too busy to learn new interfaces. So sometimes, you can come refactor your system into something more parsimonious — less “if…then” logic, less complicated domain objects, so it’s easier for developers. This might be necessary to help you cope with an upcoming requirement.
That should be great news for users too as it simplifies their mental model, but what if they’re already familiar with the old model? Unlike developers, they’re not thinking about the system design all day long; they’re focusing on getting the job done, and they’ve probably internalised many aspects of the system. If you go and observe users dealing with a complicated system, you’d be amazed at how creative they can be in finding workarounds!
Thus, a challenge for agile development remains: how to incrementally develop system concepts while providing minimal interruption to users. I’m not familiar with any HCI research on this topic, perhaps it is a good research opportunity in a world becoming more agile.
On internationalisation (I18N), this paper describes some of the processes. It’s definitely a multi-stage process, with localisation-enabling taking place before localisation itself. Here, there is a very obvious way to develop incrementally: develop the English (or whatever market) product first, and ONLY THEN enable it. Doesn’t work for all cases, but it’s amazing how many projects have done a big I18N framework upfront, only to release in one language. With unit tests and modern IDEs, it shouldn’t be difficult to extract messages out later on.
Alistair Cockburn has started an RSS feed to track changes to writings. Not a blog (yet).
The last agile podcast pointed to Alistair’s Crystal methodology.
My previous blog entry discussed fun with technology, and I alluded to the Firefox language extension. Well, that’s quite a simple idea just takes one random term on the page and provides a translation. Still, it’s a nice idea and perhaps there is more being planned. There are some other nice browsing tools too, like rikai, which can provide translations in tooltips.
Well, here’s something I’ve been wanting for a really long time …
Have you read A Clockwork Orange? Anthony Burgess’s characters use slang called Nadsat … here’s a description:
The use of a completely new syntax is utterly magnificent – a stroke of genius. And it proves once again Anthony Burgess’s remarkable ability and facility with languages of all kinds and with words in general. At a first glance the vocabulary of anti-hero Alex sounds incomprehensible: “You could peet it with vellocet or synthemesc or drencrom or one or two other veshches.”
Or: “So I read all about the scourging and the crowning with thorns and then the cross veshch and all that cal, and I viddied better that there was something in it. While the stereo played bits of lovely Bach I closed my glazzies and viddied myself helping in and even taking charge of the tolchocking and the nailing in, being dressed in a like toga that was the heighth of Roman fashion.”
Then the reader, even if he knows no Russian, get to grips with it, and it’s a very expressive and colourful read. Some of the meaning becomes clear from the context: “We gave this devotchka a tolchock on the litso and the krovvy came out of her mouth”, which approximately translated means, we gave this girl a blow on the face and blood came out of her mouth.
See? Nadsat is gradually blended in, and based on the context, you pick up the meaning. Just as children learn to speak, and expats learn the language of their new homes. Let’s see … firefox, rikai.com, Nadsat … are you thinking what I’m thinking?
Yes. It’s simple. Write a browser plugin – or HTTP proxy – that renders the page almost as is, but with words occasionally swapped with foreign terms. I realise there is a downside: it would probably be crude, wouldn’t necessarily handle verb conjugation, etc. But the upside in a world where people spend many hours surfing – huge!
And don’t get me started on splicing podcasts to achieve like effect :-D.
Language teachers have traditionally tried to make language learning fun, employing tools such as songs and games. But then, a lot of that is contrived, and many learners – adults and especially teens – don’t take kindly to reciting nursery rhymes and clapping their hands together while sitting in a circle. Now, technology can be employed to induce genuine fun – Ravi Purushotma’s paper, “YOU’RE NOT STUDYING, YOU’RE JUST..” covers five cunning ploys to enhance the experience:
- Playing games with foreign text (in particular, The Sims).
- Browsing the web, with the “throbber” (that loading icon in the corner) replaced by a random term.
(Of which, more in my next blog entry).
- Learning how to type, and using a foreign language for input.
- Listening to foreign lyrics and a translation at the same time (perhaps one in each ear).
- Listening to language learning MP3s while walking around. (Old idea, but high-capacity MP3 players make it more practical.)
I’m going to add one I’ve used with success:
- Exploiting DVD audio and subtitle options to listen in one language and read in another.
I’ve used this for Spanish and Japanese. Specifically:
- I purchased foreign-edition DVDs by visiting shops while in Spain (e.g. FNAC) and Japan (e.g. any corner store), and also ordered from sites like dvdgo.com (for Spanish) and JapanCD (for Japanese).
- I made sure each DVD had all four options: English audio, foreign audio, English subtitles, foreign subtitles.
- I only took movies I knew well, ideally where I could recite large chunks.
- I only took movies I was willing to watch a lot.
Then, I watched them in any combination I saw fit, paused, practiced if I felt like it. I found the most effective to be foreign audio with English subtitles, though it’s possible to cheat a bit and end up not listening much. So sometimes, all foreign works best. Also, if you use Power DVD on the PC, you can have two subtitles at once. For the times I’ve focused on Japanese writing, it’s really nice to see English and Japanese at once, as well as hear it pronounced.
Another us of technology is a tool like Supermemo, which I’ve used to learn Kanji using the Heisig method (though it’s going to be a lifetime pursuit … I’m still not there yet). This is very powerful as you can install it on a smartphone such as a Treo or XDA, so you can just pull it out for a couple of minutes while waiting for a train, and practice vocabulary or whatever. Supermemo, VTrain, and other tools work by tracking your progress, so they only drill you on things you need to know. That’s much more effective and interesting than old-school random flashcards, where you keep coming up against questions you know inside-out. Less pure fun than watching a Pulp Fiction DVD in Spanish, but still quite a motivating way to drill yourself.
General Technology Predictions:
This will not be the year of the podcast, nor the year of the corporate blog – though both will expand rapidly. They will have to wait until 2006. Instead, 2005 will be the year of customisation. Google or microsoft will provide something like a “My News” portal, based on a mix of RSS and their own monitoring. Yahoo has been doing this for years with My Yahoo, and now uses RSS, but it doesn’t have the traction of Google or MS.
More attention will be paid to asteroid monitoring. Most reports indicate that detection and communication technology could have minimised the tragic losses caused by the earthquake, and events like this are reminders that we need to seriously plan for seemingly impossible events. In an economy that’s doing quite well, funding can be directed to such efforts.
The BBC will continue to lead the way with podcasting, and will be the Adam Curry of the mainstream media podcasters, with more listeners than any other program on global current affairs.
Spring for new development projects, refactoring to Spring, Spring integration with open-source frameworks, Spring textbooks, Spring would be a nice-to-have for prospective employees. Spring. Spring. Spring.
Meanwhile, many Spring adopters will ignore one of the best things about Dependency Injection: testing with mock objects.
Twenty new aspect-oriented frameworks, a dozen new ORM tools, and a whole bunch of web UI package.