Francis’ Weblog :: A journey of 1000 miles starts with a single step

Francis’ Weblog

Code / Peer Reviews version 2

December 11th, 2006

A collegue asked me about code reviews. I mentioned that I had written a white paper on code reviews for a company some time ago and after re-reading it, thought it should be given a fresh lick of paint.

I posted it earlier this year to my blog but definatly needed a bit of work… so here it is:

Peer Reviews

Peer review — an activity in which people other than the author of a software deliverable examine it for defects and improvement opportunities.

Its one of the most powerful software quality tools available. Peer review methods include inspections, walkthroughs, peer desk checks, and other similar activities. After experiencing the benefits of peer reviews for nearly ten years, I would think twice if I had to work in a team that did not perform them. That said peer reviews can really benefit a project especially in this age of “agile programming”. BUT and it’s a big but. If they are not run correctly they can go spectacularly wrong! And really damage a development project.

Why do a peer review?

The projects that I have found peer reviews to be the most valuable have been the projects that have little documentation, no really formalised development process, or are iterative projects where the documentation never keeps up with the actual project or isn’t in depth enough. This is because the peer review acts as:

- Training

- Risk management

- Playing to everyone’s strengths

- Quality Assurance

-

But if that hasn’t turned you around just take a look at the statistics:

.. software testing alone has limited effectiveness — the average defect detection rate is only 25 percent for unit testing, 35 percent for function testing, and 45 percent for integration testing. In contrast, the average effectiveness of design and code inspections are 55 and 60 percent. Case studies of review results have been impressive:

  • In a software-maintenance organization, 55 percent of one-line maintenance changes were in error before code reviews were introduced. After reviews were introduced, only 2 percent of the changes were in error. When all changes were considered, 95 percent were correct the first time after reviews were introduced. Before reviews were introduced, under 20 percent were correct the first time.
  • In a group of 11 programs developed by the same group of people, the first 5 were developed without reviews. The remaining 6 were developed with reviews. After all the programs were released to production, the first 5 had an average of 4.5 errors per 100 lines of code. The 6 that had been inspected had an average of only 0.82 errors per 100. Reviews cut the errors by over 80 percent.
  • The Aetna Insurance Company found 82 percent of the errors in a program by using inspections and was able to decrease its development resources by 20 percent.
  • IBM’s 500,000 line Orbit project used 11 levels of inspections. It was delivered early and had only about 1 percent of the errors that would normally be expected.
  • A study of an organization at AT&T with more than 200 people reported a 14 percent increase in productivity and a 90 percent decrease in defects after the organization introduced reviews.
  • Jet Propulsion Laboratories estimates that it saves about $25,000 per inspection by finding and fixing defects at an early stage.

Code Complete
By Steve McConnell

[ Steves book Code Complete is HIGHLY recommended to anyone who codes, full over very useful information ]

Training

As you are going through the review the junior developers are learning from the developers with decades of experience. Introducing the junior developers to advanced concepts that they wouldn’t usually have access too, therefore bringing there level of coding up.

Risk Management

Problems and design flaws come up before its too late. And as a manager you get a chance to see how developers who work for you think.

The risk of the key people who wrote the code going on holiday / leaving taking the knowledge of how the system works is reduced because everyone knows about the code and how it works, or at least knows where to start if something goes wrong.

This of course is not as good as a documented system, but I’ve found it useful when management can’t see the reasons for spending time on documentation, especially if its out of date the moment its written.

Playing to everyone’s strengths

There maybe people on the team that have strengths in different areas of development; Security, databases/SQL, OO patterns etc. This then allows to let them have their say in to improve the code and also pass the knowledge to other developers.

Quality Assurance

The obvious quality assurance that will come from developers peer reviewing the code. More manageable code, more readable, less bugs!

But there are many others, giving the developers the chance to talk about their code in front of their peers to build up their “public speaking” experience, empowering the developer by giving them responsibility for identifying specific code issues, the list goes on…

How to run a peer review:

The reviews I’ve had in the past we have given specific roles to people in each review meeting:

Moderator - This really needs to be someone “grownup”. One person with authority who isn’t going to be commenting directly on the code. A referee who has the power and shut someone down if need be. Developers take code personally and it’s important to remember that! The moderators prime role is to keep the review moving fast enough to be productive but slow enough to find the most issues. They would also distribute design or code to be reviewed and an inspection checklist, setting up the meeting, reporting inspection results and following up on any actions.

