Category Archives: Computers

Alan Kay and ACTA

As an amusing aside from the previous post, thinking about early HCI work and reading about all the ACTA nastiness (wikipedia link for pseudo-neutrality, my feelings are more in line with the “What the F*CK!” stance over at this BoingBoing post) at the same time reminded me of one of the most amusing bits from Alan Kay’s original publication on the Dynabook concept (from which most modern ubiquitous computing descends) A Personal Computer for Children of All Ages:

The ability to make copies easily and to “own” one’s information will probably not debilitate existing markets, just as easy xerography has enhanced publishing (rather than hurting it as some predicted), and as tapes have not damaged the LP record business but have provided a way to organize one’s own music.

He may have been a little off on that front, the ability to make an infinite number of perfect copies (something that neither xerography or cassettes can do), and distribute them over arbitrary distances for virtually nothing did change things in ways that don’t really leave room for the old-school media middle-men. The fact that technology has changed the world is not something to be legislated against, particularly when doing so will will criminalize socially normal behavior by those who adapted, to benefit those who did not.

The latter portion of Dollhouse (which is way, way better than the first few) is largely about this kind of (un)intended consequences of technology (which is something I really enjoy thinking about), and has kept it on my mind, but I’m going to wait until the last (booo!) episode airs later this week to babble about that.

Posted in Computers, General, OldBlog | Leave a comment

HCI: Information Theory or Ergonomics

I was doing the first (actually, second, the first was an article from perennial human factors design blowhard Donald Norman, just like I was joking it would be) reading for my PSY562 class, and was kind of disturbed by the degree to which the book seems to treat human technology interaction as a totally pragmatic enterprise that essentially reduces to ergonomics. This stance may make sense with simple mechanical systems, but the human computer interaction I am most familiar with has always seemed more meaningfully posed as an information theory problem than a simple issue of lubricating a system.

Looking at the big HCI pioneers, we get people like Ivan Sutherland, who’s most famous work, sketchpad, was done as his PhD. project under Claude “The father of information theory” Shannon, and Douglas Engelbart (of hypertext and the mouse), who thought of HCI as a matter of Intelligence Amplification which is more “transhumanism” than “building better tools”.

This may just be an artifact of the bad nomenclature in the field; some people, particularly in Europe, tend to use “ergonomics” as a name for the whole field of human technology interaction (Or human-centered design, or human factors, or any of half a dozen names with slightly different implications…). The inconsistent nomenclature is to be expected in a field that draws from so many other more established fields; psychologists, engineers, and designers all tend to use different, incompatible vocabulary with different, incompatible shades of meaning, but that doesn’t really make the situation less bothersome. I’m partial to phrases like “Human Technology Interaction,” because they imply accordances on both sides of the line. Terms like “Human Centered Design” always strike me as implying a system of presenting shallow models to make things “easier” for users, which don’t actually take into account the real mechanisms of the underlying system. This kind of design tends to be grossly inefficient for the technology, and break down as soon as something unexpected happens. It should make for fun discussion in class.

Related Note: While looking at related material, I FINALLY put together that “Intelligence as an emergent property of (reducible) distributed systems” Danny Hillis and “Chief architect/co-founder of Thinking Machines” Danny Hillis are the same person, who was also a student of Claude Shannon. How the fuck did I never put that together?

Posted in Computers, General, OldBlog | Tagged , | Leave a comment

PoS Toy

I scored a (at least mostly) working Point of Sale terminal from the trash at the nearby location of a fast-food sandwich chain named for a mode of mass transit. It’s a pretty nifty little piece of hardware, a Micros Eclipse 400498, based on a 1Ghz Pentium 3, 512Mb of RAM, and normal (ish) PC-BIOS. It has a broken WinXP install on it now, I think it shipped with an older NT version, because the drivers are all fucked up. The fun part is the attached goodies: a 3-track magnetic stripe reader (credit cards, etc.), 2-line VFD display, and a 12” touchscreen (only 800×600, but pretty crisp and good colors).

I’m thinking it will make a bitchin’ jukebox. Scroll the track information on the VFD, put a touch-flow-esque interface on the touchscreen, hook up some speakers, etc. One of the housemates suggested a barmonkey (it could even process payments), but that is a WAY more involved project because of the valve rigs, and I have plenty of unfinished involved projects right now.

