Kurser i Domain-Driven Design - Våren 2012




Monday, January 30, 2006

On Shipping Crap. Part II

Some things are just hard to understand. On a daily basis I encounter really badly designed websites with poorly implemented technical solutions, and it’s really starting to get to me. Seriously, when is this, 1997? The web has been used commercially for about a decade now, and it’s not getting any better. We had the first simple web pages with a few images, and some text, preferably on the default grey background of Netscape 1.12N. Then the hype came along and we got insanely over-designed, mostly unusable, web pages that assumed that most users had a 10 Mbit broadband connection (which, at the time, pretty much no one did…). Then the bubble erupted. One would think things got better, and perhaps they did. But it’s pretty far from OK.

Yes, some companies do get it right, everyone’s current favorite, Google, comes to mind with a built in integrity that is really hard to beat. But it really is an exception. And that really is too bad. Unfortunately it looks like recent events in regard to Google’s China venture makes that integrity a bit less shiny.

Let me give you some examples from the last few days:

Oracle
In the aftermath (or perhaps it’s actually the beginning) of the Oracle PeopleSoft merger I got an e-mail from Oracle asking me to review their new privacy policy and update my registered profile. I usually throw most of these things in the trash, you only have time to read so many privacy policies and update so many web profiles, but I thought I should do this one. So I logged onto the given URL and an ordinary web form was presented. For some reason my area of work was set to "Fishing and Agriculture", so I changed that, and updated some other items. I did however not select a State, since we don’t do states in Sweden. State does not carry any meaning in the contents of a Swedish address. This is surprisingly often a problem with American websites; they assume that states matter in the rest of the world, which simply is not always true. It was marked as a mandatory field, but I must admit, naïve as I am, that I thought I could leave it empty and submit the form anyway. I couldn’t, an error screen was presented stating the missing field, and a Retry button. I hit the Retry button and was presented with the original form, with all my changes gone.

What is going on? This is Oracle, they have been shipping frameworks for building websites for ages, and surely they know how to keep the posted values during the validation phase, perhaps even present the errors in connection to the incorrect field? Any half decent framework will do this for you.

I did take a look under the state drop down box this time and found that they had dug up something called Län, I guess it could be roughly translated to State if you really wanted, but in Sweden, it simply bares no meaning in this context.

Filling out the form again was really not an acceptable proposition; I had already done it once. As far as Oracle is concerned, I’ll be doing Fishing and Agriculture also in the future. So I logged out, only to be presented with the following text:

Partner Application Name: EMKTAPMID2.amts402.oracle.com
Logout Status: OK

What a joke.

SAS
The number one website category on the unusability chart has got to be online hotel and airline reservation sites, and absolutely worst of the ones I have tried is Scandinavian Airlines' site. Nothing manages to drive me so close to insanity as this one…

In the IDG IT-business paper Computer Sweden the other day, we could read that almost all companies in Sweden they had talked to were unhappy with the result of outsourcing their IT department. The only exception was SAS that considered their IT outsourcing effort a success. I don’t know if web development and maintenance was part of the outsourcing deal, but I bet it was. If that is the case, SAS managers and I have quite a different definition of success.

I don’t want to spoil the fun for you by giving examples, just try it out for yourself! It will fail in new unexpected ways in all its glory no matter which browser/OS combo you use. I think I have tried everything from Camino, Firefox and Safari on the Mac to Windows XP with Internet Explorer and Firefox. They all fail at some point. Preferably they fail with an old-school Mac OS type error code, like -1233456243.

Apple
This could perhaps be considered the odd one. Apple is a company that’s offering products in the premium segment. If you are looking for raw power to the best prices, you probably should look for another vendor, why not Dell for instance. But if you look for an integrated whole, where your digital audio player (with video) seamlessly integrates with smooth software running on a beautifully designed computer with a modern and powerful operating system, there’s simply not much of a competition. You will pay a premium for this, which apparently more and more people are willing to do.

