Author Archives: pappp

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

ThruNite Lights

ThruNite T10 and Ti flashlights, with a quarter for scale.

I recently decided I wanted a “reasonably nice flashlight”, and discovered that “nice flashlights” are objects of serious obsession. Originally I was planning to just throw something attractive in to an Amazon or DealExtreme order, but then I started reading reviews from EDCForums and CandlePower, and… uh… this happened. The important thing I leaned is a lot of lights have ridiculous tacticool features, like dazzler or SOS blink modes, or design features to improve their use as a Kubotan and damage whatever touches them in a pocket or bag, and set out to avoid such things.

Eventually I found my way to BudgetLightForum where interested people who do not think it is reasonable to drop hundreds of dollars on flashlights reside, and based on feedback there, decided to try the combo deal ThruNite had running to get a AA T10 and a AAA Ti for $30 for the pair.

They showed up today (in nice packaging) and are rather interesting, so pictures and text below.
Continue reading

Posted in General, Objects | 1 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

25!

Once again, a year older and largely unchanged.

I sent out another round of Ph.D. applications, got another round of shitty responses, threw my hands up, and took an offer to stay at UK and do a Ph.D. with the CS department here. The dichotomy between how pleased folks at UK seem to be about keeping me and how little interest I got elsewhere is a bit distressing, but I understand how it happened, and UK has been and continues to be amazingly accommodating, so I can’t complain much.

In the coming semester I’m TAing for CS275 (undergraduate Discrete Math course), which lacks many (by which I mean “all”) of the exciting hands-on aspects of EE281 and EE101, but is sophomores (which are generally my favorite to teach), and is a sufficiently presentation-dependent set of material that it has serious potential to be be rewarding. I was asked about teaching any of several things for ECE again after CS picked me up, because apparently people think I know what I’m doing in front of a classroom, which might have been more fun, but I had already committed, and this will certainly be more broadening.

I amazingly failed to get clear of my MS for another year, largely because the lack of medium-range plan pressure supplanted with a bit of a reddit habit made it easy to avoid cleaning out the remaining not-fun bits – things are mostly written and written up, it’s just a matter of sucking it up and dealing with the last few bits and pieces. As I’m finishing that I’m trying to arrange people and resources to just do a Ph.D.-sized project I’ve had in the back of my head for years …but that is a large separate topic.

In perhaps the only really substantive difference, I’m living alone in an apartment instead of in a house with people I’ve known since high school. I’m enjoying being able to impose order on my entire living space, and the greater opportunity to spend time, as a former housemate was fond of phrasing it, free from the tyranny of pants, but there certainly is less built-in variety.

I’m pleased with the state of my existence – perhaps too pleased in that I’m getting a bit complacent – but I’m not really suffering on any time scale as a result of not being in a hurry, and I’m getting to indulge in all sorts of interesting side projects, so I’m pretty OK with it.

Posted in General, Navel Gazing | Leave a comment

As a fun aside to the previous post, there is a story my parents like to tell from my childhood, which generalizes the kind of permissive learning objects learning computers are an instance of. When I was very little, I … Continue reading

Posted on by pappp | Leave a comment

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