Home

November 2009

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom
Powered by LiveJournal.com

Jul. 3rd, 2008

Odd Lots

  • Text messaging has always struck me as more than faintly ridiculous: Spend a quarter to cramp your thumbs sending a handful of characters to another cell phone, when you could call that same cell phone and talk for a full minute for less. And even though texting costs phone carriers almost nothing, the cost of texting to consumers has more than doubled in the last three years.
  • I was at Barnes & Noble a little earlier today, prowling the history section as I often do. (The history section is now about the same size as the computer book section. This was not always the case...) I remembered something I had noticed many times in the past: B&N stocks an absolutely amazing number of books on the Knights Templars and Freemasonry. (By contrast, I counted three—three!—books on Ubuntu Linux.) The history section at Borders stocks almost nothing on these two topics. Do people actually buy this stuff? Or is there a Templars/Masonry fan club at the highest levels of B&N?
  • Xandros has purchased Linspire. Linspire tried their hardest to create an OEM market for desktop Linux, but annoyed FOSS purists by including commercial software in their CNR installation service, which was actually the only part of Lindows/Linspire that I really liked. Ubuntu has mostly swept the desktop Linux field, but I admit, they haven't gone after OEM installs as vigorously as Linspire did, nor as vigorously as they'd have to to get some traction against Windows. Ubuntu's parent Canonical is developing a mobile version that will be sold preinstalled on subnotebooks, but we're not quite there yet.
  • Mike Reith sent me an interesting little utility called IsDelphi, which will scan a directory, inspect any executables it finds, and report which ones were written in Delphi. The most interesting revelation: Skype is a Delphi app. I hadn't heard that.
  • In case you weren't already worried about whether you should take that trip down the hill to get a latte, I suggest a spin through Dark Roasted Blend's collection of weird car accidents. You Could Be There.
  • And in case you're not steamed out or punked out yet, head down to the closest Greek restaurant, order some calimari, and curl up with an anthology of squidpunk. Damitall, when are we gonna see glyptodontpunk? I'll show you escapist and whimsical...

Jun. 26th, 2008

Odd Lots

  • Good grief! Salvia is a hallucinogen! How in hell did I get to be 55 and not know that? (We used to grow it as a ground cover years ago.)
  • Nick Hodges wrote to say that the Easy Duplicate Finder utility I mentioned in my June 20, 2008 entry was written in Delphi. A lot of no-install apps are written in Delphi. They're fast, compact, and don't crap DLLs into your Windows\System32 directory. Too bad they're written in a Kiddie Language™.
  • Speaking of no-install apps, I've tried a few more. One good one (if of limited use) is TreeSize Free, which scans a drive or a directory tree and shows you which parts of the hierarchy are the ones that use the most drive space. Another that I've just discovered is the FastStone image viewer, which isn't quite a digital photo manager but comes pretty damned close. So far, I can recommend both.
  • Jason Kaczor sent me a pointer to Microsoft's WorldWide Telescope, and it's worth a look, especially if you've got a big-screen TV that can display at least 1024 X 768 graphics. Needs XP SP2 and some middling computer horsepower, but man, what a show!
  • Any time anybody anywhere experiences any weather that they don't like, environmentalists jump up and do the Global warming! Global warming! cheer—but when environmentalists block brush clearing in a fire-prone area and the whole place subsequently goes up, as Santa Cruz recently did, do we hear but a peep? Heh. (Thanks to Pete Albrecht for the link.)

May. 13th, 2008

Odd Lots

  • Sorry for the recent quietude here; the weekend was a whirlwind, and it took all of yesterday just to catch my breath.
  • Scott Kurtz' PvP webcomic celebrated its first ten years by showing us that Brent Sienna actually has eyes. Wow.
  • Allan Heim sent me a pointer to a nice article on the Fermi Paradox that expresses a position I have been drifting toward for most of my life: That we are probably alone in the universe, perhaps not only as intelligent, tool-building beings but also as living things, period. The author makes a case that being alone in the universe would be very good news, but not for the reason you might think. Read it.
  • Borland is apparently selling their CodeGear division (which develops and supports Delphi) to Embarcadero Technologies, a database tools company. This was not unexpected, and to be honest with you, I can't tell if it's a good idea or not. One of Delphi's most serious problems is that it got so good after five or six years that most people stopped upgrading; I'm amazed at how many people are still using Delphi 6. The cost of the product was also an issue—there is no ~$100 starter edition—and the Turbo Delphi Explorer experiment demonstrated how important the ability to install components was. An amazing number of people wrote to me to say that they downloaded the free product, installed it, fooled with it for a week or so, and then went back to Delphi 6.
  • From Mike Sergent comes a pointer to a NYT piece indicating that most people do not have the training to discern the level of subtlety in wine flavor that they claim to, and that a lot of it may exist mostly in our heads anyway. This is not news (to me, at least) but it's nice to see it going mainstream.
  • Michael Covington posted a fascinating graph of changes in home prices from Q4 2006 to Q4 2007, suggesting that the "housing bubble" has not been evenly distributed. The coasts have suffered, as have most major cities and trendy places like Colorado's Front Range, but flyover places like Nebraska and Wyoming have posted solid increases in that time. In addition to that, sharp differences by state suggest that state-level housing and banking policies have more to do with housing cost changes than most people are willing to admit.
  • Also from Michael is a graph demonstrating that the US economy is not as much of a disaster as Big Media has been hammering on. (I won't invite all the usual hate mail by explaining in detail why this is, as it's pretty obvious if you think about it.)
  • The other day I found myself thinking something remarkable (for me): I would rather buy a Mac and run my essential Windows apps in a Parallels window (or in a compatibility box like Crossover) than move to Vista.

