Discussion Locked

Chip's Quips

0 helpful
484 replies
Closed to new repliesThis discussion is closed. It stays readable, but it takes no new replies.
blog root

484 replies

by sterling "chip" camden

I happened to come across an old Perl script I created back in 1999 that might be useful for somebody. It's a Perl script for debugging Perl scripts. Specifically, Perl scripts running on a web server where the output from errors back to the browser is lacking. This script gives you all of the script's output up to the point of failure, along with all of the error output. Check it out. - URL: http://www.chipstips.com/showtopic.asp?topic=pldebug -

This post originally appeared on an external website

by sterling "chip" camden

As usual, TDavid - URL: http://www.makeyougohmm.com - has an entertaining and thoughtful read in his blog, "Another post with 'another' in the title" - URL: http://www.makeyougohmm.com/20060111/2841/trackback/ -, which eventually gets to the topic of how to decide on what people to hire for a job. I am a long-time software developer, and not having studied Computer Science in school myself, I of course have a bias towards experience over "book learnin'". I also agree that "relevant" work experience might not be all that important. If you get a bunch of OOP programmers together to work on a project, they are going to design everything with OOP (both its benefits and its limitations) in mind. "If your only tool is a hammer, every problem looks like a nail." I wish I knew who said that. Anyway, if you mix in people with different professional backgrounds, they may see the problems differently and be able to contribute to real innovation. I think my education experience in ancient literature and languages has generated some unique insights regarding computer languages, among other things.

One thing I found back in my hiring days (now I'm free-lance so I don't hire anymore, although I sometimes advise my clients on their hiring choices): untested, lean and hungry hires are often the best -- IF they have a real desire to perform AND they have some native intelligence. Those qualities are best guaged through natural conversation, rather than through any quantitative tests. "Go with your gut", one of my past VP's used to say. I think the "gut" usually focuses on these qualitative assets.

This post originally appeared on an external website

by sterling "chip" camden

OK, those of you who don't know me must be wondering, "Why is this blog titled 'Chip's Quips', but the main entries are logged by 'sterling'?" Sterling is my formal name, and I usually use it for on-line identity. Chip is a nick-name I received as an infant, and it has stuck around ever since. The name Sterling actually goes back in my family to before the Civil War in Virginia. My father, grandfather, and great-grandfather all had the same name, so that's why I needed a nick-name. Now, sadly, all the Sterlings except me and my oldest son (who also has a nick-name) are gone, but somehow I haven't managed to adopt the name "Sterling" for daily use. It's kind of like wearing a suit when jogging. I tried it once at the University. In Hebrew class we didn't speak much English. The first day's roll call came out "Sterling!" as usual, and since there wasn't anybody in the class that already knew me, I didn't bother to inform them of my nick-name. I went two semesters in Hebrew before anybody from that realm had occasion to speak with me in company with anyone who knew me as "Chip". The result for me was a kind of split persona, so I haven't attempted such a stunt since. It's actually kind of handy to have a formal name and a casual one. I can say things as "Chip" that I might not want to say as "Sterling", because if I dirty the latter name it would have to be at the dry cleaners for a week. "Chip" can go in the washer with hot water and bleach.

This post originally appeared on an external website

by sterling "chip" camden

In my first entry, Blog 0 - URL: http://www.chipstips.com/microblog/index.php?comment=2 -, I mentioned that one of my goals in creating this blog is to explore how blogging affects the cyber-world and life in general. Some thoughts from TDavid at MakeYouGoHmm.com - URL: http://www.makeyougohmm.com - in his blog "Your mother wears army boots" - URL: http://www.makeyougohmm.com/20060112/2844/trackback/ - caught my attention. TDavid was having trouble getting any response from ZDnet on an e-mail he sent them, so he decided to blog about it. Apparently, search engines alerted ZDnet to their slightly negative on-line exposure, and prompted an almost immediate response (alas, in the negative). But TDavid made the point that perhaps e-mail is a broken system. It's easy to ignore, because it is easy for it to get lost in SPAM filters or just among the Inbox clutter. Blogs are more permanent, public, and searchable. With Google and others tuning up search engines to new heights of performance, it also becomes a more instantaneous and global form of communication. Who knows what more unified forms blogging may evolve into. Perhaps some variant will become the communication form of choice for the future. If only we can kill splogging.

Secure, private blogs would be a more reliable and permanent forum for intra-corporate or inter-corporate communications. Perhaps some corporations are already doing this?

This post originally appeared on an external website

by sterling "chip" camden

For the first time in a while now I am feeling technology-starved. Not just in what I have, but in what is available anywhere at any price. As usual, software is the culprit. Throughout the history of computing, software and its potential have periodically outrun advances in hardware technology. I was sailing happily along using five computers for business and pleasure, and then along came Microsoft Virtual PC. Magic. Now I can run several different test systems without having to use Ghost to switch back and forth. That starts me thinking about virtualization and its future.

My wife and I want, at some not-too-distant point in the future, to be able to live at maybe three different places around the globe at different times of the year. I figured on consolidating my business down to three notebook PC's: server, workstation, and test bed. Well, now that I am using Virtual PC, it occurs to me that one notebook could do. I could even have more than one virtual server to ease the headaches of managing servers that manage to find conflicts between server components. For instance, I could keep MS SQL Server in a little padded cell of its own, so it doesn't eat the lunch of every other process on the system. I could have a dedicated virtual server for a copy of each of my client's applications, so I won't get any cross-over interference. My only problem now is finding a notebook that can provide the horsepower to run all these virtual machines. I figure I need several gigs of RAM and probably 200GB of storage to pull this off adequately, not to mention some pretty swift processors.

Looks like I might get a little help from Seagate on the storage front. CNET News reports - URL: https://www.techrepublic.com.com/2100-10877_11-6027414.html?tag=nl.e019 - that Seagate has started to ship a 160GB notebook drive based on perpendicular storage technology. Keep 'em coming, Seagate. Competitors welcome, too.

What might also help: could Microsoft make Virtual PC able to share memory between virtual machines? They did it with storage: you can have a 16GB virtual hard drive that really only eats up the 2-4GB actually used by the machine and grows as you need more. I think the hurdle with memory is that the OS's wouldn't understand how to address a variable amount of RAM. So, perhaps the next generation of OS's can be made more virtualization-aware? That's my wish, as I expressed in my comments on apotheon's blog on this subject - URL: https://www.techrepublic.com.com/5254-6257-0.html?forumID=99&threadID=173898&messageID=1916057&id=3923716 -.

Of course, as soon as I get this setup perfected, we'll get another round of software innovation that renders it perfectly unusable.

On a slightly different subject, TDavid laments about 'coming soon' technology in his blog - URL: http://www.makeyougohmm.com/20060114/2849/trackback -. He hints at the (IMHO)inevitable merging of TV and PC media. I see no reason why this shouldn't happen, other than the significant investment of providers in their existing networks. Not to discount the power of money, but when the gold dust finally settles and the market demands that these artifical boundaries be overcome, they shall. The only question is, how long will we have to wait?

This post originally appeared on an external website

by sterling "chip" camden

To satisfy a client's requirements to interface their software with Novell's Groupwise, I have been setting up Groupwise (for days now). All I can say is, I sure am glad I'm using Microsoft Virtual PC instead of attempting this on my local "real" server.

First problem: the installation requires the Novell Client. Don't know why, but OK. So I go to download a Novell Client for Win2003 Server. Nada. Call Novell pre-sales support. They don't have a Novell Client for 2003, according to the nice, potentially underinformed young lady I spoke with. This, even though they list 2003 as a supported platform for Groupwise. So far, not impressed am I.

