Weird Apple pricing

One of the side effects of switching digital cameras has been that stuff takes longer. More pixels per picture (and new modes that generate more images) means that it takes a lot more time to do even basic photo management. And I’m not actually very well equipped to handle this: for perfectly good reasons, it turns out that although I have quite a few computers, they are all pretty puny by current standards. I have a Mac Mini and a MacBook Air, both with CPUs in the 1.6GHz range, both with fairly slow disks. The MacBook Air has 2GB of RAM, the Mini just 1GB. (The fastest machine I own, my accursed HP DV4-2045DX laptop, just went back for service – AGAIN!)
So naturally my thoughts have been turning to getting some horsepower. A Mac, of course – that HP has cured me of any interest in Windows. I figured that I wanted something like this:

  • At least 3GHz 2+ core CPU
  • 4GB RAM
  • 500GB HDD
  • Superdrive

My first impulse was to simply get a new Mac Mini. However after maxing out all of the options, I got:

  • 2.66GHz Core 2 Duo
  • 4GB RAM
  • 500GB HDD
  • SuperDrive
  • Wireless Mouse and Keyboard
  • Total price: $1187

That felt quite a bit more expensive (and slower) than I’d expected. Out of curiosity, I looked at the minimum configuration iMac:

  • 3.06GHz Core 2 Duo
  • 4GB RAM
  • 500GB HDD
  • SuperDrive
  • Wireless Mouse and Keyboard
  • 21.5 inch LCD
  • Total price: $1199

So instead of buying a Mac Mini I can spend an extra $12 and get an iMac with a 15% faster CPU and a stunning 21.5 inch LCD. Something doesn’t make sense here….

That b100dy HP laptop

I just posted this one-star review to Amazon.com:

I bought my DV4-2045DX at Best Buy, on a whim. Soon after I got it, I headed to England for a family visit, and I decided to take this laptop along instead of my usual MacBook Air. Bad idea. Soon after we arrived, the machine began to malfunction. The symptoms were fairly consistent: I would close the lid (configured to “sleep”), and soon afterwards the logo would light up and the fan would come on. If the machine was unplugged, this would drain the battery in a few hours. Opening the lid did not wake the machine: the screen was blank, the keyboard unresponsive. More seriously, the power button wouldn’t work: holding it down for 5 or 10 seconds wouldn’t cause the machine to power down. The only way to stop it was to unplug it and remove the battery. After this, restarting was hit or miss. Usually, the machine would blink the CapsLock and NumLock lights in a pattern indicating “CPU failure”.
I struggled through the trip, and when I got home I called HP. They sent me a prepaid FedEx box to return the machine for service. I did so, and monitored the status of the service order on their website. For a couple of weeks it indicated that they were waiting for a part to repair it. Finally it was returned, two days ago. The service slip indicated that the problem had been reproduced during tests, and the CPU had been replaced.
I booted it up, loaded some software, and closed the lid. The problem returned in a few minutes: fan on, catatonic, wouldn’t power down, “CPU failure” after pulling the battery. I called HP, and they gave me a new service number. I’m still waiting for the next step.
Perhaps this is just a lemon, but the “waiting for a part” is suspicious. It suggests that this may be a common problem Hopefully HP will replace it this time. (I wouldn’t mind a refund, but that may be too much to hope for.)

Catching up…

