Archive for the 'Software Development' Category

Unconventionally Green

Monday, November 10th, 2008

First off, Robert Reich has just written much of what I wrote here on Tuesday, but way smarter. Here’s hoping this guy gets a prominent cabinet position.

Next, this weekend’s Green Festival at the Washington DC Convention Center. If nothing more, it was great to see so many people show up in the name of living in harmony with the environment… even if some of it did involve holistic vegan Yoga massage.

I got to meet William McDonough at a book signing (not sure whether his bow-tie was biodegradable) and talk to several solar contractors. I was pleased to see The Washington Area Bicyclist Association and the Anacostia Watershed Society were there to represent.

One group that was new to me was The Electric Vehicle Association of Greater Washington DC. These folks brought a Prius modified with a kit to permit recharging by plug, without gasoline. It was neat to see and hear about one of these things first-hand.

Another interesting attendee was Burr Technologies. This company is trying to assemble computers that use less power, primarily by the use of more efficient power supplies that can be passively cooled, without resorting to a fan. In the same vein, this month brings the news that researchers at Penn State have made progress with the use of electrocaloric plastics for high-efficiency electric cooling, which would be perfect for computer chips. Having grown disenchanted with “Sleep Mode”, I think these folks may be onto something.

Start Me Up?

Computers have to load instructions into memory when first starting up. This process can take a long time. As Peter Gibbons learned in Office Space, the same is true for shutdown, when your computer has to clean-up open resources.

Well-intentioned engineers came up with Sleep Mode as a solution: instead of turning a computer off, just dump the system state to the hard drive, power down most components, and reload the state later, if needed.

Unfortunately, sleep mode hasn’t worked out so well. Even today, many non-Mac laptops struggle to wake when opened, presumably a consequence of poor software/hardware integration.

But even systems that wake up successfully when roused by an operator have come smashing up against a broken abstraction of the Network Age.

A “server” is any computer that provides services to another computer. When most clients were little more than screens or teletypes, this was a useful distinction. Today, it’s often hard to distinguish the server from the client. If you stream downloaded television shows from your desktop computer to a set-top box, or sync your calendar from your desktop to a mobile device, which machine is the server? And what happens if that “server” happens to be asleep when you need its services?

Efforts to address this, like Wake-on-LAN mode, have not seen wide adoption. So maybe the better solution is to reduce the computer’s energy footprint all the time.

Automobile Drivers Are Not Rational Players! Is Photoshop?

Thursday, August 23rd, 2007

I now commute by bicycle, partly because it’s fun, but primarily to limit my greenhouse gas emissions.

I’ve only recently started thinking about the fact that I always change out of lanes when I can’t keep pace with the prevailing speed of traffic. However, if I see a red light or a stopped car ahead, I typically have continued on in that lane with the understanding that I’m not reducing overall traffic throughput.

Unfortunately, this seems to preoccupy many automobile drivers behind me. They apparently cannot bear to be going any slower than physically possible. They will often elect to switch out of their lane (or switch partially out of their lane), speed up, pass me, switch back, and then slam their breaks on when they realize they are about to smash into the right side of a garbage truck.

I presume that they didn’t notice anything beyond my bicycle intruding on their fundamental human right to (briefly) change their position with respect to the positions of other objects at a large rate.

Aside from being dangerous, these irrational drivers are wasting fuel. So from now on, I resolve to switch out of my lane if I can’t keep pace with the car behind me, regardless of overall traffic throughput.


I am intrigued by all these little, split-second decisions our minds make, often without conscious direction. For example, I have gotten really good at catching fumbled objects. I marvel at it because I know how hard it would be to teach a computer the same trick.

Earlier this year, I read Jeff Hawkins’s interesting book On Intelligence. Hawkins believes that the ability to recognize patterns and sudden departures from them is central to intelligent action. He goes into great detail describing the sophistication of sensory perception. Hawkins further believes that our minds accomplish this through the application of an as-yet undiscovered, high-level, invariant mechanism.

What if Hawkins is right about the centrality of patterns, but not about the mechanism? What if intelligence is little more than the ruthless application of a zillion simple edge-detection and flood-fill algorithms?