So, I start with a fresh virtual machine, this time using Windows 2000 Server. Download and install the Netware Client. Here's where Virtual PC saved my bacon. The Netware Client takes over the system login! It's a member of the collective! Resistance is futile!

OK, fine, at least it's in a virtual machine. So, let's install Groupwise. Wait, we have to install ConsoleOne (in fairness, at least they gave me a link to install it at that point). I have no idea what this is that I'm installing, but I'll walk my way through it and see what happens.

Lesson here, Novell. Keep it simple. Make it easy to install with default settings, and then provide control panels for tweaking the details. This has been far too complex already, and I don't know how much farther there is to go. Even though I read the Installation Guide, there have been several unexpected surprises. I'll update this post as I learn more (hopefully not from hard experience).

This post originally appeared on an external website

by sterling "chip" camden

Did I mention that I'm jazzed about the Ruby programming language? Oh yeah, over here - URL: http://www.chipstips.com/microblog/index.php?comment=3 -. Well, in order to test out the capabilities of the language, I decided to write an expression processor. It's posted on chipstips.com - URL: http://www.chipstips.com/showtopic.asp?topic=rbcalc -.

Of all of the expression processors I have written over the years, this one definitely packs the highest functionality:code ratio. It can be made to evaluate many different types of expression. Operators and functions can all be defined by the client program, which also manages associations between identifiers and their values via a code block. It handles algebraic, Polish, Reverse Polish, or mixed operand/operator order.

All of this was accomplished with only 260 lines of code, including mix-in modules to easily enable support for the "standard" sets of operators (grouping, assignment, arithmetic, Boolean, and last result). Perhaps some Ruby gurus can improve on this or reduce its size, but I'm pretty happy with the result. It showcases several of Ruby's unique features, such as code blocks, mix-in's, reflection and dynamic method invocation.

I realize that in the sample client application I could have simply extended the ExpressionProcessor class with the included modules, rather than deriving a new class first. That's fine so long as you know your code is the only place in the application that will be using this class, but personally it rubs me the wrong way. In an enterprise application, that seems like asking for trouble. I can see extending existing classes for things like debugging and instrumentation, though.

Ruby has given me a new outlook on programming languages. Somehow, Toto, I don't think we're in Kansas anymore. Next, I'll investigate Ruby on Rails to see whether that's a Good Witch or a Bad Witch.

This post originally appeared on an external website

by sterling "chip" camden

I'm finally getting close to finishing __The Complete Short Stories of Mark Twain__, Charles Neider, ed., Garden City, NY: Doubleday & Company, Inc., 1957. I've been pecking away at this volume over the last six years, reading a short story here and there as I have time.

While Twain generally belongs in the "snacks" category of the literary food pyramid, I do enjoy his work immensely. For some unexplained reason, Jane Smiley in __13 Ways of Looking at the Novel__, New York: Alfred A. Knopf, 2005, thinks that __Huckleberry Finn__ was boring, but I personally find Twain entertaining in all his works. BTW, I thoroughly enjoyed Smiley's book. It was very informative and enlightening, and this was one of her few points on which I disagree.

One of my favorite comic devices that Twain employs is the dialogue between two individuals on a subject that neither of them knows anything about. For instance, in _A Horse's Tale_ (1906), two horses are discussing how to classify a dog they both know:

"
"The Seventh Calvary dog. I mean, if he _is_ a dog. His father was a coyote and his mother was a wild-cat. It doesn't really make a dog out of him, does it?"
"Not a real dog, I should think. Only a kind of general dog, at most, I reckon. Though this is a matter of ichthyology, I suppose; and if it is, it is out of my depth, and so my opinion is not valuable, and I don't claim much consideration for it."
"It isn't ichthyology; it is dogmatics, which is still more difficult and tangled up. Dogmatics always are."
"

This section stretches on into further falacies on the part of both parties, until they conclude that the dog in question must be a reptile.

The humor in this lies in the fact that we have all participated in or witnessed conversations where one or both parties make assertions and deductions that lie well out of their range of knowledge. On another angle, though, many of Twain's readers didn't understand these terms, either, and so he may have been playing a joke on them. It seems that he was fond of doing that. In _A Double-Barreled Detective Story_ (1902), he begins section 4 with:

"
It was a crisp and spicy morning in early October. The lilacs and laburnums, lit with the glory-fires of autumn, hung burning and flashing in the upper air, a fairy bridge provided by kind Nature for the wingless wild things that have their homes in the tree-tops and would visit together; the larch and the pomegranate flung their purple and yellow flames in brilliant broad splashes along the slanting sweep of the woodland; the sensuous fragrance of innumerable deciduous flowers rose upon the swooning atmosphere; far in the empty sky a solitary esophagus slept upon motionless wing; everywhere brooded stillness, serenity, and the peace of God.
"

This prompted a number of letters to Mr. Twain asking for an explanation about the esophagus. Twain wrote a letter to the editor of the _Springfield Republican_ (that first published the story) to respond to these. In it he notes that the readers were completely unaware of all of the other absurdities he managed to sneak into the paragraph, and laments,

"
Alas, if I had but left that one treacherous word out, I should have scored! scored everywhere; and the paragraph would have slidden through every reader's sensibilities like oil, and left not a suspicion behind.
...
And I told him (an inquirer) to carefully read the whole paragraph, and he would find not a vestige of sense in any detail of it.
"

So it seems that Twain, ever the prankster, likes even better the joke that only he can enjoy. Or did he slip in the word esophagus intentionally so he would be found out, and have the pleasure of revealing the joke?

This post originally appeared on an external website

by sterling "chip" camden

