Category Archives: Computers

SC12 Impressions

I’ve got my pictures from the event up in an album in google’s cloud.

Here are the big, cool things I learned on the floor or at the various evening events:

  • Xeon Phi. Xeon Phi everywhere. Intel may have backed off on Larrabee, but the MIC descendants are proliferating quickly, and appear to actually be in use. They really are interesting parts – 60 node Linux x86 SMP box attached to a host system over PCI Express via a network-like interface. Somewhere between a tiny desk-side cluster and a GPU with a programming model you can actually use.
  • The population was much less male dominated than is typical for computing events. This is always a good thing.
  • The average age of attendees also seemed to be down by the better part of a decade.
  • The national labs losing their booths to the government-wide travel restrictions (apparently some folks went junketing in Vegas and it was that bad) changed the feel of the floor. Fewer, but longer and deeper conversations. More open layout, because many of the usual big constructed booths belong to the national labs. Users from the national labs hanging out at vendor’s booths. Not altogether a bad thing, but it was quite different.
  • ARM64 (aka aarch64, aka ARMv8). It is happening. It is odd (64KB pages, etc.). Large companies are being bet on it. We’re talking many billions of dollars, biggest bet since Itanium kind of big. The priority seems to be avoiding the Itanium mistakes, making sure the designs arrive promptly, and making sure software support is ready. Dell is talking quietly, Calxeda is gunning for it, Nvidia was showing (but only quietly) plans, AMD is being pointed to as a likely leader, and ARM was is sitting in their little 10×10 booth along one wall of the exhibit floor looking very pleased with themselves.
  • AMD is dying. The untimely (and vigorously denied) rumor that they hired J.P. Morgan to begin plans to sell part or all of themselves made it look even worse, but they had almost no presence on the floor, and scheduled a tiny booth next year.
  • We talked to a number of networking vendors making interesting things (free-air optical switching, multi-port Ethernet NICs, etc.). Infiniband is so good and so cheap (in a relative sense) for cluster applications right now that everyone else is hunting for an edge. This is a good thing for researchers.

There will be at least one more SC12 post later, when my cube of schwag arrives. The T-shirt harvest was great this year…

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

SC12

I will be at SC12 November 10-16, with the Aggregate.org/University of Kentucky exhibit in booth 631.

I will be posting pictures and impressions through at least one of my online presence mechanisms . I fully expect it to be weird this year with a bunch of the national labs pulled out due to travel restrictions, but it should be interesting.

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

I just wanted to make a pointer to this /r/archlinux thread about dropping ConsoleKit support for a systemd-specific replacement, because I think the discussion (that I waded in to) is revealing about how the current “Linux is increasingly un-UNIX-like, and … Continue reading

Posted on by pappp | 1 Comment

Pigeonhole Contamination

I just had one of those “My whole life is a lie!” moments while preparing to teach the CS275 (discrete math) recitation that includes the Pigeon Hole Principle section.
Years ago, I took my basic discrete math course from Dr. Ken Calvert, who notably recieved his Ph. D. from U.T. Austin during the time Edsger W. Dijkstra was faculty there (this will become important in a moment). Dr. Calvert taught us several formulations of the Pigeon Hole Principle, including the traditional

Pigenhole Principle: “if more than n objects are distributed into a set of n compartments, some compartment must receive more than one of the objects.”

the Purified Pigeonhole Principle: “For a non-empty, finite bag of numbers, the maximum value is at least the average value.”

And finally the Refined, Purified Pigenhole Principle:“In any finite set of numbers, the maximum is at least the average, and the minimum is at most the average.”

What I didn’t realize until now is that the Purified Pigeonhole Principle is a Dijkstra-ism, and the Refined, Purified Pigenhole Principle may be unique to Dr. Calvert (or at least some set of people contaminated by Dijkstra).

