focusing on the screen

Biella asks if I can read novels from a screen. Yes, I've read what has to be getting close to a thousand novels that way, over the past 8+ years.

I was thinking about this just the other day as I read The once and future e-book: on reading in the digital age. That article does a good job arguing against many of the common complaints about ebooks, such as "I can't read an ebook in the bathtub".

my pile of paper

Right now, I have a pile of paper books I want to read or am in the middle of reading. But if I want something new to read, I don't reach for that pile, but for my (much larger) directory of ebooks. The pile of paper is reserved for special occasions: plane trips, camping, etc.

I started reading ebooks in circumstances where it was too hard to get access to paper ones. Traveling in the third world, hauling along a lot of paper books wasn't practical. Living rural, where every book had to be backpacked in.

I've stuck with it because it works for me and because I've enjoyed stretching my muscles of concentration on the screen. To me, the focus required to read an ebook from the screen is similar to the focus required to work on a program. And completly different than skimming through a web page.

The best example of this that I have right now is Real World Haskell, which I've almost finished (hurrah!) reading in a combination of paper and web editions. I was only able to stick with reading this book when I got the paper version. I use the web version for reference, or for looking for help on a challenging part of the book. For reading, it's just too much a web page; too easy to skim, or be distracted by the comments that can be attached to every paragraph, or jump off to Wikipedia.

screenshot of my ebook reader

Just as most programmers tune their development environment so that it uniquely suites them, I've put a lot of thought, trial, and error into tuning my ebook reading environment. The most important thing seemed to be getting rid of anything that interfered with focusing on the text. Since I wasn't (easily) able to use that environment for reading Real World Haskell, I wasn't able to read it from the screen.

Posted
mmmmm

I took the package of blackberries from the freezer, where it had sat, neglected since I picked them from my fecund vines in August. They had some frost on top; it didn't seem that the wait could have improved them.

But, I figured, let's do this right. No store-bought pie crust, made my own with lots of love, and no little trepidation, since pie crust is not my strong suite. Put it back in the fridge to rest as I melted the frozen berries. Added some honey, then worried I'd sweetened it too much. Seemed too runny, so added some flour. Spent what seemed a long time criss-crossing strips of the pastry on top. Which, now that I look at it, doesn't seem to be quite the way it's typically done, but whatever.

45 minutes later, it came out, and bliss, it's the most perfect pie I've ever made. Crust acceptably flaky, berries just the right mix of tart and sweet. But mostly, it tastes of summer and care, and the wait seems to have been worth it.

So that's my Debian release pie.


On the software side of things, I didn't do anything much toward making this release happen. Indeed, I have forgotten most of what I put into the mix earlier. (Something to do with armel, and firmware, and maybe boot menus?) It was a nice change to sit back and watch and not worry (much) about doing anything myself.

I think that someone fell asleep in his chair while running the CD builds and had to get a wakeup call early this morning to finish. Dedication. Seems like there should be a better way, but you can't argue with the result.

Previously: Easter Etch, Releases and Such, Where was I When ..

debhelper dh overrides

This is a followup to the earlier design of dh. After converting many packages to minimal rules files using dh, I find that it works very well for the 3 line rules file case, which works for 80% of packages. But getting from there to a slightly more complex rules file that 20% of packages need can be non-obvious.

So, let's make it obvious.

Suppose I want to run dh_compress -Xsomefile. But my rules file as it currently stands doesn't offer an easy place to run that command:

#!/usr/bin/make -f
%:
    dh $@

To use dh in this situation you had to go look up rather a lot of boilerplate, and to insert an explicit version of the right target, with the right dependencies, that called dh before and after your command:

#!/usr/bin/make -f
%:
    dh $@

binary: binary-indep
binary-indep:
    dh $@ --before dh_compress
    dh_compress -Xsomefile
    dh $@ --after dh_compress

That took me half an hour to come up with, and I wrote this stuff! Also, if I want to override a second command, I have to do it in the right order. So, the full flexability of debhelper is there, but it's too hard to get at.

Here's the new new thing.

#!/usr/bin/make -f
%:
    dh $@

override_dh_compress:
        dh_compress -Xsomefile

What this does should be obvious. These override targets can be written for any debhelper command that you need to change the default behavior of, or even avoid running at all.

override_dh_auto_configure:
    ./configure --with-kitchen-sink

override_dh_auto_test:
    # The test suite for this package is busted on s390.
    if [ $DEB_BUILD_ARCH != s390 ]; then dh_auto_test; fi

The overrides can also be used to run additional stuff before, or after any debhelper command:

override_dh_clean:
    dh_clean
    rm -rf build_dir

So, I think that's beautiful. Simple, clean, no boilerplate, and intuitively obvious if you are familiar with debhelper.


FWIW, the implementation, which will be in the next debhelper release unless someone screams loudly, is not beautiful. Mostly because I sorta shot myself in the foot with the cute implicit "%:" rules. But, I got around it. :-)

new project

So, I've had this plan for ages to follow up with what I did with my nslu2, and hide a Debian box inside a working stereo.

Finally I've started work on this little project. I bought a cheap stereo with CD/tape/radio, mostly on the criteria:

  • It needed to be big enough to stand a chance of fitting my qnap board and a full size SATA drive in it. But not too big..
  • It needed to have line in. Luckily, most stereos do, thanks to ipods.

I got lucky.. after removing the CD drive, ripping out the battery compartment, and making other modifications to the interior of the case, I had just enough space to fit the qnap board, with centimeters to spare in some places, and millimeters in others. It fits perfectly. The board's LEDs and reset button will be accessible via the CD slot.

I was able to keep the radio and amp working. Wiring up a USB sound card to that was easy.

I could have kept the cassette deck working, but since I don't have any more of that media, I stripped it, and am planning to put a USB hub in there, accessible by pressing Stop/Eject. ;-)

It seems I will even have a fair bit of empty space. Pondering adding a small UPS. Or, I might toss in an access point.

Posted
my stereo

Can you tell there's a whole linux machine loaded with hundreds of albums in there? Well, the USB ports on the front panel, and inside the cassete tape deck are a bit of a giveaway, as are all the blinkenlights.

Details here.

I'm still suprised I got it all squeezed in, put together, and working. Some things fit better than I had any right to expect:

tiny airgap between the QNAP computer and front panel control board
Posted