Author - Quite obvious, the coder of the code

Reviewer - Anyone who has an interest in the code. The reviewers take a look at the code before the meeting and discuss any bugs or questions during the meeting.

Documenter - This could be the role of the moderator if the group is small, but should not be the role of the author or reviewer (as its got a bit of a conflict of interest). The documenters role is to record the bugs/issues and the assignments of any actions during the review meeting.

Management - No way, this is purely a technical review so the focus is technical not political. Managers could receive a review report (list of actions from the review or notes on the checklist) very simple report which can be written during the meeting. But this shouldn’t be used to evaluate developers in any way.

REVIEW RULES:
I’ve followed a number of rules in the past for the review:

- To have checklists which focus the reviewers attention on areas which have been problems in the past.

- The emphasis is on bug/issue detection, not correction.

- Reviewers prepare for the review meeting beforehand and arrive with a list of issues/questions.

- Information is passed on to the next review to improve future reviews (eg: adding/removing questions on the checklist)

- The meeting is for technical people and not management.

- Under no circumstances should the review results be used for performance appraisals, its just like killing the goose that lays the golden eggs. It doesn’t make sense anyway performance should be based on final products/projects and not work that isn’t finished. Another reason why there is no management. It just means everyone is a lot more free to say what they think.

- The meeting should have a minimum 3 people and maximum of 6 people; any bigger and the review gets too big to manage and ends up becoming a hindrance.

GENERAL PROCEDURE FOR THE REVIEW:

In the past I’ve broken reviews down into 9 possible stages but its really up to you how things work. Have a play at different ways of running the review until it fits in to your organisation:

Planning: The author gives the code/design to the moderator. The moderator then distributes the code to the people they think should review it including the checklist which focuses the attention of the reviewers so they don’t waste too much time looking at the code. Usually the developer has developed using the checklist which highlights the key corporate issues.

Overview (optional): The overview is used only if the reviewers aren’t familiar with the project. The author will spend some time just describing the project. This is generally a dangerous practice because the reviewer could end up glossing over issues. The design or code should speak for itself, the overview shouldn’t speak for it as that’s what the whole exercise is all about.

Preparation: Each reviewer works alone to become familiar with the design or code. The reviewers use the checklist. For every 700 lines of code the reviewer “should” spend about an hour but its really down to what works best in the organisation.

If you provide printouts for the review meeting make sure they have page numbers and line numbers.

One company I worked for we even had an additional step during preparation. That was to check the code with a static code analysis tool (PMD for Java development) to reduce the meeting time down by pre-catching issues. Also the static code checkers tend to catch a lot of important issues that many developers miss.

Review Meeting: To start the review meeting usually the author reads the code/design. They will explain all the logic including each branch loop and each logical structure/object etc… while they are talking the documenter records any issues/bugs but all discussion of the issue stops as soon as they have been recognised. The documenter also notes the type and severity of the issue and the review moves on.

As I said above the meeting needs to keep moving otherwise you’ll loose concentration. So, depending on the project this shouldn’t take longer than 30mins/1hr. Everything needs to stay focused, I worked in one place where the group was banned from even discussing weather an issue really was an issue because they assumed that if one person is confused enough to think an issue existed then it was an issue and so the design, code or documentation needs to be clarified.

Another good idea is to do a few peer reviews at the same time as long as people are focused. Sometimes this isn’t always possible but having three or four people go the same day can really take the edge off. If you put your most good natured, thick skinned, or well liked developer first you can set the tone of academic civility that will keep everything smooth and help eliminate passionate discussions between developers.

Developers will find many faults and list them gleefully, they feel they have to but its up to the moderator to keep everything in task. I also find that people fresh out of uni or college are very self confident and ready to argue. They also take things a lot more personally and you can end up in long drawn out discussions.

Inspection report: The moderator creates a review report usually during the meeting that lists each defect including its type and severity. At this point you could just put them straight into a issue tracking system while in the meeting as this will save time, and the report can be a list of these bugs. This therefore helps to ensure all the issues will be corrected and can also be used to develop the checklist which will in time highlight problems in coding etc… it can also give a good indication on the number of issues/bugs found. From the report you can find out the time spent on the issues over time which can be used to prove the usefulness of a review by giving hard data otherwise you are just left with saying reviews are good … because they are! This is also a good guide to see if they are working or not.

