05 · 28

Functional + NoSQL == *HOT*

Dave Thomas was in town stirring up all the geeks with his talk titled "Why Real Developers Embrace Functional Programming and NoSQL Data". I had a great time meeting some old friends, and hearing Dave cut through the crowd with the sharp tongue that he has.

His central message was to never stop learning.

 
We've become a monoculture of object oriented programmers living in a world of relational databases. Remember the horrors of EJB's persistence layer? Well, even Rails' ActiveRecord is just a slicker version of the same nonsense. The object-relational impedance mismatch was never breached. Same old layers of icing on the same old shit.
 
And he doesn't like frameworks very much either. Layer upon layer upon... you get the idea :-)
 
If you're still maintaining the status quo of Relational databases and Object Oriented languages, Dave would like to remind you that you've turned into a row farmer :-)
 
So what do we do? He argued that we should look at the shinier side of functional programming which has famously had lower KLOCs, and the now blinding presence of all the NoSQL databases which are more flexible and perhaps better suited to your problem domain.
 
I swear I never want to write another many-to-many join table with composite keys. Sign me up :-)
 
04 · 15

Software art is engineering?

Dr. Ivar Jacobson the god father of software components has lofty goals. He admitted being embarrassed by them last year, but now he's quite proud and loud about them. He was in Melbourne today talking about his latest meta-methodology SEMAT (Software Engineering Method and Theory).

I'm one of those 'computer programming is an art, so don't sully it with engineering' kind of guy. So I attended Dr. Ivar Jacobson's talk with trepidation.
 
Ivar noted that software engineering today is like the fashion industry. There are waves of process fashions that wash through the industry every 5 or so years. There was structured programming before I even started programming - then it faded. Object Oriented Design was really big while I was at university - then it faded. XP was strong during my early career - now it's gone. UML, CMMI, RUP - aaargh! And now everyone's disillusioned or frantically becoming a scrum master.
 
The situation reminded me of something Dr. Karl Kruzentiski once said on TripleJ - if there is more than one explanation for something, it's likely that they are all wrong!
 
The reality is that software development is differs from industry to industry - and you need to pick a methodology that works best for you. There really can't be a theory of everything because it's the wrong question to ask. Enterprise development is very different to game development. Game development is very different to embedded systems development. Ivar really didn't address this dichotomy at all, so I was a bit disappointed there. This blog post talks about more deficiencies of SEMAT: http://catenary.wordpress.com/2009/11/29/against-semat/
 
Ivar wants to bring together the Industry, Academics, Methodologists, and Developers. They rarely see eye to eye on software engineering processes.
  • Academics don't understand the needs of industry. They have no practical experience within industry, so they pick a processes such as XP or Scrum to teach without a real need to use them themselves. Or they claim they are too proud to teach any methodology!
  • Industry is wrapped up in many processes because they have a real need for them to deliver useful software. However, they aren't able to scientifically compare and choose processes - thus there are fads.
  • Developers want to become experts in their domain, but find themselves lost every time they change jobs and have to re-learn a new process
  • Methodologists have been prolific in creating fads, but have been unable to compare their methodologies in scientific terms.


To help them see eye to eye, Ivar has called to action some of the big names of the software engineering world who have created processes such as RUP, CMMI, Scrum, XP and many others.

With them, he has extracted a small kernel of practices that are common to all processes. The idea is to be able to categorise and compare processes better, and hopefully put them through their paces in a more engineering way. Perhaps even compare them using metrics.
 
These practices are essentials that every software development organisation does. Nothing is optional. They might do them in different ways using different methodologies - even if the methodologies don't themselves describe them. For example, Customer Representatives must 'Understand the need' and 'Ensure stakeholder satisfaction'. These sound like universal truths - and they are. Every process has something to say about them.
 
Ivar said that all methodologies can be described in terms of his kernel practices. And he has apparently started a company that sells 23 glossy cards with the practices printed on them.