May. 24th, 2007

Concurrency and the Core Explosion

An offhand comment in my May 18, 2007 entry gave rise to several interesting emails, all about whether or not concurrency in programming is important. I'll weigh in here with an interesting and perhaps inflammatory opinion:

1. Concurrency is extremely important.

2. It's also conceptually difficult, and we don't have a consensus on the best ways to implement it.

3. C and C++ are not likely to evolve toward concurrency. Pascal could, and should. (Maybe it already has...)

First of all, the backstory: We're running into various inconvenient laws of physics in our quest to make CPUs faster. So instead we're adding entirely separate processor cores, each of which can sustain a completely independent thread of execution. Dual-core CPUs are now commonplace, quad-cores, while still exotic, are here, and we'll have eight or sixteen cores within four years or so. Neato-cool! Now, how do we translate eight cores into faster app response?

Alas, we have almost no idea. Hence point 2: We are linear thinkers in most respects, and the simple concept of carving up what we have always considered a totally linear idea into multiple parallel ideas ties our heads in knots. Note well that there is a subtle but important difference between spawning separate processes to do different things at the same time and recasting a single algorithm so that its work is done in parallel on multiple processors. Both are challenges, but the second challenge is way trickier than the first.

Even the first is gnarly, as anyone who has fooled with threads will attest. Locks and mutexes and semaphores, oh my! I've been poking around online, refreshing my memory with respect to concurrency in programming languages, and there's a lot to see. I learned only yesterday that Ericsson evolved Erlang from an earlier language called Eri-Pascal that was Pascal extended for concurrency. (And Eri-Pascal came out of something even older, called CHILL.) Pascal has a long history of attempts at concurrency, with some of them going back to the early 1970s. (See Concurrent Pascal and Pascal-FC.)

There's a cautionary revelation in seeing Erlang as a child of Pascal: The child doesn't look a great deal like the father. We may not be able to implement safe concurrency by strapping a bunch of new stuff onto existing languages. We may have to go back and re-think a great deal of what we take for granted in programming, which on my early glance appears to be what Ericsson did with Pascal to produce Erlang. Languages with massive installed bases like C, C++, and Java may not have enough wiggle room to evolve toward concurrency. We'll see—and again, a really good concurrent C may look so little like C that C fanatics won't use it. Furthermore, C may be too close to the hardware to gracefully accept the radical semantic changes necessary to support concurrency in a safe and intuitive manner.

I'm still thinking. But if you're a Delphi or Pascal guy, I strongly advise you to study up on the challenges of concurrency, including the Actor Model. Download Erlang and play with it. A new Erlang book from The Pragmatic Programmers will be out in July. Part of Erlang's White Book is available online. The Core Explosion (fortunately not the one that Larry Niven wrote about) will change the way programming is done. Be ready for the change—or better still, be one of the forces that guide it. The language wars are not over, and C may not win the next one.

May. 18th, 2007

A Failure of Sarcasm

As people who have known me a long time will understand, I was clearly not born to dance, appreciate opera, or play competitive sports. I may also be incapable of sarcasm, perhaps because I don't use it much and nobody expects it.

Ok. A couple of people have written to me in shock with respect to my May 12, 2007 entry, in which I said this:

In that never-to-be-sufficiently-despised language Pascal, you can take a string buffer and strip out any character not falling into a predefined set of characters using one (short) line of code.

They took me literally and wondered why a famous Pascal guy would say that. Egad. Full-bore sarcasm here, people! I carry few grudges, but there is one that is probably eternal: My grudge against the dorks and flamers who waged war on my "kiddie language" way back when Pascal and C were considered peers. They slandered it in the press. They slandered it in the streets and on the rooftops. They slandered it in my face. The war is over, and my side lost a long time ago. I won't argue the merits anymore, though I have long had powerful suspicions (unconfirmable as long as source code is not revealed) that the vast majority of buffer overflow exploits tormenting us these days can be traced to the unbounded string functions in the standard C library. Perhaps the technology industry gets the kind of programming language that it deserves.

Anyway. My point was to state that Pascal can handle a particular programming challenge with virtually no effort. My real target was lazy programmers, or perhaps insufficiently powerful runtime libraries of server-side languages that I'm not good at. In this particular case, I wasn't criticizing C, but was simply making the point that my often-slandered kiddie language could easily solve an issue that online programmers are either unwilling or unable to solve.

I have fooled with a great many programming languages. I'm good at a few, and I hold a few in high regard. (The two sets don't completely overlap.) But when pressed, I will say two things:

1. I am an assembly language programmer, and
2. I am a Pascal programmer.

If CodeGear ever releases a Turbo Erlang I will give it a go. (Parallel processing is in many respects the Last Frontier in coding.) But in the realm of high-level languages, I have only one love, per omnia saecula saeculorum.

