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.
Maintaining Product Focus With XP
One of the most common things touted about XP is that it allows for rapid change. The client can change the requirements on the fly for a very low cost – they can add features, changes features and drop features regularly as the product is developed without incurring a massive cost of change. When you work on in-house applications or custom built software, that provides a really big benefit, but when you develop off the shelf software that means that the final release may contain a mish-mash of new features and be generally unmarketable.
Real Developers and Kernel Source
Jeremiah Foster writes about Apple closing the source to the OS X kernel on Intel. I the statement:
Without the ability to modify kernel source serious developers will not touch the Apple platform, maybe that is why the OS X server is not making significant inroads into the server community.
Firstly, serious developers don’t really care about kernel source unless they happen to develop kernels or kernel modules. Most developers, both fun loving and serious, develop well above the kernel level and don’t need access to its source code. Even the link between serious developers and those that are so passionate about open source kernels, that they refuse to use an OS whose kernel isn’t open source is tenuous at best. The kernel is one very small, albeit central, part of OS X and the vast majority of the OS is and has always been closed source.