Perhaps I will start treating Photoshop with a little more respect.

Zion & Desktop Matters

Sunday, March 18th, 2007

I’m finally caught up on sleep from the Desktop Matters conference and subsequent hiking trip to Zion last weekend. Both were great!

Some thoughts:

  • With the new Apps Framework, progress on the Binding JSR, and some great RAD tools, desktop Java has become a serious contender. If they can nail the deployment problem, look out!
  • The real night sky makes the city sky seem like one viewed from some other planet.
  • When clinging for dear life to a chain along a steep, narrow ridge, gloves are helpful.

The March of Progress

Sunday, November 12th, 2006

By now you’ve probably noticed the notorious soothing gradient title block that indicates this blog has defected to WordPress.

When I started up the blog, I wrote a short program (actually an extensible stylesheet) to manage it. I wanted something that was simpler to maintain than the other blog software I’d encountered. I didn’t want to have to bother with anything beyond a webserver and a filestore. Other blog management systems required a relational database and some kind of common gateway interface or application server.

I also wanted to host my blog from my own account.

My custom software didn’t handle user comments. Comment spam was becoming a serious problem at the time and there was a school of thought that soon, everyone would have a blog and therefore user comments would become unnecessary.

In retrospect, that was naive. Comments are a big part of what makes blogs fun. I made an attempt to retrofit a comment facillity onto my software in a manner that I hoped would preserve its minimalist design. Although a special add-on was needed to harvest the comments, they were directed into ordinary files and served up through unobtrusive client-side scripting. It probably needed a good week of additional work before it was ready for the sunshine.

But there had been two developments in the meantime.

One, the migration paths between standard blog management offerings got better. WordPress in particular gained a very serviceable feed import facillity. The existence of good migration paths diminished the chance that I would get stuck on some system that ultimately proved to be a dud.

Two, I came into contact with some excellent software that muted the pain I had traditionally associated with web application deployment. Fantastico, cPanel and Ensim made MySQL database installation easier. I was also impressed by how easily I had been able to roll out the Simple Machines Forum software, which like WordPress is implemented using highly-portable server-side scripting.

The Plunge

With a little help from Max at my hosting facillity, everything is now ported over. And although it wasn’t Macintosh-easy, I am nevertheless pleased with the results. I did need to play around with line breaks, but I don’t fault WordPress for that since a variety of odd practices have sprung up for grafting styled content into RSS feeds that were never formally part of the spec.

So what about my custom blogging software? I’m still using it extensively to power my webcomic, where I’ve coupled it with ComicsML to acheive some interesting layout and accessibility features. More on this, later.

Symmetry

Friday, August 11th, 2006

I’ve been sitting on this one for a while. It’s topical. It’s relevant… it’s time.

Here goes: the best idea I have ever had, or am likely ever to have. My solution to the airport carry-on luggage crisis. I think you will agree it leverages America’s strength in information technology in an exciting and entirely novel way.

  1. When you get to the airport, an attendant helps you take inventory of every item you have with you.
  2. This inventory is entered into a database.
  3. You are matched up - in real time - with another person at your destination who has approximately the same stuff.
  4. When you reach your destination, you take that person’s stuff. They in turn will take yours, which you have thoughtfully left behind for them.

This plan would entail a number of additional benefits:

  • Lower air fares and lessened climate change from diminished fuel use.
  • No point in asking whether you have had your things with you at all times: nobody will have.

XSLT Book Round-up

Saturday, June 17th, 2006

Extensible Stylesheets Language (XSL) is just about my favorite these days. Although Michael Kay’s book is pretty good, Jeni Tennison’s Beginning XSLT 2.0, From Novice to Professional is indispensable.

XSLT uses a lot of very specific terms, and using the back-of-the-book index can be a little tricky if you don’t know exactly what you’re looking for. So, for the benefit of you the Internet blog reader, I have compiled together my index margin notes.

Clip ‘n Save! Beginning XSLT 2.0 index add-on