Rework: The moderator assigns issues/actions out to someone (usually the author unless its a larger project) for repair and the assignee resolves each defect on the list.

Follow-up: The moderator just checks to see how the issues/actions are being carried out.

Third-hour meeting: The peer review or review is just that… a review so the people in the meeting shouldn’t be discussing solutions, but of course you will, so its better for those who wish to discuss different solutions to do this at another meeting either straight after the review meeting or at another time, this also allows it to be a bit less formal and get more people involved and also doesn’t tie up other peoples time who are not interested.

Fine-tuning the review: Hopefully over time the checklist will become more refined and things will be added and things will be dropped. You should find the same common issues appearing on the checklist and you can work on refining how you work to fix them.

The Checklist:
As mentioned above this is used to track common issues so the developers use this as a guide when developing. It shouldn’t exceed more than one sheet of paper, an example of one is below, based on a PHP project:

Peer Review Checklist
1. Are the standard headers / footers being used?
2. Are functional javaDoc / phpDoc comments being used? And exports are correct
3. Is there enough documentation to work out what the system is doing?
4. Is there enough error handling relating to the importance of the work?
5. Does the code follow naming conventions?
6. Does the code follow formatting conventions (bracketing)?
7. No Magic Numbers/Text
8. Any duplicate code or code which could be marked as reusable in the repository?.
9. Removal of code which is not being used.


An Example of the Review Notes:
This was of a unified login system. A simple system to allow a single point sign-on to login to an ASP and PHP based system:



Peer Review
23/03/2004

Uni-Login Script Review

Moderator: Mr X
Author: James X (PHP), Peter Y (Architect)
Reviewer: Alistair X (Senior DB)
Reviewer: John X (Java Developer)
Reviewer: Simon X (Technical Documentation)
Reviewer: Tim X


Reviewers: Please make sure you prepare for the review meeting beforehand so you can become familiar with the code and arrive with a list of issues/questions and make use of the Checklist below.
Author: In the meeting you will be expected to read the code/design and explain all logic including each branch loop and each logical structure/object.

Code to be Reviewed:
http://internal-cvs/cvs/cvs.php/Common_SQL/LMSUniLogout.asp
http://internal-cvs/cvs/cvs.php/Common_SQL/LMSUnifier.asp
http://internal-cvs/cvs/cvs.php/Common_SQL/LMSkeepalive.asp
http://internal-cvs/cvs/cvs.php/forumsUnifier.php
http://internal-cvs/cvs/cvs.php/account.php

Related Files:
S:\web-sw development\Documentation\Code Reviews\Code Review Checklist.doc
S:\web-sw development\Documentation\Code Reviews\Uni-Login Script.doc

Results From Review:
ForumsUnifier.asp
ACTION:
Missing Header/Footer
ACTION: ASP Comments (including related files) missing
ACTION: Use include to lmskeepalive.asp rather than static code

LMSUniLogout.asp
ACTION: Header/Footer missing
ACTION: Point to gatekeeper (update link)

ForumsUnifier.php
ACTION: Header/Footer Missing
ACTION: Not enough documentation
ACTION: Remove code which is not being used (Line 15,17,34 to 40, 41)

account.php
ACTION: Header/Footer needs to be updated with latest versions, with more information
ACTION: Line 247: Needs a header refresh to index.php and remove acountDetails() reference and function.
ACTION: PHPDoc comments missing.
ACTION: Line 97 – 99, 229 comment removal
ACTION: Lines: 127 to 171; Remove echo’s and drop out of php instead.
ACTION: Line 113; Remove magic numbers
ACTION: Line 114, 113; Remove rand functionality
ACTION: Line 212; replace “relevant” with “Company Systems”
ACTION: Line 218; change to “Back to website.com”

CheckList Items Added:
9. Any duplicate code should be put in a separate module for reusability.
10. Removal of code which is not being used.

Duration: 1 Hour

====

Google Code, Vista and a whole lot of fire

October 7th, 2006

