Wednesday, October 29, 2003
Earworms
There's a term for "songs that get stuck in your head". They're called earworms, This happens to me all of the time. When you're around small kids the earworms can be children's music (e.g. Barney, Sesame Street, Bob the Builder, etc). But I find that old pop tunes "get stuck" even more often. And they're usually songs that I didn't like in the first place.
Scary idea: someone will figure out how to trigger this effect and will write the "killer song" to drive us all mad -- like the Monty Python sketch on the Killer Joke. "Wenn ist das Nunstruck git und Slotermeyer? Ja!... Beiherhund das Oder die Flipperwaldt gersput!"
Scary idea: someone will figure out how to trigger this effect and will write the "killer song" to drive us all mad -- like the Monty Python sketch on the Killer Joke. "Wenn ist das Nunstruck git und Slotermeyer? Ja!... Beiherhund das Oder die Flipperwaldt gersput!"
What can't this thing do?
I just set up Verichat on my Treo. It's like Trillian for Palm OS. It supports Yahoo Messenger, MSN and AIM. It's a little weird "chatting" on this miniscule keyboard but it does the job. Plus, you can take pictures and send them to the people you're chatting with. Kinda cool. The only catch with Verichat is that the chat traffic flows through a proxy server which requires an annual subscription to use. Not expensive but I'm not sure yet that I'd use this enough to warrant the expense.
I've been listening to MP3s on my Treo using Pocket Tunes. Sounds great. I've got a couple of 256 MB SD cards so I can have several albums of music available. I can use regular headphones plugged into the headset jack via an adapter. The battery drain during MP3 playback seems minimal, lower than the drainage while making calls. Pocket Tunes lets you use other applications while the MP3 keeps playing. And you can answer calls which will pause the player. The next release of Pocket Tunes supports ShoutCast streaming audio so listening to radio stations and any other channels in Shoutcast will be possible as well.
The Treo 600 is an interesting union of devices: cell phone, PDA, MP3 player, digital camera, wireless Internet appliance, etc. It's not the best choice for any one of these categories but if you're looking for a single device that does all or most of these jobs, it's probably the best choice for now. There are smaller phones, faster PDAs, better screens, etc. but the Treo strikes the best balance between phone and everything else it does.
For me, the most interesting part is having wireless Internet access in a small general purpose device. Shoutcast support is possible because of Sprint's 3G network, not because this is an MP3 player. Sharing pictures is possible for the same reason. It'll be interesting to see if we get to a point where voice is a secondary aspect of cellular networks. It's just another type of data. VOIP takes that point of view. Why can't I have a high resolution digital camera that can "push" pictures over the Internet? Or a digital music player that can download audio tracks from the Internet (for a fee, of course ;-) without requiring a Macintosh or PC? When does the phone part of the device become optional? And if it does, what's the pricing model for such wireless devices? How many devices do you want to own that can do this? Also, there are many ways to be wireless, Bluetooth and WiFi are also options when you're near other suitable devices or within range of your own wireless network. We'll want devices that will seamlessly choose the best option for moving data around.
I've been listening to MP3s on my Treo using Pocket Tunes. Sounds great. I've got a couple of 256 MB SD cards so I can have several albums of music available. I can use regular headphones plugged into the headset jack via an adapter. The battery drain during MP3 playback seems minimal, lower than the drainage while making calls. Pocket Tunes lets you use other applications while the MP3 keeps playing. And you can answer calls which will pause the player. The next release of Pocket Tunes supports ShoutCast streaming audio so listening to radio stations and any other channels in Shoutcast will be possible as well.
The Treo 600 is an interesting union of devices: cell phone, PDA, MP3 player, digital camera, wireless Internet appliance, etc. It's not the best choice for any one of these categories but if you're looking for a single device that does all or most of these jobs, it's probably the best choice for now. There are smaller phones, faster PDAs, better screens, etc. but the Treo strikes the best balance between phone and everything else it does.
For me, the most interesting part is having wireless Internet access in a small general purpose device. Shoutcast support is possible because of Sprint's 3G network, not because this is an MP3 player. Sharing pictures is possible for the same reason. It'll be interesting to see if we get to a point where voice is a secondary aspect of cellular networks. It's just another type of data. VOIP takes that point of view. Why can't I have a high resolution digital camera that can "push" pictures over the Internet? Or a digital music player that can download audio tracks from the Internet (for a fee, of course ;-) without requiring a Macintosh or PC? When does the phone part of the device become optional? And if it does, what's the pricing model for such wireless devices? How many devices do you want to own that can do this? Also, there are many ways to be wireless, Bluetooth and WiFi are also options when you're near other suitable devices or within range of your own wireless network. We'll want devices that will seamlessly choose the best option for moving data around.
Pumpkin carving 101
Ned posted his family's Halloween pumpkin photos on his blog so I thought I'd do the same
My older son is home sick from school. He's had his second bout with strep throat in two weeks. The antibiotics didn't work the first time around so they gave his something stronger.
This is our handiwork from earlier today. We've done fancier carving work in the past. but decided to stick with a very basic pumpkin face this year. Not scary at all.
There's something very visceral about plunging a sharp knife into a pumpkin, twisting it around and scooping out the guts. Very cathartic. We should do this more often.
One suffix to rule them all
As of this yesterday, Handspring is no more. The company has merged with Palm. The new entity is known as palmOne. The Palm OS portion of Palm has been spun off as PalmSource.
What's with the "One" suffix for names? We've had Netscape One, JavaOne, SunOne and now palmOne. In some cases, there's a claim "One" is an acronym but I think it's just supposed to sound cool. Likewise, there's the continued use of camel case in names. Reliance on camel case is going to cause pronunciation problems among the non-technorati. Hey buddy, where can I buy a Pal Mo Nee?
Tuesday, October 28, 2003
Despair, Inc.
I'm not sure how I got on their mailing list but I received a Despair, Inc. catalog in the mail today. Despair, Inc's Demotivators have been around for several years. Funny stuff, for example these entries from the 2004 calendar: Achievement , Ambition, Success and Teamwork.
Floating titles
I've added support for floating titles when you hover over links. I borrowed the JavaScript code and CSS from kryogenix.org. I'll try to use them as appropriate since they can get annoying. The code can be found here
Update: disabled floating titles for now. There's a weird interaction with the scrollbar with IE6 that I need to look at.
Update: disabled floating titles for now. There's a weird interaction with the scrollbar with IE6 that I need to look at.
Monday, October 27, 2003
Longhorn and old code
Microsoft PDC 2003 is underway in Los Angeles this week. Main focus this year is Longhorn, the next version of Windows. Lots of press buzz for something that's not likely to ship until 2006. During Gates keynote they demonstrated how Longhorn was capable of doing all sorts of flashy things. I think it's pretty funny that they made a point in showing that VisiCalc, a 20 year-old DOS program, still runs on Longhorn. As Dan Bricklin points out, one reason that VisiCalc is even able to be shown now is that someone kept a bootleg non copy-protected version around. The original program would only run from 5-1/4" copy-protected floppies. Does anyone use 5-1/4" floppy drives any more? On a machine that's capable of running Longhorn? That would be compatible with 20-year-old copy protection code? Not too likely.
The interesting related problem here is that we can jump through hoops to make new environments capable of running old code; in some cases writing OS or processor emulators to fool the old code into working. But if we can't actually get access to the bits of the old programs and data, the effort is moot. I've got old Iomega® Jaz cartridges, NeXT optical disks, digital backup tapes, cartridge tapes and even some old 9-track magnetic tapes lying around. Except for the Jaz media, I don't have appropriate hardware to get the data off any of these media. And even if I have the hardware, I don't necessarily have appropriate drivers or applications to read the data. And digital media degrades over time so some of the old media may be worthless by now. In recent years I've been burning CD-ROMs for backups, I wonder how long it will be before these fall into the same technology dustbin as the other media?
The interesting related problem here is that we can jump through hoops to make new environments capable of running old code; in some cases writing OS or processor emulators to fool the old code into working. But if we can't actually get access to the bits of the old programs and data, the effort is moot. I've got old Iomega® Jaz cartridges, NeXT optical disks, digital backup tapes, cartridge tapes and even some old 9-track magnetic tapes lying around. Except for the Jaz media, I don't have appropriate hardware to get the data off any of these media. And even if I have the hardware, I don't necessarily have appropriate drivers or applications to read the data. And digital media degrades over time so some of the old media may be worthless by now. In recent years I've been burning CD-ROMs for backups, I wonder how long it will be before these fall into the same technology dustbin as the other media?
EclipseCon
Eclipse is having its own conference in Anaheim, CA next February. Lots of interesting talks in the program
Tired of sitting at red lights?
Buy this $300 gadget to turn red lights to green. According to the article, police are worried about chaos at intersections. You think? In Boston, we have enough trouble getting drivers to pay attention to the traffic lights in the first place.
The traffic light changer device, called a MIRT (mobile infrared transmitter), emits a beam with a 1,500-foot range to a receiver installed at the intersection. It changes the light immediately, allowing an intersection to clear before a fire or rescue truck approaches. It's hard to believe that the receivers installed in intersections don't require a keycode or other type of authentication. Anyone with a MIRT can change the lights. Seems like a huge potential liability since MIRTs aren't illegal.
The traffic light changer device, called a MIRT (mobile infrared transmitter), emits a beam with a 1,500-foot range to a receiver installed at the intersection. It changes the light immediately, allowing an intersection to clear before a fire or rescue truck approaches. It's hard to believe that the receivers installed in intersections don't require a keycode or other type of authentication. Anyone with a MIRT can change the lights. Seems like a huge potential liability since MIRTs aren't illegal.
Fox News vs. The Simpsons
I don't know how accurate this article is since I haven't listened to the interview. Matt Groening, creator of "The Simpsons" was interviewed on NPR's "Fresh Air" program last week. He revealed that Fox News threatened to sue if an episode spoofing the news channel was aired. Groening called their bluff and went ahead with the show because he assumed that Rupert Murdoch wouldn't be stupid enough to sue himself. On the episode, Krusty the Clown is running for Congress (as a Republican) and debates his opponent on Fox News. Here's the debate:
That's pretty darn funny. The people at Fox News must have no sense of humor.[Split screen: showing Krusty with the American flag behind him; for his Democratic opponent, the background was a Soviet flag. Devil horns were superimposed on his head.]
Fox News Announcer: Welcome to Fox News, your voice for evil. Tonight, we'll be interviewing the top two candidates for Springfield's 24th Congressional district. For the Republicans, beloved children's entertainer, Krusty the Clown. And for the Democrats, this guy.
Democrat: Hey, I have a name.
Fox News Anchor: Yes, I'm sure you do, comrade. I do appreciate your being here. You're usually so mired in sleaze, it must be an effort to come down to the studio.
Krusty: May I say something?
Fox News Anchor: Certainly, Congressman.
Democrat: He hasn't won yet!
Fox News Anchor: You make a very adulterous point. We'll now conclude this debate with a Krusty campaign commercial.
Sunday, October 26, 2003
w.bloggar blog editing application
w.bloggar is a desktop application for editing blog posts (and templates) that goes beyond what browser-based blog editors can offer. For example, it allows off-line editing. w.bloggar is compatible with many popular weblog systems (Blogger, Moverable Type, b2, Roller, LiveJouranl, etc). w.bloggar is compatible with a number of popular blog APIs: Blogger API, metaWeblog API, MovableType API and b2. All of these are based on the XML-RPC specification. I've tried w.bloggar out my Blogger-based blog and it works great.
Picasa and Hello
We use Picasa at home to organize digital photographs. Picasa has a slick UI and does the basics very well. Picasa recently introduced a companion application called Hello for sharing pictures with friends over a peer-to-peer connection. An interesting alternative to posting pictures on a public web site or using an online photo sharing service such as Yahoo Photos, Shutterfly or Ofoto. Good stuff.
Pigs love pie
We stopped at a farm stand this afternoon to buy some pumpkins to carve for Halloween. Nearby the pumpkins was a fenced-in area with several goats, hens and a single pig in separate pens. The pig was busy gobbling down an entire cherry pie. The owner said that all his pigs have loved pie. Not surprising. Who doesn't love pie?
. The pig gets to eat all of the pies that haven't sold. He'll eat any type of pie except peach -- apparently peach is too sweet.
In contrast to this pig's discriminating taste in pies, his predecessor would eat anything. Tin cans, old shoes, cardboard, whatever he could get his teeth on. Apparently indiscriminate pigs are nothing new, years ago it was common for New England farmers to dump their household trash into the pig trough and let them chow down. Pigs must have pretty tough digestive systems to process all of this "roughage". This reminds me of a movie reference from Snatch where Brick Top is telling an associate how he uses pigs to dispose of bodies (Brick Top: You need at least sixteen pigs to finish the job in one sitting, so be wary of any man who keeps a pig farm. They will go through a body that weighs 200 pounds in about eight minutes). Yikes.
b2
b2 is PHP blogware. It supports multiple users, categories, comments, bookmarklets, RSS syndication, file/image upload, the Blogger API, weblogs.com ping, etc. It requires PHP4 and MySQL. My ISP supports these so I may finally wean myself off Blogger and give b2 a try. Note: I don't have anything against Blogger, I just want a few features that Blogger doesn't support and would like to dig a bit more into PHP.
Antville
Antville is an open source project aimed to make an "easy to maintain and use" weblog hosting system. It's entirely written in JavaScript and based on Helma, a powerful and fast scriptable open source web application server (which itself is written in Java). Antville works with a relational database such as MySQL
Sounds interesting, I hadn't heard ot Antville or Helga before. My ISP doesn't support Java hosting but I may try this out locally.
Sounds interesting, I hadn't heard ot Antville or Helga before. My ISP doesn't support Java hosting but I may try this out locally.
McPhling
It's amazing how many people are writing software for Palm OS. There are quite a few applications and extensions that are real time savers. One Palm OS extension that I recently discovered is called McPhling. It makes it easy to jump back to the last application that you were using or pick among the last N apps that you used. Very useful.
Lost again
We saw Lost in Translation last night. My second time. The first half of the film was funnier than I remembered. It's a terrific movie, worth a second viewing. Go see it.
Friday, October 24, 2003
Infrequently Asked Questions in comp.lang.c
Geek fun in a phony FAQ. (Via MetaFilter)
C# Language Specification 2.0
The C# language will get a pile of new features in its second release. There's a C# Version 2.0 Specification document on Microsoft's web site that goes into detail on new features. Major highlights include:
It will be interesting to see if C# and Java continue to "one up" one another over the next few years or plateau at a certain level of complexity. Unconstrained language evolution is hard since design choices made earlier constraint what you can add. (Via Lambda the Ultimate)• Generics permit classes, structs, interfaces, delegates, and methods to be parameterized by the types of data they store and manipulate. Generics are useful because they provide stronger compile-time type checking, require fewer explicit conversions between data types, and reduce the need for boxing operations and run-time type checks.
• Anonymous methods allow code blocks to be written "in-line" where delegate values are expected. Anonymous methods are similar to lambda functions in the Lisp programming language. C# 2.0 supports the creation of "closures" where anonymous methods access surrounding local variables and parameters.
• Iterators are methods that incrementally compute and yield a sequence of values. Iterators make it easy for a type to specify how the foreach statement will iterate over its elements.
• Partial types allow classes, structs, and interfaces to be broken into multiple pieces stored in different source files for easier development and maintenance. Additionally, partial types allow separation of machine-generated and user-written parts of types so that it is easier to augment code generated by a tool.
Wednesday, October 22, 2003
QuikClot
I heard a report on QuikClot on the radio this morning. QuikClot is an inert substance that can be poured over an open wound to stop bleeding. It's been in use by the military in Afghanistan and Iraq and has been saving lives, especially when it can take hours to get a wounded soldier to a hospital. When poured directly into an open wound, QuikClot acts like a molecular sieve, sifting molecules by size. The larger platelet and clotting factor molecules do not fit through the QuikClot material and remain in the wound in a highly concentrated form. This promotes rapid natural clotting and prevents severe blood loss. Behind the technology is an interesting tale of an accidental inventor (Frank Hursey) who discovered a terrific application idea which took 15 years to bring it to use.
Tuesday, October 21, 2003
The Dylan Programming Language
Here's a little programming language history that I dug up. Years ago, I had been tracking the progress of the Dylan programming language. Back then Apple was promoting it as "the next big thing". It is a cool language but it never really found enough of a following.
Dylan began with Apple's acquisition of Coral Software in Cambridge, MA. Coral developed Macintosh Common Lisp. Apple asked them to continue to support MCL and simultaneously develop a new dynamic language with the power and convenience of Lisp and Smalltalk but with the performance required for production applications. Dylan started out with Lisp prefix syntax but eventually supported a more conventional infix syntax. The tools and environment were hosted in MCL but standalone Macintosh executables could be generated.
The Apple Newton was originally going to be programmed in Dylan but a series of delays and memory constraints eventually led to it being abandoned. The Newton software team looked at Self which led to the development of the prototype-based language NewtonScript.
The original code name for Dylan was Ralph (after Ralph Ellison, author of Invisible Man). When the Newton team decided to develop NewtonScript, Ralph was refocused for use on the Macintosh. Apple decided to name the product Dylan, which stood for Dynamic language. Apple distributed a Beta release at WWDC in May 1994. A few months later, Bob Dylan sued Apple for trademark infringement. According to the lawsuit, "Apple is intentionally using, and intentionally has used, the names of famous individuals, including (Isaac) Newton, Carl Sagan and now Dylan, in conjunction with Apple's products in a deliberate attempt to capitalize on the goodwill associated with these famous individuals". Apple settled out-of-court and obtained the rights to trademark Dylan. Apple Dylan shipped in Fall 1995 but the project was abandoned shortly afterwards.
Mike Lockwood relates the last days of the Apple Dylan project. Sad but pretty funny. Oliver Steele was the project lead for the Dylan development environment and has some screen shots of what the IDE looked like.
Despite Apple's abandonment of Dylan, there's still a user community out there and a few implementations of the language. The Apple Dylan release is still available but doesn't run on OS X. There's also Gwydion Dylan, the Marlais interpreter and Functional Developer, The first two are open source projects, the last is a commercial product.
Dylan began with Apple's acquisition of Coral Software in Cambridge, MA. Coral developed Macintosh Common Lisp. Apple asked them to continue to support MCL and simultaneously develop a new dynamic language with the power and convenience of Lisp and Smalltalk but with the performance required for production applications. Dylan started out with Lisp prefix syntax but eventually supported a more conventional infix syntax. The tools and environment were hosted in MCL but standalone Macintosh executables could be generated.
The Apple Newton was originally going to be programmed in Dylan but a series of delays and memory constraints eventually led to it being abandoned. The Newton software team looked at Self which led to the development of the prototype-based language NewtonScript.
The original code name for Dylan was Ralph (after Ralph Ellison, author of Invisible Man). When the Newton team decided to develop NewtonScript, Ralph was refocused for use on the Macintosh. Apple decided to name the product Dylan, which stood for Dynamic language. Apple distributed a Beta release at WWDC in May 1994. A few months later, Bob Dylan sued Apple for trademark infringement. According to the lawsuit, "Apple is intentionally using, and intentionally has used, the names of famous individuals, including (Isaac) Newton, Carl Sagan and now Dylan, in conjunction with Apple's products in a deliberate attempt to capitalize on the goodwill associated with these famous individuals". Apple settled out-of-court and obtained the rights to trademark Dylan. Apple Dylan shipped in Fall 1995 but the project was abandoned shortly afterwards.
Mike Lockwood relates the last days of the Apple Dylan project. Sad but pretty funny. Oliver Steele was the project lead for the Dylan development environment and has some screen shots of what the IDE looked like.
Despite Apple's abandonment of Dylan, there's still a user community out there and a few implementations of the language. The Apple Dylan release is still available but doesn't run on OS X. There's also Gwydion Dylan, the Marlais interpreter and Functional Developer, The first two are open source projects, the last is a commercial product.
Treo 600 review -- after one week
I'm sure that many (all?) of you are sick of reading about my Treo 600. If so, skip to the next entry. I just wanted to jot down my impressions after one week of usage. Overall I really like this phone. Nearly everything is better than the Treo 300.
Pros: Answering the phone with one hand is easy. The 300 had a flip cover which made this a tricky maneuver. The 600 has a very solid look and feel. The screen is bright. I can now read it easily in daylight. Blazer 3.0 has JavaScript and CSS support. Pages render faster and look nicer. With the 300, my office building had a couple of "dead spots" where I couldn't get reception. No "dead spots" with the 600. The 600 has an SD card slot so I can backup to a card, store pictures, MP3 files, etc. HotSync with the 600 is a lot faster. The processor in the 600 is a lot faster than the 300. The 600 has great sound quality for ringers, games, etc. and also includes MP3 support. The 600 has a camera which is a fun addition. Not for serious stuff but comes in handy.
Cons: The keyboard is a little cramped compared to the 300. I'm willing to trade off the narrower phone for this. It would nice if more applications supported the 5-way control pad. I've heard that this is also an issue with the Palm Tungstens. It would have been nice if the 600 included Bluetooth support. Sounds like there will be a Bluetooth SDIO card but that won't be as convenient. RecoEcho doesn't work on the 600. All of the alternatives (Jot, Newpen, Graffiti Anywhere) force me to learn a few new pen strokes -- I've been using Graffiti for seven years so I just need to adjust my brain a bit
I've found some software incompatibilities which seem to be related to Palm OS5. ListMaker doesn't work at all. Eudora works okay but has a display glitch after you fetch new mail. Hand/RSS has some display problems.
By the way, Gizmodo, the gadgets weblog, has collected a set of reviews of the Treo 600 including a video review that shows how the display looks in daylight.
Pros: Answering the phone with one hand is easy. The 300 had a flip cover which made this a tricky maneuver. The 600 has a very solid look and feel. The screen is bright. I can now read it easily in daylight. Blazer 3.0 has JavaScript and CSS support. Pages render faster and look nicer. With the 300, my office building had a couple of "dead spots" where I couldn't get reception. No "dead spots" with the 600. The 600 has an SD card slot so I can backup to a card, store pictures, MP3 files, etc. HotSync with the 600 is a lot faster. The processor in the 600 is a lot faster than the 300. The 600 has great sound quality for ringers, games, etc. and also includes MP3 support. The 600 has a camera which is a fun addition. Not for serious stuff but comes in handy.
Cons: The keyboard is a little cramped compared to the 300. I'm willing to trade off the narrower phone for this. It would nice if more applications supported the 5-way control pad. I've heard that this is also an issue with the Palm Tungstens. It would have been nice if the 600 included Bluetooth support. Sounds like there will be a Bluetooth SDIO card but that won't be as convenient. RecoEcho doesn't work on the 600. All of the alternatives (Jot, Newpen, Graffiti Anywhere) force me to learn a few new pen strokes -- I've been using Graffiti for seven years so I just need to adjust my brain a bit
I've found some software incompatibilities which seem to be related to Palm OS5. ListMaker doesn't work at all. Eudora works okay but has a display glitch after you fetch new mail. Hand/RSS has some display problems.
By the way, Gizmodo, the gadgets weblog, has collected a set of reviews of the Treo 600 including a video review that shows how the display looks in daylight.
Score Higher in Google Search Engine
Except for personal vanity, I don't really care how the pages from my blog are ranked on Google. But it's still interesting to understand how Google computes page scores. Eric Wolfram has written an interesting article on how to score higher in Google Search Engine. Eric's advice in a nutshell:
I like that. Even if it's not true it's nice to imagine that it is.(Via rhs)Be helpful to someone. It is that simple. It is the single most important thing you can do to improve your score on Google.
Sunday, October 19, 2003
Kids Play
Another article to make you feel old. Electronic Gaming Monthly magazine got a bunch of 11 year-old kids to play classic video games like Donkey Kong, Tetris and Pong, and transcribed their reactions. Here's a snippet of their reactions to Pong:
They were also deeply disappointed that you couldn't make the blocks explode in Tetris.Tim: I would never pay to play something like this.
John: I'd sooner jump up and down on one foot. By the way, is this supposed to be tennis or Ping-Pong?
Becky: Ping-Pong.
Gordon: It doesn't even go over the net. It goes through it. I don't even think that thing in the middle is a net.
Tim: My line is so beating the heck out of your stupid line. Fear my pink line. You have no chance. I am the undisputed lord of virtual tennis. [Misses ball] Whoops.
John: Tim, how could you miss that? It was going like 1 m.p.h.
BobFest
As names go, Bob is common as dirt. I once worked for a company where so many people were named Bob, that I rarely needed to respond when someone called out for Bob. Being a Bob isn't all sweetness and light. It's so common that it doesn't stand out and people often forget it. Also, there's that whole SubGenius cult thing. But, I've just discovered, that there's something called "BobFest". Avon, Colorado runs an annual BobFest that has had 10,000 Bobs in attendance.
What's in Ned's Head?
"What's in Ned's Head?" would be a good name for a certain blog. It's also the name of a kids game where contestants pull icky objects out of Ned's ears and nose. It was a FamilyFun Toy of the Year award winner for 2003.
Treo 600 pictures
Here's a link to some nice pictures taken with a Treo 600. A lot better than anything I've taken so far. I'm still adjusting to the camera's limitations. It's a lot easier to take a good photo with my wife's Olympus C40Z. These pictures give me some hope that with enough patience, and the right lighting, the Treo can do reasonable well. (Via Miguel)
Saturday, October 18, 2003
Moblogs
Mobile blogging (Moblogging) is the ability to update blogs while on the move. It's gotten a lot of attention with the availability of camera equipped cellphones. In the first half of this year, camera-equipped cellphones outsold standalone digital cameras. Research group Strategy Analytics estimates that 65 million camera phones will be sold worldwide in 2003, or 13 percent of handset sales.
My Treo 600 has a camera. The image quality is typical for camera phones (640 x 480). There's no flash or zoom functions. It's useful for "fun" pictures, not serious photography. The image quality will surely improve with the next generation of camera phones. With what's available now the interesting aspect is "instant" sharing. The ability to share an image from anywhere right after it's taken is powerful.
Moblogging with pictures (sometimes called Photoblogging) may quickly overtake blogging with text. There are already a number of large moblog sites including Text America, Buzznet, Airblogging, Fotolog.net and CamBlog. Moblogging.org has some good rmoblog resources and links.
So what am I going to do with this stuff? I set up a moblog with Text America (bcongdon.textamerica.com) and sent a picture to it -- the picture was taken with a different camera, I was just trying out the upload feature. I'm not sure that I'm ready to share my life in pictures yet. I'm still getting used to the idea of sharing my thoughts via text.
Update: I just sent a couple of pictures to my moblog taken by the Treo 600. Nothing special. Just random photos. The whole process was pretty easy. Now if I just can find an easier way to post entries to my blog from the Treo 600. Sprint's wireless data network is fast and the Blazer browser on the Treo 600 supports full HTML, JavaScript and CSS. But Blogger's UI doesn't work so well on a small screen. One of these days I'm going to post a rant about websites that look like crap on the Treo. In many cases, it would take very little effort for the web designers to do a better job.
My Treo 600 has a camera. The image quality is typical for camera phones (640 x 480). There's no flash or zoom functions. It's useful for "fun" pictures, not serious photography. The image quality will surely improve with the next generation of camera phones. With what's available now the interesting aspect is "instant" sharing. The ability to share an image from anywhere right after it's taken is powerful.
Moblogging with pictures (sometimes called Photoblogging) may quickly overtake blogging with text. There are already a number of large moblog sites including Text America, Buzznet, Airblogging, Fotolog.net and CamBlog. Moblogging.org has some good rmoblog resources and links.
So what am I going to do with this stuff? I set up a moblog with Text America (bcongdon.textamerica.com) and sent a picture to it -- the picture was taken with a different camera, I was just trying out the upload feature. I'm not sure that I'm ready to share my life in pictures yet. I'm still getting used to the idea of sharing my thoughts via text.
Update: I just sent a couple of pictures to my moblog taken by the Treo 600. Nothing special. Just random photos. The whole process was pretty easy. Now if I just can find an easier way to post entries to my blog from the Treo 600. Sprint's wireless data network is fast and the Blazer browser on the Treo 600 supports full HTML, JavaScript and CSS. But Blogger's UI doesn't work so well on a small screen. One of these days I'm going to post a rant about websites that look like crap on the Treo. In many cases, it would take very little effort for the web designers to do a better job.
Bloglines
A couple of things I found in web statistics for this blog:
• In the referrer log I found references to Bloglines, a free service that lets you subscribe to the RSS feeds of your favorite blogs. A web-based RSS aggregator. Here's a screenshot
• Some of my pages have been referenced from Google queries. I have a list of the search phrases that were used. Best one so far is "boston accents ben affleck". Most common search phrase seems to be people looking for the "ibm logo".
• In the referrer log I found references to Bloglines, a free service that lets you subscribe to the RSS feeds of your favorite blogs. A web-based RSS aggregator. Here's a screenshot
• Some of my pages have been referenced from Google queries. I have a list of the search phrases that were used. Best one so far is "boston accents ben affleck". Most common search phrase seems to be people looking for the "ibm logo".
Happy Brithday Lava Lamp
The lava lamp is celebrating its 40th birthday. Over at oozing goo you can learn how to make your own. Lava lamps are becoming popular again as a cool retro thing.
What fad will have the next retro revival? Mood rings, black lights, pet rocks, macrame? How about the CB Radio? Well, at least in spirit. Some folks have compared blogging to CB Radio. 10-4
What fad will have the next retro revival? Mood rings, black lights, pet rocks, macrame? How about the CB Radio? Well, at least in spirit. Some folks have compared blogging to CB Radio. 10-4
Spam Filters That Fight Back
Paiul Graham proposes a way to punish spammers:
I like the idea but 'm not sure that it would work. First, as Graham notes, the filter would have to ensure that this is only done to suspected spammers. It would be bad if an innocent web site was punished by mistake. Also, it appears that a lot of spam includes links that literally, or through encoding, includes the recipient's email address. This is sometimes done in image references so even just displaying the email may "leak" your email address to the spammer. Unless the spammer's web site gets so overwhelmed by HTTP traffic, the end result of this "punishing" may just be that the spammer gets a list of email addresses that are clearly active.So I'd like to suggest an additional feature to those working on spam filters: a "punish" mode which, if turned on, would spider every url in a suspected spam n times, where n could be set by the user.
The huge volume of the spam, which has so far worked in the spammer's favor, would now work against him, like a branch snapping back in his face. Auto-retrieving spam filters would drive the spammer's costs up, and his sales down: his bandwidth usage would go through the roof, and his servers would grind to a halt under the load, which would make them unavailable to the people who would have responded to the spam.
Pump out a million emails an hour, get a million hits an hour on your servers.
Bayesian filter for comment spam filterng
A more sophisticated comment spam filtering technqiue based on the Bayesian algorithm that's used to filter out email spam. (See A Plan For Spam by Paul Graham for details on the Bayesian algorithm).
Friday, October 17, 2003
A curse of their own?
According to The Smoking Gun, the New York Post accidently printed an editorial bemoaning Thursday night's Yankees loss to the Red Sox, noting that the "Curse of the Bambino boomeranged this year".
iTunes for Windows
I downloaded a copy of iTunes for Windows. It's pretty nice. Does Apple now "get" how to write Windows software? In the past it always felt like there must be some sort of stigma inside Apple for developers who write Windows versions of Apple software: Quicktime, Newton desktop software, etc. No such stigma exists at Microsoft for Macintosh developers. Microsoft makes boatloads of money selling software for the Macintosh. iTunes will make money not as software but as a service. It's been a success on the Macintosh. It will be interesting to see whether it takes off on Windows or not.
Thursday, October 16, 2003
BlogSnob
"It's the the better, faster way to publicize your personal site". It's BlogSnob. Despite the fact that several thousand blogs have listed themselves with BlogSnob, I don't think I'll add mine. Call me a snob but I don't see the point to advertising random blogs that I don't actually read.
Kill Bill
I saw Kill Bill: Vol. 1 this evening. If you've read reviews of this film, you'll know that there are buckets of blood and gore. This is not for the squeamish. It's all intended as film geek fun and mostly it works. I'm not enough of a film geek to catch all of the movie references in Kill Bill. I found this interview with Quentin Tarantino where he goes into great detail on his influences and film references found here.
Update: So, did I like Kill Bill or not? I'd give it a thumbs up but I really want to see Vol 2 to decide whether it really hangs together.
Update: So, did I like Kill Bill or not? I'd give it a thumbs up but I really want to see Vol 2 to decide whether it really hangs together.
New Thinkpads Sense Motion
The latest IBM Thinkpads include motion sensor technology that can protect data if their owner drops them or runs down the hall with them. Basically, when it detects accelerated motion it parks the read/write heads on the hard drive to protect the data.
We can take this to the next level, like this fanciful Dynabook cartoon from Walter Smith's web site. When the laptop (or a PDA or cellphone) detects potential disaster it transfers all crucial data over wireless before hitting the floor. Of course, you would need a high bandwidth wireless connection to do this.
By the way, Walter Smith worked at Apple on the Newton. He designed and built NewtonScript and the Newton object store. He currently works for Microsoft.
We can take this to the next level, like this fanciful Dynabook cartoon from Walter Smith's web site. When the laptop (or a PDA or cellphone) detects potential disaster it transfers all crucial data over wireless before hitting the floor. Of course, you would need a high bandwidth wireless connection to do this.
By the way, Walter Smith worked at Apple on the Newton. He designed and built NewtonScript and the Newton object store. He currently works for Microsoft.
Permalinks
A couple of people have asked why I don't have Permalinks on my blog entries.. Actually, I do, they just were not marked very well. I've added permalinks on entry titles. Enjoy. Let me know if you encounter any problems.
BlogKomm: single window blog and comments
Pete Lyons has started using a comment system written in PHP called BlogKomm that looks pretty good. It doesn't use popup windows which is a feature I'd like to have. I'm going to stick with SquawkBox for now but I may switch to BlogKomm when I get some free cycles.
My new toy: Treo 600
As I mentioned in an early posting, Handspring is offering an upgrade program for owners of Treo 180, 270 and 300.
I took advantage of the offer and ordered one. It arrived yesterday. The service swap from my Treo 300 to the 600 was done in 10 minutes. The Sprint customer server rep on the phone knew all the right information. Kudos to Sprint.
I've moved my data over and most of my applications. Only a couple of minor glitches that seem to be related to the newer version of the PalmOS (OS5) rather than the Treo 600 itself. I'm still in the "gee whiz" stage with the phone but so far it meets or exceeds my expectations.
I took advantage of the offer and ordered one. It arrived yesterday. The service swap from my Treo 300 to the 600 was done in 10 minutes. The Sprint customer server rep on the phone knew all the right information. Kudos to Sprint.
I've moved my data over and most of my applications. Only a couple of minor glitches that seem to be related to the newer version of the PalmOS (OS5) rather than the Treo 600 itself. I'm still in the "gee whiz" stage with the phone but so far it meets or exceeds my expectations.
Wednesday, October 15, 2003
Joel on Exceptions
Lots of bloggers are taking exception with Joel Spolsky's article on exceptions. I can't add much more except to say that, in my experience, exceptions win big over error codes. I've built large software systems using error codes and others that used exceptions. When the programming language supported exceptions well, the results were much better when we used exceptions.
I find much of what Joel has written to be well thought out and it tends to agree with my own experience. This makes it even more surprising when he goes off like this. When Joel was writing a lot more articles on software development and project management, I would hear people quoting him as "if Joel said it, it must be true". This can be dangerous. I just hope I don't start hearing people quoting his article on Exceptions.
Update: Joel has softened his stance on Exceptions. I hope he rewrites the original article before it ends up in his next book.
One last bit on exceptions. I started writing C++ code before the language supported exceptions. When you're in a deeply nested call stack and you just want to bail you want to be able to unwind the stack easily. Exceptions make that easy but we didn't have them. All we had was Posix setjmp/longjmp. So we created a class called Catch to wrap the setjmp/longjmp calls. A call would look like this:
Pretty gross. Even back then this approach was of limited use since destructors are not called when the stack unwinds from a longjmp call. But if all you have is a hammer... Also, this approach requires that the compiler inline the Catch::try and Catch::throw methods, otherwise it doesn't work. With GCC this worked fine. Thankfully after exceptions were added to C++, I never had to deal with setjmp/longjmp again. These Posix functions are really a blunt instrument. Nasty bugs can crop up if you don't entirely understand how they work.
I find much of what Joel has written to be well thought out and it tends to agree with my own experience. This makes it even more surprising when he goes off like this. When Joel was writing a lot more articles on software development and project management, I would hear people quoting him as "if Joel said it, it must be true". This can be dangerous. I just hope I don't start hearing people quoting his article on Exceptions.
Update: Joel has softened his stance on Exceptions. I hope he rewrites the original article before it ends up in his next book.
One last bit on exceptions. I started writing C++ code before the language supported exceptions. When you're in a deeply nested call stack and you just want to bail you want to be able to unwind the stack easily. Exceptions make that easy but we didn't have them. All we had was Posix setjmp/longjmp. So we created a class called Catch to wrap the setjmp/longjmp calls. A call would look like this:
The Catch class looked something like this:Catch cb;
int err = 0;
if ((err = cb.try()) == 0) {
// normal code path
// we can pass cb to methods if we need a non-local exit
// if an error occurs here we can call cb.throw();
}
else (
// an error has occurred, the error code is in err
}
Big caveat: this was 1990 era C++ code. For illustrative use only.// Class def
public class Catch {
private:
jmp_buf m_env;
public:
inline Catch() { }
inline int try() { return setjmp(&m_env); }
inline void throw(int err) { longjmp(m_env, err); }
}
Pretty gross. Even back then this approach was of limited use since destructors are not called when the stack unwinds from a longjmp call. But if all you have is a hammer... Also, this approach requires that the compiler inline the Catch::try and Catch::throw methods, otherwise it doesn't work. With GCC this worked fine. Thankfully after exceptions were added to C++, I never had to deal with setjmp/longjmp again. These Posix functions are really a blunt instrument. Nasty bugs can crop up if you don't entirely understand how they work.
Redundant acronyms
The Linguistic List has a list of redundant acronyms. They sound silly when expanded but rendundancy isn't always a bad thing. You can't always assume that a reader knows the definition of an acronym. Asking a user to enter a PIN number is clearer than just asking for a PIN. Sometimes it's just safer to be redundant. (Okay, I've just defended rendundancy, flame away!)
Tuesday, October 14, 2003
O'Reilly Network: Ten Things I Dig About Panther
Even more reasons to get a Mac.
Comment Spam
Six Apart has some ideas for dealing with comment span in weblogs. This is an increasing problem, apparently Moveable Type weblogs are getting hit quite a bit since MT generated pages are pretty similar. One proposed solution is an MT-Blacklist for comment spammers, similar in concept to Realtime Blackhole Lists (RBL) used to protect against email Spammers.
Monday, October 13, 2003
ASCII Matrix
Found this link to an ASCII version of the bullet dodging scene from The Matrix. Cool. Very retro. There's also a large collection of other ASCII movies.
Blog Name Generator
After trying out a couple oddball names I decided to go literal when I named this blog. Maybe if I'd found the Blog Name Generator first I would have ended up with "Sparkling Weevil" or "Reticulated Gizmo". Hmm... Nah.
For a somewhat different namespace: check out the Band Name Maker.
For a somewhat different namespace: check out the Band Name Maker.
Driving to distraction
Talking on a cell phone while driving is bad enough but using your laptop?. The driver in this case may have been using a laptop computer before he sideswiped a car killing a woman and critically injuring her teenage son. This is just reckless and very sad. 60 miles per hour = 88 feet per second. Looking down at a laptop screen for a few seconds translates into a few hundred feet of traveling blind. (Via ObscureStore)
RSS Feed
I modified my RSS feed to be a bit more useful. The links were screwed up when I was using the rssify script. Click on this link
. Let me know if you see any remaining problems.
. Let me know if you see any remaining problems.
Blog hosting
I've changed the hosting of my blog to JumpDomain. Pages should load a lot faster. bobcongdon.com is still a redirect. JumpDomain hosts bobcongdon.net. At some point soon I'll change everything over. I want to take things a step at a time. First order of business will be to fix my RSS feed since I can now do PHP.
Sunday, October 12, 2003
Joel on Unicode
Joel Spolsky has a good article on Unicode and Character Sets. In the article he mentions that a common misconception of Unicode is that it's a 16-bit character set.
The way to deal with surrogate pairs from Java is to stop thinking of a char as representing a Unicode character. It doesn't. A char represents a UTF-16 code point, which may be a surrogate. This is somewhat disappointing since the intent on defining a "wide" char type was to avoid dealing with variable length encoding schemes. (It's interesting to note that C# defines a Char as a 16-bit quantity and suffers from the same issues. It also resorts to surrogate pairs).
Manipulating Unicode characters and strings is just the tip of the Internationalization (aka I18N) iceberg. Number and date formatting, handling word breaks, dealing with different types of calendars, etc. all come into play when building applications that will work in multiple locales. For these and other I18N tasks, using the International Components for Unicode (ICU4C for C/C++, ICU4J for Java) is highly recommended.
If you're programming C/C++ with Unicode (like Joel) you've been using wchar_t for Unicode code points. If you're programming in Java, you've been using char. Both datatypes are defined as unsigned 16-bit quantities. But how can 16-bits hold a full Unicode character? Well, it can't so things are a little messy. The Unicode 3.1 standard added characters outside the Basic Multilingual Plane (BMP). The BMP consists of the first 64K characters in Unicode. The remaining characters (known as "supplementary characters") are in the supplementary planes 1-16. Each plane consists of 64K characters. To represent a supplementary characters with wchar_t / char we need to use a surrogate pair. A surrogate pair encodes a single character as a sequence of two code units. This encoding scheme is defined in the Unicode 3.1 standard.There is no real limit on the number of letters that Unicode can define and in fact they have gone beyond 65,536 so not every unicode letter can really be squeezed into two bytes, but that was a myth anyway.
The way to deal with surrogate pairs from Java is to stop thinking of a char as representing a Unicode character. It doesn't. A char represents a UTF-16 code point, which may be a surrogate. This is somewhat disappointing since the intent on defining a "wide" char type was to avoid dealing with variable length encoding schemes. (It's interesting to note that C# defines a Char as a 16-bit quantity and suffers from the same issues. It also resorts to surrogate pairs).
Manipulating Unicode characters and strings is just the tip of the Internationalization (aka I18N) iceberg. Number and date formatting, handling word breaks, dealing with different types of calendars, etc. all come into play when building applications that will work in multiple locales. For these and other I18N tasks, using the International Components for Unicode (ICU4C for C/C++, ICU4J for Java) is highly recommended.
Two comedies: one good, one bad
A great film deserves a long review. Sometimes a bad film deserves a long review too -- especially if it's an ambitious failure. Some movies don't deserve much analysis -- the film makers aren't really trying too hard and a few words will suffice. Case in point on the two films I recently saw.
I watched School of Rock on Thursday night. All the movies I really wanted to see Kill Bill, Intolerable Cruelty and Mystic River weren't opening until Friday night. So I settled for School of Rock. It's not a great movie, but pretty good. Jack Black is usually only good in small doses but this seems to be the perfect role for him. And there's a decent director and screen writer behind the project so it comes off as the grunge version of The Bad News Bears.
We rented Anger Management over the weekend. This film is bad, very bad. Lots of acting talent squandered with a terrible script: Jack Nicholson, Marisa Tomei, John Turturro, Woody Harrelson, John C. Reilly. Even Rudy Giuliani shows up in a cameo. I've never been a fan of Adam Sandler but this movie made me feel a little sorry for him. Beneath his irritating shtick he might be a passable actor. He might do okay with the right director and script. (No, not Punch-Drunk Love, I had high hopes for that one but was disappointed).
I watched School of Rock on Thursday night. All the movies I really wanted to see Kill Bill, Intolerable Cruelty and Mystic River weren't opening until Friday night. So I settled for School of Rock. It's not a great movie, but pretty good. Jack Black is usually only good in small doses but this seems to be the perfect role for him. And there's a decent director and screen writer behind the project so it comes off as the grunge version of The Bad News Bears.
We rented Anger Management over the weekend. This film is bad, very bad. Lots of acting talent squandered with a terrible script: Jack Nicholson, Marisa Tomei, John Turturro, Woody Harrelson, John C. Reilly. Even Rudy Giuliani shows up in a cameo. I've never been a fan of Adam Sandler but this movie made me feel a little sorry for him. Beneath his irritating shtick he might be a passable actor. He might do okay with the right director and script. (No, not Punch-Drunk Love, I had high hopes for that one but was disappointed).
Saturday, October 11, 2003
HttpClient
Simon Brown recommends using the Jakarta Commons HttpClient in his blog. From personal experience, I'd go a step further and say that if you're making HTTP requests from Java and care that you get it right, you'd be crazy to use the java.net.URLConnection and related classes.
URLConnection handles multiple protocol schemes (HTTP, FTP, Gopher, etc.) with a stream-oriented abstraction. This works for simple "get" operations but these protocols are different enough that you will want more control. HttpClient allows you to handle various types of authentication, deal with proxy servers, manage cookies, handle HTTPS, stream data in both directions without caching, handle response codes, etc. Highly recommended.
URLConnection handles multiple protocol schemes (HTTP, FTP, Gopher, etc.) with a stream-oriented abstraction. This works for simple "get" operations but these protocols are different enough that you will want more control. HttpClient allows you to handle various types of authentication, deal with proxy servers, manage cookies, handle HTTPS, stream data in both directions without caching, handle response codes, etc. Highly recommended.
Wednesday, October 08, 2003
Evolution of Alphabets
Cool animated graphics showing the evolution of various alphabets. The Latin alphabet seems to have the most complex evolution. (Via memepool)
Quiet Time
I've been getting more unscheduled office visitors recently. Closing the door isn't a deterrent -- there's a window next to the door so it's easy to peer in. As a technical lead I have to accept interruptions as part of the job. But I still design and code which require absolute concentration -- to get into "the zone". As Joel Spolsky writes:
Several years ago we tried an experiment that was called "Quiet Time". It was inspired by an article in the Sloan Management Review (can't find a Google link). No interruptions in the mornings. No scheduled morning meetings. If two or more people wanted to work on something closely in an office, they could do so. We tried it for a couple of weeks. How did it work? Okay, I guess but it wasn't continued beyond the original two week trial. It became a joke for some people. Since we were part of a much larger organization, the rules only applied to this team, not to everyone.
One alternative to enforced quiet time is to schedule your "focused" work when you're less likely to be interrupted -- early in the morning or late in the evening. Working from home can a good alternative as well. And it's always good to remember to that it's a two-way street: treat others as you'd like to be treated. I'm guilty of interrupting others too. It's hard to avoid that immediate "need to know" when you're stuck on a problem As a co-worker once told me about his own work style: "I hate being interrupted while I'm coding. But when I have a question, I like to just walk down the hall and ask, I don't want to wait".
Other forms of communication: email, instant messaging and telephone can be ignored or deferred if you're in "the zone". It's not direct human contact. Not so with a visitor. It's rude to tell someone to just go away. And once they've interrupted, the damage may already be done. Your concentration may be shot. So what to do?The other trouble is that it's so easy to get knocked out of the zone. Noise, phone calls, going out for lunch, having to drive 5 minutes to Starbucks for coffee, and interruptions by coworkers -- ESPECIALLY interruptions by coworkers -- all knock you out of the zone. If you take a 1 minute interruption by a coworker asking you a question, and this knocks out your concentration enough that it takes you half an hour to get productive again, your overall productivity is in serious trouble. If you're in a noisy bullpen environment like the type that caffeinated dotcoms love to create, with marketing guys screaming on the phone next to programmers, your productivity will plunge as knowledge workers get interrupted time after time and never get into the zone.
Several years ago we tried an experiment that was called "Quiet Time". It was inspired by an article in the Sloan Management Review (can't find a Google link). No interruptions in the mornings. No scheduled morning meetings. If two or more people wanted to work on something closely in an office, they could do so. We tried it for a couple of weeks. How did it work? Okay, I guess but it wasn't continued beyond the original two week trial. It became a joke for some people. Since we were part of a much larger organization, the rules only applied to this team, not to everyone.
One alternative to enforced quiet time is to schedule your "focused" work when you're less likely to be interrupted -- early in the morning or late in the evening. Working from home can a good alternative as well. And it's always good to remember to that it's a two-way street: treat others as you'd like to be treated. I'm guilty of interrupting others too. It's hard to avoid that immediate "need to know" when you're stuck on a problem As a co-worker once told me about his own work style: "I hate being interrupted while I'm coding. But when I have a question, I like to just walk down the hall and ask, I don't want to wait".
Runtime bloat
My wife wanted a PDA for managing contacts, todo lists, etc. She loves her Samsung cellphone so rather than getting a combo cellphone/PDA, she got the Treo 90. It's nearly identical to my Treo 300. We started installing applications when it arrived. One application that she wanted was tiny, only 7K. But that was just the tip of the iceberg. It turns out that it required a runtime engine calls AppForge Booster. I downloaded the runtime and installed it. It used over 600K (!) of memory. AppForge is a VB environment extension that lets you generate applications for different PDAs including Palm and PocketPC. That's great for the application developer but the "price" of this portability to the end user is runtime bloat. The Treo 90 has 16MB but even with this much space, a 600K runtime is big. Especially for a simple little application. We ended up uninstalling the application and AppForge Booster and found an equivalent program that was only 50K.
Runtimes are a fact of life. It's certainly better to have a shareable runtime than lots of applications that statically include runtime code. Portable runtimes like Java are a boon to developers since they widens the potential market for their applications. The tradeoffs for users are: how big is the runtime compared to available space, how much of the runtime is actually used and how many applications are using the runtime (to amortize the cost).AppForge is relatively large compared to the amount of space on the device and the single application that used it. The Java runtime environment is large. The .NET runtime is also quite large. But they're both fairly small compared to the space available on the average PC.
Most PDAs and cellphones have relatively small amounts of storage but that's increasing rapidly. The original Palm 1000 released in 1996 had 128K of memory. The recently released Palm Tungsten T3 has 64MB, over 500 times the storage in seven years. Nearly all recent PDAs support removable memory cards that are moving into the gigabyte range. Before too long a 600K runtime won't seem so bad, I guess. But, given past history, software developers are more than up to the task to filling all of that new storage space with even bigger runtimes.
Runtimes are a fact of life. It's certainly better to have a shareable runtime than lots of applications that statically include runtime code. Portable runtimes like Java are a boon to developers since they widens the potential market for their applications. The tradeoffs for users are: how big is the runtime compared to available space, how much of the runtime is actually used and how many applications are using the runtime (to amortize the cost).AppForge is relatively large compared to the amount of space on the device and the single application that used it. The Java runtime environment is large. The .NET runtime is also quite large. But they're both fairly small compared to the space available on the average PC.
Most PDAs and cellphones have relatively small amounts of storage but that's increasing rapidly. The original Palm 1000 released in 1996 had 128K of memory. The recently released Palm Tungsten T3 has 64MB, over 500 times the storage in seven years. Nearly all recent PDAs support removable memory cards that are moving into the gigabyte range. Before too long a 600K runtime won't seem so bad, I guess. But, given past history, software developers are more than up to the task to filling all of that new storage space with even bigger runtimes.
Treo 600
The Treo 600 is out. Sprint began accepting orders and shipping this past Monday. I'm going to wait a bit while the early adopters help Handspring and Sprint work out the bugs.
but I definitely plan to upgrade.
Update: Handspring is offering an upgrade program for owners of Treo 180, 270 and 300. That offer combined with selling my 300 sounds like a good deal.
but I definitely plan to upgrade.
Update: Handspring is offering an upgrade program for owners of Treo 180, 270 and 300. That offer combined with selling my 300 sounds like a good deal.
Tuesday, October 07, 2003
Exceptions under the covers
Ned provides a link to an excellent article by Chris Brumme on how exceptions work on Windows. It would be great if other platform and compiler vendors did as good a job of documenting their exception handling implementations.
Bill Venners has a somewhat less detailed article on exceptions in Java. There's also a good writeup on how Java exceptions work on ChurchhillObjects.com. There are a number of other good Java-related articles there too (for example, see this article on the effective use of interfaces and abstract classes).
Bill Venners has a somewhat less detailed article on exceptions in Java. There's also a good writeup on how Java exceptions work on ChurchhillObjects.com. There are a number of other good Java-related articles there too (for example, see this article on the effective use of interfaces and abstract classes).
Monday, October 06, 2003
The Blogging Iceberg
According to a recent survey, of an estimated 4.12 million blogs have been created on eight different blogging services, two-thirds of them have been abandoned. Is this really a surprising finding? These are free weblog services. Creating a weblog takes two minutes. Adding content on a regular basis takes a time commitment. Most people won't bother. I think the statistics on abandonment of free webmail accounts are probably similar. Creating a free email account is quick and easy. You don't really risk anything by abandoning it.
Sunday, October 05, 2003
Cats: sometimes it's hard to believe that they're agile killing machines
My younger son and I chased a couple of cats out of our yard this morning. They had caught a chipmunk and were batting it around. It was stunned but still alive. It's "in their nature" to catch prey but two overfed housecats didn't need this chipmunk for a meal. We have two indoor cats. They don't get a lot of attention from us these days but BC (before children) we used to play with them all of the time. It's amazing what a cat will do to grab a piece of string or chase down a toy. Cats are amazingly agile but not particularly bright. Here's video evidence on both counts.
Pragma (tic)
I was thinking about making a "pragmatic" choice in the design of an interface and thought about the pragma directive. I don't write very much C++ code these days but when I did I sometimes needed to use the #pragma directive to control warnings, force structure packing, etc. Microsoft C++ supports 32 different #pragma directives. You can even deprecate functions using #pragma deprecated.
Little know factoid: the pragma directive was not invented for C++. It was borrowed from Ada which defined a pragma directive as a way to convey information to the compiler. I suppose since Ada has such a scurrilous reputation in the software community that the notion that C++ borrowed anything from it is disconcerting.
Ada was an ambitious project. It was to become the standard programming language for use in military systems (well, at least such systems that were funded by the US DOD). It has fallen far short of that goal but I've read that some military systems are written in Ada, not sure how many. Ada contained a lot of good ideas in language and environment design, pragma is just one example. Borrowing pragma for C++ was a pragmatic decision. Good ideas are where you find them.
Little know factoid: the pragma directive was not invented for C++. It was borrowed from Ada which defined a pragma directive as a way to convey information to the compiler. I suppose since Ada has such a scurrilous reputation in the software community that the notion that C++ borrowed anything from it is disconcerting.
Ada was an ambitious project. It was to become the standard programming language for use in military systems (well, at least such systems that were funded by the US DOD). It has fallen far short of that goal but I've read that some military systems are written in Ada, not sure how many. Ada contained a lot of good ideas in language and environment design, pragma is just one example. Borrowing pragma for C++ was a pragmatic decision. Good ideas are where you find them.
Luna di giorno
I noticed the moon in the late afternoon today while driving. I don't notice the moon that frequently and figured that in the day time it must be more visible some times and not others. A Google search turned up a raft of answers including this from a Planetarium in Madison, WI. According to their schedule, today wasn't supposed to be a good day to see the moon. I doubt that there's an observable difference between Madison and Boston. Hmm.
This reminds me of science fiction films where the action takes place on a alien planet. They usually show two moons visible in the sky or visible planets to make it seem otherworldly. But, given that I barely notice the one moon we have when it's visible during the day, if a second one was there I'd barely notice it either. Now a Vogon construction ship, that I, hopefully, would notice. Not that it would do any good.
This reminds me of science fiction films where the action takes place on a alien planet. They usually show two moons visible in the sky or visible planets to make it seem otherworldly. But, given that I barely notice the one moon we have when it's visible during the day, if a second one was there I'd barely notice it either. Now a Vogon construction ship, that I, hopefully, would notice. Not that it would do any good.
Saturday, October 04, 2003
RSS Reader for Palm
I'm not convinced that RSS readers are a good way to read weblogs. I've tried a few of them but the experience is akin to reading Usenet news. The unique style of each weblog is lost. There's just the bland uniformity of a three-pane UI. That said, I was skimming through my copy of Palm OS Programming earlier today and thought that an RSS reader might be a good programming project to try. It's a relatively simple application -- at least compared to a full-fledged browser -- and I hadn't seen an RSS reader available for Palm OS. It turns out that an RSS reader for Palm OS was just released. I just downloaded a copy of Hand/RSS for Palm OS. It has a few rough edges but for a 1.0 release it works just fine. I guess I'll put that Palm project on hold for now.
Friday, October 03, 2003
Hi, my name is Timberland!
Corporations spend huge sums to establish and promote brand names. Apparently brand affinity now goes beyond influencing buying decisions. According to this article, American parents are using brand names for their children. US social security records indicate that in 2000, 49 children were named Canon, followed by 11 Bentleys, five Jaguars and a Xerox. Six children born in 2000 were named Timberland. The article quotes the mother of one of the three-year old Timberlands:
. (Via BoingBoing)
Note: the rumor that I was named after Microsoft Bob is completely untrue."His daddy insisted on it because Timberlands were the pride of his wardrobe. The alternative was Reebok," said the 32-year-old nurse, who is now divorced. "I wanted Kevin."
. (Via BoingBoing)
Thursday, October 02, 2003
Building a Balancing Scooter
Trevor Blackwell has built his own Segway clone. Not as flashy as a "real" Segway but impressive on how well a low-tech approach can work.
Wednesday, October 01, 2003
RSS in Depth
Puzzled about RSS syndication? Wondering how it works (or is supposed to work) under the covers? Me too. Sam Ruby has put together a presentation that explains the details.
Stay humble
Software is a means to an end, not the end itself. As developers we're easily enamored by the novelty of the technology and can lose sight of who we're building it for. Software can do amazing things but we often expect users to adjust their needs to match our limited understanding of their needs. A good way to stay humble is to try to teach someone how to use a software package. Seeing software through the eyes of a non-programmer can provide a good perspective on how far we still need to go to make software useful and accessible.
I tend to work on "plumbing" rather than UI but I'm still interested in who will be using our software and how they intend to use it. One successful technique for capturing this information is User Personas developed by Alan Cooper. We've been using personas on the last two projects I've worked on and I think it's been very helpful.
I tend to work on "plumbing" rather than UI but I'm still interested in who will be using our software and how they intend to use it. One successful technique for capturing this information is User Personas developed by Alan Cooper. We've been using personas on the last two projects I've worked on and I think it's been very helpful.
The Death of Email?
Like a lot of folks, Ray Ozzie is predicting the death of email. More clearly stated, the death of email for critical business processes:
Ray is a brilliant guy but he does have a vested interest in alternatives. That's not to say that he's wrong or is overstating the problem. He's right and the spam problem has been getting worse each month. For many people, "spam noise" in their email has become intolerable. But I'm not convinced we have an alternative in hand. Workspaces or teamspaces or whatever you want to call them are not a panacea either. I've used a variety of different "spaces" technology in addition to email for quite a while and I haven't been too happy with any of it. It always feels like I'm bounced back and forth between two extremes: either too much disparate information concentrated in one place or too many different "spaces" to visit to find what I'm looking for. My problem with email hasn't been "spam noise". I get very little spam in my corporate email. My problem is just trying to balance all the things that compete for my attention. So far any of the "spaces" that I've been involved with haven't helped much.If you're hoping for some super-duper neo-PIM to or super-filter or super-law to come along to make your life easier, spare yourself the agony and just think ahead: it is NOT a sustainable solution if it is still called "eMail". eMail is thirty years old, and we owe it a great debt of honor, but it has been pushed well beyond its design center and it's time to move on. Incrementally, progressively, but most definitely.
Mechanical memory
Good thought piece by Jon Udell on our reliance on the web for our "collective memory". I'm not worried too much because I still try to cram as much into my brain as I can but I share his concern. How much of our "collective memory" do we entrust to third parties? How worried are we about the accuracy or completeness of content we read on the web?
MIT OpenCourseWare
Just noticed this email from MIT:
Scan through the courses in the Electrical Engineering and Computer Science department: 6.001, 6.034, 6.035 and 6.170 are all worthwhile. This course in the Mechanical Engineering department on Computational Geometry looks interesting as well.
I think MIT OCW is a terrific idea. But I wonder how much someone could actually learn from the online content? It will depend on good the courseware is for a specific course and how self-disciplined they are. It certainly won't match the classroom experience but it's massively cheaper than attending MIT -- in 2003 a year's tuition, room and board and fees would set you back $41,030. (!).Today, MIT is announcing the publication of 500 courses through the MIT OpenCourseWare initiative. MIT OCW offers free and open access to the educational materials from all 33 of the Institute's academic disciplines and all five of its schools. This milestone represents a significant technical and organizational achievement for the Institute, the first on the way to publishing virtually all of MIT's courses online.
Scan through the courses in the Electrical Engineering and Computer Science department: 6.001, 6.034, 6.035 and 6.170 are all worthwhile. This course in the Mechanical Engineering department on Computational Geometry looks interesting as well.
The paper iPod
I haven't been able to rationalize buying that 15-inch G4 Powerbook just yet. If and when I convince myself (and our family CFO) I plan to get an iPod as well. In the meantime, I'll make do with my paper iPod.
Update: I found a good rationale for the Powerbook. The product packaging will make me smile. Sounds good enough to me
:
Update: I found a good rationale for the Powerbook. The product packaging will make me smile. Sounds good enough to me
:(Paper iPod link via BoingBoing)This is what Apple does. This is what they are known for and why their design team is so famous and why they win so many awards and why they engender such passionate devotion from their adherents and why Macs are still far, far superior to PCs and always will be. It's true.
Apple actually cares about this sort of thing. Which is odd. Which is rare. Which is why they deserve gushing adulation now and then. They actually put the time and energy and labor into creating a gorgeous package most people will toss anyway, and why they include a first-time welcome experience, with subtle music, with flowing lush clean graphics, one that will never be repeated, just because.
This is the point. Detail and nuance and texture and a sense of how users actually feel, what makes them smile, what makes the experience worthy and positive and sensual instead of necessary and drab and evil.
The Philosophy of Ruby
Ruby is another programming language that I'd like to become proficient in. It's not as mainstream as Perl or Python yet but seems to be rapidly growing in popularity. Here's an interview with the creator of Ruby, Yukihiro Matsumoto, where he discusses the philosophy of the language.
Herding Cats
Managing programmers has been compared to "herding cats". (In fact, there's a book on that topic). Here's an online game to give you a sense of what it can be like. By the way, there are quite a few clever games on the Orisinal web site. Take a look.
Note: I don't manage programmers in my current job, I prefer to be in a technical leader or lead architect role. Some of the same issues but fewer headaches.
Note: I don't manage programmers in my current job, I prefer to be in a technical leader or lead architect role. Some of the same issues but fewer headaches.
VisiCalc and Bloatware
VisiCalc was released for the IBM PC in 1981. Dan Bricklin posted a copy of VisiCalc on his web site here. It's a DOS executable. You can run it under Windows or DOS. The Apple II version of VisiCalc was the major reason that people started buying Apple computers in the early days -- it was the "killer" application for the Apple II. As a result of the revenue generated by these Apple II sales, Apple was able to fund the development of the Macintosh. In a similar way, Lotus 123 was the killer application for the IBM PC. It drove PC sales generating revenue for IBM which spawned the PC "clone" market -- and made Lotus wildly successful in the process.
In case you download VisiCalc to try it out you can consult the reference card. To quit, type "/SQY" (Storage, Quit, Yes).
VisiCalc (vc.com) is only 27K. An entire functional spreadsheet application in only 27K. It's easy to rant about how applications have gotten so bloated in the 22 years since VisiCalc was released. Is Microsoft Excel XP that much more functional than VisiCalc to justify the couple hundred megabytes of disk space it occupies? Well, yes and no. It depends on what you need. Joel Spolsky does a good job discussing the "bloatware" issue and the tradeoffs that developers make on features vs. code size. That's not to say that there are no oversized applications out there. I see them all of the time but that's in my judgment. Clearly someone decided that it wasn't worth the effort to make the program smaller or provide options in the Installer to allow you to avoid installing features that you don't want.
One other thing: it's pretty impressive that this 22 year old program can still run on operating systems that we can use today. The DOS environment is pretty simple in comparison to Windows XP but it's still impressive that upward compatibility has been maintained over such a long stretch of time. I wonder: will Microsoft Excel XP run on a computer 22 years from now?
In case you download VisiCalc to try it out you can consult the reference card. To quit, type "/SQY" (Storage, Quit, Yes).
VisiCalc (vc.com) is only 27K. An entire functional spreadsheet application in only 27K. It's easy to rant about how applications have gotten so bloated in the 22 years since VisiCalc was released. Is Microsoft Excel XP that much more functional than VisiCalc to justify the couple hundred megabytes of disk space it occupies? Well, yes and no. It depends on what you need. Joel Spolsky does a good job discussing the "bloatware" issue and the tradeoffs that developers make on features vs. code size. That's not to say that there are no oversized applications out there. I see them all of the time but that's in my judgment. Clearly someone decided that it wasn't worth the effort to make the program smaller or provide options in the Installer to allow you to avoid installing features that you don't want.
One other thing: it's pretty impressive that this 22 year old program can still run on operating systems that we can use today. The DOS environment is pretty simple in comparison to Windows XP but it's still impressive that upward compatibility has been maintained over such a long stretch of time. I wonder: will Microsoft Excel XP run on a computer 22 years from now?
MailBucket
MailBucket is an email-to- gateway. It allows an email account to act as an RSS feed. I just sent email to bobcongdon@mailbucket.org. Within a couple of minutes I was able to subscribe to http://www.mailbucket.org/bobcongdon.xml. To be truly useful, it would need some more controls so a feed wouldn't just fill up with spam. Also, since there's no moderator or owner of the feed, there's no way to change the content or filter out unwanted content.
This idea is somewhat similar to Mailinator but for a different purpose. Mailinator email addresses were intended to be short-lived, a Mailbucket feed would probably want to live on for a long time. Not sure how useful Mailbucket will be but it's a neat idea.
This idea is somewhat similar to Mailinator but for a different purpose. Mailinator email addresses were intended to be short-lived, a Mailbucket feed would probably want to live on for a long time. Not sure how useful Mailbucket will be but it's a neat idea.

RSS 0.92 Feed