entry page / reference
[] see predicates
data-type conversion 161
less-than see
lengths (of strings) see string-length
lengths (of sequences) see count()
messages see xsl:message
output methods 761
paths see also predicates
sequences, converting 236
stripping space see normalize-space()
today see current-date()
totals see sum
trim see normalize-space()
URL see Uniform Resource Locator

I also have read and liked O’Reilly’s older XSLT offerings, XSLT and XSLT Cookbook. I might be fonder of O’Reilly’s XSLT if I hadn’t spilled radiator fluid all over it, and subsequently worried that I was going to poison myself whenever I consulted it.

Adobe-Sun Conspiracy?

Wednesday, March 22nd, 2006

Adobe Reader & NetBeans icons, side-by-side

I just happened to have the application icons for Adobe Reader and Sun’s NetBeans side-by-side on my Dock. It occurred to me that they appear to fit together.

Coincidence?

Yet Another Over-Reaching Software Development Analogy

Monday, December 5th, 2005

Software development has been compared to construction and, more recently and compellingly, gardening.

I’m here to tell you friends that as usual, everybody’s wrong. Software development is like asteroids. Specificly, Asteroids the video game.

Early on in the “life cycle” of many software projects, money is spent on a bug database. Required fields generally include a brief symptomology, version information about the afflicted software, and a log date. Less generally they include steps that might be taken to reproduce the problem, the name of the tester who found it, and a severity rating necessarily relative to that tester’s own unique temperment.

The data field I have not yet seen, but bet would be really useful is the diameter of the bug.

As anyone who has spent time piloting a crudely-triangular spaceship beyond the orbit of Mars knows, asteroids don’t magically vanish upon contact with artillery. Instead, they break apart into multiple, smaller asteroids. It’s the same with software bugs.

The amount of time remaining in the wave/project is only loosely correlated to the initial number of asteroids. A really big asteroid might exceed a kilometer in diameter. Blasting it will only serve to increase the chance of a collision. Shooting an asteroid doesn’t actually help matters until it can be completely pulverized, or, perhaps more realisticly, knocked into an orbit that sends it out of the asteroid field (and hopefully not towards any planets you are friendly with.)

By way of analogy, any reliable estimate of the time remaining to complete a software project should involve a survey of not just the number and severity of outstanding bugs, but also their diameter.

Blogfountain Month 2

Thursday, July 7th, 2005

I’m pleased to report that my custom blogging software appears to have successfully handled the month transition from June to July.

To celebrate, I added some validation, sorting, and capping functions to the stylesheet. I also threw in an optional Apache Ant script for easier builds and deployment.

My brother Michael and my friend Matt have both expressed interest in the code behind this, so I threw together a preliminary archive.

To use this yourself, you’ll need

  • An XSLT 2.0 Processor like Saxon-B 8.4 and most likely a Java virtual machine to support it.

You may want but could get by without

  • The afformentioned Apache Ant. This will also require Java.
  • An HTML authoring tool like Nvu or Dreamweaver for creating content.

I like Blogfountain because it’s easy too customize and I can keep my blog as static HTML files on my own webserver. But if you prefer to go the simpler route and don’t care where your actual content resides, you might be happier with existing blog software.

Matt tells me he written a database-ready PHP-based comments engine for his blog. I may look at grafting this onto Blogfountain. [Note: this blog has since been moved to WordPress]

Giving in to the Dark Side

Wednesday, June 1st, 2005

I couldn’t resist any longer; I have officially given in to the self-congratulatory blog craze. I will try to keep the interminable accounts of what I had for breakfast to a minimum.

I looked at several blogging solutions, but found each too intrusive. All of them required an application server, or worse still an application server that I couldn’t host myself. To my mind, a blog should be simple enough to run on a plain old web server.

So I ended up writing a short XSLT 2.0 script I call Blogfountain. I plan to post this under the GPL 2.0 license after I have worked the more obvious kinks out. Blogfountain circumvents the problem of comment spam by implementing a clever suggestion made by David Siffry: if you want to make a comment, start your own blog. Blogfountain links to a Google listing of pages that link back to it. [Note: this blog has since been moved to WordPress]