It is however being obstinate about drivers and alternative boot devices, and the manufacturer (micros) seems to believe that not providing any drivers/manuals/support of any kind will enforce support plans/upgrades/create security by obscurity or something, because their website is supremely unforthcoming. There don’t appear to be any WinXP compatible drivers for the various hardware, so the best choice is probably to try for Linux. Its not wanting to boot off USB devices (despite the BIOS’ claims that it will), doesn’t seem to like having a 2-channel ATA cable attached, has no CD drive, and has repeatedly failed on the wubi-install-from-USB trick, so it will be exciting to get going. Maybe some sort of netboot stunt.

Posted in Computers, DIY, General, OldBlog | Leave a comment

The Missing Modifier Key

My usage patterns of late have lead me to the conclusion that something critical has been omitted with modifier keys. Modifier keys are those keys that alter the meaning of keypresses, things like Shift, Alt, Ctrl, Windows, Apple, Option, Command, Function… (I think that covers most common modern keyboards, there have been others). The omission is that no environment I’m aware of reserves a key for the system; applications are always able to intercept the key-presses and do inconsistent things with them (I’m looking at YOU old fashioned text editors). A key reserved for the system (or, actually, the window manager in most stacks) would be useful in a variety of ways, all derived from implementing truly uniform behaviors system-wide. I’ll call this magical key “Sys” (for System Key, its a surprisingly little-used phrase).
Modifier keys have always contentious (and well-storied) things; see oldschool cokebottle jokes and this story about the early Macintosh (near the bottom, that isn’t the one about the symbol, but it may as well be here too). As such, I’ll provide two motivating examples for the addition (or forceful re-purposing) of a modifier:
* I’ve lately found myself hitting Ctrl+T and starting typing a query, expecting a fresh firefox tab preloaded to a google search box. Unfortunately, this doesn’t work so well something other than firefox has focus. I would like to be able to set Sys+T to “Bring the most recent Firefox window to the foreground (or launch it if there isn’t one), and pass it the command to open a new tab.” This should be easily possible with normal NetWM (or even ICCCM) capable window managers, as far as I understand the specs. There just isn’t a good interface for it (AFIK).

* Switching between Ctrl+C/Ctrl+V and Ctrl+Shift+C/Ctrl+Shift+V for copy/paste when switching between applications that have the luxury of following modern conventions and a terminal emulator is distracting and error prone. “Break” and “Background” are useful and have precedence, so I don’t begrudge the behavior, but the “correct” solution would be to have Sys+C and Sys+V manipulate the clipboard (which is (usually, mostly) managed above the application level anyway) in a context-insensitive way.

I know there are ways to approximate this behavior; many media players allow you to set global shortcuts to control them (which may conflict and are usually flaky); most environments have conventions which are theoretically consistent across applications (which are often disobeyed, particularly by still-useful applications written before the standard was established). This isn’t what I’m talking about. The “system only” nature of the key shouldn’t be optional. The window manager should trap anything between press and release of the sys key, including the presses themselves (press and release are separate signals for most keys on every keyboard design I know of), and handle the event, leaving applications completely unaware.
I’ll probably try to adapt XFCE (which seems to have pretty good facilities for this in place already) to as much of my desired behavior as is easily possible, using the windows key as my Sys, when I next have time for a little project like this (ha…). It may even be possible simply by abusing the keyboard preferences, which would be another victory for good old flexible Linux.

Posted in Computers, General, OldBlog | Tagged , | Leave a comment

SC09 Retrospective

I failed to blog interesting things from SC09 in real time, so here’s a dump of the things that should have gone up in pieces from the show floor. Some of these are just quick shout-outs for particularly good or bad exhibits, some actually have thinking behind them:

*The dominant message from supercomputing this year is “Everyone wants GPUs. No one knows why.” Even the ISVs are pretty honest about this phenomena, but the feeling seems to be that at around 10% of node cost (according to two different vendors), organizations who are buying really big pieces of hardware feel like the expenditure is a worthy experiment even if they are nigh impossible to utilize now.

