Upgrade Annoyances
I get really annoyed by obtrusive software update mechanisms. They steal focus, popup dialogs, show message boxes, add random icons to your system try, and then popup balloon items. All in a vain attempt to let you know that some crappy little app that you rarely use has an update available and that you should stop and drop everything that you are doing to install the update right now because it really can’t wait one second longer! Obviously someone involved making the software thought that keeping the little application up to date is a far better use of your time than you doing the things you need/want to do.
The main gripe that I have with software updaters is that they announce the update at completely arbitrary and inopportune times, often covering whatever you were actually trying to do with the program. Or better yet you’re concentrating and getting stuff done and up comes a window asking you to restart the application/computer. And those are just the friendly updaters, some just restart the application right smack bang from under you, destroying whatever you were working on. There are many offenders that I could name, but just off the top of my head I can call out Java, Acrobat Reader, Logitech software, Paint.Net, Apple/iTunes, and Firefox as programs with bad update mechanisms. (Some worse than others of course!)
A particularly special gripe I have for the Windows updating mechanism. The updates do warn you if the computer will need to be restarted after installation, but almost every single update states that it may need to restart my system. So it’s pretty much random as to which updates will force your system to restart and which one’s won’t. The other problem is that the options for how the update system works are all undesirable in my view.
- You can set it to never update, but that just means you need to remember and perform the update process manually. It then either becomes a chore and people get annoyed with it and stop doing it, or they just don’t bother to do it in the first place, and the system is left vulnerable.
- Another option is to get it to notify you when updates are available and you can then elect to install them (the download and notify I class as the same option really), but really it’s annoying as you get both bugged about it, and then have to manually perform the update anyway.
- The last option is to let the system automatically install updated at some point during the day (usually this is at night), however this means that you need to keep your computer on overnight. Whenever I leave my computer on overnight it’s doing something for me (like downloading large files, processing data, etc) so I get annoyed when the system decides to restart itself after an update simply because I wasn’t there to dismiss a dialog in time. (Though there is a fix for this, hurray!)
I know of many instances where people have been either confused or panicked by simple update messages spawned by these application updaters. Other times I see people completely ignoring vital system messages and error conditions, and we know this because we’ve all done it at some point in time.
Therefore in my mind we need to streamline and simplify the updating of our software. Eliminate any superfluous dialogs and message boxes, and hide the internal complexity from the user. To summarise I believe that all software updates should behave according to these simple rules:
- If the update can be installed without any user intervention then it should be done automatically, with no notification to the user, but allow them to go looking for it specifically.
- If the update needs to interfere with the work the user is doing then it should do as much as it can automatically, and then complete the process when the user has finished with or restarts the application/computer.
Granted these aren’t easy things to implement, but we should do them nonetheless.
So let’s take the Firefox browser as an example of a great application with a poor update process, one that irks me in two main ways. Firstly when it starts it checks if any add-ons need updating, if any have updates it spawns a sequence of dialogs to click through to do the updating. (Does anyone actually skip updating of add-ons?)
Surely this is something that should be handled automatically at start up without the need for any user intervention. Because whenever I start Firefox I just want to visit a website, right now, and clicking/waiting through the dialogs distracts me from that goal
My second Firefox irk is that whenever an update is released and the browser detects it (I always have at least one browser window open), it pops up this large highly-verbose update dialog over whatever site you were visiting at the time. It’s already downloaded and installed it, which is good, but it pops up this annoying dialog prompting you to stop your work and focus all attention on the browser because it needs to restart. However if you select the option to delay updating until the next restart it adds to the annoyance by popping up another useless dialog that you must close before returning to the website that you were on. Why can’t it just prepare the update automatically, and apply it when the browser is next restarted without having to ask the user a senseless question?
Same thing goes for Windows Update, it should install or prepare all of the updates automatically, and silently (this means no popup balloons coming from system tray icons). Then if a restart is required it should just wait until the user decides to shut down or restart the system.
The simple rules described here should eliminate unnecessary interruptions that the user experiences with regards to updating. Fewer interruptions mean that the user can just concentrate on the task at hand, rather than being constantly reminded about some application that they’ve installed. This is a good thing! Distracting the user from their work with your applications updater is wrong and should be banned.
Software developers (this includes everyone involved in design and construction of software – even the managers) need to realise that in the end it comes down to what the user does, rather than what they do it with. Applications are insignificant no matter what you might believe. But judging from the number of applications with crappy updaters out there, there must a lot of people that just can’t or won’t realise this.
Technology should aim to be invisible and blend into our life, rather than be a visible nuisance which we have to tolerate to get stuff done.
So please write better, less annoying, and less visible updaters.
Writing a new Game Engine
Since I’ve got some free time now I’ve decided to write a nice and simple 3D engine, again. The main reason for this is to enter a small programming competition, but I’m taking care with the engine design and architecture so that I may use it in the future. Also it will be a nice addition to my portfolio.
My last attempt at making a game engine was over 7 years ago, back when I was learning all of this programming and mathematics stuff. Looking back over the code now I shudder at all of the simple and naive mistakes I made, and the faulty assumptions I was working with. Granted at the time the engine did have some spiffy features like a scriptable Quake3-like shader engine among other things. But in the same vein I made some serious snafu’s, like building my own container classes that could actually return null references! Though overall the learning experience of writing such a large amount of code for a project was the best thing that came out of it. (I’ll post the source code sometime so that people can learn from my mistakes.)
However this time around I’m putting in my years of experience and building this engine right. I’m using existing libraries whenever possible (go STL, ATL/WTL, and other acronyms) and thinking about what I actually need and implementing only that rather than spending a lot of time developing features I won’t use. Hopefully this will mean a reduced development time and a better finished product.
I’m going to update this blog on my progress and post some demos and screen shots of the project as it’s progressing.
Nifty List of Development Blogs
Just found a handy list of development blogs. It appears I have most of the one’s at the top of the list on my RSS reading list, so I’ll be checking some of the others out as well.
Then again I’ve been spending a fair bit of time on StackOverflow.
“IT” Workers
Initially I wrote this rant some time ago after reading a bunch of IT related news stories that just irritated me greatly. Enough that I actually had to vent and writing it down was quite soothing. I present this as a post now after editing it and moderating the wording to make it sound less angry (because as we all know we can say some pretty stupid things when we let the anger speak). So here it goes…
I get annoyed constantly when I see or hear an article or advertisement where people lump everybody that work in the computing field into the “IT worker” category. It’s irritating when journalists do it, but it really riles me up when I see the ads on TV for those “IT schools” that claim you can have a career in IT by doing a simple six week course. It’s annoying because the computing field is very broad and applying the IT label to everything just cheapens it.
To me applying the IT label to the field of computing is like lumping electricians, electrical engineers, and high energy physicists in the same group.
They’re not!
Electricians are tradesmen that work with their hands performing practical tasks like building or repairing existing electrical devices and wiring. Electrical Engineers design and create entire new sets of devices from ideas and available components. While the high energy Physicists pound atomic particles together creating quarks, neutrinos, and tiny black holes. Each occupation performs an essential task in society, but each occupation requires a completely different skill and mind set. Therefore it makes no sense to lump them into such a broad category and assume the skills they have are interchangeable.
Would you ask your particle physicist friend to install your home wiring? Or ask an electrician to design a new television? I’d wager not.
To put this into the computing perspective, IT people are the one’s that maintain the computer systems that we use to do our work every day (a thankless job no doubt). Software Engineers design, develop, and test new pieces of software, creating the programs people use from nothing but mere ideas from one’s head. Computer Scientists on the other hand get involved with research related to how we use computing resources. As you can see these are quite varied tasks, each of which requires a different set of skills and a different mentality.
So naturally I get annoyed when people classify all computer based occupations such as Software Engineering and Computer Science in with IT.
I have an idea that this is partly due to the image that has been cultivated by society of anyone that works with computers being a stereotypical geek/nerd working in a dark and dingy office. Over time this image has been self-reinforcing and has created a barrier between the “computer geeks” and the rest of society, especially in business. It is this barrier that has made people simply lump all computing professions into the IT category.
For this situation to change we need to change the culture in the industry, then we need to raise awareness of the wide spectrum of available professions within computing. Once this happens people will realise that there is more to computing than just system administration, or just programming, or just playing games, and then they might stop using the IT moniker.
Therefore for now I urge people to not automatically group all of the computing fields as being the IT industry, there’s far more to it than just computer management.
And yes, this means that I will not fix your computer!
The ever useful Excel
Excel has to be one of the most versatile tools available on a computer today. Some may think of it as just a spreadsheet application which accountants and other business people use to monkey around with boring financial numbers. While it is useful for those purposes I have found it extremely handy at a wide range of programming related tasks.
Just off the top of my head I have used Excel (in a programming capacity)
- to test and debug algorithms before implementing them in code,
- as a form for code inspections where a Ruby scripts generates and processes them,
- an analyser for comparing benchmark data,
- as a nice text viewer for viewing output from log files,
- a simple code generation tool (though I’m somewhat ashamed to admit this).
Additionally someone with far too much spare time has used it to create a 3d engine!
Its main power comes from the fact that it is a powerful programming environment wrapped up in a fairly good user friendly. But by far the most stand-out feature is that it gives instant feedback to changes made in the data or code. This makes it very useful for rapid prototyping of algorithms and formulae as you can direct the results to a graph and immediately see if something doesn’t work.
However it’s not wholly without fault, as it has some annoying habits of trying to be too helpful. Chief among these is auto formatting input to things such as dates, which is especially annoying when reading in log files or other generated data.
Regardless once you learn how to avoid its eccentricities, Excel will become one of the more useful tools in your development arsenal.
(When I say Excel I am talking about any modern programmable spreadsheet application, it just so happens that I use Microsoft’s spreadsheet program almost exclusively, hence I use that name.)
Blog Update
I’m not dead, just have been busy travelling and with work so far this year. Would you believe it that we’re going to release a product soon – neither can I. So with work calming down now I have started to do some personal development at home and going through my blog post/article ideas.
Currently I’m developing a couple of projects at home, I’ll post some concrete information on them as soon as they start taking shape. Also later I will release some source code and the compiled applications for people to try.
As for the other posts and articles on this site I have already written and polished a few entries that will be published shortly, and I am working through some of my other notes and ideas.
Thanks for stopping by.
New Blog
I’ve decided to start my blog afresh in the new year. This time I’m going to keep it wholly development focused, since I have a lot of thoughts and opinions about software development that I’d like to express.
In that vein I will be polishing up some of the previous development focused blog posts and uploading them in short order.