login
Blurts on the Art of Software Development

Today | RSS | RDF | Atom | Other Tags
Categories : All | All | CI | .NET | General | Humour | Java | Personal | Reviews | Ruby | SW Eng

Tim Bacon reminded me about something Uncle Bob wrote some time ago:

Where did we get the idea that our companies wanted us to write crap? Aren't they paying a lot of money for this software? Aren't they going to depend upon this software for profits? Isn't this software worth a lot? If so, then why would our company want to pay for crap that slows us down? Wouldn't they rather have good clean code that keeps us running fast?

This might not be such a bad idea after all. That is, assuming that your managers are willing to play with jigsaws in the first place...

Java celebs (sort of) getting hired by one of the big ones. A Microsoft release being behind schedule. Business as usual.

for (int i = 0; i < languages.length; i++) {
    implement(languages[i].ninetyNineBottlesOf("beer"));
}

There's a new JSR for JAXP 1.3, which includes some of the things I'm sure we've all thought along the lines of "why the he** isn't this part of the standard APIs?" Namely XPath, XML-to-Java mapping, and schema validation (I hate specifying properties for a DocumentBuilderFactory etc. and really hope that the new schema validation API provides something else...).

Nice, but not worth an IPO, I think :)

(thanks, Tim)

I've been talking about getting my bed, sofa, chairs, kitchen, bathroom, bed, did I already mention sofa?, connected to a WLAN for probably a year or so. Well, today I finally acted on the intent and got me a 54mbps wireless router to hook up on my ADSL line and a corresponding PC card for "my" laptop (read: my girlfriend's laptop). The work laptop has WLAN built-in and the desktop machine can be hooked up to one of the RJ-45 slots in the router (that is, assuming that I first plug it into a power outlet and see whether I can revive it from a year-long coma...) so that was all I needed.

Configuring the damn thing was pure hell. In total, I spent something like 5 hours to get it all up and running -- most of that trying to get encryption working. In the end, the solution I finally managed to figure out was to reboot the router after enabling encryption. Of course, nowhere in that particular configuration screen did it say that I need to reboot in order to activate the changed settings...

Mikael Grev's MigBase64 looks like a very efficient implementation of the Base64 algorithm. Worth a look if you're dealing with Base64 and need to boost your performance.

Dion just made me aware of an interesting open source project named Ashcroft, which aims to create a unit testing framework which poses technical restrictions to force developers to write "well-formed" unit tests. It sounds like a good and bad idea -- both at the same time. However, for me, the most interesting thing about Ashcroft is that I hadn't even considered (at least consciously) that it would make sense for a unit testing framework to be more restrictive than JUnit.

This fascinating blog entry by Mike Clark was the final straw. It sparked my inner geek and finally forced me to go and order a couple of pragmatic books for myself.

No, it's not a movie. It's really a no-brainer.

At least they're trying to get all the computing power on their payroll :)

This reminds me of the Mitsubishi Pajero scandal some years ago... This one really cracked me up :)

Yep, you heard me. IBM is going all CSI on spammers' asses! Attaboy.

Spring Framework goes "JBoss" with SpringFramework.com and James Strachan's Active* open source projects are following the same path with Protique.

Well, no, not exactly. The documentation will hopefully remain free of charge!

Good luck, guys and keep it up!

I'm currently reading two books, one of which is Selling Without Selling by Carol Super.

Along with all the self-praise you might expect from an American business author, Super mentions how committed she is to what she does:

"I make time every day to read a professional sales magazine such as Selling Power, listen to an audio-tape, or read a business-oriented book on selling. In addition, I read the business section of the New York Times and parts of the Wall Street Journal. On the weekends, I read Newsweek and Time, plus business magazines such as Business Week, Fortune, and Forbes. This commitment to professionalism is essential for success in any field."

Does that sound like overly bragging? It did to me when I read it from the book. However, when I really started thinking about it, that kind of a commitment is not really anything special in the IT world. Many geeks spend hours and hours every day reading technical articles, blogs, and books on their profession. That paragraph sounded like bragging simply because most professionals probably don't do nearly as much, spending their spare time on things not related to their profession.

Beats me, but Amazon.com seems to think they have at least something in common...