Dijkstra objected to teaching the traditional formulation of the pigeonhole principle, and lays out his argument against it in EWD980 (for those not familiar, one of Dijkstra’s famous quirks is that he took meticulous hand-written notes, all marked “EWD” and numbered. There are a number of mathematical concepts named for whoever related them to Dijkstra, simply because his notes are the first rigorous written record.) Basically, he claims that the typical form requires explicit instantiation, is an operational formulation (and those are bad), and is a statement that locks the student into its chosen analogy. The PPP formulation is also more general than the traditional PP formulation with less verbiage, and makes the (also correct) contrapositive more obvious. I am not as clever as he was, just go read the EWD. Furthermore, I can’t find any mention of the RPPP online except for on Dr. Calvert’s own pages. Since the RPPP is the PPP with the contrapositive manifestly stated, I suspect the name may simply be to indicate it is a refinement of Dijkstra’s approach to teaching the PP.

…So naturally, I started at EWD980 until I understood it well enough to teach, took some notes, and will contaminate my students with the alternative formulations tomorrow, because it is a better formulation for many tasks, and because EWD is one of those rare people who is generally more correct than the common wisdom. I do think knowing the traditional formulation is important, and easier to apply to a variety of common tasks, but knowing both is better than either.

Posted in Computers, General, School | Leave a comment

Linux Future

Some time ago I came across yet another angry discussion[1] about systemd, and have been reading and thinking a great deal about the design of Systemd, and what it says about Linux. I’ve come to realize that the strife in the Linux community is because an active and well-funded group of developers who have been driving the direction of various core components are not building UNIX. They are building some other philosophically divergent system on top of the Linux kernel, with roughly the same relationship to UNIX as Plan9[2]. For convenience I’m going to call the non-UNIX environment they’re building FLOS for the remainder of this post (F since the FreeDesktop.org folks, and their backers in the Fedora project, are driving this, L for the Linux kernel, OS should be self-explanatory). I intend this term to be value-neutral[3].

To me, the core of a UNIX system is a philosophical matter. To quote Mike Gancarz’s The UNIX Philosophy from 1994, UNIX has 9 paramount precepts:

  1. Small is beautiful.
  2. Make each program do one thing well.
  3. Build a prototype as soon as possible.
  4. Choose portability over efficiency.
  5. Store data in flat text files.
  6. Use software leverage to your advantage.
  7. Use shell scripts to increase leverage and portability.
  8. Avoid captive user interfaces.
  9. Make every program a filter.

FLOS is a nearly diametrically opposed design, with design concepts like the following:

  • FLOS avoids scripts, and prefers to split tasks into compiled logic interacting with logic-less configuration files.
  • FLOS prioritizes ease of machine manipulablity over human manipulablity.
  • The components of FLOS communicate over D-Bus rather than sockets and pipes.
  • FLOS is built on a core of monolithic programs which attempt to synergisticly manage multiple complex components.
  • FLOS leverages features specific to Linux and ignores portability.
  • FLOS prefers tightly integrated components to generic solutions.

I’m not sure that this is a bad design, but it is most definitely not UNIX or anything like it. I’ve seen some fairly convincing arguments that the FLOS design philosophy has serious benefits, and there are decades of convincing arguments that abandoning the UNIX way is the path to ruin. Systemd is the big realization of the FLOS design, but many projects, especially FreeDesktop projects, have been working this way for some time. I’m going to pick out a couple examples and talk about them under the fold.

Continue reading

Posted in Computers, DIY, General | Tagged , , | 114 Comments

Learning Computers

Playing with the Raspberry Pi has me thinking about it’s touted promise as an Educational Computer, one of its stated design goals. I actually think about what a good computer for learning about computers should be quite a bit, out of both personal and professional interest, and have been building a list. I hear an older generation talk about their Apple IIs and ZX Spectrums (and occasionally even access to mainframes through parents) as formative experiences, and I’ve come to appreciate that the stream of interesting old computers my parents kept me supplied with as a child were an amazingly formative experience, and one I can never thank them enough for, so it is interesting to think about what will fill this niche for children growing up now.

For the sake of brevity, we’re going to call this kind of computer a “Learning Computer.” My idea of a good learning computer is:

