From Antipathy to Ambivalence – The Great Twitter Experient, Day 14 (The End)
The two weeks are up. The Twitter experiment is complete. Did I find the dolphin, or am I still waiting for the magic?
If nothing else, I’ve achieved a greater understanding of the dynamics of Twitter, but I don’t think that it has yet had a significant impact on the way that I communicate or the way that I consume information. I have to admit that the experience was less awful than I thought it might be.
If you use Twitter, get a client
The first thing that I discovered is that the web interface to Twitter is just not usable. It’s a decidedly less confusing and more dynamic experience using one of the many desktop clients. I’m currently on TweetDeck having previously tried Twhirl, though neither is the one Twitter client to rule them all. The static nature of the website and the way that it displays conversation fragments out of context was one significant reason why I didn’t see much value in the service.
Content is king?
I don’t feel that my initial complaints about the general unimportance of most tweets, and the plain pointlessness of many, were unfounded. And when somebody starts tweeting every minute about the film that they are currently watching (a film that I am not watching), it becomes incredibly irritating. They say that on the web Content is king. Well, since the advent of Twitter, Content has abdicated and crown prince Banality is now running the show.
However, I did find that I had a higher than expected tolerance for tedium, mostly because I could easily consume/ignore most of the tweets that I received without suffering much distraction. And even if the tweets were mostly superfluous, they did occasionally raise a chuckle, such as Wez’s new software development methodology.
They have real people on Twitter now?
I was not expecting to be able to interact with people I knew in the real world on Twitter, because two weeks ago none of them were on Twitter, but Wez and David have signed up since I started. David is already well ahead of me in terms of followers, and all without the help of a series of self-promoting blog posts. He is the next microblogging celebrity. Meanwhile, Wez is using Twitter to stimulate the global economy.
But what do you actually use it for?
From the start of this experiment I’ve struggled with what to tweet. I wanted to stay on-topic. I thought maybe I could use Twitter to complement this blog. I don’t think that this approach is particularly easy or even that useful. It’s easier just to go down the stream-of-conciousness route and write anything that comes to mind.
In this regard, I wouldn’t be surprised if, for many, Twitter is effectively a write-only medium where everybody’s contributions are welcomed and few are valued – a kind of voluntary collective delusion.
Moreso than with blogging, you are subscribing to people rather than topics. If you want to use Twitter, you have to accept that even if you pick compatible people to follow, a lot of what they write will not be of interest to you, particularly when it concerns the trivialities of daily life.
One use case for Twitter that does makes sense to me is within a development team for posting status updates that can easily be consumed and responded to by other team members. Yammer offers a Twitter-like service well suited to this niche (access can be restricted to selected people only).
In conclusion…
If I could change one thing about Twitter it would be the 140 character limit. Countless times I’ve sat there trying to figure out how to remove 13 characters from a message without altering its meaning. This involves creatively removing punctuation and finding abbreviations or shorter synonyms. A limit is good for keeping messages concise and to the point, but a few more characters would go a long way to improving the quality of the content.
I found the global eavesdropping aspect kind of interesting, although it’s a bit hit-and-miss as there is no way to filter by quality.
Twitter is mostly harmless but, as far as I can see, does not deliver on much of the hype that surrounds it. I’m still indifferent to Stephen Fry getting stuck in a lift and wary of news organisations such as the BBC treating it as a reliable journalistic source. Twitter is not the harbinger of a communications revolution, it’s an occasionally relevant diversion.
I suppose that the big question is will I continue to use it now that the two weeks are up? I don’t know. Probably to some extent. It’s there, I have an account, it won’t take much effort to continue. On the other hand, if Twitter disappeared tomorrow I wouldn’t miss it. I might not even notice for a while.
Global Eavesdropping – The Great Twitter Experiment, Day 13
It’s been over a week since my previous post on my Twitter experiences. In the meantime I’ve only been using it sporadically (so much for being addictive). Time flies and I’ve almost reached the end of the two-week period that I had assigned to this little experiment.
Ask a rhetorical question on Twitter and somebody will answer it within a couple of minutes. What surprised me when I pondered the usefulness of OSGi is that the person who responded was not one of my followers but somebody who I had not interacted with before. This highlighted an aspect of Twitter that I had not previously paid much attention to. As well as following individuals, you can track particular search terms. So anybody monitoring Twitter for discussions about OSGi would have been alerted by my tweet.
This is particularly interesting to me because my number one complaint about Twitter has been the utter pointlessness of most of the content (including that which I have been contributing). Focusing on this aspect, you don’t have to follow anybody. You could use Twitter in a similar way to Google Alerts, surfing the zeitgeist ready to pounce on any discussions that include your favoured keywords. This way you participate only in on-topic conversations and avoid the what-I-just-ate messages. Unfortunately, there’s still no quality control. No Digg, Reddit or DZone equivalent to promote the good content and ignore the bad.