What with travel to China, and travel to the UK, and work, and holidays, it’s been a little hectic. So let me sip on this excellent Old Pulteney single malt from Wick, and catch up on a few items.

  • A month ago I blogged about the new HP laptop that I’d got for doing software development. I took it with me to the UK, since I knew I would need to be doing photo and video work which aren’t feasible on my work laptop. Unfortunately it started acting up while I was there, failing to come out of sleep or hibernate. When this happened, the disk and motherboard were powered up, but the screen was blank. Occasionally I’d see the CapsLock and NumLock lights blinking in a code that meant “CPU failure”. I nursed it through the trip, and checked in with HP when I got back. Yesterday I shipped it back for “repair”, which probably means simply replacing it. Fortunately I still have my Macs.
  • We went to see “Up In The Air” today. Brilliant. Great writing, excellent acting. The interplay between George Clooney and Vera Farmiga was simply delightful. Highly recommended.
  • That trip to England was hectic and unsettling in many ways. Lots of last-minute changes of plans, both family (my mother’s degree) and business. Yes, it was great to get together with family and friends, some of whom I hadn’t seen in 40 years. (Sorry I missed you, Jenny!) But there were two quiet moments that stand out. The first was visiting Ely Cathedral, just before sunset, with the choir practicing for a concert. And then on our way up to visit my mother for the last time before we left, we drove through Windsor Great Park, and pulled over for a moment to enjoy the wintry landscape, with Windsor Castle just beyond the trees.
  • When I got my iPhone 3G, I decided that the white model looked nicer than the black. That may have been a mistake. I’ve noticed a number of hairline cracks, at the corners of the connector cut-out, next to the mute switch, and along the sides. Apparently this is a known problem. It’s not clear whether all of the iPhones crack, or if it’s just that the cracks are only visible with the white plastic. I wonder if Apple will replace it.
  • During the short break between returning from China and departing to the UK, I managed to finish ripping all of my CDs into iTunes on my Mac Mini. (Many of them had been in storage, and I’d only just retrieved them.) The grand total: 14,522 items from 1,228 albums, performed by 2,082 artists. They occupy 78.46GB of a little WD USB hard disk (and yes, I back it up!) and to play every track would take 52 days. I know it’s not an extraordinarily large collection, but ’tis all mine. And I must confess that I find the idea of 52 days of music just a little bit disconcerting.

For those who get easily distracted by the newest toys….

From El Reg:

According to November 2008 stats (PDF) from Datamonitor – the international research firm headquartered in London – the world is still running 200 billion lines of COBOL code and about 5 billion lines are added to live systems every year. Believe it or not, between 1.5 and 2 million developers are still working with the 50-year-old programming language.

(Yeah, I’m looking at you, Ruby.)

Neo4j and graph databases

Here’s a nice introduction by Todd Huff to the topic of graph databases: what they are, and why they’re relevant. The author starts by trashing all of the candidates:

So relational database can’t handle complex relationships. Graph systems are opaque, unmaintainable, and inflexible. OO databases loose [sic] flexibility by combining logic and data. Key-value stores require the programmer to maintain all relationships. There, everybody sucks 🙂

And then Todd gets into a nice discussion of one graph database, Neo4j. He cites a piece comparing Neo4j with Hadoop. Hadoop’s great for shallow data reductions, like log processing, but really bad for deep relationships.
And don’t just read this piece; bookmark it! Because at the end, Todd includes an excellent bibliography of related articles.

A month with a netbook

