Software

Archived Posts from this Category

Is Agile a blessing or a hoax?

Posted by Yannis Lionis on 04 Jun 2007 | Tagged as: Software

The first time I heard about Agile, I thought it sounded like a load of touchy feely nonsense. Since then I got to practice it, in a really great, open-minded and very capable team, with some members who have been practicing it successfully for a while (we’ve been following the Scrum methodology in particular). I’ve seen the benefits and I can’t imagine going back. It works for the project and it works for the team, and frankly, it seems to me like the best way to work.

However, I’ve seen since then blogs cropping up about how Agile is just a hoax, a fake promise, that’s making a lot of consultants a lot of money but otherwise not doing everyone else any good. Most notable of those was Steve Yegge’s Good Agile, Bad Agile. These views were expressed by bloggers I follow and I believe they generally know what they’re talking about, even if I don’t always agree with them.

So it got me thinking (which is why I read their blogs in the first place): Where lies the truth? Is Agile A Good Thing, or is it a money-making hoax?

I believe the truth lies in the difference between the spirit and the letter of Agile (as with all such things). The spirit of Agile is about self-governing teams, constant customer involvement, team ownership, incremental deliveries and giving-the-customer-what-s/he-really-wants. The letter of the various Agile methodologies is sprints/iterations, stories, standups, estimations, plannings, reviews. So I can understand people’s resentment to the suggestion that keeping to the letter of the law will get you benefits. Introducing daily standups or iterations in your project, while changing nothing else, will yield no results, and the suggestion that it might is absurd. If on the other hand a team is already following the spirit of the law, then they’re already getting the benefits.

Agile is a mindset, not a recipe. Agile practices are there to encourage teams to adopt the correct frame of mind. But make no mistake, the frame of mind is what makes the difference. And it’s not a silver bullet either, it’s just a better way to work and produce software.

“java.lang.OutOfMemoryError: PermGen space” in JBoss

Posted by Yannis Lionis on 01 Jun 2007 | Tagged as: Software

Oh this blasted error. How many times I’ve seen it in JBoss console. How many restarts because of it.

This has been a nuisance for quite a while. Basically what happens is that every time you (re)deploy an application to JBoss, the java process takes up a bit more memory, until after enough redeployments it runs out.

This blog gives a very good explanation of what the PermGen memory error is, how to monitor it and how to modify how much is available for your application.

This however did not solve the problem, as increasing the available PermGen space simply delayed the inevitable. The memory used by JBoss only goes up after each redeployment, so the painful end is unavoidable.

After chasing around the truth in various forums and blogs, each one suggesting a different culprit for the problem (Tomcat, cglib library, the combination of the two, Hibernate, and more) a colleague got a chance at a conference to ask some JBoss guys themselves for an answer. And an answer we got indeed: This problem happens with the Sun JVM. Use another one and it will go away.

So I did. I tried JRockit. And it worked. The problem went away. That simple.

So if you have the same problem, give it a try. It worked for me and it made my day.

It’s not all good or bad

Posted by Yannis Lionis on 08 May 2007 | Tagged as: Software

It’s very typical in a team for people to find some colleagues they like and colleagues they don’t (for one reason or other). But it’s very important to make the same distinction that we must make in all our dealings with other people in life: nobody is all good or all bad.

For example, when someone moves to a new team, they may be impressed with a colleague’s superior technical skills and subconsciously also accept that individual’s views on how the business is ran, or on other colleagues as well. Similarly, a colleague that makes a bad impression on a personal level might cause the individual to be more unaccepting to any technical suggestions. However, someone may very well be capable technically but cynical when it comes to how the business is run, likable but not very capable technically, efficient but ignorant about business and industry issues, etc.

This may seem self-evident, but it’s interesting how often we find people around us or ourselves in fault of this. A team member that makes a suggestion for a new tool or methodology is more often shot down if they have issues with others in the team than if they’re someone everyone likes. A new (usually young and impressionable) member of a team will tend to follow and identify with a senior member, subconsciously idolising them and accepting all their views on technical, business and other issues.

Just as a smart person is not necessarily likable, a likable person is not necessarily capable, a capable person is not necessarily eager and so on, we should apply the same priciples and common sense in our work environment.

Cool SDK

Posted by Yannis Lionis on 18 Apr 2007 | Tagged as: Software