Google has launched Google Code Search. I think you can guess what it does :) interesting … thanks to Rob for the link! I do like the the feature where you can hit ‘p’ or ‘n’ to go to the previous or next search word. i did wonder why they created Google Hosting (actually created with one of the founders of sourceforge.net).

It is interesting that this week Google Execs this week told their developers to stop creating so many applications and now look at adding features to the existing applications. Also to concentrate on getting them more integrated. It is definatly needed. Yes the spreadsheets app is good but I wouldn’t use it. I think if Google should go towards the idea of ThinkFreeOfice, offer a large amount of space to save files I think they can really get into the thin client integrated enterprise space. Create and edit any of your files in word, excel, powerpoint, calendar and email and allow them to be shared to whoever you want at any time. Powerful! :) Oh and if there was a calender integration for Outlook, i’d use it! …

Windows Vista RC2 has been released for anyone to download it! It will be the last release before it goes into production. Here are some screenshots of Vista. Its nice… very Mac like :)

Firefox 2 RC2 has been released - quite a few new features but its more stable, i’m hoping they have fixed the memory leaks which seem to plage me!

Graham Technology

September 1st, 2006

Well I’ve just signed a contract with Graham Technology a business process managment consultancy (ok its sitting on my desk signed by them, but I thought I’d send this blog out before I get media gagged). I start in a month working on a project in Auckland, New Zealand. I will be standing in as Team Lead for a couple of months until a team leader is found and then I will be project manager looking after a couple of Auckland based projects.

They specialise in contact centre systems and services, but they go a couple of steps further than a lot of the major contact centre systems (Oracle, Siebel, Peoplesoft, SAP). Their product can fit 100% into a companies business processes. It has a SOA based architecture to allow web, SMS, Interactive TV etc etc interfaces. The client I will be working with in Auckland is a very company looking at making all their services self service. I’m quite looking forward to it. I’m off to Melbourne later in the month to meet the team over there and do a spot of training on there contact centre system GTx.

Code Reviews are so useful

June 13th, 2006

A was talking to a project manager friend a couple of days ago and he was saying how the company he was working with at that moment was being your typical small development company. Little documentation, having to fix the same bugs over and over again and general code thrashing. I mentioned Code Reviews and he hadn’t used them as a means

Knowledge transfer (training):
No one developer knows everything or maybe only a couple of developers know how the system works inside and out. The code reviews can act as a way of spreading the knowledge of the system around the room. Making other developers aware of new updates to the system and how they work. So if something does go wrong they at least know roughtly where to look.

For example if you have an expert database guru or someone that is more knowledgeable on systems security, their input can increase the understanding of the other developers and help pull the no so knowledable developers up…

Even just developers talking and saying “Oh I would have fixed that problem but doing x y and z” increases understanding so that next time maybe they will try to tackle a problem in a more efficiant way.

Risk Management:
There have been very few companies that I have worked for where development documentation of a system has been “uptodate”. The only documentation that every seems to be the most correct is the user documentation, internal documentation? well thats another thing altogether. The moment documentation has been written it usually becomes out of date in no time at all. So in the end only the developer who developed the software unit/class etc knows really whats going on and therefore you get the all eggs in one basket problem. This was very real to one company I worked for when a developer went on holiday and wasn’t contactable. In a code review everyone see how things work.

… the list goes on and on. Code security, other developers seeing a potential security hole in anothers, more manageable readable code etc…

Ok now the nitty gritty, how to do an effective Code Review…

Firstly I don’t like the phrase “Code Review” it usually scares off developers…. So your going to look at my code and criticise it! I’ve called it a Weekly Project Review or Development Review in the past.

I’ve always done a review in the form of a meeting:


REVIEW MEETING STRUCTURE:
The reviews i’ve had in the past we have given specific roles to people in each review meeting:

Moderator - Their prime role is to keep the review moving fast enough to be productive but slow enough to find the most issues. They would also distribute design or code to be reviewed and an inspection checklist, setting up the meeting, reporting inspection results and following up on any actions.

Author - Quite obvious, the coder of the code :)

Reviewer - Anyone who has an interest in the code. The reviewers take a look at the code before the meeting and discuss any bugs or questions during the meeting.

Documentor - This could be the role of the moderator if the group is small, but should not be the role of the author or reviewer (as its got a bit of a conflict of interest). The documenters role is to record the bugs/issues and the assignments of any actions during the review meeting.

