26 Jan 2012

Skyrim first impressions

So I started playing Skyrim last night and I have to say: What a Treat!

I spent a lot of time looting and enjoying the scenery. I only played for two hours, but in those two hours I felt like I was in a different world entirely. The game really sucks you in. I love the frigid landscape, the mountains and the waterfalls; it feels like you're in Beowulf.

But what I really appreciate is the slick menu system. You can see that Bethesda put a lot of effort into the menu. I find it interesting how they use typography (mostly font size actually) and subtle icons to indicate what's active on the menu and what's important. Most other games seem to go the garish-background and border-overload route to compartementalize the user interface. So I really like how Bethesda did Skyrim's menu. Very well done.

I will probably spend most of this weekend in my underwear playing more. Looking forward to it :)
25 Jan 2012

How to cure hiccups?

This "swallow method" from wikiHow did the trick for me. No more hiccups, thank goodness...

  1. Breathe in as far as you can.
  2. Swallow without letting any air out.
  3. Breathe in more, as far as you can. Do not let any air out!
  4. Repeat steps two and three as many times as possible. When you feel you can't swallow anymore, swallow again. You may turn red and make squeaking noises, but keep swallowing and inhaling.
  5. When you absolutely can't swallow anymore, exhale all the way.
  6. Your hiccups will be gone!
18 Jan 2012

How using an Agile process combats the common project pitfalls

I posted the following on our NewMediaLabs website and thought I would share here too...

 

 

Software projects are  packed chock-full of Risk. It's important to acknowledge the risks and to mitigate them. How you address the risks depends on which type of "project process" you are following. The two types of project processes that I have experienced are Agile-type and Waterfall-type projects. In this post I list some of the common ways to mitigate well-known risks for both these project types.

 

When given a choice we prefer to adopt an Agile approach. We believe that following an Agile approach leads to a far superior final product. We also believe that Agile is much less risky. So this post is unashamedly biased in favor of Agile.

 

First, a brief description of the two types of projects:

 

Waterfall-type project: 

Waterfall_600px

A waterfall project typically has a set deadline for set functionality.  Many businesses like this type of project because it seems predictable and makes it easy to get a budget approved for the project.

Process: Plan, Build, Test, Done.

Problems:

  • Trying to predict accurately while software development is very unpredictable.
  • User Requirements Specifications are usually insufficient and open to interpretation, which leads to errors.
  • Scope Creep is time-consuming to manage and often "sneaks" in due to unclear specifications. This puts pressure on the development team to deliver more functionality in the same amount of time.

 

Agile-type project:

Agile_600px

An agile project is typically seen as a recurring monthly expense instead of a big capital expense. Features are delivered frequently  (typically every two weeks) and the project carries on for as long as it is delivering useful functionality.

Process: Plan, Build, Test, *Repeat Repeat Repeat

Problems:

  • Unable to promise specific features at a specific deadline far in the future.
  • Difficult to work with businesses with a "waterfall" mindset (most big old businesses).
  • Difficult to get project approval when hard-and-fast promises can't be made.

Advantages:

  • Deliver what's useful, not "what the spec said".
  • Deliver useful features early.
  • Detect problems early.
  • Embraces change.

 

Why Projects Fail

Projects can be considered failures for many reasons. The most common reasons that I have observed are:

  1. Budget Overruns and Late Delivery - these two usually go hand-in-hand.
  1. Incorrect Functionality delivered - the client expected one thing and the programmers built something else.
  1. Technical Problems - for example: the system is too slow to use, or it doesn't integrate with another critical system in the software ecosystem.

 

Below is a list of ways to combat these three problems in either a Waterfall or Agile project.

 

Problem 1: Budget Overrun/ Late Delivery

Waterfall:

  • Add extra time to mitigate risk. For example: estimate 13 hours for a 10 hour task. Not optimal. Expensive.
  • Track progress against milestones to ensure the project is progressing on schedule. (The problem with milestones is that they can give a false sense of security. When you think something is "Done" it might not really be. "It's done! (except for the styling, or integration with external system X)")
  • Work overtime if needed to catch-up.

 

Agile:

  • Frequent delivery means most important features get delivered early.
  • If less important features are late it is not such a big deal. The system is constantly improving and maturing.

 

Problem 2: Technical Problems

Waterfall:

  • Do lots of prototyping in the first stage of the project to try and spot technical challenges.
  • If caught late it may be too late to do anything about it. Major losses.

 

Agile:

  • Will be picked up early due to continuous early delivery. Project can then go a different direction, or cancel project if absolutely necessary (at least it will be early).

 

Problem 3: Wrong Functionality (incorrect assumptions)

Waterfall:

  • Write very detailed user requirements specification. (The problem with User Requirements is that they give a false sense of security. Now matter how explicitly they are written, they are still open to individual interpretation and interpretation may not be what the author intended.)
  • If caught late it may be too late to do anything about it. Major losses.

 

Agile:

  • Agile embraces change. Frequent delivery ensures that the correct functionality is delivered and any "mistakes" are detected early. The client is continually evaluating the system and can change direction as required.

 

10 Jan 2012

Why I love my job reason nr 49...

I don't have to work with ASP.NET WebForms anymore!

That deserves lots of exclamation marks!!!!! !!!! !!!!

ASP.NET MVC3 is such a pleasure.
10 Jan 2012

Why I love my job reason number 48...

The website I am working on only caters for English speakers. What a pleasure!  Localization is such a pain.
7 Jan 2012

Code Snippet: Show a message when a user is using an old browser.

For my personal project I would like to show a message to the user if the user is using an old browser. This is mainly because I don't want to spend time testing all the old browsers. I'd rather just tell the user that the site works better on certain browsers and give him the links to download the browser of his choice.

(PS: I know this is bad practice. I'm being lazy here...)

Thankfully JQuery makes this ridiculously easy. Here is the code (adapted from Think2Loud)...

6 Jan 2012

I'm proud to be a software developer

It's easy to get stuck in a rut and disregard the big picture. The big picture is that as a software developer I get to build ridiculously complicated machines with an insane amount of components that interact with one another. And a software machine is so flexible that I get to make changes very easily. The machine can be reconfigured with a couple of keystrokes, tested, broken, fixed, several times a day.

This is a pretty amazing job.
30 Dec 2011

Apples Painting

Apples

Initially I was feeling discouraged about these bloody apples. But in the end I'm very happy with how the painting turned out. This is my first still-life painting and painted from life instead of a photo. Fun :)

12"x16"
Oil on Canvas Panel
18 Dec 2011

Suddenly getting HTTP404 on your ASP.NET website?

Was your website working fine yesterday, but today you get an HTTP404 exception?

Check your disk space. Our drive had 0 bytes free space on C. After freeing some space the problem was resolved.
13 Dec 2011

Why I love my job (reason nr. 37)

Our sprint plan doesn't change numerous times throughout the sprint. We can focus for two weeks and deliver what has been planned.

I Love it. I don't miss the opposite situation. Been there, done that.

willem odendaal's Space

I'm a programmer living in Cape Town South Africa. I love tight security and slick UX. I work for @newMediaLabs