A Real Computer
A good learning computer has to be usable for the same kinds of tasks as contemporary computers, in the same general manner. It can be limited and inferior, but it has to be basically analogous. Little development boards and Microcontrollers and the like usually don’t make it on this point.

Not “The” Computer
A good learning computer will always be a second (or n-th) machine. No one wants to break the computer they use day-to-day, and learning on a machine people depend on restricts one’s ability to really tinker with it. It is especially important to have another machine with which to get help when things go wrong with the one you are tinkering with.

Cheap
A good learning computer will be both cheap enough to be given to or purchased by anyone curious, and cheap enough that the owner isn’t overly afraid of destroying it. This is fundamentally the same issue as the previous point.

Common, but not Ubiquitous
Truly obscure machines will lack documentation or community, so they will be hard to learn with. A good learning computer will be sufficiently widely distributed that there will be resources and a community available for it. Conversely, for truly ubiquitous computers there will be a canned solution for any problem, so one has to go out of your way to learn anything from it. There is even some value in it being a little bit weird, so that the owner can appreciate design distinctions.

Open
You need to be able to reach in and poke around at the software and hardware. Ideally, the entire boot process will be visible, and at least one operating system the hardware will run will be capable of introspection. The level of openness required is negotiable, but an iOS gadget isn’t going to do it.

Flexible
A good learning computer should be able to boot multiple environments, so that the owner can experience a variety of systems, and appreciate what is dictated by the hardware and what is not. It should also have hardware subject to tampering, swapping, and replacement for the same reason. Swappable storage media is especially important on this front.

Programmable
There are few things more powerful than the knowledge that one can make real things. A featureful, accessible programming environment is perhaps the safest, cheapest way of imparting that knowledge.

Just to enumerate how a Raspberry Pi stacks up –
It hosts a variety of environments that look and feel much like a full grown computer, and also is deeply similar to the baby computers / overgrown appliances that have recently become common. It costs $35, and isn’t really pitched as a primary computer. It has already sold enough units to be common, documentation is widely available, and a community has sprung up among the hackers and makers, but it isn’t oversaturated. The default software stack, with some really disheartening holes, is basically open and inspectable. It’s modular via USB and SD cards, and is as accessible as anything with BGA packed parts can be. It is programmable in almost any common language, and many environments floating around for it are tailored to that use.

For the time being it is hard to argue against an old PC, but PCs are increasingly becoming blackboxes that only speak complicated protocols, and older simpler PC hardware is quickly falling out of support even in the hobbyist OSes, which carves a clear niche for a purpose-made learning computer like the Raspberry Pi. It really is very close to the machine the upcoming generation needs as a learning computer, but it remains to be seen how well it will do at reaching the people who will be enriched by it.

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

Raspberry Pi

I finally got my Raspberry Pi yesterday, and wanted to ramble about it for a bit under the fold.
My Raspberry Pi
Continue reading

Posted in Computers, DIY, Electronics, Entertainment, General, Objects | Leave a comment

Google Plus Integration

I spotted this reminder about leaving data in someone else’s little garden the other day, something which always makes me uneasy, and this note about google finding a new way to be evil (and the usual torrent of jokes about G+ being DOA), and decided it might be a good time to take another look at migration/retention/alternative options.

So I went looking to see if someone had an easy migration solution, hoping for something that can scrape the takeout file into tagged posts or the like. What I found is Google+ Importer, which is free and claims to be way, way better than that. It looks like it can actively scrape G+ activity into its own category, and automatically mark it with user-selectable text and/or CSS. Things might be a bit broken around here while I try to add it, but hopefully my newsreader sharing will automagically be mirrored here when I’m done.

Edit1: Google+ Importer didn’t do quite what I wanted, trying Daniel Treadwell’s Google+Blog WordPress Plugin to see if it is more to my liking. It only took me about 10 minutes of tampering to remember that I hate dealing with CSS (and even worse, PHP), and pine for the days of writing static HTML pages, with server-side includes if you were feeling fancy.

