Expecting a Different Result
I have got to stop taking the 7:09 USAirways flight from Dayton to DCA. Third trip in a row that it's running late, on a Friday, ensuring alousy evening for me. Sigh.
I have got to stop taking the 7:09 USAirways flight from Dayton to DCA. Third trip in a row that it's running late, on a Friday, ensuring alousy evening for me. Sigh.
Scott Granneman does a good job of showing how DRM is bad for all and sundry. It hurts the law abiding consumer, causes ongoing irritation with the vendor (key marketing tip: irritating your customers is not a good strategy) - and, ironically, by blocking otherwise legitimate usage, it forces people to break the law in order to get around restrictions. An example - after buying a DVD archive of the "New Yorker" magazine, Scott found out that he could barely use it:
No dice. The issues were available as DjVu files. No problem; there are DjVu readers for Linux, and it's an open format. Yet none of them worked. It turned out that The New Yorker added DRM to their DjVu files, turning an open format into a closed, proprietary, encrypted format, and forcing consumers to install the special viewer software included on the first DVD. Of course, that software only works on Windows or Mac OS X, so Linux users are out of luck (and no, it doesn't work under WINE ... believe me, I tried).
Read past that - he points out that it's not that hard to get around these issues, but - based on the DMCA - you are committing a felony when you try to do that. Another key marketing tip: Making your customers felons is not a winning strategy. Read the whole thing, as they say.
Windows Vista won't suck. No, wait, it will. Well - bear in mind that the negative comments come from a Linux site, so obviously - YMMV. Here's the positive spin:
While the kernel in Vista is still primarily the same one as in Windows 2000 and XP, there have been some significant changes to tighten up security. Fewer parts of the OS as a whole run in Kernel mode - most drivers run in User mode, for instance. Things that run in Kernel mode are prevented from installing without verified security certificates, and even then they require administrator-level user permission. In Vista, it should be much more difficult for unauthorized programs (like Viruses and Trojans) to affect the core of the OS and secretly harm your system.
That's from the upside article. The whole thing is a set of technical points on why Vista will be cool. Admittedly, if security is better, that will be good. However, this doesn't sound encouraging:
However, Vista also requires far more hardware oomph than previous Windows systems. I'd say Intel's recommendations are pretty much a minimum for Vista. I would only add that if you expect to see the fancy desktop, you need to invest in, say, an ATI Radeon XPress 200, an Nvidia nForce4, or a high-end graphics card.
The truth is that very, very few people are going to be upgrading their existing systems to Vista. To make it work well, you're really going to need a new computer. If you didn't buy your PC in 2006, I wouldn't even try to run Vista on it.
That kind of upping of requirements is nothing new, of course. On the other hand, when you combine it with the nasty stuff they are doing with DRM, it starts making me sweat.
Mark Watson explains how "Duck Typing" just makes things easier. Saving a few minutes here, a few minutes there - over time, it adds up
This sounds way too alarmist to me:
"You get these contrails from the jets. The rate at which they're expanding in terms of their fractional cover of the stratosphere is so large that if predictions are right, in 40 years it won't be worth having telescopes on Earth anymore - it's that soon.
"You either give up your cheap trips to Majorca, or you give up astronomy. You can't do both."
Now, I'm hardly an astronomer, but - isn't light pollution as big a problem here? I know that I have a lot more trouble seeing the sky where I live now (suburban Maryland) than where I grew up in New York State.
JSR-292 could make Java more inviting for dynamic languages:
There is growing interest in running a variety of programming languages on the the Java platform, and consequently, on the Java virtual machine (JVM). This interest is increasingly focused on dynamically typed languages, in particular scripting languages.
To make it easier to produce performant, high quality implementations of such languages, we propose to add support at the virtual machine level.
Specifically, we seek to add a new JVM instruction, invokedynamic, designed to support the implementation of dynamically typed object oriented languages. We will also investigate support for hotswapping, the capability to modify the structure of classes at run time.
However, it looks like there's some skepticism within the Java community:
My big question is how this affects Java's security model, particualrly since "The invokedynamic instruction is in many ways similar to the existing invokevirtual instruction. However, it is much less constrained by byte code verification rules. Instead, it relies on dynamic typechecking to ensure the integrity of the virtual machine." This is scheduled for Java 7, Dolphin. Comments are due by March 13. (Seems a bit short for such a major change.)
To really support a language like Smalltalk, you need what they are calling hot swap. Being able to make dynamic calls is a start, but that's it - a start.
Well - it seems that Firefox might be getting itself a new, "less is more" UI. That looks to me like a direct response to IE 7. I've had problems with the beta I grabbed, but I do like the more minimal UI. It stays out of my way, and gives me more screen turf. This is good news, IMHO - it's no longer the case that MS is simply reacting to Firefox.
I'm heading into meetings today, so there won't be a lot of posting until later. The good news is, they should be good meetings.
Yet another example of faith in the spell checker gone wrong: a lawyer looking to use the latin term sua sponte ended up filing papers that referred to sea sponges:
That left the justices reading -- and probably laughing at -- such classic statements as: "An appropriate instruction limiting the judge's criminal liability in such a prosecution must be given sea sponge explaining that certain acts or omissions by themselves are not sufficient to support a conviction."
At least it was a clean case :)
I only got home at 1:30 am last night, and I'm off to corporate tonight - Suzanne and I have a meeting with management. I have a couple of other small meetings through the day, and then - with any luck - I'll be home in time for a round of Caylus.
Doc mentions a rather large problem in the home A/V space while discussing the Apple Hi-Fi stuff for the iPod:
In fact, home stereo choices are getting thinner all the time. There are few "stereo" receivers left, since all the mainstream manufacturers have gone to Surround Sound. Sure, you can run your iPod through one of those, but how many of us know how to do that? See, you plug this little thing into your iPod, and press the AUX button on your receiver. No, sorry. The CD player is plugged into the AUX. The iPod line goes to ... oh, right, VCR/DVD2. Or is it VCR/DVD1? Or is it Tape Monitor? Hang on. Lemme check. You got a flashlight?
Add to this the sad fact that audio/video sales showrooms are a confusing mess. One guy who works for one of the big-box retailers recently told me the return/swap rate on flat screens exceeded 50%, because too many people are baffled beyond endurance by the complications of hooking them up, and the results afterwards.
It is that big a mess. We took snapshots of the back of our TV and taped them to the back, so that we would know what to do if we had to rewire anything. Hooking a new piece of equipment in is always an adventure - heck, I still don't know why my DVD/VCR combo will give me only video on one of the TV outputs - it looks like all the audio cables are going the right way.
This whole space is crying for simplicity, and I think it's the space Apple is gunning for.
Blaine Buxton will be giving his StS 2006 presentation at the Omaha Dynamic Languages group next week, March 7th. The details:
Controlling Pain: Augmenting Unit Testing
Smalltalk has a highly reflective and lively environment that can be used to augment traditional unit testing. It allows us to do things that are only dreamed about in other environments. We can easily question and interrogate code or any aspect of the system. It is not hard to implement tests to ensure code correctness, enforce metrics, and scrutinize resource allocations. You can be creative and take the stance of using tests to stop and minimize the cost of change. There is a large variety of characteristics that can be tested, from run-time correctness to code quality. This presentation will give real world concrete examples in Smalltalk.I will be presenting the talk that I will be presenting at Smalltalk Solutions. I hope to see everyone there for the sneak preview!
Follow the link to Blaine's blog for directions.
Jonathan Schwartz shows how to get a competitor's attention: Talk right past them to their customers:
But then HP decided to end of life PA-RISC - and in so doing, left their user community with a very tough choice: if you want to preserve your investment in HP-UX, you have to rearchitect your entire datacenter to adopt Intel's troubled Itanium project. But if you want to enjoy HP's high volume Proliant line of x86/x64 computers, you can't run HP-UX - unlike Sun, HP elected not to invest in supporting their Unix, HP-UX, on their own x86/x64 servers.
So we'd like to offer HP, and the HP user community, a third option: to converge Solaris 10 with HP-UX, running on HP's very own Proliant product line. We've spoken to HP about it, thought we saw a glimmer of interest, and now we want to get their customers and partners involved.
That sound you heard was HP's CEO removing the buckshot from his posterior lobes.
In trying to fix a bug yesterday, I left one hanging. The "raw" (i.e., no Javascript) comment editor still has a preview function, but using it sends you back to the Javascript page. Ouch - that was a stupid mistake. I'm in the process of deploying the fix for that. While I was at it, I decided to take a look at the way posts get wrapped, because - in some of the styles - text overflows the bounds set for it. I started addressing that, and found a mass of lingering "fix the post" code that I had long since forgotten about. I went ahead and fixed that, which involved tweaks to a bunch of methods. All is well now; I'll be uploading all the adjustments this morning.
I've seen some comments about the Javascript editor eating comments when you use preview. It's a WYSIWYG editor anyway, so I just yanked preview from that page. I also yanked the "Custom Markup" option, since it's not needed with that editor. If you want to use simple text entry, just follow the link at the top through to that option.
I had a good customer meeting this afternoon - Cincom Smalltalk powers the most advanced financial application on Wall Street. So now I've chanced on a free WiFi signal, while I wait for my cappuchino before the NYSTUG meeting. If you're in NYC, I'll be here at 6:30 pm.
Well - Gary Gygax himself is lending support to an effort to put a version of D&D online. That's interesting. Of course, old time hardcore gamers who designed their own magic system will scoff :)
Off to New York in a 1/2 hour - I'll be visiting customers during the day, and then presenting to the NYC STUG this evening. I'll have NC CD's with me, so come and get some!
Larry O'Brien responded to my LINQ post here, saying that he couldn't leave a comment. I suspect that the new JavaScript comment editor is at fault there; I might want to remove that. Anyway, a few points in response to his response:
Anyhow, as is the norm for net communications, I came off as much harsher to Larry than I actually intended to, and for that I'm sorry. I may not always agree with what he writes, but I do read and enjoy it.
Steve Rubel posted about a Fortune article on blogging. Unlike the scare-mongerers at Forbes, these guys seem to get it. To wit - the big points:
Update your blog often, and make liberal use of hyperlinks. The more sites you link to, the more sites will return the favor....
As for what not to do: Don't wait until a crisis hits to set up a corporate blog -- it needs time to build up trust. Speaking of trust, whatever you do, don't let your corporate flacks write your blog. "They will take any life out of your writing," says Scoble.
Whoever does end up writing the blog, don't keep them anonymous or hidden behind some cutesy character. For example, if you blogged for Coca-Cola, don't be "The Coke Guy."
Other tips: Don't shut down existing employee blogs. If they are positive about the company, Rubel suggests turning these evangelists into a voluntary sales force. If they are negative, you might have a larger morale issue that needs to be addressed. And don't use search engine trickery to boost the profile of your blog. People will find out.
Staying current is absolutely critical. If you can't post on something that resembles a regular schedule, then it's probably best not to bother at all.
This is a very cool outlet gadget - it's simple, but boy, would it solve a lot of problems. Have a look - the rotating outlet:

I have lots of devices who's power plugs eclipse the nearest outlet (on powerstrips and on walls). Very cool.
Brad Wilson points to a report that's going to be very, very bad news for Sony: the cost of an HD DVD player is going to be half (or less) the cost of a Blu-Ray device:
Toshiba, the principal backer of the HD DVD format, planted its stake firmly in the low-end of the high-definition hardware market, unveiling a $499.99 HD DVD player at the Consumer Electronics Show here Wednesday.
The new model, dubbed the HD-XA1, is slated to hit retail shelves in the U.S. in March, along with a more fully featured model, the HD-A1, which carries a list price of $799.99.
Toshiba’s aggressive pricing strategy seems designed to put maximum pressure on backers of the rival Blu-ray Disc format, which is expected to carry much higher sticker prices when the first players hit the market sometime this summer.
Among Blu-ray manufacturers, only Pioneer and Panasonic disclosed initial player prices, with consoles weighing in at $1,800 and $1,000, respectively.
Sony has bet big on Blu-Ray as part of the PS3 - and with price differentials like that, this looks like it'll be VHS versus BetaMax all over again.
Last week I was emailing with an architect at one of the major enterprise software companies, a huge company with offices all over the world. She told me that RSS 2.0 has become the framework for all their work now, completely replacing J2EE.
Ok, I don't really understand that, at all. I get using RSS as a default data format to be passed around, and using HTTP instead of SOAP. J2EE is a technology stack though, not a data format. This is the kind of mindless buzzword passing that too many people in the industry do - "replace your (insert technology here) with XML!"
My wife is facing that kind of situation at work, where a bunch of non-technical managers have read one too many magazine, and decided that XML is the "language of the future". No wonder she sometimes grinds her teeth.
Dave Buck demonstrates the power of a Smalltalk development environment with a screencast. Oh, if you're wondering about the red circle that pops up - that's due to a parcel Dave has loaded for Windows CE support. That circle is an artifact from that, not a feature of the standard environment.
Correction from Dave (in comments) on the red circle: the circles are an option in Camtasia video capture software that allow people to see when I click.. It's an artifact of the screencast software, not part of the Smalltalk environment.
Notice how he works with the debugger? That's the power.
I got my hardcopy of SDTimes a few days ago, but have been waiting for it to go online before writing about the special report on the CLR. The article is written by Larry O'Brien, and I think he's a bit too breathless in his praise for it. Some of the inconsistency starts early. He makes a point about how most developers prefer type systems like what C, C++, and Java have - which, based on practice in the industry, is certainly true:
Certainly, the programming community has voted repeatedly to embrace languages that derive from C. This preference is a combination of an appealing syntax (explicit typing is appealing for programming in the large), professionalism by association (real programmers use curly braces) and performance (all popular C-derived languages have rejected “everything is an object” for at least some primitive types).
While I'd call those flaws, most people in the industry don't agree with me. So why do I say that the inconsistency starts early? Well, Larry is writing about LINQ (Language INtegrated Query) like it's the second coming for software developers. Here, let me quote him:
To understand the power of LINQ and how it seems foreshadowed in the evolution of C#, forgive a quick foray into code. Consider Listing 1 (page 29), which gives a hint of a LINQ-like function called “FindAll.” After the initial “using” statements (which make available important classes), we define a new type of function called a Predicate. Predicates are functions that take a value and do some calculation that results in a Boolean evaluation. In C#, function signatures such as this are first-class language features called “delegates.” These have been a feature of C# since the beginning. Our Predicate function, though, works on any type; we don’t need a separate definition for functions that evaluate integers, or strings or customer records. This “generic” functionality was added to C# in the 2.0 version.
If you take a look at FindAll, you see that, for convenience, it’s “static” (using it does not require an instance of type “Program” to have been instantiated) and publicly visible. Ignoring the parameterized type “T”s that sprinkle its signature, it should be clear that FindAll outputs a List after taking as input a List and a Predicate. The passed-in Predicate evaluates each of the values in the passed-in list to build the returned list (the predicate is applied with the call to function(value)). Note how generic it is: It makes no assumptions on the type of values it operates on and no assumptions on the workings of the supplied Predicate.
After telling us how valuable explicit typing is, the first thing you notice is that the example is using generics to avoid explicit typing. Kind of makes you wonder how valuable it is, if the real power is available only if you chuck the concept. Here's the code listing he refers to, and that's where I really wanted to make a point:
using System;
using System.Collections.Generic;
delegate bool Predicate<T>(T value);
class Program
{
static public List<T>FindAll<T>(List<T> inList, Predicate<T>predicate)
{
List<T> retval = new List<T>();
foreach (T value in inList)
{
if (predicate(value))
{
retval.Add(value);
}
}
return retval;
}
static void Main(string[] args)
{
List<int> intList = new List<int>();
for (int i = 0; i < 10; i++)
{
intList.Add(i);
}
for (int modulus = 2; modulus < 5; modulus++)
{
// Notice how a new function is defined here
List<int>evenList = FindAll<int>(intList, delegate(int i)
{
return i % modulus == 0;
});
Console.Write("The even multiples of "
+ modulus + " in range[1..10] are = ");
foreach (int i in evenList)
{
Console.write(i + " ");
}
Console.WriteLine();
}
Console.In.ReadLine();
}
}
What that does is take a list of numbers from 1 to 10, then iterate over them, pulling out first the numbers that are 0 modulo 2, 3, and 4. The above is supposed to be a model of simplicity, showing the power of LINQ in the CLR. Here's Larry again:
By combining delegates, generics and the closurelike "anonymous delegates with outer variable capture" you can create very concise expressions for working with collections. Of course, there is much more to LINQ. A complete SQL-like query ability is much more complex than what is shown here. The structural issues of selection and extension go beyond C# 2.0’s capabilities. And ultimately there’s a qualitative difference between a querying API and query built into the syntax of the language. Nevertheless, there’s a distinct feeling of design decisions made years ago contributing to a capability only now being previewed.
Well. The problem is, this - they had to build it into the CLR with a bunch of syntax. The equivalent Smalltalk?
| list | list := #(1 2 3 4 5 6 7 8 9 10). 2 to: 4 do: [:index | | answers | answers := list select: [:each | (each \\ index) = 0]. Transcript show: 'values equal to 0 modulo ', index printString, ' ', answers printString. Transcript cr]
Gee, that's simpler, isn't it? And unlike the CLR, Smalltalk didn't need to bake that query into the syntax - it's just a library message that any collection understands. Meaning, it's generic without all that extraneous syntax. Microsoft, like Sun, is grasping weakly at the power that Smalltalk already has via added complexity. Apparently, the "value" of explicit typing is such that you need to saddle developers with a pile of syntax in order to deliver "power".
I don't really need to go to the trouble of defining the generic function up front, because #select: is already in the library. But wait - there's more! Say I wanted to add a new query "function" to all collections? Easy - I find class Collection in the system, and I add the method. Bam - there it is. I can make sure to version it off in my own package so that only people who need it will have it loaded as well.
The thing I find interesting is the Java/CLR approach to power - it always involves adding a pile of new syntax to the language - which is why the books defining those systems keep getting thicker. You need a scorecard just to keep up with the syntax.
At the end of an associated column on Iron Python, column, Larry brings up something I addressed the other day:
#Smalltalk (pronounced Sharp Smalltalk, and available from www.refactory.com) seems to be close to a full implementation of the Smalltalk language but does not have the workspace/browser environment that many consider the heart of Smalltalk’s power. Similarly, while there are a few Lisp-like languages for .NET, there’s not a CLOS environment for the CLI. Whether this is because the CLI erects technical roadblocks of progress or because there’s insufficient motivation for commercial or open-source development of such environments, it’s regrettable and only serves to further the dominance of C# on the platform.
As I stated the other day, we actually looked at the CLR as a host for Smalltalk. It simply wasn't suitable, given the level of investment we would have had to make.
This morning I stumbled on this post, which gives some advice on optimizing your blog for search engines. I have a mostly negative attitude toward the entire SEO field, and particularly with SEO as it relates to blogs. You want your blog to be noticed by the engines? Write regularly about topics that you are interested in and know something about. Over time, you'll build an audience, which will generate back links - and page rank. To be blunt, SEO tricks are an attempt to get out of doing the hard work of writing.
Anyway, here's the trick being advocated today:
Why would you ever want to make a post sticky? Because it’s an easy way to improve the keyword prominence on a category page or tag page. If you’re not familiar with the concept of keyword prominence, it’s simply this: the higher up on the page your targeted keyword is, the better you’ll rank. So, having keyword-rich intro copy that consistently appears at the top of a category page or a tag page will give you good keyword prominence and help you maintain a stable keyword theme for the page even when old posts fall off the page and new posts appear.
Well, that only works if people visit that category page and link to it. Now, I can see some value in making a post sticky - I've never done it (heck, I haven't added support in my blog server, although it would be pretty easy to do so). The problem, as I see it, is that if you are trying to attract people (and engines) to a specific category, then that's something you write about regularly. Do you really want the new content to be stuffed beneath an older post? Most people make decisions about whether to read a page in seconds (some people say less). If I spot "old news" at the top of a page, I don't bother scrolling down - my assumption is that everything under the old post is even older.
I rather think that this strategy will end up having as many negatives as positives, because it works against people's expectations about content presentation on a blog.
Joi Ito points out the power of tribalism in what seems (from the outside) as a very monolitic country: Japan. Kind of makes me wonder how many old tribal feuds still simmer in other "monolithic" nations - and I'm not considering places like the middle east or the Balkans, where those cracks are all too visible.
No, this has nothing to do with politics or current events :) I found this story, about an "open source" crypytanalysis effort interesting. The group cracked a previously un-cracked Enigma message (German Naval) from WWII - they have two more they plan to work on. Pretty cool stuff
I'll be in New York City on March 1st, addressing the user group. I'll be in customer meetings during the day, but expect to get to the meeting location around 6:30 pm.
I'll have plenty of Cincom Smalltalk Non-Commercial CD's with me
I'll give MS some props for pointing to this parody video - "What if Microsoft designed the iPod box?"
The proliferation of language runtimes (virtual machines) both fascinates and frustrates me. Here on my Windows machine I use the .NET Common Language Runtime, the Java VM, the Flash player, and one VM per dynamic language (e.g., Python, JavaScript). Over on my Mac, subtract .NET but don't (yet) add Mono. On servers, add the PHP and Ruby VMs.
When people "port" applications and frameworks from one language to another, what they're really doing, in many cases, is transferring capability from one VM to another. Case in point: TrimPath Junction, a "clone or port of the terrific Ruby on Rails web MVC framework into JavaScript." Language preference wasn't the reason to emulate Rails in JavaScript. Rather, the motivation was to bring Rails-like capability to the only VM available in the browser, and thus to enable single-page applications.
That frustration is why I like to say that design is language specific - unless you want to do a ton of work to take a language capability and port it. Multi-language VM's are a pretty hard thing, too - the VM's that exist were very much designed with their main language in mind - Java on the JVM, C# on the CLR. Sure, there's a port of Python to both - and in the case of the CLR, it sounds like the author is, for all intents and purposes, creating a new VM on top of the CLR - i.e., treating it as another hardware platform.
We looked seriously at using the CLR as a place to run Cincom Smalltalk, but found that it was utterly unsuitable - we would have had to treat the CLR as a new platform, and write a new VM on top of it. The CLR simply doesn't have suitable support for a language like Smalltalk. Don't even ask about the JVM - it's been frozen for years, and any Smalltalk running on it is going to be slow. Really slow.
Neither Microsoft nor Sun are acting truly motivated to support dynamic languages - at least, not if you look at what they actually do.
Ars Technica has a post up on the challenges faced by PS3 developers due to the use of the new Cell processor from IBM. It sounds to me like they may well have jumped "a bridge too far" for a device they want to ship this year. To develop against the Cell without tools, the author says:
What IBM has in mind is what I would call a tiered approach to Cell. At Tier I, there's the "expert programmer" (IBM really means "expert programming team") who codes to the bare metal, manages memory alignment and traffic flow issues like NYC's finest, and just generally makes all the parts of the Cell scream in perfect harmony. This guy, if he exists, is going to be worth his weight in gold. No, scratch that. He'll be worth Marlon Brando's weight in diamond-studded platinum.
As to the "sweet spot - i.e., a compiler that mostly manages the vectorizing for you:
Finally, on Tier IV is the programmer who just wants to port his single-threaded x86 program to Cell in as painless a manner as possible. This person doesn't even care to know anything about "heterogeneous multiprocessing" or any of that fancy stuff. He just wants to see "Hello World" greet him on the screen. Ok, just kidding. IBM claims the following for this highest level of Octopiler hand-holding:
The compiler provides user-guided parallelization and compiler management of the underlying memories for code and data. When the user directives are applied in a thoughtful manner by a competent user, the compiler provides significant ease of use without significantly compromising performance.Getting Tier IV to work where the money is at. It's also going to be quite painful for IBM to achieve their stated goal of "not significantly compromising performance." I think they, or someone else, will get there eventually. Meanwhile, the PS3 is still due out in 2006.
Sounds to me like they really, really have their work cut out for them. Keep in mind, if development of games for this system is hard, that's only going to drive up costs more - and on the end (the buying of games) where - based on the unit cost of the PS3 - they are going to need to sell a bunch of games to each PS3 buyer just to break even. Based on some back of the envelope calculations, a friend of mine was setting that number at 16 games per buyer. That's steep already.
Via Scoble, I ran across this Seattle PI story about the MS Origami - a device that's still under development, so all the rumors swirling around should be taken with a rather large grain of salt.
Having said that, I'll toss my 2c in anyway. Look at the penetration of the Sony PSP and of the Nintendo DS. The PSP is doing ok, but the DS is a huge hit. Why is that? I think it's because the DS isn't trying to be too many things at once. It's a portable game platform first, with any and all other functions being secondary. That doesn't split the focus of the device, which is something that Sony has had a few issues with. That's the kind of use model confusion that could crop up based on this:
The video is still worth seeing. It validates the notion that the Origami project is headed in the direction of a miniature "lifestyle" computer, not only for playing music but also for other functions. Internet access, messaging, photo editing, and video gaming are among the uses depicted in the video.
I guess we'll find out.
Well, here's a fascinating rumor: Google buying Sun. I'm unconvinced, but the site does lay out some interesting facts:
- Google stock has been experiencing a number of non-disclosed acquisitions.
- Sun has had investors exiting to the tune of eight figures on a market cap of ten.
- Microsoft meanwhile, sits more comfortable than both at a price/earnings way below the industry average and with a product - Windows Vista - which everyone is talking about coming out later this year.
These kinds of anomalies are typical in the behaviour of companies where acquisitions have been strategically arranged and are still in the 'preparation' phase. Google has to do as much of a job in showing benefits of acquiring Sun as it does in proving its own capability to turn things around there - and what better way to do it than show the growth potential of the company it is preparing to acquire?
Well, I'll believe two things when I see them: Vista shipping this year, and Sun getting bought by Google. I fail to see the point, unless Google is looking to move back to the 19th/early 20th century business strategy of vertical integration (i.e., secure their own high end hardware manufacturer. I don't see the Sun software suite being of much value to Google - heck, I don't think it's helping Sun much at this point.
Interesting conjecture though.
Well, the new HD isn't quite what I thought it was. It's not a replacement HD - it's a small external (USB) HD. That's ok - I can always use more space. The trouble started when I hooked it up to Windows. It was recognized, but it wouldn't mount. That was a bit confusing. I slapped it across the room to the Mac, and discovered why - it had no file system on it. The Mac was able to format it as a Windows drive though, so I can now use it for either system. It's small enough to pack in my bag, so I could presumably install Linux on it, set my notebook to be bootable from USB, and have a Linux system at Smalltalk Solutions in April. I'll have to see about doing that - for today, I've had enough system maintenance :)
I'll be going offline for a few hours - I need to defrag my Windows drive, and Windows really, really sucks at that. Then I'll be cloning the HD so that I can replace this overly small one with a reasonably sized (60 GB) one that corporate IT sent me. I'm sure BottomFeeder will load up with tons of stuff when I turn it back on :)
Ismaeel Nakhuda has an interesting post, apparently taken from newspapers in the Lancashire (England) area:
A Preston museum is holding a unique exhibition of rare photographs and items to mark the 150th anniversary of the end of the Crimean War.
Now that's something I'd love to see. I wish they had a web viewing available - ad sponsored, paywall, whatever - sounds very interesting.
So I just received a notice from the AAA that my membership was up for renewal, and - since I had signed up for auto-renewal, they were simply going to charge my credit card on file. All fine and good, until I read further:
Your AAA membership is due for renewal on 5/1/2006, and our records indicate that you are enrolled in our Automatic Renewal program. Previously you requested that we charge your annual membership dues to your (Credit Card Name) credit card, which ends in the following digits - #### and expires 12/31/2005. Please be advised that your renewal dues will be charged to your credit card on the first business day of the month prior to your membership renewal date.
I suppose having an auto-check on the vailidity of the date would just be asking for too much...
With an eye toward gathering some more facts on how relevant this is, I decided to take another walk through my feeds. I posted some data on enclosure usage the other day; today, I figured I'd take a look at the distribution of formats being used in my collection of feeds.
So, I subscribe to 316 feeds. I ran some simple workspace code to get an idea of what formats are in use:
| Format | Count for that format |
| RSS 2.0 | 215 |
| RDF 1.0 | 41 |
| RSS 0.91 | 23 |
| Atom 0.3 | 20 |
| RSS 0.92 | 8 |
| Atom 1.0 | 4 |
| RSS 0.93 | 4 |
I'm not surprised that RSS 2.0 is the most prevalent, but I take that data point as an argument in favor of clarifying the RSS 2.0 spec in the areas that are ambiguous - which is opposite the tack that Dave Winer takes. Right now, Atom answers questions about things like number of enclosures and format of the content (description) field conclusively. Which means that tool developers have a default answer that is correct for that format - they don't have to make a (personal) judgement call (which, as Rogers Cadenhead pointed out on the mailing list, varies widely across tools).
Now, I suppose that I could just ignore this, on the following grounds:
Sadly, the same thing can't solve the other problems - questions about what is or is not valid for description or title elements. Perhaps developers could simply take the Atom answer for titles, but for content, Atom relies on a description in the field. That means that developers can't just apply the Atom answer and have done with it. What it does mean is that every developer has to come up with a strategy, and (as we've seen to date with enclosures), those answers will differ. I suppose that leaves the end user in the driver's seat as far as deciding which answer is best, but it's not the best way to come up with an answer. Having the spec clarify what is and is not allowed would be a whole lot simpler.
I'm hardly the target demographic for MySpace.com, but Jupiter Research is raising questions about it that have crossed my mind as well - how much of the supposedly huge community there is real?
"Certainly there are a large amount of people spending a large amount of time on this site," said Nate Elliot, an analyst for Jupiter Research. "When you look at the huge numbers they throw out there -- 50 [million], 60 million registered users -- those are a mirage."
Elliot admits that the site generates a lot of activity, and that it may indeed have tens of millions of registered users, but those numbers can be deceptive and only tell part of the story.
"They're promoting the number that is most advantageous for them to promote, but the simple fact is that only a fraction of the registered users ever go back," said Elliot. "And only a fraction of them use the site on any kind of regular basis, and then another fraction of them are responsible for the traffic."
It could be a lot like Blogger - filled to the brim with splogs, with the serious users migrating off the site once they realize that they are serious users. Free services tend to get filled with opportunistic spammers - email is simply the best example.
BottomFeeder downloads dipped a bit, down to 192 per day last week. Here's the detail:
| Platform | BottomFeeder Downloads |
| Windows | 463 |
| Sources | 246 |
| Update | 176 |
| Linux x86 | 141 |
| Mac X | 100 |
| CE ARM | 50 |
| Mac 8/9 | 49 |
| HPUX | 35 |
| Windows98/ME | 34 |
| Solaris | 21 |
| AIX | 9 |
| Linux Sparc | 8 |
| CE x86 | 5 |
| Source Script | 3 |
| SGI | 2 |
| Linux PPC | 2 |
Better luck next week, I guess :) On to the HTML page accesses - traffic there was up last week, and, as I noted here, I discovered that I've attracted my very own spammer. I can feel the love :)
| Tool | Percentage of Accesses |
| Mozilla | 47.3% |
| Internet Explorer | 26.4% |
| MSN Bot | 6.5% |
| Everest-Vulcan | 5.9% |
| MSRBOT | 5.1% |
| zibber | 3.5% |
| Megite | 2.5% |
| Gigabot | 2.4% |
| Other | 0.4% |
More bots this week - that's interesting. On to the RSS results:
| Tool | Percentage of Accesses |
| Mozilla | 23.7% |
| BottomFeeder | 17.6% |
| Net News Wire | 9.5% |
| BlogLines | 8.7% |
| Google Feed Fetcher | 4.7% |
| Safari RSS | 4.4% |
| Other | 4.3% |
| Everest-Vulcan | 2.9% |
| Internet Explorer | 2.5% |
| SharpReader | 2.2% |
| RSS Bandit | 2.1% |
| MSN Bot | 1.9% |
| Planet Smalltalk | 1.6% |
| BlogSearch | 1.6% |
| Feed Reader | 1.5% |
| Magpie | 1.5% |
| NewsOutlook | 1.5% |
| NewsGator | 1.4% |
| Liferea | 1.2% |
| JetBrains | 1.1% |
| Attensa Online | 1.1% |
| Java | 1% |
| News Fire | 1% |
| Feed Demon | 1% |
Tool diversity here isn't getting any less, either - and it looks like my weekly RSS accesses are up - both raw and unique IP addresses.
If Dave isn't involved, it's bad
This post tells you everything you need to know, if you've ever wondered why the Atom group went off and created a new spec. I didn't get it back then; I most certainly do now.
Sometime this weekend is upgrade time for my notebook. It's plenty fast for my needs, but the HD space is cramped (just under 20 GB). So I asked for help, and our IT department sent me a 60 GB replacement drives. It's one of those USB cloning setups, so I need to do a backup and defrag before I get to it - I think I'll have a look at that tomorrow. At least I won't be short of space all the time for a bit.
Oh boy. My wife volunteered our house for a Girl Scout cooking demonstration - I'll have a house full of 7th grade girlscouts trying to cook. Oof.
More Seaside news, from the ESUG list:
netstyle.ch and ESUG are pleased to finally announce the new Seaside hosting service. Seaside-Hosting is a free hosting service for non-commercial Seaside applications. This service provides a simple to use web interface with FTP access to set up and run your Seaside applications. It allows you to put your own application online within minutes. The service is a Seaside application and is itself running on Seaside-Hosting too.
Seaside-Hosting currently offers 128 MB of file-space for saving the Squeak web-application image and static files, e.g., pictures or style sheets which you want to use as part of your application.
For general discussion we propose to use the Seaside mailing list. For specific questions or problems please contact us directly at seasidehosting@netstyle.ch.
One of the things that has set of a furious round of politics on the RSS Advisory list is the <enclosure> element - does it allow multiple enclosures in a single item or not? Here's the text from the spec:
<enclosure> is an optional sub-element of
- .
It has three required attributes. url says where the enclosure is located, length says how big it is in bytes, and type says what its type is, a standard MIME type.
The url must be an http url.
<enclosure url="http://www.scripting.com/mp3s/weatherReportSuite.mp3" length="12216320" type="audio/mpeg" />
That doesn't say anything about it, which is why there's discussion. I thought it might be useful to have a look at actual practice - how many multiple enclosures do I see in the wild? Well, this is admittedly anecdotal - I'm looking through my own subscription list, and I'm not big into podcasts - so out of my 316 feeds, it's not a huge selection. Still, let's have a look. First, all the items that have at least one enclosure:
withEnclosures := OrderedCollection new. RSSFeedManager default getAllMyFeeds do: [:each | | with | with := each allItems select: [:eachItem | eachItem enclosure notNil and: [eachItem enclosure size >= 1]]. with notEmpty ifTrue: [withEnclosures add: (each ->with)]]. withEnclosures inject: 0 into: [:subTotal :next | subTotal + next value size]
That code, when inspecting the results, gave me this:

Ok, so there are 18 feeds, out of 316 feeds total (with a total of 17,968 items) that have even one enclosure. In that group, there are 327 items with at least one enclosure. That's more than I thought, actually. How many of those 327 items have more than one?
That little snippet of HTML was produced by this code:
stream := WriteStream on: (String new: 100). multiples := OrderedCollection new. withEnclosures do: [:each | | feed bigger | feed := each key. items := each value. bigger := items select: [:eachItem | eachItem enclosure size > 1]. bigger notEmpty ifTrue: [multiples add: (feed -> bigger)]]. stream nextPutAll: '<ul>'; cr. multiples do: [:each | stream nextPutAll: '<li>Feed: ', each key title, '</li>'. stream cr. stream nextPutAll: '<ul>'; cr. each value do: [:eachItem | stream nextPutAll: '<li>'. stream tab. stream nextPutAll: eachItem title. stream tab. stream nextPutAll: eachItem enclosure size printString. stream nextPutAll: '</li>'; cr.]. stream nextPutAll: '</ul>'; cr]. stream nextPutAll: '</ul>'. ^stream contents
The reason it looks like a lot of code is the production of the HTML mixed in there. All I'm really doing is looping over the data I produced in the last go-round, and getting numbers out of it. As it happens, there are 4 items in 3 feeds (out of 327 items in 18 feeds with enclosures) that have more than one enclosure - with a total of 11 enclosures across those 4 items.
So what does that show? Possibly that using multiple enclosures just isn't that common. On the other hand, the three feeds that did use them are quite popular.
So I almost forgot to mention the cool part. All that code was executed in a workspace in the runtime for BottomFeeder - not in the development environment. The tool is written in Smalltalk, and I can simply ask the domain objects questions at runtime. Pretty cool, IMHO.
This is from a political site, but it's too funny to pass up:
Me: "Why would the on-off switch on a quantum computer have two positions? Shouldn't it just have one, labeled INDETERMINATE?"
He: "Only when you're not looking at it."
Phil Windley also took notes on this evening lecture. I've not been a huge fan of this initiative, and these two paragraphs explain why:
Half the price of a typical laptop is the marketing and distribution. Get a non-profit and drop that. Half of the remaining cost is Microsoft, or more generally commercial software vendors. Free and open source software more than adequately covers the computing needs of most people, particularly children. The fact that there are $122 DVD players says you can build a $100 laptop. The cheapest hard drives are too expensive; so use flash memory.
One big problem is the grey market. They’ll be diverted from children unless you do something to protect the laptop. A few ideas: an RFID card keyed to the specific owner helps. The device is networked, so the owner of the device has to log in every few days to get a token to keep it working. The color (green) helps. The child’s picture could be embedded in the plastic case.
The cost of that DVD player includes sales and marketing as well. What's driven the cost down is the free market at work - commoditization. Using Flash memory is fine, so long as you don't want to store a lot of stuff - and the open source alternatives to word processing packages aren't going to save on space (or performance. Pretty much the same thing goes for other open source efforts as well - in general, size isn't something that the developers have been trying to optimize for.
I like that he's recognized the problem of the grey market - but I think his proposed solutions will drive up cost without actually accomplishing much. If you are trying to introduce an item of value into an area that, in general, cannot afford the extant commercial products, then a lot of your target audience will try to sell the item. It's really that simple.
Having said all that, I like this summation:
The important question surrounding the $100 laptop is “will it be more than a mere technological artifact?” The answer depends on whether the content, and especially the mentoring, can be brought along with it to have real impact.
If they pick their target markets correctly, and are able to provide the right content, it could work. On the other hand, if that market exists, I expect that one or more commercial vendors will end up serving it.
Phil Windley took notes on Alan Kay's talk in Utah. His first talk is one I've seen (although it's evolved, with new events as examples, and the work in Croquet that he speaks to). Here's perhaps the best quote:
The good guys (late binders) lost in the late 70’s. The early binders won.
Good ideas don’t often scale.
Most people who graduate with CS degrees don’t understand the significance of Lisp. Lisp is the most important idea in computer science. Alan’s breakthrough in object oriented programming, wasn’t objects, it was the realizing the the Lisp metasystem was what we needed.