Just over a month ago, I bought myself an Asus EeePC 901 netbook, and wrote a blog piece describing my first impressions, including the process of installing Ubuntu Netbook Remix as the default OS. And then I started using the device, and didn’t think much more about it.
A couple of days ago, a friend emailed me, and asked, “I haven’t read any comments about [the EeePC 901] from you. Do you like it? Was it all you thought it would be? Would you buy it again, now that you have experience with it?” Good questions.
First: yes, I like it. I’ve made two trips to California recently, for job interviews and apartment hunting, and each time I took the netbook with me. Previously I’d have toted my MacBook Air, and while I miss Mac OS X, Ubuntu is fine for the basics: email, web access, word processing, blogging, twittering, and so forth. And the netbook is half the size, with three times the battery life, at a fraction of the price.
The latest Ubuntu WiFi works just fine – it’s almost as easy as OS X. Audio is a bit of a pain: the function keys work sometimes, but not always, so I occasionally have to use the volume widget. More annoying is the fact that even when the volume is zero, audio output can still cause the speakers to buzz and click. Odd.
Sleep mode works – mostly. I normally close the lid to sleep, then open the lid and press the power button to wake it. However on several occasions the machine has failed to go into sleep mode; on one occasion I retrieved it from my backpack after a few hours to find that the battery was drained and the machine was really warm! After that incident, I have taken to watching the blinkin’ lights on the front edge of the machine when I put it to sleep; if it fails to go to sleep correctly (about 20% of the time) I open it up and reset it.
I’ve recently been thinking about what gear to take with me when I’m travelling to Shenzhen for Huawei. Both the MacBook Air and the EeePC 901 are plausible: both can support Skype, so that I can phone home. (However the Mac has better support for L2TP tunnelling with services like PublicVPN.com.) Neither machine has a DVD drive, however, so I bought a bus-powered USB external DVD drive from LG which I can use to watch movies on either system.
The size of the EeePC 901 has not proved to be a usability problem. The keyboard, trackpad and screen are all just fine. The only nit is that the space bar seems 1-2 mm too high, and it’s quite sensitive, so that I tend to catch it after typing bottom-row letters. However those who know me will confirm that I’m a lousy typist anyway, so it may just be me.
Would I buy it again? I think so – if not this unit, then an equally light netbook, like the Asus “Seashell”. But the combination of size, weight, and battery life is pretty damn compelling; the 8.9 inch netbook is my sweet spot. It’s a shame that manufacturers seem to be giving up on this configuration.
Several people have asked if I plan to install Mac OS X on the EeePC. Right now, the costs – complexity, problematic networking, screen size assumptions in some apps, GUI real estate usage – seem to outweigh the benefits, so the answer is no. Now if someone came up with a foolproof way of reading a Leopard installation DVD and writing a bootable SD card, I’d be interested in playing with it. Until then, Ubuntu will be just fine.
(And yes, I am composing this on the netbook. Not to do so would be silly, wouldn’t it?)

CloudSlamming

One of the unexpected benefits of being between gigs is that I’m going to be able to attend all of Cloud Slam 09:
CloudSlam'09
A number of friends – Werner, Rob, and Hal, for example – are going to be speaking, and it looks like an interesting agenda. And in these cost-conscious times, a virtual conference is the way to go. Nevertheless, five days in front of my computer from 8am to 7pm (and that’s EDT, or GMT-4, so it’ll be 5am onwards here in Seattle); that feels a lot like work! I must be sure to stock up on my personal fuel.

Programming your PDP-11

Here’s a wonderful intro to a collection of videos and instructional materials from the 1970s on how to program and operate a DEC PDP-11. First, toggle in your loader, then boot from paper tape…. Very cool, in a retro way. I did a lot of PDP-11 stuff back in the mid-70s.
[The videos are accessible on YouTube; the website with the other materials appears to have been brought to its knees as a result of being mentioned in Boing Boing…]

40 years ago, more or less: my first application

