Our regular reminder of Wirth’s Law

Another response that outgrew G+ and its failings for long form and references (Which is all I’ve thought to post here recently: I need to see to that and get a couple other things written and posted). Also, a great outpouring of pessimism about the tech industry, but that isn’t exactly new.

My feeds brought me Joshua Barczak’s Stop Misquoting Donald Knuth! yesterday. I generally agree with the idea [that we need to think a great deal more about efficiency when developing software], thought the particular pesentation is a narrow and mediocre version of the argument. Niklaus Wirth made the cleanest, classic version of the argument in 1995 with Wirth’s law, which gets restated and updated for current trends by a major figure every couple years as it does an extremely expensive job of making technology miserable for everyone.

I’ll argue even deeper though. The more fundamental problem is that computing got way too “mainstream” (mostly terms of penetration) way too fast, and continues on that unhealthy vector. Neither the technology, the methods, nor the society we unleashed ourselves on was really ready. That’s a large part of why we have goldrush mechanics (I’m mostly referring to social features here) in the tech industry, which is a source of all kinds of problems. It’s also a major reason why we’re building dangerously crappy products instead of technologies as a matter of product cycle and methodology. Peter Sewell’s recent talk at 31c3 Why are computers so @#!*, and what can we do about it? is one of the better presentations on the methodolgy matter, which is largely that we’re not building on the shoulders of giants, we’re building on top of a garbage pile. I always find the arguments for verifiable languages an irritating combination of deeply desirable, and utterly naive: anyone who has ever fought one of the more verifiable languages to actually do something useful probably knows this inconsistency – the Mesa/Ceder/Modula family are probably the least miserable options and no one has used them for anything of substance in decades. Ada even introduced whole new classes of interesting bugs as a result of its so-called reliability features (What do you mean you initialized my IO registers to 0 when we entered the function scope? The peripheral is now on fire.). I’m particularly disgusted with the recent-ish move toward even less disciplining languages, most of which don’t even have a specification, or have an ignored, post-hoc one if they do, though the same batch of languages have made us so accustomed to terrible performance overhead and performance opacity that the overhead introduced by safety and verifiability now seems reasonable; I mean this in the least complimentary light possible.

There are some related phenomena: It is my feeling that the “too much, too soon” problem also ties deeply into the distorted ideas about usability that crawled out of the early ’80s and got into everything, and some scary thoughts about professionalism in computing – not in the awful “businesslike” sense, but in the sense of respect for something that is sincerely hard to do well, which can be made largely by analogy to illuminating historical parallels with what has happened to teaching in the U.S. in the early public-education era.

… And this is a large part of why I have a pile of degrees in computing disciplines and contempt for the industry.

Posted in Computers, General | 1 Comment

Command Line Bullshittery?

I started responding to Philip Guo’s Helping my students overcome command-line bullshittery that passed through my news feeds today, and my thought quickly outgrew the appropriate size for social media, so it’s going up here.

I understand and often share his frustration, but only selectively agree with his conclusion, and would like to clarify the distinction because I think it is very valuable to understand it.

It is often annoyingly difficult to leverage existing tools, especially the various development toolchains whose install process involves blood sacrifice or perfect replication of the (naturally, undocumented) platform they were developed on, but I object to dismissing all such difficulty as bullshit.

Continue reading

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

Course Impressions Fall 2014

Most of my online presence has been in other venues recently, but I’ll at least make sure my semester before/after chain here remains unbroken.

Taking CS571: Computer Networks
I’m pleased with the general design of the course. There is nice mix of textbook structure and primary document context, and the assignments look to offer the generally desirable mixture of explicit problems and programming. Unfortunately, while it is well designed, the instructor seems a little weak in classroom execution, so the lectures are fairly traditional and not particularly good at that. I’m also a little weirded out about differences in background affecting which things are expected context – wire encoding and line delay are being presented as more novel concepts than packet encoding and topology, while I think of of them as things we do with sophomores. I’ve long felt guilty about my lack of formal networking background for ages, so it’ll be good for me.

Taking CS535: Intermediate Computer Graphics
Taking to finish out my core requirements, because it sounded more fun than numerical methods. The instructor is a bit of a slide-reader, and so far we’ve had more context than content. I’m all for context-heavy instruction, but it’s getting to the point where it’s misleading because what we are being provided is out of date and slightly hand-wavy, and what content we have had has been distressingly shallow. It’s a small class and we’re almost all pretty friendly, so it’s working out anyway. At worst I finally have an excuse to learn some rudimentary OpenGL.

Taking EPE672: College Teaching & Learning
Like all Preparing Future Faculty program courses, it’s a room full of jaded grad students, being jaded. That situation is always fun, and it’s no more grim than all those courses. We’re mostly reading a whole bunch of primary publications and discussing, which is a good course format that I don’t get to do often because it’s unpopular in engineering disciplines.
I’m a little pissed that it manages to block both the weekly Keeping Current seminar and Collexion open hours every week, but I’ve been trying to get into it for over a year, so I’ll take it.

Teaching: EE101
I’m not a standard instructor, I’ve been brought in to run the embedded systems unit that I helped design a couple years ago. Leading 230 freshmen through recognizing all the little embedded systems their world is built out of, and building neat shit with Arduinos and bags of parts to get an appreciation for them.
I’m not exactly being well-compensated for doing it, but they are paying me, and both the material and course composition are always a good time.