Now until I get my hands on a full list of the 23 practices he has explained, I'm going to stay sceptical. I'm not going to say that software development is an art any more, but merely that it's complicated :-)

03 · 16

Oh Data! Where are you?

Here's an interesting idea for distributed computing when you have large amounts of data spread across numerous machines - move your code around (as ruby/scala/what-have-you continuations) instead of moving your data around. 

It's a research language called swarm:

http://blog.locut.us/main/2008/10/6/swarm-a-true-distributed-programming-lang...

http://code.google.com/p/swarm-dpl/

It's kinda like when you're in a library (the physical kind with heavy books, dusty shelfs and smelly aisles), and you pause reading a book to walk to the reference section to look up a word before walking back and continuing your book.

The coolest part is that most continuations can be contained in a single network packet - so there shouldn't be much network traffic bouncing around if you've partitioned your data vis-à-vis your problem domain.

03 · 01

Shuffling energy

I got up this morning and rearranged some energy to affect the world. That's what I do for a living according to Ron Burk -

02 · 13

Ever wondered how mechanical computers worked?

I remember playing with gears as a kid and discovering some of their mathematical properties. But I never went as far as using cams to compute trignometric functions!

Watch these videos to learn how they used plain old gears and shafts to compute the trajectory of a projectile, and many other computations that the navy required.

Part 1 -

Part 2 -

12 · 13

Stuff someone learned working at Microsoft

I found this an interesting read. Mostly because it resonates with my own experience -
http://www.sriramkrishnan.com/blog/2009/12/stuff-ive-learned-at-microsoft.html
10 · 21

It's a different world out here

Here's something new I learnt yesterday about the middle east - every house has a little indicator stuck on the ceiling pointing towards Mecca. My Emirates flight had a Mecca locator up on the projector every so often. Many people carry a Mecca locator GPS device on them. Every one is quite aware of the direction to Mecca as their primary direction.

All that orientation means that more people know the direction towards Mecca than the cardinal directions (N,S,E,W). This has some interesting implications for an application we're developing for here. We can't for example show a layout of a house and orient it to North and ask people to pick where they want their network points installed. People would just get confused. We have to orient our maps towards Mecca, or show a little Qibla arrow as they are called.

10 · 09

Empirical evidence for software metrics

Someone did the leg work and found some real evidence about software metrics:

http://research.microsoft.com/en-us/news/features/nagappan-100609.aspx

The results are interesting, but not surprising if you've developed software for a while:

  • "Code coverage is not indicative of usage" - Your hot spots need good code coverage, but not your cool spots.
  • TDD projects take 35% more time to complete, but are 60 - 90% better in terms of "defect density".
  • Confirmed that having more assertions reduces defects. However, you can't just mandate their use. Developers must have a culture of using them.
  • Organisational structure matters a lot (herding your cats)
  • Geographical distance doesn't matter much if your distributed team feels like they're working on the same team. Here's an interesting quote - <i><large>"Most people preferred to talk to someone from their own organization 4,000 miles away rather than someone only five doors down the hall but from a different organization."</i></large>
06 · 06

Software Engineering ≠ Computer Science

So why exactly is there a schism between computer science and the rest of the engineering world? It comes down to a fine red line according to this Doctor Dobb's Journal article:

http://www.ddj.com/architect/217701907 -

05 · 15

Mental plaque

When I tried to get to gmail.com, and Safari wouldn't go there, I blamed Safari!

I did what every self respecting person would do when faced with evidence contrary to everything they believe in. I believed that Gmail's was a rock, and Safari was a bit mushier.

I actually lodged a bug report with Apple. How embarrassing.

Then when I read about it in the news today, I had a chuckle and did what every self respecting geek would do - talk about their mistake.

Phew, I do have hope.
Tushar Pokle

Trying to make sense of life through the eyes of an automaton - me.

About

Follow me through the strange world of computing