As the calendar clicks around, I’m reminded of an odd anniversary. Roughly 40 years ago – maybe late 1968, perhaps early 1969 – I wrote my first serious piece of software: a real application, used by real people, and constructed as part of my paid employment. I thought it might be worth revisiting that event.
The first thing you have to understand is that I’d had no computer-related education at all. The closest I came at the Royal Grammar School, High Wycombe, was an after-school seminar in the School Library, when somebody delivered a talk on computers. I’ve forgotten the content of the presentation completely; I only remember that the speaker passed around a core memory module for us to look at. (Hands up those who don’t know what “core memory” is, or how it works.) In the spring of 1968 I applied to Essex University to read Economics, and that summer I took GCE A Levels in Economics, Maths (A+S), and Physics. However I had already decided that it would be useful to spend what is now termed a “gap year” before going to university, in order to get some experience of the real world. Fortune (or nepotism) was in my favor, and I was accepted at the UKAEA Harwell to spend a year as a “Mathematics Assistant”.
I started in September 1968, and lived in a hostel (a barracks, really) in Abingdon. I was working for the Programmes Anaysis Unit (PAU), a group that was trying to understand the economic impact of government-sponsored research and development initiatives. We were interested in how quickly innovation spread through a marketplace, and what the return on investment looked like. I was the only assistant in a team of a couple of dozen eminent scientists and economists. They understood the policy issues, and most understood the mathematics. The challenge was gathering the data and interpreting it.
I started out on issues related to ROI. The models typically involved calculating the year-by-year impact of an investment, with each annual contribution discounted due to monetary deflation and substitution. I worked up a family of models of increasing complexity; for each one, I planned to accumulate the discounted annual contributions until the marginal return was less than some epsilon. But how to run them?
I was put in charge of the department’s Wang Programmable Calculator. The programming model was similar to more recent programmable calculators from TI and HP. The program memory essentially stored keystrokes, which were executed just as if you’d pressed them. Keystroke steps were numbered, and there were conditional and unconditional branch operations. For the Wang, the “program memory” was a pre-scored card, from which “chads” were punched out with a stylus; the card was then “read” in a device that looked like a small toaster. The output display used Nixie tubes
I programmed up my first model. It ran to completion in 5 minutes. My “second order” model took 30 minutes to finish. The “third order” model ran for four hours. When the “fourth order” model had not converged after an overnight run, I knew that I needed some better technology. My team leader, a physicist who had never recovered from the fleshpots of Cairo during the 8th Army campaign of 1942, directed me to the computing centre. There a rather startled young man with a huge red beard thrust a copy of “McCracken on Fortran” into my hand, created an account for me on the IBM 360/65, and showed me where the card punches were. Two days later, I’d completed all of the ROI calculations, and I was hooked.
In those first programs I used the 360 as a glorified version of the Wang calculator. I didn’t have to manage data sets, or design complex algorithms, or do anything for output beyond printing a single number. But the next job was different. Several PAU teams were interested in how technologies were taken up by a marketplace, and then (as now) it was assumed that adoption tended to follow an S-curve. Today, curve-fitting is a standard feature of every maths library, but in 1968 we were making it up as we went along. Furthermore we weren’t simply throwing a best-fit curve through a bunch of points: we had a number of exogenous constraints that we had to respect.
One of my colleagues came up with a nice set of linear transformations for the primary equations (Sigmoid and Gompertz), which meant that I could vary one parameter (usually the asymptote, which was constrained anyway) and use a linear fit to generate the other values. I demonstrated experimentally that graphing the residual errors against the asymptotes had a single minimum, so I was able to use a simple bisection approach to find the best fit. Some of the data sets were too big to fit in memory, so I added a buffered input reader to stream the data from the disk (or was it a drum?).
My first version of the program simply output the parameters of the S curve and the residual errors. This was OK for the mathematicians, but unsatisfactory for the policy wonks. I made friends with the red-bearded guy in the computer centre (who would later be my lecturer at Essex University!), and discovered that the IBM 360/65 was equipped for COM, or Computer Output on Microfilm. I cut-and-pasted some code from the COM system documentation, and augmented my application with full graphical output, showing the original data points (or bucketed samples thereof) and the various s-curves that corresponded to the different constraints.
By this point, I was more or less lost to the PAU. While I kept doing minor tasks for them, I spent 80% of my time in the computer centre, and by the time I left in June, 1969, I was helping teams from all over Harwell with their applications. I’d also moved on from punched cards to a teletype-based RJE system, which was only one step away from being a real interactive system. (For that, I had to wait until I encountered the PDP-10 in 1970.)
Meanwhile my application was used for a number of years. When I returned to a different branch of Harwell in the summer of 1971, I was asked by my old team to make several small enhancements. Naturally, I looked at the code I had written, and was mortified at how primitive it was. But it was my first, and self-taught to boot, so I cut myself some slack and fixed it.