Feb. 26th, 2007

Odd Lots

  • The Make Blog aggregated a page describing "drilled chili beef." Basically, you freeze a beef roast, drill a bunch of 3/8" holes down its long axis, and then stuff some appropriately shaped chilis into the holes. (They're called "finger chilis," looks like—dunno, don't eat them myself.) Roast the beef. Oh—and scrub that drill bit first!
  • CodeGear (the programming tools spinoff from Borland) has announced Delphi for PHP. Not a lot of details yet, but it sounds fantastic—especially the part about a PHP component library. I fooled around with PHP and set it aside because of the masochistic tool set (or lack of a tool set) that made it smell to me like it was more trouble than it was worth. A $250 Delphi for PHP could change that. Now, how about Delphi for Flash?
  • I just received the last of the 119 issues of Popular Electronics that contain Carl & Jerry stories. Many thanks to Doug Faunt, N6TQS, for providing the final six that I was missing. Volume 2 should be available in a few days, and now there's nothing to stop me from getting all five volumes into print this year.
  • I've complained a number of times that there is no competitor for Microsoft's Visio, but that's not entirely true. TheKompany offers Kivio, a program similar enough to make me want to try it, though as best I can tell there's no ability to import and export existing Visio drawings or stencils. (Visio has always kept its file formats a very dark secret.) It's available for Linux and Mac. The software itself appears to be open source; TheKompany is hoping to make money selling its "blades" (a custom package of shape stencils) rather than the software itself.
  • Sigh. Wikipedia has found a mechanical perpetual motion machine notable enough to give its own page. Oh—and a separate page to its "developer." It looks like a pretty typical "magnet motor" to me (I've seen writeups of any number down through the years) but that doesn't grant an exemption to the First Law of Thermodynamics. As is typical, little is being revealed about the device. It's a scam, and if it belongs on Wikipedia, so does just about anything else you could name. (Thanks to Mike Reith for the pointer.)

Dec. 12th, 2006

Odd Lots

  • The leading names for our new puppy so far are Comet and Captain Nemo. Both names are pertinent: A comet, after all, is a dirty snowball, which the little guy resembles after rolling in the dirt. Also, we could then say, "Comet and QBit" to precede "Donner and Blitzen." Alas, the most natural diminutive to "Comet" is "Commie." (Some people have already called QBit QBie. Commie and QBie. Maybe not.) We considered Elf, given that he's a Christmas puppy, with the bonus after-the-fact acronym of "Extremely Lovable Furball." Captain Nemo works well because anytime he sees an available lap, it's Dive! Dive! Dive! He also has a desire to wander, rather like Pixar's defiant little fish of the same name. QBit always stayed right beside us, but the little guy clearly wants to explore. I can see it now: 20,000 Leagues Off-Leash.
  • Pete Albrecht sent me some links on the Curta Calculator, which I had heard of but never seen or read about in detail. It's a thing about the size and shape of a pepper mill, with a crank on the top. You enter numbers on little sliders on the device's side, and then turn the crank to generate a sum or a difference. (Other arithmetic operators can be accomplished with a little more work.) There's even an online Curta Simulator, which will give you a much clearer picture of how things work. Now I know why people say, "crunch the numbers." Also, it was made in Liechtenstein, of all places.
  • I received the "big" (non-free) edition of Turbo Delphi a little while back, and have installed it and begun to test it. It works beautifully, and (amazingly) may make me give up Delphi 6, or at least consign it to a VM. Whatever problems I've had with Turbo Delphi so far have to do with the installation of all the .NET folderol that it requires as prerequisite installs. Partway through the .NET installation on my new XP machine (the SX270) it asked to reboot, and when I did, the Administrator account (from which I had begun the install) was no longer listed on the Welcome screen, but only the Jeff Duntemann and the Jeff (Limited) accounts. I could still log in as Administrator, but I had to turn off the Welcome screen and log in via the command-line dialog. WTF?
  • One thing I didn't know until yesterday is that Turbo Delphi requires activation. It's not like XP or Adobe activation in that I don't think it looks are your hardware and hunkers down when you change a hard drive or network card, but that is an experiment I do intend to make.
  • Sectorlink, my hosting service, has apparently turned off their spam filtering mechanism because it was being overwhelmed by recent floods of spam. That we're being carpet bombed with the stuff is clear: I got 306 spams yesterday, after over a year of getting maybe 75 or 80 per day. As I write this, it's 10:15 AM and I've already gotten 133 since shutting down last night at 10. Most of the delta is pump-and-dump scams using only images and some obfuscation text. Thunderbird's trainable spam filter is basically worthless, and gets only about 40% of what comes in. I nab ten or twelve spams per day with a conventional keyword filter, but what we really need (as Michael Covington has suggested) is a more general filtering language that would allow us to compare strings in From and Subject, and count attached images and measure their size, etc. I really don't think that most people care about spam, because things as obvious as that are just not being done.

Dec. 5th, 2006

Odd Lots

  • Pertinent to my entry for November 25, 2006: A US district court has ordered the Treasury Dept. to modify American paper currency to make the denominations distinguishable by the blind. They do this in Europe and a lot of other countries, and although making bank notes different sizes sounds a little dicey to me, there are many other things that could be done. And this would be a great excuse to retire the dollar bill and create a diameter-distinct dollar coin that people might even use.
  • Rather than spin off their developer tools division to a group of investors, Borland is creating a wholly owned subsidiary called CodeGear to sell their compiler tools and manage their future evolution. The FAQ on the move is interesting more for what it doesn't say than for what it does: Borland needs their compilers, probably more than their compilers need Borland. I'm hoping for the best, and having just received review copies of the "big" Turbo Delphi and C# products, I think some hope is warranted.
  • Google Answers is shutting down after four years of charging people $2.50 to ask questions of experts. The basic idea is sound, but I wanted more confidence in the expertise of Google's experts—and in truth, the questions that puzzle me are not things that experts can generally answer.
  • The Dell Optiplex SX270 (See my entry for December 1, 2006) has something I didn't notice at first: An external drive bay designed for a "poppable" module, and there's a button on the front panel that when pushed, pops the module (generally an optical drive) right into your hands. There is a lock lever inside the case to keep passers-by from popping and walking off with your drive, for the cube-farm market. The two units we have here include CD-R drives, but DVD and DVD-R drives are available (as well as a floppy drive and a conve tional hard drive) and it would be interesting to find a five-way memory card/stick reader in that module format. The more I use this item, the more I like it. Heat (as warned by some online reviews) has not yet seemed to be a problem.
  • This morning's Wall Street Journal reported that Jones Sodas is dumping high-fructose corn syrup and going back to cane sugar. (Here's a link to an online piece in the Seattle Post-Intelligencer) Dare we hope that this will become a trend?
  • I got a slightly indignant note from one of my readers (and he may or may not have been pulling my leg; it's hard to tell with some guys) informing me that "Texas Elegance" is not a porn star, but rather a nude model. (See my entry for November 28, 2006.) Furthermore, she is only 48. She works for a porn site called Southern Charms. And she's "hot." Just FYI.

Oct. 12th, 2006

Resurrecting a Classic Computer Book on Lulu

Back in 2001, Julian Bucknall published The Tomes of Delphi: Algorithms and Data Structures with Wordware Publishing, and it became something of a legend. The book's been out of print for awhile, and used copies are selling on Amazon Marketplace for $200 and up. Whoa.

There's definitely a message in that market. With rights now reverted and in-hand, Julian has republished the book on his own through Lulu.com. You can now order that $200 book for $25. Wordware sent me a review copy when it first came out in 2001 (alas, too late to review in Visual Developer Magazine) though it disappeared somewhere along the way. I just ordered a new copy, but my memory of the book is still solid: If you do anything in Delphi beyond stringing components together with one-line event handlers, this book needs to be on your shelf.

That would be good enough news right there, but Julian's gone further: He's written a three-part article on how he went about re-creating and re-publishing the book, which stands as the best single description of the print-on-demand publishing process that I've yet seen. Part 1. Part 2. Part 3. (The sections are not linked to one another yet.)

If you have any least interest in print-on-demand publishing, read them closely and in order. A number of lessons emerge from his experience:

  • Publishing at book length is now possible for almost anyone. It's still a lot of work, but there are no real gatekeepers, as there are in conventional publishing. You don't have to persuade anyone to list or carry your book. You follow the process, and it's published.
  • There is very little real money in print-on-demand (POD) publishing. This has been true since the dawn of POD time. What is said less often is that there is very little real money in conventional publishing anymore, either.
  • The real strength in POD publishing is re-publishing out-of-print books to capture "long tail" demand. Julian's book is exceptional in that regard, in that the book had an unusually good reputation in its first life, rather like Michael Abrash's Graphics Programming Black Book, a 1,340-page behemoth that we published at Coriolis in 1997. Used copies were selling in the $80 range until relatively recently.
  • But that said, POD publishing is extremely length-sensitive. Unit manufacturing cost is 2c per page plus $4.55. Julian's book is 524 pages long, so its UMC is $15.03. That's over twice (and approaching three times) what it would cost to print each copy in 4,000 copy quantities using a conventional offset press. Michael's book would have a UMC of $26. Ouch.

Julian tells us that he has sold 110 copies in one week. That's little short of astonishing, though some of that is probably an initial blip of pent-up demand. Books like this are less version-sensitive than most computer books, so there's a good chance that the book will sell steadily for years to come. And one overwhelming advantage of Lulu-style self-publishing is that the author does not have to warehouse books, process orders and payments, dun deadbeat retailers, or handle the inevitable bookstore returns.

Julian speculates (and I agree) that POD books should go for depth, not breadth. It might be better for all parties if POD books were shorter (100-200 pages) and priced at about $20-$25. (I think that Julian underpriced his book by $5-$8 and consider it a honking bargain.) Based on his experience, I am considering taking my book Degunking Your Email, Spam, and Viruses and breaking it up into three separate books along the obvious topic lines, updating them, and publishing them on Lulu. I don't expect his kind of success with it, but the book reviewed well enough for me to think that it still has some value.

My efforts to publish on Lulu were stymied for months by a weird routing problem that I recently solved (see my entry for September 20, 2006) and it's time to get back on the task. More here as it happens.

Sep. 9th, 2006

My "Square One" Page for Turbo Delphi Explorer

I've been getting plenty of gripes about the undocumented installation process for the new Turbo Delphi products, and those from people I consider reasonably experienced. I can only wonder what total newcomers (to whom the product is in part targeted) are doing. So in response I've posted a summary of the installation process as I've doped it out in a whole new page, called Turbo Delphi Explorer from Square One.

I've discovered that the Indy components are in fact installed by the Turbo Delphi Explorer installer, but they're not added to the Tool Palette. You can treat Indy as a library and still use the components; you just can't drag them off the Tool Palette and drop them on a form. Given that most of the Indy components are not visual, that's less of a handicap than it would be with visible, sizeable, positionablecomponents. I'm going to clean up and simplify my little domain name resolver program as a demo of how to do this. Give me a few days; lots going on here.

In general, once you get past the install, Turbo Delphi Explorer is a lot of fun, and a killer product considering that it's a free download. I do think the $500 price for the paid version is a little high, and hope they will rethink that. $99 would be killer, but I'd accept $199 without any complaints.

Let me know how you're faring with Turbo Delphi Explorer, or any of the other Turbo Explorers. If you've learned anything interesting, let me know so I can pass it along to my 12,000+ monthly readers!

Sep. 8th, 2006

Learning a New IDE Is a...Bear

Turbo Explorer landed in my lap in the thick of a very busy week, so I don't have a great deal to say about it this morning, and I have a pretty full day ahead of me. I've spent a little time with it, building short programs and trying to see it without my Delphi 6 goggles on. That's tougher than it sounds, considering that Delphi 6 looks remarkably like Delphi 2 (and 1, for that matter) and thus I've been using what amounts to a single IDE for eleven years now.

I noticed with some sadness that double-clicking on an event doesn't create an event handler skeleton for you, unless it's an option that I have to explicitly enable. Again, I haven't had enough time this week to really examine it closely.

One interesting side-issue came up the other day during my morning walk. I was on Jarmin St. heading for home when up ahead I spotted a black bear about to have his way with one of the big garbage cans they use around here. It was a young bear, certainly of this spring's birthing, not even full grown—and not too clear on the whole nocturnal animal concept. Every bear I've seen here was either deep in the woods on the mountainside, or else wandering the neighborhood in the middle of the night. Seeing one at 10:15 in the morning was a little startling.

The photo above is misleading. I took it from about 500 feet away, using a 5 MP hi-res digital camera at full telephoto. The full frame shown at left will put it in slightly better perspective. Just about the time I was pulling out my camera, a pickup truck with some yahoos in it rolled by, stopped by the bear and started yelling at him. He was in the process of heading into the bushes when I snapped the photo.

Further down the street I found an upended can with trash all over the place, so evidently he was doing his rounds. Subdivision rules require you to keep your trash cans under cover until after 7 AM, and the trucks generally finish their rounds before 9. Pickup was late this week, and the bears took advantage.

More on Turbo Delphi Explorer as soon as I have something useful to say.

Sep. 7th, 2006

Early Reactions to Turbo Delphi Explorer

It wasn't until yesterday afternoon that I could carve out a big enough block of time to really go after Turbo Delphi Explorer, having downloaded the product Tuesday. As with all products this complex, it went up for testing in its own Win2K VM.

I imagine (and taking a quick look just now at borland.public.delphi.non-technical confirms) that some people are going to be annoyed that Turbo Delphi is a .NET app. This didn't surprise me, but it may surprise people who last bought a copy of Delphi in 2000. Those caught up a little too much in "us vs. them" psychology (where "them," as usual, is Microsoft) are bitching about the .NET connections. I say it with a little regret born of a yearning for lost simplicity, but Win32 is not enough if you're going to write a world-class developer tool suite. .NET is becoming more and more to integral to Windows functioning with every release, and Borland can't ignore it just because MS are The Other Guys.

Some of the bitching may simply be due to the .NET elements of installation. The really big issue with Turbo Delphi for Win32 is a complicated and virtually undocumented installation procedure. This is especially true for people who have no experience with .NET, of whom there are still many. Before the BDS (Borland Developer Studio; Turbo's IDE) is installed, there is a fat file full of prerequisite installations that must be done, all of them associated with .NET. Alas, there was no "readme.txt" file in the prereqs.zip archive, and no instructions for the prerequisite installs. This is not easy to dope out from first principles; I knew from earlier work that dotnetfx.exe was the installer for the .NET runtime, but a person used to looking for a setup.exe file might be puzzled, especially since there are three .exe files in that directory and nothing to indicate which installed what. The .NET runtime must be installed first, and nothing tells the user that anywhere that I could see. The J# runtime has to go in next; both runtimes must be installed before the .NET SDK will install without yelling.

Another potential puzzler comes up when you run ie6setup.exe after having installed the .NET SDK, .NET redistributables, and J# redistributables. Evidently IE6 is installed in the process of installing .NET (that was something I didn't know) and something very like an error message tells you that IE6 is already installed and you had better exit the installer now. Again, a good readme.txt file or good installer script would have prevented this. Minor issue: The MSXML installer is an .MSI file. A fair number of people probably don't know that you can install a .MSI file by double-clicking it.

The first time I ran Turbo Delphi, I was asked for the Turbo License Activation File. I had received this file via email after requesting it from the downloads page, but had put it in the wrong directory. Once I moved the file where it needed to be (in Documents and Settings\Jeff Duntemann rather than Documents and Settings) the product came up. This was my mistake, but it was a very easy one to make, and a little install doc would have prevented it.

The Turbo Delphi installer does not ask if you would like a desktop icon, but it should.

Peculiarly, although the installer asked whether I would like Indy 9 or Indy 10 to be installed, as best I can tell it installed neither. I got the impression talking to David I. a month or so ago that the Indy Components would be part of the Turbo Delphi Explorer, and while I will understand if a decision was made later on not to include them, their mention in one of the installer dialogs will make a lot of people wonder if something went wrong during install.

For the benefit of readers who are trying to install Turbo Delphi Explorer, do the prereqs this way:

  1. Install the .NET redistributables by executing dotnetfx.exe.
  2. Install the J# redistributables by executing vjredist.exe.
  3. Install the .NET SDK by executing setup.exe in the dotNETSDK directory.
  4. Reboot the system.
  5. Skip the installation of IE6. If you try to install it, you'll get a box telling you it's already installed.
  6. Install MSXML V4 by double clicking msxml.msi. in the MSXML directory.

At this point, you can execute the TurboDelphi.exe installer and follow the dialogs. Make sure that the license file is in the account name directory. You can't put it under All Users or Default User. If you run as Administrator, put it under Administrator. If you run under a different account name, put the file there. Turbo Delphi will look for the file, which contains serial number information, and if it can't find the file it will ask you to enter the data manually. Since this data is embedded in an unstructured, unlabeled block in a text file, you won't know what it is.

The IDE is radically different from Delphi 7 and before, and if that's as far as you got with Delphi, I powerfully recommend running Nick Hodges' Camtasia videos. There's a lot of unlearning and relearning to do, and as I've always said, Delphi shows better than it tells.

That's about all I have room to cover today. I'll continue tomorrow.

Sep. 5th, 2006

Turbo's Out! Go Get It!

Well, the countdown timer expired this morning, but the Turbo Delphi download link was not yet live, and I didn't check it again until later this afternoon. Just a few minutes ago I went over to the Turbo Explorer site and worked through the download process. I got an HTTP file transfer connection immediately, and the files came down at an impressive 480 KBps. I was expecting the servers to be choked, but evidently I got in at a good time.

I didn't sleep well last night (I'm in the thick of one of my periodic bouts with insomnia) and so I'm running behind today, but I'm about to load it up and see what happens. A useful report may take a few days. Bear with me—or better still, go get it and see for yourself!

Aug. 31st, 2006

Turbo Delphi Looms Large

As I write this the countdown clock for Turbo Delphi broke four days, and it's now 4 days, 23 hours and some minutes until we will know if the new (and as yet unnamed) Borland "DevCo" is as good as their word. There's not a lot of hard information on the Turbo Delphi page, but there are a number of interesting videos, including one of an Australian fifth grader building an app in Delphi using Enterprise Core Objects. (I used to admire girls in fifth grade because they were good at fractions, sheesh.)

However, if you want videos, go straight for the jugular and run Turbo Delphi Product Manager Nick Hodges' series called "Thirty Camtasia Demos in Thirty Days." To get a good feel for what the new IDE is like, start with the very first one and run through them all. The videos are between eight and twenty minutes long, and are video screen shots taken (using the superb Camtasia) of the Delphi IDE, with Nick narrating in the audio channel. The first one is key: If you decided to stop your Delphi path with V5 or V6, you'll see immediately that we're not in Kansas anymore. We're not even in Idaho.

I had to grin a little when I saw Nick's Camtasia video series. One of the things I had been planning to do (and may still do) is create a Turbo Delphi Explorer tutorial ebook with short Camtasia screen videos to illustrate the text. Delphi is just one of many things that shows better than it tells.

Anyway, I'm a little short on time today, but I wanted to make sure you knew that you can now see Turbo Delphi in action, live and in real time—and we're less than a week away from being able to download the real thing. Stay tuned. I'll report my own adventures in this space.

Aug. 10th, 2006

Odd Lots

  • In releasing free editions of the upcoming Turbo language products, Borland may be hoping to noodge people with six or seven year old copies of Delphi to upgrade. Many people stopped upgrading when Delphi 7 appeared, because the version got such bad press. I know a fair number of people still using Delphi 5 and 6, and even one guy with Delphi 4. If the new versions are really good, they may drive at least a few upgrades, and that's all to the best if we want Borland (and by that I mean the new fork of the company that we'll see this fall) to stay alive.
  • Andrew Stuart sent me a pointer to BookMooch, a site that coordinates the passing around (rather than the selling) of used books. I haven't tried it yet, but it's an obvious thing to do. It's a point-driven system with an elaborate set of rules for how you earn points, and it will take some time and experience to see if this will actually work. (The idea is to give people incentives to send out books rather than only receive them.) I'm going to give it a shot when I get home (where all my stacks of used books are) and will report back in this space.
  • My spam count has very abruptly soared to about 200 per day, from a previous average of 80-100. I get the impression that some spammer somewhere has passed a list of pre-resolved email addresses (that is, resolved to IPs) through DNS to "freshen" it. My spam count dropped by almost 80% when I changed hosting services a couple of years ago, probably due to spammers using preresolved lists of addresses in which my address pointed to the old hosting service.
  • Another note on spam: The majority of messages I get from spam zombies (rather than spammers like GossipFlash that own their own domains) now carry their payload messages as images. The change came fairly quickly, and this suggests that most of our spam comes from a relatively small number of botnets. Teergrubing (slowing down the rate at which SMTP servers accept connections) might help us, but I don't hear much about anyone doing it.

