Is the age of the stupid user coming to an end?

I remember very clearly what it was like to work in IT in the early 90’s. Although I was employed as a programmer, the first company where I worked considered every member of the IT department a support engineer. Even this is a good indication on how unrefined things were at the time. Think pre AOL days. Back when Windows 98 and 2000 were in use and it wasn’t uncommon for a whole company to share a 56k dial up modem. Certain members of the team had no internet. Computers outside of work were still geek toys, not vital for communication. There was no Facebook and for that matter no social media sites at all for the masses. The internet too was very young.

I remember back in those days you had some really stupid users. And I mean this the non derogatory IT lighthearted kind of way. It was not uncommon to get daily calls from members of staff who had issues printing, opening an attachment or installing some software update. Back in those days it was still conceivable that someone could confuse the CD-ROM for a cup holder.

I like many bloggers on the internet recognize those times. But I have to say I disagree with the premise many current bloggers hold that things have not improved. I’m almost sure the general computing skills for the average public has increased considerably over the last 20 years. So lets discuss some reasons why this is, and also why even in year 2011, there are still a fair share of people around who battle to perform the most basic of computing tasks.

Why things have improved:

There are a great many reasons why the public of today is more computer literate, to name a few:

  • Computers are much more common today and have real functional value in the average household.
  • Internet banking and shopping online has been a huge motivation for even the slackest of users to start using a computer. This also includes product research (not just purchasing).
  • We live in a global economy where sometimes the only way to find the goods you want is to import them directly (buy off the internet).
  • Computer prices have come down considerably, and the introduction of cheap laptops and netbooks, not to mention tablets and other more funky computers.
  • Fixed monthly fee and fast broadband, bringing acceptable internet to the public.
  • Operating systems have improved vastly in areas of usability, so anyone with half a brain can perform basic computing instructions.
  • The amount of people who are born in the computing era rises each year, while at the same time the amount born in pre-computing days lowers each year, the effect is two-fold.
  • Smart phones are now common place, smart phones are mini computers giving users an easy stepping stone into real computing.
Why things are not quiet there yet
Even with all I’ve mentioned, and points I didn’t, there is still a considerable amount of room left for improvement. Here are the main reasons not everyone can use a computer skillfully (At least the way I see it).
  • The vast majority of people that can’t use computers exist because of 2 factors (usually a combination of both). A) They have no interest at all in computers B) They feel no direct responsibility to learn anything relating to computing. Now off the record, these are the type of people who I get a bit annoyed with because usually they want the benefits of a computer and its use when it suits them and on their terms, but typically they refuse to invest any energy outside of this into the technology. Instead they rely on people who are a bit tech savvy to help them out.
  • Some people can completely exist without owning a computer and some have no use for it. These are almost always old people who don’t have distant family.
  • Some people are intimidated by computers. They simply have no desire to experiment but are also terrified to break anything.
  • Some users have a very limited use for computers and use it primarily for 1 or 2 things. They never get excited by computers and like to turn them off as quickly as possible.
  • There are still a great deal of people who feel they are completely justified to excuse their ignorance with “I’m no computer expert” or “Computers are so complicated” or “Stupid computers”. Because of this everytime they hit even the most basic of computer problems they’ll rope in someone else to fix it for them.
Now I’m not saying everyone should be at the super user level, but there definitely is a bar when it comes to computer usage and I think in 2011 I find it unacceptable when people are computer illiterate.
These are the basic tasks everyone should be able to do:
  • Understand very basically what is a CPU, RAM and  a hard disk.
  • Know a bit about hard disks:  How to format them, what data is, have a basic idea of how large a megabyte is or a terabyte.
  • Install an Operating System and know when it’s time for a reinstall.
  • Install applications in that Operating System. Most installations are wizard based and very easy to use. Simply follow onscreen instructions and click next.
  • Know a bit about the internet, how to search for stuff and how to click links and reload pages. How to press F5 when the page produces an error.
  • Know how to fill a form in online and know enough about security not to use “Password” for passwords.
  • Know how to send and receive email.
  • Clearly know how to install a printer or other drivers.
  • Know how to burn a CD or DVD.
  • Know how to convert between PDF and Doc or other formats.
  • Learn how to type at a slightly reasonable speed.