Edit2: Google+Blog WordPress Plugin is closer to what I wanted, but I’m going to disable it and remove the imported posts for now. There are still a few things I really don’t like about the behavior (I want to be able to set all G+ imports to use the “Aside” format, I want them excluded from RSS, etc.), and it is going to be more fiddling than it is worth to get things there. I’m still looking for a mechanism I like, I really want my own web-accessible copy of my G+ content, and/or to make my public ‘net activity easily visible in one place. There really should be some easy way to syndicate in one direction or the other.

Edit3: I tried adding a widget to just show show the top of my G+ feed, but none of the widgets that interact with G+ content directly seem to work right now, I guess they haven’t been updated after an API change or somesuch.

Posted in Computers, General, Meta | Leave a comment

The WiFi Common Ancestor

WaveLAN PCMCIA Card

We’ve been doing some parts closet cleaning along with the sysadmin types in our building on campus, and I spotted an original AT&T branded WaveLAN PCMICA card (Model 3399-K2624) in one of the bins. These are the precursor to all modern wireless networking devices – they don’t just predate the 802.11 standards, but were actually the contributed technology that eventually became the basis for the standard – I love computer history artifacts, so I had to play with it.

Sadly, the wavelan and wavelan_cs Linux drivers were demoted to staging in 2.6.33 in 2009 (commit) and removed in 2.6.35 in 2010 (commit… gods I love well documented F/OSS projects).

This is eminently reasonable, since it is non-standard in every way, and I may be handling one of the only remaining functional examples – assuming it is fully functional. I tried to verify with some LiveCDs of suitable vintage, but inserting the card either errored the module on load or crashed the machine… which is probably why it was removed from the kernel. It’s still a neat artifact and will be getting tucked away with my odd vintage machines.

Internals of the EAM

While I had it out I opened it up (Imagine! Opening a consumer device without having to pry the fucker apart with spudgers while praying to whatever gods you believe in that none of the tabs break.) The picture above is the “EAM” (External Antenna Module) pulled apart. There isn’t too much to see among the RF cages, but the fact it is assembled with the wire harness apparently hand soldered into a row of machine pins is amazingly quaint, and the fulls-scale R/F parts are awesome.

I’m pretty enamored of the industrial design on this thing – it looks like an important transitional device. It is the dull gray that was common on (especially AT&T) computer equipment in the 80s, which has grown even uglier with UV yellowing, so the color, logos, and sharp edges look like it crawled out of the 70s, while the rounded accents, domed round indicator LEDs, and darker molded stress relief look surprisingly modern.

Posted in Computers, Electronics, Entertainment, General, Objects | 2 Comments

OpenWRT

I’ve been using various consumer routers hacked with dd-wrt both at home and on campus for years, and was shopping for a new one to use in the apartment I’ll be moving in to in a couple weeks, only to discover that the desired feature set wasn’t possible with dd-wrt. In particular, I wanted 802.11n, Gigabit Ethernet, USB printer sharing, and the ability to share an ext4-formatted USB hard disc via SMB and SSHFS. Hardware with the requisite bits isn’t too hard to come by, but no stock firmware supports the range of printer and storage features I wanted (and most of them are missing basic features and/or just plain suck). DD-WRT isn’t a solution, because it uses ancient kernels that don’t support modern file systems. I figured since OpenWRT was well spoken of and claimed to do everything I wanted when coupled with suitable hardware I would give it a try, and picked up a TP-Link WL-1043ND based on reviews and price, and followed the Wiki Instructions to flash it from the web interface.

This turns out to have been an excellent decision, because not only are the basic packages in OpenWRT a good five years newer than in in DD-WRT, it turns out to be superior in virtually every way. The OpenWRT documentation isn’t as inviting as DD’s, but the install process is no more complicated, the Web GUI is better laid out and more responsive, and features can be easily added and removed with a well-designed, well-integrated package manager (opkg). I’m aware that DD-WRT supports ipkg, but it has always felt hacked on and never worked terribly well for me, but opkg just works on OpenWRT. It even has a friendly Web interface for managing packages. Even the warning about the stock WL-1043ND image not coming with the appropriate WiFi modules is apparently out of date, because everything was already in place.
Continue reading

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