Nothing like free ice cream…

Happy 10th birthday to Yahoo!

There's something special about free ice cream.... The Stiles family took advantage of Yahoo!'s ice cream giveaway at our local Baskin-Robbins yesterday. Of course I had to create Yahoo! IDs for Nancy and the two older kids (Claire's only 1 so she has to share). I'd estimate that 75% of the people who came through while we ate had a Yahoo! coupon.

I wonder how many new Yahoo! accounts were created yesterday so the owners could get free ice cream. Hmmm....

Comments off

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.

Comments (1)

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 Del.icio.us. 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 mozdev.org. 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.

Comments (6)

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?

Comments (4)

4-Year-Old Drivers

Scary article over at CNN about a 4-year-old boy who drove his mom's car to the video store. I've got a 4-year-old... there are few things scarier than the thought of him driving. He's still got training wheels on his bicycle.

Comments off

Is Verizon Scared?

Nancy's phone started acting weird about two weeks ago - turning itself on and off repeatedly - so that it was unusable. Its an LG VX-4600 that we got when we switched to Verizon a few months ago (AT&T/Cingular had serious coverage holes in Pasadena).

I called LG to ask about a replacement but they told me to talk to Verizon.

I called Verizon and was surprised at how chipper and helpful the support guy was... Here's the gist of the conversation:

How can I help you? Oh, your phone is broken, let me send you a new one, right away. We're so sorry about that. Is there anything else we can do to help?

Nancy's new phone showed up a few days later, and a quick reprogram and she was off and running. I wish tech support for consumer products always worked that way. Has Verizon always offered this level of support, or are they ramping up because they're scared of the AT&T/Cingular behemoth?

Comments off

Really Simple Subscription

I was getting ready to respond to Dave Winers proposed solution to the current subscribe-to-this-feed button morass, but Nick Bradbury said it better than I could. In short, the feed:// protocol is the way to go.

Comments (1)

Tabbed Browsing Turns 7

Alternative browsers like Firefox and to a lesser extent Opera, Safari and NetCaptor exploded in popularity in 2004. Better security was a major focus, but almost universally, "tabbed browsing", the ability to open multiple web sites in the same browser window by placing each site on its own tab, was listed as a top reason to switch from Internet Explorer. I like what Walt Mossberg said in one of columns in The Wall Street Journal:

Tabbed browsing is the biggest fundamental improvement in the Web browser in years.

I agree :-)

From reading various journalists, you'd think that tabbed browsing was a relatively new feature. Actually, tabbed browsing is over 7 years old - Firefox, Mozilla, Opera, Safari and others can all trace their tabbed browsing DNA back to NetCaptor at some level. I started developing NetCaptor in the summer of 1997 and released the first public version on January 3rd, 1998.

Happy 7th birthday NetCaptor!

Comments (4)

Google Suggest Poetry

When I hacked Google Suggest, I was hoping someone would take what I'd done and do something powerful and worthwhile with it. I'm happy to say my dream has come true - check out the Google Suggest Poety Generator over at Brad Sucks :-)

Comments (1)

Dadhood Tip #2

I took the three rascals (Lauren 6, Luke 4, Claire 10 months) to breakfast at the local iHOP this morning to give mom a break. As we were driving in, I flashed back to a previous breakfast and how the kids handn't thanked the waitress who brought our meals. Doh! Its my fault - not the kids. We don't eat out that often, so the thank-the-waiter behavior hasn't been reinforced much. But, I hadn't reminded them that about my expectations.

I don't remember where I read this, but its much more effective to discuss behavioral expectations with your kids BEFORE you expect them to do something rather than after. Talking about it after the fact may help a little, but when its something that they don't do that often, its much more powerful (and fair to the kids) if you help remind them ahead of time. So - we talked about it in the car before going in, and I reminded them about 5 minutes before our meals came too. It worked! Loud thank you all around (almost all the way around, Claire just drooled). The kids are much more likely to remember to thank the waitress next time because they have already done it than if I had addressed the situation after they failed.

Dad Tip #2: Remind your kids what you expect them to do BEFORE you expect them to do it.

Comments off

« Previous entries · Next entries »