(and if you're wondering how the h*** I ended up on that particular page on Amazon, it's all due to Cameron who doesn't get bored talking about portable MP3 equipment)

Jürgen Ahting in the SellingAgile Yahoo! group:

Why should the customer trust the BDUF people to deliver a "changeable" system?
They themselves don't even have trust in the easy changeability of the system during development.

Earlier today, I had a little chat about vocabulary. Business vocabulary. Well, sort of. The whole thing started with me reading the word "salespeople" from a book. I started thinking about which word people use more, "salespeople" or "salesman". You see, in Finnish, we have the word "myyjä", which roughly translates to "seller" -- no reference to gender as the English word "salesman" has, which has relieved us from introducing a politically correct version like "salespeople".

So, what does this have in common with object-oriented design? The connection I made, after a thorough 2-second analysis, was that the powers that be made a bad design decision when crafting the word "salesman". This design decision was to include more information about the object, the salesperson, than was necessary.

Interface over implementation.

Esther has a point (just like Dale has).

Everyone agrees that it's important to show appreciation when appreciation is due. Yet, few people actually do that. I don't do it even remotely enough. In fact, it stings when something reminds me of the fact. I try to be very polite when talking to other people, be it face-to-face or a phone conversation, and always say "thank you" in one way or another. However, that's not showing appreciation. Not really. Saying "thanks" is just what people do so people rarely consider it as "real" appreciation -- even though they value the kindness of the words. I.e. saying "thanks" is good but not nearly enough.

The remarks about rewards != appreciation is also spot-on. Especially if the rewards are monetary. Then again, I've never really seen a company handing out cheques as rewards (if you don't count yearly bonuses as such -- I'm talking about more immediate rewards here).

I just don't get why someone would limit a website to 640 pixels wide these days. Yet, some people still do that. Maybe that particular theme is the default in weblogs.asp.net?

I'll start out by mentioning that Darrell spotted a very nice little article in the latest issue of Better Software Magazine that presents 7 things you can do to make your traditional software project more agile "without going to extremes". I'd like to add that even though you might have one or more of these things in place already, it doesn't hurt to take another look at what you're doing and think of an improvement or two in how they're implemented.

Another useful "checklist" for keeping your project alive and kicking is this blog entry by Mike Mason.

Moving to the world of testing tools, there's a sequel coming for Web Testing in Ruby (WTR). Good news. I've been meaning to look at writing acceptance tests in Ruby for a long time. With this kind of developments going on around me, the pressure is growing and maybe I'll actually do something when it gets high enough :)

Finally, Simon has got some good news for you if you're running a blog on Pebble as I do and are interested in the traffic you're generating.

Jan Newmarch has published a new version of his Guide to Jini Technologies. This ebook has probably helped out the vast majority of those who use Jini today -- and still continues to do exactly that. Great job, Jan!

It's funny how certain things seem to turn up behind every corner. For example, Andy's latest blog entry about self-help being the only help available is very similar to how I used to promote self-reflection as the way to learn new things, by explicitly seeking for new angles to look at what you're doing.

Tim Bray has 42 and counting...

Someone recently mentioned that Cedric's TestNG has a good chance to become "JUnit 4.0" since all development on the core JUnit has been pretty much nonexistent for a long time already. At first, I was skeptic about the idea thinking that TestNG would be too closely associated to Cedric for getting a real community behind it (a serious case of Not Invented Here?). Anyway, I'm slowly starting to believe in what Cedric is doing.

Oracle Corp is apparently launching a cheaper edition of its J2EE application server, Oracle Application Server. It's interesting how some people think $5K per CPU is cheap when the open source alternatives are getting more and more robust...

I hope not, but chapter 8 of Spring Live should!

Tim Bacon's latest brings forth an interesting view on two general approaches to software development.

Brian Button has discovered that background noise isn't that big a deal in the long run.

I'd take a single meeting room dedicated for the whole team over cubicles or private offices any day. Interestingly, I've never really suffered from the background noise although I've heard of a lot of whining about such a thing. Maybe if the guy next to me was listening to Britney Spears on speakers all day...

Hal Macomber posted a nice little story about project management in the construction industry.

TheRegister's recent news article about Newham council signing a 10-year contract with Microsoft included a very, very interesting mention about a certain Microsoft-funded study by CapGemini:

One of the deciding factors for Newham in appointing Microsoft as its strategic partner was an IT audit and analysis carried out by CapGemini. Although CapGemini makes a big noise about being independent from Microsoft, the study was indeed funded by the software firm . One of the main conclusions of its research was that as well as being cheaper than OSS, Microsoft is more secure than the open source alternative.

How low can you go in order to bring in that dollar? It's no secret that all the big consultancies are fighting for the privilege to bend over in front of Microsoft. How long will it take for the public to stop believing these "independent" studies?

To continue the fine tradition of petstores (including one by Sun, one by Clinton Begin using iBatis, a couple of versions using XDoclet, and one by the devil himself), The Prevayler team has come out with Presto, a petstore implementation using Prevayler.

Marty Andrews posted a nice blog entry last month explaining how to speed up those nasty <junit><batchtest></junit>'s by building on the DirectorySuiteBuilder from junit-addons.

Marc Evers pointed me to a systems thinking website that has a very nice and simple introduction to Systems Thinking.

systems-thinking.org is the same website as systems-thinking.net but different from systemsthinking.net and systemsthinking.com. systems-thinking.com is still available ;)