But this package falls apart when it comes to the web site. On the surface it’s rather nice, but when you start to use it the flaws appear: Dead links, missing images, incorrectly localized text, weird PeopleSoft pop-ups about expiring web sessions, forms that can not be submitted, and so on. Just the other day I got this message when browsing the Apple Store:
"Skickas vanligen: Momenteel niet beschikbaar
Gratis frakt
Sold out for the Holidays and we hope to have supply again later in January."

That's at least three different languages in one go, Swedish, English, and perhaps Dutch(?)

Another example from the Swedish version of the Apple Store: "Visa status för din Beställningsstatus", which translates to "Show status for your order status".

Apple, just fix it.

So, what does this have to do with software development? It got everything to do with software development. These sites are results of a software development projects, and once again we didn’t deliver.

Monday, December 26, 2005

Total Recall – or Lean goes to France (or actually Czechia)

I am a proud owner of a Peugeot 307; it’s a great little car. It looks good, is fun to drive, has a spacious and modern, well designed, interior, good sound proofing; yes pretty much what you look for in a car of this size. As an extra bonus you’ll also get a really close relationship with your local Peugeot service center; since you’ll be bringing in your car for big and small repairs repeatedly there’s plenty of bonding time. It also gives you the opportunity to try out new cars on a regular basis, when you get a courtesy car to drive during the time yours is being patched up. Small tip to fellow Peugeot owners: If you collect and save your recall notices instead of calling the garage to make reservation as soon as you receive them, you can batch the recalls and perhaps only have to visit your garage once a month or so.

Well, seriously, it is a nice car. But when recall notice number three arrives by mail in less than three years (not counting the numerous times you have to visit the garage to fix something that is broken without an official recall), you start to wonder. Not only is it annoying for the owner to go back and forth to the garage like a yo-yo, but also, this must start to get expensive for Peugeot, both with regard to actual service costs and damage to their reputation, which eventually could hurt sales. Anyway, it is quite obvious that quality is not Peugeot’s unique selling proposition.

Apparently Peugeot has reached this conclusion as well. When it was time for PSA to build a new assembly plant in Czechia, they decided to partner up with Toyota. And why would they want to do that? To tap into Toyotas boring design and lack of driving pleasure? No, probably not. Peugeot has a QA problem they need to address, and the way to do this is to build quality in from the beginning, as you will only have limited success trying to patch it on at a later stage. So they turn to the company that currently pretty much defines quality in the automotive industry for help. In the latest edition of the Peugeot customer newsletter, Peugeot New, there is a long feature on the new plant, and when interviewing the manager about the production system the reason for the joint venture is spelled out: “What you have to understand, when it comes to the production, computer and IT systems, it’s Toyota and ‘the Toyota way’ that is used.”

We’ll see how this turns out. Combining Toyota’s lean production system, credited for Toyota’s ability to consistently deliver the best built cars (and along with that a net profit of USD 11B last year), with Peugeot’s feeling for innovative design and character could work out. But I bet there are some corporate cultural differences that need to be solved along the way…

The first products coming out of the TPCA plant, the Citroën C1, Peugeot 107 and Toyota AYGO, are about to hit the showrooms. Time will tell if they deliver to expectations.

And then, as an instant reminder of the absence of the silver bullet, the latest large vehicle recall comes from no other than Toyota themselves. Recalling 160 000 of their environmental flag ship hybrid car, the Prius. You’ll never guess the source of the problem...

Monday, December 05, 2005

sventon

It’s here! The first official build of sventon, a Subversion web GUI application written in Java for browsing SVN repositories. It’s still to be regarded as a beta release that needs more work and testing. But this first release has most features expected from a tool like this, and a few extra unexpected ones. If you have a Subversion server repository you’d like to easily browse using a web browser, please try it out! All you need is Java 5 and a compliant servlet container, such as Tomcat 5.5.


One thing that really bothers us is reading long installation manuals with close to a billion steps that need to be completed in order to get software running, so we spent quite some time on making the installation as easy as possible. Please let us know whether we succeeded or not.