In the fall of 2003, I began walking about 2.5 miles every morning. It has worked wonders for my health and general view of the world. Combined with a change in diet (which I'll discuss in a later blog) I was even able to get off of my blood pressure medication, to the utter shock and amazement of my doctor. Since we moved, my new circuit is 3.5 miles.

Last spring we acquired a new yellow lab puppy named Halley (after Halley's comet). She now accompanies me on my "walk" -- which has since become a "run, stop, sniff, repeat" (although I personally opt out on the sniffing). She's really giving me a work-out. Sometimes we make the whole loop in less than 30 minutes, including stops.

And the stops can sometimes be for several minutes each. To a dog, sniffing a scent is like reading the news, or a letter from a friend, or maybe even a novel. Sometimes Halley lingers over one spot, savoring the varied imagery, appreciating the understated allusions, meticulously deconstructing the many-layered metaphors; until with a quick pull on her Gentle Leader I wake her from her literary reverie to proceed on our more pedestrian journey.

The other day she was trotting along, nose to the ground. Obviously she was enthralled by some series of mini novels, the ending of one leading so temptingly to the beginning of the next that she proceeded eagerly along through them all. Then suddenly she stopped, recognizing, in mute awe, that she had reached a volume whose depth and breadth of expression far exceeded its predecessors; the one masterpiece in the whole series: a pile of racoon dung. "Sorry, Halley, that book has been banned from further perusal. You'll have to content yourself with reading the acknowledgements, and then lay it aside." For the rest of our walk, she was a forlorn and pitiable pup.

This post originally appeared on an external website

by sterling "chip" camden

As another exercise in Ruby, I converted my HACC string compression algorithm. You can find it here - URL: http://www.chipstips.com/showtopic.asp?topic=rbcmpr -. My first two versions of this algorithm were written in C++ - URL: http://www.chipstips.com/showtopic.asp?topic=cpphacc - and C# - URL: http://www.chipstips.com/showtopic.asp?topic=cshacc -. As expected, the Ruby code is shorter (168 lines of real code) and more readable than either of the other two languages (191 lines and 217 lines, respectively, not including comments and blank lines). If the C++ version were implemented in an Object-Oriented model, it would be longer. Instead it's basically just a C API. The C# version corresponds pretty much feature for feature with the Ruby version.

Just getting started with Rails, but so far it is pretty impressive. I'll withhold further judgement until I get a chance to see how well it extends to not-so-cookie-cutter web applications. I'm also a bit concerned about performance. I realize that a good part of this may be that I'm using WEBrick (which apparently is also written in Ruby). We shall see.

This post originally appeared on an external website

by sterling "chip" camden

This one made me laugh so hard I nearly required a change of clothes: Editing Tips from the NSA - URL: https://www.techrepublic.com.com/2100-1009-6030745.html -. The geniuses at NSA warn that placing black boxes over text or images in Word or PDF files may not successfully hide the information. Brilliant! I never would have guessed. My father worked for NSA back in the Cold War, and although he never could tell me everything they did, I was given the distinct impression that some of the best minds in the USA were dedicated to the cause of learning Russian so the rest of us wouldn't have to. After reading this article, I'm left thinking that NSA must stand for Needs to State the Apparent. Perhaps letting them listen in on our phone calls is more innocuous than I first thought.

This post originally appeared on an external website

by sterling "chip" camden

As I mentioned in an earlier post - URL: http://www.chipstips.com/microblog/index.php/post/25/ -, I recently finished reading The Complete Short Stories of Mark Twain, Charles Neider, ed., Garden City, NY: Doubleday & Company, Inc., 1957, which naturally ends with Twain's last short story, _The Mysterious Stranger_ (1916). After listening to the President's State of the Union address last night - URL: http://www.cnn.com/2006/POLITICS/01/31/sotu.transcript/index.html -, I thought Twain's following passage about war was particularly relevant:

"There has never been a just one, never an honorable one -- on the part of the instigator of the war. I can see a million years ahead, and this rule will never change in so many as half a dozen instances. The loud little handful -- as usual -- will shout for the war. The pulpit will -- warily and cautiously -- object -- at first; the great, big, dull bulk of the nation will rub its eyes and try to make out why there should be a war, and will say, earnestly and indignantly, "It is unjust and dishonorable, and there is no necessity for it." Then the handful will shout louder. A few fair men on the other side will argue and reason against the war with speech and pen, and at first will have a hearing and be applauded; but it will not last long; those others will outshout them, and presently the anti-war audiences will thin out and lose popularity. Before long you will see this curious thing: the speakers stoned from the platform, and free speech strangled by hordes of furious men who in their secret hearts are still at one with those stoned speakers -- as earlier -- but do not dare to say so. And now the whole nation -- pulipit and all -- will take up the war cry, and shout itself hoarse, and mob any honest man who ventures to open his mouth; and presently such mouths will cease to open. Next the statesmen will invent cheap lies, putting the blame upon the nation that is attacked, and every man will be glad of those conscience-soothing falsities, and will diligently study them, and refuse to examine any refutations of them; and thus he will by and by convince himself that the war is just, and will thank God for the better sleep he enjoys after this process of grotesque self-deception."

Speaking of self-deception, this story is full of demonstrations of it. The conclusion, however, seems to render all of these revelations pointless:

"...It is all a dream -- a grotesque and foolish dream, Nothing exists but you. And you are but a _thought_ -- a vagrant thought, a useless thought, a homeless thought, wandering forlorn among the empty eternities!"

In other words, self-deception is the only form of experience. Many critics have taken the message of this story to be very pessimistic, but it needn't be so. Just because you might create your own reality doesn't mean that it can't have meaning.

Life is but a dream...

I couldn't help humming "Row, row, row your boat" to myself after I closed the book.

Then my wandering mind mangled Shakespeare: "To dream, perchance to wake!"

This post originally appeared on an external website

by sterling "chip" camden

Woke up this morning with a melody in my head. No it wasn't a blues melody, it was about 16 bars of an easy-paced, could-be-anything melody. I played it over and over in my head as I was getting ready for my morning run with Halley - URL: http://www.chipstips.com/microblog/index.php/post/28/ -. Could it be a jazz tune I've heard before? Don't think so. What could one do with this melody? Bach might have developed it into a fugue. Mozart would have undoubtedly generated several hundred variations on it. Wagner and his followers would string it out for an hour or two before returning to the tonic. It could definitely work as a jazz theme. I determined to write it down as soon as Halley and I got back from our run. For some reason, the tune didn't run well. Thinking this tune in my head as I ran, the tempo got to be too fast. Gradually and irresistibly, the gentle up and down of my tune morphed in my head into Reveille. By the time Halley and I returned home, I had completely forgotten the original tune.

This post originally appeared on an external website

by sterling "chip" camden

Thanks to Rogers Cadenhead's generosity, My RSS is bright orange - URL: http://www.cadenhead.org/workbench/news/2850/my-rss-bright-orange#discuss -, too. Rogers' blog, Workbench - URL: http://www.cadenhead.org/workbench/ - is always entertaining and often useful. In fact, his feed won Feedster's Feed of the Year Award - URL: http://corp.feedster.com/blog/ -. The markup and style entries for the "SUBSCRIBE" button you see in the right sidebar (if you're reading this on my site - URL: http://www.chipstips.com/microblog/index.php/post/34/ -) were stolen with permission from this entry - URL: http://www.cadenhead.org/workbench/news/2850/my-rss-bright-orange#discuss -. Thanks, Rogers, and congrats on the award!

This post originally appeared on an external website

by sterling "chip" camden

My career in software development started quite by accident. I started working with computers because I couldn't type. I still can't. I never took typing, but over the years my hunting and pecking has achieved an mind-numbing speed. But back to the story, when I started courses at the university, part of my funding was to come from the work-study program. Financial Aid sent me to the Dean of Student Affairs' office to be a typist. After witnessing the sheer futility of any attempts that I made to coax words out of a typewriter and onto the paper, the Dean sent me back to Financial Aid. So, they picked another job out of their figurative hat and sent me to Data Processing, as it was called then. Well, in 1978 I had never seen a computer, and I had no idea which end to put in my mouth.

I climbed the two flights of stairs to the Data Processing department, a cold set of rooms with no windows, raised floors, and a noisy air conditioning unit. I sat down for an interview with the D.P. manager, David Lee (wonder whatever happened to him?), who asked me if I was a Computer Science major. I wasn't -- in fact I majored in Biblical Literature, so I replied, "No, but I learn fast." I guess he was short on prospects, because he replied, "Well, all you really have to do is tear the printouts off the printer and carry them down to the student lab and sort them by the student's last initial." I said, "Well, I know my alphabet." So I got the job. He forgot to mention things like paper jams in those old line printers, or angry students who had been waiting for their compile jobs to print out for four days only to find that they forgot a period in a COBOL program.

Anyway, I became very intrigued with computers while working there, especially after I was introduced to computer games. The Adventure game was the first I played, and I was amazed how you could type in commands and the computer would respond with changes to a simulated world (all text-based back then!). Another game I really liked was called Rat Race. It was written in AOS BASIC and ran on a Data General Eclipse C-330. It featured ten "rats" (represented by the digits 0-9, remember this was on the old 24 x 80 text-only terminals of the day, like the 6052) who were lined up in lanes that ran across the screen. The rats had names and races/wins/places/shows records that were stored in a crude database (fixed-length sequential file). They were randomly picked for each race, and random numbers were used to decide which rat to move forward on each cycle of the race. The random pick was biased according to their past records, so a rat who performed better in previous races would be favored. Their odds were computed according to the same factor and were displayed on the screen. The race just ran on and on, and you could observe the records and odds of each rat change the longer it ran.

I was mesmerized. I taught myself AOS BASIC from the book, __Basic BASIC__, which I don't think is in print anymore. I remember the hardest thing to get my head around at the beginning was the statement X = X + 1. That doesn't solve in algebra. Finally I realized that every programming statement is a command (or at least was in those old languages) rather than a statement of fact. With BASIC well in hand, I started writing some simple games like blackjack and craps. Finally, I was ready to dig into the workings of the Rat Race (being written in BASIC meant that we had the source code -- muwahaha!). I made some enhancements to the game: I made the game randomly choose to move one of the rats backwards, again biased on their past performance. I also added betting, so up to five observers could bet on a rat, and the game would pay them full odds for the winner, half that for place, and a third of that for show.

I continued to teach myself programming languages, including COBOL, DG/L (a form of Algol), Eclipse Assembler, Fortran and more. By luck or providence I decided to stay there for the summer one year and work full-time in D.P., so I was in the right place at the right time when all of the programmers either quit or were fired. That made me the one person who knew more than anybody about the system, and I knew next to nothing. So I dug in and devoured as much of the code as I could day by day. Along came languages like PL/1 and MUMPS. When I finally graduated with my Biblical Literature degree, they hired me on as a full-time programmer.

Less than a year later I got a call from a head-hunter who asked me if I'd like to change jobs. I went on two interviews and accepted a position on the second one, Digital Systems of Florida (the first one, Datapoint, later made an offer as well -- back then you only needed to know how to program to get a job). Digital Systems made me the only programmer on their Depreciation package. This was right after the ACRS rules went into effect, and all I knew about Depreciation was that things rust. They also employed a language I had never seen before: DIBOL - URL: http://www.dibol.com -. Nevertheless, I dug in and learned it, and I got the project done ahead of schedule.

That, and the fact that I knew several other programming languages, caught the attention of the Research & Development department, who were actively pursuing options for their next generation of products. They moved me over and introduced me to UNIX and C. How wonderful! I couldn't believe how powerful these tools were. To thoroughly teach myself C, I decided to rewrite the Rat Race in C. I didn't have the BASIC code anymore, but I remembered the algorithms pretty well, and reproduced it faithfully. The only problem was, it was too fast. The rats would all run across the screen before you could even see them, and that version of C did not have a sleep that accepted fractional seconds. I didn't want to wait a whole second between movements, but I found that if I made the program display 80 blanks across the bottom line between each rat movement, the pace was pretty good.

Later, the R&D department began doing a lot of process-control work to automate software distribution. This was on DEC PDP-11's running RSX-11M, and the language of choice was Fortran-77. I knew Fortran 4 & 5 tolerably well, but to get down and dirty with Fortran-77, I decided the Rat Race was the way to go. I converted the C version over to Fortran-77 in no time, and in the process learned all about file and terminal I/O in Fortran-77.

Finally, we decided that the next generation of accounting products would stick to the same language they had been using for some time: DIBOL. This language had started out on PDP-8's and moved to the PDP-11's, and a company called DISC (now Synergex - URL: http://www.synergex.com -) had a new version (called DBL) that was portable to MS-DOS and many flavors of UNIX, and also added some great language features that were missing from DEC's implementation. I had struggled under the limitations of the DIBOL-11 compiler ever since I arrived at Digital Systems, so I couldn't wait to test out all of the new language features. You guessed it, I rewrote the Rat Race in DBL version 4.

DBL v4 added fixed-point decimal numbers to DIBOL (prior to that, all numbers had to be stored as whole numbers and you had to handle any implied precision yourself), and I made use of this feature in the odds and random movement calculations of the Rat Race. Being a new feature of the language, I discovered a bug in it. So, I sent my Rat Race to DISC so they could figure it out. They loved it. Not only did it help them solve the bug, they realized that it made a great performance benchmark for disk and screen I/O, as well as arithmetic processing. So they asked if they could keep it in their test suite. Of course, I agreed.

Well, years went by. I was promoted into management at Digital Systems, which later changed its name to CPAS (now CPASoftware, or Sage Software - URL: http://www.cpasoftware.com/ -). We were again exploring options for a next generation of applications, and we were introduced by DISC to their newly developed Toolkit product. After examining it thoroughly, I decided we should go with it. Then I found out that somebody at DISC had updated the Rat Race to use the Toolkit.

Anyway, as we began implementing the early versions of the Toolkit, we naturally ran into many issues, and I worked closely with DISC on resolving those. We were allowed access to the source code, and many times I would just write a solution and hand it to them. This resulted in them becoming my first client when I became an independent software consultant. They are still one of my best customers, and I have helped them add many features to the Toolkit, including porting it to Windows!

In the years that have passed since then, the Rat Race has surfaced from time to time. In 1992, after Visual Basic 2.0 was released, I decided to write a graphical version to learn that language. I created crudely animated rats using four images that randomly changed. Unfortunately, I didn't understand that VB's coordinate system used twips, so it only displayed properly if you ran it on the same screen resolution as the computer I developed it on (800 x 600).

In 1998, after learning Java, I rewrote it as a Java applet, using the same crude mouse animations I created for the VB version. Unfortunately, I never got around to figuring out how to tie it into a back-end database, so it always ran a race between ten rats named "Anonymous Rat".

Finally, just this month, I decided to rewrite it again. This time, in Ruby on Rails. The animation is still just as crude, but this time I used Rails to provide the database access. Rather than having an applet or ActiveX control that has to be loaded into the browser, I used the AJAX capabilities of Rails to achieve the animation. Unfortunately, this means that we have about a second's delay between each update, but it's still pretty entertaining. I haven't added betting to it yet. I'll have to think on that one with a web model.

This exercise not only taught me a lot about Ruby, Rails, and AJAX, but also revealed some interesting differences between browsers. You can read all about it and download the whole thing here - URL: http://www.chipstips.com/showtopic.asp?topic=rbrats -.

This post originally appeared on an external website

by blead3

Thanks for the history lesson. My interest in computers only started in
grade school where they had teletype terminals that communicated to a
central computer downtown. When I was in high school my dad brought
home a Commodore 64 (the Macintosh - being about 10 times more
expensive - wasn't even an option). I remember working with C64 Basic,
and having a fun time with small programs that I would type in from
magazines like COMPUTE! or INFO.

The real fun was the time my parents bought me a Commodore Amiga 1000.
There was a saying back in the mid 80's - "Want your kid off of drugs?
Buy 'em a computer!"  Every extra dollar went into upgrades and
software. I really loved the animation and paint programs. Now when I
get e-mails that are 4 megabytes in size because someone has
copied-and-pasted a large 32-bit BitMaP, it makes me smile about the
time the Amiga had the ability to switch to 'high' resolution of
640x480 but use only 4 colors. 

I now program in Java, but will start a position soon where the
language of choice is C#. Like you, I'm not wedded to any one
particular computer language. Computing (and programming in particular)
has changed so much that only by learning something every day can you
hope to keep up.

by sterling "chip" camden

Thanks for stopping by, BLead3.  The C64 was the first computer I ever bought for myself.  Unfortunately, I was already married and had my first son by then, so I didn't have a lot of time to play with it.  But I do remember the sprite animation, which was really pretty advanced for its time.  I dabbled with the assembler a little in addition to Basic.  I remember thinking when I first saw the C64 at a computer show, "Wow!  64KB, all for me!".  The times they have changed.

by sterling "chip" camden

Ever since the de facto demise of the Netscape browser, I had been merrily maintaining my neutrality in the browser wars. I was happy enough with Internet Explorer 6.0. It did everything I thought I needed, and its market share made it the logical choice of browser to target for web applications. Most of my clients agreed that if it ran OK in IE, they wouldn't sweat the rest. Besides, their applications were largely written using the .NET Framework, so they were heavily invested in Microsoft products.

Then I began working with Ruby - URL: http://www.chipstips.com/microblog/index.php/post/21/ -, and Ruby on Rails. In a rather intensive AJAX application using Rails - URL: http://www.chipstips.com/microblog/index.php/post/37/ -, I was disappointed with Internet Explorer's responsiveness, and with all of the buzz over Firefox and Opera, I decided that I really needed to evaluate these browsers under the same conditions some day.

As serendipity would always have it, another reason for this evaluation presented itself. I signed up for coComment - URL: http://www.cocomment.com - and installed the "Bookmarklet", so I could keep track of comments I make on other blogs. When I tried to use it, though, it kept on asking me to log in, and would pop up a message box complaining that Cookies did not seem to be stored correctly. Well, I knew I had cookies enabled, because other sites remembered by information just fine. After discussing this with a few folks on Makeyougohmm.com - URL: http://www.makeyougohmm.com -, RyanB suggested I try Firefox - URL: http://www.makeyougohmm.com/20060204/2914/#comment-52833 - instead. Time to download.

I found that not only did Firefox work first time right out of the box for coComment, it also performed much better with my Rails/AJAX application - URL: http://www.chipstips.com/microblog/index.php/post/37/ -. 'Tis time, methinks, for a more complete comparison.

As I mentioned in my chipstips.com download of the application - URL: http://www.chipstips.com/showtopic.asp?topic=rbrats -, when navigating away from a page that had a timed XmlHTTPRequest (AJAX) transaction every second, Internet Explorer 6.0 took about 16 seconds to load the other page. Opera (8.51) took 13 seconds. Firefox (1.5.0.1) took only 5 seconds. This was very unscientific and used a local WEBrick server with MySQL on the same machine, but the difference was, I think, significant. Examining the server's log, it appears that what ties up IE and Opera is that the AJAX calls seem to get queued up, because they keep happening for a while after the next page loads. Firefox seems to handle that scenario better, with fewer calls getting queued up.

Another little thing I noticed: in my application I preload the images that are referenced in the HTML that is returned by the AJAX calls, so they don't have to be loaded on the first such call. To hide them, I sized them at 0 width and 0 height. On IE and Opera, they are still visible as 1-pixel images spaced a few pixels apart. Firefox hides them as I intended. It's a small thing, but it means a lot to me.

Internet Explorer also doesn't support a CSS style for "td:hover" that changes the background color, whereas both Firefox and Opera do. This makes it difficult to create a "hover button" linkbar for IE without resorting to an ActiveX control or applet.

Try this: go to this page - URL: http://www.makeyougohmm.com/20060205/2916 -. In IE, the iFilm object fails to load properly, and a script error message results. Firefox and Opera both seem to load it OK.

I like the automatic RSS feed detection and loading available in both Firefox and Opera. I have heard that this is coming in IE 7. Likewise with tabbed browsing.

I like the "sessions" feature of Opera, but I like the "folders" concept in Firefox even better. You can use folders both for organization and for launching all of the pages in tabs.

Oh, and Opera seems to have trouble with coComment. It freezes while "submitting comment to original blog". Only Firefox works for me here.

I am also annoyed with Opera's wanting to open the previously open page on startup, especially when that page was an application I'm working on that has a bug that makes it difficult to get out of. Give me a regular home page.

A big reason to like Firefox: extensibility. Greasemonkey - URL: http://greasemonkey.mozdev.org/index.html - gives you lots of control. I also like the way you can easily switch between all kinds of search engines.

Overall, then, you can see that I have quickly become attached to Firefox. I use it now as my default browser.

I welcome your comments. Let the battle begin!

This post originally appeared on an external website

by sterling "chip" camden

I just signed up for MeasureMap - URL: http://www.measuremap.com/ -, the new service from Google - URL: http://www.google.com - that supposedly gives you easy access to stats on your blog: visitors, links, comments, and posts. Google acquired this little gem from Adaptive Path - URL: http://www.adaptivepath.com -, and apparently also acquired Jeffrey Veen - URL: http://googleblog.blogspot.com/2006/02/here-comes-measure-map.html - in the deal.

When you sign up, they promise that they'll be contacting you soon, so I can't provide an evaluation just yet. I'm eager to see what it tells me, though, as I currently have no idea how many people are reading or linking to this blog. I've only had a few comments posted, so by that indication my traffic is not overly congested.

I don't even know yet whether it will work with my blog -- no info on what the site requirements might be.

Overall I have been pretty happy with Google's services, except for one thing recently: since upgrading to Google Desktop 3.0, it seems to keep losing some of my settings for the sidebar every several days. For instance, on one day it lost my Todo items, my Web Clips settings, and my Weather preferences, but apparently kept everything else I had customized. Don't know what's going on there, but I am quickly becoming a fan of using a folder in Firefox to hold all of my feeds now instead of the "Web Clips" panel.

This post originally appeared on an external website

by sterling "chip" camden

Wow, I got *9 new comments* on my first blog entry - URL: http://www.chipstips.com/microblog/index.php/post/2/ -! So, I go over to check it out, and it turns out to be my first splogging instead. What a let down. I deleted all of the comments left by Phentermine and Cialis. Ironic, because the post is about the question of how blogging will benefit or impact our lives and culture. The commentary left by these sploggers doesn't give me much hope.

This post originally appeared on an external website

by sterling "chip" camden

Believe it or not, I'm still trying to get Novell Groupwise configured - URL: http://www.chipstips.com/microblog/index.php/post/20/ -. The Novell pre-sales support people know very little about eDirectory or Groupwise, so I've been forced to get whatever help I can from the forums. Novell should really not even offer this as an evaluation product if they aren't going to provide reasonable documentation, on-line help, or pre-sales support. Turns out that the help provided in the forums is not bad, although the UI design on the reader stinks. For instance, you have to re-enter your e-mail address (a required field) on every post or reply -- it isn't remembered. Many thanks to David Gersic and Niclas Ekstedt for their replies to my latest question. Thanks to them, I think I've finally got a handle on how eDirectory works now. It isn't what I would call intuitive, though. Now I need to figure out Groupwise itself, so I'm off to that forum. More to come!

This post originally appeared on an external website

by sterling "chip" camden

This blog entry on "Elegance" by apotheon - URL: https://www.techrepublic.com.com/5254-6257-0.html?forumID=99&threadID=173898&messageID=1915531&id=3923716 - has been simmering on the back burner of my mind for over a month now. Sometimes I'll take the lid off and give it a little stir and taste it, maybe adding just a pinch of salt. Though I might not agree with all of the characterization of OOP in this essay, it certainly makes some good points about agile programming and the need to "burn some of the holy cows", as David Heinemeier Hansson - URL: http://www.loudthinking.com/about.html - once said regarding the philosophy behind Ruby on Rails.

Even though, as apotheon states, OOP may be mostly used to keep mediocre programmers from creating a code nightmare, the concept didn't start out that way. OOP is supposed to be used to model real-world objects in code, so that the abstractions and categories in the code mirror those of the objects whose functions are being automated. That should, I think, fit into the agile paradigm quite well if done properly. As I mentioned in a comment on apotheon's post, the key is to make the abstractions at the right levels. If you over-dissect your objects, you end up with gratuitous inheritance models. On the other hand, if you over-generalize your classes, then you end up doing all sorts of "case on type" tests within the methods.

As I also intimated in my comment, apotheon's post really seems to call for a language change, over and above (but including) a change in programming style. Working with Ruby a lot lately (here - URL: http://www.chipstips.com/microblog/index.php/post/3/ -, here - URL: http://www.chipstips.com/microblog/index.php/post/21/ -, here - URL: http://www.chipstips.com/microblog/index.php/post/29/ -, and here - URL: http://www.chipstips.com/microblog/index.php/post/37/ -) has opened my eyes to how much more agile a programming language can be when it allows you to break some of the Holy Laws of OOP: type safety and immutable interfaces are two that pop to mind. Both of those features of Java/C++/C# (and others) seem to specifically relate to preventing Junior from shooting himself in the foot. In the agile model, Junior shouldn't even have the gun. Give it to someone who knows how to use it, and allow them to remove the safety.

The next question that occurs to me is "what's next, then?" How many times in the past have I witnessed the birth of The Ultimate Programming Language, only to have it become obsolete within a decade (or less)? Undoubtedly, LISP wears its age better than any other language. What more can other languages learn from LISP, or invent on their own, that will make it easier and (more importantly) clearer (dare I say, more elegant) to describe the abstractions that mirror real-world objects and processes?

This post originally appeared on an external website

by sterling "chip" camden

We don't eat at fast-food joints often. My wife and I are on the Blood Type Diet - URL: http://www.dadamo.com -, which really works for us. I'll blog in more detail about that another time. But on a recent road trip, after about 10 hours of driving, the kids insisted on stopping at McDonald's.

To the employees of that establishment, we must have been the customers from hell. They probably have an acronym for people like us: maybe SOX (Special Order eXtreme). So we belly up to the counter and the plump young lady with the green hair welcomes us to McDonald's and asks whether she can take our order. Frankly, I'm not sure she can.

"Two Happy Meals..", I begin.
"I want french fries!" interrupts our youngest.
"I just want a PLAIN hamburger, no ketchup or any of that yucky stuff" interjects our oldest.
"OK, OK, we'll get what you want, hold on! That's two happy meals with PLAIN hamburger, nothing on it but the bun, and they both want to substitute vanilla shakes for the drink." This generated more chatter from the children, but they were generally in agreement.
Now for me: "I want a double quarter-pounder..."
"The meal?" asks the server.
"Uh no. Just a double quarter-pounder. NO cheese, NO bun, nothing but lettuce, tomato, and onion."
My wife didn't want anything. She thinks McDonald's food is disgusting. So do I, but I was hungry.
"Oh, and we need two cups of hot water" (that was for green tea for me and my wife), "and one extra empty cup" (for my wife's health shake).
It took several repetitions of things ("Did you say chocolate shake?", "Two cups of cold water?", "Did you want fries with that?" etc.) but in the end, our green-haired waitress did get everything right. She even thought to give me a fork and knife for my burger. Who would have thought that you could find pretty good service at a McDonald's? My burger was even hot and juicy, unlike most of the fast-food fare. I actually enjoyed it.

Later on that night we got to the hotel: the Residence Inn on Taylor Rd in Roseville, CA. This was President's Day weekend and we arrived somewhat late (around 8PM) to find that they had sold our room. Mind you, we had reserved the room and guaranteed it with a credit card, so if we hadn't shown up they would have billed us for the room. We had already called to tell them that we would be arriving late. We had stayed at this hotel several times before, and had spent thousands of dollars on accomodations here over the last few years. Yet they felt they had the right to sell the room out from under us to someone who would pay more. They gave us some lame excuse about "conflicting reservations, because we take them over the phone as well as on the web site." We were shocked, and my wife gave them more than a few earfuls (she's much better at that than I am, and I'm happy to leave that to her capable eloquence). They finally gave us a smaller room, and we had to get a roll-away bed brought in. Then we find that the sleeper sofa doesn't have sheets, so they brought those up (but we had to make it). They brought us pillows, but without the cases, so that was another trip for them. We aren't tipping by this point. Then there wasn't enough toilet paper. Etc, etc. As miserable as we were, we did our best to make them miserable with our requests as well. We will not be staying there ever again.

Now that's just one Residence Inn. We've stayed at others that were much better. On our way back, we stayed at one in Eugene that treated us well. They were shocked (or at least acted so) when we recounted what had happened to us in Roseville. We like Residence Inns - URL: http://www.residenceinn.com - for the space and the amenities, especially since we mostly want to prepare our own food, and they come with a full kitchen and refrigerator.

It only takes a little more effort and consideration to provide great service, like the stylish server at McDonald's. Conversely, it only takes a few negligent acts to really piss off a customer. When you're in the service business, you need to provide good service. Duh.

This post originally appeared on an external website

by sterling "chip" camden

While we were on our recent road trip - URL: http://www.chipstips.com/microblog/index.php/post/70/ -, everything else went to hell. Actually, the disintegration started a little before and finished a little after our trip.

First, there's my left heel. For a couple of days before we left, I hadn't been able to take Halley on our morning run - URL: http://www.chipstips.com/microblog/index.php/post/28/ - because of the pain. Achilles tendon. My wife continues to enjoy telling me how stupid I've been for months now since Halley and I upgraded our walk to a run -- I continued to wear the same hiking boots, which obviously weren't meant for sprinting and sudden stops. It finally caught up with me. I'm still limping around the house and popping Naprosin.

While we were on our return trip, the cell phone rang. It's in the front seat, and my wife's in the back of the Eurovan with the kids, so I fumble around with it while driving (a habit I highly discourage). It's the boarder where we left Halley. She threw up a rock. They're also an animal clinic, so they want permission to X-ray for anything else. Sure, go ahead. A couple of hours later, we get another call. Yep, another rock in her stomach. But she seems to be doing well, so we decide to wait until we get back to take her to our usual vet. How did she swallow a rock? She's a lab, she chews everything.

So, we get back in town and take her to the vet. They recommend removing the other rock, but they have to send her to Bothell to a clinic that has a "scope" that can extract the rock without surgery. So my wife takes Halley on the ferry over to Seattle. After an hour or so of failed attempts, they finally get the rock out. Relieved are we.

However, rock eaters are notorious repeat offenders, we are told. My wife tried to dig up all of the rocks in the back yard (I gave her emotional support -- remember, I have a bad heel), but the deeper she dug the more rocks she found. So now poor Halley looks like Hannibal Lechter, wearing a basket muzzle while she's outside. A modified muzzle, because within an hour she had broken one of the leather straps that holds it on, so I had to make a new one out of an old lead. This dog is a criminal mastermind, I tell you. We used to have her in a kennel, but she figured out how to undo the metal wire wraps that held the fencing to the bars, and escaped. Now we have her on a tie-out tied to a concrete block buried two feet underground. And she has the muzzle on. Poor puppy. I feel terribly cruel keeping her chained up like that.

But we have a solution in mind. Viking Fence - URL: http://www.shoplocalbiz.com/bremerton/vikingfence.htm - will be building a new run for us. 32' x 20', with the 6 foot fence sunk 4" in concrete. To solve the rock problem they'll stretch fencing wire across the ground, fasten it to the fence perimeter, and we can lay a layer of rock-free soil over it. I can hardly wait. Hardly wait to see, that is, what diabolical plan Halley hatches to get out of there.

Third problem: the day after we returned we awoke to find no water running from the taps. The well pump breaker had flipped, but flipping it back brought no joy (nor water either). Well pump went bye-bye, thinks I. Mike from Aquarius Pumps is on the scene tout de suite. Good guy, he checks everything out thoroughly and finds it is just the electrical line from the pump house to the well. That's great, except it's about 160 feet underground, and when attempting to pull a new wire through, the old wire won't budge. So, he runs it over ground for us, and this week we're having the excavators (Aspen) and electricians (Bird Electric - URL: http://www.birdelectric.com/ -) over to get it buried for us.

One more thing: the back case fan in my server died while we were away, so it was stuck on a reboot after applying a Windows update, warning me that the back fan was not detected. Of course, my replacement fan did not have the same connector, so that required some creative wiring.

I hope that's about it for things falling apart around here for a while. I think I'll limp to the cabinet and get some more Naprosin.

This post originally appeared on an external website

by sterling "chip" camden

TDavid was just talking about voice recognition yesterday - URL: http://www.makeyougohmm.com/20060301/3007/ - and the state of the "art" of software's understanding of human verbiage. Later, I had to call Qwest because I recently switched back to them for land-line (I never really liked Qwest, but they swear they have improved service, and for a $100 savings per month I'll let them back up that claim), but my toll-free number was still being billed by my previous carrier. So I call the business customer help line, and of course a speech-recognition engine answers the phone, using the voice of a twenty-something male with slightly over-regulated testosterone.

"Welcome to Qwest."

At which point a Spanish-speaking lady jumps in and informs me (in Spanish) that I should press 9 to hear everything in Spanish.

The young male takes the helm again, "What's the number you're calling about? Or.." at which point I interrupt him by keying in the number. He repeats it (very naturally speaking, compared to earlier implementations I've encountered), and asks me if that's correct. I guess I have to say "Yes", because there's no option given for a button to push. But, he understands "Yes".

He continues, "OK, in a few words, tell me why you're calling today. It can be something like 'I'd like to pay my bill.' So, how can I help you?"

Let's test his limits, thinks I. "My toll-free number needs to get moved over."

"It sounds like you're calling to report unwanted phone calls. Is that right?"

"NO."

"Sorry, my mistake. Let's try that again."

"HELP."

"It sounds like you'd like technical support. Is that right?"

"NO."

He then apologizes again, and runs down a list of possible options, the last one being "other".

"OTHER."

This finally puts me in a queue to talk to a human. Even though my automated triage representative spoke English pretty well, we finally understood each other when I started speaking Computer. I'd say this technology has a ways to go yet.

This post originally appeared on an external website

by sterling "chip" camden

We just bought the latest Disney DVD release,
Lady and the Tramp (50th Anniversary Edition) - URL: http://www.amazon.com/gp/product/B000B8QG4A/qid=1141431539/sr=1-1/ref=sr_1_1/104-0753511-0035944?s=dvd&v=glance&n=130 -, for our kids. These "special edition" releases all come with a second disk of extras, which includes some games. Most of the games, though, do not work on your DVD player -- you have to load the disk into your computer.

OK fine. My 9-year-old daughter is pretty handy with a keyboard and mouse, so she logs in and inserts the DVD.

"Daaaadddyy! There's a praaah-blum!"

- Image: http://www.chipstips.com/microblog/images/DisneyErr1.JPG -

Yes, Houston, we have a problem. I'll let my daughter log into the network, but no way am I giving her Administrator rights. I hate clicking OK on a statement like that, because it isn't. OK, I guess I'll have to install it with "Run as..." and use the Administrator account. And then all will be well. Right?

Wrong. All is not well. First, no icon was created on _her_ start menu, only on the Administrator's. Then, when we try to run it from Explorer, we get this:

- Image: http://www.chipstips.com/microblog/images/DisneyErr2.JPG -

Yeah, right -- I'll turn my daughter loose in regedit. The same day I give her the car keys and a fifth of vodka. So, this freaking "Interactual Player" program that Disney is using requires some pretty hefty rights to the registry. That's not going to happen. Not on MY network.

I've really got to watch my language. Now she's repeating each of my words in turn, and giggling.

I'll let her play this stupid game under my account so long as she's sitting beside me where I can keep an eye on her activities. Even "Run as..." doesn't protect much here, because the game has a browser built right into it, so she could take off to all corners of the Internet with my credentials if I don't watch out. I'll bet the browser is the WebBrowser control, too, which is IE. 'Nuf said.

Final slap in the face, when she closes the game and logs out:

- Image: http://www.chipstips.com/microblog/images/DisneyErr3.JPG -

Beautiful. Disney, you should know about happy endings. This isn't one.

This post originally appeared on an external website

by sterling "chip" camden

It's been done before, but never with such flair as when I'm the perp.

I've had very little to drink in all of 2006. Not that I've sworn off alcohol or anything, but my wife hasn't been drinking while she goes through a series of "cleanses" (I love that line in the Wallace and Grommet movie where Wallace explains his sudden acquisition of rabbit ears: "It's the toxins coming out" ). Anyway, I've been informed that even though I may feel sexier after a few drinks, from the perspective of my significant other, a stinking, slurring, wine-spilling blob of humanity is not nearly so attractive unless both parties are participating in roughly the same degree of odor, mispronunciation, and carpet stains.

So, I've been abstaining -- except when she's away. Not that it's such a great idea to be drinking alone. But today my youngest son wanted to go to Olive Garden. He likes plain spaghetti, no sauce, with shredded cheese -- along with breadsticks and water. Oh, and vanilla ice cream with chocolate sauce for dessert. Wheat, dairy, and tons of carbs -- just about as anti-nutritious as you can get. Me, I'm thinking that the Tuscan T-bone would go down very nicely with a class of Chianti Classico (phh-phhh!). I used to be famous for my alcohol tolerance. Not having had wine for a couple of weeks, though, it started to really hit me after we got home.

The nice thing about blogging UI (not "user interface" -- maybe "uber inyourface" ) is the way so many apparently brilliant associations come flying at you out of nowhere. The challenge, of course, is to snag them out of the air and get them written down in a way that reveals their true genius. The fractal nature of thought makes it possible to think about any subject along a limitless number of paths and to a potentially infinite degree. Only our fixed generalizations keep us from exploring all of these paths, and alcohol is one way to relax those inhibitions.

Of course, a lot of those roads could be about as exciting as I-80 through Nevada.

This post originally appeared on an external website

by sterling "chip" camden

Ooh, those wiley phishers - URL: http://en.wikipedia.org/wiki/Phisher - are at it again. This one got past both of my junk mail filters (Postini - URL: http://www.postini.com - and the one in Outlook 2003) by posing as aw-confirm@eBay.com. Since we recently made a purchase over eBay, that address is allowed through both filters. Here's the message:

- Image: http://www.chipstips.com/microblog/images/phishtale.jpg -

First reaction: pulse quickens and blood pressure jumps. Somebody's made a mistake and billed me for something I didn't buy. I better click on the link and see what's going on.

And that would be the first step into the scam.

Two things tipped me off. First, the message is to "undisclosed-recipients:". eBay always sends its messages to the e-mail account on file.

Second thing. I almost never click on a link in an e-mail without first inspecting the link. Right click in the message body, and select "View source", then when notepad comes up, Ctrl-F to search for "href=" (find all the links). If they aren't on an eBay server, they're bogus. The first few links _are_ on eBay, but the money punch is not:


Respond to this notification

It still looks pretty legit at first glance (it's complicated enough, isn't it?), but all you really need to look at is the server name: toons.hu. The TLD (top-level domain - URL: http://en.wikipedia.org/wiki/Top-level_domain -) "hu" means that it's a site somewhere in Hungary -- and I bet they can't wait to sink their teeth into my credit card.

This post originally appeared on an external website

by sterling "chip" camden

*Tracking Comments*

So you browse around the blogosphere, and if you're like me you just can't help leaving comments on quite a few of the more interesting posts. Trouble is, most sites won't notify you when more responses are posted, so you have to keep checking back to that site to continue the conversation. Some sites provide a feed for comments, but that means you have to individually subscribe to each feed in your reader, and most of these conversations expire after a few days. Well, somebody decided to solve that problem. Actually, at least twobodies did.

coComment - URL: http://www.cocomment.com - and co.mments - URL: http://co.mments.com - each give you a bookmarklet that you can install in your browser. Clicking the bookmarklet adds the current page to a "conversations" web page on their respective sites, under your login. Then, you can subscribe to one feed that aggregates all these comments for you.

Nice idea, but there are several reasons why I like co.mments better. First of all, coComment requires that you press their button prior to pressing the Submit button when submitting comments. Your comments go through their site and then back to the original site. You can get a greasemonkey script - URL: http://userscripts.org/scripts/show/3165 - for Firefox to automatically press the bookmarklet, but co.mments goes one or two better: you can press their bookmarklet at any time on any discussion site, whether or not you are contributing a submission. Furthermore, the feed from coComments doesn't seem to include all comments from others (it gets a few), whereas co.mments does.

coComments has some specific requirements of a site - URL: http://www.cocomment.com/integrate - to enable capture, while co.mments seems to work on a lot more sites (including this one). coComments has also had a few glitches - URL: http://www.makeyougohmm.com/20060304/3022/ - that have gotten in the way, whereas so far my experience with co.mments has been "it works". My only beef with co.mments so far is that the feed will only give you each comment once. After you've looked at it, refreshing the feed doesn't give it to you again. But, that is on their list for the upcoming update - URL: http://blog.co.mments.com/2006/03/03/more-features-coming-this-weekend/ -. I'm also impressed with Assaf - URL: http://blog.labnotes.org/ - (who seems to be the lead developer for co.mments). The site has an open blog, and he responded very quickly and in a friendly tone when I added a post suggesting a new feature.

*Feed Readers*

I got started reading feeds after installing the Google Desktop - URL: http://desktop.google.com/?pr=mp-gd-en-v3-1 -, which has a "Web Clips" panel. I liked the way it sorted them by post time, and it didn't take me long to accumulate a set of favorite feeds and turn off the automatic add feature. I was a happy camper until, since installing version 2.0, it seems to reset the preferences every couple of weeks! Gone are my favorites, and back is the automatic add feature. Uncool.

After becoming enamoured of Firefox - URL: http://www.chipstips.com/microblog/index.php/post/41/ -, I started reading my favorite feeds there. Just create a folder on the Bookmark Toolbar named "Favorite Feeds" and add the Live links there. Only trouble is, I have to browse all of the drop-downs to see if anything new pops in, and they aren't bolded or anything, so I have to remember what I've read and what I haven't.

My friend Jim Cobb told me I should check out Sage - URL: http://sage.mozdev.org/ -. I like it. At least in the lower pane it bolds entries I haven't read, and in the view pane I can see multiple entries at one time. If only it would bold the main feed folder when it contains new items, or show the number of new items in parentheses, or both. Or, if it would just pop up some notification when new items arrive, that would work.

Browsing around, I ran into Pluck - URL: http://www.pluck.com/products/rss-reader.html -. It does have a notification icon, and it does bold the feed when the feed has new entries. But guess what? You have to hover over the notification icon to see if there are new entries, and I don't like the presentation of the folders or the view pane as well as I like Sage's. Then I ran into something that really made me mad. When I went to add a new live link in Firefox (by clicking the orange feed icon), my only option was to add it to Pluck. Someone needs to learn to play well with others. Don't tell me where I can add live links. That's what I call "pluck". Time to uninstall. I get the usual notification that Pluck will be uninstalled when Firefox is restarted. So, I restart Firefox, and it's still there. I have to log out of Windows and back in before it's finally "plucked".

So, I'd be happy if I can get Sage to somehow notify me of new entries. Hey! Sage is open source! Maybe I can add it! So, I join Bugzilla and take a look at Sage's development site - URL: http://sage.mozdev.org/develop/ -. Sure enough, there is already a request for that feature. I add my name to the list, and also suggest they bold the folder name. I see it's dependant on another feature, so I'll check back.

Anybody using a feed reader that works better? Any other good tools to discuss?

This post originally appeared on an external website

by sterling "chip" camden

Thanks to a write-up yesterday by TDavid, I downloaded and started using BlogDesk for posting entries to my blog.
TDavid’s blow-by-blow account of the setup makes great documentation for this product — Johannes should really include something like that in the help file where he currently has just these two paragraphs:

Selecting Manage Blogs in the File [...]

This post originally appeared on an external website

by sterling "chip" camden

Dave Winer (emphasis mine):
The next development project is a connection between NewsRiver and the Share Your OPML community server. I’ve written code that allows you to set up NewsRiver to automatically ping SYO when your subscriptions change. Of course, by default, this feature is turned off; and it’s open, any aggregator will be able to [...]

This post originally appeared on an external website

by sterling "chip" camden

Damien Katz hits several nails on the head with Signs You’re a Crappy Programmer (and don’t know it) (thanks Assaf).
I especially like:

“Enterprisey” isn’t a punchline to you.

I’m constantly amazed at how many Enterprise Architects it takes to stand around wringing their hands while agile developers are putting real applications on-line successfully. I wonder just [...]

This post originally appeared on an external website

by sterling "chip" camden

Nick Bradbury’s Web 2.0 Filter: Any new Web 2.0 company that hasn’t considered the spam problem automatically isn’t worth my time.
Randy Charles Morin on BlogSpot: I’m simply tired of the 100s of splog referrers that I get each week.

We’re in bad need of some virtual shotgun messengers to round up these Internet highway bandwidth bandits.

This post originally appeared on an external website

by sterling "chip" camden

A couple of complementary posts on programming:

apotheon gives us part one of Signs You’re Doing Something Wrong. I always enjoy his take on things — principles which uniformly apply to programming, politics, and philosophy. The three points he gives in this post (arbitrary limits, productivity metrics, and buzzword compliance) all contain the Taoist mistrust [...]

This post originally appeared on an external website

by sterling "chip" camden

O’Reilly has a pending trademark on “Web 2.0″, and his lawyer sent a cease and desist letter to IT@cork telling them they can’t call their upcoming conference “Web 2.0″.
Let’s repeat that slowly so it can sink in. Tim O’Reilly, the great documentation champion of the open source movement, wants to trademark “Web 2.0″, and [...]

This post originally appeared on an external website