Management - No way, this is purely a technical review so the focus is technical not political. Managers could receive a review report (list of actions from the review or notes on the checklist) very simple report which can be written during the meeting. But this shouldn’t be used to evaulate developers in any way.


REVIEW RULES:

I’ve followed a number of rules in the past for the review:

* To have checklists which focus the reviewers attention on areas which have been problems in the past.

* The emphasis is on bug/issue detection, not correction.

* Reviewers prepare for the review meeting beforehand and arrive with a list of issues/questions.

* Information is passed on to the next review to improve future reviews (eg: adding/removing questions on the checklist)

* The meeting is for technical people and not management.

* Under no circumstances should the review results be used for performance appraisals, its just like killing the goose that lays the golden eggs. It doesn’t make sense anyway performance should be based on final products/projects and not work that isn’t finished. Another reason why there is no management :) It just means everyone is a lot more free to say what they think.

* The meeting should have a minimum 3 people and maximum of 6 people; any bigger and the review gets too big to manage and ends up becoming a hindrance.


GENERAL PROCEDURE FOR THE REVIEW:

Ok in the past i’ve broken reviews down into 9 possible stages:

Planning: The author gives the code/design to the moderator. The moderator then distributes the code to the people they think should review it including the checklist which focuses the attention of the reviewers so they don’t waste too much time looking at the code.

Overview (optional): The overview is used only if the reviewers aren’t familiar with the project. The author will spend some time just describing the project. This is generally a dangerous practice because the reviewer could end up glossing over issues. The design or code should speak for itself, the overview shouldn’t speak for it as that’s what the whole exercise is all about.

Preparation: Each reviewer works alone to become familiar with the design or code. The reviewers use the checklist. For every 700 lines of code the reviewer “should” spend about an hour but its really down to what works best in the organisation.

Review Meeting: To start the review meeting usually the author reads the code/design. They will explain all the logic including each branch loop and each logical structure/object etc… while they are talking the documenter records any issues/bugs but all discussion of the issue stops as soon as they have been recognised. The documenter also notes the type and severity of the issue and the review moves on.

As I said above the meeting needs to keep moving otherwise you’ll loose concentration. So, depending on the project this shouldn’t take longer than 30mins/1hr. Everything needs to stay focused, I worked in one place where the group was banned from even discussing weather an issue really was an issue because they assumed that if one person is confused enough to think an issue existed then it was an issue and so the design, code or documentation needs to be clarified.

Inspection report: The moderator creates a review report usually during the meeting that lists each defect including its type and severity. At this point you could just put them straight into a bugtracking system while in the meeting as this will save time, and the report can be a list of these bugs. This therefore helps to ensure all the issues will be corrected and can also be used to develop the checklist which will in time highlight problems in coding etc and can help when creating risk registers… it can also give a good indication on the number of issues/bugs found. From the report you can find out the time spent on the issues over time which can be used to prove the usefulness of a review by giving hard data otherwise you are just left with saying reviews are good … because they are! This is also a good guide to see if they are working or not. Some people generally prefer end testing rather than reviews and it maybe that you will have to modify or even abandon the reviews. It depends on if it works in your company.

Rework: The moderator assigns issues/actions out to someone (usually the author unless its a larger project) for repair and the assignee resolves each defect on the list.

Follow-up: The moderator just checks to see how the issues/actions are being carried out.

Third-hour meeting: The code review or review is just that… a review so the people in the meeting shouldn’t be discussing solutions, but of course we will, so its better for those who wish to discuss different solutions to do this at another meeting either straight after the review meeting or at another time, this also allows it to be a bit less formal and get more people involved .

Fine-tuning the review: Hopefully over time the checklist will become more refined and things will be added and things will be dropped. We should find the same common issues appearing on the checklist and we can work on refining how we work to fix them. The checklist should be short and sweet so max of one page.

The Checklist:
As mentioned above this is used to track common issues so the developers use this as a guide when developing. It shouldn’t exceed more than one sheet of paper, an example of one is below, based on a PHP project:


Code Review Checklist
1. (Are there line numbers on all code printouts?)
2. Are the standard headers / footers being used?
3. Are functional javaDoc / phpDoc comments being used?
4. Is there enough documentation to work out what the system is doing?
5. Is there enough error handling, relating to the importance of the work?
6. Does the code follow naming conventions?
7. Does the code follow formatting conventions (bracketing)?
8. No Magic Numbers/Text
9. Any duplicate code should be put in a separate module for reusability.
10. Removal of code which is not being used.


