My second iPhone App

June 30th, 2009 No comments

A couple weeks ago I managed to get my second iPhone application published on the iPhone App Store. The app is called “Chakra Wellbeing” and is a healing tool and de-stressing application. More details can be found on my app site here.

Chakra Wellbeing is available on the App Store by following the link below.


App Store
After a couple weeks, sales are averaging about 10 per day, which I’m pretty happy about since I haven’t done any marketing or advertising. I hope to blog a bit more about how the app was build later.

Twitter

June 30th, 2009 No comments

Came across this rather good description of Twitter in Time magazine the other day:

“Twitter is basically a toy for flirting and telling people what your cat is doing.”

But more worryingly, it went on to say this about Tweets during the Iranian elections:

“But here is a measure of its new role in international politics: engineers delayed a planned network upgrade that would have taken the system down at the height of the protests after being asked to wait by the U.S. State Department”

Tags in space

June 26th, 2009 No comments

Followed another link to this page. Cool flash TAG thingy! (Disclaimer: I was just googling “iphone URL encoding” and ended up here. Haven’t actually read the blog!)

Best Error Message

June 26th, 2009 No comments

Followed this link and got a cool error message.

Particularly likes the “Please be assured that someone has been fired.” message!

Debrief: World Leaders App

June 20th, 2009 No comments

This blog entry has been moved to my app site.

PC Problems

June 13th, 2009 No comments

A few weeks ago I had a few problems with my computers at home. We’ve got quite a selection at home; my MacBook, a couple laptops (one XP, one Vista) and a couple desktops (one XP, one duel boot Ubuntu/Vista). Our main family PC (running XP) gave up with a busted power supply. Rather than spend money on this rather old PC, I decided it was probably time to start using our newer PC (Ubuntu/Vista) as our main family machine. This had initially been bought to set up as a web server at home but I later decided it was easier just to continue using my external hosting service.

I’m not a great fan of Vista and I’ve got a few programs on XP that don’t work on Vista so I decided to add XP to the new PC, along with the current dual boot Ubuntu/Vista. Big mistake! I started to install it on an unused disk (there are 2 disks in the machine) but aborted very early on as it could only see about 130G of the 300G available. Despite the fact I only got a few steps through the installation process, it still managed to destroy the master boot record on the main disk. So when I rebooted the PC, it wouldn’t restart! Everything was gone. After much cursing and swearing, several reboots from Ubuntu installation disks and a bit of googling, I gave up. Fortunately there was not a lot of stuff on this machine so I just installed XP on the whole machine. (I never liked Vista much anyway and to be honest, Ubuntu never played well with the video card in that machine).

There are a few bits of free software that really helped here.

The XP installation could still only see 130G on one disk so I installed  EASEUS Partition Master. This could see the full size of both disks, so I was able to create a bunch of other partitions and use all 800G. The software worked really well and was very easy to use. Highly recommended.

The disk I rescued from our old PC (and installed in an external USB case) had file permission problems, meaning I couldn’t read everything from the new machine. I am use to using XP Pro edition but installed XP Home edition at home. I then discovered XP Home doesn’t have the Security tab in the file permissions window! (Pro version does. I think you can reboot XP into “Safe” mode – but why make it that hard). So, I found FaJo XP File Security Extension (XP FSE) . This added the required Security functionality and works very well. Also recommended.

Also discovered that my Mac can’t write to the NTFS USB disk. Enter NTFS 3G. Actually I haven’t tried using this yet… but it looks promising!

Moral of the story. Make sure you back up everything you don’t want to loose before messing around with disks and new operating systems. I was lucky this time and could afford to loose everything on the machine. I’m pretty sure I could have recovered what was on the disks if I really needed to but it would have been a lot of time and hassle.

iPhone Developer : Individual or Company

June 3rd, 2009 No comments

This blog entry has been moved to my app site.

Eat Your Greens

May 25th, 2009 No comments

More interesting snippets from Time magazine.

  • The meal plan of the average American family accounts for 2.8 tons of CO2 annually, compared with 2.2 tons for driving.
  • A meal at McDonalds produces more carbon than your actual trip to the drive through.
  • Most produce requires about 2 calories of fossil fuel energy to cultivate per 1 calorie of food energy; with beef, the ratio can be as high as 80 to 1.

So, eat more vegetables, pasta and chicken and less dairy and especially beef. It may have more effect than buying a hibrid car!

Trillions of Dollars

April 8th, 2009 No comments

Some interesting numbers from recent issues of Time Magazine

  • $11.6 Billion Total amount earned in 2008 by the 25 highest paid hedge-fund managers.
  • $8.4 Trillion Amount that financial firms worldwide have received or been promised in government bailouts – $1250 for every person on the planet, according to Oxfam.
  • $11.5 Trillion Estimated value of assets that taxpayers in all countries hold offshore.

Why is software hard?

December 23rd, 2008 No comments

This article is based on my experience writing Java enterprise applications for the web, rich client and backend systems.

Software takes a long time to write. Way too long. Its generally much too complicated, inflexible, fragile, often doesn’t do exactly what it was meant to do and sometimes even has bugs. Why is this so?

Lets face it, software doesn’t really do much.

  • It reads some data from somewhere; files, databases, sockets, screens
  • It performs a bit of maths on the data; occasional complex matrix transformations but mostly just simple additions
  • It executes some if-then-else statements
  • It loops around a few for loops
  • It writes some data somewhere; files, databases, sockets, screens

There may be a few other edge case things, but mostly its just variations on the above themes.

So why is software hard?

There are a few reasons for this, but in my experience, I think the main ones are:

Requirements

Writing software is an exact science. There isn’t normally much room for ambiguity. If your running around a for loop, you go around exactly n times. You don’t normally loop around about n times, or roughly n times.

The question is, who decides on what n should be? Ideally, there should be some requirement specifying what n should be, and why this value is needed. There doesn’t need to be a massive formal document describing this, but it should be written down somewhere – ideally somewhere where developers can find it. This business logic may be fairly fundamental to what the software is supposed to do, so its quite likely that at least these requirements will be known upfront.

The real problems start to occur when someone asks “but what happens if…?” Questions like this occur constantly during development and more often than not, they are not covered in the requirements. So, who decides what to do? Ideally it should the the client/business, but I’ve found its generally left to the developers to decide. This inevitably leads to the application not doing exactly what it was supposed to do. Not necessarily the developers fault (there was no one around to ask and I had to get it finished), but mainly because exactly what it was supposed to do was never actually specified.

Agile development practices are supposed to address this problem by having client/business representatives as part of the team and always available, but I have yet to see this actually work well in practice. I don’t believe once per day standup meetings with the client are enough. Also the client needs to be very knowledgeable in the business and have the authority, ability and courage to make decisions. I think agile development practices, if carried out how I think they should be done, end up changing the way the business/clients work more than it changes the way developers work. I think this is something that is not very well explained (especially to the client). I’m not knocking Agile (its a damn site better than waterfall!), I’m just saying that software consists of thousands of little decisions and the client should be making most, if not all of these. Otherwise, chances are, the software will not do exactly what they wanted it to do.

Too many options
To be continued….