I’ve always been excited about being able write programs that do “cool” things. In my first encounter with programming (in GW-Basic, laugh if you must), I was delighted to find I could manipulate the PC Beep, and started reproducing tunes with it (hey, I was young). Later on I had fun sending emails from my code, playing with text-to-speech, etc. So I had loads of fun working on the Web21c SDK project at BT.

The idea of this project is to give developers inside and outside the company easy access to BT’s capabilities. And when I say easy I mean one line of code.

Every time I hear about “one-line-of-code” magic, I immediately think “so what hoops do I need to jump through before I can write and execute that one line of code?”. So here are the hoops. You need to download the SDK flavour of your choice (there’s .NET, Java, PHP and Python so far). You need to register on the Web21c SDK portal and download your (free) private certificate. That’s it. Not that many hoops really.

What the Web21c SDK does for you, is give you easy access to the services through the library (hence one line of code to do things), and take care of all the security between you and the services (point it to your certificate and it will do all the digital signing for you). If on the other hand you feel like hitting the web services directly, you can do that too (although the digital signing bit won’t be easy).

So you can, for example, write (in Java-land):

com.bt.sdk.sms.Messaging sms = new com.bt.sdk.sms.Messaging();
sms.send(”Hello from the Web21c SDK.”,”mobile_number”);

And you get an sms.

As you’ll see on the website, you can send sms, set up a phone call or a conference call to any phone number in the world. You can also get the location of a mobile device (although that currently only works for BT issued mobiles in the UK), plus a few other services.

You can register and try it out for free (daily usage limits apply), and when the services are released in their live production environment (which should be any time soon), you can build your application on top of them, either as something for yourself or your business, either as a sellable application.

With all these services (and more to come) so easily available, there’s so many different services you could do, especially if you combine them. You could locate your friends, and send an sms to the ones close to you with the address of the nearest pub that offers a happy hour offer. You could send an sms to all responsible parties and set up a conference call between them the second a server or service in your company goes down. You could pick and choose as you want.

Now, I think that’s something cool to be able to do from your code!

Let’s not restart

Posted by Yannis Lionis on 13 Apr 2007 | Tagged as: Software

I was reading Steve Yegge’s post on how most software written today is crap and particularly his point about how rebooting is dying. It got me thinking about how easily we accept things that don’t work properly in the software world. “Let’s just reboot the machine and it will be fine”. “Let’s just restart the program and it will be ok”.

Well, let’s not. It’s bad. Or rather, since we’re all using loads of software other people have written and don’t have a choice, let’s at least try to make the software we can influence better.

I’ve found myself guilty of this in one form or other in many occasions. But it screams of bad design or bad implementation. An application or process that crashes and needs a restart means it got itself in an illegal state, or it’s leaking memory. A test suite that needs to be restarted from the top a couples of times in order to pass means it doesn’t clean up properly. Just like we wouldn’t tolerate a car that stops working and needs to be stopped and restarted, this should be unacceptable.

So I think we should get out of the habit of accepting restarting as normal procedure. Software development may be a relatively new trade, which might explain the existence and acceptance of such bad practices. But let’s try and get it out of our systems.

 

 

DateReminder v1.2

Posted by Yannis Lionis on 12 Apr 2007 | Tagged as: Software

 

One day I got tired of forgetting birthdays and important dates and the few web based applications I tried out for that just didn’t do it for me. So I went and built my own.
Yes, I know there are loads out there, both web based and standalone apps. But I still decided to write it myself because

  • building software is what I do. You wouldn’t be surprised if a carpenter chose to make his own coffee table instead of buying one from IKEA, would you? Granted, they might not build all of their furniture themselves (just like I’m using someone else’s operating system :-)), but anything you can scrape the time for to do yourself is a pleasure
  • this one has some features I didn’t find anywhere else

 

So what’s so good about it?

Here’s what I’ve put in that makes a whole load of difference to me:

  • Nameday support. (A nameday is the day of the celebration of the Saint whose name you have, i.e. on St. George’s day it’s the nameday of everyone called George. In Greece, it’s almost as big as your birthday, so you get one more excuse in the year to celebrate!)
  • Multiple reminders. For some dates, I just want a reminder on the day so I remember to send an sms to someone. For others, I may want an earlier reminder to buy a gift. Or both. So this has as many reminders as I want, fully configurable per case, while I can still have a hassle-free default.
  • Reminders on Friday for the weekend. I don’t always turn my home computer on in the weekend. I run this on my work PC, and get the weekend’s reminders on Friday.

 

If you want to give it a try

Here it is: DateReminder v1.2. Leave a comment to tell me what you like or hate about it.

« Previous Page