If everyone would just know these basics the world would be a better place for IT support staff I’m sure.

How to beat Age of Empires 2 on hardest difficulty

Age of Empires 2 might be a good old game, but a lot of RTS fans still consider it to be the best RTS ever made. I personally enjoy the simplicity of it, and challenging UI, it can be played many times over without getting boring.

But it’s not fun when you’re getting your ass kicked, so here is a primer on how to win on hardest against 1 computer opponent.

For this guide I suggest playing Regicide, select giant map size and for area type select Black Forest.

The Dark Age

1. You should start off with a fair amount of villagers, a King, 1 Cavalry Scout, a Castle and a Town Center. You should also be in the dark age.

1.1  Select some villagers and build a Mill close to the fruit patch, Assign a few to cut down trees in a good area. Assign just 1 villager to stone mining, and just 1 to gold. DO NOT CREATE ANY MORE PEASANTS.

1.2 As soon as 2 structures are built, advance to the Feudal Age.

1.3 While you advance send your scout to search for sheep, send the sheep back to the mill you built.

1.4 If you start acquiring an excess of wood, build a barrack.

1.5 If you’ve enabled an all visible map, then look around and take note where the Relics are.

Feudal Age

2.1 As soon as you advance, spend everything you have on creating new villagers.

2.2 Assign them to food, until you can constantly create new villagers.

2.3 Now assign loads more to wood

2.4 Keep one peasant free for creating houses

2.5 Upgrade the mill and wood chopping speed.

2.6 Build a blacksmith, and an archery range

2.7 Keep flooding new peasants and building houses till your original food supply from sheep and berries run out.

2.8 Now build farms – You should spam farms all around your town center and have another 3 mills all with farms around it. At the same time make sure you have zounds of peasants assigned to wood cutting

2.9 Keep this up until you have 800 food and 200 gold, then advance to castle age.

Castle Age

This is the age where you’ll start getting attacked, but not immediately.

3.1 Build a church, and make sure it is positioned close to the castle for security.

3.2 Build another blacksmith

3.3 Spam a considerable amount of peasants onto gold duty

3.4 Upgrade everything that will help you collect resources – Mills, Gold, Stone, Wood

3.5 Build a stable.

3.6 Start upgrading everything you can within reason

3.7 Make sure you build a university

3. 8 Build a small army of various units, mostly consisting of Cavalry and some archers, and about 4 monks.

3.9 Advance to Imperial Age.

Imperial Age

This is where things get exciting.

4.1 Don’t attack, play the defender until you’ve researched everything useful, and upgraded everything.

4.2 At the same time you need to build up your army, and have gun powder researched.

4.3 Build zounds of houses, make sure you have enough to support 150 population.

4.4 The AI will start sending waves of enemy at you, make sure you can defend it off without loosing too much men.

A note on the AI: The AI takes note of where you’re defending and sends men to that location. If you see trebuchets approaching in the distance, send 3-4 Knights or Paladins to attack it. Notice they’re virtually risk free. Send them back to the main group when you’re done.

Once everything is researched and upgraded its time to attack.

You should have a swarm of an army by now, create about 4-5 trebuchets to join your forces.

Slowly start advancing down the same path as the enemy is attacking from. When the enemy sends a wave, stop and attack.

Once you’ve reached his city, bring out a peasant, and build a castle, followed by a stable, archery range, and a church. If you want to build a town center too.

Defend, defend, defend your trebuchets! While at the same time advancing your trebuchets, and attacking. It can be stubborn to get through walls and gates because the AI quickly rebuilds what you destroy. So keep a swarm of men on the destroyed gate area.