* The Hank v. Nvidia rep “discussion” (which is apparently becoming an annual phenomenon) was good enough to draw a small audience.
4123038291_3f58b0bffd.jpg
This year’s opener was an attempt to get the MOG stuff published on a new nvidia-sponsored content aggregator (like gpgpu.org, but without the neutral perspective), so they can claim to be involved if/when it takes off, even though they have been entirely unhelpful with the research. As you may imagine, this didn’t go over well. On the upshot, they DO seem much more willing to admit their programming model is crap, and seem to be sniffing around for alternatives (which included shooting job offers for toolchain developers into our booth).

* The award for shittiest booth goes to the Windows HPC Consortium.
4123803340_5c3e73e253.jpg
Microsoft themselves had the largest booth on the show floor, replete with blue carpet, vacuous cloud-motif hangings, a flight simulator, booth babes (and dudes) dressed up in pilot outfits, aviator shade schwag, and almost no technical content. Their users got a booth that looks like it was assembled by a deficient kindergarten teacher with a budget that wouldn’t cover lunch. Way to show contempt for your users, Microsoft.

* Green Revolution Cooling have an idea which is either brilliant, or absolutely moronic. They have extended and refined the old tweaker trick of sticking a whole system into a vat of mineral oil up to whole NEMA racks. The current arrangement has all the visual appeal of an industrial size deep fryer, with which it probably shares a lot of lineage:
4123806150_514c247a23.jpg
Come on guys, some LEDs and translucent plastic to hide the ugly would go a long, long way. IF they can get around the issues of mess (even with low vapor pressure, between evaporation and splashes the oil will get EVERYWHERE), capillary wicking (a perennial favorite in DIY liquid immersion cooling solutions), service issues (most vendors won’t be real happy about an RMA box dripping with mineral oil, and getting it off will involve a hell of a lot of solvents to have in a computer), the benefits should be great. Quieter, lower power cooling (no fans or blowers), no condensation concerns, easy to reclaim heat, and the opportunity for denser, cooler systems (thanks to the vastly higher heat capacity of oil). There is actually a little bit of consideration about trying a small installation in the new Marksbury Building, since it will fit nicely with the blustery green BS surrounding the building (and hopefully attract vendor testing hardware.)

* The Cray CX1 and SGI Octane III are both adorable little desk-side supers. At a base price near $10k for each, they better kiss your toes while they’re down there though. The Cray is definitely cuter in person, the SGI box just looks like a miniature NEMA rack. There were plenty of examples of each tucked around the show floor…which is probably the only place on earth that can claim that.

* FPGAs are still floating around in the margins. Pico Computing (one of our neighbors on the exhibit floor) is making some some really attractive little FPGA boards, at surprisingly reasonable prices (entry cost ~$400). Most of the FPGA vendors on the floor were at least one and usually two orders of magnitude higher. Digilent (who made both the little Spartan 3 board I have, and the Vertex2 board being used to prototype LARs ) used to be pretty much the only show in town at the entry level. Digilent still seems cheaper per gate, but Pico’s form factors and interfaces look better for computing applications (and are just plain cuter). Some of the other FPGA products on the floor were just monstrous(That thing probably costs more than my entire college education). I’m a little dubious about FPGA-based accelerators (Convey, has the only convincing boards that actually do computation I am aware of; some other vendors have FPGAs doing useful work in the network mesh), but they sure are cool prototyping platforms. As a side note, one of the handful of good technical conversations I had was with a compilers guy from Convey.

I threw up some of my pictures from the trip in a flickr stream for those who are interested.

Posted in Computers, General, OldBlog | Tagged , | 1 Comment

SC09 Booth Hacks

sc09booth1.jpg
The aggregate.org booth is cheap. Really cheap. So cheap that most of the major vendors have single pieces of hardware that cost more than our entire booth. But we still looks classier than all but a handful of the booths on the exhibit floor. This is because we were clever. Where other exhibitors have 42”+ LCD screens, we have large swaths of plasticized paper, wrapped around a modular shelving frame, and rear-projected to by a bunch of old XGA projectors. Because all displays have black backgrounds, we have what is visually four, four foot diagonal displays with no edges. For less total cost than a single 50” LCD. The group has been using a rig like this for years.