If you decide to give it a try, please give us feedback on your experiences and new feature requests through http://sventon.berlios.de.

Many thanks to Alexander Kitaev for providing the JavaSVN library that sventon relies on for Subversion interaction.

Saturday, September 24, 2005

Do you, JAOO?

I am just about to leave for JAOO 2005, the premier European developer conference on software technology, methods and best practices. Last year was a great experience, and this year's schedule looks as promising, so I am very much looking forward to attending. If you are going, why don't you send me a note, prehaps we could meet over a beer or two!

/P

Sunday, September 04, 2005

Blog This

Citerus is growing and so is our army of bloggers. Please visit the fine writings of Tobias Hill and Magnus Mickelsson.

/Patrik

Tuesday, May 31, 2005

It's Subversion time!

One of the most important tools in the developer’s toolbox has got to be the version control system, the VCS. This is where we store everything created during hard work on our development project’s journey from the first line of code to release and continued maintenance. The VCS forgives us if we accidentally delete the wrong file and lends a helping hand when it is time to fix that pesky bug that popped up out of nowhere in the deployed software. The VCS is one of the system developer’s closest buddies. If the system works, that is, otherwise it can be a pretty darn annoying enemy.

Surprisingly often when working at a client site I encounter a product that I guess most of you are familiar with, Visual SourceSafe – VSS. SourceSafe Pretty Much Does Not Perform as a version control tool. I really cannot understand why Microsoft put their name on it. There are probably about a billion blog lines of text written on the topic of SourceSafe’s failure to perform, so I will not bore you by adding more to that. But, if I got a Swedish Krona (or SEK for those of you who know your ISO 4217 currency codes) for each time I tracked down problems in source code related to the behavior that if a file is deleted from the repository by another developer SourceSafe fails to remove that file locally when a Get latest… operation is performed, I’d be rich. Or at least I’d have enough money for half a latte at CoffeCup in Stockholm’s main train station. But if you don’t like lattes, or just feel like you need more arguments against SourceSafe, try http://www.google.com/search?q=sourcesafe -site:microsoft.com (or, for the sake of irony, the new MSN Search: http://search.msn.com/results.aspx?q=sourcesafe –site:microsoft.com).

I can only speculate in why SourceSafe shows up time and time again; I guess availability could be a major reason since it comes bundled with development tools from Microsoft, also it is fairly easy to get started doing version control using SourceSafe if you’re running Windows. Rumors also say that there is a fair chance of successfully integrating SourceSafe with VisualStudio.

In the open source arena there is another ruler: CVS. Among open source developers CVS has been the favorite for a long time and the de facto standard for version control. I have used CVS from time to time and I think it is pretty good, but I certainly do understand that there might be people who find it a bit scary with its command line oriented heritage and semi perfect Windows support, although modern IDEs such as Eclipse and JetBrains’ IntelliJ IDEA have done their share to ease usage. CVS is far, far from SourceSafe’s dire state but still, it has been around for quite some time, and signs of aging are beginning to show. CVS has its share of less great solutions that could need an overhaul.

This is where Subversion comes in! Subversion is a new version control system, created from scratch, and available as opens source. The Subversion development project has been going on for some time, with the goal of building a compelling replacement for CVS in the open source community. Terminology and the ways of working have been kept from CVS to facilitate migration to Subversion, but at the same time many of the problems in CVS have been fixed. On the list of new sweet functions we’ll find atomic commits, complete version control of directories, support for moving and renaming files and directories, effective delta support for binary files, and more.

At the time this is written Subversion is available in version 1.2.0. I have only been running it with Windows, but binary packages are available for Solaris, Red Hat Linux, MacOS X, and more platforms. Subversion can be installed locally for version controlling files stored on the local hard drive or, perhaps more interesting, as a server allowing multiple participants in a project share files. Several options for server installation are available, one is to run Subversion with Apache HTTPD 2.0 and use HTTP/WebDAV as transport.