It’s not lining up to be a terribly stimulating semester, but it also won’t be terribly difficult, and will get me fundamentals and basic credentials in some things I should have them in.

Posted in General, Navel Gazing, School | Leave a comment

Lab Fridge Repair: Thinking with 3D Printing

I’m posting this because it’s such a nice example for the standard “What are 3D printers really good for?” question.

When I got to the lab today, I was told the can chute in our mini-fridge was broken. Inspection showed that too many of the little plastic inserts/bushings that retain the bars were missing and/or broken. This is a years-old cheap GE minifridge, so it isn’t even worth looking for OEM replacements.

Now we get to the “Thinking with 3D printing” part: I plucked one of the remaining ones, went over it with some calipers, transferred the measurements into OpenSCAD, and printed one off to test fit. The ID was a little tight, so I adjusted the model, printed 6 more, and fixed the problem.

In case the model is useful for anyone else: OpenSCAD and STL.

Important Details:

  • This took like an hour from start to finish, and wasn’t the only thing I was doing at the time. The printing itself was around 1 minute per insert.
  • The new inserts are better than the originals. Not quite as pretty in some ways (though they are blue and glow-in-the-dark, because that’s our current junk filament), but the fit is considerably better.
  • That “iterate” step in the middle, where you just try it and adjust if needed is among the most beautiful things about 3D printers.
Posted in DIY, General, Objects, School | Tagged , , , | 4 Comments

T510 Touchpad Resurfacing


I found a forum.thinkpads thread while looking into another touchpad issue recently, and learned two important facts:

  1. The bumpy touchpad texture I never loved that had worn off my T510 is just a sticker.
  2. Those stickers are replaceable.

Continue reading

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

It’s Complicated

I finally finished danah boyd’s recent book It’s Complicated, and It’s one of the best pieces of non-fiction I’ve read in years.

I always feel there is a dramatic shortage of people equipped with both the appropriate formal methods in the social sciences and technological sophistication to make credible, meaningful, observations on technologically mediated culture. danah is reliably the best of them; I’ve read quite a number of her papers and articles, and the book is fuller and more readable than either.

Almost every passage roughly follows a pattern of statement, with attribution, relevant anecdote from original research, message. It is meticulously referenced (roughly a quarter of the book’s volume is appendices and references), which comes off a little academic, but anything less conscientious would end up being the kind of prognostication much of the book is trying to correct, and the actual writing comes off as far more pleasant and readable than it sounds. It is occasionally repetitive, but every time the repetition asserted itself, it was clearly a case of “I keep saying this over and over and they just don’t get it” rather than any sort of sloppy writing.

Occasionally, there are wistful references to the internet I grew up on; the author is about a decade older than I am, and grew up on the leading edge of the internet I was on the trailing edge of. The one where Ender’s Game (Locke and Demosthenes plot), True Names, and Ready Player One can happen, before the carpetbaggers arrived in force and (to quote the book) “When teens go online, they bring their friends, identities, and network with them.” situation asserted itself. I’m pretty sure my generation killed that different identity system, and buried it behind us (One of her early notable efforts was documenting the introduction of Friendster, which was in some ways the beginning of the end).

At least once a chapter, I found myself in vigorous agreement with some message being presented, enough that if there were people around when I was reading they could tell. The vast majority of the observations, while based in research into teens, also seem to generalize reasonably well to the behavior of most populations. The only unfortunate part is that I suspect the people making decisions about youth and technology who desperately need to hear what it has to say are not going to be the ones to read it.

Note that there is a PDF copy right on the author’s site, so even if you don’t want to go buy it, you can legitimately peruse it for free.

Posted in Computers, General, Literature, Objects | Leave a comment

Singer no.42 Swingarm Repair

I’ve posted before on the slow restoration of my old 201-2 and its cabinet, last time I noted that my cabinet’s swing-arm wouldn’t auto-deploy, which prompted some discussions with other folks about the mechanism. One of those other pieces of input was someone kind enough to tip me off in the comments of my last note about this that there were a couple sets on ebay, which I looked at for details, then ended up buying one of for $22 shipped. I really only needed the lower pin and spring, but the spares are nice. This is what the seller pictured, and the light and camera are better than mine, so I’ll just use their picture, because it was well packed and exactly as described:


I now have mine working and have detail photos and measurements from the process that should make it easier for others to figure these things out. It’s actually a really simple mechanism, the following two pictures are pretty much all you need to know about how it goes together and works.
Continue reading

Posted in DIY, General, Objects | 10 Comments

Spring 2014 Semester Retrospective

Continuing my habit of posting before and after notes on my courses, after notes for Spring 2014.
Continue reading

Posted in General, Navel Gazing, School | Leave a comment

Inspiron 11-3000 Hinge Screw Defect


The Inspiron 11-3000 I’ve been carrying around developed a rattle the other day, and today I decided to open it up.
Continue reading

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

New Data Integrity Tools

I’ve recently added a couple tools to my standard set, and have at least a 4x improvement in the safety of my data by doing so.

The process was complicated a bit because I’ve become very sensitive about only depending on FOSS tools (ex:As much as I like SublimeText2, I stopped using it because it once demanded to be updated before it would run.), but frankly I think that constraint produced better results than I would have reached without it. Because it was something of a hunt, I’d like to recommend the particular tools I settled on, in particular are KeepassX, Attic, and Seafile, described individually below.
Continue reading

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