Aug. 9th, 2006

Odd Lots

  • I had not yet learned when I wrote yesterday's entry on the new Borland Turbo products, that only one single-language package will be installable on a single PC—the assumption being that anybody who needs more than one language should buy the "big" package with all the languages built-in. This doesn't bother me much, but I wonder if they've taken into account that a lot of programmers (me included) write code only in VMs—and VM snapshots are cheap.
  • I'm still in Chicago, and have been struggling to get DSL working here in the basement of Carol's mom's house. I finally figured it out this morning, having been on the phone with SBC's poor support techs for far too long: The &#*!?! browser-based installation script is IE-specific!! (I was Firefoxing my way through it and getting nowhere.) Worse, only the third tech knew this. Executed under Firefox, the screwball script was invisibly and silently skipping key parts of the process, and landed me more than once at a screen breathlessly but falsely announcing, "You are now connected to the Internet!" I'm glad I lost my hair early. Male-pattern baldness is way less painful than ripping it out in chunks.
  • Here's one of those bits of "What the hell is going on here?" trivia: Austria has the highest suicide rate of any Western country, at 35.5 per 100,000 people. The US rate is a little more than half that, at 18.9. More grim stats here.
  • A guy has built a very reasonable facsimile of the Segway balancing scooter. The main difference is that it has no safety features: If something fails in the system, you go forward on your nose with the control box in your crotch. I find the idea of a balancing system fascinating, and if time ever allows I'd like to build something like this, less as a scooter than as a robot. My old Cosmo Klein robot was a wonderful crowd pleaser, and it would be very cool to have a 2-wheel balancing robot to run around. Such balancing robots have gotten pretty popular. A nice seminar slide show on the topic is here, and a typical robot (with software written in Delphi!) is here. Oh, for a forty-hour day...