I’ve already written about the sign tower. It’s now complete, and is the kind of object that other people use as a beacon to navigate the show floor. It is also the mount for our previously mentioned slow update skycam.
printondemand.jpg
A new clever widget of ours is the on-demand handout printing system. We new we wanted on-demand printing, so we brought a printer, a big lighted trackball, and an extra (decade old) laptop. Over the course of the morning, I assembled an intentional-, professional-looking setup. Originally, I was envisioning a simple, full screen, GTK application, but setting up one-click printing in GTK is a pest, so I came up with a much, much better hack (erm…solution): HTML. I made a simple HTML page, with a table of captioned 300px wide thumbnails of the technical handouts, linked to the real PDF files. I then abused the Firefox settings on the laptop, so that the default automatic handler for PDF files is… lpr. One click, and the requested file is automagically printed, in a separate background process, with the queue managed transparently by CUPS. Set Firefox to full-screen display, and, with a little bit of styling, instant classy interactive on-demand printing interface, that isn’t an obvious hack job. Based on opening night, the slow printer is having a little trouble keeping up with demand, but so long as we keep a reasonable buffer, the system is really nice, and the slight delays it produces have repeatedly given visitors a chance to latch on to one of our other projects.

Thus far, definitely a fun conference, with lots of neat things to do. Also a really, really large conference; the woman at the checkin desk at our hotel said the conference took up about 6,000 rooms,and the idea of 11,000 or 12,00 attendees isn’t incongruous.

Posted in Computers, DIY, General, Objects, OldBlog, School | Tagged , | Leave a comment

Anti-Convergence

I saw a couple of really impressive examples of Anti-Convergence on the trip to Portland, and ran into a couple pretty good arguments for the concept. The best example was the girl in front of me on the long leg of the flight; she was dual wielding an iPod Touch (or iPhone) for games, and some sort of hard drive based music player for music. The strange thing is, I’m sure the experience of each was better than using the touchscreen as a convergence device as I’m sure Apple intended. Touchscreens are still terrible interfaces for music players. I use, and for the most part enjoy, my n810 as a music player, but the inability to use it without taking it out and looking, like I could with the physical interfaces of it’s predecessors, is frequently irritating.
I ran into several good reasons for not using a single device, because I was (so much as I could) doing so. I was, for several hours, using my n810 as a a music player and ebook reader. The combination keeps the onboard DSP and the screen (with backlight) enabled, which drains the battery very much more quickly than either operation (particularly music only) on its own, to such an extent I had to switch to reading a dead tree book or risk killing my entertainment. The thing is, I don’t need more battery (MOAR BATTERY!) very often, just on a rare, almost always premeditated occasion. Maybe those silly little rechargeable external battery pods are actually a good idea.
This hits both issues; the eggs in one basket problem, where having a single converged device leaves a single point of failure (compounded by my tendency to hack on my gadgets), and the battery tech issue, where the ability to power gadgets is significantly lagging other gadget features right now.
I also always run into a pair of problems with cellular convergence devices; the blooducking assholes in the cellular industry, and the potential for breaking my phone. There is a strong tendency to lock down the ability to hack on devices with phones, and the ones they haven’t locked down are extraordinarily expensive. There is a fairly valid argument for the lock-down, as it is a reasonable concern that users (or some black-hat assholes’) actions could disable the cellular functionality, potentially cutting someone off in an emergency.
Maybe one day there will be a magical converged device (perhaps one of these things with a dual-layer epaper+active screen?), that will fit in a pocket and suffice as a web access mechanism, phone, music player, and ebook reader. Until then, I’ll keep eyeballing all the fancy new widgets, and using my collection of (moderately) reliable old ones (and dead tree books) until there is actually an improvement.

Posted in Computers, Electronics, Entertainment, General, OldBlog | Tagged | Leave a comment

Google Go

Being in a programming language design course (and being the sort of person who would play with it even if I weren’t) google’s new programming language, Go, is pretty intriguing. A few of the things I notice:

* There are some pretty significant people behind it. Ken Thompson (one of the great old bearded ones) lends a lot of credence to anything he touches, and Robert Griesemer and Rob Pike both have pretty distinguished records of their own.

* Really? “Go”? There is already a (very low profile) language “Go!” which is causing a bit of a stink (the suggestion of renaming Go “Issue 9” is really clever, particularly in light of the people involved; I’d support it). There is also the problem that “Go” is essentally impossible to google for, and “Go Programming Language” has the acronym “GPL” which is already pretty well populated in the computer context. Also, the game Go has Go taken in computational circles. Too many conflicts to be a good idea.

