Archive for January, 2007

Open Source Can’t Blame Piracy

January 30th, 2007

I recently read an article by John Knight in which he slates piracy as a major factor for the poor performance of open source software. Personally – I couldn’t disagree more. Open source can not blame its poor performance on piracy and when it does I feel its nothing more than a scape goat for poor quality. If the ONLY ’selling’ point of a piece of open source software is the fact its free – then it needs to take a long look at its self and say whether its even worth the time it takes to install.

There are many open source projects out there that compete with their paid-for or even mutually free counterparts based on their merits alone – rather than their price tag.

Ubuntu & Mepis – Ease of use, speed, excellent package management, configurability.
Firefox – Fast, slick, extendable, great compatibility & standards support.

Just two examples of free & open source software that manage to take on their proprietary cousins.

John uses Open Office as one of his examples in the piece and I can’t help but feel he’s chosen a perfect one to make my point. Open Office is great – if you aren’t expecting much. What he doesn’t seem to realise is that many people likely have MS Office at the workplace. If they were to then use OpenOffice at home they’d be lacking many of the standard features they’d become used to. OpenOffice doesn’t yet cut it and the fact its free is pretty much its only selling point right now (apart from Linux users who have no choice). If Open Office can’t compete – then maybe the developers need to work harder on creating a competitive product. A product with more than just its price tag to sell it.

Practice Makes Perfect

January 26th, 2007

Its always good to hone your programming skills outside of your usual day-to-day job with a selection of different challenges.  That’s why I’ve compiled a list of games, quizes and challenge sites for programmers which are useful for any language.

1. Code Kata

Created by Dave Thomas of the Pragmatic Programmers this is a regular blog posting of challenges with a variety of skill levels and challenging various areas.  Well worth a look.

2.  Code Golf

Relatively new but already one of the best open challenge sites on the net.  With a good selection and growing rapidly it promises to be great for beginners and advanced coders alike.

3.  Ruby Quiz

Based on the Perl quizzes of old the Ruby Quiz has been going a while now and relies on quiz submissions by members of the mailing list which are then compiled and sent out with a time limit on solving it and responding with the answer.  All the past challenges are available on the site.

4. The Python Challenge

Not quite as nicely organised and well documented as the Ruby Quiz as this provides challenges for Python programmers in a series of ever-increasing difficulty.

5. Top Coder

One of the oldest and best especially for oldschool challenges and core algorithm programming using lower level languages like C, C++, Java, etc.

If anyone knows of any others then please leave a comment and I’ll add it to the list.

10 Project Motivation Tips

January 18th, 2007

I don’t know about you but I often used to find I had loads of energy at the beginning of a project and then at 80-90% completion I see myself flagging. I feel bored, frustrated and the project (if not impreritive) would fall by the wayside. Numerous are the projects of my collegues which remain unfinished. Not recently though and the reasons for that are a few ideas and tips I’ve had from a variety of sources so here is my quickfire distilled listing of tips on completing a project:

1. Visualise the Completed Product

Make it a vivid image in your mind and hear the responses from your (obviously) happy users – feel the good vibes.

2. Don’t Procrastinate

Easier done than said!! Idling about isn’t a problem as its times of relaxed thought that produce the greatest creativity. Its when you know, feel and believe you should be getting on with the project but keep putting it off that you fall into a rut. You develop tension and end up resenting the whole product. If you feel tired or just need a break – then have one, but then get back to the task at hand.

3. Switch Gears

Remember that coding isn’t the only activity in a project. There’s planning, generating ideas, talking it through with people. Often you get stuck in the trenches and forget the world so switch gears!

4.Use a different editor/IDE.

You wouldn’t believe the effect this has had on my productivity. A change of environment whether it be your desk, monitor, office or even your IDE can have a massive impact on the way you feel and therefore your motivation. In the process of tinkering with your new IDE You’ll end up enjoying the work again and you’ll get a ’second wind’.

5. Talk to the Customer.

I know in the industry there’s an epidemic of pasty programmers who find contact with other human beings a frightening or disturbing process but there’s nothing that gets the passion moving and blood pumping like an enthusiastic chat with the customer about the project.

6. Be Positive.

No matter what, come rain or shine you have to remain positive. If you remain positive the others in your team will bounce off that and it’ll make them positive. Being surrounded by positive people will make you feel positive and give you a drive and sense of purpose in your whole outlook. Thinking positive means talking, walking, behaving, feeling, seeing, hearing nothing but positivity. A user criticises you? Take it on the chin and sort it out. It will help the product and you grow. Getting stuck in a rut is all about losing sight of the final goal and losing faith in its fruition.

7. Release at Deadline Regardless

Not always going to work especially if its a business critical system. However, nothing spurs development more than releasing an incomplete buggy system to end users as ‘beta’ and then requesting feedback. That feedback will act as a catalyst to further development. Its easy to ignore your own inner voice to get on but an insistent user is harder to ignore.

8. Encourage Criticism

Many programmers suffer from a huge chip on their shoulder. They don’t want their code criticising and if anyone does its put down to user or managerial stupidity. However, the more criticism you get the better the system. The better the system the happier the users. Don’t expect praise though – you must act selflessly to take all sugesstions, comment and critique then set about making the rough into a diamond.

9. Enjoy It!

If you don’t have any enthusiasm for a project from the outset you never will. If it fails to inspire you or get you into the groove then you’ll never make it a success. You have to have some connection or desire to do the project – even if only for a short time. If you’re in this position then maybe you’re in the wrong job?

10. Break the Project Up

If you look at the edifice of your project and feel daunted then its best to concentrate on the component parts. Complete them in a methodical manner and just keep truckin’.

Ten has turned into 11.

11. Reward Yourself.

We are after all, animals and as animals we have habits and learned behaviours. When you complete a certain task in the project reward yourself. Plan a reward for the completion of the project too – a new monitor, book, holiday, meal, anything you want but only give it to yourself at the completion of the project. That way you’ll be learning and training a habit of forward momentum and completion. Nothing will stop you once you’re habits are forward moving and active!

If you had any of your own then leave a comment – I’d love to hear more!