Aug. 8th, 2006

Turbo Delphi!

Yeehah! Turbo returns! I got a call from Borland's David Intersimone late last week, and we spoke for quite awhile, certainly at more length than we have in ten or twelve years. The big news is that Borland is introducing a line of new, single-language, single-platform IDE/compiler packages under the Turbo brand:

  • Turbo Delphi for Win32
  • Turbo Delphi for .NET
  • Turbo C++
  • Turbo C#

Each package will list for under $500, with student pricing under $100.

This would be very cool all by itself, but the wilder part of the announcement is that each of the four products will also be available as a free download, under the Turbo Explorer moniker. The Explorer editions are the full product with one limitation: The component palette is fixed, and additional components cannot be installed.

Nonetheless, the palette supplied with the Turbo Explorer editions contains over 200 components, including WebSnap, the Indy Internet components, and virtually all the others that Delphi developers are used to seeing. That's a helluva deal, heh—especially for people who program for fun, or who write relatively simple utilities to massage data or support their work in other ways.

Borland has set up a Web site specifically for the Explorer editions, at www.turboexplorer.com. Both the Professional Editions and the Explorer Editions will be available before the end of Q3 of this year. They're working with schools to get the Turbo languages onto the curriculum (especially Turbo C#) and will be encouraging publishers to bring out new books focusing on the Turbo products. (Am I working on one? Can't tell you yet...but wouldn't it be wild to have The Turbo Delphi Explorer Explorer?)