On a related note, you can get an overview of what topics are presently occupying the thoughts of the planet’s bored masses via TwitScoop, which provides a real-time word cloud and top 10 topics.
140 characters should be enough for anybody. Really?
One thing that I’ve held back until this penultimate post is something that I knew would irritate me right from the start: the 140 character limit. I don’t care what anybody says, it’s not enough. I understand the benefit of having a limit; it forces people to keep their entries concise. However, 140 characters is too restrictive. Sometimes not even enough for a fully-formed sentence. Twitter doesn’t need to be restricted by SMS limits. The future of Twitter does not lie with SMS. Everybody who is using it from a mobile phone has Internet access. A limit of 250 or 300 characters would be altogether more civilised.
Tweeted URLs: A regression in web usability
When you start adding links to your tweets it leaves less room to provide context. The URLs are necessarily shrunk and obfuscated to save room, making each link a leap into the unknown. It would be very nice to be able to attach the link to particular words in the message (you know, like we’ve been doing since 1992). Twitter takes you back to the days before hypertext.
Software Naming Revisited
What do I know about naming software projects? Maybe it’s not such a good idea to give your project a name which is a common typo of a common word?
Google Search suggests that it’s a mistake:

TestNG has achieved sufficient popularity to overcome that problem. ReportNG is not there yet.
Google Alerts doesn’t like it much either. I have alerts for each of my projects so I can see where they are being used and respond to any queries that may arise elsewhere on the web. An alert for “ReportNG” results in an e-mail every time somebody somewhere on the web misspells “reporting”. Not particularly helpful. So I tried “ReportNG AND TestNG”. Now I get an e-mail for every slack-fingered typist who manages to make two separate typos on the same page.
Eating Navel Fluff – The Great Twitter Experiment, Day 5
Time for another status report from Twitterland (is that the correct name, or is it “twitosphere” or “information super bridleway” or something?). Here are some more disjointed thoughts (is Twitter affecting my ability to combine multiple sentences into coherent prose?).
Since I started this little adventure I’ve been paying more attention to the media coverage of Twitter. Andrew Orlowski at the Register lays into Twitter and the media’s (the BBC’s) obsession with it:
Writing about Twitter is the journalistic equivalent of eating the fluff from your navel.
…The rest of the world, however, completely ignores it. But with the journalists’ attention fixed firmly on each others’ navels, they don’t seem to realise what a fringe activity Twitter is.
…Twitter is a bit of a charity-case itself: both technically and financially, it’s a lost cause. That’s plain to everybody, it seems, except the journalists who use it and who can’t stop Twittering about Twitter.
Orlowski’s piece references “Twestival”. I tracked down this disturbing footage of the London event via the BBC (who else?). It’s a few dozen geeks with iPhones standing around ignoring each other while sending tweets to other people who aren’t there. These people need to get out less.
After 5 days, the initial novelty has worn off. Maybe I should approach tweeting in a different way? Perhaps every message should be a haiku?
One problem with Twitter content, regardless of who you are following, is that each obfuscated URL is a leap of faith and the messages are usually too truncated to provide any meaningful context.
I haven’t posted many Twitter messages in the last two days. I’m still trying to figure out how best to use Twitter. What should I tweet? Should I stay on-topic (software development and tangentally related things) or should I branch out to anything that comes to mind? I’m thinking this would be counter-productive as people who are following me mostly came via this blog and are unlikely to share my other interests. Without some kind of focus it becomes Facebook without the functionality. I’m also proud of the fact that I’m 5 days in and I have yet to tweet the details of anything that I have ingested.
I also need to find more people to follow. I’ve been through Jurgen’s list and picked out a few more people that might be of interest.
Talking to Strangers – The Great Twitter Experiment, Day 2
Previously on New Adventures in Software: Dan signs-up for Twitter to try to figure out the attraction of self-stalking.
I’m starting to get a feel for Twitter now. Not so much in terms of finding it useful, or even particularly interesting, but I have a better appreciation of what it is.
So what is Twitter?
Twitter inhabits a space somewhere between a feed reader and an instant messaging client. If you use it via the Twitter website it shows its more reader-like tendencies. It aggregates messages in a very static way. You just go there and see what’s been said since you last checked it. If you use one of the myriad clients (today’s client is Twhirl), the experience is closer to using MSN Messenger or similar. Messages pop up in the corner of your screen, not in real-time but via polling.
I rarely have IM programs running because I find them to be incredibly damaging to productivity. Conversations spawning at random, all requiring attention, distract you from whatever you were trying to do on the computer. Twitter is not quite as distracting. Messages arrive but you don’t have to respond, whereas on IM it would be rude to ignore them. Then again, on Twitter, the messages usually aren’t directed at you. You are just tapping into other people’s stream-of-conciousness thoughts. I wouldn’t be surprised if that is the real attraction of Twitter, though people might not like to admit it. It’s nice to get these little reassurances that you are not alone in the world, right now there are other people out there doing “stuff”. You select a set of people that you like, or admire, or find interesting and you tune into their stuff. The nature of that stuff is unimportant, just so long as you are in the loop.
Of course, there is also a conversational aspect to Twitter. The people you are following might not have addressed their messages to you, they may not even know that you exist, but you can jump in at any point and respond to something that they have said. This is the “global conciousness” aspect that Twitter fans highlight. Yes, you can ignore what your parents and teachers told you and talk to strangers. It’s not a proper conversation though. It lacks the depth of e-mail and it lacks the immediacy of instant messaging.
You also get to see the conversations that don’t involve you. This is incredibly irritating when somebody you are following replies to somebody you are not following. It’s like when you are on a train and the person next to you is talking on their mobile phone and you are forced to listen to one half of a conversation. You just get some out-of-context sentence. You can try to track down the original message, but that’s just one more distraction. It would be better if the Twitter clients defaulted to not showing you messages that were addressed to other people.
Today’s Highlights
I now have 13 followers, and I am following 19 people. It seems that there are a few people who signed up for Twitter in response to my original post. This is no longer an experiment, it’s a movement. They too are trying to see what all the fuss is about.
I also have to abandon the “nobody in the real world uses Twitter” argument now since David has signed up and I can confirm that he is a real person that I know. Go on, you can follow him too. Maybe he’ll say something.
I’m not going to write a blog post for every single day of this 2-week experiment. I will report back again in a few days.
Practical Evolutionary Computation: Elitism
In my previous article about evolutionary computation, I glossed over the concept of elitism. The Watchmaker Framework‘s evolve methods require you to specify an elite count. I told you to set this parameter to zero and forget about it. This brief article ties up that loose end by explaining how to use elitism to improve the performance of your evolutionary algorithm.
In an evolutionary algorithm (EA), sometimes good candidates can be lost when cross-over or mutation results in offspring that are weaker than the parents. Often the EA will re-discover these lost improvements in a subsequent generation but there is no guarantee of this. To combat this we can use a feature known as elitism. Elitism involves copying a small propotion of the fittest candidates, unchanged, into the next generation. This can sometimes have a dramatic impact on performance by ensuring that the EA does not waste time re-discovering previously discarded partial solutions. Candidate solutions that are preserved unchanged through elitism remain eligible for selection as parents when breeding the remainder of the next generation.
NOTE: One potential downside of elitism is that it may make it more likely that the evolution converges on a sub-optimal local maximum.
The Watchmaker Framework supports elitism via the second parameter to the evolve method of an EvolutionEngine. This elite count is the number of candidates in a generation that should be copied unchanged from the previous generation, rather than created via evolution. Collectively these candidates are the elite. So for a population size of 100, setting the elite count to 5 will result in the fittest 5% of each generation being copied, without modification, into the next generation.
If you run the Hello World example from the previous article both with and without elitism, you will see that it completes in fewer generations with elitism enabled (22 generations vs. 40 when I ran it – though your mileage may vary due to the random nature of the evolution).
Source code for the Hello World example (and several other, more interesting evolutionary programs) is included in the download.
Further Reading
Waiting for the Magic – The Great Twitter Experiment, Day 1
Getting Started
So I started a Twitter account. Signing-up was not without its problems. The sign-up form has some AJAX functionality for checking whether a user name is in use or not. Except that functionality is just absent in Opera, and it turns out that in Twitterland I am not the only person called Dan Dyer. There is not even an error message when the registration fails. You just get returned to the sign-up form. Very annoying. It wasn’t until I tried it in Safari that I figured out what was happening. You are also limited to a 15-character username, so I could not register as “newadventuresinsoftware”.
That initial hurdle overcome, I proceded to post my first “tweet”, a link back to the blog post announcing this little adventure. The translation of the URL to a Tiny URL tripped over the brackets that I used to surround the link and messed up my tweet. Lesson learned for next time.
The use of these shrunk and obfuscated URLs is necessitated by the strict 140 character limit. It’s not done very cleverly though. I tried to post a tweet that would be 140 characters after the link had been shrunk, but the Twitter website would not permit this.
In all, the Twitter website is pants. It’s a bad way to post messages and a bad way to follow other people. If it were the only way to interact with the service I would have aborted my trial already. Most of the Twitter pros are using some kind of desktop or mobile client. I’ve tried using the Opera widget and that’s an improvement. Next step is to settle on one of the more full-featured desktop clients.
Technical Problems
Twitter’s technical issues are legendary. I hadn’t heard much about them recently, so I assumed things had got better. But I’m only a few hours in and I’ve already experienced my first brief outage:

Day One Summary
As well as getting signed-up and posting my first tweets, I’ve also attracted my first disciples followers (thanks). I don’t really know who are the best people to follow, so as well as the few people I have picked out, I’m following everybody who follows me. That raises a question though: if I’m following you, and you’re following me, are we both lost?
At the moment I’m underwhelmed by the whole experience, but I didn’t expect to achieve enlightenment on day one. I’m just doing the ground work for the epiphany that will surely occur at some point in the next 2 weeks. Right now I’m just sitting back waiting for the magic to happen.
Finding the Dolphin – The Great Twitter Experiment, Day 0
I’ve said it before, I don’t get Twitter. For me, the hysteria generated by the flat-lined signal-to-noise ratio of this seemingly most limited medium is a deeply confusing phenomenon. The last time I felt like this was back in the early 90s as I stared cross-eyed and frustrated at one of those Magic Eye pictures, trying to find the dolphin. How come everybody else can see something in it while to me it’s just nonsense?
Since I last wrote on the subject of Twitter, the hype has increased still further. Somebody used TwitPic to post a picture of the AirBus that landed in the Hudson River in New York. As a result, this “citizen journalist” earned himself 15 minutes of international fame, including featuring on the BBC’s television news at least twice. I somehow suspect that had he chosen to upload his snap to Flickr instead, the BBC would not have been nearly as interested. Somebody at BBC News is a Twitter lover. The corporation’s online coverage of the recent attacks in Mumbai prominently featured information sourced from Twitter, whether accurate or not.
If further evidence were needed that with Twitter the medium really is more important than the message, it arrived last week. What was this seismic event that many are heralding as the tipping point for the microblogging revolution? Stephen Fry got stuck in a lift. No, really, that’s it. Had General Melchett used his Blackberry to phone a journalist instead of to tweet, he could not have bribed them to write about this unfortunate but utterly banal occurrence.
I am not alone in my dismissal of Twitter as an irrelevance. Terence Blacker writing in the Independent aptly described it as “self-stalking” and summed it up as follows:
Twitter may have novelty value but it is more than mere surface silliness. It is anti-thought, the deadening white noise of modern life with all its pointless business. As for the dotty idea that short computer messages are full of wit, insight or observation – that is, to quote the master twitter himself, “arse, poo and widdle”.
I discovered the Independent article via Graham Linehan’s blog. Linehan (co-writer of the peerless Father Ted) has a different take on the value of Twitter:
…the manifold possibilities of Twitter are enough to make you giddy. This is a new world, people! We are officially in the future, not with jetpacks, but with something much cooler – the hive mind. Ignore those grumpy luddites in the broadsheets and elsewhere, who don’t understand it, can’t be bothered to learn how it works and are frightened at the prospect that people are entertaining themselves in a way that doesn’t involve accepted media forms.
By now, I think that I’ve firmly established that I don’t really see the point of Twitter, but I don’t want to be dismissed as a “luddite” who “can’t be bothered to learn how it works”. So it’s time to take the red pill and see for myself how deep this rabbit hole goes. Today I’m embarking on an experiment. A two-week trial to see whether there is any substance to the Twitter hype. I’m deeply sceptical but also approaching it with an open mind. Will I experience a higher level of conciousness or will I endure and proliferate a fortnight of pointless anti-thought?
I’ve just signed up for a Twitter account. If you’re already a Twitter user, I need some followers (sounds like I’m starting my own religion here). I also need interesting people to follow. Please also send me tips on how to get the most out of Twitter. If you are one of the many people who responded to my previous post agreeing that Twitter was pointless, I will report back here at regular intervals in the next couple of weeks and let you know how it’s going on the other side.
Stand back, I’m going in…
User Experience Fail – Am I wrong to expect better from the ACM?
I received the following e-mail today:
On February 9, 2009 ACM will be replacing some book titles in our Safari Online Books Collection with new titles, including titles that have been requested by ACM Members. In choosing which titles to remove, we look for the ones that are used the least often. Unfortunately, according to a recent usage report, some of these titles were on your bookshelf. *** Please remove these titles before February 9, 2009. *** ================================================ Effective Java™: Programming Language Guide ================================================ If you fail to remove the titles by the deadline, you will notice that the "slots" for the removed books will still be counted against your bookshelf, but you will no longer be able to access the books. At that point, we will need to refer your case to the Safari Customer Support desk.
That’s from the Association for Computing Machinery (“Advancing Computing as a Science & Profession”). Firstly, I should state that the ACM’s online books facility is an excellent service that justifies the membership fee on its own. But surely there is a better way for them to perform this update than requiring potentially every single user to logon and manually perform this task?
I don’t know if it’s the ACM or O’Reilly who would be responsible but, whoever it is, they already know which users are affected and which books are involved. I refuse to believe that this process could not be automated.
The reason they are removing Effective Java from the library is that they are replacing it with Effective Java 2nd Edition. The path to full customer satisfaction ends with them just swapping one for the other on my bookshelf. I shouldn’t need to get involved.
I particularly like how they make it sound like it would be my fault if they had to refer me to the Safari Customer Support desk. They also do a good job of making that fate sound a lot more sinister than it should.
Debugging Java Web Start Applications
How do you attach a debugger to a Java Web Start application? Normally you probably wouldn’t bother, just start the application without Web Start and debug as normal. However, if you have a bug that shows up only when running in the Web Start sandbox, as I did today, that won’t help. The SecurityManager restrictions were causing a different branch of my code to be executed than when launching the application from IDEA or the command line.
It was not immediately obvious how to attach the debugger to the Web-Started VM. In IDEA, to remotely attach a debugger to the JVM, you should start the VM with following set of switches (or similar):
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
Where do these switches go when launching a Web Start application? Normally you launch the application by just clicking a JNLP link in your browser.
One option, which doesn’t work, is to specify the JVM arguments in JNLP file. You can already do something like this:
<j2se version="1.5+" java-vm-args="-ea -server"/>Adding the debug switches is trivial… and futile. The problem is that remote debugging requires the VM to open up a socket to accept connections from the debugger. Rather sensibly, Web Start does not permit untrusted applications to open sockets on users’ machines. I don’t know if it would work if the application was signed, I was too lazy to go through the hassle of signing the code.
If you want to open a socket on the client machine for debugging purposes, you are going to have to do it from the client machine rather than the JNLP file. The solution is to set the JAVAWS_VM_ARGS environment variable to include the debug switches and then to launch the javaws executable and point it at the unmodified JNLP file. From a bash shell it looks like this:
export JAVAWS_VM_ARGS="-Xdebug -Xnoagent blah blah" javaws http://www.example.com/path_to/application.jnlp
You can then attach the debugger as normal.