Keep those trebuchets moving, and protected! Use your buildings to spam more men to the hot spots.

You’ll need to manually control your paladins to take care of the pesky Bombard Cannons.

Now kill kill kill, everything and anything. Keep your men well away from castles, and let the trebs do the work. moving forward as the enemy buildings get destroyed.

If you follow this, eventually the AI will resign.


Reductionism as it relates to programming.

Being able to reduce complex problems into smaller units is a crucial skill every programmer should have under his/her belt/skirt. Reducing won’t always solve your problem, but it certainly does help you to narrow down the problem and solve logical issues, bugs and all sorts of things relating to programming. So what exactly is Reductionism?

Reductionism (Quote: Wikipedia): Can either mean (a) an approach to understanding the nature of complex things by reducing them to the interactions of their parts. 

So really folks when we talk about Reductionism as it relates to programming, what we are really talking about is a scientific method of fault-finding. Often used in debugging or to pinpoint the root cause of an issue.

Before I go any further I would like to say, it is likely you’re already a reductionist, you might not have put a label on yourself, but very few developers get far without being able to break down a problem into smaller units. If you are in the habit of doing this, you might still pick up some tips here and there by reading this article.

How many times has someone come to you and say “It doesn’t work”. You might reply “have you tried this” or “have you tried that”. You might make these recommendations without thinking. But lets take a closer look.

Let’s step out the programming box for a minute and think in general computing terms. Why is it that some people can’t install software / updates / an operating system? You would think anyone would be able to insert a DVD and click next a few times, but a great deal of people won’t even try.

Lesson 1: Confidence

If you’re ever going to solve a complex problem you need to have confidence you’re the right person to solve the problem. You might base this on your general programming experience, and a lot of the time confidence might not even be an issue. Yet there are times when even an experienced developer hits a brick wall. Often this happens on unfamiliar systems or frameworks, or languages and technologies. When you’re outside of your typical development comfort zone. You need to exert more confidence to overcome the problem.

Lesson 2: Time

Time. It is crucial to acknowledge that Reductionism as a science takes time! The more complex the problem, the less familiar you are with the environment, the more variables and systems in place, and the more unknown leads to potentially more time being taken to find the root cause of an issue. Do not be intimidated by the time it could take you to find causes for particularly stubborn issues!

If reducing could take a physical form, it would definitely be a tree. A tree with branches and children. Just like the ones you’re used to programming against. You might start by mentally mapping out the possible causes in your mind, and explore each avenue (or branch). You do this to form constants and establish grounded assumptions. You might start off trying to solve the problem with an idea of how long you think it will take. Be prepared to invest MORE time than you initially had in mind.

Lesson 3: Cover ALL ground

This is one for the more experienced developers. Here your experience works against you. You see a junior might not make the same assumptions you’re making because the junior thinks to himself “I know very little about everything relating to this problem, so I’ll try explore everything”. The seasoned developer might say “It couldn’t possibly be that!” or “I’m 99.9% certain it’s not this”. And as a result might not explore those avenues (branches), even if they were easy to explore.

Sometimes it is good to check everything just in case, but I’ve found recently that in fact those just in case branches of exploration were infact where the problem was. I would have sworn before a judge I was 100% sure the problem could not exist in “this input” or “that function”. Yet after exploring everything else, having gone back to assumptions not based on “scientific reduction” but on “my assumptions”, I found the issue right there! I would say “when in doubt”, but instead I’ll rather say “Check it anyways”, take off your experience cap, and treat every branch of exploration in its own merits as it relates to the particular problem you are facing.

Lesson 4: What is an assumption?

An assumption is an ESTABLISHED FACT! Every established fact needs to be verified. For example you might be working on a problem where you have a data type mismatch. If you’re expecting an integer, and you’re sure your function returns an integer then you have an assumption. You can’t mentally assume anything, scientifically you have to verify it to be 100% sure. How do you do this? You’ll test it! If you don’t test it you could end up with weak assumptions.

