OR: for all p,
passed(p)
~~~~
Last week saw the passing of computer scientist Amir Pnueli. Even though, Pnueli received the Turing Award, I do not have the impression that many computer scientists know much about his work. That is a shame. Pnueli helped to invent an important new sub-discipline of computing:
Pnueli received ACM's A. M. Turing Award in 1996 for introducing temporal logic, a formal technique for specifying and reasoning about the behavior of systems over time, to computer science. In particular, the citation lauded his landmark 1977 paper, "The Temporal Logic of Programs," as a milestone in the area of reasoning about the dynamic behavior of systems.
I was fortunate to read "The Temporal Logic of Programs" early in my time as a graduate student. When I started at Michigan State, most of its AI research was done in the world-class Pattern Recognition and Image Recognition lab. That kind of AI didn't appeal to me much, and I soon found myself drawn to the Design Automation Research Group, which was working on ways to derive hardware designs from specs and to prove assertions about the behavior of systems from their designs. This was a neat application area for logic, modeling, and reasoning about design. I began to work under Anthony Wojcik, applying the idea of modal logics to reasoning about hardware design. That's where I encountered the work of Pnueli, which was still relatively young and full of promise.
Classical propositional logic allows us to reason about the truth and falsehood of assertions. It assumes that the world is determinate and static: each assertion must be either true or false, and the truth value of an assertion never changes. Modal logic enables us to express and reason about contingent assertions. In a modal logic, one can assert "John might be in the room" to demonstrate the possibility of John's presence, regardless of whether he is or is not in the room. If John were known to be out of the country, one could assert "John cannot be in the room" to denote that it is necessarily true that he is not in the room. Modal logic is sometimes referred to as the logic of possibility and necessity.
These notions of contingency are formalized in the modal operators
p, "possibly p," and
p, "necessarily
p." Much like the propositional operators "and" and "or",
and
can be used to express
the other in combination with ¬, because necessity is really nothing more than possibility "turned inside out". The
fundamental identities of modal logic embody this relationship:
Modal logic extends the operator set of classical logic to permit contingency. All the basic relationships of classical
logic are also present in modal logic.
and
are not themselves truth functions but quantifiers over possible states of a contingent world.
When you begin to play around with modal operators, you start to discover some fun little relationships. Here are a few I remember enjoying:
The last of those is an example of a distributive property for modal operators. Part of my master's research was to derive or discover other properties that would be useful in our design verification tasks.
The notion of contingency can be interpreted in many ways. Temporal logic interprets the operators of modal
logic as reasoning over time.
p becomes "always p" or "henceforth p," and
p becomes "sometimes p" or
"eventually p." When we use temporal logic to reason over circuits, we typically think in terms of "henceforth" and
"eventually." The states of the world represent discrete points in time at which one can determine the truth value of
individual propositions. One need not assume that time is discrete by its nature, only that we can evaluate the truth value
of an assertion at distinct points in time. The fundamental identities of modal logic hold in this temporal logic as
well.
In temporal logic, we often define other operators that have specific meanings related to time. Among the more useful temporal logical connectives are:
My master's research focused specifically on applications of interval temporal logic, a refinement of temporal logic that treats sequences of points in time as the basic units of reasoning. Interval logics consider possible states of the world from a higher level. They are especially useful for computer science applications, because hardware and software behavior can often be expressed in terms of nested time intervals or sequences of intervals. For example, the change in the state of a flip-flop can be characterized by the interval of time between the instant that its input changes and the instant at which its output reflects the changed input.
Though I ultimately moved into the brand-new AI/KBS Lab for my doctoral work, I have the fondest memories of my work with Wojcik and the DARG team. It resulted in my master's paper, "Temporal Logic and its Use in the Symbolic Verification of Hardware", from which the above description is adapted. While Pnueli's passing was a loss for the computer science community, it inspired me to go back to that twenty-year-old paper and reminisce about the research a younger version of myself did. In retrospect, it was a pretty good piece of work. Had I continued to work on symbolic verification, it may have produced an interesting result or two.
Postscript. When I first read of Pnueli's passing, I didn't figure I had a copy of my master's paper. After twenty years of moving files from machine to machine, OS to OS, and external medium to medium, I figured it would have been lost in the ether. Yet I found both a hardcopy in my filing cabinet and an electronic version on disk. I wrote the paper in nroff format on an old Sparc workstation. nroff provided built-in char sequences for all of the special symbols I needed when writing about modal logic that worked perfectly -- unlike HTML, whose codes I've been struggling with for this entry. Wonderful! I'll have to see whether I can generate a PDF document from the old nroff source. I am sure you all would love to read it.
If you come hear to read only about computer science, software development, or teaching, then this entry probably isn't for you.
On Saturday, I attended the wedding of a family friend, the son of my closest friend from college. Some weddings inspire me, and this one did. I've been feeling a little jaded lately, and it was refreshing to see two wonderful young people, well-adjusted and good-hearted, starting a new chapter of life together.
During the minister's remarks to the bride and groom, I found myself thinking about love, and about big moments and little moments.
We often speak of one person loving another so much that he would lay down his life for her. That is a grand sort of love indeed. Many of our most romantic ideas about love come back to this kind of great personal sacrifice. It occurred to me that this is love in the big moment.
But how many of us are ever in a position where we must or even can demonstrate love in this way?
Nearly all of our chances to demonstrate love come in the nondescript moments that bathe us every day. These are not the big moments we dream of. We dream about big challenges, but the biggest challenge is to make small choices that demonstrate our love all the time. It is so easy for me to be selfish in the little desires that I act to satisfy daily. The real sacrifice is to surrender ourselves in those moments, to act in a way that puts another person, the one we love, at the front, to place her needs and wants ahead of our own.
When relationships falter, it is rarely because one person missed an opportunity to lay his life down -- literally. Much more often, it a result of small choices we make, of small sacrifices we could have made but didn't. I think that is one of the great sources of confusion for people whose at the end of relationships. They may well still be willing to lay down their loves for the loved one; what more could the other person want? It's hard to recognize all those little opportunities to sacrifice as they come by. How important they are.
The minister closed his remarks Saturday with a wish for the new couple that, at the end of long, happy lives together, they will be able to say, "I would choose you again." I make this wish for them, too. But I think one of the best ways to prepare for that distant moment is to wake up each day, say "I choose you" in the present tense, and then strive to live the little moments of that day well.
Artificial. Tyler Cowen writes about a new arena of battle for the Turing Test:
I wonder when the average quality of spam comment will exceed the average quality of a non-spam comment.
This is not the noblest goal for AI, but it may be one for which the economic incentive to succeed drives someone to work hard enough to do so.
Oh So Real. I have written periodically over the last sixteen months about being sick with an unnamed and undiagnosed malady. At times, I was sick enough that I was unable to run for stretches of several weeks. When I tried to run, I was able to run only slowly and only for short distances. What's worse, the symptoms always returned; sometimes they worsened. The inability of my doctors to uncover a cause worried me. The inability to run frustrated and disappointed me.
Yesterday I read an essay by a runner about the need to run through a battle with cancer:
I knew, though, if I was going to survive, I'd have to keep running. I knew it instinctively. It was as though running was as essential as breathing.
Jenny's essay is at turns poetic and clinical, harshly realistic and hopelessly romantic. It puts my own struggles into a much larger context and makes them seem smaller. Yet in my bones I can understand what she means: "... that is why I love running: nothing me feel more alive. I hope I can run forever."
"Only one, but it's always the right one."
-- Jose Raoul Capablanca,
when asked how many moves ahead
he looked while playing chess
When I was in high school, I played a lot of chess. That's also when I first learned about computer programming. I almost immediately was tantalized by the idea of writing a program to play chess. At the time, this was still a novelty. Chess programs were getting better, but they couldn't compete with the best humans yet, and I played just well enough to know how hard it was to play the game really well. Like so many people of that era, I thought that playing chess was a perfect paradigm of intelligence. It looked like such a wonderful challenge to the budding programmer in me.
I never wrote a program that played chess well, yet my programming life often crossed paths with the game. My first program written out of passion was a program to implement a ratings system for our chess club. Later, in college, I wrote a program to perform the Swiss system commonly used to run chess tournaments as a part of my senior project. This was a pretty straightforward program, really, but it taught me a lot about data structures, algorithms, and how to model problems.
Though I never wrote a great chessplaying program, that was the problem that mesmerized me and ultimately drew me to artificial intelligence and a major in computer science.
In a practical sense, chess has been "solved", but not in the way that most of us who loved AI as kids had hoped. Rather than reasoning symbolically about positions and plans, attacks and counterattacks, Deep Blue, Fritz, and all of today's programs win by deep search. This is a strategy that works well for serial digital computers but not so well for the human mind.
To some, the computer's approach seems uncivilized even today, but those of us who love AI ought be neither surprised nor chagrined. We have long claimed that intelligence can arise from any suitable architecture. We should be happy to learn how it arises most naturally for machines with fast processors and large memories. Deep Blue's approach may not help us to understand how we humans manage to play the game well in the face of its complexity and depth, but it turns out that this is another question entirely.
Reading David Mechner's All Systems Go last week brought back a flood of memories. The Eastern game of Go stands alone these days among the great two-person board games, unconquered by the onslaught of raw machine power. The game's complexity is enormous, with a branching factor at each ply so high that search-based programs soon drown in a flood of positions. As such, Go encourages programmers to dream the Big Dream of implementing a deliberative, symbolic reasoner in order to create a programs that plays the game well. The hubris and well-meaning naivete of AI researchers have promised huge advances throughout the years, only to have ambitious predictions go unfulfilled in the face of unexpected complexity. Well-defined problems such as chess turned out to be complex enough that programs reasoning like humans were unable to succeed. Ill-defined problems involving human language and the interconnected network of implicit knowledge that humans seem to navigate so easily -- well, they are even more resistant to our solutions.
Then, when we write programs to play games like chess well, many people -- including some AI researchers -- move the goal line. Schaefer et al. solved checkers with Chinook, but many say that its use of fast search and a big endgame databases is unfair. Chess remains unsolved in the formal sense, but even inexpensive programs available on the mass market play far, far better than all but a handful of humans in the world. The best program play better than the best humans.
Not so with Go. Mechner writes:
Go is too complex, too subtle a game to yield to exhaustive, relatively simpleminded computer searches. To master it, a program has to think more like a person.
And then:
Go sends investigators back to the basics--to the study of learning, of knowledge representation, of pattern recognition and strategic planning. It forces us to find new models for how we think, or at least for how we think we think.
Ah, the dream lives!
Even so, I am nervous when I read Mechner talking about the subtlety of Go, the depth of its strategy, and the impossibility of playing it well in by search and power. The histories of AI and CS have demonstrated repeatedly that what we think difficult often turns out to be straightforward for the right sort of program, and that what we think easy often turns out to be achingly difficult to implement. What Mechner calls 'subtle' about Go may well just be a name for our ignorance, for our lack of understanding today. It might be wise for Go aficionados to remain humble... Man's hubris survives only until the gods see fit to smash it.
We humans draw on the challenge of great problems to inspire us to study, work, and create. Lance Fortnow wrote recently about the mystique of the open problem. He expresses the essence of one of the obstacles we in CS face in trying to excite the current generation of students about our discipline: "It was much more interesting to go to the moon in the 60's than it is today." P versus NP may excite a small group of us, but when kids walk around with iPhones in their pockets and play on-line games more realistic than my real life, it is hard to find the equivalent of the moon mission to excite students with the prospect of computer science. Isn't all of computing like Fermat's last theorem: "Nothing there left to dream there."?
For old fogies like me, there is still a lot of passion and excitement in the challenge of a game like Go. Some days, I get the urge to ditch my serious work -- work that matters to people in the world, return to my roots, and write a program to play Go. Don't tell me it can't be done.
The economics blog Marginal Revolution has an occasional series of posts called "Markets in Everything", in which the writers report examples of markets at work in various aspects of everyday life. I've considered doing something similar here with computing, as a way to document some concrete examples of computational thinking and -- gasp! -- computer programs playing a role how we live, work, and play. Perhaps this will be a start.
Courtesy of Wicked Teacher of the West, I came across this story about NBA player Shane Battier, who stands out in an unusual way: by not standing out with his stats. A parallel theme of the story is how the NBA's Houston Rockets are using data and computer analysis in an effort to maximize their chances of victory. The connection to Battier is that the traditional statistics we associate with basketball -- points, rebounds, assists, blocked shots, and the like -- do not reflect his value. The Rockets think that Battier contributes far more to their chance of winning than his stat line shows.
The Rockets collect more detailed data about players and game situations, and Battier is able to use it to maximize his value. He has developed great instincts for the game, but he is an empiricist at heart:
The numbers either refute my thinking or support my thinking, and when there's any question, I trust the numbers. The numbers don't lie.
For an Indiana boy like myself, nothing could be more exciting than knowing that the Houston Rockets employ a head of basketball analytics. This sort of data analysis has long been popular among geeks who follow baseball, a game of discrete events in which the work of Bill James and like-minded statistician-fans of the American Pastime finds a natural home. I grew up a huge baseball fan and, like all boys my age, lived and died on the stats of my favorite players. But Indiana is basketball country, and basketball is my first and truest love. Combining hoops with computer science -- could there be a better job? There is at least one guy living the dream, in Houston.
I have written about the importance of solving real problems in CS courses, and many people are working to redefine introductory CS to put the concepts and skills we teach into context. Common themes include bioinformatics, economics, and media computation. Basketball may not be as important as sequencing the human genome, but it is real and it matters to a enough people to support a major entertainment industry. If I were willing to satisfy my own guilty pleasures, I would design a CS 1 course around Hoosier hysteria. Even if I don't, it's comforting to know that some people are beginning to use computer science to understand the game better.
Earlier today I listened to a TED talk by Tony Robbins. One snippet stood out. Here is a paraphrase, in part to clean up the language (because that's how I roll):
If I ask you whether you like variety, you'll say yes. Baloney. You like surprises you want. The others, you call problems.
Some people are better than others at accepting the surprises that they don't want. Perhaps that is why Robbins's anecdote reminded me of a story I read last summer in a book by John G. Miller called QBQ! The Question Behind the Question. The story, perhaps fictional, tells of a father and young daughter out for a fun plane ride one day, with dad behind the controls. When the plane's engine dies unexpectedly, dad turns to his daughter and says, calmly, I'm going to need to fly the plane differently.
I don't make generally New Year's resolutions, but when I am next tempted, I'll probably think again of this story. I want to be that guy, and I'm not.
----
(Quick book review: QBQ! is pretty standard for this genre of business self-help lit. It says a lot of things we all should already know, and probably do. But there are days when some of us need a reminder or a little pep talk. This book is full of short pep talks. It's a quick read and good enough at its task, as long as you remember that unless you change your behavior books like these are nothing but empty calories. A bit like software design methodologies.)
My expectations for the 500 Festival Mini-Marathon were rather low. I've been battling subpar health for a year, so my mileage has been down. I've gone through a few dry stretches of six to eight weeks without running much or at all.. I've been running again for the last ten weeks or so, but I've managed only to reach the mid-twenties of miles in any given week. My body just isn't ready for running many miles, let alone racing them.
My running buddy, Greg, and I arrived in downtown Indianapolis half an hour before the start time of the race. It was overcast and cool -- around 47 degrees -- with the slightest of breezes. I cast my lot with the possibility that we'd not run in the rain and left my cap in my checked back, but I did throw on my thinnest pair of gloves. A good choice.
When you run with 35,000 other runners, the start of a race is always a little crowded. After the official start of the race, Greg and I shuffled along for six and half minutes before we reached the starting line. From that point, we ran in tight traffic for only a third of a mile or so before we could move unencumbered. I was how quickly that moment came. I was also surprised at the pace of our first couple of miles. Even with the shuffling start we clocked a 9:08 for Mile 1, and then we did Mile 2 in 8:37. I won't be able to keep this up for much longer, I said, so don't feel bad about leaving me behind. But I didn't feel as if I were pressing, so I hung steady.
Talking as we ran helped me stay steady. I have gone to races with Greg and other friends before, but I have never actually run with them. We spend time together before and after the race, but during we find our own strides and run our own races. This time, we actually ran together. The miles clicked off. 8:33. 8:32. Can this be? 8:42. Ah, a little slower.
The we reached the famed Indianapolis Motor Speedway, home to the 500 mile race that gives its name to the race I am running. Race cars navigate this brick and asphalt oval in 40 seconds, but thousands of runners staked their claims in anywhere from twelve minutes to over an hour. We saw the 6-, 7-, and 8-mile markers inside the track, along with the 10K split and the halfway point. 8:46. 8:49. 8:44. Slower, yet hanging steady.
I felt a slight tug in my left calf just before the 9-mile marker. I did not mention it out loud, because I did not want to make it real. We kept talking, and I kept moving. 8:46. 8:29. What? 8:29?? The tenth mile was our fastest yet. I felt good -- not "just getting started" strong, but "I can keep doing this" strong. I thought of Barney Stinson's advice and just kept running.
I took a last sip of fuel just past the 10-mile mark. 8:22. Greg and I decided that we would let ourselves really run the last mile if we still felt good. We must have. We clipped off miles 12 and 13 in 16:16. Then came that last mad rush to the finish line. 1:52:25. I have never been so happy to run my second worst time ever. This was 8-10 minutes faster than I imagined I could run, and I finished strong, thinking I could do a little more if I had to. (Not another half, of course -- I am nowhere near marathon shape!)
Talking throughout the race definitely helped me. It provided a distraction from the fact that we were running hard, that the miles were piling up behind us. I never had a chance for my mind to tell I couldn't do what I was doing, because it didn't have a chance to focus on the distance. Our focus was on the running, on the moment. We took stock of each mile as a single mile and then took on the current mile. In an odd way, it was a most conscious race.
The only ill effect I have this morning is a barely sore left hamstring that gave its all for those last two mile and a minor headache. In all other ways I feel good and look forward to hitting the trails tomorrow morning with another challenge in mind.
The weekend itself was not an uninterrupted sequence of best case scenarios... As I pulled out of the parking garage after picking up my race packet in downtown Indianapolis, my car began gushing coolant. Was there any irony in the fact that I was at that moment listening to Zen and the Art of Motorcycle Maintenance? I am not one of those guys who tinkers with his own engine, but I know enough to know that you can't go far without coolant.
Still, I did not face a worst case scenario. I called the friend with whom I was to dine that night, and he came to get me. He arranged for a tow, and while I ran on Saturday morning a professional who knows his way around under the hood fixed the problem -- a faulty reservoir -- for only a couple of hundred dollars. Given the circumstances, I could hardly have asked for a better resolution.
Race day, May 2, was one year to the day of my last 100% healthy work-out... I do not think I am yet 100% healthy again, and I did not finish the half marathon with Ernie Banks's immortal words on my lips ("Let's play two!". But I have to say: Great day.
You are scanning a list of upcoming lectures on campus.
You see the title "Media Manipulation".
You get excited! Your thoughts turn to image rotations and filters, audio normalization and compression formats.
You read on to see the subtitle: "You, Me, and Them (the 'media' isn't what it used to be)" and realize that the talk isn't about CS; it's about communications and journalism.
You are disappointed.
----
(I'd probably enjoy this talk anyway... The topic is important, and I know and like the speaker. But still. To be honest, in recent weeks I have been less concerned with the media manipulating me than with the people in the media not doing the research they need to ensure their stories are accurate.)
David Patterson wrote a Viewpoint column for the March 2009 issue of Communications on advising graduate students, paired with a column by Jeffrey Ullman. One piece of Patterson's advice applies to more than advising grad students: "You're a role model; act like one.":
I am struck from parenting two now-grown sons that it's not what you say but what you do that has lasting impact. I bet this lesson applies to your academic progeny. Hence, I am conscious that students are always watching what I do, and try to act in ways that I'd like them to emulate later.
For example, my joy of being a professor is obvious to everyone I interact with, whereas I hear that some colleagues at competing universities complain to their students how hectic their lives are.
I often worry about the message I send students in this regard. My life is more hectic and less fun with computer science since I became department head, and I imagine that most of the negative vibe I may give off is more about administration than academia. One time that I am especially careful about the image I project is when I meet with high school students who are prospective CS majors and their parents. Most of those encounters are scheduled in advance, and I can treat them almost like performances. But my interactions with current students on a daily basis? I'm probably hit-and-miss.
The idea that people will infer more from your deeds than your words is not new and does apply widely, to advisors, teachers, decision makers -- everyone, really. Anyone who has been a parent knows what Patterson means about having raised his sons. Long ago I marked this passage from Matthew Kelly's Building Better Families:
If you ask parents if they want their children to grow up to live passionate and purposeful lives they will say, "Absolutely!" But how many parents are living passionate and purposeful lives? Not so many.
Our example can set a negative tone or a positive tone. The best way to give children a zest for life is to live with zest and share your zest with them.
This applies to our students in class and in the research lab, too. My favorite passage in this regard comes not from Patterson's viewpoint but from The Wednesday Wars, which I quoted once before:
It's got to be hard to be a teacher all the time and not jump into a pool of clear water and come up laughing and snorting with water up your nose.
Through all my years in school, my best teachers jumped into the pool all the time and came up laughing and snorting with water up their noses. They wrote prose and code. They read about new ideas and wanted to try them out in the lab. Their excitement was palpable. Fun was part of the life, and that's what I wanted.
I hope I can embody a little of that excitement and fun as a faculty member to our students, as a father to my daughters. But some days, that is more of a challenge than others.
I spent most of the last four days of last week -- and nights -- digging out of the result of having lived 17 years in one house, as a moderate pack rat living with three major pack rats.
Remember that whole moving agile thing? Fuhgeddaboudit. The idea worked well for a few weeks. But then we encountered a problem everyone knows to avoid: the developers were the same people as the customers. When we got somewhere between 60% and 80% of our stuff moved, we reached something akin to a software prototype that offers most of the desired features. At that point, the customers went inexplicably AWOL. They were happy enough with the 80% solution.
Then came a long period of no measurable progress, no external motivation, and no Big Visible Chart to keep the developers honest.
Finally came the week of the closing on the sale of the old house. We were exceedingly lucky to have found buyers the first day the house was on the market and to have them want to close in a brisk five weeks. Hurray! ... except for the part about moving the rest of our stuff. We found ourselves in horrible crunch mode. The last 20% took 80% of the total move time. I worked around the clock for four days, stopping for classes and essential meeting. In the end, we just made it -- I, dead tired, with a bad cold, and a lot of stuff in boxes.
Why the title? After 17 years of saving things we "might need some day", we know the answer. We never did. We had boxes. Packing material. Textbooks, class notes. YAGNI. Really. I went from sentimental fool having a hard time tossing anything to pitching favored gifts and keepsakes like a disinterested pro. A few possessions rose above the newly-elevated threshold for what to keep, but not many. If I don't have a specific plan for using something in the next few weeks, it is gone. I have enough boxes and portfolios and a pile of notebooks and pads sufficient to outfit a medium-sized government agency. If I don't have a specific scenario for reminiscing over some memento, it too is gone. Sportsmanship trophies from 2nd-grade basketball leagues? I don't think so.
I ain't gonna need it. I trust that now. This is the best lesson for living more simply than I've ever received.
I have spent nearly every working minute this week sitting in front of this laptop, preparing a bunch of documents for an "academic program assessment" that is being done campus-wide at my university. Unfortunately, that makes this week Strike Two.
Last October: no OOPSLA for me.
This week: no SIGCSE for me.
The next pitch arrives at the plate in about a month... Will there be no ChiliPLoP for me?
That would be an inglorious Strike Three indeed. It would break my equivalent of DiMaggio's streak: I have never missed a ChiliPLoP. But budget rescissions, out-of-state travel restrictions, and work, work, work are conspiring against me. I intend to make my best effort. Say a little prayer.
I hope that you can survive my missing SIGCSE, as it will mean no reports from the front. Of course, you will notice two missing links on my 2008 report, so I do have some material in the bullpen!
Missing SIGCSE was tougher than usual, because this year I was to have been part of the New Teaching Faculty Roundtable on the day before the conference opened. I was looking forward to sharing what little wisdom I have gained in all my years teaching -- and to stealing as many good ideas as I could from the other panelists. Seeing all of the firepower on the roster of mentors, I have no doubts that the roundtable was a great success for the attendees. I hope SIGCSE offers the roundtable again next year.
Part of my working day today was spent in Cedar Rapids, an hour south of here. Some of you may recall that Cedar Rapids was devastated by flooding last summer, when much of the eastern part of the state was under 500-year flood waters. I surprised and saddened to see that so much of the downtown area still suffers the ill effects of the water. The public library is still closed while undergoing repair. But I was heartened to see a vibrant city rebuilding itself. A branch library has been opened at a mall on the edge of town, and it was buzzing with activity.
You know, having a library in the mall can be a good thing. It is perhaps more a part of some people's lives than a dedicated building in the city, and it serves as a nice counterpoint to the consumption and noise outside the door. Besides, I had easy access to excellent wireless service out in mall area even before the library opened, and easy access to all the food I might want whenever I needed to take a break. Alas, I really did spend nearly every working minute this week sitting in front of this laptop, so I worked my way right up to dinner time and a welcome drive home.
Many of us know this feeling:
When gods die, they die hard. It's not like they fade away, or grow old, or fall asleep. They die in fire and pain, and when they come out of you, they leave your guts burned. It hurts more than anything you can talk about. And maybe worst of all is, you're not sure if there will ever be another god to fill their place. You don't want the fire to go out inside you twice.
I'm tempted to say that the urge to share this came from a couple of experiences I had at the Rebooting Computing summit, but this passage goes beyond the emotions I felt there.
(This paragraph comes from a "young adult" novel called the The Wednesday Wars, by Gary D. Schmidt. I did not realize how many good books there are out there for young readers until my daughters started reading them and recommending them to me. If there is a book that can make Shakespeare more relevant to the life of a seventh-grader or more attractive for a teen to read than this one -- all the while being funny and on the mark for its audience -- I'd love to read it.)
This has been an unusual year in several ways. This month ends it fittingly, in an unusual way: my fewest ever postings to this blog in any calendar month since its inception. I have nor blogged much this month for a couple of reasons. The first is that I have tried to make my break time a break, and so have stayed away from my computer more than usual.
The second is less sedentary. My family bought a new house this month. We made an initial offer in October, worked through a lot of details and last-stage construction issues in November, and closed in early December. The last few weeks have been a combination of finishing fall term, tryine to rest a bit, and moving a car- or minivan-load at a time. Moving over the course of several weeks is how my wife and I planned to do it. Baby steps is an interesting way to move, as we grow into each space a bit at a time, with time to think before being buried in boxes labeled "downstairs bedroom". I am still enjoying it and seeing the advantages of it (not the least of which is time to throw out all of the stuff we don't want to move!), but I think it is starting to tire my family. They would like to be "moved". Come to think of it, so would I. It's about time to bring this iteration to a close.
Happy New Year to all.
My daughters received a new game from their mom for Christmas. It's called Apples to Apples. Each round, one of the players draws a card with an adjective on it. The rest of the players choose noun cards from their hands that match the adjective. The judge chooses one of the nouns as the best match, and the player who played it wins that round. The objective of the game is to win the most rounds.
I could tell you many things more about the game and how it's played in my family, but there is really only one thing to say:
I stink at this game.
If I am in a three-person game, I finish third. Four players? Fourth. You name the number of players, and I can tell you where I'll finish. Last.
It doesn't seem to matter with whom I play. Recently, I've been playing with my wife and daughters. Last night, my wife's brother joined us. My wife and I have played this game before, with friends from my office. The result is always the same.
My weakness may be heightened by the lobbying that can be part of the game. Players are allowed to try to sell their answers to the judge. I'm not a good salesman and besides don't really like to sell. But that doesn't account for my losing. If we play in silence, I lose.
It's not that I'm bad at all word games. I like many word games and generally do well playing them. If nothing else, I get better after I play a game for a while, by figuring out something about the strategy of the game and the players with whom I play. But in this game, the harder I try to play well, the worse I seem to do.
This must be how students feel in class sometimes. There is some consolation -- that I might become more empathetic as a result of feeling this way -- but, to be honest, it's just a bad feeling.

Last month my wife and I had the good fortune to see a Broadway touring company perform the Tony Award-winning Movin' Out, a musical created by Twyla Tharp from the music of Billy Joel. I've already mentioned that I am a big fan of Billy Joel, so the chance to listen to his songs for two hours was an easy sell. Some of you may recall that I also wrote an entry way back called Start with a Box that was inspired by a wonderful chapter from Twyla Tharp's The Creative Habit. So even if I knew nothing else about Tharp, Movin' Out would have piqued my interest.
This post isn't about the show, but my quick review is: Wow. The musicians were very good -- not imitating Joel, but performing his music in a way that felt authentic and alive. (Yes, I sang along, silently to myself. My wife said she saw my lips moving!) Tharp managed somehow to tell a compelling story by stitching together a set of unrelated songs written over the long course of Joel's career. I know all of these songs quite well, and occasionally found myself thinking, "But that's not what this song means...". Yet I didn't mind; I was hearing from within the story. And I loved the dance itself -- it was classical even when modern, not abstract like Merce Cunningham's Patterns in Space and Sound. My wife knows dance well, and she was impressed that the male dancers in this show were actually doing classical ballet. (In many performances, the men are more props than dancers, doing lifts and otherwise giving the female leads a foil for their moves.)
Now I see that Merlin Mann is gushing over Tharp and The Creative Habit. Whatever else I can say, Mann is a great source of links... He points us to a YouTube video of Tharp talking about "failing well", as well as the first chapter of her book available on line. Now you can read a bit to see if you want to bother with the whole book. I echo Mann's caveat: we both liked the first chapter, but we liked the rest of the book more.
Since my post three years ago on The Creative Habit, I've been meaning to return to some of the other cool ideas that Tharp writes about in this book. Seeing Movin' Out caused me to dig out my notes from that summer, and seeing Mann's posts has awakened my desire to write some of the posts I have in mind. The ideas I learned in this book relate well to how I write software, teach, and learn.
Here is a teaser that may connect with agile software developers and comfort students preparing for final exams:
The routine is as much a part of the creative process as the lightning bolt of inspiration, maybe more. And this routine is available to everyone.
Oddly, this quote brings to mind an analogy to sports. Basketball coaches often tell players not to rely on having a great shooting night in order to contribute to the team. Shooting is like inspiration; it comes and it goes, a gift of capricious gods. Defense, on the other hand, is always within the control of the player. It is grunt work, made up of effort, attention, and hustle. Every player can contribute on defense every night of the week.
For me, that's one of the key points in this message from Tharp: control what you can control. Build habits within which you work. Regular routine -- weekly, daily, even hourly -- are the scaffolding that keep you focused on making something. What's better, everyone can create and follow a routine.
While I sit and wait for the lightning bolt of inspiration to strike, I am not producing code, inspired or otherwise. Works of inspiration happen while I am working. Working as a matter of routine increases the chances that I will be producing something when the gods smile on me with inspiration. And if they don't... I will still be producing something.
... and a week of time away from work and worries.
There is still something special about an early morning run on fresh snow. The world seems new.
November has been a bad month for running, with my health at its lowest ebb since June, but even one three-mile jog brings back a good feeling.
I can build a set of books for our home finances based on the data I have at hand. I do not have to limit myself to the way accountants define transactions. Luca Pacioli was a smart guy who did a good thing, but our tools are better today than they were in 1494. Programs change things.
S-expressions really are a dandy data format. They make so many things straightforward. Some programmers may not like the parens, but simple list delimiters are all I need. Besides, Scheme's (read) does all the dirty work parsing my input.
After a week's rest, I imagine something like one of those signs from God:
That "sustainable pace" thing...
I meant that.
-- The Agile Alliance
I'd put Kent or Ward's name in there, but that's a lot of pressure for any man. And they might not appreciate my sense of humor.
The Biblical story of creation in six days (small steps) with feedback ("And he saw that it was good.") and a day of rest convinces me that God is an agile developer.
I leave today to attend the second SECANT workshop at Purdue. This is the sort of trip I like: close enough that I can drive, which bypasses all the headaches and inconveniences of flight, but far enough away that it is a break from home. My conference load has been light since April, and I can use a little break from the office. Besides, the intersection of computer science and the other sciences is an area of deep interest, and the workshop group is a diverse one. It's a bit odd to look forward to six hours on the road, but driving, listening to a book or to music, and thinking are welcome pursuits.
As I was checking out of the office, I felt compelled to make two public confessions. Here they are.
First, I recently ran across another recommendation for Georges Perec's novel, Life: A User's Manual. This was the third reputable recommendation I'd seen, and as is my general rule, after the third I usually add it to my shelf of books to read. As I was leaving campus, I stopped by the library to pick it up for the trip. I found it in the stacks and stopped. It's a big book -- 500 pages. It's also known for its depth and complexity. I returned the book to its place on the shelf and left empty-handed. I've written before of my preference for shorter books and especially like wonderful little books that are full of wisdom. But these days time and energy are precious enough resources that I have to look at a complex, 500-page book with a wary eye. It will make good reading some other day. I'm not proud to admit it, but my attention span isn't up to the task right now.
Second, on an even more frivolous note, there is at the time of this writing no Diet Mountain Dew in my office. I drank the last one yesterday afternoon while giving a quiz and taking care of pre-trip odds and ends. This is noteworthy in my mind only because of its rarity. I do not remember the last time the cupboard was bare. I'm not a caffeine hound like some programmers, but I don't drink coffee and admit some weakness for a tasty diet beverage while working.
I'll close with a less frivolous comment, something of a pattern I've been noticing in my life. Many months ago, I wrote a post on moving our household financial books from paper ledgers and journals into the twentieth century. I fiddled with Quicken for a while but found it too limiting; my system is a cross between naive home user and professional bookkeeping. Then I toyed with the idea of using a spreadsheet tool like Numbers to create a cascaded set o journals and ledgers. Yet at every turn I was thinking that I'd want to implement this or that behavior, which would strain the limits of typical spreadsheets. Then I came to my computer scientist's senses: When in doubt, write a program. I'd rather spend my time that way anyway, and the result is just what I want it to be. No settling. This pattern is, of course, no news at all to most of you, who roll your own blogging software and homework submission systems, even content management systems and book publishing systems, to scratch your own itches. It's not news to me, either, though sometimes my mind comes back to the power slowly. The financial software will grow slowly, but that's how I like it.
As a friend and former student recently wrote, "If only there were more time..."
Off to Purdue.
For the last five years, mid-August has meant more than getting ready for fall semester. It has meant 50+ mile weeks. It has meant once or twice weekly track workouts. It has meant hours each week running, before dawn in cool, moist air; in newly-risen sunlight; in the rain.
A month ago I was still figuring things out about my running, hoping to get well all the while. Unfortunately, I haven't gotten well. At times, I have gotten better, but never well, and punctuated every couple of weeks by a return of the same symptoms that have dogged me since May 2. I've been running since early June, because I wasn't getting better anyway. The last month or two, I have managed between 24 and 29 miles each week, with one 31.5-mile week that left tired for a week afterwards. Many people think that 25-30 mile weeks are awesome, but for me they aren't, and all the while I'm looking to get better.
My doctor is baffled. He has run every test he can imagine, and all he and his nurses can say is, man, you are healthy. That's good news! ... except for the part of not being well.
We'll keep looking, and I'll keep plodding along. But I really miss the summer of running I didn't have. August isn't quite the same.
On my way into a store this afternoon to buy some milk, I ran into an old friend. He moved to town a decade or so ago and taught art at the university for five years before moving on to private practice. As we reminisced about his time on the faculty, we talked about how much we both like working with students. He mentioned that he recently attended his 34th wedding of a former student.
Thirty-four weddings from five years of teaching. I've been teaching for sixteen years and have been invited to only a handful of weddings -- three or four.
Either art students are a different lot from CS students, or I am doing something wrong...
I have been home alone with my daughters for the last few days. It's always neat to have the chance to talk with the girls over an extended time, because they do say some amazing things.
Over lunch a few days ago, we were talking about classes at school. I had been telling them about Lockhart's Lament, which I had just started reading. (More on that later.) Our conversation turned to art class, and how some teachers don't seem to understand what it means to create art. One teacher always told the students to keep things simple, because then they would get done faster. My younger daughter couldn't hide her exasperation. "She doesn't understand. It's not about fastest; it's about masterpieces." That bit of wisdom reminded me why I know she will do good things in her life.
My puffed-up pride didn't last long. The next day, in the course of a conversation I've already forgotten otherwise, she told me, "It's not that you're old, Dad; you're just too old." That's too much truth for me.
Sometimes the girls like my relatively advanced age. Over the weekend, they pulled my old Trivial Pursuit game off the shelf, and we had several hours of fun. I love that they've already read enough in their short lives to be able to play the game pretty well, and that they enjoy spending an evening or two trading questions and answers with their old dad.
Here I am, sitting in the office on a quiet Friday afternoon, looking forward to the weekend and writing up a short blog entry on a couple of cool software patterns. In another window is playing the WWDC 2008 keynote talk.
Suddenly, my ears hear the soothing voice of Steve Jobs say:
Imagine you are a university professor and you are teaching a class in how to write iPhone apps.
Writing code. An iPhone. Teaching class. Sweet Dreams (are made of this).
Back to work.
In recent days, I have written about not reading books and the relationship of these ideas to writing, from my enjoyment of Pierre Bayard's How to Talk About Books You Haven't Read. A couple of readers have responded with comments about how important reading is. Don't worry -- much of what Bayard and I are saying here is a joke. But it is also true, when looked at with one's head held tilted just so, and that's part of what made the book interesting to me. For you software guys, think about Extreme Programming -- an idea taken to its limits, to see what the limits can teach us. You can be sure that I am not telling you not to read every line of every novel and short story by Kurt Vonnegut! (I certainly have, some many, many times, and I enjoyed every minute.) Neither is Bayard, though it may seem so sometimes.
In my entries inspired by the book, it seems as if I am talking about myself an awful lot. Or consider my latest article, on parsing in CS courses. I read an article by Martin Fowler and ended up writing about my course and my opinions of CS courses. My guess is that most folks out there are more interested in Fowler's ideas than mine, yet I write.
This is another source of occasional guilt... Shouldn't this blog be about great ideas? When I write about, say, Bayard's book, shouldn't the entry be about Bayard's book? Or at least about Bayard?
Bayard helps me to answer these questions. Let's switch from Montaigne, the focus of my last entry on this topic, to Wilde. The lead quote of Bayard's Chapter 12 was the first passage of the book to seize my attention as I thumbed through it:
My experience writing this blog biases me toward shouting out, "Amen, Brother Bayard!" But, if it is true that all of my writing is a pretext for writing my autobiography, then it is all the more remarkable that I have any readers at all. Certainly you all have figured this out by now.
Bayard claims -- and Wilde agrees -- that it cannot be any other way. You may find more interesting people writing about themselves and read what they write, but you'll still be reading about the writer. (This is cold consolation for someone like me, who knows myself to be not particularly interesting!)
Bayard explores Wilde's writing on this very subject, in particular his The Critic as Artist (HB++). Bayard begins his discussion with the surface connection of Wilde offering strident support for the idea of not reading. Wilde says that, in addition to making lists of books to read and lists of books worth re-reading, we should also make lists of books not to read. Indeed, a teacher or critic would do an essential service for the world by dissuading people from wasting their time reading the wrong books. Not reading of this sort is a "power acquired by specialists, a particular ability to grasp what is essential".
Bayard then moves on to a deeper connection. Wilde asserts in his typical fashion that the distinction between creating a work of art and critiquing a work of art is artificial. First, the artist, when creating, necessarily exercises her critical faculty in the "spirit of choice" and the "subtle tact of omission"; without this faculty no one can create art, at least not art worth considering. This is an idea that most people are willing to accept, especially those creative people who have some awareness of how they create.
But what of the critic? Many people consider critics to be parasites who at best report what we can experience ourselves and and at worst detract from our experience with their self-indulgent contributions.
Not Wilde:
Criticism is itself an art. And just as artistic creation implies the working of the critical faculty, and, indeed, without it cannot be said to exist at all, so Criticism is really creative in the highest sense of the word. Criticism is, in fact, both creative and independent.
This means that a blogger who primarily comments on the work of others can herself be making art, creating new value. By choosing carefully ideas to discuss, subtly omitting what does not matter, the critic creates a new work potentially worthy of consideration in its own right. (Suddenly, the idea of a mashup comes to mind.)
The idea of critic as an independent creator is key. Wilde says:
The critic occupies the same relation to the work of art he criticises as the artist does to the visible world of form and colour, or the unseen world of passion and thought. He does not even require for the perfection of his art the finest materials. Anything will serve his purpose.
...
To an artist so creative as the critic, what does subject-matter signify? No more and no less than it does to the novelist and the painter. Like them, he can find his motives everywhere. Treatment is the test. There is nothing that has not in it suggestion or challenge.
Bayard summarizes other comments from Wilde in this way:
The work being critiqued can be totally lacking in interest, then, without impairing the critical exercise, since the work is there only as a pretext.
But how can this be?? Because ultimately, the writer writes about himself. Freed from the idea that writing about something else is about that something, the writer is able to use the something as a trigger, a cue to write about the ideas that lie in his own mind. (Please read the first paragraph of the linked entry, if nothing else. Talk about not reading!)
As Wilde says,
That is what the highest criticism really is, the record of one's own soul.
Again, Bayard summarizes neatly:
Reflection on the self .. .is the primary justification for critical activity, and this alone can elevate criticism to the level of art.
As I read this chapter, I felt as if Bayard and Wilde were speaking directly to me and my own doubts as a blogger who likes to write about works I read, performances I see, and experiences as I have. It is a blogger's manifesto! Knowing and Doing feels personal to me because it is. Those works, performances, and experiences stimulate me to write, and that's okay. It is the nature of creativity to be sparked by something Other and to use that spark to express something that lies within the Self. Reading about Montaigne and his fear of forgetting what he had written was a trigger for me to write something I'd long been thinking. So I did.
I can take some consolation: This blog may not be worth reading, but not because I choose to connect what I read, see, hear, and feel to myself. It can be unworthy only to the extent that what is inside me is uninteresting.
By the way, I have just talked quite a bit about "The Critic as Artist", though I have never read it. I have only read the passages quoted by Bayard, and Bayard's commentary on it. I intend to read the original -- and begin forgetting it -- soon.
~~~~~
These three entries on Bayard's delightful little text cover a lot of ground in the neighborhood of guilt. We often feel shame at not having read something, or at not having grown from it. When we write for others, it is easy to become too concerned with getting things right, with being perfect, with putting on appearances. But consider this final quote from Bayard:
Truth destined for others is less important than truthfulness to ourselves, something attainable only by those who free themselves from the obligation to seem cultivated, which tyrannizes us from within and prevents us from being ourselves.
Long ago, near the beginning of this blog, I quoted Epictetus's The Enchiridion, via the movie Serendipity, of all places. That quote has a lot in common with what Bayard says here. Freeing ourselves from the obligation to seem cultivated -- being content to be thought foolish and stupid -- allows us to grow and to create. Epictetus evens refers to keeping our "faculty of choice in a state conformable to nature", just as Wilde stresses the role of critical faculty creating a work of art when we write.
Helping readers to see this truth and to release them from the obligation to appear knowing is the ultimate source of the value of How to Talk About Books You Haven't Read. Perhaps Bayard's will be proud that I mark it FB++.
Why is it that I feel compelled to write about getting a new Macbook Pro? Lots of people have one by now. But for a computer guy like me, a new laptop is one part professional tool and one part toy, a new user experience that shapes how I live.

Unlike my last laptop purchase, I splurged and bought an entry-level Macbook Pro. The 15" screen seems so much bigger than my iBook's 13" screen, because it is. The actual screen size is 13-1/8"x8-1/4" versus 9-3/4"x7-1/4", which is 50% larger. One motivation for buying the iBook last time was having a smaller machine for while flying. That worked out as planned, but even when I travel a lot I don't travel all that much. I'll have a chance to see how well the new machine travels next week when I visit Google.
Migrating files and configuration was much simpler this time. The Pro comes with a 200GB drive, rather than the 30GB(!) drive the 2005 iBook shipped with. Of course, this experience only accentuates that I am old. I think of that 30GB drive as horribly restrictive, yet not that many years ago I would have felt like a king with one. The new machine's drive is close enough to my office machine's 240-gig drive that I was able to mirror all of my files. That said, I was surprised a bit to find that the "200GB Serial ATA" drive advertised has an actual capacity of 186.31GB...)
It's a good idea for me to get a new machine every once in a while, and not just for the new technology, which is itself a wonderful advantage. I'm a creature of habit, more so than most people I know, and my brain benefits from being pulled out of its rut. My fingers must learn a new keyboard. I have to dig out a new bag to carry it in, because my OOPSLA 2005 isn't wide enough. The Leopard interface is just different enough to open my eyes to tasks that are now carried out subconsciously on the older machines.
Whenever I get a new machine and face the task of despoiling the pristine, out-of-the-box set-up of my system with my own files, I feel the urge eliminate clutter. A big part of this is always clearing out my stuff/ folder -- currently at 13,604 files and 1.46 GB on disk. (My stuff/ folder is full of folders, so I just took a break to write a quick Ruby script to count the files for me.) But this time I also paid close attention to /Applications/personal, where I store nearly all of the Mac applications I install on my machine. The only exceptions are major-league apps such as iWork and Adobe Creative Suite.
/Applications/personal on my desktop machine contains 59 apps total, including four "classic" (pre-OS ) programs. I also have two folders of apps on trial in the stuff/ folder, totaling another 27.
Hello. My name is Eugene. I am an application junkie.
Whenever I read about a cool app in a blog or an e-mail or a magazine, I go "Ooh!" and download it. I delete many of these; for the 86 on my machine, I've probably tried and deleted several multiples more. But often they find there way into a folder somewhere because I just know that I'll use them soon. But usually I don't. I don't use Paparazzi or Keyboard Cleaner, or PsyncX or WordService. They are all fine programs, I am sure, but they just never broke into my workflow. Same for Growl and AquamacsEmacs.
So this time, I decided to transfer only programs that I recall using as a part of my work or play. Right now, the new Macbook has 20 apps, ranging from workhorses such as NetNewsWire and VoodooPad to programming tools such as PLT Scheme and Scratch down to fun little utilities such as LittleSecrets and PagePacker -- and one game so far, SudokuCompanion. Let's see what I miss from the big stash, if anything...
And don't get me started on the widgets I installed back when Dashboard seemed so very cool. I almost never use a one of them. None have made it across the divide yet.
My Macbook Pro now knows me as wallingf. Perhaps I should give her a name, too. It's personal.
A former student recently mentioned a tough choice he faces. He has a great job at a Big Company here in the Midwest. The company loves him and wants him to stay for the long term. He likes the job, the company, and the community in which he lives. But this isn't the sort of job he originally had hoped for upon graduation.
Now a position of just the sort he was originally looking for is available to him in a sunny paradise. He says, "I have quite a decision to make.... it's hard to convince myself to leave the secure confines of [Big Company]. Now I see why their turnover rate is so low."
I had a hard time offering any advice. When I was growing up, my dad work for Ford Motor Company in an assembly plant, and he faced insecurity about the continuance of his job several times. I don't know how much this experience affected my outlook on jobs, but in any case my personality is one that tends to value security over big risk/big gain opportunities.
Now I hold a job with greater job security than anyone who works for a big corporation. An older colleague is fond of saying Real men don't accept tenure. I first heard him say that when I was in grad school, and I remember not getting it at all. What's not to like about tenure?
After a decade with tenure, I understand better now what he means. I always thought that the security provided by having tenure would promote taking risks, even if only of the intellectual sort. But too much security is just as likely to stunt growth and inhibit taking risks. I sometimes have to make a conscious effort to push myself out of my comfort zone. Intellectually, I feel free to try new things, but pushing myself out of a comfortable nest here into a new wnvironment -- well, that's another matter. What are the opportunity costs in that?
I love what Paul Graham says about young CS students and grads having the ability to take entrepreneurial risk, and how taking those risks may well be the safer choice in the long run. It's kind of like investing in stocks instead of bonds, I think. I encourage all of my students to give entrepreneurship a thought, and I encourage even more the ones whom I think have a significant chance to do something big. There is probably a bit of wistfulness in my encouragement, not having done that myself, but I don't think I'm simply projecting my own feelings. I really do believe that taking some employment risk, especially while young, is good for many CS grads.
But when faced with a concrete case -- a particular student having to make a particular decision -- I don't feel quite so cocksure in saying "go for it with abandon". This is not abstract theory; his job and home and fiancee are all in play. He will have to make this decision on his own, and I'd hate to push him toward something that isn't right for him from my cushy, secure seat in the tower. I feel a need to stay abstract in my advice and leave him to sort things out. Fortunately, he is a bright, level-headed guy, and I'm sure he'll do fine whichever way he chooses. I wish him luck.
Last night, I attended a Billy Joel concert. I last saw him perform live a decade or so ago. Billy was a decade older, and I was a decade older. He looked it, and I'm sure I do, too.
But when he started to play the piano, it could have been 1998 in the arena. Or 1988. Or 1978. The music flowing from his hands and his dancing feet filled me. Throughout the night I was 19 again, then 14, 10, and 25. I was lying on my parents' living room floor; sitting in the hand-me-down recliner that filled my college dorm room; dancing in Market Square Arena with an old girlfriend. I was rebellious teen, wistful adult, and mesmerized child.
There are moments when time seems more illusion than reality. Last night I felt like Billy Pilgrim, living two-plus hours unstuck in time.
Oh, and the music. There are not many artists who can, in the course of an evening, give you so many different kinds of music. From the pounding rock of "You May Be Right" to the gentle, plaintive "She's Always A Woman", and everything between. The Latin rhythms of "Don't Ask Me Why" extended with an intro of Beethoven's "Ode to Joy", and a "Root Beer Rag" worthy of Joplin.
Last night, my daughters aged 15 and 11 attended the concert with me. Music lives on, and time folds back on itself yet again.
[A transcript of the SIGCSE 2008 conference: Table of Contents]
This sort of entry usually comes after I write up the various conference sessions and have leftovers that didn't quite fit in an article. That may still happen, but I already have some sense of what will go where and have these items as miscellaneous observations.
First of all, I tried an experiment today. I did not blog in real-time. I used -- gasp! -- the antiquated technology of pen and paper to take notes during the sessions. On one or two occasions, I whipped open the laptop to do a quick Google search for a PhD dissertation or a book, but I steadfastly held back from the urge to type. I took notes on paper, but I couldn't fall into "writing" -- crafting sentences, then forming paragraphs, editing, ... All I could do was jot, and because I write slowly I had to be pickier about what I recorded. One result is that I paid more attention to the speakers, and less to a train of thought in my head. Another is that I'll have to write up the blog posts off-line, and that will take time!
As I looked through the conference program last night, I found myself putting on my department head hat, looking for sessions that would serve my department in the roles I now find myself in more often: CS1 for scientists, educational policy in CS, and the like. But when I got to the site and found myself having to choose between Door A and Door B... I found myself drifting into the room where Stuart Reges was talking about a cool question that seems to pick out good CS students, and the nifty assignments. Whatever my job title may be, I am a programmer and CS teacher. (More on both of those sessions in coming entries...)
Now, for a couple of non-CS, non-teaching observations.
There is so much for me to learn.
Last night, at dinner with my family, I casually mentioned this YouTube video in which Barack Obama answers a question from a Google interviewer about how to sort a million 32-bit integers. Obama gets a good laugh when he says that "the bubble sort would be the wrong way to go". My family knows that I enjoy pointing out pop references to CS, so I figured they'd take this one in stride and move.
But they didn't. Instead, they asked questions. What is "bubble sort"? Why do they call it that? As I described the idea, they followed with more questions and ideas of their own. I told them that bubble sort was the first sorting algorithm I ever learned, programming in BASIC as a junior in high school. My wife mentioned something like the selection sort, so I told them a bit about selection sort and insertion sort, and how they are considered "better" than bubble sort.
Why? they asked. That led us to Big-Oh notation and O(n²) versus (nlogn), and why the latter is better. We talked about how we can characterize an algorithm by its running time as proportional to n² or nlogn for some factor k, and the role that k plays in complicating our comparisons. I mentioned that O(n²) and a big k are part of the reason that bubble sort is considered bad, and that's what made the answer in the video correct -- and also why I am pretty sure that Obama did not understand any of the reasoning behind his answer, which is what made his deadpan confidence worth a chuckle.
(If you would like to learn more about bubble sort and have a chuckle of your own, read Owen Astrachan's Bubble Sort: An Archaeological Algorithmic Analysis (PDF), available from his web site.)
As the conversation wound down, we talked about how we ourselves sort things, and I got to mention my favorite sorting algorithm for day-to-day tasks, mergesort.
I suspect that my younger daughter enjoyed this conversation mostly for hearing daddy the computer scientist answer questions, but my wife and freshman daughter seemed to have grokked some of what we talked about. Honest -- this wasn't just me prattling on unprovoked. It was fun, yet strange. Maybe conversations like this one can help my daughters have a sense of the many kinds of things that computer scientists think about. Even if it was just bubble sort.
Leave it to George Costanza. In the episode of Seinfeld titled The Masseuse, George finally has a great relationship with a wonderful woman. Inexplicably, she likes everything about him. Yet all he can think about is Jerry's current girlfriend, a masseuse who can't stand George. Rather than turn his attention to his own loving partner, he makes such a strident effort to get the masseuse to like him that he drives her even further away -- and loses his own girl, who can't understand George's obsession. But it's really quite simple: George wants everyone to like him.
I understand that not everyone will like me. But deep inside it's easy to lose sight of that fact in the course of daily interactions. When I became department head, one of my goals was to treat everyone fairly, to be open and honest so that each member of the faculty could trust that I was giving him or her a fair hearing and doing the best I could to help him or her succeed within whatever conditions we found ourselves to be operating.
That's where George's problem tries to sneak in the door. What if I do treat everyone fairly and am open and honest; what if I do all I can so that each faculty can trust me and my intentions -- and still someone is unhappy with me? What then?
Trying to do what George tried to do is a recipe for disaster. As hard as it is sometimes, all I can do is what I can do. I should -- must -- act in a trustworthy manner, but I cannot make people like what I do, or like me. That is part of the territory. For me, though, the occasional encounter with this truth sucks a lot of psychic energy out of me.
This is the second semester of my third year as head, which means that I am undergoing a performance evaluation. I suppose the good news is that the dean feels comfortable enough with how I've done to do the review at all, rather than look for a new person for the next three-year appointment. He is using an assessment instrument developed by the IDEA Center at Kansas State. The faculty were asked to judge my performance on a number of tasks that are part of a head's job, such as "Guides the development of sound procedures for assessing faculty performance" and "Stimulates or rejuvenates faculty vitality/enthusiasm". My only role in the process was to rank each of the tasks in terms of their importance to the job.
I look at the review as both summative and formative. The summative side of the review is to determine how well I've done so far and whether I should get to keep doing it. The formative side is to give me feedback I can use to improve for the future. As you might guess from my fondness for so-called agile software development practices, I am much more interested in the formative role of the assessment. I know that my performance has not been ideal -- indeed, it's not even been close! -- but I also know that I can get better. Feedback from my colleagues and dean will help.
Though I was not asked to assess my performance on these issues, I do have a sense of my job performance. I have been only marginal in managing day-to-day affairs. That task requires a certain kind of focus and energy that I've had to develop on the job. I've also had to learn how to respond effectively in the face of a steady barrage of data, information, and requests. I have also been only marginal in "leadership" tasks, the ones that require I take initiative to create new opportunities for faculty and students to excel. This is an area where I have had a lot of ideas and discussed possibilities with the faculty, but finding time to move many of these ideas forward has been difficult.
In an area of particular importance to our department given its history, I have done a reasonable job of communicating information to the faculty, treating individual faculty fairly, and encouraging conversation. I recognized these tasks as primary challenges when I accepted my appointment and, while I had hoped to do better, I've done well so far to keep this dynamic front and center.
The results of the faculty survey are in; they arrived in my mailbox yesterday. I decided not to read the results right away... I have been a little under the weather and wanted to preserve my mental energy for work. The last session of my 5-week bash scripting course meets today, and I would rather be focused on wrapping up the class than on the data from my evaluation. I can tell myself not to fall victim to George's masseuse problem, but sometimes that is more easily done with conscious choices about how and when to engage relationships.
This afternoon, I'll look at the data, see what they can help me learn, and think about the future.
I wasn't expecting to hear John Maeda's name during the What is a Tree? talk, because I didn't know that researchers in Maeda's lab had created the language Processing. But hearing his name brought to mind something that has been in the back of my mind for a couple of months, since the close of my first theater experience. I had blogged about a few observations my mind had made about the processes of acting in and directing a play. The former were mostly introspective, and the latter were mostly external, as I watched our director coalesce what seemed like a mess into a half-way decent show. Some of these connections involved similarities I noticed between producing a play and creating software.
I made notes of a few more ideas that I hadn't mentioned yet, including:
I'm still wondering if those last two have any useful analogue in software development...
Since the show ended, I have occasionally tried to discern the value in the analogy between producing a play and creating software -- indeed, if there is any. That's where the connection to Maeda comes in. Last summer, I read the slender Laws of Simplicity, a collection of essays from Maeda's blog of the same name. The book suggest ten ways that we can design simpler systems and products. I must not have been in the right place to read the book just then, because I didn't get as much out of it as I had hoped. But one part of the book stuck with me.
For a metaphor to engage us deeply, Maeda wrote, it is essential that it relate, translate, and surprise. As I recall now, this means that the metaphor must relate the elements of the two things, that it must translate foreign elements from one of the things to the other, and that the result of this translation should surprise -- it should make us see or understand the other thing in a new way, give us insight.
There is a danger in finding analogies everywhere we look by making superficial connections. I am perhaps more prone to this risk than many other folks. That may be why I liked Maeda's relate/translate/surprise triad so much. Since reading it, I have used it as an external checkpoint for any new analogy that I want to make. If I can explain how the metaphor relates the two things, translates disparate elements, and surprises me, then I have some reason to think that the metaphor offers value -- at least more reason than just saying, "Hey, look at this cool new thing I noticed!"
To this point, I have not found the "surprise" in the theater experience that teaches me something new about how to think about making software. This doesn't mean that there is no value in the analogy, only that I haven't found it yet. By remaining skeptical a little while longer, I decrease the probability that I try to draw an inappropriate conclusion from the relationship.
Of course, just because I haven't yet found the surprise in the analogy doesn't mean that I did not find value in the experience that led me to it. A rich web of experiences is valuable in its own right, and enjoyable. It also provides the source material for learning.
Yesterday was the the sort of day that makes my CS friends and colleagues ask if I am crazy for being department head. It was the third day of classes this semester. A dozen students came by, for advising on course selection, for help switching sections, and the like. I produced a schedule mapping graduate assistants to open lab hours, ran it past the GAs and the faculty, and then distributed it. The phone rang repeatedly, with calls from other offices on campus and from off-campus folks asking questions about scholarship application deadlines.
Every time I started a new train of thought, an interrupt occurred. Context switch, new process, and return. Each task was, individually, just fine. In fact, I enjoy talking to students, new and returning, and helping them make choices about their studies. But little or no computer science happened.
Today was my teaching day, so I got to spend plenty of time thinking about shell scripts. That's not Computer Science, but it's computer science, and as a hacker I loved it. Of course, yesterday's interrupt-fest cut into my prep time enough that I didn't feel as prepared for class as I like to be. But I got to think about software tools, writing code, duplication, abstraction -- many of the things that make me a happy computer scientist.
Tomorrow I travel to Des Moines to help select the winners of the 2008 Prometheus Awards, the Academy Awards of IT in my state. Four hours on the road. A great outreach activity, an important role for my university, and conversation with some sharp, interesting people who are involved in my discipline's industry -- but little or no computer science.
The weekend will be here soon.
I have always liked the week before classes start for a new semester. There is a freshness to a new classroom of students, a new group of minds, a new set of lectures and assignments. Of course, most of these aren't really new. Many of my students this semester will have had me for class before, and most semesters I teach a course I've taught before, reusing at least some of the materials and ideas from previous offerings. Yet the combination is fresh, and there is a sense of possibility. I liked this feeling as a student, and I like it as a prof. It is one of the main reasons that I have always preferred a quarter system to a semester system: more new beginnings.
Since becoming department head, the joy is muted somewhat. For one thing, I teach one course instead of three, and instead of taking five. Another is that this first week is full of administrivia. There are graduate assistantship assignments to prepare, lab schedules to produce, last-chance registration sessions to run. Paperwork to be completed. These aren't the sort of tasks that can be easily automated or delegated or shoved aside. So they capture mindshare -- and time.
This week I have had two other admin-related items on my to-do list. First is an all-day faculty retreat my department is having later this week. The faculty actually chose to get together for what is in effect an extended meeting, to discuss the sort of issues that can't be discussed very easily during periodic meetings during the semester, which are both too short for deep discussion and too much dominated by short-term demands and deadlines. As strange as it sounds, I am looking forward to the opportunity to talk with my colleagues about the future of our department and about some concrete next actions we can take to move in the desired direction. There is always a chance that retreats like this can fall flat, and I bear some responsibility in trying to avoid that outcome, but as a group I think we can chart a strong course. One good side effect is that we will go off campus for a day and get away from the same old buildings and rooms that will fill our senses for much of the next sixteen weeks.
Second is the dean's announcement of my third-year review. Department heads here are reviewed periodically, typically every five years. I came into this position after a couple of less-than-ideal experiences for most of the faculty, so I am on a 3-year term. This will be similar to the traditional end-of-the-term student evaluations, only done by faculty of an administrator. In some ways, faculty can be much sharper critics than students. They have a lot of experience and a lot of expectations about how a department should be run. They are less likely to "be polite" out of habits learned as a child. I've been a faculty member and do recall how picky I was at times. And this evaluation will drag out for longer than a few minutes at the end of one class period, so I have many opportunities to take a big risk inadvertently. I'm not likely to pander, though; that's not my style.
I'm not all that worried. The summative part of the evaluation -- the part that judges how well I have done the job I'm assigned to do -- is an essential part of the dean determining whether he would like for me to continue. While it's rarely fun to receive criticism, it's part of life. I care what the faculty think about my performance so far, flawed as we all know it's been. Their feedback will play a large role in my determining whether I would like for me to continue in this capacity. The formative part of the evaluation -- the part that gives me feedback on how I can do my job better -- is actually something I look forward to. Participating in writers' workshops at PLoP long ago helped me to appreciate the value of suggestions for improvement. Sometimes they merely confirm what we already suspect, and that is valuable. Other times they communicate a possible incremental improvement, and that is valuable. At other times still they open doors that we did not even know were available, and that is really valuable.
I just hope that this isn't the sort of finding that comes out of the evaluation. Though I suppose that that would be valuable in its own way!
Some students do listen to what we say in class.
Back when I taught Artificial Intelligence every year, I used to relate a story from Russell and Norvig when talking about the role knowledge plays in how an agent can learn. Here is the quote that was my inspiration, from Pages 687-688 of their 2nd edition:
Sometimes one leaps to general conclusions after only one observation. Gary Larson once drew a cartoon in which a bespectacled caveman, Zog, is roasting his lizard on the end of a pointed stick. He is watched by an amazed crowd of his less intellectual contemporaries, who have been using their bare hands to hold their victuals over the fire. This enlightening experience is enough to convince the watchers of a general principle of painless cooking.
I continued to use this story long after I had moved on from this textbook, because it is a wonderful example of explanation-based learning.
Unfortunately, Russell and Norvig did not include the cartoon, and I couldn't find it anywhere. So I just told the story and then said to the class -- every class of AI students to go through my university over a ten-year stretch -- that I hoped to find it some day.
As of yesterday, I can, thanks to a former student. Ryan heard me on that day in his AI course and never forgot. He looked for that cartoon in many of the ways I have over the years, by googling and by thumbing through Gary Larson collections in the book stores. Not too long ago, he found it via a mix of the two methods and tracked it down in print. Yesterday, on one of his annual visits (he's a local), he brought me a gift-wrapped copy. And I was happy!
Sadly, I still can't show you or any of my former students who read my blog. Sorry. I once posted another Gary Larson cartoon in a blog entry, with a link to the author's web site, only to eventually a pre-cease-and-desist e-mail asking me to pull the cartoon from the entry. I'll not play with that fire again. This is almost another illustration of the playful message of the very cartoon in question: learning not to stick one's hand into the flame from a single example. But not quite -- it's really an example of learning from negative feedback.
Thanks to Ryan nonetheless, for remembering an old prof's story from many years ago and for thinking of him during this Christmas season! Both the book and the remembering make excellent gifts.
My first run as an actor has ended without a Broadway call. Nonetheless I consider it to have been successful enough. My character didn't cause any major interruptions in the flow of our three performances, and I even got us back on track a time or two. Performing in front of a crowd -- especially a crowd that contained personal friends -- was enough different from giving a lecture or speaking in public that it wracked a few nerves. But getting a laugh from a real audience was also enough different from a laugh in a lecture, too, and the buzz could feed the rest of the performance.
My first post on this topic recorded dome thoughts I had had on the relationship between developing software and directing a play. In those thoughts, the director or producer is cast as the software developer, or vice versa. In the last couple of weeks, my thoughts turned more often to my role as performer. Here are a few:
After a while, experience helps push self-consciousness into the background. It was even possible to get into a flow where the self disappeared for a moment. I think I need more experience in character to have more experiences like that! But those moments were special.
Most of the relationships I noticed between acting in the play and building software were really patterns of good teams. In every scene I depended upon the presence and performance of others -- and they depended on me. Being a good teammate mattered both on stage (while performing) and off (when preparing and when taking and giving feedback). "The key to acting," said our director, "is listening to other people." Funny how that is the key to so many things.
As I look back on this (first?) experience being a player in a stage production, I think that there is a lot to this notion that developing software is like producing a play -- and that producing a play is like developing software. The two media are so different, but they are both malleable, and both ultimately depend on their audiences (users).
Over the course of two weeks or so, the director did a lot of what I call refactoring. For example, he found the equivalent of duplicated code -- lines and even larger parts of scenes that don't move the story forward, given how the rest of the play is being staged. Removing duplicated stuff frees up stage real estate and time for making other additions and changes. He also aggressively sought and deleted dead space -- moments when no one was on stage (say, in the transition between scenes) or no active was taking place (say, when lighting changed). Dead space kills the energy of the show and distracts the viewer. Dead space is a little like dead code and over-designed code -- code that isn't contributing to the application. Cut it.
Every night after rehearsal and even shows, the director "ran notes" with us. This was a time after each "iteration" dedicated to debugging and refactoring. That's good practice in software.
One other connection jumped out to me yesterday. After we closed the show, I was chatting with Scott Smith, a local filmmaker whose is real-life husband to the woman who played my wife in the show. We were discussing how filmmaking has changed in the last decade or so. In the not-so-old days folks in video were strongly encouraged to become specialists in one of the stages: writing, directing, shooting, editing, and so on. Now, with the wide availability of relatively inexpensive equipment and digital tools, and economic pressures to deliver more complete services, even veterans such as Smith find themselves developing skills across the board, becoming not a jack-of-all-trades but master of none, but rather strong in all phases of the game.
I immediately thought of extreme programming's rapid development cycle that requires programmers to be not only writers of code but also writers of stories and tests, to be able to interact with clients and to grow designs and architectures. It's hard to be a master of all trades, but the sort of move we have seen in software and in filmmaking from specialist to generalist encourages a deep competence in all areas. Too often I have heard folks say "I am a generalist" as way to explain their lack of expertise in any one area. But the new generalist is competent across the board, perhaps expert in multiple areas, and able to contribute meaningful to the whole lifecycle.
One last idea. Just before our final show, the director gave us our daily pep talk. He said that come performers view the last show as occasion to do something wacky -- to misplace someone's prop, or deliver a crazy line not from the script, or to affect some voice or mannerism on stage. That sounds like fun, he said, but remember: For the audience out in the seats today, this is the first show. They deserve to see the best version of the show that we can give. For some reason, I thought of software developers and users. Maybe my mind was just hyperactive at that moment when we were about to create our illusion. Maybe not.
Classes are over. Next week, we do the semiannual ritual of finals week, which keeps many students on edge while at the same time releasing most of the tension in faculty. The tension for my compiler students will soon end, as the submission deadline is 39 minutes away as I type this sentence.
The compiler course has been a success several ways, especially in the most important: students succeeded in writing a compiler. Two teams submitted their completed programs earlier this week -- early! -- and a couple of others have completed the project since. These compilers work from beginning to end, generating assembly language code that runs on a simple simulated machine. Some of the language design decisions contributed to this level of success, so I feel good. (And I already know several ways to do better next time!)
I've actually wasted far too much time this week writing programs in our toy functional language, just because I enjoy watching them run under the power of my students' compilers.
More unthinkable: There is a greater-than-0% chance that at least one team will implement tail call optimization before our final exam period next. They don't have an exam to study for in my course -- the project is the purpose we are together -- so maybe...
In lieu of an exam, we will debrief the project -- nothing as formal as a retrospective, but an opportunity to demo programs, discuss their design, and talk a bit about the experience of writing such a large, non-trivial program. I have never found or made the time to do this sort of studio work during the semester in the compilers course, as I have in my other senior project courses. This is perhaps another way for me to improve this course next time around.
The end of week n is a good place to be. This weekend holds a few non-academic challenges for me: a snowy 5K with little hope for the planned PR and my first performances in the theater. Tonight is opening night... which feels as much like a scary final exam as anything I've done in a long time. My students may have a small smile in their hearts just now.
Context You are in an Interactive Performance, perhaps a play, using Scripted Dialogue.
Problem The performer speaking before you delivers a line incorrectly. The new line does not change the substance of the play, but it interrupts the linguistic flow.
Example Instead of saying "until the first of the year", the performer says as "for the rest of the year".
Forces You know your lines and want to deliver them correctly.
The author wrote the dialogue with a purpose in mind.
Delivering the line as you memorized it is the safest way for you to proceed, and also the safest route back on track.
BUT... Delivering the scripted line will call attention to the error. This may disconcert your partner. It will also break the mood for the audience.
So: Adapt your line to the set up. Respond in a way that is seamless to the audience, retains the key message of the story, and gets the dialogue back on track.
That is, catch what you are thrown.
Example Change your line to say "for the rest of the year?" instead of "until the first of the year?"
Related Patterns If the performer speaking before you misses a line entirely, or gets off the track of the Scripted Dialogue, deliver a Redirecting Line.
----
Postscript: This category of my blog is intended for software patterns and discussion thereof, but this is a pattern I just learned and felt a strong desire to right. I may well try to write Redirecting Line and maybe even the higher-level Scripted Dialogue and Interactive Performance patterns, if the mood strikes me and the time is available. I never thought of pattern language of performance when I signed on for this gig... And just so you know, I was the performer who mis-delivered his line in the example given above, where I first encountered Catch What You're Thrown.
In a stunning departure from my ordinary behavior, I have taken an acting role in a play. My daughters were recently cast in a production of Barbara Robinson's classic children's story The Best Christmas Pageant Ever, being put on by a local church. The director is well known in our area as an actor and as the long-time director of a tremendous local children's theater, and he has just returned to the area as youth director of said church. He is also the virtual training partner to whom I have referred a few times in my entries on marathon preparation.
This play is mostly about kids and ladies, and plenty of folks auditioned for those roles. But when the one guy who auditioned for the part of the father dropped out, the production was left with a big hole. My daughters joked that I should fill in; it would be fun. My running partner-as-director assured me that I could handle what is really a small supporting role, even though I have no acting experience to speak of. After some hemming and hawing, I decided to give it a go. A compressed rehearsal schedule and a relaxed venue were enough to lower my fears, and the chance to work with my daughters -- who love to perform and who are getting pretty good at it -- was enough to convince me to take a risk.
So, in a few weeks, I will appear on stage as father Bob Bradley, immortalized in a made-for-TV film starring Loretta Swit by veteran character actor Jackson Davies.
Fortunately, my role in the play is a bit larger than the dad's role in the movie. Davies played a small, straight part, and I get to go for a laugh or two. The dad, though also gets to deliver a key passage in the story, what I call my "Linus moment", in analogy to A Charlie Brown Christmas. My lines are neither as extensive nor quite a poignant as the spotlighted soliloquy of Linus's Biblical passage, but still it is a pivotal moment. How is that for pressure on a first-time actor with no discernible natural skill? May I rise to the challenge!
I'm still not sure what to expect. I figure in the worst case we have a little fun. In the best case, perhaps learning a bit about how to deliver a line and mug for the audience will improve my "stage presence" as a teacher and as a public speaker. I usually live my life on a rather narrow path, so stretching my boundaries is almost certainly a good thing.
Recently I mentioned the big pharmaceutical company Eli Lilly in an entry on the next generation of scientists, because one of its scientists spoke at the SECANT workshop I was attending. I have some roundabout personal connections to Lilly. It is based in my hometown.
When I was in high school and had moved to a small town in the next county, I used to go with some adult friends to play chess at the Eli Lilly Chess Club, which was the only old-style corporate chess club of its kind that I knew of. (Clubs like it used to exist in many big cities in the 19th and early 20th centuries. I don't know how common they are these days. The Internet has nearly killed face-to-face chess.) I recall quite a few Monday nights losing quarters for hours while playing local masters at speed chess, at 1:30-vs-5:00 odds!
Coincidentally, my high school hometown was also home to a Lilly Research Laboratories facility, which does work on vaccines, toxins, and agricultural concerns. Parents of several friends worked there, in a variety of capacities. When I was in college, I went out on a couple of dates with a girl from back home. Her father was a research scientist at Lilly in Greenfield. (A quick google search on his name even uncovers a link to one of his papers.) He is the sort of scientist that Kumar, our SECANT presenter, works with at Lilly. Interesting connection.
But I can go one step further and bring this even closer to my professional life these days. My friend's last name was Gries. It turns out that her father, Christian Gries, is brother to none other than distinguished computer scientist David Gries. I've mentioned Gries a few times in this blog and even wrote an extended review of one of his classic papers.
I don't think I was alert enough at the time to be sufficiently impressed that Karen's uncle was such a famous computer scientist. In any case, hero worship is hardly the basis for a long-term romantic relationship. Maybe she was wise enough to know that dating a future academic was a bad idea...
I recently realized something.
In books with academic settings, one often sees images of the professor, deep in thought, strolling along the tree-lined walks of campus. Students bustle about on the way between classes. The professor walks along, carefree, absorbed in whatever interesting problem has his or her mind. (All too often, it's a him.) Even if he is running late, has a meeting to attend or a class to lead, he hurries not. He is a professor and leads a life of his own design, even if administrators and students try to impinge on his time. Whatever deep thought occupies his mind comes first. So peaceful.
Movies show us these images, too. So peaceful.
I've never been like that. My campus setting looks much like the ones described in books and movies (though lately ours has looked more like a construction zone than an old-Ivy plat), but I always seem to be in hurry. Can't be late for class, or late for that meeting. Too much to do.
I've often asked myself, when will it be like in the books and movies.
My realization: The problem isn't with my campus or even my university. It's me.
The images in the books and movies are different because the prof ambling peacefully along isn't me. It's Professor Kingsfield. Many of these characters are clichés even when done well, but in any case they are different from me.
The only way for me to live out those images is to modify my own behavior or outlook. Peace comes from inside, not out there. But I don't think I am in need of a change... I'm not restless or dissatisfied; I'm just busy being me, solving problems and thinking about the latest something to cross my path.
So maybe what I need to change is my expectation -- the expectation that I can or even should be like the fictional people I see in those scenes. I suspect that having unrealistic expectations is the cause of as much disharmony as having the "wrong outlook". The outlook isn't always wrong. Sometimes it's just me.
Sponsored outlets in the walkways of the concourses:
and
The sponsor in this case is Chase, The Bank Formerly Known as Chase Manhattan and later as JP Morgan Chase. Each outlet plate has a blue Chase banner running down the wall from about eye level right down to the pair of outlets. The banners caught my eye, so I guess they worked. Eventually the gimmick will wear out its novelty -- perhaps it already has for other flyers, or elsewhere in the country; I don't fly often -- but I thought it was cute. Funny how changes in technology have made something as mundane as an open outlet so valuable!
Oh, and thanks to cashing in some very old, expiring frequent flyer miles, I flew first class for the first time in a long time, from Indianapolis to John Wayne/Orange County. It wasn't quite like the Seinfeld episode in which Jerry and Elaine experience the different sides of traveling first class and coach, but it was very, very nice. A good addition to my vacation.
... at the end of a long day.
I found only one relevant link -- the first link on the results page, of course -- but it was not for the shop. Instead it included a blog entry written by a friend of Scott's son, which quoted the full text of the son's eulogy for his father. My good friend and former boss died this past March after a long battle with lung disease. (In addition to being a chess hound and a professional sheet metal man, he smoked far too much.) The eulogy almost brought me to tears as it reminisced about the decent man I, too, remembered fondly and respected so. I have no simple way to contact Scott's son to thank him for sharing his eulogy, but I did leave a comment on the blog.
Not many years ago, the idea that I could have learned about Scott's passing in this way and read the eulogy would have been unthinkable. The connection was indirect, impersonal in some ways, but deeply personal. For all its shortcomings, our technology makes the world a better place to live.
But I don't actually mind not having comments. I sometimes miss the interactivity that comments would enable, but managing comments and combatting comment spam takes time, time that I would rather spend reading and blogging.
Oh, and he's spot on about that procrastinating thing.
Back to paradise.
Two current events have me thinking about AI, one good and one sad.
First, after reporting last week that checkers has been solved by Jonathan Schaeffer's team at the University of Alberta, this week I can look forward to the Man vs. Machine Poker Challenge at AAAI'07 The computer protagonist in this event, Polaris, also hails from Alberta and Schaeffer's poker group. In this event, which gets under way shortly in Vancouver, Polaris will play a duplicate match against two elite human pros, Phil Laak and Ali Eslami. Laak and Eslami will play opposite sides of the same deal against Polaris, in an attempt to eliminate the luck of the draw from the result.
I don't know much about computer card-playing. Back when I was teaching AI in the mid-1990s, I used Matthew Ginsberg's text, and from his research learned a bit about programs that play bridge. Of course, bridge players tend to view their game as a more intellectual task than poker (and as more complex than, say, chess), whereas poker introduces the human element of bluffing. It will be fun seeing how a "purely rational" being like Polaris bluffs and responds to bluffs in this match. If poker is anything at all like chess, I figure that the program's dispassionate stance will help it respond to bluffs in a powerful way. Making bluffs seems a different animal altogether.
I wish I could be in Vancouver to see the matches. Back in 1996 I was fortunate to be at AAAI'96 in Philadelphia for the first Kasparov-Deep Blue match. The human champ won a close match that year before losing to Deep Blue the next. We could tell from Kasparov's demeanor and behavior during this match, as well as from his public statements, that he was concerned that humans retain their superiority over machines. Emotion and mental intimidation were always a part of his chess.
On the contrary, former World Series of Poker champion Laak seems unconcerned at the prospect that Polaris might beat him in this match, or soon; indeed, he seems to enjoy the challenge and understand the computational disadvantage that we humans face in these endeavors. That's a healthier attitude, both long term and for playing his match this week. But I appreciated Kasparov's energy during that 1996 match, as it gave us demonstrative cues about his state of mind. I'll never forget the time he made a winning move and set back smugly to put his wristwatch back on. Whenever Garry put his watch back on, we knew that he thought he was done with the hard working of winning the game
The second story is sadder. Donald Michie, a pioneer in machine learning, has died. Unlike many of the other founders of my first love in computing, I never had any particular connection to Michie or his work, though I knew his name well from the series of volumes on machine learning that he compiled and edited, as they are staples of most university libraries. But then I read in his linked Times On-Line article:
In 1960 he built Menace, the Matchbox Educable Noughts and Crosses Engine, a game-playing machine consisting of 300 matchboxes and a collection of glass beads of different colours.
We Americans know Noughts and Crosses as tic-tac-toe. It turns out that Michie's game-playing machine -- one that needed a human CPU and peripherals in order to run -- was the inspiration for an article by Martin Gardner, which I read as a sophomore or junior in high school. This article was one of my first introductions to machine learning and fueled the initial flame of my love for AI. I even built Gardner's variant on Michie's machine, a set of matchboxes to play Hexapawn and watched it learn to play a perfect game. It was no Chinook or Deep Blue, but it made this teenager's mind marvel at the possibilities of machine intelligence.
So, I did have a more direct connection to Michie, and had simply forgotten! RIP, Dr. Michie.
My 25th high school reunion is next month. (I can just hear the pencils at work as students, current and former, figure out just how old I am.) So I took this opportunity to re-read Alan Lightman's novel Reunion, which is about a college professor's 30th college reunion. I first read this book when it came out several years ago, but the theme was more timely this time around.
I first learned about Lightman, a physicist-turned-novelist whose fact and fiction both rest on a physics foundation, from an endnote in David Bodanis's E=mc2, which referred me to Einstein's Dreams, This was an unusual book, only a couple of dozen short chapters, that consisted of a few fictional vignettes of Einstein's thinking and discussion with Hans Bethe as he reconceptualized time for his theory of relativity, interspersed among twenty or so fictional dreams that Einstein might have had about worlds in which time behaves differently than it does in our world. For example, in one world, time passes faster when one is at higher altitudes; in another, one occasionally gets stuck to a single place in time; in yet another, time moves backward.
I found this book delightful, both creative and wonderfully written. The conversations between Einstein and Bethe sounded authentic to this non-physicist, and the dream chapters were both "whimsical" and "provocative" (words I borrow from a literary review of the book) -- what would it be like if different neighborhoods lived in different decades or even centuries? Lightman writes as a poet, spare with words and description, precise in detail. Yet the book had a serious undercurrent, as it exposed some of the questions that physicists have raised about the nature of time, and how time interacts with human experience.
Later I found Reunion. It's more of a traditional human story, and I expect that some of my friends would derogate it as "chick lit". But I disagree. First, it's a man's story: a 52-year-old man keenly aware that time has passed beyond his dreams; a 22-year-old man alive with promise unaware that he is reaching branches in time that can never be passed again. And while its structure is that of a traditional novel, the underlying current is one of time's ambiguity: looking back, looking forward, standing still. Lightman even resorts in the shortest of passages to a common device which in other authors' hands is cliché, but which in his seems almost matter of fact. It's not science fiction because it sticks close to the way a real person might feel in this world, where time seems to move monotonically forward but in which our lives are a complex mishmash of present and past, future and never-was.
I enjoyed Reunion again and, though it's a bit of downer, it hasn't diminished my anticipation of stepping back in time to see people who were once my friends, and who because of how time works in my mind will always be my friends, to reminisce about back-when and since-then, and what-now. Time's linearity will show through, of course, in the graying of hair and the onset of wrinkles...
A former student recently wrote:
I am periodically reminded of a saying that is usually applied to fathers but fits teachers well -- when you are young it's amazing how little they know, but they get much smarter as I get older.
For a teacher, this sort of unsolicited comment is remarkably gratifying. It is also humbling. What I do matters. I have to stay on top of my game.
Philip Greenspun recently posted a provocative blog entry called Why do high school kids keep signing up to be undergrads at research universities? If you've never read any of Philip's stuff, this might seem like an odd and perhaps even naive piece. His claim is pretty straightforward: "Research universities do not bother to disguise the fact that promotion, status, salary, and tenure for faculty are all based on research accomplishments," so why don't our brightest, most ambitious high school students figure out that these institutions aren't really about teaching undergraduates? This claim might seem odd considering that Philip himself went to MIT and now teaches as an adjunct prof there. But he has an established track record of writing about how schools like Harvard, MIT, the Ivies, and their ilk could do a better job of educating undergrads, and at a lower cost.
My thoughts on this issue are mixed, though at a certain level I agree with his premise. More on how I agree below.
As an undergraduate, I went to a so-called regional university, one that grants Ph.D.s in many fields but which is not typical of the big research schools Philip considers. I chose the school for its relatively strong architecture school, which ranked in the top 15 or 20 programs nationally despite being at a school that overall catered largely to a regional student population. There I was part of a good honors college and was able to work closely with published scholars in a way that seems unlikely at a Research U. However, I eventually changed my major and studied computer science accounting. The accounting program had a good reputation, but its computer science department was average at best. It had a standard curriculum, and I was a good enough student and had enough good profs that I was able to receive a decent education and to have my mind opened to the excitement of doing computer science as an academic career. But when I arrived at grad school I was probably behind most of my peers in terms of academic preparation.
I went to a research school for my graduate study, though not one in the top tier of CS schools. It was at that time, I think, making an effort to broaden, deepen, and strengthen its CS program (something I think it has done). The department gave me great financial support and opportunities to teach several courses and do research with a couple of different groups. The undergrad students I taught and TAed sometimes commented that they felt like they were getting a better deal out of my courses than they got out of other courses at the university, but I was often surprised by how committed some of the very best researchers in the department were to their undergrad courses. Some of the more ambitious undergrads worked in labs with the grad students and got to know the research profs pretty well. At least one of those students is now a tenured prof in a strong CS program down south.
Now I teach at a so-called comprehensive university, one of those medium-sized state schools that offers neither the prestige of the big research school nor the prestige of an elite liberal arts school. We are in a no-man's land in other ways as well -- our faculty are expected to do research, but our teaching expectations and resources place an upper bound on what most faculty can do; our admissions standards grant access to a wider variety of students, but such folks tend to require a more active, more personal teaching effort.
What Greenspun says holds the essence of truth in a couple of ways. The first is that a lot of our best students think that they can only get a good education at one of the big research schools. That is almost certainly not true. The variation in quality among the programs at the less elite schools is greater, which requires students and their parents to be perhaps more careful in selecting programs. It also requires the schools themselves to do a better job communicating where their quality programs lie, because otherwise people won't know.
But a university such as mine can assemble a faculty that is current in the discipline, does research that contributes value (even basic knowledge), and cares enough about its mission to teach to devote serious energy to the classroom. I don't think that a comprehensive's teaching mission in any speaks ill of a research school faculty's desire to teach well but, as Greenspun points out, those faculty face strong institutional pressure to excel in other areas. The comprehensive school's lower admission standards means that weaker students have a chance that they couldn't get elsewhere. Its faculty's orientation means that stronger have a chance to excel in collaboration with faculty who combine interest and perhaps talent in both teaching and research.
If the MITs and Harvards don't excel in teaching undergrads, what value to they offer to bright, ambitious high school students? Commenters on the article answered in a way that sometimes struck me as cynical or mercenary, but I finally realized that perhaps they were simply being practical. Going to Research U. or Ivy C. buys you connections. For example:
Seems pretty plain that he's not looking to buy the educational experience, he's looking to buy the peers and the prestige of the university.
And in my experience of what school is good for, he's making the right decision.
You wanna learn? Set up a book budget and talk your way into or build your own facilities to play with the subject you're interested in. Lectures are a lousy way to learn anyway.
But you don't go to college to learn, you go to college to make the friends who are going to be on a similar arc as you go through your own career, and to build your reputation by association....
And:
You will meet and make friends with rich kids with good manners who will provide critical angel funding and business connections for your startups.
Who cares if the undergrad instruction is subpar? Students admitted to these schools are strong academically and likely capable of fending for themselves when it comes to content. What these students really need is a frat brother who will soon be an investment banker in a major NYC brokerage.
It's really unfair to focus on this side of the connection connection. As many commenters also pointed out, these schools attract lots of smart people, from undergrads to grad students to research staff to faculty. And the assiduous undergrad gets to hang around with them, learning from them all. Paul Graham would say that these folks make a great pool of candidates to be partners in the start-up that will make you wealthy. And if strong undergrad can fend for him- or herself, why not do it at Harvard or MIT, in a more intellectual climate? Good points.
But Greenspun offers one potential obstacle, one that seems to grow each year: price. Is the education an undergrad receives at an Ivy League or research school, intellectual and business connections included, really worth $200,000? In one of his own comments, he writes:
Economists who've studied the question of whether or not an Ivy League education is worth it generally have concluded that students who were accepted to Ivy League schools and chose not to attend (saving money by going to a state university, for example) ended up with the same lifetime income. Being the kind of person who gets admitted to Harvard has a lot of economic value. Attending Harvard turned out not to have any economic value.
I'm guessing, though, that most of these students went to a state research university, not to a comprehensive. I'd be curious to see how the few students who did opt for the less prestigious but more teaching-oriented school fared. I'm guessing that most still managed to excel in their careers and amass comparable wealth -- at least wealth enough to live comfortably.
I'm not sure Greenspun thinks that everyone should agree with his answer so much as that they should at least be asking themselves the question, and not just assuming the prestige trumps educational experience.
This whole discussion leads me to want to borrow a phrase from Richard Gabriel that he applies to talent and performance as a writer. The perceived quality of your undergraduate institution does not determine how good you can get, only how fast you get can good.
I read Greenspun's article just as I was finishing reading the book Teaching at the People's University, by Bruce Henderson. This book describes the history and culture of the state comprehensive universities, paying special attention to the competing forces that on the one hand push their faculty to teach and serve an academically diverse student body and on the other expects research and the other trappings of the more prestigious research schools. Having taught at a comprehensive for fifteen years now, I can't say that the book has taught me much I didn't already know about the conflicting culture of these schools, but it paints a reasonably accurate picture of what the culture is like. It can be a difficult environment in which to balance the desire to pursue basic research that has a significant effect in the world and the desire to teach a broad variety of students well.
There is no doubt that many of the students who enroll in this sort of school are served well, because otherwise they would have little opportunity to receive a solid university education; the major research schools and elite liberal arts schools wouldn't admit them. That's a noble motivation and it provides a valuable service to the state, but what about the better students who choose a comprehensive? And what of the aspirations of faculty who are trained in a research-school environment to value their careers by the intellectual contribution they make to their discipline? Henderson does a nice job laying these issues out for people to consider explicitly, rather than to back into them when their expectations are unmet. This is not unlike what Greenspun does in his blog entry, laying an important question on the line that too often goes unasked until the answer is too late to matter.
All this said, I'm not sure that Greenspun was thinking of the comprehensives at all when he wrote his article. The only school he mentions as an alternative to MIT, Harvard, and the other Ivies is the Olin College of Engineering, which is a much different sort of institution than a mid-level state school. I wonder whether he would suggest that his young relative attend one of the many teacher-oriented schools in his home state of Massachusetts?
After having experienced two or three different kinds of university, would I choose a different path for myself in retrospect? This sort of guessing game is always difficult to play, because I have experienced them all under different conditions, and they have all shaped me in different ways. I sometimes think of the undergraduates who worked in our research lab while I was in grad school; they certainly had broader and deeper intellectual experiences than I had as as undergraduate. But as a first-generation university attendee I grew quite a bit as an undergraduate and had a lot of fun doing it. Had I been destined for a high-flying academic research career, I think I would have had one. Some of my undergrad friends have done well on that path. My ambition, goals, and inclinations are well suited for where I've landed; that's the best explanation for why I've landed here. Would my effect on the world have been greater had I started at a Harvard? That's hard to say, but I see lots of opportunities to contribute to the world from this perch. Would I be happier, or a better citizen, or a better father and husband? Unlikely.
I wish Greenspun's young relative luck in his academic career. And I hope that I can prepare my daughters to choose paths that allow them to grow and learn and contribute.
I don't run into Basic and Cobol all that often these days, but lately they seem to pop up all over. Once recently I even ran into them together in an article by Tim Bray on trends in programming language publishing:
Are there any here that might go away? The only one that feels threatened at all is VB, wounded perhaps fatally in the ungraceful transition to .NET. I suppose it's unlikely that many people would pick VB for significant new applications. Perhaps it's the closest to being this millennium's COBOL; still being used a whole lot, but not creatively.
Those are harsh words, but I suppose it's true that Cobol is no longer used "creatively". But we still receive huge call for Cobol instruction from industry, both companies that typically recruit our students and companies in the larger region -- Minneapolis, Kansas City, etc. -- who have learned that we have a Cobol course on the books. Even with industry involvement, there is effectively no student demand for the course. Whether VB is traveling the same path, I don't know. Right now, there is still decent demand for VB from students and industry.
Yesterday, I ran into both languages again, in a cool way... A reader and former student pointed out that I had "hit the big leagues" when my recent post on Alan Kay started scoring points at programming.reddit.com. When I went there for a vanity stroke, I ran into something even better, a Sudoku solver written in Cobol! Programmers are a rare and wonderful breed. Thanks to Bill Price for sharing it with us. [1]
While looking for a Cobol compiler for my Intel Mac [2], I ran instead into Chipmunk Basic, "an old-fashioned Basic interpreter" for Mac OS. This brings back great memories, especially in light of my upcoming 25th high school reunion. (I learned Basic as a junior, in the fall of 1980.) Chipmunk Basic doesn't seem to handle my old graphics-enabled programs, but it runs most of the programs my students wrote back in the early 1990s. Nice.
I've been considering a Basic-like language as a possible source language for my compiler students this fall. I first began having such thoughts when I read a special section on lightweight languages in a 2005 issue of Dr. Dobbs' Journal and found Tom Pitman's article The Return of Tiny Basic. Basic has certain limitations for teaching compilers, but it would be simple enough to tackle in full within a semester. It might also be nice for historical reasons, to expose today's students to something that opened the door to so many CS students for so many years.
----
[1] I spent a few minutes poking around Mr. Price's website. In some sort of cosmic coincidence, it seems that Mr. Price is took his undergraduate degree at the university where I teach (he's an Iowa native), and is an avid chessplayer -- not to mention a computer programmer! That's a lot of intersection with my life.
[2] I couldn't find a binary for a Mac OS X Cobol, only sources for OpenCOBOL. Building this requires building some extension packages that don't compile without a bunch of tinkering, and I ran out of time. If anyone knows of a decent binary package somewhere, please drop me a line.
Recently I wrote about the availability heuristic and how it may affect student behavior. Schneier tells us that this is often a useful rule of thumb, and it has served us well evolutionarily. But our changing world may be eroding its value, perhaps even making it dangerous in some situations:
But in modern society, we get a lot of sensory input from the media. That screws up availability, vividness, and salience, and means that heuristics that are based on our senses start to fail. When people were living in primitive tribes, if the idea of getting eaten by a saber-toothed tiger was more available than the idea of getting trampled by a mammoth, it was reasonable to believe that--for the people in the particular place they happened to be living--it was more likely they'd get eaten by a saber-toothed tiger than get trampled by a mammoth. But now that we get our information from television, newspapers, and the Internet, that's not necessarily the case. What we read about, what becomes vivid to us, might be something rare and spectacular. It might be something fictional: a movie or a television show. It might be a marketing message, either commercial or political. And remember, visual media are more vivid than print media. The availability heuristic is less reliable, because the vivid memories we're drawing upon aren't relevant to our real situation.
I sometimes wonder if my omnivorous blogging and promiscuous referencing of many different sources create a situation in which my readers attribute brilliance to me that rightly belongs to my sources.
A little part of my ego thinks that this would be okay. (You didn't read that here.)
However, if you finish the Schneier paragraph I quoted above, you will see that just the opposite is probably true:
And even worse, people tend not to remember where they heard something--they just remember the content. So even if, at the time they're exposed to a message they don't find the source credible, eventually their memory of the source of the information degrades and they're just left with the message itself.
So you'll remember the ideas I toss out, but you'll eventually forget that you read them here. And so you will not be able to blame me if it turns out to be nonsense...
Maybe you'd better not read my blog after all.
Over the last couple of months, I've been collecting some good lines and links to the articles that contain them. Some of these may show up someday in something I write, but it seems a shame to have them lie fallow in a text file until then. Besides, my blog often serves as my commonplace book these days. All of these pieces are worth reading for more than the quote.
If the code cannot express itself, then a comment might be acceptable. If the code
does not express itself, the code should be fixed.
-- Tim Ottinger, Comments Again
In a concurrent world, imperative is the wrong default!
-- Tim Sweeney of Epic Games, The Next Mainstream
Programming Language: A Game Developer's Perspective, an invited talk at ACM POPL'06 (full slides in PDF)
When you are tempted to encode data structure in a variable name (e.g. Hungarian notation), you need to create an
object that hides that structure and exposes behavior.
-- Uncle Bob Martin The Hungarian
Abhorrence Principle
Lisp... if you don't like the syntax, write your own.
-- Gordon Weakliem, Hashed
Thoughts, on simple syntax for complex data structures
Pairing is a practice that has (IIRC) at least five different benefits. If you can't pair, then you need to find
somewhere else in the process to put those benefits.
-- John Roth, on the XP mailing list
Fumbling with the gear is the telltale sign that I'm out of practice with my craft. ... And day by day, the
enjoyment of the craft is replaced by the tedium of work.
-- Mike Clark, Practice
So when you get rejected by investors, don't think "we suck," but instead ask "do we suck?" Rejection is a question,
not an answer.
-- Paul Graham, The Hacker's Guide to Investors
Practice. Question rejection.
Be careful what you pretend to be
because you are what you pretend to be.
Sometimes, the universe speaks to us and catches us unaware.
Yesterday, I attended a workshop, about which I will have more to say later today. Toward the end, I saw a quote that struck me as an expression of this blog's purpose, and almost an unknowing source for the name of this blog:
Learning is about ... connecting teaching and knowing to action.
Connecting knowing to doing. That's what this blog is all about.
But long time readers know that "Knowing and Doing" almost wasn't the name of my blog. I considered several alternatives. Back in November 2004, I wrote about some of the alternatives. Most of the serious candidates came from Kurt Vonnegut, my favorite author. Indeed, that post wasn't primarily about the name of my blog but about Vonnegut himself, who was celebrating his 82nd birthday.
Here we are, trapped in the amber of the moment.
There is no why.
And then I wake up this morning to find the world atwitter with news of Vonnegut's passing yesterday. I'm not sure that anyone noticed, but Vonnegut died on a notable unbirthday, five months from the day of his birth. I think that Vonnegut would have liked that, as a great cosmic coincidence and as a connection to Lewis Carroll, a writer whose sense of unreality often matched Vonnegut's own. More than most, Kurt was in tune with just how much of what happens in this world is coincidence and happenstance. He wrote in part to encourage us not to put too much stock in our control over a very complex universe.
Busy, busy, busy.
Many people, critics included, considered Vonnegut a pessimist, an unhappy man writing dark humor as a personal therapy. But Vonnegut was not a pessimist. He was at his core one of the world's great optimists, an idealist who believed deeply in the irrepressible goodness of man. He once wrote that "Robin Hood" and the New Testament were the most revolutionary books of all time because they showed us a world in which people loved one another and looked out for the less fortunate. He wrote to remind us that people are lonely and that we have it in our own power to solve our own loneliness and the loneliness of our neighbors -- by loving one another, and building communities in which we all have the support we need to live.
Live by the foma that make you
brave and kind and healthy and happy.
I had the good fortune to see Kurt Vonnegut speak at the Wharton Center in East Lansing when I was a graduate student at Michigan State. I had the greater good fortune to see him speak when he visited UNI in the late 1990s. Then I saw his public talk, but I also sat in on a talk he gave to a foreign language class, on writing and translation. I also was able to sit in on his intimate meeting with the school's English Club, where he sat patiently in a small crowded room and told stories, answered questions, and generally fascinated awestruck fans, whether college students or old fogies like me. I am forever in the debt of the former student who let me know about those side events and made sure that I could be there with the students.
Sometimes the pool-pah
exceeds the power of humans to comment.
On aging, Vonnegut once said, "When Hemingway killed himself he put a period at the end of his life; old age is more like a semicolon." But I often think of Vonnegut staring down death and God himself in the form of old Bokonon, the shadow protagonist of his classic Cat's Cradle:
If I were a younger man, I would write a history of human stupidity; and I would climb to the top of Mount McCabe and lie down on my back with my history for a pillow; and I would take from the ground some of the blue-white poison that makes statues of men; and I would make a statue of myself, lying on my back, grinning horribly, and thumbing my nose at You Know Who.
The blue-white poison was, of course, Ice Nine. These days, that is the name of my rotisserie baseball team. I've used Vonnegut's words as names many times. Back at Ball State, my College Bowl team was named Slaughterhouse Five. (With our alternate, we were five.)
Kurt Vonnegut was without question my favorite writer. I spent teenage years reading Slaughterhouse Five and Cat's Cradle, Welcome to the Monkey House and Slapstick, The Sirens of Titan and Breakfast of Champions and Player Piano, the wonderfully touching God Bless You, Mr. Rosewater and the haunting Mother Night. Later I came to love Jailbird and Galapagos, Deadeye Dick and Hocus Pocus and especially Bluebeard. I reveled in his autobiographical collages, too, Wampeters, Foma, and Granfalloons, Palm Sunday, Fates Worse Than Death, and Timequake. His works affected me as much or more than those of any of the classic writers feted by university professors and critics.
The world is a lesser place today. But I am happy for the words he left us.
Tiger gotta hunt.
Bird gotta fly.
Man gotta sit and wonder why, why, why.
Tiger gotta sleep.
Bird gotta land.
Man gotta tell himself he understand.
If you've never read any Vonnegut, try it sometime. Start with Slaughterhouse Five or Cat's Cradle, both novels, or Welcome to the Monkey House, a collection of his short stories. Some of his short stories are simply stellar. If you like Cat's Cradle, check out my tabulation of The Books of Bokonon, which is proof that a grown man can still be smitten with a really good book.
And, yes, I still lust after naming my blog The Euphio Question.
Rest in peace, Kurt.
... to the Sixth
My dad turned 64 yesterday. That's a nice round number in the computing world, though he might not appreciate me pointing that out. It's hard for me to imagine him, or me, any different than we were when I was a little boy growing up at home. It's also hard for me to imagine that someday soon my daughter might be thinking the same about the two of us. Perhaps I need a bigger imagination.
... Months
This is the time of the academic year when folks seeking jobs at other institutions, in particular administrative promotions, begin to learn of their good fortune and to plan to depart. Several of my colleagues at the university will be moving on to new challenges after this academic year.
In a meeting this week, one such colleague said something that needed to be said, but which most people wouldn't say. It was on one of those topics that seems off limits, for political or personal reasons, and so it usually just hangs in the air like Muzak.
Upon hearing the statement, another colleague joked, "Two months. You have two months to speak the truth. Two months to be a truth teller."
It occurred to me then that this must be quite a liberating feeling -- to be able to speak truths that otherwise will go unspoken. Almost immediately on the heels of this thought, it occurred to me just how sad it is that such truths go unspoken. And that I am also unwilling to speak them. Perhaps I need greater courage, or more skill.
I honestly feel like my best work is still ahead of me.
I'm just not sure I can catch up to it.
I owe this gem, which pretty much sums up how I have felt all week, to comedian Drew Hastings, courtesy of the often bawdy but, to my tastes, always funny Bob and Tom Show. Hastings is nearly a decade older than I, but I think we all have this sense sooner or later. Let's hope it passes!
I owe you some computing content, so here is an interview with Fran Allen, who recently received the 2006 Turing Award. She challenges us to recruit women more effectively ("Could the problem be us?") and to help our programming languages and compilers catch up with advances in supercomputing ("Only the bold should apply!")

My roommate and I are staying in the Radisson Riverfront, which is right across the river from downtown Cincinnati at the nexus of the Ohio River and I-75. The view from our 14th-floor room is good.
So there I was, settling in after a long day at the conference. About 10 PM, the phone rings. Odd. The caller asks for me. Odd again. It's the front desk. The local police have asked all guests to come down to the lobby.
Apparently, someone had shot a bullet into a 12th-floor room. From somewhere outside.
Odd.
Down we went to the lobby. We heard lots of curious smalltalk, and no small amount impatience at being inconvenienced by this interruption. Some commented that we hardly seemed safer all herded into one place, in front of wide glass lobby windows open to the interstate exit.
After 25 minutes or so, the chief of the Covington Police Department called us together. "Welcome to Covington!" he offered in good humor. He explained what had happened, what the police had done to investigate, and that they now believed us to be safe. He thanked us for our patience and wished us a good visit. I can imagine that he is a good sort of person to have as a police chief -- a big part of the job is communicating with people who are in varying states of distress.
The rest of the night passed without event.
Let's see if OOPSLA can top this.
Heard on my drive to SIGCSE today:
These experiences have caused him to think very hard about what he is doing and where he is going. And the result of all this thinking is that he now understands he doesn't know what he is doing or where he is going.
This quote is about Ray Porter, a character in Steve Martin's novella Shopgirl, which I listened on my drive to SIGCSE today. While I am in most ways nothing at all like the divorced, 50-something Porter, I can certainly appreciate his sudden need to think very hard and his sudden realization that he is essentially clueless. Over the course of my career, I had grown to feel comfortable in my roles as an academic, as teacher and scholar. Which I switched into the Big Office Downstairs, I just assumed that things would proceed as usual.
But after a year and a half as department head, I experience occasional moments of "midterm crisis", in which I think that I don't really know what I'm doing or where I'm going. I often have a pretty good 50,000-foot view of what I want, but down in the trenches I usually feel a little disoriented. With experience, things have gotten better, but a year filled with academic program review, two time-consuming searches, and a curriculum revision have sapped my reservoirs of creativity and energy.
At least now I think I understand that I don't know what I am doing or where I am going. You know what they say about acceptance being the first step toward recovery!
By the way, I do recommend Shopgirl. I have read the book and then listened to it several times on tape while driving to PLoPs, SIGCSEs, and ICFPs. For some reason, Martin's writing holds my attention, and the story is sweet enough that I can get over constantly wondering, "Why does she put up with this?" Martin is a surprisingly good writer; though he is never going to win a Nobel Prize, he can spin a decent short yarn. My first exposure to his literary work was Picasso at the Lapin Agile, a stage play about a fantasy meeting between Picasso and Einstein at a Paris bar around the turn of the century.
Oh, and as for Shopgirl -- I haven't seen the movie yet! I'm glad that I read the book first, and then heard it read before seeing the film version. Just knowing that Martin and the glorious Clair Danes play the leading roles has changed my experience of the book...
In the beginning, I blogged on the danger of false pride and quoted the Stoic philosopher Epictetus. Now I have encountered another passage from Epictetus, at the mind hacker site Hacks
When you are going about any action, remind yourself what nature the action is. If you are going to bathe, picture to yourself the things which usually happen in the bath: some people splash the water, some push, some use abusive language, and others steal. Thus you will more safely go about this action if you say to yourself, "I will now go bathe, and keep my own mind in a state conformable to nature." And in the same manner with regard to every other action. For thus, if any hindrance arises in bathing, you will have it ready to say, "It was not only to bathe that I desired, but to keep my mind in a state conformable to nature; and I will not keep it if I am bothered at things that happen."
The notion of a "state conformable to nature" was central to his injunction against false pride, and here it remains the thoughtful person's goal, this time in the face of all that can go wrong in the course of living. This quote also resonates with me, because, just as I am inclined toward a false pride, I have a predisposition toward letting small yet expectable hindrances interfere with my frame of mind. Perhaps predisposition is the wrong word; perhaps it's just a bad habit.
As is often the case for me, after a second or third positive reference is all I need to commit to reading more. In the coming weeks, I now plan to read the Discourses of Epictetus. We even have a copy on our bookshelf at home. (My wife's more classical education proves useful to me again!)
As I prepared to leave for ChiliPLoP 2007, I looked to the trip as almost a vacation. While I will be working steadily through the 76 hours or so in Arizona, both on elementary patterns and various and sundry school duties, I will be off the treadmill that have been the last few days. I've hardly had time to breathe since Wednesday morning:
Wednesday: Prepare for and sit in on meetings all day, including a faculty meeting. Scramble to make last-minute changes to our fall semester schedule before the secretary goes on vacation. Exercise for an hour with my older daughter in her ballet class. I was in the class, and did all of the "floor barre" work that the rest of the class did. (At least that was fun time with Sarah!) For an old guy, I did all right. Sprint home to pack a quick overnight bag. Drive two hours to Des Moines. Crash in motel bed.
Thursday: Attend 7:00 AM breakfast at the State Capitol, sponsored by the Department of Economic Development to encourage state legislators to fully fund the department's budget request for 2007-2008. Mingle with legislators, and visited with IT bigwigs from most of the major players in the state. After two hours, drive two hours back home. Prepare for class. Meet my Programming Languages class. Attend meeting. Give dinner talk to local Kiwanis club on my department's efforts to participate in state economic development through curriculum and research projects that partner with regional companies. Crash in my own bed.
Friday: Arrive at office by 6:30 AM to do some leftover work. Coach team of local eighth graders who are preparing for a math competition. After several months, the competition is here -- tomorrow. Spend four hours visiting with prospective students and their parents. Scramble all afternoon to tie up loose ends in the office. Take one daughter to orchestra practice and then to play rehearsal. Pack for ChiliPLoP.
Saturday: Take eighth graders to math competition at 8:00 AM. Fill time and watch until 1:30. Take one daughter to play rehearsal. Kiss other daughter, already at rehearsal, good-bye for a few days. Head home, kiss wife good-bye, load bags in car, and hit road for 3+ hour drive to Minneapolis. (Take short nap along the way.) Grab dinner with friend. Crash on friend's couch.
Sunday: Rise at 5 AM for ride to airport. Encounter usual delays. Board plan at 6:30 AM for 7:00 AM flight. Then ... sit for two hours before take-off as plane requires computer system maintenance. I don't usually think of a two-hour in-plane delay as a respite, but this one was. I took a nap!
We are now in the air, approaching Phoenix. ChiliPLoP, as busy as it always, made more busy by some necessary work from back home, will seem a break.
This sort of week may be no big deal to my consultant friends, or maybe even to my academic friends with big outreach portfolios. But it's new to me. While each activity of the week offered value, I found myself looking forward to the TSA and the plane. Extra time of the plane didn't bother me.
Landing will be better. Work on computer science with some of my favorite colleagues will be better.
A run in the sun will be better.