An Example of the Review Notes:
This was of a unified login system. A simple system to allow a single point sign-on to login to an ASP and PHP based system:

Code Review
23/03/2004

Uni-Login Script Review

Moderator: Mr X
Author: James X (PHP), Peter Y (Architect)
Reviewer: Alistair X (Senior DB)
Reviewer: John X (Java Developer)
Reviewer: Simon X (Technical Documentation)
Reviewer: Tim X
Reviewers: Please make sure you prepare for the review meeting beforehand so you can become familiar with the code and arrive with a list of issues/questions and make use of the Checklist below.
Author: In the meeting you will be expected to read the code/design and explain all logic including each branch loop and each logical structure/object.

Code to be Reviewed:
http://internal-cvs/cvs/cvs.php/Common_SQL/LMSUniLogout.asp
http://internal-cvs/cvs/cvs.php/Common_SQL/LMSUnifier.asp
http://internal-cvs/cvs/cvs.php/Common_SQL/LMSkeepalive.asp
http://internal-cvs/cvs/cvs.php/forumsUnifier.php
http://internal-cvs/cvs/cvs.php/account.php

Related Files:
S:\web-sw development\Documentation\Code Reviews\Code Review Checklist.doc
S:\web-sw development\Documentation\Code Reviews\Uni-Login Script.doc

Results From Review:
ForumsUnifier.asp
ACTION:
Missing Header/Footer
ACTION: ASP Comments (including related files) missing
ACTION: Use include to lmskeepalive.asp rather than static code

LMSUniLogout.asp
ACTION:
Header/Footer missing
ACTION: Point to gatekeeper (update link)

ForumsUnifier.php
ACTION:
Header/Footer Missing
ACTION: Not enough documentation
ACTION: Remove code which is not being used (Line 15,17,34 to 40, 41)

account.php
ACTION:
Header/Footer needs to be updated with latest versions, with more information
ACTION: Line 247: Needs a header refresh to index.php and remove acountDetails() reference and function.
ACTION: PHPDoc comments missing.
ACTION: Line 97 – 99, 229 comment removal
ACTION: Lines: 127 to 171; Remove echo’s and drop out of php instead.
ACTION: Line 113; Remove magic numbers
ACTION: Line 114, 113; Remove rand functionality
ACTION: Line 212; replace “relevant” with “NCALT Systems”
ACTION: Line 218; change to “Back to NCALT.com”

CheckList Items Added:
9. Any duplicate code should be put in a separate module for reusability.
10. Removal of code which is not being used.

Duration: 1 Hour

Learn twice as much by just picking the correct seat in the class!

June 13th, 2006

Laptop in bits

Sorry I haven’t posted for a while I had a small problem with my laptop (I think the photo shows you why!). They always say things come in threes. My laptop harddisk died on me last week, I had a loverly time running around Sydney trying to find a replacement hard disk. I’ve spent the last week trying to recover my data, that of course I had carefully backed up! :) ok most of it but not all!

I’m sure everyone knows about The Universal Law of Gravitation, but the same thing can be shown in class rooms. You may be witness to The Second law of Gravitation.

“Students will gravitate towards the back of the class room. The seats in front fill up last.”

The only reason I think that this happens is so that the students don’t get picked out by the tutor or just don’t want to get eye balled by the tutor. But I generally prefer to be at the front. Less distractions on whats going on and also its a lot harder to dig out a book when you get bored :).

It turns out that if you sit at the front or down the centre of the class your more likely to retain more information. Research shows that people placed randomly in the front and down the centre of the room will retain not just 10% more infromation but almost twice as much!

At Uni I remember a mate of mine who sat right at the front of the lecture hall. Unfortunatly for him he fell asleep. The lecturer then walked up to him and slapped the table next to his sleeping head. He awoke to see the entire lecture hall looking at him. From that day on my mate religously stayed at the back of the lecture hall, for all his lectures. If only the lecturer knew that that one incident could have reduced my mates learning capacity by nearly 50%!

Instructor
57% 61% 57%
37% 54% 37%
41% 51% 41%
31% 48% 31%