* SLICES! — OMG YES SLICES! Slices are one of those features that I miss whenever I am writing in a language that doesn’t support them. There aren’t many software languages with slice support, but Verilog and some of the other HDLs have them and they are wonderful. The implementation (slices are associated with an array which contains the values, and merely provide bounds) isn’t bad, and the “create a hidden array for a slice not associated array” feature isn’t too heinous, although perhaps it would be cognitively cleaner to restrict slices to existing arrays, or make them genuinely first class.

* Baked-in concurrency goodness. They don’t seem to be quite done with this (FAQ even says so), but having language primitives for concurrency and well-defined concurrency/atomicity behavior over the whole language is becoming really, really desirable with the advent of many-core, many-thread machines and quality generic software tools to automagically parallelize serial code looking rather unlikely (but very cool). I’ve noted that proper concurrency models are something to appreciate before, and will probably do so again.

* I’m not entirely clear on what kind of usage they are envisioning for Go. It isn’t really suitable for the OS people; it has no pointers, no explicit memory management, no existing OS with appropriate hooks to use it on… (that said a Plan9-like OS, written as much as possible in Go would be rad). The applications and web people have moved on to ;decadent languages with unbelievably gigantic standard libraries (<rant> and given up any pretense of programming for the computer that will be running the code over and over and over, it’s all about the developers who write it once and maintain it…</rant>). One environment where it would be very nice is old-style low-UI applications and services (ie. once the bindings are in place it would be nice for *nix daemons). Having spent a fair amount of time poking around inside of compilers it would be quite well suited for compiler development as well; I bet we’ll see a bootstrap compiler in a matter of months.

* I’m feeling some of the same vibe as D (which I briefly fiddled with some time ago) coming off of Go, but Go seems MUCH cleaner. D holds on to most of the ugly in C++ (which I’ve never met anyone who refutes is an ugly language, even Bjarne Stroustrup is on board with that assertion), while Go is creating a clean start, and not including all kinds of decadent features.

Posted in Computers, General, OldBlog | Tagged , , | Leave a comment

SC09

I will be attending SC09 in Portland Oregon November 14-19 with my research group. In the standard spirit of having impressive low budget booths, this year our booth will feature a 4-sided rear projection display, a 16ft lighted sign (just the skeleton in the picture), both made chiefly from modular shelving, and the MOG maze. I volunteered myself to take care of allot of the preliminary arrangements, so I’ve spent an unspeakable number of hours over the last two weeks making sure everything was ready to go. This included setting up half a dozen computers, and finding and packing many of the booth’s component parts into nice rectilinear blocks to load on to our shipping pallet . I’m hoping that kind of behavior will slowly introduce my advisor to the concept of “doing things ahead,” which is, by all appearances, totally foreign to him. He noticed packing was easier this year; I’m not sure he understands why that was.
The pallet was (or at least should have been) picked up by the shipping carrier a little after noon today. Hopefully everything important is on it.

Posted in Announcements, Computers, General, OldBlog, School | Tagged | Leave a comment

Karmic Koala

I (probably foolishly) bumped my spare machine (which has lately acted as a jukebox/CIFS server) to Ubuntu 9.10 “Karmic Koala” the day it was released, since the machine doesn’t do anything critical. For a point upgrade on a fixed release system, it was quite smooth, but I’ve discovered a weird bug with SMB and FUSE that I haven’t yet been able to find a solution to. The basic jist of the problem is that under 9.10 it seems to be impossible to share things stored on volumes mounted via FUSE over CIFS; it just throws permissions errors when clients try to connect, even if guest access is enabled. There are other reports of Samba issues after upgrading to Karmic.
I’m reasonably sure it’s some kind of permissions issue having to do with the combination of ntfs-3g/fuse (the drive it shares is a large NTFS-formatted external drive) and Samba in conflict, but I haven’t yet managed to track it down.
Other than that one minor regression, Karmic seems to be a nice clean incremental update; no amazing new features (at least that I care about), and no catastrophic performance regressions or other classic upgrade symptoms. The noticeable improvements are mostly the result of moving off of the obsolete branches of various pieces of software, so modern plugins and compatibility improvements are available.
I’ll update this post with a solution if and when I find a solution, discounting “Install a more predictably behaved OS” style solutions.

Posted in Computers, General, OldBlog | Tagged , | Leave a comment