December 8, 2007
Dan Weinreb's CL implementation survey
Wow! I see that Dan Weinreb has posted a rather impressive Common Lisp implementation survey. It is quite interesting to read through the detailed description of the many choices available (well, slightly fewer if you are on Win32).
The other thing that is quite telling is how small all the commercial vendors are -- sure, this is far from a dead language but it is also not where you become rich being a language vendor... OK, in all fairness, I don't know that anybody has gotten rich as a language vendor in the last decade...
Update: Looking through the del.icio.us history for the survey URL and looking at some of the other users' histories did dig up somewhat of an equivalent link for Scheme: Brian Denheyer's "The Schemes I have seen" Scheme evaluation page.
Posted by cwirving at 3:34 PM
December 7, 2007
More generation matters: was it the Basic and Assember generation?
To add to my AI backlash theory, I think that another factor was that my contemporaries -- at least the hacker types -- were increasingly coming to university with plenty of exposure to the early consumer personal computers. There we were having spent years hacking away at our machines in some combination of Basic and assembler. The initial computer experience wasn't meeting university big iron and it wasn't the sophisticated PCs that came later. We were low-level programming junkies. We'd been poking around the bare metal of these interesting primitive machines and had established frame of reference that may not have been shared with students much earlier or later.
Although European-centric, I don't think that my exposure to computers was that unusual for the era: I started out with a Sinclair ZX80, moved on to a ZX81, sidetracked slightly with a Belgian-built DAI machine and finally got a Sinclair QL before entering the world of IBM PC clones. Oh, yeah, and there was an Epson HX-20 in there somewhere, too. Those were all machines programmed in Basic where you had to jump down into native assembler to really get the most out of them. The DAI was especially fertile for that because its video hardware was quite awesomely flexible for a machine of that era.
Even later, I still couldn't keep my hands off the bare metal -- I entertained myself on my freshman university summer designing and wire-wrapping a Motorola 68010-based computer that I never really found much time to actually program for...
So, anyway, going to university to learn computer science and being dumped in front of an IBM 3270 (we were lucky enough to avoid punch cards) was maybe not as impressive in comparison to the hacking we'd done up to then. Even the following succession of later time-shared machines (notably a PDP-10) we had access to didn't hold quite the wonder they should have. I think that we continued to do all our exploring at home with our personal machines -- and, thus, with the tools available on them. Had we come earlier, we would have been forced to work on university machines and, had we come in later years, the tools available on personal computers would have been higher-level[*].
So, there, maybe it was all those years of hacking in Basic and assembler that made us such low-level programmers? I certainly have many fond memories of that era, including disassembling my PC clone's Phoenix BIOS to patch an adapter card BIOS detection bug that prevented me from using something or other in the machine (an Adaptec SCSI card, I think). Writing EPROMs on some crappy ISA burner card that I'd rewritten the software for to allow me to write the larger chips the motherboard needed... Yeah, those were the days...
[*]: before you ask about how we'd have afforded any of these better tools, remember that this was the 80's in Europe: software piracy was rampant and I vividly remember friends driving around with the trunk of their car full of Amiga software, late night debugging sessions to remove copy-protection code from games and so forth. At that time, it really didn't matter how much software cost as long as somebody could lay their hands on the diskettes somewhere...
Posted by cwirving at 8:07 PM
Welcome to the AI Backlash generation
Everybody talks in terms of generations. Typically it is in terms of popular culture, pitting Baby Boomers against Generation X and so forth regarding their tastes in music, film, etc. Well, I think we can say the same with programmers: as I get older, I think that there are trends that appear pretty widely in the programming population. Some are the result of major changes in how computer science is taught (think Joel Spolski's rant on JavaSchools) while some are more environmental. At one level, the appearance of the mass-market personal computer (I'm not sure whether to include the early -- hardcore -- kits) transformed how we approach computers but I think that there were some of these environmental changes that transformed how we program...
One blog post by Dan Weinreb (Why did Symbolics Fail?) struck a chord in that respect: I have wondered why I -- and most of my contemporaries -- spurned the rich dynamic languages and environments of the eighties and spent the last twenty years hacking away in some child language of Algol (whether C-like or Pascal-like)? We're old enough that we were exposed to Lisp, Smalltalk, Prolog (OK, that's a stretch there) and so forth. We don't have JavaSchools to blame, yet there seems to be far fewer visible dynamic language practitioners in our generation than before or after (the modern excitement with Python, Ruby and their ilk is quite the reversal -- although at the cost of reinventing much of what the original language crowd had discovered over the last half century).
At the risk of going out on a limb, I'm tempted to say that we are the children of the AI Backlash: being an undergraduate computer science student just as the AI phenomenon was waning did probably help condemn everything associated with Artificial Intelligence to the jail of impractical ivory tower ideas. Even in their waning days, the AI researchers at the university I attended still were the chosen few, the only ones with access to the precious Symbolics worksations while everybody else got to make do with, well, environments that did nothing to make Lisp look like a practical language. Sure, I remember having a lot of fun writing Lisp programs on my PC, but the interpreter was limited and slow, had no interesting libraries and certainly no visual environment. I remember shelving that exercise as futile for any practical software I would want to write, switching instead to Turbo Pascal and Turbo C at the time. By the time the AI backlash kicked in, there wasn't many tears shed for the ivory tower residents and their elitist endeavors...
Obviously, this isn't the whole story -- the early exposure to primitive personal computers is also a huge factor, I think (more on that later) -- but I can't help that there was this window of time when sophisticated dynamic languages and environments were uniquely identified with the AI elite and the waning of research made them nearly invisible to those that came later. We weren't ignorant as much as vindictive, maybe?
Posted by cwirving at 7:20 PM
December 5, 2007
The Operator Firefox extension or how microformats finally become user-visible
Following a plug in the New York Times Open blog, I installed the Operator Firefox extension to parse microformats out of web pages. Although there are very comparatively few pages out there that are microformat-enabled (the various NY Times blogs appear to be), the automatic microformat extraction is quite useful -- from calendar integration to address lookup or del.icio.us tag searching...
Now all I need to do is fix my blog templates to expose microformats for tags, etc. Hopefully, I'll get to that when I relocate it to a new server in the near future.
Posted by cwirving at 2:12 PM
November 21, 2007
More OOPSLA 2007 linkage
I just noticed that Dan Weinreb (formerly of Symbolics, ObjectStore and now ITA Software) has a report on OOPSLA 2007 that gives a different perspective on the conference.
Posted by cwirving at 3:07 PM
November 20, 2007
About that e-book thing...
So, Paula and I have been going back & forth most of the day about the Kindle... Sure, we both want one -- or, rather, we want the e-book experience it promises. However, apart from my e-book pricing concerns I expressed in the previous post, the other thing that we need to consider is how e-books actually look and how they read.
From what I can tell, e-book readers are basically specialized HTML browsers. Not only that, the HTML capabilities they implement are more akin to NCSA Mosaic than Mozilla Firefox: they have styles and formatting, but no tables (OK, I lied about the NCSA Mosaic thing: they actually have stylesheets -- something that Mosaic definitely didn't). So, PDF conversion is utterly futile since Acrobat does very little to preserve outlining and style information in PDF files -- most, if not all, non-trivial PDF files look like garbage when converted to e-book format (just look at the HTML version of searched PDFs in Google for an idea of what you get). Just like the difference between printing and generating a website, e-books differ radically from the printed page. I'm not sure that most people understand that small detail and, until people get to grope working e-book readers, the implications are not going to be clear at all.
At this point, I would be very curious to see how good a job e-books can do to for more illustration or layout-intensive books than novels. Even code-related technical books would be a good start -- a quick experiment with a chapter from Peter Seibel's Practical Common Lisp and MobiPocket's e-book creation software shows that it is borderline usable. I think that with some time invested in stylesheet tweaks, it could actually be pretty decent... Of course, the chapter I chose had no graphical illustrations or tables -- which is not representative of most textbooks.
Of course, a lot of the content available today is not available in this HTML form. As an example in the same domain, take Paul Graham's On Lisp -- which is only available in rendered form (presumably the TEX source exists somewhere, but not online). Given that kind of source material, it appears impossible to get usable results with the current generation of e-book formats and small screens: I could imagine pre-rendering the PDF to a bitmap for a screen that could cover the original page at high resolution (e-paper doesn't scroll nicely) but that is not ideal for searching and other interesting manipulation. So, yeah, we have a ways to go before e-book readers are general-purpose document readers.
That isn't to say that I root for paper: I would love to be rid of the piles and piles of dead trees that end up in my house and office but we've got some work to do in order to go electronic. Never mind the fact that the Word documents I print out to read offline are generally authored by people with no clue about outlining or style usage -- so they are not incredibly good candidates for good e-book source material, either.
Posted by cwirving at 11:34 PM
November 19, 2007
Yeah, Kindle... Whatever...
Everybody's talking about Amazon's new Kindle e-book reader. The world and their dog have something to say -- usually about the device itself (OK, it is kinda homely but even just a nicer paint job could do wonders to change that), or how it is going to get into a train wreck with Apple... But what bothers me is the e-book pricing model itself: although Amazon is apparently burning through a chunk of cash to make sure that bestsellers are priced sensibly ($10), as soon as you look at less mainstream titles (e.g., Fred Brooks' The Mythical Man-Month), we're back within a couple of dollars from the physical book price. That doesn't make sense!
I know, Amazon is working very hard to drag the publishing industry -- kicking and screaming -- into the twenty-first century, but explain this to me: why, when a physical book needs to be typeset, printed in a sweatshop somewhere in China, stuffed in a container, shipped around the globe, put on a truck, shipped to a warehouse for the publisher, shipped to a warehouse for the distributor, shipped to the consumer... does the publisher expect me to pay the same amount for an e-book that they just needed to upload to Amazon's server? The author isn't getting a magical big cut of the pie. The publisher hasn't put any effort into it. 'Splain me that?!
For all I think Amazon has made the e-book purchasing experience wonderfully streamlined, each e-book still comes with a virtual kick in the nuts: you pay nearly the same amount for a book that you can't lend, can't re-sell and, until the current generation of e-ink readers, couldn't read in most places a "real" book can! Yeah, I know, right about now is when somebody usually chimes in with the duo of "but you get more -- is is digital!" and "but, it is because of the rampant piracy we must do this!" Riiight... Just like twenty years ago, none of my classmates in college had figured out how to cut off the spine of a textbook and drop it into a photocopier? Sorry to break the illusion of physical book copyright wonderland, but my aforementioned classmates were pretty proficient at the photocopier thing and I'm sure that today's piracy groupies have heard of duplex scanners.
So, selling books is just like any other intellectual property: you pick a price that maximizes returns -- high enough that you make a profit, low enough that the majority of potential customers would prefer to do the right thing -- and you make buying the book easier than cheating. The Kindle and Amazon's store definitely do the latter. Now, if the publishers could do the former, somebody could get around to making some money... Especially when the incremental cost to the publisher of each e-book sold is practically zero, the math should be simple.
Update: Michael Mace has some pretty interesting comments on the royalty structure for self-publishing on Amazon's Digital Text Platform.
Posted by cwirving at 10:02 PM
November 16, 2007
Rethinking Software
While this "Rethinking Software" thread has been going on for a while in a lot of minds, I thought that there was an intriguing juxtaposition of posts in the newsfeeds I read today.
First, we have Bruce Schneier pointing to D. J. Bernstein's paper on security in QMail -- which covers more ground than the Schneier's excerpt hints at. There are interesting parallels with Mark S.Miller's object-capability talk at OOPSLA and, ultimately talks to the way we need to structure software systems to be robust and secure. Lots of other detours that are worth thinking about as well. It is definitely not a "least privilege sux" one-track paper...
Second, we have Joe Hummel reporting on a talk by Michael Wolfe on some of the way software is going to have to change to exploit modern computer architectures. No, it isn't the oft-quoted "need more parallelism" mantra but a rather more subtle one: yes, modern processors are much more parallel but they also are very bottlenecked on data: while we can write software that remains blissfully ignorant of the underlying hardware traits, the reality is that to go fast on a modern system, you have to be more aware of the many levels of hardware performance traits than ever...
Finally, we have Miguel de Icaza pointing out that Luke Hoban, whose prowess is demonstrated by his implementation of a ray tracer as a 60-line LINQ expression, is moving from the C# team to the nascent F# team in Redmond. I can't help but notice that Microsoft is making quite a decisive push to get new, different, programming paradigms into the hands of the programming masses (or, at least, everybody with an MSDN subscription).
While I think that we -- as a profession -- are still incredibly myopic when it comes to the things our predecessors learned, I am glad to see that there is real mainstream interest in moving the state of the art forward beyond simply "same crap, same idiot programmers, more threads" that is the rallying cry of too many people these days. Watching the goings on in Tim Bray's thread on his Wide Finder project is pretty discouraging. If anything, it does demonstrate the price we pay for ignoring either correct abstractions or actual physical hardware performance (or both) in current programming practices.
Posted by cwirving at 12:23 PM
November 1, 2007
OOPSLA 2007: One more thing... Podcasts
One very useful resource I should have mentioned earlier -- which may make more sense some of my session descriptions is the set of OOPSLA 2007 podcasts available on the conference website at:
http://www.oopsla.org/oopsla2007/index.php?page=podcasts/
Posted by cwirving at 11:13 AM
October 31, 2007
OOPSLA 2007 Day 4: John McCarthy
John McCarthy: Elephant 2000: A Programming Language Based on Speech Acts
It was basically this material plus an early history of Lisp that I have not found verbatim on the Stanford site, but that certainly lives somewhere in the documents of historical interest McCarthy has posted.
Nevertheless, seeing a living legend in person and hearing him talk about the early years of computer science as we know it was quite a treat.
From the conference website: Link to podcast MP3 / All OOPSLA 2007 podcasts
Posted by cwirving at 10:25 PM
OOPSLA 2007 Day 4: David Parnas
David Lorge Parnas: Precise Software Documentation: Making Object-Orientation Work Better
I'm not sure how I want to describe the documentation technique advocated by David Parnas. I suppose that the best online reference is in his slide sets (see the link below -- I think "Software Inspections We Can Trust" is probably quite faithful to the documentation-assisted inspections thread in this talk) but it is really hard to give a good feel for the table-based formal documentation scheme. On one hand, Parnas takes aim at Z and other formal methods (mainly pointing out their unreadability) while, on the other, he makes a big deal of how formal his approach is.
Whether or not I understand the finer points of his scheme, I think that the idea of tables being a low-cost way of achieving some level of formalism and partitioning of the system's behavior is well-taken. I especially liked the notion of using color as an additional hint to the reader. Where I have trouble is in the mapping of the requirements as they come in the real world for desktop business applications to the formalisms suitable for tabular representation. Hmm...
The description of this documentation technique goes hand-in-hand with how to perform good software inspections ad Parnas implies that the former is a prerequisite to the latter. Although the slides at OOPSLA were pretty light on how that would work, his slides online are quite clear, using the same nuclear power station example.
Anyway, a couple of points cited about the enduring need for quality documentation: Parnas cited statements to that effect in 1969, when he worked for Philips in the Netherlands and Microsoft's current (expensive) interoperability woes with the European Union.
See: David Parnas' Research Publications at the University of Limerick.
From the conference website: Link to podcast MP3 / All OOPSLA 2007 podcasts
Posted by cwirving at 9:12 PM
October 30, 2007
OOPSLA 2007 powerpointware links
A quick Google search for OOPSLA 2007 slides did dig up a few sessions I did not attend:
Mark Baker and Stuart Charlton: The Web: Distributed Objects Realized!
Chuck Allison: Python as a General-Purpose Object-Oriented Programming Language (Powerpoint link)
Pattern Writer's Workshop submissions at The Refactory
Martin Odersky: The Scala Experience (PDF link)
Posted by cwirving at 6:57 PM
OOPSLA 2007: "No Silver Bullet" Reloaded panel
Panel: "No Silver Bullet" Reloaded
Steven Fraser, Frederick P. Brooks, David Lorge Parnas, Linda Northrop, Aki Namioka, Ricardo Lopez, Martin Fowler.
Once again, my notes are disjoint and incomplete compared to Michael Stal but I think that this gives a flavour of the session.
Everybody, including Fred Brooks, was willing to entertain the idea that object orientation may actually be the technique that has come closest to the order-of-magnitude productivity enhancement set out as a challenge in the book. However, everybody also agreed that we aren't there.
David Parnas (PDF link) kicked off his opening statements with a rather insightful comment about the very nature of the "silver bullets" the software industry yearns for: silver bullets are things that require no skill to use. Hidden below all the words of crisis and mounting challenges faced by the industry, there is this undying hope by some that this will someday become, if not child's play, an activity that doesn't require the education and skill it does today.
Dave Thomas continued that thought by offering the pithy observation that "colleges certify people instead of making them competent" and saying that some of the attempts to solve the problem, such as OO frameworks have been messes compounding their lack of talent or experience in the subject domain with leaky abstractions that are imposed on their users -- who are, by design, made powerless to fix them. Closing with: "OO Middleware is a gratuitous disaster" that we have inflicted on ourselves.
Martin Fowler made the entertaining choice of actually sitting on the panel in the role of the werewolf (after some entertaining shtick during the opening statements where he rolled around on the podium and donned the wolf mask). As the werewolf, he got to utter some rather pithy one-liners that point to the heart of the problem: "Object-orientation is is all very nice but nobody does it!" "The use of pre-built libraries is a great theory... When the libraries are any good." "We love the illusion of control -- hence the waterfall model." "Peopleware is a dangerous book. Fortunately it is hard work to manage a team. It is more than Microsoft Project."
Brian Foote, in the audience, asked whether we shouldn't simply admit that the world runs on bad code -- that, fundamentally, we have been successful despite the bad code and simply learn how to let more people write (bad) code? Ricardo Lopez' retort was that the world relies on code. We have become far more vulnerable to code and that as we become more dependent, we are more and more likely to suffer when errors happen. [I interpreted this as a call for resiliency, failing softly and an observation that we'll soon be at a point where we can't afford catastrophic failures.]
Books mentioned:
Thomas F. Gilbert: Human Competence: Engineering Worthy Performance
Dean Smith et al.: The Carolina Way: Leadership Lessons from a Life in Coaching
Tom DeMarco and Timothy Lister: Peopleware: Productive Projects and Teams
Posted by cwirving at 6:13 PM
OOPSLA 2007 Day 4: Bloat!
Nick Mitchell and Gary Sevitsky: The causes of bloat, the limits of health
Although rather simple in concept, this presentation was delightfully well-executed from a visual perspective: they had taken heap snapshots of many running JVMs and had analyzed the actual contents, breaking them down by category to try and understand what these zillions of objects were. Their initial findings, breaking down the heap contents by class, could be paraphrased as Heap-O-Crap! (I'm going to have to trademark that. It is nearly as good as "craptastic." :-)
At this first level, it is clear that there are huge numbers of unexpected, janitorial even, objects taking up a large percentage of each heap's contents. Things like internal nodes from lists, hash maps, etc. But is this actually the true data-to-bloat ratio? Actually, no: a deeper analysis of the data structures (by looking at the Java standard library sources) showed that even within the data structure containers themselves, there are various ways memory is used. Just for example, it could be the data itself, it could be headers, pointers, space kept in reserve for something, etc. So, their neat visual approach was to build a 4x4 table of potential memory uses, apply a value judgment to the table cells and "paint" the heap with the resulting judgment (e.g., data/waste/spare)... The outcomes were pretty shocking: the number of studied systems where the "bloat" category far exceeded the "data" category was far staggering.
If you look at small, easy to understand examples, you can see how this happens, though: Imagine inserting three short strings into a hash map ("L", "XL", "XXL") -- the hash map overhead would drown the strings (only 16% of the total are the strings, actually). The way systems are written these days appears to have a lot in common with this scenario: structures are chosen for their abstraction at all sizes but they are optimized for one end of the size spectrum, not both... "One size fits all" ends up fitting none.
They also went into lots of detail trying to find the efficiency limits of common Java containers but I didn't pay too much attention given that I actually don't program in Java. I'll simply assume that it is a different mess in .NET and elsewhere. :-)
Posted by cwirving at 4:08 PM
OOPSLA 2007 Day 4: Fred Brooks Jr.
OK, so Day 4 of OOPSLA 2007 has been nicknamed the "Day of the Giants" and that is definitely true: with keynotes by Fred Brooks, John McCarthy and David Parnas, a panel commemorating the "No Silver Bullet" paper, you couldn't ask for much more software engineering history in one day!
Frederick P. Brooks Jr: Collaboration and Telecollaboration in Design The initial observation of the talk is quite simple: over the last century, design has changed in many ways but none more so than in the number of people involved. Design at the turn of the century (from the 19th to the 20th, that is) was an individual affair. Today, it is teamwork -- often shared amongst many. In comparison, artists have historically -- and still do -- work alone or, at most, in pairs... Why the difference? Why did design go from a lonely profession to the group activity it is today?
One answer: "There are no naïve technologies in the West." Brooks gives the example of visiting Procter & Gamble and discovering that they use computational fluid dynamics to design the mixing apparatus for shampoo (it is a three-layer emulsion and they want to mix without shearing). CFD for shampoo?!
But, seriously, the answer lies in two areas: sophistication and time to market. We want widgets that are massively more complicated than in the past and we want them faster.
So, how do successful teams maintain conceptual integrity under such circumstances? Brooks offers the following guidelines:
- One architect for the overall project -- if only one person understands the system as a whole, the architect is that person. If nobody understands the system as a whole, mediocrity is the best one can hope for.
- One user interface designer -- again this is the guardian of conceptual integrity in the user experience
- Where there are assumptions, document them! It is better to be wrong than to be vague.
- Projects should have a "style sheet" -- documented decisions and rationale, standards (including standard libraries for code) that is understood by all on the team
Cool. Teams can be made to work... So, when does collaboration help?
Collaboration:
- Helps to determine needs from users
- Helps in conceptual exploration
- Does not help in conceptual or detailed design -- this is still an individual activity
- Helps in the form of pair programming -- not through any direct cost savings (it is expensive) but, rather, through a near tenfold reduction of defects
There are some notable caveats, though:
- Collaboration is more complex than one thinks
- Change control for the design becomes essential
- Collaboration is no substitute for thought -- people still need to take their activities offline to think
One example of recent large-scale collaboration is the Airbus design team for the A380. On top of the usual telecollaboration tools, they added two key things: Ambassadors -- Each team had representatives co-located with their counterparts. They were able to defend their position at any time and provided trusted communication channels. A daily shuttle between sites -- Even with all the telecollaboration tools, face time is still crucial.
Because telecollaboration is currently "technology-driven" rather than "application-pulled," the focus often is on high-tech solutions that may not be all that valuable. In fact, in a steep decreasing order, the most effective things to share are: documents, voice and video. The technological fixation on the latter does seem at odds with what actually works.
Finally, just like in factory shift-work, keeping the handoff between collaborating teams to a well-defined, minimalist even, interface often is a very effective technique. [I assume that he alludes to a form of signal-to-noise ratio, where loading extraneous communications and ritual into the channel effectively drowns the important information].
From the conference website: Link to podcast MP3 / All OOPSLA 2007 podcasts
Posted by cwirving at 3:24 PM
OOPSLA 2007 day 3: Second Life
Jim Purbrick and Mark Lentczner: Second Life: The World's Biggest Programming Environmnent
Everybody seems to cover this talk, pick up the mind-boggling statistics (15% of Second Life users have written scripts, over 40% of the users are women -- Tim Bray -- an outspoken proponent of women in programming[*] -- would be so proud...). The delicious irony that one can be incredibly successful with a totally craptastic scripting language, tight arbitrary limits and an even more awful technical implementation behind the scenes gets everybody atwitter... Apparently, we have an infinite ability to be surprised by the success stories of people that did something awesomely compelling despite getting some details completely wrong.
Fine... I personally remain somewhat unconvinced by Second Life but I think that they deserve a tremendous amount of credit for the compelling experience that gets them the 30,000+ concurrent users they mention. Doing something different is hard. Doing something different that people actually use is monumentally difficult. Anyway, the meat of their talk was about how they use Second Life as a virtual Agile team hangout, meeting and pair programming online -- it is interesting and I do hope that it does work as well as they say it does, but I think that we're only going to know once somebody other than the actual owners of the environments get to do it.
[*]: Don't get me wrong, I think that women are terribly under-represented in our profession -- I just don't think that men getting all worked up about it in public comes across as particularly authentic.
From the conference website: Link to podcast MP3 / All OOPSLA 2007 podcasts
Posted by cwirving at 11:51 AM
October 29, 2007
OOPSLA 2007 day 3: 40 years of language evolution panel
Panel: Celebrating 40 years of language evolution: Simula 67 to the present and beyond
Panelists: Steven Fraser, Guy Steele Jr., James Gosling, Bertrand Meyer, Anders Hejlsberg, Ole Lehrman Madsen.
I didn't keep faithful notes of the panel -- Michael Stal did a better job of capturing the back and forth than I did. However, I picked on a handful of interesting tidbits.
There was a common thread observing that Kristen Nygaard's initial intent was to keep modeling and programming close together -- that the hard separation in today's practice was not his intent at all. Thus the quote: "to program is to understand." Simula, although finally a programming language came to us as a way to model the real world (from operations research, to be precise) so the disjoint steps of real world to model to code as we have today is a peculiar end to a story that started with trying to bring all of them together...
Another thread from the panel was the experience of people discovering Simula 67 for the first time -- that those coming into the profession today have a hard time appreciating. James Gosling spoke of the tragedy of having to go back to programming in Fortran following his introduction to Simula.
Regarding the future, there was a lot of cautious pondering that functional programming may be the answer to some of the technology challenges facing us today (e.g., multicore systems and exploiting their parallelism) but, on the other hand we have to be cautious to remain within what is comprehensible by mere mortals -- Anders Hejlsberg reiterated the point that most people aren't "wired that way," functional programming may not achieve the kind of mass appeal that object orientation has. Also, as Guy Steele pointed out, even if systems of the future are 90% functional and parallel, what of the remaining 10% that deals with state? There still needs to be abstractions and languages to express that...
Further on the impact of future hardware on the programming environment, James Gosling made the argument for "data structures, not databases" -- systems are getting powerful enough and with enough memory that the idea of keeping entire databases in memory, potentially only persisting a journal of changes is quite reasonable for many applications. Actually, he pointed out that you can order systems from Sun today with half a terabyte of RAM... So, along the lines of mind-boggling trivia questions: what do you do with a system like that if you core-dump?
Posted by cwirving at 5:56 PM
MacOS 10.5 Leopard
As a quick sidetrack to the OOPSLA posts (no, I'm not done yet), I noticed that Ars Technica posted their review of Leopard -- the long-awaited latest version of MacOS. Not being a mac user myself, this is entirely academic to me -- however, one thing that struck me about the evolution of MacOS is how they are actually very good at rolling in new technologies over multiple versions of the operating system. It isn't quite the Gentoo-like versionless operating system, but you can see that they rolled out major APIs and subsystems in Apple's code first, polished it up and opened it to the outside world in rather sensible steps.
Apple's approach is more of a "do as we have already done" approach -- in contrast to Microsoft's apparent "do as we say, not as we do" in Vista (yeah, managed code is the future, but I sure don't see any in Vista).
As a somewhat unrelated aside, I have to note on the prevalence of MacBooks at OOPSLA: they certainly are the laptops that the "cool kids" use. There were still plenty of PC laptops, but I would wager that MacBooks (mostly of the Pro variety) were in the majority. At the other end of the scale, there was a small hardcore minority of Linux-powered laptops, too (Manuel Serrano was an example of that, running Arch Linux on his Dell).
Posted by cwirving at 10:23 AM
October 28, 2007
OOPSLA 2007 Day 2, 3: The paradigm twisting sessions
As a bit of a sidetrack from the usual OOPSLA '07 fare, I think that I want to mention a couple of really interesting demos that happened at (or around) the conference:
Manuel Serrano from INRIA demonstrated HOP at the Montreal Scheme/Lisp user's group meeting on the Monday evening. HOP is a Scheme-based web server platform. It is more than just a "mod-scheme" -- it really is quite game changing in the way a single program source describes the server-side and client-side execution. Serrano's demo used HOP as a flashy Powerpoint replacement directly from his laptop just to drive home the point that the web is something that can be near as well as far: the physical model of HOP as it is going today is one where the server-side component runs pretty ubiquitously near the client so it can have fast interactions and access local resources.
However, I think than just the programming model itself is incredibly compelling: a lot like the Google Web Toolkit gives the web application programmer an unified environment for both the client and server side, HOP gives you that conceptual simplicity coupled with a powerful dynamic language (Scheme). That was a demo that immediately made me want to work with HOP to build a website -- any website! -- it looked that fun to use. Unfortunately, their website does not do the system justice in that respect.
The other really mind-bending demo was Jonathan Edwards' demo of Subtext 2. I had no idea that this was the session's subject and actually missed it at OOPSLA (instead sitting through an hour of people presenting papers about "adding feature X to Java" as somebody lamented earlier in the conference). Going back and looking at the screencast on Edwards' site, I am amazed at the progress he has made with Subtext. This really is getting into the realm of "I could -- no, I want to -- use that!" Visual representations of programs that actually work are so incredibly hard to create and interactive ones harder still. I have memories of being enamored with the potential of Borland ObjectVision (OV in short) all those years ago (I'm not counting) but moving on when I found it too limited to be useful. Subtext 2 is somewhat of the opposite approach where it describes code in the small -- it isn't the overly broad flow pattern that OV was mainly good at -- in the context addressed, it is a really readable and faithful representation of program logic... A live representation of program logic -- you can edit it.
As ever with this kind of thing, I don't expect that Subtext is the answer to every problem. Nor do I know what range of program scale it is best suited for... But, I can think of plenty of places where that kind of visual programming UI could be a really powerful means of keeping programs from going astray. The challenge, like with OV, is that the user we think of as most in need of this structure is the "incidental programmer" -- somebody who is not a programmer by training. Despite needing this visualization and structure, I think that they are also the users the least likely to accept it: the user experience is based on formalisms they don't understand and they see it as crap that gets in their way -- they "just want to solve their problem, dammit!" Like the authors of the thousands of mishapen Excel macros out there, they have no concept of the education they are missing to program, thus of the value of something like Subtext. Still, I'm excited. The fact that it is a convincing visual programming medium is huge progress.
Posted by cwirving at 4:16 PM
October 27, 2007
OOPSLA 2007 day 2: Dynamic Languages Symposium (part 2)
(I'm skipping a bunch of stuff that I can't bring myself to type up from my handwritten notes...)
Jim Hugunin: Bringing Dynamic Languages to .NET with the DLR
This talk was partly a description of the DLR and partly a history of IronPython. Neither was new material, but I found it instructive nonetheless -- especially since some of the Powerpoint-ware floating around for these two subjects is less than enlightening.
The fundamental bits to know about the Dynamic Language Runtime (DLR) is that it is an open-source pure .NET layer that sits on top or the 2.0 CLR. It doesn't do any magic using new CLR bits and it isn't tied to Silverlight. It is intended as a helpful layer for implementing "children of Algol" dynamic languages (Python, Ruby, VB, etc.) -- Jim Hugunin was quick to state that it is not intended to support some languages that interest a lot of the people in the crowd (no IronLisp in the works :-). Some of the back-and-forth between Hugunin and David Ungar later on in the session did go into some reasons why.
As a language builder's toolkit, the DLR basically brings tokenizing and parsing tools, syntax trees and code generation to the language implementer. None of these layers are canned ready-to-use but come with the majority of the common functionality wired-in and the extensibility points mapped out. The places people need to actually get coding are intended to be well known and understood -- something that is probably going to drive the evolution of the DLR in its current open-source incarnation until it gets "baked-in" to the factory .NET ecosystem later on.
The discussion about IronPython implementation was for the most part the same bits that were presented at PyCon in the past but the part that struck me was the straightforward explanation of where early IronPython performance beat CPython: once you lay the CPython and CLR bytecode side by side, you realize that the expensive operations (which often are type-sensitive, thus potentially kicking into reflection) are basically the same... But the small stuff (loads and store bytecodes) can be dramatically faster on .NET: whereas CPython still needs to dispatch these small bytecodes to specifics regions of C code, IronPython can spit out the one or two IL instructions needed -- which will JIT down to fast inline machine code at runtime. So, hundreds of machine instructions for CPython vs. a handful for IronPython. Just this difference was enough to keep early IronPython performance more or less on par or faster than CPython... Our intuitive fixation on the complicated parts leads us to ignore the whole picture.
Of course, later versions of IronPython took advantage of a bunch of new .NET 2.0 plumbing and a whole lot of hand optimization went into the support functions (much like they are in CPython). One notable IL generation trick was to take advantage of the tendency of collections to be relatively homogeneous, so the DLR can cache the most likely version of dynamic support methods (in a stack-based "dynamic site" -- basically, a delegate reference) and dynamically choose the fast execution path.
Hugunin and Ungar got into a side Q&A about what other runtime optimizations they do in IronPython and the DLR but it appears that many of the more extreme optimizations are not things you can do on top of a CLR-like VM -- they are things that the VM itself has to assist (e.g., some of the heap-sweeping and pointer rewriting tricks of some VMs). Also, although closures are a supported concept in .NET, continuations -- the other favorite 'c' word of the dynamic language world are not so easy. As Hugunin put it, the CLR is not hostile to continuations but it does not go out of its way to support them, so they are kinda-sorta supported at best.
Oh, yeah, Hugunin also plugged the 2008 edition of the Microsoft Lang.NET conference... Certainly the place to go to get the inside scoop on the evolution of the DLR and all these goodies.
Posted by cwirving at 5:45 PM
OOPSLA 2007 day 2: Dynamic Languages Symposium (part 1)
The Dynamic Languages Symposium was pretty packed -- both in terms of number of people and in terms of number of papers -- so I'll break the report up into separate postings.
Mark S. Miller: Tradeoffs in Retrofitting Security: An Experience Report
The history of computer system security can be traced back to one major "fork in the road:" In the 1970s, the industry followed early successes and DoD funding to pursue access control lists as the primary means of expressing security concepts, effectively abandoning mainstream research into the object-capability approach (historical note to credit Dennis and Van Horn for the origin of the approach -- see Mark S. Miller's thesis for a lot of background)
This has led us to a dysfunctional present: although we want to abide by a principle of least authority, there appear to be only two stable security levels: those of an application (having the complete set of rights conferred by the user's credentials) or those of an applet (sandboxed into an environment that can do no harm -- often meaning that it can do nothing useful, either).
The answer is to go back and look at the object-capability model and see what we passed up. Fundamentally, we are trying to separate designation from authority. Example:
Consider copying files. These UNIX shell statements are functionally identical yet have completely different security implications:
cp foo.txt bar.txt
vs.
cat < foo.txt > bar.txt
The former requires that the 'cp' executable have the ability to read (write) any file the user may want to copy (to). Under the principle of least authority, it... still can do anything it wants!
The latter, however, only needs to read on the file handle that has already been opened by the shell for the input and write on the handle created by the shell for the output. So, its authority can be constrained via the (file handle, in this case) objects it has been handed -- anything else is extraneous and can safely be forbidden.
At this point, Miller goes into explanations of object capabilities and some systems and languages that implement the concepts. I won't repeat the paper, so I'll skip to some interesting conclusions and observations...
One important lesson of the research to date is to pick a good domain. A lot of past work was done by and for academics but the academic world is far too friendly to really give a security model the workout it needs. Better domains are those of Internet-facing systems. For example multiplayer scriptable games, virtual reality environments... Systems where the users are numerous and motivated to subvert the system to their wishes. That is a far stronger motivator towards security than purely academic activities.
Another interesting facet when it comes to the evolution of existing languages into more secure subsets, the vendor-customer relationships around languages mean that discovering safe subsets is virtually always something that only the language users can do: vendors are practically condemned to only add to languages for fear of breaking compatibility with existing systems while users can only practically remove things from languages (you can choose not to use parts of the language, adding things would mean creating/modifying an incompatible compiler). So, Miller's motto was (slightly paraphrased for context): "Take your favorite language and discover the simple language trying to get out"
Posted by cwirving at 12:54 PM
OOPSLA 2007 day 1: Managing Complexity workshop
Klaus Marquardt, Jens Coldewey: Managing Complexity (workshop).
One participant -- David West (a cultural anthropologist) offered some of the most interesting insights... Starting with the fundamental difference between what is complex and what is merely complicated. Although we often talk about the two interchangeably, they are very different. Complicated things are deterministic and manageable -- although with skill - while complex things are, by definition, not: they are characterized by unpredictable, emergent, behaviour. So, complexity can be "skimmed" or "surfed" but not fully understood or managed.
Given the classification between complicated and complex, it is also useful to note that a "merely" complicated system can become complex -- i.e., show emergent behaviour -- when it is actually deployed: the addition of the outside environment and users may trigger this promotion. So, care must be taken to evaluate systems in their actual context. Of course, we also need some form of complexity benchmark -- saying that it is non-deterministic is not entirely satisfactory since it could also be ignorance on the part of the observer... It isn't something to easily pinpoint. However, there are hints: for example, complex systems are ones that people build myths around -- users and people directly involved in the system make up for their lack of understanding of system beaviour by creating myths to explain it, even in the complete absence of data to back them up.
Following this introductory definition, Dave followed up with a series of observations about the discipline of software development and what it could learn from anthropology:
* Holism
Software, for various reasons, often ends up completely separated from its context. Decisions made by "software people" (not to identify any one role) are often based on the context of the software team, not the target domain or culture. Examples of this phenomenon are numerous but he cited a few-
One popular -- almost unchallengeable -- preconception in Western culture is that there are two sexes: male and female. This is fine and good until a software system needs to be deployed in American Indian locales. Certain Indian tribes consider hermaphroditic birth to be an omen -- instead of being a problem that needs to be classified one way or another, they recognize -- no, stronger: they feel it is important to recognize -- hermaphrodites. In this case, the developers basically hard-coded their culture into the system.
In a similar but different way, it is possible to be blissfully unaware of culture. One such example is the stunted inital deployment of automated loan approval systems. The system developers were blissfully unaware of the social consequences of a system that, de facto, moved loan approval power from the (male) bank executives to the (predominantly female) tellers. Although useful, fair and cost-saving these systems faced tremendous resistance by the very executives that should have welcomed them.
The software developers' outside view often falls back on tried-and-true (exept when they aren't) axioms like "simple is good, complicated is bad." Unfortunately, this isn't necessarily true when complication is contextual and culturally appropriate: people navigate a very complicated world daily and manage to function just fine. Stripping down user experiences to the bare minimum may be aesthetic but also can make them harder to use by real people -- a certain amount of extraneous "junk" is sometimes necessary for usability.
* Question the "official explanations"
This takes many forms -- some of which are extremely tempting to believe because they reinforce our biases. For example, the often-repeated notion that software is a "strategic" or "capital" asset can equally be an "official explanation" backed out from the fact that the kind of software people have attempted to create has been expensive, software can -- and often is -- a disposable tool to achieve an organizational goal. The gold-plated all-singing all-dancing system may be far from the desired deliverable but once you have spent a fortune on something, it is human nature to rationalize an explanation for the spending.
Similarly, systems that need to automate tasks currently performed by people can't entirely be based on task descriptions by higher-ups and training manuals: the actual tasks as they are performed in reality may differ substantially from the official model or the actual keys to the tasks' success may be external to the system or social in nature. For example, the initial attempts by Xerox to automate and enhance their photocopier repair operations failed at least in part because they never took into account a simple social factor: the storytelling between repairmen as they had breakfast together actually played a bigger role in expertise transfer than any aspect in the scope of the system.
* You can't model the customer
Although it is very tempting to amass vast reams of paperwork to build a model of the customer, there is no substitute for actually having customers on-hand, having being immersed in the customers' world. Modeling is often necessary but it is always low-fidelity and can lead one far astray.
* Representational vs. evocational abstraction
Understanding that there are multiple kinds of abstraction is key. Classical software engineering is built around representational abstractions: UML models intended to be demonstrably faithful to the concepts they represent, high-quality documentation (such as advocated by Parnas) is supposed to capture the system with near-formal precision. However, when we study the cultural artifacts of past civilizations, we find lots of high-content models (e.g., maps) that are purposefully inaccurate in a representational sense: they are evocational models, they are intended to trigger shared memories in the reader, nudge thought processes back into context with a minimum of data. Evocational models are often very information-rich without necessarily having the nitpicking detail of representational models. It was argued that some of the agile software development team artifacts are in some ways evocational artifacts (e.g., the wall of cards that represent the features of the system has a sensory evocation of the discussions and rationale that went into fashioning it -- something that is lost when the requirements are copied to another medium). However, on the flip side, the confusion of the two kinds is very problematic. We can, through social programming, rely on evocational value that is not there. Much of the real world makes use of evocational abstraction but the modeling techniques we have chosen for software rarely do.
Back to the other workshop participants-
The second half of the workshop focused more on technical aspects of complexity, highlighting some of the participants' past experiences.Some were relatively ordinary while others had a heretical element to them. Just to mention a few:
* The tension between control and self-organization was a recurring theme. Successfully taming complexity requires some amount of self-organization -- neither rigid control nor chaos lead to success.
* Some had success questioning the conventional wisdom that software development is always a cost center. Software development directly as part of a profit center can free it to be responsive to immediate needs. It is harder to impose a "strategy tax" on development that is profitable and meeting users' needs.
* The role of architect as facilitator. Successful software architects are part facilitators and part dictators. Getting the right mix is important.
* Another trait of the successful architect is to consciously choose a "neglect level." As Eric Evans said in one of his tutorials later in the conference, "every part of the system need not be perfect." Choosing which concerns are worthy of local or global optimization is important even if it means letting some parts be far from perfect.
* Failure begets failure. An interesting tidbit: one company's hiring policy explicitly looks at the success of projects job applicants participated in previously and rejects those associated with failures, more or less regardless of technical skill. Their logic is that people with histories of success know how to get the job done -- somehow -- while those with histories of failure are lacking something...
Books mentioned in the discussion:
Tom Kelley: Ten Faces of Innovation
John Seely Brown, Paul Duguid: The Social Life of Information
Lucy Suchman: Plans and Situated Actions: The Problem of Human-Machine Communication
Christiane Floyd, Reinhard Budde, Heintz Zullighoven: Software Development and Reality Construction (out of print)
Peter M. Senge: The Fifth Discipline: The Art & Practice of The Learning Organization
Posted by cwirving at 11:38 AM
It's gonna be a bunch of OOPSLA '07 reports...
I spent last week at OOPSLA 2007 in Montreal. I highly recommend the conference and also enjoyed the city (well, what little I saw -- this is not a sparse conference!). I'll be posting some of my notes and comments as I get them typed up. In the meantime, here is a link to Michael Stal's report (read it -- he didn't go to exactly the same sessions and took more notes in the panel sessions).
Update: Jonathan Edwards also has a quick OOPSLA summary.
Posted by cwirving at 11:34 AM
Air Canada, have you heard of usability?
My flight out of Montreal after OOPSLA was my first experience with Air Canada's automated check-in tellers. Wow... It certainly made me appreciate the usability work Continental Airlines put into theirs.
I don't consider myself to be a complete moron when it comes to computers. I don't like to put it that way, but I think that if you make a system that confuses me and actually fails at the primary purpose of getting a boarding pass into my hands, you have failed miserably.
Tip #1: print the boarding pass before the receipt. Continental does that and, you know, I'm more likely to take the first thing that comes out of the printer than the second...
Tip #2: If you are going to print two things, make sure to get them printed within a reasonable amount of time of each other. People will wait for something to start coming out of the printer but are not going to hang around for another minute while the caged gerbil inside decides how to render a boarding pass in 200dpi glory. Which leads to...
Tip #3: If you are going to put a "# pages remaining" helpful prompt on the screen, you might consider actually waiting until the last page is printed before setting the counter to zero. If the screen tells me "nothing left to print" and there is a wad of paper in the printer bin, I am going to assume it is done. I'm not going to wait around while the printer gerbil finishes his pack of Gauloises before printing the last page. The screen is telling me it is done. You know, as in: "I'm coming! Okay, thank you! Get off me!?"
Just sayin'...
Posted by cwirving at 11:00 AM
June 11, 2007
Safari for Windows... So, this is good how?
Like every geek on the planet, I dutifully downloaded Apple Safari 3 for Windows and tried it out... Call me a curmudgeon, but this is supposed to be better how? Sure, it looks like a Mac app. But it also seems like a huge step back from Firefox -- not least because I can customize Firefox. Safari seems to be "browse the web the way we want you to!"
Heh, go figure. Brushed metal all the way, permanently anti-aliased fonts and a preferences dialog with no way of canceling changes... Yeah, right. Not a great advertisement for the Mac experience.
Posted by cwirving at 2:35 PM
May 18, 2007
Parallax Propeller
I have a bit of a soft spot for neat embedded computing hardware. I don't have time to do anything with them, but I always enjoy seeing new and interesting stuff -- especially when it is geared to the hobbyist. Well, here is one rather nifty example of the breed: the Propeller from Parallax (the BASIC Stamp people). It shoehorns eight microcontroller cores into one package -- which could be brilliant for some heavily threaded applications (e.g., self-balancing robots).
Think of it as an affordable, hobbyist-friendly distant cousin of the Ubicom IP3000 network processor found in the Squeezebox. :-)
Posted by cwirving at 10:31 AM
May 15, 2007
Google Reader vs. Newsgator Online
After resisting for a long time (and the fact that I paid money for Newsgator Online), I tried Google Reader for the first time this week. Well, do I feel stupid now: Reader is far more usable and responsive than the "classic" Newsgator Online. Actually, Reader is darned close to the best feed reader I've used -- including desktop applications. That is quite impressive!
I guess that I'll give the "new" Newsgator Online application a chance, but it seems rather unlikely that I'll be continuing my subscription to the service.
Posted by cwirving at 1:56 PM
May 1, 2007
Dell and DHL: Dumb & Dumber?
Well, the plot thickens with Paula's Dell laptop shipping fiasco: as of Friday, they had declared the package as lost -- couldn't find it anywhere in DHL's system... As of this evening, I had a package on my doorstep, from Dell, with the laptop in it, that shipped last Thursday! So, while DHL and Dell were frantically looking for the laptop in that original package, it probably was still sitting on a shelf in a different box somewhere at Dell's repair facility. How nice...
Anyway, I am glad that we got Paula's repaired laptop -- even if a week later than scheduled. I am curious to hear what Dell has to say about this little fiasco...
Posted by cwirving at 7:20 PM
April 26, 2007
When your agents make you look incompetent...
Paula's new Dell laptop had a mishap that required sending it back to the factory for repair. They didn't quibble about the nature of the problem, were very swift to issue a call tag to ship it back and processed the repair within a day. The repaired machine left their facility over the weekend, shipped second day with their carrier of choice -- yes, that other one... Well, guess what? Said other carrier of choice, in a fit of incompetence managed to confuse "second day air" with "ground." So, the darned laptop is somewhere on a truck driving to Houston rather than in Paula's hands where it should have been two days ago. Very frustrating -- and something that, although not directly Dell's fault, reflects poorly on their business sense: using Random Screwup, Inc. as your corporate shipping company is maybe not a very clever move no matter how cheap they may be.
To paraphrase the car rental company commercials, FedEx and UPS vie to be "number 1" and "try harder" (in whichever order you want to put that), but these guys are more like "we're a distant third and we're not even trying..."
Posted by cwirving at 7:56 AM
April 9, 2007
WWLD
I find this post by James Clark quite interesting because it touches on a lot of the issues I faced when trying to design loosely coupled and (somewhat) distributed systems: although at the time there were none of the WS-* tools that exist today, the challenge was -- and still is -- to find a way of specifying loosely-coupled services and data without either buying into a byzantine toolchain or losing the ability to reason about the services and data.
Even today, the complex beasts that the industry loves to push don't do much of a job to enable introspection on a distributed scale. I'm not sure whether I have an opinion about James Clark's idea but I would offer this litmus test: WWLD ("what would Lisp do?") -- the one programming environment that does have the ability to reason about data and code equally does deserve to be used as a point of reference. The fact that it is out of favor does not make it any less relevant to the situation. I like the composability and simplicity of JSON (I certainly like the programming model far better than dealing with XML!) -- I just have to ask whether we're trying to reinvent the past in our enthusiasm. So, let's be explicit about the things we can learn from the past.
Posted by cwirving at 1:38 PM
March 30, 2007
S3 Backup
Since Rick wants to know :-)... Yup, I've been using S3 Backup for online backups of some of our data. It is a mix of file types -- roughly 33,000 files for a total of 7GB compressed -- that I think covers most of our personal "stuff." Overall, the experience has been pretty painless, although it clearly is not for the impatient: it took the better part of two days to upload all the data the first time and the sync step at the start of incremental backups is pretty slow (about 5 minutes to retrieve the hash table from S3, 15 minutes to scan the local files).
S3 Backup is a nice, simple, solution to the problem. The UI has a little of the clunkiness that you come to expect from a multiplatform (Windows, Mac and Linux) application but it is very functional and a wonderful advertisement for what you can develop in Python these days. It still seems to have the odd bug, but I haven't found any reproducible scenario where it didn't do what I want (well, except for a quirk in the backup configuration dialog that required a little massage of the configuration file to set the destination folder I wanted within the S3 bucket). All the obvious features are there: compression and encryption of the data on S3, it supports multiple S3 buckets, file-by file access as well as backup/synchronization.
The one feature that I still need to play with is the scheduled backup feature -- I've been careful to monitor the application for all my tests to date, but this is only going to be realistically useful if it happens without my supervision. I'm forgetting enough stuff as it is!
The S3 service itself seems quite affordable at the volume I'm dealing with -- I'd run into the practical limit imposed by my outgoing bandwidth well before S3 started getting expensive. However, the data set matters a lot: these are mostly relatively small, infrequently changing files. I would not want to use S3 for large files that change often: the bandwidth issue would be a killer.
One unexpected bonus I discovered is that I can run the S3 Backup client anywhere (well, from any machine I trust -- that's a small subset!) and retrieve backed-up files anytime. It does take the Amazon Web Services key to set up, so you have to know that but the rest is painless. That's allowed me to synchronize files with the office a couple of times when I forgot to throw them on an USB key.
So, in conclusion: I expect that I'll continue to use S3 backup for offsite backups of some data. It is really a complement to the regular backup strategy (daily and weekly backups to other physical drives on the server, manual backups onto external hard drives that I store offsite).
Posted by cwirving at 11:35 AM
March 29, 2007
If you ever shopped at T.J. Maxx...
...You may want to read this.
Posted by cwirving at 2:22 PM
On the importance of university degrees in software development
Jeff Atwood started a big long comment discussion on his blog with a post arguing that practical experience trumps degrees for a career in software development[*]. At some level, yes, that is true: you can't be a good developer witout writing code -- lots of it. However, I think that this misses an important part of the picture: higher learning buys you potential -- it doesn't make you good at anything in particular, it just gives you the context in which to reason at a high level.
Sure, coming from a somewhat academically-oriented household (I have two MS degrees and Paula has a Ph.D) I can be accused of prejudice but I think that it still is true that degrees have value even in computer science. The fact that Atwood is even saying this is a serious indictment of the quality of CS (et al.) degrees these days (see Joel on JavaSchools for more on that). My experience with young graduate practitioners has been that they often have been taught the mechanics of programming, not the underlying reasoning. In that context, yes, the degree is of marginal value. However, in that (increasingly rare?) case where the education matches its name, the benefits are tangible: somebody that has the formal background to go with the experience (there is no substitute for experience -- I agree with that) can use his/her education to recognize and apply many of the theoretical learnings that the self-taught often don't. It doesn't mean that you must have a higher education, rather it puts another valuable arrow in your virtual quill.
Of course, there are plenty of counter-examples. But, let's be frank: for all there are many self-taught geniuses out there that can program rings around us mere mortals, drawing examples from a narrow population of exceptional individuals does nothing for the merely good. High school kids who build a mass spectrograph as science fair projects aren't the target demographic here -- if it were, we'd have a few hundred programmers to go around worldwide. Get real! I'm not talking about the great unwashed masses, either (VCR programming is a challenge enough there). For the talented, yet not pathologically driven amongst us, higher education can -- and should -- raise the game to a significant degree.
Of course, sometimes it is as much of a bane as anything else: my theoretical knowledge of software engineering (one of my MS areas) only allows me to have a better understanding of the misapplication of management theory at my workplace -- it doesn't magically make me any more able to effect positive change. Wearing a suit still trumps education at most companies... The popularity of cartoons like Dilbert is no accident: human endeavors still are ruled by dysfunction.
[*]: I really need to stop linking to Coding Horror -- I'm beginning to sound like I hang on his every word or something...
Posted by cwirving at 1:48 PM
March 27, 2007
Error handling, we've heard of it...
Only marginally less embarassing than the Lowe's warranty registration web application not quoting input (which was deliciously ironic, given the apostrophe in the company name) is Target's online survey application:

I guess that means that somebody didn't remember to create a meaningful exception handler for the application. Interestingly, this is after entering a valid survey code using Opera as the web browser. Using Internet Explorer doesn't lead to this rathole. Yeah, I guess it is that whole "95% of the people who surf the web use IE on Windows, so screw everybody else" thing again...
Posted by cwirving at 2:19 PM
March 23, 2007
Verizon Wireless BroadbandAccess
We got a Verizon-branded Kyocera KPC650 EVDO Rev. 0 wireless data card and BroadbandAccess service for Paula's laptop so that we could be on-line even when out of the house -- something that has become more of a concern now that HOPE is using PetPoint pretty extensively.
So far, it has been a case of "great service -- terrible software." The coverage appears to be very good (I'm getting 200kbps on the 21st floor of the office building -- a virtual cellular coverage dead spot). I haven't tested best-case download speeds (uploads suck, though -- it is a Rev. 0 card... I should have picked a Rev. A card for that) but performance seems quite usable.
On the other hand, the Verizon software ("VZAccess Manager") that comes with the card is a total piece of crap. It fubared the Dell WLAN manager application on the machine, crippling its ability to connect to WPA2 WiFi networks. There seems to be some system stability issues with ejecting the card and/or sleeping. All this for a device that basically acts as an USB modem! How hard would it be to write drivers and a pretty management application that doesn't mess up the user's networking configuration?
Posted by cwirving at 1:12 PM
March 13, 2007
D.I.Y. computing
Jeff Atwood posts about building D.I.Y. developer workstations and how off-the-shelf desktops just don't cut it. I couldn't agree more: even for relatively low-cost machine builds, I find it hard to justify a pre-made box (e.g., Dell) if I have any specific requirements at all. I just built out a new mail server (where cost-efficiency was a key factor) and there was no way to make, say, a Dell configuration that did what I wanted. I certainly did not match Dell's price, but the configuration was far better suited to what I need -- a decently powerful dual-core box that will run forever but doesn't use massive amounts of power. This is the same general process that led Rick to build his own server box as well a while back.
Building a developer workstation, as Jeff Atwood describes, is clearly an area where build-your-own can't be beaten -- assuming you know what you are doing, of course. Even when manufacturers try to build high-performance boxes, they target a demographic with very different needs (e.g., gamers). However, just like the example D.I.Y. box in his post shows, top performance does not come cheap. It may be cost-effective, but it won't be cheap!
Posted by cwirving at 9:03 AM
February 13, 2007
Well, this answers some of my N800 questions...
Ari Jaaski (Head of Nokia's open source software operations) blogs -- and has a posting about their high-level roadmap for the Internet Tablet family.
It certainly is nice to see that they appear to be planning an evolution of the N800's software beyond just patches and gimmicks.
Posted by cwirving at 11:30 AM
February 8, 2007
"N800 chips revealed?" -- my point exactly...
My previous post about the Nokia N800 and how I'm concerned that its firmware may never actually live up to the hardware's potential just got reinforced by the discovery of onboard FM radio and USB-on-the-go hardware that aren't currently being used.
Posted by cwirving at 9:20 AM
February 7, 2007
Sitting on the fence about the Nokia N800
Make no mistake, the Nokia N800 (successor to the 770) is brilliant. It is the kind of device that makes having "instant-on" web access anywhere in the house -- or anywhere with WiFi, for that matter -- a practical possibility. There are so many places where I wouldn't think to bring a laptop but where a pocketable device like this really makes sense. Also, not having to wait for a laptop to boot is a big plus (e.g., to check the weather, news headlines, control the SlimServer, etc.).
So, why am I not buying one right now? Well, price aside, I think that the biggest problem I have with the N800 is that it isn't clear whether it is a computer or a consumer electronic device. I don't mean that in terms of capability, but rather in terms of support: Computers are application platforms that we are expected to be able to upgrade with new operating software, sometimes unlocking new capabilities that were present in the underlying hardware. Consumer devices are boxes that basically remain static until you buy the next one. Sure, you get firmware updates and add-ons, but the basic feature-set remains unchanged...
In the case of the N800, there are many things present in the current shipping firmware that we clearly know are sub-optimal: Flash 7 (when Flash 9 for Linux just shipped), Opera 8 (when the stand-alone version is up to 9.x), no SDHC support when the hardware can do it, no apparent support for the DSP in the hardware platform, etc. These are all the things that, if Nokia treats the N800 as a computer, could be fixed in later firmware -- but, if they treat it as a consumer electronics device, will remain problems forever (or until the N9xx comes out, for another $400).
This is always the problem with support for shipping hardware devices: manufacturers so rarely keep on significantly improving the firmware after release that I've lost confidence in them. Sure, there are issues around licensing costs -- I'm not suggesting that all these updates should be free, but the last thing I want is to be frustrated by missing bits that can -- and should -- be part of the device but weren't because they ran out of time before booting it out the door. In that respect, the experience with the 770 is a mixed bag: Nokia did make an effort to produce a version of the new operating system (from the N800) that would, nevertheless, run on the 770. However, it is somewhat incomplete because (a) the hardware is different and (b) license fees were an issue (which is why I undestand that this can't always be free upgrades forever).
So, all in all, what frustrates me with the N800 is not so much what it is as the difference between what it is and what it could be. I wish Nokia were clearer about this so that the purchase decision wouldn't be quite so hard.
Posted by cwirving at 12:52 PM
What UPS not to buy
We had a medium-length (about an hour) power outage last night as something must have shorted the high-voltage lines coming into the neighborhood and fusible links popped. This plunged the whole block in the dark and made for some exciting running around to find the flashlights stashed around the house, turn off everything that is on an UPS, etc.
Yes, there are a lot of things on UPSes around our house: all the networking gear, the CATV gear, the ReplayTV, the server room and all the desktop computers... So, it made for quite a bit of running around.
One thing that I did learn as I went up to the server room to shut the servers down is that another of my "standard" UPSes (the older-style Belkin 1200VA "Universal" model) seems to have worn batteries. Unfortunately, the batteries aren't replaceable in this UPS model, so the thing is basically a brick -- I have taken one apart and I can vouch for the fact that you really don't want to try to swap those batteries out: you have to take it completely apart and fight with a whole lot of tight-fitting wiring. So, basically, the lesson is simple: DON'T BUY AN UPS WITHOUT USER-REPLACEABLE BATTERIES! Darn, it only took me what? 4 or 5 of these things to figure this one out and I now am watching the suckers die one by one... Just don't do it!
Anyway, I've learned my lesson -- I'm definitely going for something with user-replaceable batteries to replace the ailing server room UPS.
Posted by cwirving at 9:29 AM
January 26, 2007
Sandcastle
This is mostly as a note to myself, but Eric Gunnerson has a link to Microsoft's rather nifty Sandcastle documentation tool for .NET. Well, this assumes that one writes code documentation, but...
Posted by cwirving at 9:59 AM
January 24, 2007
That saying about being ahead of your time...
This post by Sean Luke compares the Nokia N800 with the Apple Newton Messagepad and, although he ultimately recommends the N800, the Newton comes out on top in many important ways -- not bad for a roughly 10 year old device...
The sad thing is that this pattern repeats itself again and again in computer science history: witness the expressive power of Smalltalk and Lisp -- both antiques by age, but eminently relevant in terms of underlying techniques. The fact that modern dynamic languages (Python, Ruby, Javascript, etc.) display many traits borrowed from these older languages is no accident. Nor is the recurring theme of people trying to reimplement patterns from them (think of all the times people have tried to implement MVC in current systems -- mostly without the success of the original because Smalltalk brought so much more to the table to make it work well). They are relevant and I expect that their successful traits are going to come back to prominence as we get away from decades of assembler-with-objects programming.
The challenge is tremendous, though: the reason the N800 has the quirks it has is pretty clear: it was clearly intended as a platform to easily port *NIX GTK applications, to be developed with a cost-effective R&D investment -- as such, you have very little latitude to start reinventing a dynamic system like the Newton. Also, other than PalmOS (which could be called a dumbed-down Newton -- although that is grossly unfair to their clever and innovative use of pretty limited hardware), successful sophisticated mobile environments have been pretty thin on the ground. A case in point is Microsoft's PocketPC, that brings Win32 software development to the handheld arena -- yay! fun! where do I sign up? Um... Not really -- the Newton was and remains awesome because it is an environment so different from replicating standalone Windows/MacOS/whatever applications in your hand -- the mechanisms for interoperation between programs on general-purpose operating systems are there but the conventions and classes typically are not. You can do anything, but it's hard to play nice with your neighbors, other than ignoring them -- which is arguably what most desktop or mobile applications do today.
The N800 appears to be a wonderful device that does what it was intended to do quite well -- the question is whether it is possible to do more, do it well and still succeed in the market. That is a lot harder to say, and what the title of this post alludes to: the commonly-held thought that being ahead of your time is a virtual kiss of death in the technology world... As far as I can see, unfortunately yes -- it sure is.
Posted by cwirving at 11:06 PM
January 14, 2007
Did you say "Service?"
The JSON-like data metamodel I described in my previous post was a part of a larger architectural context: at the time this work was going on, we were struggling to articulate a conceptual architecture that would allow us to build applications with the potential for distribution beyond the client-server desktop that we'd concentrated on before. This was in the late 90's as DCOM ruled the land of Microsoft distributed technologies and lots of people were still thinking of "distributed objects" in literal terms.
Although everybody likes to use the word "enterprise" to describe pretty much anything beyond the single desktop, I think that the word is grossly over-used and thus nearly meaningless. Fundamentally, once you leave the cozy confines of the single (and single-threaded) application process, the parameters that govern performance change pretty dramatically. We'd experimented with distributed objects in the classic "it's just OO but the objects are further away" sense and pretty rapidly decided that the idea wasn't going to work for us. The other Microsoft technologies available at the time (such as MTS) were clearly pointing in a different direction -- despite all the distributed objects talk of the time, it was clear that MTS and MSMQ required a very different programming model -- which was relevant even if we really had no desire to use MTS and MSMQ right then.
The fact that the distributed processing architectures embodied by MTS et al. were not at all object-oriented caused a lot of head scratching amongst a team that had grown up with objects. It is only once we began to understand that software architecture doesn't have to be consistent at all scales did we start to make progress: fundamentally, how you architect a system at a macro level doesn't have to be identical to how you architect the internals of its constituent pieces (which themselves can be quite significant pieces of software) and vise-versa. The object-oriented architecture we were accustomed to didn't have to scale up to the distributed system we were looking for and the patterns of efficient distributed architecture didn't have to be object oriented. What we needed to do was articulate a handoff that made sense and was actually usable from both worlds.
So, in our case, we settled on a macro architecture where we explicitly separated data and computation (we labeled stateless components containing only computation as "services" to make the distinction clear) while retaining a conventional object oriented architecture for the components themselves. Mind you, the reality of the macro architecture was less clear-cut: as ever when you're dealing with real systems that have legacy code, you have to make some compromises -- in this case, the legacy components often couldn't be proper services by our definition because they weren't stateless -- but the intent was clearly to use the same data objects as the basis for communication between all macro-level components. Some would probably call this a Service-Oriented Architecture (SOA) but given the ambiguous meaning of the expression I don't know that it means much to say so -- we just called it data-service separation.
So, in this context it is pretty clear where the JSON-like objects I described in my last post fit: once data is to cross major component boundaries, it would be packaged in data objects that could -- due to their purposefully limited metamodel -- be persisted or distributed at will. The ability to dump them out as XML was a secondary benefit to their ubiquity. In this respect, I think that this was -- and still is -- a healthier approach than the current fad of making everything a web service. It opens up the potential for implementing services as web services without mandating the complexity or cost inherent to that technological choice.
Data-service separation does have its costs, of course. It does invert the way one thinks of domain entities -- the initial object-oriented encapsulation of data and business rules doesn't work: business rules need to live as their own services -- which is somewhat clumsier to implement than if everything is under one roof. However, the key mitigating trait is that one would only choose this architecture at a macro level -- the implementation of the individual components in the system is still free: they can still be implemented in an object-oriented fashion that is natural for the implementation technology of choice (e.g., C++ at the time) yet where the boundaries just happen to be defined in terms of data objects rather than method call interfaces or data (file) formats.
So, in conclusion, I would like to think that we made choices that bought us many of the advantages of today's service-centric technologies but didn't marry us to specific tool vendors' pet technologies of the moment. That's a good thing and a bad thing, of course -- riding vendors' coat tails can be very powerful but only when their direction is understood. That certainly is something that was lacking back then (I note with amusement that many references to Microsoft's "DNA" architecture of that vintage have undergone some revisionist gloss-overs: prior to .NET coming on the scene, things were painfully low-level and labor-intensive -- you had to be very good or very deep-pocketed to want to ride that train).
Posted by cwirving at 5:58 PM
January 12, 2007
XML vs. JSON or how better is the enemy of good
There is a fair amount of activity in the programmer blogosphere about the merits of XML vs. JSON as data storage formats. I'll link to one by Don Box since it refers to Tim' Bray's and generated a bunch of feedback on its own. I have to say that the debate and its relevance to storing objects (as opposed to the choice of a general document format) struck a chord as these are issues that I'd battled in the past.
Historically, I've favoured an object storage pattern similar to the .NET 1.0 binary serializer plumbing (although this predates .NET by a bit): an intermediate abstract representation is built before dumping it out in whatever format is relevant (e.g., XML or a binary format for efficient transmission). The first implementation of the concept I did for a project a few years ago tried to keep the abstract representation as clean and simple as possible -- limiting it to what would amount to a recursive associative containers where values could be scalars, arrays or further associative containers, just like JSON does. The scheme actually worked quite well, with a modular design using wrapper classes to mediate access to various storage formats and utility ("service" in our vocabulary at the time) classes to perform common operations (such as copying from one format to the other). The simplicity of the intermediate structure made it easy to concentrate on information structure. It was nice, handy, relatively efficient... and a failure!
Why did it fail? Well, simply put: once you can generate XML, nobody wants to see automatically-generated XML. The original mapping from the intermediate structure to XML produced element-normal XML that, although perfectly valid, isn't exactly elegant or human-friendly. Not to worry, my intent at the time was to enhance the XML generation to be schema-directed. This was in the days prior to XML Schema (XSD) and things were in flux but still quite manageable (the Microsoft-sponsored "XML Data" schema format was simple and to the point although clearly limited). As soon as the XML Schema standard drafts appeared, I knew that we were in trouble: virtually nobody but those involved in XML Schema-related software can afford the time it takes to write a good XSD parser. The byzantine complexity of the schema representation put parsing it out of reach. The generated XML remained element-normal and everybody continued hating it... Ultimately, the next generation of object storage wrappers became DOM wrappers, everybody started worrying about whether data were elements or attributes and the simplicity of the abstract representation was lost.
So, JSON -- whether the format itself is good or not -- brings back to the fore the notion that, yes, a storage format can have a simple information model. It's OK to just be an abstract structure without all the decoration that has made XML an awfully complicated choice when all you want to do is persist objects. To be fair, the pressure to use XML vs. any other wire format became impossible to resist over time, so I doubt that JSON would have been a viable candidate for long back in the time frame of my story above: XML was fast becoming the thing that you had to have -- and no substitute would be tolerated. It is taking us a dog's lifetime to realize that maybe this extra complexity isn't necessary after all.
Posted by cwirving at 10:23 PM
December 11, 2006
Simplicity does matter
Joel Spolsky's recent blog post on simplicity in software really hit a nerve. Not in a good way, though.
I think that his argument is against low-functionality software more than simplicity itself. If I understand it correctly, I could summarize it as: "people buy based on features, get over it!" That's undoubtably true, but it is also probably the worst trait of consumers to optimize for: feature aggregation doesn't scale. At some point, you become a victim of your success and nothing short of "heroic" effort on your part will keep the product moving forward. That's fine if you have the resources and economic model of Microsoft, the colossal user base and revenue stream of Windows and Office pretty much allow them to throw infinite resources at the problem, but virtually no other software development organization has that luxury.
From the perspective of a software vendor that wants to keep growing over time, simplicity is something that you have to focus on as a matter of survival. Simplicity in code is the trait that keeps you able to refactor and evolve the code as the software lives on. Simplicity in the user interface is the trait that keeps users from being overwhelmed as the software becomes more feature-rich. Sometimes, to maintain simplicity in one trait or another, you have to avoid adding features -- something that is incredibly hard to do when you want to satisfy customers. Simplicity is also hard because it doesn't come naturally: even Apple, the paragon of "simple" that everybody points to work very hard at simplicity. It doesn't "just happen."
So, the notion that simplicity is a "nice-to-have" trait -- as Joel appears to imply -- unfortunately sets software developers up to fail in the long run. Sure, simplicity has to be balanced with commercial interests (if there isn't enough crap in the box, nobody will spend the money you want on it -- which, unless you want to do the starving Micro-ISV thing, is crucial), but it has to be a top-level objective at all times. As soon as you lose sight of the simplicity objective, you software sets one foot in the grave. That's fine if it's a one-off or the company is being built to be flipped (make it somebody else's problem -- they will have deeper pockets, right?) but, for a piece of software that is supposed to live a long and productive life, complexity is the cancer that will eat it alive, leaving nothing more than a zombie variant of its former self.
Too many of the pieces of software we deal with on a daily basis have become evolutionary dead-ends because the market rewards features above all else. They have become so complex and bloated that no sane amount of programmer effort can keep them moving ahead. We, as users, share a large part of the blame for this trend. The trio of developer-marketer-user has become a co-dependent relationship where all anybody cares about is the list of items on the side of the cereal box. It works -- just as fast food marketing works... It doesn't mean that it is good... Or good for us.
Posted by cwirving at 10:29 AM
November 5, 2006
Now, here is a business "opportunity" if there ever was one...
Seeing all the hoopla about the Automated Targeting System database being introduced by US Customs -- the database is shared with a rather large number of entities (including businesses, if they are lucky enough to be "a target of terrorist activity or conspiracy") yet for which citizens have no way to verify or correct inaccurate information, I have to wonder if this isn't the great (if ethically dubious) business opportunity: how long before an enterprising business finds a way to tap into this data for other forms of threat assesment or, better, how long before somebody finds a way to poison the database entries for their competition's employees?
Knowing that your competition's sales team gets the rubber glove treatment every time they enter the country -- for the next 40 years -- has to be priceless...
Posted by cwirving at 3:47 PM
October 17, 2006
Blog repairs
Well, I finally got around to fixing the formatting issues with the blog. Unfortunately, it took drastic events to get me to do it: the web server machine had a rather fatal problem (I haven't diagnosed it in detail, but it sounds like an IDE controller failure). So, I ended up copying the Movable Type database up to my Lunarpages web hosting account and installing MT up there instead. So far it works pretty well. I need to fix a few things, but I'm pretty happy with the result considering that it was a simple database dump copy...
Posted by cwirving at 10:58 AM
September 18, 2006
Is it just me?
...or does Microsoft's Zune look like it was styled by Fisher-Price? (caution: audio plays as soon as you visit) How come the kids at Apple manage to create iPods that look lustworthy and, yet, Redmond counters with this plasticky blob? I don't get it...
P.S.: Who told Fisher-Price that it was cool to have a loud flash animation on their home page? Boy am I glad I didn't look up that link at the office...
Posted by cwirving at 2:08 PM
September 13, 2006
As if traveling with a laptop didn't already suck...
See this post on Bruce Schneier's blog concerning laptop seizures when entering the Sudan...
If it becomes habitual for customs/immigration to start "borrowing" laptops when you enter countries, we are totally screwed. Not because of data theft -- drive/data encryption will take care of that -- but because you have to assume that they have rooted your machine by the time they give it back to you. I'm willing to assume that most governments won't install hardware key loggers on incoming machines (for cost reasons), but software? That's free... Other than the labor involved, it costs nothing to pull your hard drive, slap it into a machine that installs a rootkit and off you go: Everything you do after that is 0wned by the government of whatever sh*thole you are visiting... Nice.
Now what? We're going to start traveling with a decoy hard drive in our laptops? How long before this kind of insanity escalates to the point where we can't travel with any computing device for fear that it will be seized and tampered with?
Posted by cwirving at 9:44 AM
September 6, 2006
Error handling gone wrong
One thing I fight with on a daily basis is proper error handling in software: It is so easy to do the wrong thing, either by failing in inexplicable ways, ignoring errors (i.e., not failing but not doing the operation either) or overwhelming the user with a totally crap error message.
The latest piece of software to contribute to this hall of shame is ZoneAlarm's antivirus package: despite having an user interface that works when you're logged in as an unprivileged user, there is one thing you can't do: you can't enter a license code unless you are an administrator... That's fine, except that they clearly never thought of that error condition, so the error message displayed to the user is: "invalid license key." Isn't that special? Not only that, the first automated response from their help desk is to send you the (same) license key all over again. The only thing that must be saving them from a mob of annoyed users is that most people who would try to run as unprivileged users probably have the experience to guess what went wrong...
Posted by cwirving at 9:00 PM
August 26, 2006
Sorry for the inconvenience...
One of: Movable Type, Perl or MySQL has tripped over itself and fubared the formatting of blog entries. So, right now, I'm afraid that you'll have to suffer through run-in paragraphs and no visible dates until I get this fixed.Posted by cwirving at 9:43 AM
August 18, 2006
The many-core future
I see that there is quite the ongoing debate about many-core (i.e., >2 core) machines and how they are going to be a pain to develop for. I tend to agree with Eric sink (in the linked post) in that share-nothing is the approach that scales the easiest (witness his comment about Erlang) -- something that the web development community has learned quite successfully. It just isn't something that you see too much of in actual applications. I remember threading the living dailights out of the system management agent code I was writing ten years ago (not to mention that OS/2 -- which I tinkered with quite a bit before that was the land of the multithreaded UI), but my experience since then has been that developers just can't be bothered -- they need a swift kick in the nuts to remember that concurrency matters. The upcoming many-core wave is hopefully such a thing. But, going back to Jeff Atwood's premise that quad-core and beyond doesn't matter, I have to say that for the way I work today, I can use all the cores I can get! My main development box is a dual-Xeon (with HT turned on) and I'm running an average of 3 VMWare virtual machines at all times -- one of which is set as being virtual dual-processor. I may not be making full use (whatever that means) of all the virtual processors, but I'm certainly spreading the load out across them. My next machine at home is going to be a VMWare Server box and I'm holding out for as many cores as I can get. For a lot of workloads, I don't need the fastest single-threaded performance -- if I can get solid virtual 2P performance in the handful of VM's I'm likely to run on the machine, I'll be thrilled!Posted by cwirving at 8:44 AM
August 14, 2006
The changing economics of photog^H^H^H^H^H^Hsoftware
This post on the Srobist blog captures the challenges that the photography profession faces in a modern world where mass amateurization is becoming the norm. I was going to draw parallels with the software world, but that may be entirely redundant: photography is software. It still is an intangible product that takes skill and (decreasingly) expensive tools to produce the first time and zero skill or tools to mass reproduce. The economics are basically the same and we're seeing the same effects as the cost of tools plummet... Mostly for the good of the consumer, but the challenge to each profession is nothing short of fundamental. I am not one to claim that mass amateurization is bad: far from it -- I take advantage of it every day. It is pretty much impossible to surf the 'net without benefitting from this process. However, it does present a huge problem for practicioners in the field: it is turning the economics into those of a glamour profession -- not so much because there are an infinity of people willing to do the job, but because the end result's value is not its manufacturing cost (printing a photograph or copying an executable file cost virtually nothing), the consumer has to deal with factors completely outside of the normal hard goods pricing equation... Something that people aren't good at. I guess this is why virtually all of the big-buck software startup buyouts these days are web-based: not only are they able to reach more customers faster, they are really selling a service -- not a product. The other knee-jerk solution to the devaluation of programming as a trade is to to turn programmers into commodities: consultants -- the assumption being that you tell them what you want and you pay just for the time it takes the (insert hygiene deficiency stereotype here) coder to make it for you... Of course, users rarely can formulate what they want (let alone what they need), so we compound the general impression of software because this produced crap. Add to this the conundrum that consumers are often terrible at judging the merits of what they buy, it makes for a pretty dismal picture: a fluid marketplace for mediocrity, the odd superstar and no reward for the good people (or the good code). Well, it isn't quite that bad -- yet. Still, one can't help but wonder if this isn't where we're going.Posted by cwirving at 10:10 AM
May 31, 2006
The nature of the open 'net
Clay Shirky's recent post about Wikipedia on Corante's Many2Many blog is a really insightful comment on the nature of openness on the Internet. Openness for sites like Wikipedia is a tool -- a really powerful tool -- that got them from absolutely nowhere to near-ubiquity in a handful of years. Yes, they are getting flak for changing their policies but I think that the most amazing thing part of this story is how open participation, even in the face of vandals, can enable something revolutionary as Wikipedia succeed. I know that user-generated content (say, in the forms of game addons -- think "the Sims" or "Creatures") predates the popularity explosion of sites like Wikipedia and, yes, the quality statistics seem pretty dismal, but this opennness has paid off pretty handsomely. The question is going to be how the balancing act between openness and quality control will evolve as the 'net constituency itself evolves. I'm all for vast amounts of crap is there is a way of identifying the jewels -- eliminating all participation on the basis of the crap (or sick, illegal, offensive, whatever) content would be a sad and mostly futile step backwards.Posted by cwirving at 4:21 PM
March 23, 2006
DSL update
Well, so far, the new DSL line is pretty good -- although not up to the advertised download bandwidth (I'm getting 2.3Mb/s vs. the 6Mb/s in the plan), I'm pleased to see that I'm getting an upload bandwidth that is far closer to the 768Kb/s advertised. I'm somewhat more interested in a good uplink than the typical "consumer." I guess that I'll have a word with Oplink and see what they say about this.Posted by cwirving at 9:59 PM
March 19, 2006
Changing broadband providers
After a few years of mixed experiences with Business Class RoadRunner (Warner Cable), I may be switching to a new broadband provider in the next few days. On one hand, the bussiness RR customer service has been pretty outstanding, on the other, we're having problems with our uplink that they are seemingly unable to diagnose -- so, I'm getting pretty tired of weeks on end where I can't keep the business class cable modem up for more than a handful of hours. They are diligent about sending somebody out immediately, but they are also completely existential in that they will only act upon a problem if they can observe it firsthand -- so, unless the technician that comes to my doorstep gets to see a problem with his own eyes (never mind what their log files tell them), it is no problem. Every cable between the pole and the modem has been replaced at least once, yet we're still getting bumped offline multiple times a day... So, I caved in and finally ordered a DSL line. There are very few ISPs that will actually service our area, so I was pretty thrilled to find that Oplink can -- and have high-speed packages with six static IPs for less than I pay RR for one... SBC will turn on the line tomorrow and the DSL service should be up pretty soon after that. We'll see if they are actually as fast as they claim to be and, more importantly, more reliable than our current connection. I'm sure that if I have anything go wrong with the line, it will be Hell (the phone company is involved, what do I expect?) but all the prompt RR service to date has only allowed me to be frustrated quicker at their inability to solve the problem -- I'm not sure I was any further ahead. We'll see.Posted by cwirving at 9:49 PM
February 12, 2006
BIND on Windows considered harmful
This past week was hellish on the home server front as our Internet connection went down pretty much as soon as I left for a business trip and it took quite a bit of massaging to get it back up. In the meantime, I got bitten again by BIND going haywire under Windows: the mail server (which runs under Windows) uses DNS pretty heavily for SPAM blacklists, so I had BIND on the server itself serving as a backup to the two Linux boxes that normally serve DNS... Well, something during this week long outage really sent BIND for a loop and made it take up vast amounts of CPU time, basically bringing the box to its knees. This happened once before with an older version but I had not seen this in so long, I thought it was cured. I guess I was wrong! So, I'm back to relying on the Linux boxes for DNS service and I think that as soon as the new server room is done, I might actually consolidate the mail and web servers under VMWare Server, and switch the mail server OS to Windows Server 2003. That should give me a reliable DNS server out of the bargain. I just can't make the OS switch undil I upgrade the server hardware (which itself has to wait for the fully air-conditioned server room) because I think that trying to run Server 2003 on an EPIA 800 is pretty futile.Posted by cwirving at 6:25 PM
January 23, 2006
Mobile Opportunity
Sometimes, you find the neatest gems on the 'net. One blog I've found to be particularly insightful of late is Michael Mace's Mobile Opportunity. Having rediscovered Palm devices after years of PocketPC adventures, I couldn't agree more with his list of mobile companies that get it. The attention to detail and usability that goes into an outstanding experience really do pay off -- sometimes it takes trying the other products (as I did with PocketPCs) to figure it out. Also, another recent favorite is his post about mobile carriers and other middlemen, which explains the problem better than I ever could.Posted by cwirving at 4:05 PM
Sharing the VMWare love...
Being a fan of VMWare Workstation, I'm really pleased that David Berlind at ZDNet is singing its praises with some scenarios he uses it for. I've found it very handy personally and absolutely essential for work, so I'm glad that bloggers with some readership get to talk it up. Of course, my wet dream is for VMWare to release a version of Workstation for x86 macs -- being able to switch without losing the ability to run Windows and Linux VMs would be just awesome. One can dream... :-)Posted by cwirving at 3:52 PM
January 4, 2006
Joel on Computer Science education
This little gem from Joel Spolsky on how the CS curriculum has been dumbed-down to the lowest common industrial denominator and how this manifests itself in part as the teaching of Java as the introductory programming language is quite interesting. It probably is more interesting for the conversation it has triggered amongst my friends and colleagues than Joel's point itself -- which you can agree or disagree with... There is something really timely about this call to rediscover the tools of "real" programming -- both at the dirty hands (low-level C programming) and the abstract (elaborate lisp constructs in the vein of what Paul Graham writes about)... I think that we're at a point in software technology where we know how we've become detached from the bare metal yet we also haven't (re)learned the higher-order techniques that make the "dead" languages of CS so powerful. We were so quick to bury them for their abstraction and lack of bit-twiddling performance, but they are probably more appropriate than ever -- especially if they give us the tools to attack hard problems. Everybody has a different definition of "hard" problem (see Tim Bray's take on this where he argues that concurrency is the hard problem of the moment), but I think that the thing that makes this article so interesting is that we all know that we're looking for leverage to solve them.Posted by cwirving at 1:05 AM
January 2, 2006
R.I.P. the MM20
The screen on the Sharp MM20 ultralight laptop died a few weeks ago and Sharp confirmed last week that it is toast -- a $670+ repair! So, it seems that I'm back without a light laptop. Bummer.Posted by cwirving at 10:45 PM
November 24, 2005
The silly things you can do with Bluetooth
Posted by cwirving at 12:05 AM
November 23, 2005
Treo update
I have to say that I am really enjoying the new Treo 650. I'm slowly getting back used to PalmOS (I used to have PalmOS handhelds before flirting with PocketPCs) and I am beginning to appreciate how they have done an amazing job of the user interface, especially when using it one-handed. Paula's previous handheld was a Tungsten T, so she's big into Bluetooth-enabled applications... We ended up playing Scrabble via Bluetooth while waiting for dinner. We also played with sending files back and forth... It's pretty interesting but we need to learn what is actually useful (like sending each other contacts). The GPRS connection is up and running, although it is a frustrating mix of abominable slowness in the web browser and spurts of speed when downloading larger content. I need to investigate alternative browsers and some form of compressing proxy (like Skweezer). One surprise hit is NewsGator's Mobile Edition: it is really quite usable on the Treo, even over GPRS. Obviously, the feeds that are PDA-unfriendly (like the Register and the Inquirer -- both link-only feeds) are hopeless, but most feeds are meaningful on the small screen. My next task is to figure out a good IMAP-over-SSL email client that will work well over GPRS...Posted by cwirving at 11:53 PM
November 22, 2005
Treos in the house!
Well, I was supposed to describe the pros and cons of the three candidate smartphone devices I was considering, but we ended up getting a pair of Treo 650s based on a pretty simple reason: Paula was going to get a Treo come what may, so it made no sense for me to get something different. Well, they came in today and I've had the opportunity to play with them a little bit. So far, I can say that (a) the screen is amazing, (b) I'm still struggling to unlearn PocketPC habits, (c) the Palm Desktop software clearly wasn't designed for PCs with multiple users, (d) file and document management on the Palm is -- uh -- special... There is no doubt that the hardware is awesomely slick and that the out-of-the-box software is really well designed to work with or without a stylus. I can't tell how well it works for wireless data just yet, though: T-Mobile say it takes 2 to 48 hours to provision the data service and so far I haven't been able to connect. Hopefully, it is just a matter of being patient. I have yet to embark on finding/installing useful software on the Treo, but that is the next step.Posted by cwirving at 10:54 PM
November 21, 2005
Oh, yeah, the NSLU2 is really toast...
Despite what I said in my earlier post, I couldn't resist connecting to the NSLU2 via telnet while redboot was running and clearing the settings in flash. Despite the drastic tone of the instructions, it is really easy to do -- even from a Windows machine and across a switch. Mind you, it didn't make the NSLU2 work any better, but now I can clearly say that I tried everything. Bummer. I guess it is going back to buy.com.Posted by cwirving at 11:27 PM
Solaris 10
After reading all the good things about ZFS in Solaris 10, I decided to download and install it under VMWare. So far it works -- although I haven't gotten around to tinkering with ZFS yet. I guess that my main observation to date is that it is a bit of a shock going from GNU/Linux to Solaris: pretty much every command is subtly different, the key mappings are as still resolutely anti-PC keyboard (just like the last time I touched a Sun box 10 years ago) and the GUI options are close to "pick your decade:" CDE (Motif) or JDS (Gnome). CDE under VMWare makes me think of the days when I had a Sun 3 on my desk, but with a graphical login. Anyway, I'm not sure how they plan to attract people to Solaris on a trial basis with the free version of Solaris x86 when the first reaction you have as either a Windows or GNU/Linux user is: "WTF?" I'll still play with ZFS, which does look like an amazing piece of code, but I'm certainly not about to go out of my way to actually build a test server with this thing.Posted by cwirving at 12:06 AM
November 20, 2005
When simple, well, isn't
In a fit of efficiency (and a 10% off buy.com coupon), I got a Linksys NSLU2 box last week, thinking that it would be a trivially easy way to add a network-accessible disk drive (physically remote: in the garage) for some daily server backups. Well, not so easy... As it turns out, the NSLU2 I got seemed to be bricked: it would start booting Linux (you can tell because the light pattern changes) and hang. The bootloader would run fine: you can remotely flash the firmware, but it just would not boot. So, either it has a really fubared configuration or there is a hardware problem. I'm guessing the latter since the out-of-box configuration should be clean. I theoretically could reset the configuration via the network, but that's a whole lot more work than I want to spend on an apparently DOA unit. So, the simple idea of "plug it in, slap it on the network" just didn't work out the way I planned.Posted by cwirving at 11:59 PM
October 14, 2005
Media Center Edition, eh?
I don't think that you need to look further than Rick's response to my remarks about DVRs to see how much of a damaged brand Media Center is. Let's start with the love:Actually Microsoft's Media Center is almost perfect. I love the idea of Media Center Extenders. I love the idea that I can download full resolution videos to my Tablet, Pocket PC, or a dedicated Portable Media Player.Then:
The new DRM coming down the pipeline really scares me.To be sure, the fact that Microsoft is making such an apparent effort to placate the content industry in Windows Vista is doing nothing to spur sales of their Media Center line. It certainly has scratched them from my list: I don't have a warm and fuzzy feeling that MCE will continue to let me do the (legal) things I enjoy with my DVR today. Sure it works today, but what is to protect us from a Tivo-like cave-in in the future, where at some corporation's whim the DVR ceases to record certain shows, goes delete-happy or decides that it must record a specific show whether you want to or not? Historically, Microsoft have been extremely consumer-friendly, but current trends are sapping that confidence. To be fair, most of the new DRM junk in Vista is related to HD playback -- it is just showing the thin edge of a wedge that none of us really can quantify. I find it deliciously ironic that the same content providers who have never felt like putting high-quality (read: lossless) downloadable audio product on the market suddenly feel that I'm going to be willing to sell my soul to watch crappy TV content in HD? So... that whole thing about treating me as a child who is unable to appreciate the merits of an audiophile recording is now replaced with a song and dance to tell me that superior video quality is a must-have? I appreciate their thoughtfulness. For what it's worth, I think that SnapStream and MythTV are still viable PC DVR options, although the latter is certainly not for the faint of heart.
Posted by cwirving at 12:35 AM
October 13, 2005
The great Smartphone quest...
Now that my PocketPC (a Toshiba e740 -- that I've never been particularly pleased with) has crapped out again, I'm back on my quest for a converged phone-PDA that I can use for light web surfing and email. The key requirements as far as I'm concerned are:- An useful QWERTY keyboard
- World GSM bands (900/1800/1900MHz)
- EDGE wireless data
- Bluetooth
- Availability of a password management application
- Sensibly-sized -- not a freakin' waffle iron-sized first generation PocketPC phone!
- Palm Treo 650
- HTC Wizard (a.k.a., QTek 9100, iMate K-Jam, etc.)
- Nokia 9300
Posted by cwirving at 10:36 AM
September 19, 2005
VMWare
After dealing with all the desktop computer woes, I was finally able to get my ducks in a row (which really means getting enough RAM and disk space) to install VMWare. I'd played with old versions of VMWare and liked them but never really found a need to buy it. Now, with things like Visual Studio 2005 coming out, I really need to be able to run extra machines without messing up the main desktop OS -- I'm tired of having to reinstall XP whenever something burps... So I installed VMWare 5.0 Workstation Saturday night. Well, it is more of the same, but better -- I still find it wonderful for its stated purpose and frustrating at times, but it is really useful if you need virtualization. As a test, I installed SUSE Linux 9.3 in a VM and played around with it (installing VMWare Tools in the VM so that it handled higher video resolutions properly was a pain in the behind, but that's in part because 9.3 wasn't officially supported yet). The only issue I see coming is going to be performance: the VM isn't exactly slow, but you definitely want to have a snappy system if you want to keep everything cruising along. Of course, with my impeccable timing, I managed to buy VMWare 5.0 just before 5.5 comes out (according to The Inquirer, at least). I'm sure there will be a free upgrade if it comes out soon, though.Posted by cwirving at 9:13 AM
Desktop computer woes
Last week was fraught with woes as my primary desktop machine cratered big time (as in: won't even turn the power supply on). Tested the power supply and the power switch, so it's something going on in the motherboard power circuitry -- which is a royal pain in the behind to get at because of the water cooling plumbing. So: I had to scramble to find a replacement that would hopefully be close enough that Windows XP doesn't have a fit. Luckily, the test machine I use for making hard disk backups uses a very close motherboard (a Gigabyte GA7DXE, as opposed to the GA7DXR that was in the desktop machine -- they are the same except for the lack of RAID controller and different onboard audio). Since the boot drive wasn't on the RAID controller, it was just a matter of drive swapping. So I was back in business pretty fast -- with a small bonus: I was able to combine the RAM from both machines, so now it has a full 1.5GB (which is going to be really nice with VMWare). The funny thing is that the test machine is air-cooled and probably lives up to what overclockers.com would call "high-end air" but it still is pretty quiet, even in comparison with the Koolance box since the latter had started having to work pretty hard to keep everything cool. Keeping fans spinning as slowly as possible for the thermal load is the trick. I don't think I'm going to bother with water cooling from now on. Moral of the story: be like your local IT department at work -- try to standardize on as few machine variations as possible. It's no fun when buying them, but it sure comes in handy when you have to fix them.Posted by cwirving at 8:55 AM
September 17, 2005
Trackback SPAM
Out of curiosity, I enabled trackbacks and comments on my last post, wondering how long it would take before filling up with crud. Well, after a week, it finally got hit with a pile of trackback SPAM (all porn) -- no comment SPAM, though. I guess that I shouldn't be surprised, although I kinda expected it to come sooner. Oh, well, off go the trackbacks...Posted by cwirving at 4:50 PM
September 9, 2005
Music players as a platform
I just noticed this post by John Welch (via Scoble) that argues that Apple's friendliness towards hardware developers is a key to the iPod's success. On one hand, yes, they have a product line that is very coherent and well supported for hardware developers, but their success is probably more related to their being a de-facto monoculture: no other player matters as much in the marketplace, so everybody flocks to "the" player -- just as everybody wants to develop software for Windows. I have to admit that I have an iPod and think it is a very nice player, but if it weren't for the social phenomenon around the iPod, I don't think that it would matter. Well, that's nice but what I really want now is for somebody to actually open up the software platform of their player: tinkering with an iPod nano at the Apple store yesterday, I realized that if I could develop one application (password management) for the player, I could do without a PDA... But, of course, that's not happening with an Apple product. Of course, somebody could come along with the perfect feature mix in their player (e.g., a biometrically locked player with password management included as a bonus app), but the truth is that the execution matters -- and that's where pretty much all of the players fall woefully short. My third-generation iPod has some annoying bugs -- but some players, like Rick's Archos GMini, are practically one giant bug in a box! So, unless the manufacturers are ready to bring themselves up to Apple's level to compete for the big chunk of the consumer pie (which Rio's recent demise shows is no small task), they had better work on find a profitable niche. One such niche is to be open: admit that users can actually come up with good ideas for the product and make it possible for them to implement them. Just like blogging didn't come about by some corporation's grand master plan, the next big thing for portable music players could easily come from amateurs.Posted by cwirving at 10:58 AM | Comments (0)
September 6, 2005
Developer-friendly platforms still rule
Out of idle interest, I keep a search channel on Newsgator Online to find Nokia 770 related blog postings. One entry by Russell Beattie that popped up today caught my eye. He argues that the future for mobile devices is Linux-based. I'm not entirely sure that I agree with that conclusion but I certainly agree with the reasoning. Even in todays increasingly locked-down computing world, developer-friendly platforms still bubble to the top. Microsoft has understood this from the beginning and I think that it has contributed to their success as much as any of their business moves (whether their sometimes-questionable behavior in the PC business or undercutting their rivals in the embedded OS space). It is quite interesting to to see that this is still true: I fear that the obsession with control on the part of carriers looking to extract the last penny from their subscribers (in the mobile space) and the IT organizations that need to lock down every device in the organization (in the desktop space) is a driver that may distract decision-makers from the basic question for any computing device: "is anybody going to write software for this thing?" As the basic needs of the many are pretty much covered, it is easy to assume that there is no loss to making it impossible[*] to add software to users' devices. I think that's wrong on many levels -- and Russell's post is a good evidence to support my theory. [*]: As far as I'm concerned, if you must go through a mobile carrier or central corporate IT organization to add software to your computing device, be it a PC, laptop, handheld or phone device, it is practically impossible.Posted by cwirving at 10:20 AM
August 25, 2005
The Law of Computer Entropy
Roger Sperberg talks about the downward price spiral of code -- although from a general electronic content viewpoint. He labels it the Law of Computer Entropy. This is a phenomenon we see every day and sometimes marvel at how companies try to buck the trend (either successfully, like Microsoft is able to maintain the same price for Windows between versions or unsuccessfully like the educational software he mentions in the article). Thinking about this does force you to question what exactly our customers are paying for when they buy software and how the value is perceived. Inveterate thieves apart, I think that most people are willing to pay for goods and services as long as the payment is aligned with the value they derive from it. In the case of software, it appears that people perceive value very differently based on age: just like people assume that old movies on DVD at Wal-Mart should be cheaper than the latest releases (even though the hunk of plastic you are buying costs the same to make), new or newly-updated computer software is more valuable -- we're practically being paid for the service of keeping it "fresh." That's a model that is quite interesting, although I feel that it doesn't do a good job of describing the rewards of original innovation. It's pretty clear that the biggest increment of value (both for the user and seller) is the initial innovation (see how Paul Graham concentrates on startups for good reason) but once you get past that initial burst, this "law of computer entropy" describes things pretty well... Thanks to Tim Bray for the link.Posted by cwirving at 4:40 PM
August 16, 2005
Spellbound
I don't know how I forgot to pursue this when I first heard of it, but I just installed Spellbound (a nifty spell-checker for Firefox) and I'm kicking myself! Why didn't I get this earlier? It would have saved me the embarrassment of some of pretty pathetic typos on the pages of this blog, that's for sure...Posted by cwirving at 10:13 AM
August 10, 2005
Well, at least they are being honest about it...
Fox Entertainment told ExtremeTech that their choice of Blu-Ray over HD-DVD was based first and foremost on their DRM schemes:"We made no secret when we approached both formats that we'd make a decision primarily on content protection," said Andrew Setos, president of engineering for the Fox Entertainment GroupThe question I have is whether they really think that consumers will spend all the money necessary to watch HD content and jump through all these hoops that limit what they can do (which ties into the cost issue, since we're talking a HDCP-capable TV, too) when it is currently proving pretty darned difficult to get them off plain old analog 480i. It seems to me that the content and technology providers run the rather considerable risk of hitting a consumer apathy brick wall: maybe Joe Sixpack will stick with his cheap 480p EDTV and DVD player and not worry about who can revoke his player or TV's HDCP keys. It would be a shame to see a whole technology generation go practically unused because publishers want control that is both total and perpetual. That's a big grab: not only are the usage rights no longer governed by law (i.e., the technology says "you shall not copy" as opposed to the law saying whether you can or not), there is no time limit to those limitations (which is both a factor in law and also in the real marketplace: it is only once technology has matured that copying becomes a practical possibility for general consumers). I'm not going to opine on whether this control is good or bad -- hey, it's their IP: they can do whatever they want with it -- but I do question whether it will actually fly in the marketplace. (Link from Good Morning Silicon Valley) Update 2005-08-13: Peter Rojas at Engadget talks about the same interview and comes to a similar conclusion.
Posted by cwirving at 2:16 PM
August 1, 2005
Killer app for a faster CPU: Windows Update?
Am I the only person that is seeing Windows Update peg the CPU on pretty much any machine for an awfully long time as it contemplates its navel... I mean, "looks for updates?" It used to be that you needed a faster CPU to compile faster or play games better. Now, you need it while Microsoft does a distributed balance sheet calculation or whatever Windows Update is actually up to for all that time.Posted by cwirving at 12:58 PM
July 31, 2005
Cable undone by a cable
The Internet access woes that have been driving me batty for the last few months may finally be over. The RoadRunner folks have been over a bunch of times and replaced the drop from the pole, all the connectors on the house cabling, replaced the router, checked the levels... and pretty much given up in disgust. I was beginning to get pretty annoyed and wondered if the problem lay upstream of the pole (or plain misconfigured routing), so I finally spent some quality time today looking at the traffic with Ethereal. As it turns out, routing was weird but in a harmless (and clearly normal for cable Internet) way. So, it had to be cabling. I experimented in the attic and patched the router into the main cable TV drop for the house rather than the dedicated router drop... And, finally, a good strong carrier! So, I guess that I'll be replacing all the in-attic cabling on the router drop real soon now. Moral of the story: even though the cable techs put great faith in their signal meters, they aren't the final word in cable fitness. Sometimes, the picky router at the end of the cable is the final authority.Posted by cwirving at 10:22 PM
Newsgator Online
Back on the subject of my quest for an RSS aggregator that inspires me, I had tried FeedDemon and nearly bought it... But it still wasn't quite what I was looking for. I was pretty sure at the time that it would have to be an aggregator that I ran locally -- surely web-based aggregators weren't up to it? Well, I have to admit that I was wrong: I tried the online version of NewsGator and really like it. It has its quirks (it likes to consider any update, such as comments, as "new") but the overall experience is very pleasant. The search-generated feeds are a nice bonus. I haven't tried the "premium" content yet, though. I guess that I might be more inclined to do so if I could tell what is available before subscribing. Maybe I like it in part because server-based aggregation seems like the sensible way to share the network and processing load. Anyway, that's my latest aggregator of choice. Let's see how long it stays at the top of the pile...Posted by cwirving at 10:17 PM
July 28, 2005
Windows Vista, eh?
When the CLR and .NET Framework came out, I felt renewed faith in Microsoft as a company: they demonstrated that they still had what it took to take bold innovative technology steps (OK, so it is inspired by Sun's work but it still is such a good execution). Now, when they come up with a gem like the name "Windows Vista," I can't help but think that maybe those bland grey suits are running the show after all. That name is about as exciting as being flogged with a wet kipper.Posted by cwirving at 11:11 PM
July 19, 2005
Brad Wardell on OS/2
Brad Wardell has republished his account of the history of OS/2 viewed from the perspective of an OS/2 ISV. It brought back memories of the early days of OS/2 2.x where there really wasn't anything out there to touch it. We were still developing DOS applications and nothing multitasked DOS like OS/2. It was awesome... The Workplace Shell also shone as a really interesting and powerful desktop environment -- although some of the directions they went with it (like the short-lived version of the IBM C++ compiler that used desktop folders as build system projects) just didn't fly, there was a lot of really slick technology in that desktop OS. Of course, IBM did their self-destruct thing and it all went away, but that was a time that I remember rather fondly. I don't think that it could have sustained a long successful run -- as Wardell says, it is a throwback to the old days of desktop operating systems written with vast tracts of architecture-specific assembly code and, practically speaking, no security model. Networking was also pretty hokey. I think that Windows NT would have supplanted it sooner or later. In my case I bailed when NT 3.51 came out (which was a painful step backward UI-wise), but they would have been hard-pressed to keep up -- especially with the portability needs of the time. Those were also the days of all these promising alternative processors: MIPS, Alpha and PowerPC were all vying for recognition (and a Windows NT build :-). I find it ironic that Wardell mentions OS/2 for PowerPC as one of the nails in the OS/2 coffin because I think that had IBM been less attached to OS/2 at the time -- and decided to commit to Windows NT -- they might have been able to go somewhere with their PReP PowerPC boxes... In a way, pride cost them the opportunity to be contenders in both hardware and software platforms. They couldn't have both but couldn't decide, either. Oh, well...Posted by cwirving at 11:04 PM
June 30, 2005
Hmm... The smell of new software in the morning...
In a fit of -- I don't know -- masochism?, I'm in the midst of a spurt of evaluating new software on my personal machines. The first thing I'm playing with is FeedDemon. Not that I'm unhappy with SharpReader but I'm trying to shake up my RSS reading habits, which have gotten pretty stale. I'm hoping that the somewhat different UI is going to make me read smarter. I guess that I have 20 days to find out... The second, and more interesting, thing I'm evaluating is the Outlook Connector for MDaemon. One problem that drives me nuts is how my contacts and calendar have gotten out of control on my multiple machines, so this is the solution to bring Exchange-like functionality to MDaemon (the mail server I use) while avoiding Exchange itself. I actually quite like MDaemon for its conventional message storage scheme and its tight integration with antivirus and antispam features, but it never was a groupware server. With the Outlook Connector, add-on, you get the basic groupware features (sharing stuff -- like folders, contacts, calendars, etc.) in Outlook without having to give the other stuff up (and it still runs on an EPIA 800 box with just XP Pro :-). So far, I'm having little niggles (PocketPC ActiveSync freaked out after the upgrade, all the contacts/calendars I have access to are all shown in Outlook with the same name, stupid stuff like that...) but it works well. I did actually set up the client on the laptop while sitting in the office (which means a slow link with all communications over SSL -- both IMAP over SSL and SMTP over SSL -- redirected to oddball ports). It works pretty nicely and seems to be well behaved over slow connections. I played last night with sharing calendars and contacts with Paula and it seems to work OK. I think that the next step is to see if I can get it working to share larger documents (which we need to do with other HOPE volunteers) -- although I think that it may be a job for Groove's Virtual Office instead. I also have a few days (well, 30) to decide whether Outlook Connector is worth the annual subscription... As it stands now, I think so.Posted by cwirving at 10:08 AM
June 22, 2005
Giving OpenBSD a second chance
After my previous unsuccessful attempt at setting up a fairly complex firewall setup with OpenBSD, I decided to try doing it with Linux iptables instead... Well, that never even got off the ground: even using a GUI like fwbuilder is a lot more tedious than writing pf rule sets by hand, so I never worked up the courage (masochism?) to go beyond a few simple tests. So, I slapped OpenBSD 3.7 back on the machine and as soon as this book comes in, I'll give it another whirl and -- hopefully -- find out what I did wrong last time...Posted by cwirving at 3:50 PM
June 1, 2005
Skype... It finally makes sense
I've always been pretty skeptical of the Skype VoIP service and especially so because of their disregard for standards. Still, here I am in Calgary, with my laptop, broadband available both at the office and at the hotel, needing to call the US and Belgium on a daily basis... Hmmm, it all makes sense now! The 1.7 Euro cents a minute Skype charges for North America and Europe seem pretty attractive after all.Posted by cwirving at 8:38 AM
LodgeNet fun and games
The hotel I'm staying in here in Calgary has a LodgeNet system for guest entertainment. Unfortunately, the newly-renovated room I'm in has a TV that is not equipped with the LodgeNet client box -- which made for a rather interesting evening: from what I can tell, the way the system works is by allocating ten cable TV channels for movies people have bought and another ten for the client box UI. The clients obviously hide these channels from the TV. So, the client boxes are the thinnest clients possible: they just relay keystrokes and switch to one of the hidden channels showing a server-generated UI for the interactive parts of the session and flip to one of the movie channels post-purchase. Of course, this system relies on the fact that the hidden channels remain hidden. So, the TV in my room (and those in all similar remodeled rooms, I assume) didn't have the ability to order movies, but it had the ability to watch any movie somebody else in the hotel ordered. It also had the ability to view the interactive sessions of users browsing for movies or using the LodgeNet system's web browser to check their email. In the short period of time I had the TV on, there were two movies ordered (one normal movie and one adult movie) and one email session active, so this isn't just theory -- the system's activity was there for any guest on the floor to see! Needless to say, I'll be having a little chat with the manager when I get back to the hotel during business hours. All they need to do to prevent this is to use parental controls on the TV to lock out the LodgeNet channels. For all I'm entertained by it -- this is really not something they want to leave as is: all it would take is for guests with children to discover that there was a porno movie playing on their TV for the management to have a PR fiasco on their hands.Posted by cwirving at 8:00 AM
May 31, 2005
The MM20 rules the air
I'm typing these last few blog entries on my Sharp MM20, and I have to admit that its diminutive size makes me a whole lot more inclined to pull it out in flight. Small is good.Posted by cwirving at 5:56 PM
May 27, 2005
More Nokia 770
I mentioned the Nokia 770 a few days ago but I didn't expect it to appear quite so quickly in Nokia's public web. According to this page, it is now official. The Inquirer confirms the $349 announced price. [via Miguel de Icaza] Update: Fellow SlimServer users are excited. PC Magazine are already dissing it. MobileBurn has hands-on pictures.Posted by cwirving at 2:06 AM
May 26, 2005
Dialup sucks... but not as bad as I expected
I'm now on dialup for a few days while I'm in Belgium and I have to admit that it is pretty darned slow -- but not as bad as I expected. I chalk a lot of that up to savvy web designers that set up their pages to renger well even if the images take 20 seconds to fill in. I certainly don't want to hit any high-graphics sites now!Posted by cwirving at 9:36 AM
May 25, 2005
If the price is for real, this could be really nice!
If this story is to be believed, Nokia is working on a $350 handheld Internet appliance. At that price, it could be a really handy thing to have around the house. I want one! [via Gizmodo]Posted by cwirving at 2:31 PM
May 23, 2005
No wonder everybody wants to be a C# programmer
I had a rather enlightening experience at work today when I was called by the manager of another team to help them with some .NET COM interop issues they were having. As it turns out, they are also going down the road to a hybrid managed/unmanaged application design -- so I guess that we'd been the guinea pigs, so to speak... Well, the funny thing was that the problem impeding their prototyping progress was actually a misunderstanding of C++ ATL code. I'm no Don Box, but I suspect that this is an excellent illustration of why so many of my colleagues want to ditch C++ and start work on managed (C#) .NET applications: the complexity and attention to detail requirements of C++ development have to be daunting to people who just want to get on with building an application -- a solution to a problem.Posted by cwirving at 1:43 PM
April 20, 2005
New handheld thoughts
Like Rick, I used to use a Toshiba e740 PocketPC (we bought them during the same end-of-model sale). However, mine has died an early death so I have had to think about what I want to replace it with. Clearly, I don't use the same application mix on my PocketPC as Rick does, so I don't think that I'm going to go the same way as he did (a PocketPC-based smartphone). Actually, if I were to pick a smartphone, it would most probably be a Treo 650. However, the two reasons why I struggle with the idea of switching to a Palm device is that I'd have to export my password wallet (in FlexWallet) to a new format and that there are some interesting PocketPC applications that I want to try (like TelCanto -- a handheld thick client for SlimServer). I think that the Treo experience would be quite different -- more phone, less PDA. Of course, TelCanto would rely on WiFi -- which sucked on the e740 (both because the hardware wasn't particularly good and because PocketPC 2002's networking stack is pathetic). I'm not thrilled to try the whole PocketPC networking thing again. Decisions... Decisions...Posted by cwirving at 8:53 AM
April 4, 2005
Internet connection woes
Our internet connection is a "Business Class" RoadRunner account -- we've been with them long enough that we had one of the Cisco uBR900 series routers that they rolled out early on. It had always been a little flakey and sensitive to signal levels but this past Friday it just gave up completely. Time to see how well the Business Class customer service works... Well, I think it was as good as I could have expected but it still took me a day and a half to get back up: I reported the outage on Friday evening and got the first visit by a cable tech early on Saturday afternoon. Of course, the cable techs basically can't do anything beyond witness that there was a carrier on the cable and that the router couldn't lock, so up to the next level we go... Had I been in on Saturday evening, we might have been able to arrange a new router then but we were out... So, we got the new router bright and early on Sunday morning (a Zyxel Prestige 900) and, after a bit of testing (it took a while to get it to lock on the carrier), we were back up and running. One frustrating aspect of dealing with the Warner Cable / RoadRunner technician is that despite their efforts to actually come close to their scheduled times, their visits are pretty unpredictable -- and, unlike other vendors with unpredictable schedules, they will not call you when they are on their way (so that you can meet them). So, you end up having to hang around like a spare part waiting for a tech that is hours late. Other than that, I have to say that I'm pretty happy to have a replacement router on a Sunday -- the 1.5 day turnaround time is probably as good as I could reasonably expect, especially over a weekend. Now, the only thing I have to decide is whether to get another Internet connection (e.g., a DSL line) as backup. That's a tricky question... I can't say that HOPE email is completely mission-critical but the outage did hamstring us just before an adoption weekend. Luckily, I only host the mail server for them while volunteers use other servers for group collaboration (e.g., Yahoo Groups). If I were to take on more services, I could be in trouble.Posted by cwirving at 2:54 PM
January 12, 2005
More on design
As a followup to my past entry on design simplicity, I came accross a speech by GM's Bob Lutz on (automobile) design. I can't argue about his passion for the product and his understanding of design, at least from the stylistic point of view, but I'm not sure that he really understands design in the sense that Paul Graham means -- that you care about the design from the overview to the tiniest detail. The relentless pursuit of clean design by the likes of Steve Jobs at Apple and the relentless pursuit of quality by Japanese automakers take dimensions beyond the design philosophy espoused by Lutz. Of course, actually caring about the product in the first place is a tremendous first step in the context of a painfully out-of-shape behemoth like GM. There just is dangerous opportunity to confuse style and substance -- which is where the software world is even harder: the penalty for lack of attention to detail is far greater (usually in the form of crashes or unusable software) and you usually can't fall back on great superficial impressions to save your day. Some cars sell themselves on the basis of their good looks, however unreliable or flawed in other ways but very little software can do that. The coherence of the package (design, functionality and quality) matter more. Increasingly so: long gone are the days where heaping features on software was the golden road to success. It's hard, though: Rick showed me his new Archos GMini XS200 portable music player and I was shocked how the initially slick design degraded as you dug into it: the user interface rapidly became confusing and inconsistent. It probably does everything it is supposed to, it certainly looks cool... But the depth of design execution just isn't there -- and that is from a company that has been in this marketplace for years. It does put the achievement of the iPod in perspective. It isn't stellar -- you don't exclaim "Oh, my gosh!" when you fire it up -- but it is coherent, (mostly) intuitive and just works. Actually "It Just Works" is probably the highest compliment you can give something internally so complex.Posted by cwirving at 12:36 PM
December 14, 2004
Simple, not messy!
Adam Bosworth has a piece on the KISS Principle in software where he points out the success of simplicity (even if it is messy, as in HTML) over complex (potentially well-engineered) competition. He draws parallels to nature, where messy simple things thrive. I think he has a remarkably astute point -- in many ways. For starters, because we're not as smart as we think: complex solutions are often just that -- complicated -- without necessarily being better. But, I also think that the underlying truth is that nature is the ultimate incrementalist. Take Rands' discussion of incrementalists vs. completionists in the software world, then take a look at nature... The natural world is a system of entities that are only as complex as they need to be and (on a large scale) evolve by tiny incremental steps. The business world is, by and large, also incrementalist. The risk of failure overrides the benefits of brilliant but complex solutions. Nobody wants to be "Brilliant, but cancelled" -- "Simple, but on the air" will do just fine. Simplicity wins for all these reasons in some combination: it is fast, it is good enough and it is less likely to fail. Now, all I want is for simple to be beautiful: all too often, the winning simple solution has also got the technological equivalent of a plumber's hairy butt crack. Not because it had to, but because whoever created it didn't bother to tie up even the most glaring of loose ends. Paul Graham may rightly argue that speed has been more important than design or quality in the software world, but he does eventually concede that the true winners are those that can combine simplicity with design quality -- like the Apple iPod, which is so deceptively simple that any geek can't help wonder why nobody else has been able to replicate it? Sure, there is marketing at play, but the quality of design and single-minded attention to detail combined with simplicity is a really powerful combination. I wish that we had more of that.Posted by cwirving at 2:46 PM
December 9, 2004
VB, the language of inconsistency
So, Rick, a former VB programmer, is having trouble with keeping his curly braces straight in C#. How ironic that I'm doing a stint spelunking through a VB 6 application and having the opposite experience: I find VB to be the language where inconsistency is the norm. Given any control, you can't predict what its properties will be called. Given any construct, there has to be a major exception to the general rule (e.g., properties have "get" and "let" methods, except object-valued properties that have "set" methods of course). The variable declaration syntax is a trove of nifty shortcuts with extra bonus default assumptions on the part of the compiler that are guaranteed to add joyous moments of debugger-induced enlightenment. I could go on and on... Add to that an IDE that is unreliable and capricious whenever you exceed its complexity comfort zone (one form with a "hello world" static control), and you have... The most popular programming environment on the planet? The world is one screwed up place.Posted by cwirving at 10:28 PM
November 25, 2004
pf: Well, that didn't work right...
I spent some time yesterday setting up packet filtering rules for the new firewall box at home (running OpenBSD) and I have to say that, although the pf syntax is very nice in comparison to iptables, there is something a little weird about the way it evaluates rules. No, it isn't the last-rule-wins behaviour that caught me out but rather a combination of some vague areas in the pf documentation (e.g., exactly when in the packet lifecycle are these rules evaluated?) and some rule matches that didn't make any sense given the documented evaluation order. Weird routing "speed bumps" would also crop up, so that's also a sign that I got something wrong. Of course, the really trivial scenarios work just fine -- it is when you put it all together in my relatively complex network gateway setup (on NAT'ed WAN with one DMZ that can only see the WAN and two LANs that can talk to each other the WAN and DMZ) that it gets ugly. Mind you, that's not really all that complex a scenario but it is more complex than the average example pf rule set handles -- limiting the options for comparison with something that is known-good. I'm not sure whether I simply should have studied more documentation (but which?) or whether pf as shipped with OpenBSD 3.6 is really that quirky. In the end, I just backed off the whole plan for the night and will retry with a Linux-based firewall instead. I'm not looking forward to managing iptables, though. I guess that I'll try out fwbuilder and see if that generates decent enough rule sets. Also, I will definitely miss OpenBSD's authpf scheme -- that would have been a really nice addition to further lock down the wireless LAN segment. Oh, well...Posted by cwirving at 8:19 PM
November 16, 2004
Winchester core Athlon 64s as the ultimate cool & quiet CPU?
Reading the power consumption charts in the Tom's Hardware review of the new Intel Pentium 4 model 570, I was surprised -- no, shocked! -- by the opposite end of the charts: the Winchester core Athlon 64 3000+ apparently consumes 11W at idle and 28W at full load (the P4 570 came in at 23/105). That's a pretty impressive thermal profile for what is still a plenty fast CPU. Although this is obviously a whole lot more power than the VIA C3 consumes (nominally under 10W at full load), we're also talking about a whole lot more processing power. Well, that's assuming that Tom's gang didn't have a measurement slip-up, of course. Given my ongoing battle with the heat/power requirements of my server closet at home, I can definitely see the value in this processing vs. thermal performance tradeoff. I'm sure that all the people out there building quiet machines are also quite excited: a 30W CPU is definitely within the practical boundaries of quiet air cooling. Definitely a very interesting development.Posted by cwirving at 3:07 PM
Somebody unplugged my hotplug!
My time administering the servers at home got off to a rocky start this morning as I found out the hard way that every so often the fine folks at Gentoo Linux will release a package update that has unintended consequences or needs more update steps than just doing a world update. Today, I found out that the latest version of their hotplug scripts no longer handles coldplugging. Ouch! The upshot was that the first machine I updated couldn't find its SATA disks -- which was cause for a mild panic until I hit the support forums and found out what they had done. After that, the fix was easy. Darn. I know that there apparently were warnings to this effect during the update but the last thing I need it to spend more time watching it recompile crap for an hour just in case it spews a fleeting important message. Now, I still am a fan of the Gentoo Linux distribution, but sometimes the speed bumps are a little scary!Posted by cwirving at 2:28 PM
November 2, 2004
NetBeans?
Seeing a recent Slashdot post on the NetBeans Java IDE, I thought that I'd download it and give it a try. Well, not on my laptop, I won't! I couldn't believe it: even after all these years, Swing applications are still as glacially slow as ever. No wonder Eclipse is the free Java IDE everybody thinks of first. I think that NetBeans stayed installed on the laptop about ten minuted before I went to download Eclipse... I have plenty of issues with Eclipse, mind you, but at least it has a relatively responsive UI. Now all I need is to find the magic "Eclipse for Windows developers who are used to Microsoft IDEs" documentation and I'll be in business. The only consolation about the latter is that I suspect that all the Java developer types who fire up Visual Studio .NET probably are saying the same thing I do when starting Eclipse (something along the lines of "WTF?").Posted by cwirving at 10:43 AM
October 28, 2004
Water cooling has its downsides
The water-cooled desktop machine at home started acting up recently and it got to the point where it just couldn't keep everything cool. After an initial examination, it appeared that the original dual tiny pumps in the Koolance case had failed. Well, I wish that had been all of the story. After the initial look, I got an Eheim 1048 pump from Directron here in town. Since I have a PC2-C case with the obsolete "big" internal reservoir, getting a direct replacement wasn't the obvious option, although they do sell a simple adapter to fit the newer reservoir in the old case. Instead, I went with a updated variant of the pump replacement described on overclockers.com (theirs was for a truly ancient version of the PC2-C): I gutted the reservoir by taking the pumps out, tapped a new hole on the side for a 3/8" hose to the Eheim pump, slapped the new pump in there and... Well, not quite success. Initially, this worked quite well, but it soon enough also failed to keep the temperature in check. After more investigation and disassembly, I found out that the radiator was pretty much completely plugged up with a white sediment that must have come from corrosion of the aluminium parts in the system. No wonder it wasn't working! After a ten hour dip in a mild acid bath and some backflushing, the rad was fised and ready to go. The other thing I discovered is that the Eheim pump is very sensitive to air in the system -- it seems to lock itself up at the slightest provocation, so the miniature Koolance reservoir presented a bit of a problem because you have to invert the case to fill it, which usually puts a nice big air bubble in the pump (the lowest point in the system). I finally fixed that by filling the reservoir normally then topping the system up by filling from a radiator hose. Altogether a pain, but that's what you get for such a quick hack, I suppose. On the other hand, the performance with the new Eheim pump and a cleaned out rad is pretty spectacular. I'm quite impressed with the cooling you can get out of such a seemingly weenie setup (the Koolance system is a low-flow 1/4" loop). I have to admit that the whole water-cooling thing is a pain in the rear at times, but I still think that it is the best compromise between cooling and noise (especially now with the Eheim pump: it is virtually silent, the only noise are the slow fans on the radiator).Posted by cwirving at 1:27 PM
October 21, 2004
Mass Amateurization and the Next Big Thing
Reading Nick Gall's blog entry on Mass Amateurization struck me as particularly interesting because it has parallels with the usual question I'm asked all the time by lay people: what's the Next Big Thing? Well, I don't have an answer or I'd be doing it -- but, historically, the power of personal computing has been in its subversive ability to empower the individual to do things previously impossible, costly or out of reach in some other way. Yes, amateurization is a core element in the story so far and most probably at the core of whatever the next big thing turns out to be. Another historical trend that runs parallel to amateurization is the way the truly successful software inventions are those that bridge -- if only for a moment -- the gap between the power of the hardware with the ability of the software to exploit it. Many of the network-centric phenomena of the last few years (the world wide web, music sharing, etc.) could be seen as software creatively catching up with existing hardware capabilities, empowering people in the process. It's pretty clear that we're ready for another jump -- in days where only about two programs (games, at that) on the planet seem to justify buying Intel's or AMD's finest, we're got a pretty gaping usefulness void before us. Intel is has tried all along to spur some new thing along these lines (e.g., pushing multimedia as the reason to get faster hardware) but inspiration doesn't come on command. Boy, don't we know that... So, what am I saying in this rambling blurb? Well, just that user empowerment -- letting them exploit the capabilities they have access to (or can get at reasonable cost) to surprise us with their creativity -- is how we succeed in the software business. Satisfying the bare need as we see it today isn't enough -- it's also-ran material.Posted by cwirving at 9:38 PM
October 20, 2004
Security refresher
After taking a short refresher security course at work where we went over the current state of the basic hacker toolchain, I have to say that it is quite funny to observe how, even in the microcosm that they live in, the dynamics of software projects still exist. The fresh new tools make rapid progress, the older mature ones slow down to a maintenance level... Just like regular open source or commercial apps. Obviously, the basic tools we went over are just the tip of the iceberg (they have to be since they didn't really present any surprise to me since I last seriously looked), but it is cute to see that the same factors govern software evolution whether it is mundane widget accounting or something ostensibly cool like network probing tools. It did remind me to continue with the security plans at home. I've definitely got some work to do there before I'm satisfied.Posted by cwirving at 11:27 PM
October 14, 2004
lighttpd
Although I have been very satisfied with thttpd, I decided that I needed to upgrade to a web server that runs PHP better than as a straight CGI. After some searching (and really trying to find something lighter weight than Apache: the web server is a lowly EPIA 800), I found lighttpd. So far (static and Perl CGI content), it seems pretty nice. I haven't really pushed it yet -- I still need to build PHP with fastcgi enabled before I can try the PHP stuff.Posted by cwirving at 11:12 PM
Anapod Explorer
After tinkering with the iPod support in J. River Media Center, I decided that something simpler was in order to manage the synchronization of MP3 files in the iPod. Enter Anapod Explorer from Red Chair Software. So far I like it. It is pretty single-purpose (a shell extension for the iPod that manages synchronization and file transfer) but it does it well and a whole lot faster than iTunes. The only gotcha to date -- if you like to run as an unprivileged user -- is that it needs to be installed under the user account that it will be used under -- so it's time for that familiar give-yourself-admin-rights-install-drop-privileges dance. No big deal, but the outcome is pretty surprising if you simply do the install via a "Run As..." to Administrator (as I did the first time)...Posted by cwirving at 11:03 PM
October 11, 2004
Integration is nice, but...
I'm rebuilding the dektop machine at home that wouldn't upgrade to XP SP2 and decided that I'd install Office 2003 this time... Well, it's on order and I'm stuck because practically every application I need to install depends in some way on Office. Yeah, integration is really nice but you don't realize how much everybody depends on some of them until you have to do without. Mind you, the integration isn't so tight that you couldn't live without it, but I'd certainly get an earful from Paula about the inconvenience. Congratulations, Microsoft, on your 0wnership...Posted by cwirving at 10:52 AM
October 6, 2004
xPL
Digging through the SlimServer technical documentation, I came across the fact that they implement the xPL protocol... Hmm... That's an interesting little lightweight home automation protocol. I haven't had time to dig too deep, but the thing that I find attractive is that it looks simple enough to be implemented on microcontroller-based devices. We're not talking about parsing an XML DOM here. Yes, it is limiting in some ways, but simplicity brings power in ubiquity... I wonder what other devices implement it?Posted by cwirving at 9:41 PM
September 30, 2004
Releases? How quaint!
Halfway through Esther Derby's class at SD Best Practices, it occured to me how the vocabulary of the software development community is tainted by the assumption of developers as guns-for-hire: the view is that each job is freestanding and its completion (the software release) is the final milestone to, well, decrepitude. Comming from an ISV background, I don't buy into that. For an ISV, a release is just a point in time where certain quality criteria were met and is just a stepping stone to further work. Even in this conventional sense, releases don't have the finality that people like to give them. Today, as more and more organizations adopt Agile methods where quality is more or less a constant concern (and tested automatically), I'm not sure that releases have anywhere near the signficance of old. In fact, it is questionable why they are needed at all? One example (although not exactly a software development effort in the conventional sense -- and not an Agile one either) is the Gentoo GNU/Linux distribution. This is a continuous stream of updates that, following some form of review process, trickle down from the original projects, to masked (i.e., known unstable) packages, finally, to packages that are marked stable. There is no magic mass transition where they all are released together, it just happens in a steady flow. Granted, they have some hiccups but they actually illustrate the concept on a fairly large-scale basis. Web applications are to some extent already release-less: who knows when Google or Yahoo! upgrade their software? The user experience is pretty much seamless and nobody is any the wiser. This is often cited as one of the advantages of web and hosted applications without explicitly calling them versionless (which is still a hard concept to sell to users -- but, given an appropriate quality level, that's basically what it means). To date, the two counter-arguments -- or, at least, risky areas -- to release-less software delivery that I've heard are customer support and persistence. At first glance, customer support seems like a major problem. How to know how what the customer has, to reproduce it and provide support? Obviously, there is the configuration management challenge: the tools and procedures need to be up to the task of reproducting any iteration's deliverables. However, if you're going to go Agile, you'd darned better have that capability anyway! So, it seems to be more a question of knowing what to call the snapshot that the customer chooses to grab and run through acceptance tests than anything else... If anything, it provides a means of constructing a pricing scheme that reflects the effort the customer expects to go into the support they purchase: it would be conceivable to charge by the configuration -- the more configurations they choose get support for, the more it costs them. The idea being to make pricing as meaningful as possible (I'll digress on pricing in a later post) -- buffet pricing, although attractive to some is also somewhat counter-productive as it doesn't provide a real incentive to do what the customer needs (the vendor promises to do "everything" -- which is a code word for "as little as possible"). Persistence is another area where one could hit snags with a release-less scheme: if persistence schemes change willy-nilly, there is definitely going to be a problem. Treating version-incompatibility as a magic step function that will be dealt with on a release-by-release basis is a sign of a fairly unhealthy attitude, in my opinion. My personal bias is to employ a persistence scheme and rules surrounding it to minimize version incompatibilities (e.g., using XML with a policy to ignore what you don't understand and provide defaults for what is missing). Clearly, that's not always going to cut it, but it certainly is going to keep the breakage way down. Still, one needs a viable policy for breaking format changes... Dan Gackle suggested one such policy that makes tremendous sense: decouple the format conversion from the normal reader. Make it a service (in the SOA sense or just in the separatation of data and service sense) that is decoupled and only invoked on an as-needed basis. That allows the format upgraders (yes, plural: only having one converter would put you back in the same boat as having an universal reader) to live relatively independently from the reader, yet remain part of the same overall system. This solution appeals to me in many ways, not least because my experience with version-aware persistent data readers is that they tend to turn into brittle disaster areas. So, to recap, I'm still looking for a good reason why an Agile software development organization that has its quality act together has to abide by the traditional notion of release schedule.Posted by cwirving at 11:06 PM
September 27, 2004
SD Best Practices Day 3
Here is a quick roundup of the SD Best Practices sessions I attended on Thursday September 23rd)... David Astels -- FIT 40+ people. Described Ward Cunningham's FIT functional testing framework and illustrated its capabilities using Fitnesse -- the Wiki front-end to FIT. A nice quick walkthrough, although I think many people got hung up on the limitations of the three canned fixtures that are part of FIT. I'm not sure whether they came away with the optimistic ("man, think of what I could do with a FIT fixture!") attitude that Astels was aiming for. Depending on how easy it is to do fancy nested table parsing with FIT, it could really be a spectacular tool for devising higher-level tests. Now, since we don't do Java where I work, I'll have to shelve those thoughts for now but it was quite stimulating nonetheless. Robert Boller -- Harnessing Social Capital for Effective Distributed Team Collaboration 25+ people. I guess that there aren't that many people with distributed teams at the show. Well, actually, I think that most of the people attending the talk were looking for something to apply to their outsourcing situation. After an extended intro and a couple of exercises, we got down to a few guidelines on team building and communication planning in distributed teams. Interesting, but not earth-shattering. Ivar Jacobson -- Active Software (keynote) packed hall. Generally speaking, I think that the crux of his talk is that we're due for the "next big thing" in software -- that the benefit/cost ratio has reached a plateau for the current technologies -- and that what he calls Active Software is it. I'm not sure that I buy that (the latter -- the former, well, that might be true given our obsession with complexity). Active software is more or less the AI and expert system vision of fifteen to twenty years ago recast in today's technology in an agent-based form. An example of such a tool is the WayPointer tool that his company has been working on. I think that my biggest objection was that I think his predictions are out of sequence. Yes, we're eventually going to get to a point where common software is more proactive and helpful, but I think that we've got at least one technology to come before that really becomes a possibility. Let me put it this way: I think that addressing the problem that software has by and large become brittle crap is going to come before we see a revolution in its reasoning capabilities. Robert Martin - Agility and Craftsmanship, Stemming the Offshore Tide 100+ people. This mainly was a treatise on how lame methods (e.g., the waterfall process model) have driven software to the brink -- inspired by a previous talk by Craig Larman --, that outsourcing is a natural business reaction to the current problem that software is crap wherever you built it (so why not build it where it is cheaper?) and that taking up agile methods is a way to bring software development back under control. Overall, no surprise in the logic: I think that it is only with the recent demonstrable success of agile methods that it has become PC to say these things. Martin did have fun debunking some myths and showing our industry's bad habits (e.g., why do we feel compelled to generate "analysis," "design" and "programming" variants of every method? Isn't that division completely artificial?). One fun quote (on the subject of the OO notation wars): "UML broke the roadblock and promptly drove off a cliff..." Robert Martin -- Object Oriented Design Quality Metrics 75+ people. The presentation took a bit of a life of its own as Martin did a bit of a remix of the presentation he was planning to do with material from his Monday tutorial. It wasn't any less enjoyable for that but it did mean that there isn't really a slide set for the session. Oh, well. Nonetheless, if I were to critique the material, it would be on the basis of the macro-level metrics that, really, aren't all that unique to OO systems. They are still good, though. I suspect that, having made it through the OOP snake oil salesmen generation, Martin is well aware that much of the good ideas that came before didn't stop being good just because of the new buzzword du jour... So, the package-level metrics he presented aren't any worse for their applicability to old technologies, too. One thing that did strike me, though was how some things that seem completely common sense (and more or less enforced as an axiom by, say, .NET) are still painful for so many people. In particular, the notion that the dependencies between packages (i.e., assemblies in .NET parlance) should form a directed acyclic graph. I know that there is often no enforcement of that rule in, say Java or C++ but I can't remember ever having the desire to break that rule. It seems fairly obvious... Apparently not to everyone, though, because he spent a fair amount of time talking about it. I guess it goes back to the notion of craftsmanship he mentioned in the previous talk: an integral part to success in software development isn't just technique but also the ruthless refusal to put up with crap just because it is the easy way out. The approaches to avoid cyclical dependencies are pretty simple and by no means magic -- it is more a question of willingness to live up to a standard than actual technical difficulty.Posted by cwirving at 11:54 PM
September 25, 2004
SD Best Practices Day 2
Here is a quick roundup of the SD Best Practices sessions I attended on Wednesday September 22nd)... The day started with an Open Space planning session. I'm not sure whether it went was well as they expected but it certainly appeared to be a big doozie as far as I could tell. I thought of spicing it up by submitting an irreverent (yet relatively apropos) discussion subject but decided that discretion is the better part of valor. Esther Derby -- "Realizing the Benefits of Iterative Development" Mostly the usual iterative development story with an Agile influence. One thing that struck me in the context of iterative processes is that she did not come down particularly clearly on the subject of work increment prioritization. In fact, her initial wording on the subject could have been construed as favoring prioritize-by-value (always a business pleasin' choice :-) and when pressed on her preference versus prioritize-by-risk (the classic theoretical priority scheme), she mostly punted and said "use whatever works for you." Not exactly earth-shattering but I thought it was interesting nonetheless. Her argument for test-first was also interesting: developing tests is a means to understand the requirements that will soon be implemented. The statement, although it does kind of blur the lines between unit and functional testing, does make for a nice short rationale that does make sense even to non-technical people. I'll have to remember to use that. Oh, yeah: bigvisiblecharts.com seems like a rather useful reference... Eamon Kearns -- "Agile Development in the CMMI Trenches" 80+ people. I wasn't exactly expecting the viewpoint that Kearns represented: he's from a consulting shop so it was mostly from the point of view of parachuting code-slinging consultants that know the value of Agile into CMMI shops and the challenges that presents -- it wasn't so much about CMMI shops transforming themselves as it was about subverting them enough to get the job done. One cute throwaway line was that you know your project is in trouble when people start reading the CMMI-required documentation: if they read it is means that they are looking to verify compliance (which they don't care about while everything is hunky-dory). Another interesting observation about CMMI and process in general in the kind of large client organizations he deals with: process is insurance -- it is a premium you pay to ensure that none of your projects go catastrophically wrong. The objective is not so much improving the best-case or even average outcome as much as minimizing the worst-case risk. Well, now that he mentioned it… Michael Morris -- "Competition-Based Software Methodology" 25 to 30 people. This was definitely a highlight of the day. Not so much for the direct applicability of competition between developers in a normal workplace but, rather, for the insight into how topcoder.com has put a rather astute spin on the outsourcing game. And "game" it is: their coding competition is the hook that attracts new talent that they measure and track as it progresses through the ranks of the contest. Given enough measurement (and good enough measured values, of course), this gives them a population from which to draw work candidates for small well-defined work increments -- each of which is opened up to competitive implementation. The submitted implementations are judged and payment is disbursed between the winner and second place. On average, between two and five people submit for each job and winning takes and additional dimension because it drives the "player's" ranking -- which enables him to bid on more technically challenging/higher-paying jobs in the future… Quite fascinating. One aspect that is relatively unsurprising is that they have a conventional waterfall-style process. Nobody (yet) in the outsourcing game has been able to avoid a strong requirements gathering step in the process, although they do outsource both design and implementation.Posted by cwirving at 2:21 PM
SD Best Practices Day 1
Here is a quick roundup of the SD Best Practices sessions I attended on Tuesday September 21st)... Ellen Gottesdiener -- "Smart Starts: Sucessful Project Beginnings" 60+ people, about 70% team leads or project managers, some business folks, some developers. Ellen lives up to her reputation for being big into retrospectives and moderated talks. Some highlights: Chartering documents like the vision document and problem statements are less important than the actual thought process that went into creating them. Rhetorical question: "Why not reward project managers that kill bad projects early?" -- we don't… It isn't part of the job description, but you often know up front that a project will fail... Larry Constantine -- "Abstract Prototyping" 60+ people. An entertaining talk. Interesting middle ground between requirements and conventional UI prototypes. He presents the taxonomy that prototypes are either figurative (the conventional kind) and abstract (that hide most of the look & feel details that bog you down -- these are conceptual models of all the stuff that will go in the UI). Kent Beck -- "Extreme Programming" (keynote) packed hall I guess that the striking thing for me was that he was willing to strike quality improvement claims that are pretty wild by most standards. Not just the usual 10x fewer bugs that you see quoted elsewhere but he talked at length about an XP adopter that went from an 1800 bug backlog to a situation where they get a bug every six months. I'm skeptical, but... A cute side note was that the usual lifecycle of a team that adopts XP in a large organization is that they struggle but succeed to outperform their peers and that, often, their reward it to be let go because effortless-looking success doesn't map into the organization's reward system. Well, that is heart-warming isn't it? Michele Leroux Bustamante -- "Distributed Messaging: Choosing the Right Communication Model…" 80+ people -- mostly J2EE developers. Well, I guess that I was expecting something more theoretical or insightful -- it turned out to be more of a walkthrough of the (well known, I think) usual COM+ and .NET Enterprise Services suspects in an example scenario. Also, it reminded me of why I'm uncomfortable with the .NET ES stack: so much is now reduced to "it's f*ing magic" for the programmer: any clown can do this stuff without understanding what it is doing. On one hand, that's a great democratization of the development process but, on the other, it is really scary that so few people have any clue what they are doing in any depth. Herbert Thompson -- "The Seven Habits of Highly Insecure Software" 40+ people. Cute fact: an unpatched Windows box on hotel network: 14 seconds until it is infected with an LSASS exploit. The seven habits are more or less the usual suspects but you still have to remind yourself from time to time that everyone can do them. Actually, it is pretty darned easy to do them -- things like trusting the contents of your own registry values or files is such an easy trap to fall into. A good reminder. At the end, he digresses about the Diebold e-voting machines and the vulnerabilities described in the recent Wired article he was interviewed for (and some extra ones that didn't make it into print but are pretty catastrophic nonetheless). Pretty scary stuff.Posted by cwirving at 2:03 PM
September 19, 2004
Off to SD Best Practices
I'm off to Software Development Best Practices conference in Boston this week. We'll see how good the hotel Internet connection is... Darn. I should have gotten the extra capacity battery for the MM20.Posted by cwirving at 10:18 PM
September 15, 2004
Slipstreaming XP SP2
I feel like Monsieur Jourdain (the character in Moliere's Bourgeois Gentleman who exclaims that he has "been speaking prose all my life, and didn't even know it!"). I had always thought that slipstreaming a service pack into a Windows XP install would involve a great deal of response file tedium (a la OS/2 or NT 4.0 install customization), so I'd never actually looked into it. Boy did I feel silly when I saw the Tom's Hardware article on building a slipstreamed XP CD. That has to be as painless as it gets. Just as well, mind you, because I suspect that I'll be needing that XP install CD. My main desktop machine at home definitely doesn't like SP2, so I'll be spending some quality time to convince it otherwise...Posted by cwirving at 10:32 AM
September 6, 2004
You might be a software company if...
...you get complaints like these. I thought it was relatively funny to see this complaint on the Slim Devices discussion mailing list -- it is basically the standard complaint for anything software-driven. Everybody wants the latest thing -- but stability needs to be thrown in for free. Not that I entirely disagree with the sentiment, but that is definitely a self-inflicted wound on the part of us consumers: as a group, we're grazers -- we have no loyalty. All it takes is for somebody else to come up with a sexy competitor (even vaporware) and the fickle hordes rush away. Seeing the reaction to the (paper) launch of the competing Roku SoundBridge, the guys at Slim Devices suddenly were in a bind: no matter how good they made the SqueezeBox, if it didn't have a graphic display, they would be losing mindshare to the vaporous competition. To their credit, the SqueezeBox graphic display upgrade actually beat the SoundBridge to consumers' hands, but the software end is still a little rough. Mind you, given that Roku seem to have transformed the SoundBridge from a SliMP3 clone at the time of introduction into an iTunes add-on, I can't imagine that their software is in any better shape. That probably won't hurt their sales, though -- and that's the bottom line.Posted by cwirving at 1:03 PM
August 24, 2004
Canon PIXMA iP4000
After making a futile attempt to get colour prints from digital photographs of repair work on my parents' condo -- the Kodak kiosks at grocery stores are whole lot less convenient and more expensive than I thought -- I broke down and bought a colour inkjet printer. I have purposefully avoided inkjets for a long time: my experience with the fairly expensive Epson I had owned those years ago was less than stellar, so I've stuck with lasers ever since. Of course, photo printing on lasers isn't that good, so back to the inkjet camp here I am... This time, I went with a Canon Canon PIXMA iP4000 which I picked mainly because I really used to love my ancient BubbleJet 300 (one of the few tractor-feed inkjets around) and because it has the one feature I'm a sucker for: it has a duplexer. After printing off the pictured for my parents, I can say that I'm pretty impressed with what a plain CMYK inkjet can do in this day and age! The duplexer turns our to be pretty darned slow, but I suspect that there is a limit to how fast it can be and still let the ink dry on the back side of the page. It certainly isn't going to replace our main networked laser (a Brother HL-5170DN)any time soon. I will see if I can get it to run with a print server, though. That would be nice.Posted by cwirving at 10:33 PM
August 9, 2004
XP SP2 -- the best sales tool for TrueImage?
After two successive failed (although in different ways) installs of XP SP2 on my main desktop machine at home, I'm beginning to wonder if this is not the ultimate sales tool for hard disk imaging tools like TrueImage? I definitely used it to bring back my machine from the dead -- I don't want to ever go back to conventional backups for my boot partition! Other than the inconvenience of having to boot from a CD, rolling back to the pre-SP2 state with TrueImage was as painless as it gets (well, it doesn't like the iPod plugged in while you restore, but that's a minor detail).Posted by cwirving at 10:18 PM
July 29, 2004
It is a software-driven world...
I took Paula's MINI in for some warranty repairs and had them upgrade the engine management firmware to the latest version at the same time. The difference between the original (mid-2002 vintage) firmware and the latest was quite amazing -- at least for a stock engine management soft upgrade. The repsonsiveness to throttle opening (it is a fly-by-wire throttle) is quite improved and driveability is improved, too. It did get a couple of new small quirks from the upgrade (an off-throttle lurch relatively reminiscent of the early Bosch Motronic days and a weird, very infrequent, tendency to pick an abnormally low idle speed). Still, this does demonstrate how so much of today's cars value comes from software. Not only in terms of features (e.g., traction control) but also the ability to work around the mechanical quirks of a design. It is definitely a software-driven world.Posted by cwirving at 10:12 AM
July 19, 2004
Disc Jockey time!
This weekend was backup time for some junk on the file server -- about 45GB of data that really doesn't need to be online, yet I did want a copy somewhere. So, I copied it onto a stack of DVD+Rs. Some observations: caching the files from the network to the local disk of the workstation with the DVD burner would practically peg the 100Mbps network. I guess that is indirectly a good thing (the machines are fast enoough to do it) but I wouldn't have wanted to do anything else at the same time. So, there is a case for gigagbit Ethernet in the home after all... Also, burning a stack of 10 DVDs in a row makes one wish for a faster burner. In this case, my early-adopter NEC ND1000a 2.4x burner still chugs along just fine but the 20+ minute burns are really frustrating. I spent most of my time during the burns researching faster drives!Posted by cwirving at 9:55 AM
July 8, 2004
Running Firefox as unprivileged user on XP? Read this!
If you are any version of Mozilla products that are vulnerable to the shell protocol handler exploit and installed the shellblock.xpi extension while running as a normal user to fix it... Check it! You can tell if it is fixed by typing "shell:.mp3" in the address bar (if your MP3 player fires up, you're vulnerable). Apparently, the extension installer fails silently if you don't have rights to copy the file to the application preferences folder (e.g., if you installed it as Administrator but are now running as normal user). I ended up copying the fix file manually (the .xpi file is just a zip file, so take the "bug250180.js" file from the zip and copy it to the Firefox and Thunderbird "defaults\pref" directories). When you are done, restart your browser and go to http://www.mccanless.us/mozilla/mozilla_bugs.htm... If it looks like there are a bunch of links missing, you're all set (the evil href tags with "shell:" URIs are apparently stripped from the page when the protocol handler is disabled).Posted by cwirving at 8:22 PM
The PC still subversive as ever
After all this hoopla about the security risk of iPods in the enterprise, I have to wonder why it is so hard for people to admit that enterprises don't want PCs. They never have. I remember some customers in the old days that would break (or disconnect, if they were feeling generous and had time) the floppy drive of every PC before they hit any users desks... This is the same story with just another form of removable mass storage. So, my question is: if it is so darned important to them, why haven't they bit the bullet and only deploy terminals? Citrix is plenty good enough to run Excel and Solitaire, right? The question is mostly asked in jest, but it is a perfect illustration of the subversive nature of personal computing: even twenty-plus years after the IBM PC was introduced, it still is too productive to ban outright. :-)Posted by cwirving at 2:31 PM
Kodak 1, Joe User 0
Like everybody else who works in software for a living, I get family and friend requests to fix problems with computer-related stuff. Well, this one turned out to be a little interesting -- not the problem itself, but the reasoning behind it. The scenario goes like this: A uses Kodak EasyShare software to email B a bunch of pictures. B wants to save the files to disk but is stumped... The images are embedded into the HTML-formatted email and, although jpegs, don't have a file extension -- so, user B has absolutely no clue why trying to save the pictures always results in a bunch of files that aren't associated with any application (unless you call "WTF" an application). The user B in this case also has blissfully been using the "hide extensions for known file types" option in Explorer forever, so doesn't even really understand the concept of filename extension. You know where this is going... All I needed to do was rename the files and they were fine, but it made me wonder whether Kodak's image embedding approach was entirely accidental? Given that if your target audience needs to run a specialized application to figure out how to email pictures, isn't it just a tad optimistic to expect their buddies to know how to extract embedded images and save them correctly? There is a fine line between providing a service to the helpless and perpetuating their helplessness... On the other hand, maybe the folks at Kodak never even considered that? Yeah, right.Posted by cwirving at 1:53 PM
July 7, 2004
SBC gives us an excuse to try VoIP
SBC (our telephone company in Houston) seems to have messed up pretty badly in our neighborhood: we lost telephone service yesterday (there still is power on the lines, just no dialtone) and their service system declares that they have "cable problem" in the area which will be resolved in the next few days. I wonder how many people decided that they would just switch to a VoIP provider instead? We thought about it... In the end, I think that we won't just yet -- mainly because I don't want to put all our eggs in one basket: the cable Internet connection isn't incredibly reliable either. I'm not sure that one data/voice pipe into the house is an altogether smart idea yet. It sure would be cheaper, though!Posted by cwirving at 1:47 PM
July 6, 2004
Squid
No, not as in calamari -- but the proxy server... I decided that it was time to try (again) a proxied setup at home. Not that I'm turning off direct access to port 80 outbound but rather that there is enough duplication between the http accesses on all the machines that I figure it makes more sense set the browsers up to hide behind a (big) proxy cache. So far it is working pretty well. The one challenge is going to be setting up the browser proxy autoconf files on the laptops so that I don't have to manualy toggle between proxied and direct settings. The issue that caused a problem last time I tried this was that the Squid cache interfered with making fast backups of the sever machine -- I don't really want to backup the cache all the time so having it on the same partition as the rest of the system was a pain. So, a few minutes with the partition manager in Acronis Disk Director (yes, there are free tools to do the job, but I'm OK with paying a small price for convenience) and I had the original ext3 partition shrunk without data loss. I then created a reiserfs partition for all the volatile data (like the Portage tree that I serve to the local Gentoo boxes and the Squid cache) that I don't need to backup. The reiserfs file system is probably better suited to the zillion-small-file nature of a web cache than ext3 is, so that's good too. Now, I just need to look at some logs and see if it does actually help with traffic at all. It certainly alters the response time for slow sites (and sites with high latency, e.g.: www.lobrecht.com) -- but not entirely in the way I expected, though: the initial delay while it checks page freshness is still there but the subsequent rendering is instantaneous.Posted by cwirving at 10:43 AM
The iPod needs a reset button
I just fired up the iPod hoping to listen to some tunes while I work and... It seems to have gotten itself into a tight loop -- it isn't responding to button presses. Great, so now I have to wait until it runs its battery all the way down. Sometimes, admitting that your product is a computing device and having a way to reset it (even if it is a special tool as on the early macs) is a good thing. Luckily, it crashed with the backlight on, so it may actually take less than the usual 6 hours to discharge the sucker.Posted by cwirving at 10:34 AM
July 3, 2004
Blacklisted by AOL
For all AOL and Warner Cable are under the same corporate umbrella, they don't seem to see eye to eye on some things: Friday, our mail server (on RoadRunner "Business Class" cable) suddenly started getting bounces on all outgoing mail to AOL. Apparently, Friday was day one of a policy to blacklist all cable netblocks as dial-up. At one level this is a very welcome thing -- especially since the bounce message you get from AOL is perfectly clear about it and includes the URL of the web page to visit for more information. On the other, it is pretty annoying that they made the mistake of including the RR business netblocks in their list. That wasn't friendly at all! After spending a while the phone with RoadRunner, it was pretty clear that they knew about it and were doing the song and dance necessary to get AOL to remove us from the blacklist (although it was on a "next business day" basis, which isn't incredibly handy when there is a three day weekend in between). In the meantime, we can relay through (some) RoadRunner SMTP servers...Posted by cwirving at 9:53 PM
July 2, 2004
J. River Media Center
One of the apps I use to manage my music collection is/was J. River's Music Jukebox. I recently updated it to Media Center in order to take advantage of the third-party FLAC support. Well, here's a prime example of an application that wasn't tested in an environment where you run as a normal user... If you install it as Administrator then log in as yourself, the plugins don't work! The only way to make it work that I found (without hacking ACLs on the registry) is to elevate your privileges to be an administrator, install the application then downgrade back to being a regular user. Annoying, if somewhat harmless. Once it is installed, the application is arguably one of the best music (well, media -- not just music) library management applications out there. I wish that it had built-in support for FLAC rather than relying on user-written plug-ins but I guess that they feel conflicted about supporting their own lossless format (Monkey's Audio) as well as FLAC. However, FLAC is the format that Slim Devices recognize out of the box with their SlimServer, so that's what I want to do.Posted by cwirving at 1:17 PM
June 29, 2004
Antivirus fun and games
The MM20 came with a freebie version of Norton Antivirus -- which I dutifully tried... Well, I have to agree with Rick: there is something really performance robbing with the current NAV version. In the end, I switched to NOD32 (which is what I already use on the desktop machine). A little AV diversity can't hurt -- especially when the mail server uses a different (Kaspersky) engine for its mail scanning chores. Oh, yeah, NOD32 runs and updates just fine even when you run as an unprivileged user...Posted by cwirving at 11:51 PM
More on closet computers
One interesting tidbit about the closet computers is that the two EPIA 800 machines and the file server (an Athlon XP-Mobile underclocked down to 1GHz @ 1.25v with two IDE drives) are connected to identical UPSes. The two EPIAs generate a load of 10% for the comined pair on one UPS, the Athlon box generates a load of 19% all by itself... Darn. Mind you, even at 1GHz the Athlon machine is in a completely different league to the EPIAs -- I can tell whenever I have to do a major update (e.g., a kernel compile). The EPIA 800 takes forever in comparison. Not that the average load on the machine really justifies the increased horsepower, though.Posted by cwirving at 11:38 PM
Mozilla or Firefox? That is the question...
As a Mozilla user who switched to Firefox a while back, it was interesting to try out the all-in-one Mozilla 1.7 client all over again on the MM20. I figured that since I usually fire up both Firefox and Thunderbird on the laptop anyway, it would make sense to use the integrated client and basically have both functionalities in one. I'm not really sure what I think of the experience, though! It's one part time warp and another fond memories. I guess that a big compliment to the Firefox/Thunderbird guys is that there was nothing back in Mozilla that I went "oh, yeah, I want that in Firefox/Thunderbird..." So, the unbundled features are there. The out-of-the-box themes on Firefox and Thunderbird definitely are slick in comparison to plain old Mozilla but that's not entirely meaningful or fair -- although I'm sure that it makes a big impact on the newbie user. Now, whether all-in-one Mozilla was any faster or productive than the separate clients? I dunno. I'm going to keep plugging along with Moz 1.7 for a little longer and see. The desktop machine stays with Firefox and Thunderbird, though.Posted by cwirving at 11:06 PM
June 23, 2004
Plumbing sucks!
I redid all the plumbing on the desktop machine last night and what a chore that was! The case is one of the original Koolance PC2-C with the small CPU waterblock, so I upgraded that to the current model and plumbed in the GPU into the loop (the fan on the GPU heatsink had failed, starting this whole adventure). The thing I find annoying with plumbing is that something always goes wrong. In this case, it was that the weenie pumps that Koolance uses couldn't quite clear an air bubble from the system -- after rotating the machine around in various directions, I got the darned thing cleared... Yuck. Hose crimping and getting all of them rotated just right was a lot bigger issue than I reallly would have liked. I think that when I make my next water cooled machine, I'll definitely look into making use of fittings like the AN fittings used on race cars -- something that can be disassembled relatively easily and that can swivel.Posted by cwirving at 6:53 AM
June 21, 2004
Handwriting? What handwriting?
One funny thought that occured to me while reading #1 in the Eight Things You Can Do in a Meeting with a TabletPC is "oh, crap... You need to have handwriting, don't you?" I used to be thrilled that Palm's Graffiti (the original one -- not the post-Xerox lawsuit thing) could recognize my handwriting without any conscious changes on my part but my lazy single-stroke-everything writing is going to get me in trouble if I'm not careful (well, and try to use a TabletPC, of course).Posted by cwirving at 10:46 AM
"How do you use OneNote?" he says...
I see that Chris Pratley asks how people use OneNote (thanks to Rick for the link)... Well, that's nice. As soon as I get to the point of actually using it, I'll be sure to tell him. I have it on the laptop and maybe I'm just not spending enough time in front of it to have a burning desire to fire up OneNote and jot down something. On the other hand, I didn't drink the Kool-aid and do the whole Office-Outlook-OneNote-Exchange-everywhere thing so maybe that's what's holding me back from the "aha!" moment. Mind you, I could try out the Groupware add-on for MDaemon and see how that does as an Exchange work-alike. Of course, then I'd probably want to buy an Office upgrade for the desktop machine at home to keep it in sync with the laptop. Yay. Fun... Not that I'm criticizing Microsoft for making new versions of their software better so that you upgrade but this turning into the Nerd Tax -- you can afford to buy the hardware for all the machines you want but you'll bankrupt yourself equipping them all with Windows and Office...Posted by cwirving at 10:23 AM
OpenBSD firewalling
One of the longstanding projects at the house has been upgrading the firewall (currently an el-cheapo firewall-in-a-box) to something more sophisticated -- with proper control of the traffic between the internal network, wireless devices and DMZ. After a bit of patient looking, I got a Matrox 4-port network card off eBay and threw it into my last remaining spare EPIA-800. Now I have the hardware... All it takes now is getting OpenBSD sorted out. I can't say that I'm entirely looking forward to that -- it seems sufficiently different from Linux that there will be a whole lot of learning to do but at least the packet filtering syntax looks really neat and tidy.Posted by cwirving at 8:27 AM
June 5, 2004
In Alaska
Just got into Anchorage, drove to the hotel and there is wired and wireless broadband in the hotel room. Life is good... :-) Well, as good as it gets after a six-hour flight that was delayed by a few hours.Posted by cwirving at 9:51 PM
May 25, 2004
Scratch GPRS
I got the chance to try out GPRS service from T-Mobile for a few hours. Unfortunately, the one place I need it for (the office) just didn't have the coverage to make it useful. In the end, I returned the card after the tryout. On average I got 4kbps (yes, kilobits) I suppose that the next thing to try is 1xRTT from Verizon -- I'm not sure it will be useable in our dead spot of an office... The one thing that was interesting is that Mozilla Thunderbird actually works over such a slow link. IMAP over SSL at 4kbps isn't exactly easy to use but it works. Thankfully, I didn't try to open any big messages while I was testing. On the other hand, web browsing... that was another matter altogether! Even the leanest sites do have a fair amount of bandwidth-robbing cruft so, short of reading the PDA version of Slashdot, you're out of luck.Posted by cwirving at 9:46 PM
May 18, 2004
One Problem with Miniaturization
One problem with the Sharp MM20 is partly due to its diminutive size: it doesn't have the near-standard anti-theft device slot like all the Dell laptops I've had in the past. It has a loop -- a lot like a strap loop -- in the back right corner that you can use as the anchoring point. So, finding an anti-theft solution that is suitable for this machine has proven to be a challenge. In the end, I manufactured a small stainless steel cable loop that would slip through the anchor point and allow me to use a padlocked cable. On one hand it seems flimsy compared to the steel cables on laptop security devices but, on the other, I know what the slot in the Dell Latitude C600 is anchored to (hint: it isn't metal), so this is certainly no worse than the practical protection afforded by the security slot-based arrangements -- however thick the cable is...Posted by cwirving at 11:41 PM
TypeKey
I'm sure somebody knows how to make the TypeKey comment registration crap in Movable Type 3.0 work -- but I sure don't! I did manage to blow away my templates (yes, I had backups), which did give me the opportunity to redo things a little. The new MT 3.0 vintage default stylesheet is certainly less messy than the 2.6 one so it wasn't all bad.Posted by cwirving at 10:50 PM
May 15, 2004
MT 3.0
Well, with all the "excitement" about Movable Type 3.0, I guess that I just had to upgrade to 3.0 and see for myself. I'm in the happy position to still be able to use the free license but I probably would be happy to pay for it. I'm not one of those unhappy folks with a zillion blogs and authors, so the prices look just fine to me.Posted by cwirving at 11:48 PM
May 14, 2004
Installing, installing, installing...
It is pretty amazing the amount of crap that you get to install on any given new computer to configure it the way you like. OK, maybe not every average Joe installs Visual Studio and Cygwin on his laptop, but just Office and OneNote took a while... I also installed MovablePoster as an experiment. I'm not sure whether I like it as much as w.bloggar, but it does show all the parts of Movable Type posts, which was the thing I missed with w.bloggar. Anyway, so far the MM20 is turning out to be a pretty darned fast little machine. The keyboard is a little cramped, but I'm coping...Posted by cwirving at 9:42 PM
May 12, 2004
Holy Cow!
The MM20 arrived this afternoon and, although all I have done is unpack it an slap it in its cradle, I have to say that I am really very impressed by how small and light it is! Yes, I had laid my hands on a MM10 a while back but you tend to forget how extremely small these machines are. OK, I didn't just slap it in the cradle -- I hooked it up to the desktop machine and did an image of the hard drive with TrueImage (yup, the cradle-as-USB-drive thing works perfectly). I'll wait until it is fully charged before messing with it any more.Posted by cwirving at 3:39 PM
May 10, 2004
Getting ready for the new laptop
Now that the Sharp Actius MM20 laptop is on order, I need to get all my ducks in a row to get it up to speed software-wise. Some stuff is easy: the free stuff (Mozilla Firefox and Thunderbird), Office, Diskeeper, etc. The tougher stuff is going to be moving the ActiveSync pairing off the desktop and onto the laptop without having to reinstall everything on the PocketPC. I guess that I could just keep the PocketPC paired to both but the last time I tried that, I felt like it was just waiting for an inopportune moment to go poof (the PocketPC definitely has an affinity for going poof, but this is tempting fate I think). The ironic thing is that I could easily replace the PocketPC, Bluetooth card and world phone with a Treo 600 for a fraction of what they cost. But that wouldn't be fun... Well, it would, but it wouldn't be exactly affordable, either. I guess that Paula will go there first when her Tungsten T dies. Besides, I still have this lame fantasy that I may one day find the time to write an application for the PocketPC. The chance of that is pretty darn slim, though. The next thing is figuring out a wireless data setup that works. Sure, at home, I have the constellation of WiFi access points but that only goes so far (well, pretty far actually but that's another story). I would really like to sort out data access that would cover all of town -- even the office, given their paranoia about un-blessed machines on their network. Ricochet would have been ideal when they were still in business but that's no longer an option. So, I guess that this leaves GPRS (from T-Mobile) or EvDO (from Verizon Wireless when it becomes available, 1xRTT for now). The former is slow, the latter is expensive. Hmm... Do I detect a pattern here? Darn, I wish T-Mobile would get their EDGE deployment going -- at least that would be a decent compromise. Oh well, I guess I can dream... Or have a nightmare.Posted by cwirving at 8:50 PM
May 9, 2004
Declarative UIs
Well, folloing up on the Avalon/XAML froth, I was really interested to see Chris Sells' link to the Open XUL Alliance site. Their XUL Grand Coding Challenge 2004 is pretty wild! Of course, how many of these dialects will be around for the 2005 challenge?Posted by cwirving at 12:27 AM
Avalon, Word and all that Froth
Seeing all the recent frothy wind-up about Longhorn, I went back and re-read my comment on Miguel de Icaza and Avalon. It's kind of interesting how the world at large sees the relationship between Linux, the open source world and Microsoft as this competition to win the desktop. Nobody really stops to ask about what desktop we're talking about. My belief is that we're not seeing a battle for the consumer desktop: it's a battle for the managed business desktop. It is especially noticeable in terms of office software. You see threads like discussions of Chris Prattley's history of Microsoft Word. The thing that nobody seems to want to admit is that the target customer for OpenOffice is the reactionary corporate customer that wants nothing to change since Office 97 (well, other than to pay less). I have great respect for the OpenOffice folks and I think that they have done a pretty amazing job. The think that is annoying, though, is that innovation really doesn't sell in that line of business. I don't personally like Word -- although I've used it for long enough now that I don't mind so much now -- and I feel that there is room in the world for something better. However, we're pretty much seeing that there isn't room in the world for something better that businesses would want to buy. IT doesn't care that the corporate standard word processor is lame -- it cares that it is getting support calls from the secretarial pool about the one menu item that has changed since the last version... So we're stuck with crap forever because human beings that can learn 36 new ways to paint their nails can't handle the Office XP menu bar. So, where was I going? Oh, yeah, Microsoft needs to watch its back with Linux, but I'm pretty sure that it isn't at the cutting-edge consumer experience level. The corporate desktop is pretty ripe for the picking for someone that can package an free/open source solution that is tightly managed, visually unsurprising and relatively cheap -- something that Red Hat seem to have grasped. The Avalon technology really is something that should worry forward-looking technologists like Miguel de Icaza and Windows developers but I'm just amazed at how the press gets all frothy about this stuff and misses the actual battle that taking place in front of their noses.Posted by cwirving at 12:11 AM
May 8, 2004
Sharp Actius MM20 on order
With an upcoming vacation to the Frozen North, I decided that it was time to get a personal laptop so that I could spend some quality time with Visual Studio .NET and play with stuff that I don't get time to do at work. In the three-way battle between power, portability and price, I finally settled on the portable end of the scale: a Sharp Actius MM20. Unlike Rick (a.k.a., "TabletPC Boy" :-), I decided to forgo the joys of the tablet. I know that there are plenty of reasons to go with a tablet but when it came down to what I want to do with this machine, I felt that the keyboard still would be my primary mode of interaction. Besides, I'm always a sucker for cool technology, and the Transmeta Efficeon in the MM20 is a really interesting processor. It should be here during the week -- I'm really looking forward to getting it. I'm also looking forward to not lugging the work laptop around -- a Dell Latitude C600 was pretty svelte way back when, but now I feel like I'm carrying a leaden lunchbox around -- and I'm not talking about this.Posted by cwirving at 11:16 PM
May 3, 2004
Playing with a D100
After reading Rick's adventures with his Nikon D70, I was pleasantly surprised when a friend came by and happened to show off his D100. That gave me the opportunity to play with one of these SLR digital cameras in a real-world setting (OK, my world :-). Since he had a proper flash unit with his camera, we did a few tests of the camera metering and fill-in in an indoors setting. The cats were quite happy to model for us. Altogether, I have to say that the performance in tough conditions (low light, backlighting and a mixture of natural and incandescent light) was most impressive. As Rick mentioned, the actual size of the camera (especially the depth of the grip) was a little surprising, but I think that what suprised me the most is its speed. I guess that I just have gotten out of touch with what to expect in a consumer camera! Too bad I have other toys to buy first because this is one seriously attractive gadget. Not pocket-sized, mind you...Posted by cwirving at 2:06 AM
April 27, 2004
Did I Mention that I Hate VB 6?
After a long (happy) hiatus, I'm back dealing with a non-trivial VB 6 application at work -- one of those great gifts from a "former colleague..." Yes, you know what I mean. I guess that I really don't mind that the language is the ugly stepchild of the programming community (actually, I'm more inclined to call it the swamp-dwelling toothless redneck of the programming language world but that's just my personal opinion). I can more or less put up with the violently inconsistent libraries and useless help system, too. However, I cannot fathom why a "programming tool" (I'm being generous here) used by hordes of corporate developers worldwide has to have such a catastrophically screwed-up build system! Every time this darned application comes back into my lap following a stint with a VB "expert" of some kind or other, it takes half a day's work and experimentation to fix all the screwed-up project dependencies and weird crap that end up polluting the project files. Somethow, I was under the impression that this was the system for the folks that aren't supposed to be capable of hand-editing their project files. Of course, if it could have a "binary compatibility mode" that actually worked and didn't require closing the IDE 20 times a day, that would help too... And to think that there are a plenty of folks out there that are reluctant to dump VB 6 and move to any .NET language for new work? What kind of masochists are they?Posted by cwirving at 6:42 PM
OK, who *doesn't* work for Microsoft now?
Plodding through my RSS list I saw that one of Raymond Chen's posts today linked to Stanley Lippman's blog, which brought to the fore the fact that he, too, works for Microsoft... So is there anybody left on my bookshelf that doesn't work there? Thankfully, Bjarne Stroustrup hasn't joined them. Oh, wait... His home page says that he's now at Texas A&M? What the h...?Posted by cwirving at 3:31 PM
Smokin'
When I walked past the network closet in the house this morning, I felt an unusual amount of heat radiating through the doors. When I looked inside, I was rather (unpleasantly) surprised that the temperature in there had jumped to about 100 degrees Farenheit... As it turns out, the exhaust hose on the air conditioner had popped off and was recirculating hot air inside the closet rather than exhausting it outside -- and, thermodynamics being what they are, that made for a very unhappy air conditioner and very hot closet! Luckily none of the machines seem to have suffered from the heat but it could have been really nasty. I guess that it is time to put some kind of overtemperature alarm in the closet (and better means to secure the hot air exhaust hose, of course).Posted by cwirving at 9:51 AM
April 23, 2004
Electronic Paper?
Seeing the recent e-ink press release regarding their "electronic paper" display being used by Sony and Philips, maybe there is hope yet for e-books. The stoned sloth performance and/or low-dpi displays of PDAs and TabletPCs have never made me want to even go there. However, a 170 dpi display like this -- assuming decent device performance -- could be pretty interesting. I wonder how programmable the Sony device in that announcement is? Hey -- it's got a keyboard... I suspect that the killer app for this form factor and display may not be the plain old e-book. I'm not sure what it is, but the idea is pretty interesting.Posted by cwirving at 11:23 AM
April 21, 2004
Spring Cleaning
Last night was Spring Cleaning time in the network closet. Now that the servers are in a dedicated rack on casters, it isn't quite the ordeal it used to be to clear everything out of there. The bad part is that it always takes longer than expected to set everything up, but I have to admit that redoing all the shelving, zip-tying all the cables and cleaning up the clutter makes a huge difference. Especiallly with the new server rack taking up the equipment overflow: you know when you've run out of rack space when you start zero-U mounting all your network gear! As a bonus, Hillary (a.k.a., "Clumserella" -- our nosiest cat) had decided to hang out in the other part of the house -- so I didn't get too much "help."Posted by cwirving at 9:15 AM
April 19, 2004
Offline Time
I spent a lot of time offline in the last few days and it shows -- no, not the lack of blog entries: I let my PocketPC batteries run out. Boy, was that a mistake. Not that it is really a big deal (I have recent backup on an SD card with me and all it takes is a good sync after that), but it is pretty embarrassing: "let's look up the info for xyz... well, once the thing turns on... helloo?? *reset* *click* *click* Uh, never mind..." These are pretty tough little beasties to reset when you really need to. Apparently, it's a lot harder to reset an XScale than it is to crash it... Or am I talking about CE 3.0? Whatever... :-)Posted by cwirving at 7:23 PM
April 5, 2004
The Emperor's new DRM
Having read and enjoyed Lawrence Lessig's Free Culture over the weekend, I've been following up on links and trying to resolve some questions about Lessig himself and the book in particular. One thing that struck me with how Lessig makes a point to present himself politically as a liberal -- something that is somewhat irrelevant to the book. I certainly don't consider myself one and I still enjoyed the book and thought that it presented a valid point. I'm mystified at his need to wear a virtual name tag saying "HELLO, MY NAME IS: A. Liberal." I can't imagine it helped him get his point accross to the audience he feels will be hardest to convince -- like this review shows. Oh, well. The other aspect that surprised me is that he never explictly mentions the fact that, at least to me as a technologist, is fairly obvious: you can't un-invent bandwidth. Most, if not all, of the piracy troubles publishers are in such a tizzy about stem from the fact that it is technologically and economically feasible for the average person to have the bandwidth necessary to participate in illegal sharing activities. Saying that you can put that genie back in a bottle is a little like the activists who have spent the last sixty years in the futile hope that if you squeeze your eyes really tight, we'll un-discover nuclear fission. Well, sorry, it doesn't work like that. Knowledge is viral in its transfer and once it is out, only superhuman effort ever buries it. It took the efforts of many to actually destroy the library of Alexandria. That's a whole lot of brute force and stupidity spread over a long time to get the job done. So, coming back to the problem at hand, DRM is just the Emperor's new clothes, it won't really make the underlying reality go away. So, transforming the marketplace into one where you can still monetize your intellectual property without going to the bother of creating a police state seems like a pretty good idea -- unless running around in a futile emulation of Big Brother is your bag.Posted by cwirving at 9:49 PM
Software Patents == Nukes?
This article on software patents at Wired magazine made me think of the analogy between software patents and nuclear proliferation. In a way, you could say that the corporate giants of the industry are locked in a game of Mutually Assured Destruction with their large patent arsenals -- I mean, portfolios... The only difference here is that nukes are, by and large, hard to come by. Software Patents are not. It's kind of like the cold war but where every bike gang in town has nukes, too.Posted by cwirving at 1:22 PM
April 3, 2004
Idiot-Proof Movable Type?
Like Rick, I was initially quite pleasantly surprised at Movabe Type's use of static content -- especially after playing with dynamic systems like Zope or, like Rick, one of the Nukes. However, I wasn't quite ready for the surprise when I tried to log in tonight and found that I'd forgotten to enable the mysql daemon when I last rebooted the server. No database => no administrative interface. Still, the blog contents were there for the world to see... Nothing really earth-shattering but it certainly does bring home the design philosophy that it's OK to punish idiot users -- but better if you punish them as little as possible.Posted by cwirving at 10:20 PM
April 2, 2004
Seize the What?!
Surfing Rick's blog entry about a new book on the TabletPC and how he'd like it in eBook form -- but it is not available. Yeah, sure... That's kind of the story of the TabletPC, isn't it? If there was ever a PC form factor that could serve as an electronic book, that's it. Now, of course, go find an electronic book solution that works faster than a stoned sloth, looks good and actually has books that I'd like to read... Oh, well, never mind. I know that I like to complain that software hasn't caught up with current affordable hardware, but in this case I have to wonder which way around it is.Posted by cwirving at 10:28 PM
Now, Apart From my Wallet...
Related to the previous post -- before anybody gets the wrong idea, I do care about freedom and self-determination. I don't want to wake up one morning and find that everything I own doesn't belong to me and I effectively am the property of some giant corporation, whether it is Microsoft or not... It still doesn't change the fact that those considerations are secondary to the issue at hand. I think that our collective relationship with Microsoft is closer to the relationship with, say, Wal-Mart than we are willing to admit. For all our whining about the social cost of putting close to every small shopkeeper in America out of business, we are attracted to the low prices like moths to a flame. Whether you like it or not, the likes of Wal-Mart and Microsoft have brought the general consumer a buying power that would have been unthinkable in the past. Yes, the cheap plastic trinkets are just that: cheap, but everybody and their uncle still has a color TV -- the prime example of a modern luxury turned to trinket. We enjoy a standard of living that was clearly improved by the companies we have mixed feelings about and, in many respects, we actually made them. Successful companies are responsive to their customers' needs -- that's why they became that way. Of course, you could argue that unsuccessful companies -- or the unsuccessful remnants of successful companies -- are what trouble us today. That's fair. Still, I digress... My point was that even with this mistrust of these fantastically wealthy corporations, our behavior at large is driven by economics, even in a debate that is apparently all about freedom or technical merit.Posted by cwirving at 6:35 PM
Freedom, Free Software and My Wallet
Reading recent blog entries by Don Box and Chris Anderson talking about different, yet complementary facets of the Microsoft vs. free software debate got me thinking about the dissonance between the reasons we like to use to phrase the debate and the motivators that drive us collectively. Oh, -- yes -- I did put it in terms of "Microsoft vs." because that's really gets people worked up. You wouldn't see anywhere like the excitement if there weren't a dominant player in the market. So, anyway... Don Box demonstrates pretty well the huge gap between Windows and Linux-based operating systems in terms of maturity. Chris Anderson, on the other hand, does highlight the volunteerism aspect and contrasts it with the limited economic models volunteer-based free/open source software supports. Both are objective and relevant but I feel that the economics -- the consumer behaviour, whether individual or corporate -- is what drives the phenomenon. Disclaimer #1: Yes, I develop software for Windows (or, that runs on Windows, if you want to be particular) but I do think that I have decent record of using the best tool for the job -- I have Linux boxes that I use regularly. I actually quite enjoy using them and they provide some of the services on my network: it isn't like my house is a Windows-only shop. Work isn't either, but that's out of my control. Disclaimer #2: I was an OS/2 user ten years ago -- I could be construed as having a grudge against Microsoft. :-) Now that we've got that out of the way, and strip away the ideology, I think that it boils down to the fact that we are economically-driven beings. Microsoft is incredibly successful because it listens to customers and provides the product that provides the most satisfaction to the consumer (including price in the measure of satisfaction ). In those terms, Microsoft Office was an economic phenomenon more than a technical one. You could say it was marketing but that somewhat obfuscates the brilliance of the offering. That curve of getting more and better quality stuff for your buck is something that Microsoft has mastered and they now have no equals. As a software developer, I have to admit that there is no company out there that does more for me. The toolset at my disposal, for what is effectively an insanely low price, is spectacular. Yet, we see the rise of Linux and free software coming along like a disruptive techology in The Innovator's Dilemma. How come? Obviously if I really knew, I would be rich. I can venture a guess, though: Like we've seen Microsoft reinvent itself from a technical standpoint -- witness .NET at the product level but also, more importantly, in the process maturity of Microsoft as a software development company (itself driven by economic factors like the cost of maintaining the gigantic code base in question) -- we may be at a point where the economics of the business are changing, too. The downward spiral of the cost of a line of code to the consumer has led to the point where significant functionality like a true multitasking operating system, an office suite and so forth are generic commodities. At that point, the only legitimate price point left for competitive products is zero. When you buy a Linux distribution or StarOffice, you're basically buying the packaging and a support contract. The software was free. Whether you are a major corporation or a band of free-thinkers, the price point you gravitate towards is free-in-the box. Given that people are the ultimate local optimizers when it comes to economics, it isn't a great surprise that they respond pretty well to the price incentive. At one level, Microsoft understands this: they are hard at work on value added -- like Indigo (yes, there was a reason for the Don Box linkage) -- that is hopefully going to be so incredibly attractive that customers will stop thinking in commdity terms. They also have tried in the recent past to reshape their business model (e.g., the "software as a service" push recently) but have yet to come up with one that satisfactorily launches another upward inflection point in their fortunes. Until then, of course, the similarity with scenario that serves as the basis for The Innovator's Dilemma is pretty strong... The question is whether the level of functionality offered by the incumbent exceeds oris about ot exceed the customer's needs (one of the keys to the success of disruptive technologies) and whether incumbent can reinvent itself. So, yes, we techologists like to blinder ourselves and frame debates in technical -- or, failing that ideological -- terms, but we don't pay anywhere near the attention we should to the mundane economics of the world.Posted by cwirving at 5:03 PM
March 31, 2004
Happy Anniversary, Dear Competitor
A recent Slashdot post reminded me that this the spreadsheet's 25th anniversary. Peter Coffee at eWeek takes the opportunity to point out the limitations of spreadsheets -- in the context of financials, in this particular example. I find this especially interesting since our main competitor on the low end has always been the spreadsheet... Since my day job is related to a model-driven economics tool, it is nice to see a public commentary of the spreadsheet's limitations. Although Excel is the darling child of every businessman, there is only so much that makes sense in the form of a spreadsheet. The hoops people jump through to express non-trivial calculations is always a source of consternation -- but they keep on doing it. Go figure... Not that I think spreadsheets are a bad thing: the power spreadsheets brought to the lay person's hands is incredible and definitely helped propel the personal computer from an expensive hobyist's toy to a real business tool. However, many of the things that make a spreadsheet so attractive are also the things that contribute to its downfall: the simplicity of the modeling language (cell-by-cell formulae), and its complete genericity make the spreadsheet a tool best used in moderation. Unfortunaltely, we -- people -- don't seem to do moderation. If the tool is good enough to calculate the value of a widget, then we feel compelled to try and use 10,000 instances of the tool to calculate the value of all 10,000 different widgets we have... The spreadsheet-as-database syndrome is pretty scary. Mind you, equally scary is our blind faith in those numbers. It isn't so much that the numbers aren't the result of a probabilistic analysis, as Coffee spins (that's a red herring in that there are tools to overlay probabilistics over a deterministic spreadsheet calculation), but rather that the model implicit to these spreadsheets is replicated and obfuscated by the multitude and complexity of documents. Furthermore, the lack of any real metadata about spreadsheets makes it very difficut to leverage your knowledge of the data to make changes, look for exceptions and errors. Not that purpose-built tools are necessarily any better. I'm not arguing that everything is better than the generic tool -- rather I think it is fair to say that it is time to expect more.Posted by cwirving at 6:18 PM
March 30, 2004
Miguel de Icaza on Avalon
I can't hep but find it ironic that Miguel de Icaza is one of the few people who seems to understand the signifcance of Avalon. Yes, the Microsoft folks are excited about it -- that's par for the course. However, the world at large appears to have lumped Avalon into the bin of Longhorn technologies that are irrelevant to business. Here, at work, we have enough people that are directly involved in retained-mode 3D graphics that, I think, grasp the paradigm change and see that it can take us places that the plain old Windows GDI can't. However, outside of this fairly narrow sphere, nobody seems to care. That's where de Icaza's view is pretty unusual. For a vocal opponent of Microsoft computing monoculture to come out and point out Avalon's significance says something. Others worry about it being a platform differentiator rather than actually wondering about its technical merits. I can't say that I've studied Avalon in any great detail but you can't help get the impression that, like with the .NET platform itself, they are onto something of real significance. Like the .NET platform, they are following in the footsteps of others -- but doing their homework and (at least in the case of the .NET platform) getting it right. The graphics subsystem is one clear area of modern computers where the hardware's capabilities have outstripped software's ability to use them. So, here we are wearing our business hats thinking "yeah, right, another whacky Microsoft home OS technology" and playing wait-and-see. I'm just hoping that the first thing we see isn't some pointy iceberg in our path...Posted by cwirving at 11:21 AM
March 29, 2004
This is where my donation goes...
People who see me wear my EFF T-shirt (usually after seeing the back of the shirt: "Fair Use Has a Posse") ask me why I support file sharing and other such theft (their words, not mine). Well, I don't support intellectual property theft (I make a living from software -- how could I?) but explaining in lay terms why fair use is important is a challenge. Actually, not when you know where to link.Posted by cwirving at 11:16 PM
The Joys of COM (Un)Registration
On today's programming menu was an utility that I wrote for our testers to remove every last trace of COM server registration related to our products. The debug cycle did bring home how registration is one of those areas of COM that seems to have gotten the least thought: you are only one registry key away from basically nuking your system. We've gotten so used to registration being such a do-it-yourself mess that we're oblivious to the consequences of getting it wrong. Of course, given the plethora of slapdash ATL wizard-generated COM servers out there (whose registration/unregistration code leaves a lot to be desired), I guess that there would always be the need for a bare-metal uninstall/unregistration utility -- even if Windows actually grew a meaningful COM registration API. So, anyway, the debug cycle for this little app. involved dipping into the system backups (did I say that I love TrueImage?).Posted by cwirving at 10:58 AM
March 26, 2004
Ah, the joys of anal-retentiveness
Sometimes, I wonder why I have to be so a-r with computers. Setting up Movable Type has been such an "interesting" experience. Not necessarily because of MT itself, of course, but since I insist on running MT on my own web server with its own set of quirks (like running thttpd behind Pound on a Gentoo box) it makes everything a bit of a learning experience. Overally, I still love the performance I get from the server but it is more work than I really should be spending on ego gratification.Posted by cwirving at 11:27 PM