How to snowboard for free in Austria
This is a clip about how a couple of snow bums stayed in Austria (one of the most expensive resorts in Europe) for the season for free. I especially like the ketchup soup!

London Digital Compositing Changeover & Topcoder

May 12th, 2006

Its come to that time in the year when everyone in the visual effects industry finishes the films they are working on and goes on holiday! Ready for the next lot of films to be worked on in the next month or so. Effects houses are going to start looking for new talent over the coming months. So all my compositing mates time to start looking for new companies to work for!

Found this cool site www.topcoder.com, the basic premis is that topcoder put up a request for a component to be built and you supply a design or code for it. It then gets reviewed and if it is passed you get the dosh. topcoder then uses the code in one of their client projects and put the code in their repository for everyone to download and use. Found one Guy who calls himself adic and he’s made over $81,000, kinda crazy money.

Google’s lost the love but gained a calendar

April 21st, 2006

Ok haven’t posted in a while, and since my last post i’ve been duped by Googles April Fools joke… it was good tho!! Its worth a check out Google Romance quite funny :) and I was wondering what on earth they were playing at! :)

BUT Google have launched another great web app “Google Calendar“. It looks quite good, this is the second project since gmail that directly completes with an existing Microsoft exterprise product Exchange because you can share you calendar with any other people on Google! Google is also making Outlook plugins for it and also integration into gmail so that if you get an email saying “Hi francis do you want to meet up on thursday for a pint at the kings head” gmail scrapes the email and turns it into a calendar item that you can put straight into your calendar! This is cool stuff :) The only thing that is a little worrying is the privacy concerns, the amount of info google will have on people, their emails, calendar and if the rumours prove correct with GoogleDrive then your personal files as well.


Heres a couple of articles i’ve found recently which are quite interesting. Also a quick Ruby on Rails tutorial.
The State of the Web.
Ruby on Rails Tutorial.
Password Cracking Times.

Free Oracle, Pamela for Skype, my first computer

April 4th, 2006

The London eCommerce market is booming at the moment. The last couple of weeks my phone has been red hot from clients wishing to either upgrade there site, or to completley rebuild it! I seem to be turning down a lot more people than usual. Even the people i’ve been passing them on to are too busy.

Oracle has launched Oracle Express Edition (XE) which is basically Oracle 10g database for windows and linux. Its a free version of Oracle with only a couple of limitations. Databases cannot be bigger than 4GB and that it will only use up to 1gb of memory and 1 cpu. Which IMH is great because it stops it from taking over your entire machine as Oracle seems to do. I think its obvious that this release is an attempt to get the MySQL/Open Source users over to Oracle and then getting them to pay for a license when they blast through 4GB of database. BUT the BIG improvement for linux. It used to be a total pain to install Oracle under linux, adding users here, groups their.. but now you just answer a couple of questions and bingo… done.

If you use Skype a lot i’ve found Pamela, its quite a nice extension to Skype which allows you to record conversations and setup a “Press 1 for x, Press 2 for y” type thing, you can also get it to create podcast xml files of recordings you have made but the later requires that you register it, but apart from that its free :)

I’ve been kinda interested in the battle between Flash and the Java VM over the last couple of weeks. The Java VM has never really taken off (I think manly because it takes so long to load! :)) but once Sun get openGL working in the VM I think Java will take over Flash… maybe :) Just think, quake running on a Java VM in your browser. More and more good VM services are cropping up like The Switchboard which is an internet VOIP service. Maybe I should be learning Flex just incase? :)
Well I haven’t re-installed my lappy for blinking ages and I’ve been pondering if I should or not… but just don’t have the time at the moment so I’ve just found a great little app called JDiskReport. It basically looks at your machine and hunts out large applications or even large files that you have put in random directories which are eating up disk space for no apparent reason and gives you a graphical breakdown. Anyway check it out its a freeware java proggy. My laptop is a litter clearer now :)

Ok remember when you got your first computer? Well … hmmm… I don’t think I was that excited. But then it was BBC Electron hand me down :) with the expansion pack on the back so you got a lpt printer port on the back! With the tape player which you had to get the volume exactly right or the games wouldn’t load… the good old days :)

Oh and have to leave you with this… yes, Simpsons is to be made into a movie :) and you thought that the repeats on sky were getting anonying :) hoping its good tho!