I also asked David about the spinoff of the developer tools products into a new company distinct from Borland. The process is moving along, and we should know more by early fall. Everybody involved is chomping at the bit, since it's by now pretty clear that Delphi, C++, and C# are only the first Turbo languages, and will not be the last. David didn't get real specific, but he asked me what languages I would want to see added to the Turbo lineup. My first choice would be PHP, and my second...assembly, both Win32 and .NET. We'll see what they do.

If you asked me what this was going to do to Borland, or programming generally, my first reaction would simply be: It's gonna make programming fun again, in a way it hasn't been in what seems like a very long time. Back in the mid-1980s, anybody who had $50 could have Turbo Pascal, and we all had a marvelous time, even without the Internet. People who wouldn't have taken a shot at programming if the cost of entry were $400 were tinkering up interesting little things, having fun, and learning a lot. Twenty years later, dare we hope that we can do it again?

I do. Put Delphi in the hands of tends of thousands of bright kids (even middle aged ones) and magic will happen. This time, the wand is free. (I may finally learn C#!)

May. 2nd, 2006

Delphi Exception Abuse

As much as I love Delphi, there are things about it that drive me absolutely batshit. I ran across another one today, though it's not for the first time, just the first time in a number of years. In Delphi, there's a very handy library function called StrToDate(StringContainingADate). If you pass the function a date in string form in the parameter, it will vet the date for you and return a TDateTime value equivalent to that date as the function result. Unfortunately, if the string contains nonsense or a malformed date, StrToDate raises an exception.

That is exception abuse, pure and simple.

Exceptions are a relatively sophisticated mechanism that allows a piece of code to recover from many kinds of code failures, especially failures that leave several values in uncertain states, or (especially) where the code has to check status on a database or a network connection or something and attempt to recover. Using Delphi's exception mechanism to tell you that a date is malformed is idiotic. The date is either good or it isn't (the exception tells you nothing about why the date failed to pass muster) and whether it's good or not doesn't change anything else in the program. A Boolean flag passed back somehow would make coding date coversions a whole lot simpler. I would rather see the function defined like this:

FUNCTION StrToDate(InputString : String; VAR Date : TDateTime) Boolean;

This way, if you call the function and it returns False, you don't use the value in Date. Simple. No need for TRY..EXCEPT and all the kafeuthering that Delphi launches into when somebody raises an exception.

Handling exceptions while you're working in Delphi's IDE is awkward in a number of ways, so I would prefer to see exceptions used only when they make overwhelming sense. This is not one of those times.

A secondary issue regarding date conversion is the use of a predefined global variable called DateSeparator to tell you what character is acceptable as a separator in date strings. I don't like global variables very much—all the books I learned Pascal from spoke of them as one would speak of a tropical disease—and I don't see why a global variable is the best way to tell a library routine what stupid separator you consider valid. The better way would be to pass a character set variable or literal to the conversion routine, where the set would include any characters you consider valid as separators, for example: ['/','-','.'] That way, you don't have to run the conversion routine three times, after changing that damfool global to each of the permitted separators.

I guess I'm just venting here; Delphi is what it is, and since I'm behind on the project already, I don't think I'll be writing a StrToDate function of my own. I look at the code I had to use to make this stuff work and think, Eeee-yuk! I try to make my Pascal as pretty as possible, but in this case, when the standard libraries are that ugly, there's very little to be done other than throw a bag over it and hope nobody else ever has to look at it.

Feb. 21st, 2006

Richard Phillips' XML Parser for Delphi

I have come into a consulting project that I can't talk about yet, but it requires that I do some software design and prototyping for an information system based on RSS. I've discovered (as I do on a regular basis) that knowing how something works and building something with that something (such that it works) are two very different things. Nothing nails knowledge like swinging the hammer yourself.

So I'm hip-deep in XML, a technology that I've really only waved at in the past. And I've been having some fun poking at XML from Delphi, using a remarkable free tool from Richard Phillips. I used his HTML parser when I built my Aardmarks bookmark manager five years ago, and I remembered that the component set includes an XML parser as well. It's beautifully done, with a nice demo program and some reasonable documentation. If you're working in Delphi and need to pick apart either HTML or XML files, I don't think there's anything on Earth that can touch it. It's not new, but Richard does not promote it and it hides well. Get the latest version from the author's site here.

Feb. 9th, 2006

Delphi Dumps Borland

Mail is pouring in about yesterday's announcement that Borland is going to sell off its IDE development products, the most important of which are Delphi and JBuilder. Read the story carefully; I think many may have it wrong: Borland isn't dumping Delphi; Delphi is dumping Borland. David Intersimone, who's been with Borland for over 20 years, is going with the IDE products to some new and as-yet undertermined spinoff. I have a sense that wherever David I. goes, the true spirit of Borland goes, whether under that name or not.

What will nominally remain under the Borland name is "application lifecycle management," or the sort of thing that most of us old-school developers call "a subscription for the beating of dead horses." IBM is good at this, and it's tough to think that Borland can just walk in and take a bite out of IBM's lunch. Besides, whothehell cares? If a handful of managers walk off into the sunset babbling about application lifecycles, we'd be well rid of them. A brand without the products that created the brand is about as useful as an empty cereal box, as Borland's management will eventually discover.

Everything depends on what sort of organization picks up Delphi and its lesser brothers. A small, savvy group of developer/investors could strip out some of the crud from Delphi 2005, cut the price by about 75%, and own the Win32 code generation market again. (I'm less sure how viable JBuilder is, since I don't use it.) There's a lot of room for new, highly integrated IDE products. Something as visual as Delphi and capable of creating strict model-view-controller Web apps using both Delphi's frameworks and other technologies like Ruby and Rails, or Java and Struts, would be killer, and I don't think anything like that exists yet. I'm currently creating very simple Ruby/Rails apps, and as good as the technologies are, using them means manually managing a horrible mess of disconnected text files, which is precisely what an IDE is supposed to do.

I'm less sure of how much impact AJAX will have on the development market, but AJAX definitely needs an IDE to pull together the various disconnected technologies that now have to be knit together by hand. Delphiware Corp. (or something else meaning Delphi emptied of Borland's missteps) could own the AJAX market with the right product.

So let's look at it from the correct perspective: Borland was killing Delphi. Getting rid of Borland is probably the best thing to happen to Delphi since Win32. Life is not about screwing around with application lifecycles. Life is about making code happen. Let's hope that Delphi's new masters (whoever they turn out to be) have that motto carved on the doorframe.