Better Drug Warning Labels

I’m taking the pain-killer vicodin right now because of a nasty strep throat. Swallowing is extremely painful at this point, but vicodin helps as we wait for the penicillin to kick in and do its job. There is a caution label on the prescription, telling me to be careful while operating heavy machinery or driving because the drug might cause drowsiness.

Dscn1449What about exercising caution while walking? I think the vicodin has thrown off my depth perception or something, because I miscalculated the width of my office door yesterday and proceeded to kick the door jamb, hard. The toe is probably broken, but the nurse I talked to said there they would treat a broken toe the same as a jambed one, so there’s no need for an x-ray.

Tabbed Browser DNA

A couple of weeks ago I wrote Tabbed Browsing Turns 7, about NetCaptor’s 7th birthday, and claimed that "Firefox, Mozilla, Opera, Safari and others can all trace their tabbed browsing DNA back to NetCaptor at some level".

In a comment, an anonymous poster wrote:

AOL bought Booklink in late 1994, and Booklink’s Internetworks had tabs as we know them today.   Though largely unheard of today, Booklink was well-known at the time, and has the only legitimate claim on the DNA of tabbed browsing.

I must disagree for two reasons. First, Booklink/GNN/NetShark, in its various incarnations, was not a "tabbed browser" as we now know them. In GNN (and I have several copies floating around), tabs represented the navigation stack of a user’s browsing session. To go back or forward, you switched to the different tabs which represented other locations in your session history. Tabs were not in any way independent, you could not right-click "open in new window/tab". In all modern tabbed browsers, each tab can be independent of the others. You can have one tab open at CNN, one at Slashdot, one at GNN’s tabs just gave a picture of your navigation stack, that’s all, like an expanded menu in your back and forward button. NetCaptor was the first to offer dynamic browser tabs where each one had its own navigation stack and could function independently of others. Anyone who has used both will understand the difference.

A second reason I disagree is that modern tabbed browsers like Firefox, Mozilla, Safari, and Opera based their tabbed browsing systems either directly or indirectly on NetCaptor. I chose the term DNA very carefully. Evolution says that mutations occur, and when those mutations are advantageous, they are adopted widely. Even if GNN did tabs first (which I maintain they didn’t) the "tabbed browser" mutation came through NetCaptor.

Multizilla was the first tabbed browser extension for Mozilla, and it copied NetCaptor’s menu items  and many features word-for-word. David Hyatt, who implemented tabs in Mozilla, Chimera, and Phoenix and I assume Safari, wrote a little about where the tabs in Mozilla came from back in September 2002:

Here’s how the whole tabbed browsing thing happened. One night I finally downloaded an extension called MultiZilla (go check it out on I was particularly impressed with a feature contained in MultiZilla called tabbed browsing. I started doing research and discovered NetCaptor, a tabbed browser that embedded WinIE.

MultiZilla was cool but at the time suffered from two fundamental flaws that prevented the code from being incorporated into the Mozilla tree. The first was a UI flaw, namely that at the time it had ripped off NetCaptor down to the last context menu item. The GUI was similar enough that there would have been definite concerns about so obviously copying some of NetCaptor’s more obscure capabilities (like sticky names and tab locking). The second concern was that the tab behavior wasn’t encapsulated cleanly into a widget.

I produced a simplified version of tabbed browsing on my own time (did it in a weekend) that removed some of the geekier NetCaptor features and that encapsulated the tab behavior so that the changes to other Navigator files would be minimal. Once I established that it didn’t degrade performance in the single tab case, I checked it in as an experiment.

More from David in 2003:

Mozilla had tabs before Opera had tabs. Opera’s MDI interface is not the same thing as tabbed browsing. Opera only added tabs in its newest version after Mozilla had them already in its trunk builds. Also, neither browser can take any kind of credit for inventing tabbed browsing. NetCaptor had tabs when Opera was still limited to vanilla MDI, and Mozilla had nothing at all.

Opera’s tabbed browser history is a little harder to trace. They had an MDI interface for a long time, but added tabs in their version 7 release in late 2002. I do remember seeing tons of posts in the Opera newsgroups asking for "tabs like NetCaptor".

Alright – gotta get back to work. Just wanted to set the record straight.

Behind the Scenes at Bradsoft

Nick Bradbury posted a behind-the-scenes look at how he develops FeedDemon and TopStyle, including design-time screenshots of what his products look like in Delphi. Cool stuff.

Like Nick, I also do most of my work in Delphi (NetCaptor and other stuff that I can’t talk about right now). I remember talking with Nick about Delphi when version 5 was coming out, and how he was staying with version 4 for HomeSite. Looks like TopStyle is still in Delphi 4 while FeedDemon is in Delphi 7.

I’ve kept NetCaptor in Delphi 6 (there are several newer versions of Delphi)  because I don’t want to go through the hassle of porting it to work in a later version. Borland has a tendency to break things, especially in shell-related and common controls code, so its much easier to stay in D6. If its not broken, don’t fix it.

I won’t post design-time screenshots because they would be pretty boring – almost everything is created at runtime in NetCaptor. Like Nick, I use some components from TMSSoftware, and also from PlasmaTech. I always buy source code licenses so I can modify code when necessary.

One of the most important part of my development process is the use of SourceSafe for version control. I don’t need to share code between different developers, but SS is still invaluable to me. I can’t tell you how many times I break something from one build of NetCaptor to another and SourceSafe bails me out with its file version comparison stuff. The tools show me exactly which lines of code changed and generally makes it easy to pinpoint problems.

I use the Nullsoft Scriptable Installation System for my installers and have batch files which complete the build files. I like NSIS primarily because it creates great-looking installers which are VERY small. Why add 300 KB for an installer when your app is only 600KB?