Anyway me off to bed.. cya.

Programming head to head…

March 29th, 2006

About two weeks ago I was pulled in to help out a an extranet project (for a famous battery manufacturer) which really just needed a push in the right direction. Not enough design of the project was done in the early stages which meant some quite major issues were not identified until late on in the project. This therefore meant a load of code had to be re-written. Just even a little more design work or better prototyping could have figured it out … anyway gripe over :)

My next project is just a brief stint working on an eCommerce site for a couple of weeks. At the same time working on a travel site I help setup: www.qwertytravel.com. I’m going to see if I can improve it by putting a bit more “Web 2.0″ stuff into it. I’m currently looking at google maps and a JSP API (http://www.lamatek.com/GoogleMaps/) Google Maps is just great, Its quite cool technology. I do think that people have gone a bit “Web 2.0″ mad… Its not new technology its just I think the internet is in the “second coming” stage. Its become an everyday resource which people use without thinking about it… ok some people :) but some compared with the world population is a lot :)
Just found another good podcast for techies, its language independant and is focused on software engineering. Its great compliment to a programming specific podcast like Java posse. You can find all the info at: http://www.se-radio.net/

I’ve also found a site that pits different programming languages against itself. It definatly shows that C++ is faster a bit than Java but i’m not too sure if the algorithms used could have been improved to show better results. Which really shows that the speed of the language doesn’t matter if you have programmers that don’t optimise their code. Anyway its worth a quick look: http://shootout.alioth.debian.org/gp4/index.php

Windows so slow? - Interesting article about the issues facing Vista (microsofts new OS) and that Microsoft bundling stuff in the 90s is to blame in the delay.

iPod or not to Pod that is the question…

March 24th, 2006

I managed to claw my ipod back from my little bro a couple of weeks ago! He managed to find it somewhere. He claims that I said I wasn’t using it anymore (shorly not!), anyway I got it back and i’ve REALLY got into pod casts in a big way. Kinda accidently really anyway found a couple of great podcasts to listen to on the train into work. Sync ma ipod in the morning and off you go!!

Techy:
Java Posse
A great podcast discussing java news and interviews, created by a guy from Kent University

The Twits
Technology chat

Security Now
Hosted by Steve Gibson and Leo Laporta they talk about personal internet/computer security. Its really for the home user wanting to know more about cryptography etc but they have some useful stuff. I did listen to one episode and they kept going on and on about one time pad encyption. They said it was 100% impossible to crack. Which … yes is “technically” 100% full proof, but you still have to transfer the plain text pad to the receiver of your encrypted message and if that gets intercepted without you knowing you code is broken. So I wouldn’t call it 100% myself… they did get around to mentioning this near the end but not after I had shouted at my ipod a couple of times saying “no it isn’t what about transferring the pad!… etc…”. After receving a couple of strange looks from people on Clapham Junction station I swapped tracks to the Simpsons :)

Info:
New Scientist Podcast
New Scientist has a number of articles and news from the mag in the podcast and has some really good interviews with knowledge matter experts.

FOXCAST: The Simpsons
Well think this one is quite self explanatory.

WOW what a year to go and do the Rookie Snowboard course! For those who don’t know I did a snowboard instructor could in new zealand last year and it was… AMAZING! really good fun and learned so much, not just snowboarding, which have really helped in my professional career as well. You can see all my rookie posts by clicking Rookie Academy in the catagories.

ANYWAY the reason I say its a great time to go is because the UK -> NZ exchange rate at the moment is amazing! Its currently cheaper than when I paid for it so you can get quite a good deal.

I’m hoping to get back out there this coming season. I did the course with my mate Mikal and he stayed out :) well popped back to the UK got a visa then went out :)

Todays cool site of the day: http://www.deviantart.com/
Some of the images on it are amazing my favouite sections are:

3d Wallpaper
Abstract Wallpaper
Icon Sets for programs etc
A mate from work showed me the site, he said most of the icon sets are on GPL but to get permission to use them usually only takes a quick email to say could I use them and the fame and recognition for the designers is enough :)

I feel a blog design update coming on :) which reminds Wordpress (the blogging software I use) has been upgraded to 2.0.2 so i’m now going to attempt to upgrade it. Wish me luck! :)

« Previous Entries