If you're not yet subscribed to the feed for the Pragmatic Automation website, do it now. And that's an order.

Here's a sample of the gems Mike is posting there:
Pragmatic Project Automation Template

Thanks to Ron for sharing us with the wonderful quote from Ralph Johnson:

If schedules were honest then there would be as many underestimates as overestimates. People who work on my house sometimes take more time than they predict and sometime take less. They stay in business because their prices take that into account. They make mistakes, but are honest estimators. If almost all projects are over budget then it shows that estimating is not honest.

-- Ralph Johnson

Yes, it's one of the classics. Well, two of the classics to be accurate.

I can't remember when has TSS published a really funny cartoon but these aren't too bad :)

I just realized that I start out most of my "prototyping" thingies by clicking "New > Other > JUnit TestCase" in Eclipse's File menu. I never bother to create a main() method anymore. I don't know whether this has any significance. I just thought I should write it down.

That is, assuming the next version of Doom/Quake/whatever will support this...

Go read what gardening and software engineering have in common.

Over 100,000, apparently. If you're interested in Google's architecture, this (pdf) should be an interesting read for you.

James Newkirk is looking for a new example to use in his TDD training and is asking for help.

I tried to think of something that would cover all the "requirements" but couldn't come up with anything. I guess the so-called real world problems are both too complex to explain and too simple to display all aspects one would wish for. What do you think?

I know exactly what Johanna is talking about. Nobody uses the kiosks (are they really just 9 months old or is Finland just so much ahead?), mostly because they're too afraid to "risk it". Furthermore, even though the lines would be mile-long, nobody has the guts to go to the kiosk and take the chance that she'd have to go back into the line -- to the end of the line!

It would be so much easier if the airlines would just send the instructions via mail, a week before departure, to give the passengers some time to read them and develop courage to try them out.

Or give significant discounts for using the kiosks.

No, I don't mean within Eclipse. I mean outside of Eclipse.

Andy points us to a hilarious blog...

FYI: J.B. Rainsberger, the author of JUnit Recipes: Practical Methods for Programmer Testing, is currently doing a book promotion at the JavaRanch Big Moose Saloon (in the Testing forum to be more specific).

The 2.0 release of Prevayler is out, in case you're interested.

David Anderson's "Drucker Month" has produced an insightful blog entry on the difference between effectiveness and efficiency. Check it out at http://www.agilemanagement.net/Articles/Weblog/DruckeronEffectiveness.html.

To be more accurate, Xbox is...

My review of The Definitive Guide to SWT and JFace has been published at JavaRanch.

Chris Matts presents a very interesting challenge in his blog entry:

It would be interesting to see if anyone has done some research on the actual versus estimate distributions for normal projects and those developed using test driven development.

Anyone?

Every now and then, one hears about a team somewhere across the globe using audio, video or other kinds of aids to help them in their software development projects. Usually it's related to either documenting design decisions and how the team came to those decisions (video) or to monitoring the builds your continuous integration server pops out every few minutes (audio).

Andy Hunt, one of the Pragmatic Programmers, has written about listening to complex systems in which the idea of using audio for communicating status information is taken to another level. The fundamental idea is to exploit the medium to its full capacity, i.e. making the sound rich and continuous.

That is definitely an intriguing thought. I wonder how well people would get used to the test coverage being reported by a cricket or an owl? Maybe even too well, considering that less is often more. I am not going to just jump into conclusions and claim that we should rush to buy state-of-the-art sound systems to our offices. I do, however, claim that we're currently not using this medium optimally.

My suggestion would be to wire up your environment to sound an alarm when someone checks in, when the continuous integration fails, and when it's time to go home, and experiment to find out where you can still convey useful information through sound effectively. How does that sound?

It looks like Spring is indeed getting traction in the community. People are playing with it, finding the deficiencies (hopefully improving the framework along the way), and there's a constant stream of Spring books coming out. Nice. I really should look more into Spring but I don't feel like learning yet another XML configuration schema. Regardless, what I've seen from Spring is definitely encouraging.

Here's your chance ;)

I just came back from a loooong walk with my nose sporting a new, bright red color. I always burn my nose when it's sunny. Anyway, this is what I wanted to write down:

betavote.com shows a clear trend...

Here. Can't comment on the contents since I didn't really read it, but it looks like a good introduction based on the quick scan I did.