Works For You? Prove It!
I just stumbled across something interesting that I probably should have realized before. With TDD, the first thing you should do when you get assigned a bug to fix is write a test that reproduces it. This morning I was good and did just that, but surprisingly the test passed.
Now normally when your test passes straight off, it means you didn’t write it correctly and you need to fix the test. In this case though I could confirm manually that the bug simply didn’t happen – a classic works for me. Drop back into bugzilla and mark the bug WFM and I suddenly realized I could prove that it works correctly by pointing to the test.
Scoble Wants a Wiki
So Scoble’s looking for a wiki, seems to have gotten a few popular suggestions. Since he wants it hosted I can’t really offer anything – I don’t have the server space or sysadmin knowledge to handle something of Scoble’s popularity. Despite that, can I recommend that you make the quality of the editor your most important criteria? It will make a huge difference to the adoption rate of the wiki. I’ve discussed this before: Wiki Syntax Considered Harmful and Making Wikis Work.
Stuff I need to look at but haven’t yet
NetNewsWire’s tabs have overflowed into that stupid little these-didn’t-fit menu because I haven’t had enough time to investigate all the things that I wanted to. Time to blog them and move on until they become a higher priority.
- Solr
- An opensource Google appliance sort of thing. Looks like a simple way to add search to an application to me – just hook it up to fire events over to Solr and use it to catalogue and search. Seems to provide more power than what I get around to leveraging out of Lucene myself.
- Commons Finder
- Need to find files from Java – this should be useful. Not sure what I had in mind that it would be useful for but one day I’ll need it for sure.
- Plagger
- Does stuff with RSS and Atom – not really sure what yet. It originally sounded like a kind of base RSS platform to leverage. Sounds a bit like Abdera plus more but could be completely different. No idea really.
- activeCollab
- Not sure why I’d need this right now and seems to have a fair way to go, but interesting none the less.
The rest is stuff I need to read or respond to, but this should be enough to get the tabs visible again.
Windows Installer Annoyances
I’m not sure there are many platforms that make installing software more painful than Windows. Linux used to present a worthy challenge but apt-get and similar systems are so common and so comprehensive now that it’s generally smooth. Some of the main annoyances are:
- Clicking next, next, next, next just to get the install started. Are all those screens really needed? Couldn’t we at least skip the welcome screen?
- Icons, icons everywhere and not a scrap of user control. I’m looking at you NetBeans – I didn’t tell you to put an icon on my desktop. And you Thunderbird, why the heck do you feel compelled to add yourself to my quick launch bar? Windows Media Player does the same thing. Rack off all of you. You can put a shortcut in the Start menu under programs and that’s it.
- License keys. Is there anything more futile? Why waste my time with them when I can just use the same key on multiple machines to pirate the software anyway?
- Uninstallers and readme’s in the start menu. Add/Remove Programs handles uninstalling, just give me the product and get rid of the extra crap in the menu. You’ll probably wind up with just one icon left and you can get rid of the folder altogether. Kudos to Microsoft for leading the way on this – Virtual PC has no folder and Office has just the programs in it’s folder.
- No auto-sort in the start menu. Is it really that hard to just keep things sorted by name without me having to do it?
- Unlock toolbar, resize quick launch area, lock toolbar, discover the size has changed because the dividers aren’t shown anymore, repeat the process until you get it to the right size. Anyone heard of size to fit?
I think that covers most of the issues I’ve had. It makes me appreciate how nice OS X apps are to install, even if they do hide the applications folder.
Firewalls That Corrupt
A few days ago I did a clean reinstall of my Windows machine to clean up the mess of partitions and OS boot menus that had developed from trying out different OS’s. While reinstalling drivers, I discovered that my computer came with Norton Internet Security so I figured I may as well install it1, I also discovered an nVidia firewall tool and installed that too. Then I started downloading programs to install – firefox, Java etc. Everything I downloaded was corrupt. I disabled both firewalls and everything was still getting corrupted, even though I could download them on my Mac just fine. Even JavaScript files and applets were being corrupted while downloading.
More JavaScript Fun
Quite some time ago I talked about redefining and rewriting handler functions in JavaScript, but what if you want to add or redefine methods in an existing class? JavaScript classes1 are based on prototyping so the model is somewhat different to actual object oriented languages. Here’s one way to define a class, MyThing:
function MyThing {
this.doStuff = doStuff;
}
function doStuff() { }
Note the use of function assignment in there, just like for handler functions. This is one way to do classes in JavaScript, and it’s not really the best – once you get your head around prototypes you’ll probably find that using them directly is much clearer. There’s plenty of tutorials around the web on JavaScript prototyping so I’ll leave explaining it to the experts.
Fostering Teamwork
Leon Brooks picks up on my previous post about motivating via competition, suggesting, if I understand correctly, making cooperation a key to winning the competition. It seems to me that coming up with a system of rules to encourage team work is doing things the hard way. If you want people to work as a team, make them a team. Put them on the same side, all striving for the same goal to get shared rewards.
Motivating With Competitions
Competition is a strange beast – it can bring out the very best in people and it can cause teams to gel better than they ever have. Something about having a challenge thrown out with the potential to feel superior really gets people motivated. Sadly, there is a trend to try and use this motivation in the workplace by having awards and competitions between work mates. Instead of bringing the team together though, these competitions tear it apart because now the aim is to be superior to your work mates instead of working with your work mates to be superior over someone else.
Incentives and Motivation
Managers and HR type people are big on setting objectives and identifying a key metric to absolutely, without doubt determine whether or not that objective was met – usually tying bonuses to that metric. The problem with this is that people then game the system. If the key metric is lines of code per day, then people write excessively long, complex ways of doing things because that’s what will get them rewarded. If the metric is defects per thousand lines of code, people stop reporting bugs. For any given metric, there’s a simple way to game it and whether or not people realize they’re doing it, they will trend towards gaming the system. Overall, this leads to a net loss for the company because people are concerned about their bonuses, instead of focussing on working well as a team and doing what’s best for the company.
Google Pulls A Microsoft
So Google, the company that does no evil, seems to be learning a few tricks from the evil empire of Microsoft. With the release of Google Checkout, Google have effectively implemented Microsoft’s failed passport initiative but with a purchasing spin. Most of the similarities I’ve seen compare it to PayPal1, but my first impression was that this is single sign-on for web stores and that’s more along the lines of passport than PayPal.
Obnoxious Referrer Links
There seems to be a trend these days that whenever you link to some external site, you do so via a redirect script on your own site so that you can track who’s following the link and steal some google-juice in case anyone happens to blog about something you pointed them to. I’m not quite sure why, but I just find this obnoxious – maybe it’s because I’ve been frustrated a couple of times when the referrer script was down, thus breaking the link – even though the actual site was up. Maybe it’s because I resent the couple of extra seconds it takes to follow the link due to having to make two separate HTTP requests. Either way, is it really gaining you anything to put your users through this?
Customization In UIs
Jensen Harris has an in-depth look at the customization choices made for Office 2007 and why they made them. I’ve always been a proponent of getting the UI right in the first place and only providing limited or no customization abilities. Mostly this stems from Raskin’s The Humane Interface:
The central point of this issue is that if we are competent user interface designers and can make our interfaces nearly optimal, personalizations can only make the interface worse. Therefore, we must be sparing and deliberate in offering user customizations. If a user can, by a few judicious choices, really improve the interface, we probably have done a poor job.