JAOO 2009 Highlights

Here we go again

For me, JAOO is the event of the year in the danish software development community.

Last year the buzz was all about functional programming. This years buzz?

Somewhere between cloud computing and self-improvement, combined with pessimistic note

Shu-ha-ri

The best talk was Keith Braithwaters “Techniques That Still Work no Matter How Hard We Try to Forget Them”. He calls himself Old School – old enough to have seen 2 of the 7-year cycles in software development.

Much to peoples amusement, Keith started by announcing, that if IT was a person, It would be diagnosed with
•  ADHD
•  Retrograde amnesia
•  OCD

Things we got right? Nobody has never been as productive as in Smaltalk. 21 years ago. And still is.

There was once a thing called System Analysis … Anyway, somethings wrong with the UML diagrams.

Instead, we should look into how Engineers model:

  • Models are useful for what they leave out
  • Faster, cheaper than building a prototype
  • Models Answer Questions – more quickly and easily than the real thing would

UML diagrams dont adhere to any of these principles …

Architecture Visualization

Michele Lanza , from University of Lugano, Switzerland had a fantastic talk about architecture visualization. Code is text – but we are visual beings. The proper visualization tool should enable us to tell the stories behind the software.

We all know that we should build habitable systems, and that the patterns movement comes from (urban) architecture. CodeCity is the “Habitable” metaphor on stereoids – software packages are converted into cities, classes into buildings, with one floor pr method.

Billede 12

Organizational patterns

This was my moment of enlightenment. I attended the tutorial by Gertrud&Cope about “Fine tuning Scrum”. As well as we have software architecture patterns, deployment patterns, concurrency patterns and … dating patterns, organizations have patterns as well.

Pick a set of them – organize them into a pattern language – and you have Scrum.

Pick another set – and you have XP.

Pick another …

This explains why the thing works – there are patterns underneath.

This made me thinking how this connects to the goals of Enterprise Architecture …

Deliberate practice

Mary Popkins had a fantastic lecture about how we can transform principles of deliberate practice, into the context of software development.

Malcolm Gladwell quotes the 10.000 rule in his book “Success Factors”, and Mary quotes the same research.

10000 hour rule

Any talent which follows deliberate practice for 10.000 hours becomes a Master.

Therefore, we should strive to nurture environments, that let our talents develop under deliberate practice. This requires:

  • Find a teacher / mentor
  • Practice repeatedly
  • Obtain immediate feedback
  • Focus on pushing the limits
  • Practice regularly & intensely

Into the Clouds

Forecast: Clouds ahead

It looks like the theme of today is going to be clouds. I have spent the week on cloud computing, dreaming in the clouds and word … (yes, you guessed it!) clouds …

MathMagicians do their first jump into the cloud

I have been looking around after a good solution for setting up tests servers in a painfree way. I found a great one!

Its called slicehosting.

Basically, you rent a virtual server – it lives somewhere in the cloud, fighting for CPU time on a real machine with a bunch of ther servers. The IP adress is real enough – you are the root and totally in charge – and the financial commitments are kind of ridiculously low – you can pay 20 usd/month for the smallest slice – no strings attached.

I think this is a perfert setup for small it-companies that would like to deliver great software, and need the infrastructure of version control, continuous integration, and testservers. In this way, you don’t have to invest a lot of money, can always expand and upgrade your slices as you go on.

Incredible – but its working. I feel it like if the world just changed.

Beaaaaaaautifull Word Clouds

Wordcloud generated by wordle for this blog.

Wordcloud generated by wordle for this blog.

I was searching the internet for a flex component to generate nice looking wordclouds. I am working on a prototype version of a job search engine – and among other tricks – we will use word clouds to categorize job offers. I stumbled upon a site, that takes a text or URL as input – and generates the most beautiful wordclouds. They have designed a layout algorithm, that utilizes the space in a way, that is aesthetically very pleasing.  Unfortunately, the wordle guys didn’t leak out the algorithm – I spent half of the night trying to compute a simple heuristic for doing similar things in Flex … I don’t think its actually needed by the project, but who can resist this beauty of words?

Wordle layouts the size of the word to be proportional to the frequency – I also spent some time wondering about other functions than linear for reflecting the frequency. I believe a normal distribution will also look quite nice.

All the computations reminded me of an old Calculus 101 problem:

Given a rectangle composed of other rectangles, each of which has at least one side of rational length, proove that the big rectangle also has at least one side of rational lengt.

My head in the clouds

I spent my previous weekend at what must be called the most cozy Java Conference in the world. Hanging out at the beautifull Hindsgavl Castle with the danish JUG (Javagruppen) at the annual conference was an amazing experience. We weren’t so many – mingled together and had lots of fun. I enjoyed Bruce Eckels “Hybridizing Java” talks – and was even lucky to get a copy of his book – with a sweet cartoon dedication. Neal Ford impressed me with his talk where he compared Ruby an Grails  – so similar and so fiercely hostile to each other. My own talk was about both DCI and Scala – and I decided afterwards that just one of the themes would be enough for a talk.   All to soon the conference was over, I was picked up by my family, and we enjoyed a stroll in the castle park.

Hindsgavl Castle - the place for the annual Danish JUG Conference

While I was at the conference, I got confirmed an exciting opportunity  – I have been hired by ITU to teach a course called Saas …  the short hand Saas does not stand for Software as a service … but it could.

It is a part time position, which suits me perfectly! I can still commit myself to all kind of exciting stuff in my company, and once a week I will be  doing my best to impress young, sensitive minds …  Since I stopped teaching at SDU, I have been missing the academia life, and – I am looking so much forward to teach my new students everything important there is to know about system design and security … actually I have always wanted to be given the opportunity to put my fingerprint on a course, that will teach about good software design. What happens with the .java file between the editor and a webapplications with real users. What good quality is, why that gives us good security, and what goals we as programmers should strive to achieve. Of course inspired by my favourite computer science book – Pragmatic Programmer.

Anyway – I will be spending some time in the clouds, trying to design the perfect course plan.

JAOO

I attended JAOO in Århus this year – what a fantastic experience, this conference has a special atmosphere. Denmark is such a small country, you keep meeting old colleauges, classmates, bosses – whatever.
This years buzz was all about functional languages – we finally need to decide what to do with side effects. One possible solution is to have the language give clear, big warning signs.
This is the old semantics vs syntax discussion: Giving clear names, typesafety etc doesn’t help to achieve the big golden dream of (finally!) having reusable software components. What we need to agree is semantics – what does it do, not syntax – how to call it.
I was enchanted by Bill Verner, and his Scala talk, and I am really looking forward to his newcoming Scala book. A typesafe dynamic language that runs on the JVM – I am kind of convinced that this is exactly what we need. To bad the book isn’t coming out before the conference is over – I would have loved a signed copy.
I also enjoyed Michael Nygards talk “Failure comes in flavors” almost without breath – his rant about patterns and antipatterns when time comes to deploying and keeping our applications alive was full of cliff-hangers. Respect. If you ever have a chance to hear this man talk – and if uptime is of any importance to your next web-app – don’t miss him.
I also spent some time discussing lean/agile architecture with James Coplien and his gang. He is promoting DCI – data, contexts, interaction, which is a new paradigm in structuring your applications architecture. James wants us all to move us away from class-oriented programming to true object oriented programming. We spend a couple of hours hanging out, discussing how to translate his example into different programming languages. I myself tried to convince James that you can do it -in Java too. Sitting together, 5 people, around a table, we discovered how we all have been searching for the same answer. Magic of coincidence, or is it the world allready moving in a new direction?