Scoble Wants a Wiki

July 23rd, 2006

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.

Of course if for some reason you wind up hosting your own wiki or otherwise have access to the back end, I'm sure I could arrange for Ephox to donate a license to a really good WYSIWYG editor. I can donate my spare time to integrate it into whatever wiki you were looking at. In any case, I'd love to hear what you wound up going with.

Stuff I need to look at but haven’t yet

July 23rd, 2006

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

July 22nd, 2006

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

July 22nd, 2006

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.

Eventually, I uninstalled both the nVidia firewall tool and Norton Internet Security and suddenly all my downloads worked fine. Now I can kind of understand problems arising from having two internet security apps filtering and messing with downloads at the same time, but I can't understand why they would still cause problems when they were supposed to be disabled. If you're going to mess with my downloads there are some key things you need to do:

  1. Tell me that you're changing the contents of my download. Don't do this through a pop-up dialog, that will drive me nuts - a task bar icon would do.
  2. Give me the option to disable it temporarily or permanently and actually disable.
  3. Give me a way to undo the changes you made to my downloads without having to redownload them. It's really annoying to download 150Mb of JDK and Netbeans just to discover it's corrupt and then have to download it all again.

Better yet, just don't mess with my data. If there's a security issue tell me about it and let me choose what to do, otherwise get out of the way.

1 - I do all my web browsing, email etc on my Mac so internet security on my PC isn't a concern

More JavaScript Fun

July 12th, 2006

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.

Back to the task at hand, you might be tempted2 to modify the class by redefining the constructor:

MyThing = eval("function MyThing { this.doStuff = otherStuff; }");

This doesn't work. Instead, simply modify the prototype for the class:

MyThing.prototype.doStuff = otherStuff;

This becomes far more intuitive when you think more directly in terms of prototypes. A clearer way of defining the original MyThing prototype would be:

function MyThing() { }
MyThing.prototype {
  doStuff: doStuff;
  // Alternatively functions could be declared inline:
  moreStuff: function() { ... }
}

So now we can add or change functions in a class that has been defined elsewhere. What possible things could we do with that? There's cheesecake tomorrow for any of my work mates that can guess what I'm planning to use this for3.

1 - I'm not quite sure they are strictly speaking classes, but the linguistic differences are unimportant.

2 - as admittedly I was, and did in fact try

3 - the presence of cheesecake may be more related to it being my birthday tomorrow than to someone working out what I'm up to.