Lesson 5: What are weak assumptions?

Weak assumptions are assumptions that have not been tested at all or not tested conclusively. Sometimes it just isn’t possible to test every single scenario, so at times it is valid to fault find based on weak assumptions. For example, you might have 3 functions and you don’t know which one is causing a problem, but without testing anything, you suspect one function over the rest as the cause. You base this on the error message and what the role of the function is. The problem might exist elsewhere, but to test in a pure procedural way would (in your opinion) waste time. You could be right, or wrong. This is how it goes when dealing with weak assumptions. They are not evil, but just be honest with yourself about any assumptions you make. If it is weak, and you’re going ahead anyway, remember to return to these weak or weaker assumptions as you progress and still not able to solve the problem.

Lesson 6: Never give up on a problem with easy to verify weak assumptions in place

Depending on your problem you might not be able to verify every weak assumption. But those that you can – DO IT! Before you completely give up on the problem and start looking for a workaround, or completely leave it unsolved. It might take you a few extra hours to work through these, make a list of them, and assert them all.

Lesson 7: Reduce with some intelligence

Plan a bit upfront. Use some paper if you have to. Make notes! If the situation calls for it, write down the environmental details at the time. It could be that you’ll end up taking 10 or 100 or 1000 steps to eventually solve your problem. Try to improve your technique as time goes by, and there is one good way you can do this and this is to think of any problem as a tree with branches and sub branches. Sometimes the more you drill down the more complex things get. Sometimes you want to explore more obvious branches first, depending on the knowledge you have on any given system. Sometimes you’ll try explore just about anything to get more clues. As you progress on a problem, learn to re-evaluate on the fly.


Don’t give up too easily. Make sure you have a clear head when reducing. Get excited about solving the problem, and celebrate considerably when you so finally solve it.

Using the internet: forums, Q&A sites is NOT CHEATING. Your ultimate goal is to (a) solve the problem (b) gain knowledge of the problem and systems involved (c) refine your method of reducing.

This is a good holistic view, each and every problem you face is experience that will help you solve the next. Just remember to avoid in the box thinking, and good luck.




Quick thoughts on Dirt 3

This won’t be a concise review, just my casual thoughts on Dirt 3 from Codemasters.

  1. The graphics are as good as Dirt 2, and from where I’m sitting no vast improvements.
  2. The Gymkhana event is the most realistic simulation I’ve experienced on a computer at any time. I got amped and watched some Ken Block Gymkhana on Youtube, then played the game. All I can say is outstanding realism. The physics and motion is spot on, and the graphics are good enough. When I say any simulation yes I’m including any flight simulation, train, car, farming or what ever essentially the game world being a simulation of an actual world event.
  3. The long unskippable cut scenes are gone – thanks! Game loads up quickly, and no more having to move in and around a trailer, thanks again!
  4. The whole game is more realistic, the events, the sponsors and the cars. Dirt 2 was wild and fun, Dirt 3 is even more fun with an added layer of maturity.
  5. The snow and cross track races add a lot to the game, perhaps even my favorite tracks.
  6. The voice acting is kind of lame. British voices just don’t work in games – period! For some reason they sound too rehearsed and tame.
  7. The assisted driving is great on intermediate, shows you the line you should be taking and at what speed, but doesn’t interfere with your ability to accelerate.
  8. The tutorials are not noobed up, this is refreshing, makes me want to go watch tutorials on YouTube to get tips on how to drift. Rather than having it all in game ruining the immersion.
  9. The AI is harder than in Dirt 2.
  10. As an RPG / FPS type of gamer, I’ve been quick to dismiss the Racing Genre as a quick unrealistic thrill. Dirt 3 pushes the envelope on how realistic a game can be while at the same time being completely user friendly and fun to play.
My conclusion : Best racing game to date.