The selection of Subversion clients is considerable, with different feature sets, maturity and quality. One of the most mature clients available for Windows users is TortoiseSVN, a shell extension to Windows Explorer integrating Subversion in the Explorer file browser (if you’ve been using TortoiseCVS you know how this works). Several other clients are under development, one example is JetBrains that will deliver integrated Subversion support in next major release of IntelliJ IDEA. Scripts for converting existing CVS and SourceSafe repositories are available for download. The conversion process usually makes it possible to keep version history and user information from the original repository. Continuous integration tools such as CruiseControl already offer Subversion support. An Ant task is being developed, and the Ant exec task can also be used if you feel like automating your build process (which you of course do).

Subversion manages files using the copy-modify-merge paradigm, a CVS user should have no problem start using Subversion. If you’ve used SourceSafe with the multiple checkout option set, you’re in pretty good shape as well. If you on the other hand has used SourceSafe with its default behavior that employs exclusive file locking you may have a little initial challenge converting to the Subversion way of thinking and working. I started my version control journey on SourceSafe myself and initially had a very hard time comprehending how copy-modify-merge could ever work without creating total chaos. But it turns out it works very well as long as you work with files that can be merged (e.g. text files), and after a while it’s really hard imagine going back to the “old” way of doing things.

It has never been simpler and cheaper to get a powerful and modern version control system. Take good care of your code, stop using SourceSafe and have a closer look at Subversion. Yes, now.

Closing comments

This text was initially written in Swedish by me and edited by Tobias Fors for Citerus’ excellent newsletter on effective software development, PNEHM! When the article was pre-released internally at Citerus it sparked a bit of a discussion, a colleague of mine strongly claimed that it was wrong to argue that people should throw out their existing working VCS system in favor of a half done product such as Subversion. I don’t have a hard time agreeing with that statement as such, but I do believe that SourceSafe isn’t a working VCS system, and although Subversion may not have been around as long as CVS I definitely believe that it is good enough and it will continue to improve. The Subversion project has been self hosting for several years and in 1.0 release for over a year. I’d say that Subversion is starting to reach the early majority (but then again, who am I, Gartner?).

As for switching from CVS to Subversion I’m not so sure if it is time just yet, it depends on your situation. PushOK argues that Subversion is not ready to take CVS’ place, Holub on the other hand argues the opposit. As always, it is up to you to investigate the options more closely and make your choice. As long as you don’t let that choice be SourceSafe.

PNEHM! is published mostly with Swedish content and is available at http://pnehm.citerus.se/ Read it online and sign up to be notified when new articles are available.

/Patrik

Once more, with feeling

I was home, sick, the other day (yeah, happens to the best), and finally had the opportunity to watch the excellent U2 Elevation Tour DVD, filmed in Boston 2001.

Being an engineer I always carry around that somewhat silly urge of trying to figure out how things work; from that perspective the extra material on the DVD with all the "The making of" stuff is a mandatory view. In one clip of "the making of elevation live" you can see director Hamish Hamilton jumping up and down in the broadcast bus (or whatever it would be called in TV production speak) during the very start of the live take, screaming "I love my job! Come on! Come on!!!".

And, once again, it hit me, I mean, I love my work too, but, funny thing, so far it has really never managed to provoke that kind of reaction. No jumping. No screaming. Yeah, sure, now and then you stumble across a piece of code that is particularly great performing, elegant, self explanatory and simple. Yes, subtle excitement has been known to occur on occasion. But it is pretty far from the feeling you get when you see Bono entering a sold out arena.

Perhaps we can find a way of putting more feeling in there. Or perhaps in my next life I'll do something else, drummer perhaps. Yeah. Cool. But for now, time for some more CRUD.

But then again, to quote the singer himself: A singer is someone with a hole in his heart almost as big as the size of his ego. When you need 20,000 people screaming your name in order to feel good about your day, you know you're a singer. Bono: 2001 Harvard Commencement Address

/Patrik