Category Archives: Uncategorized

Magnetic disk, too

As a bit of follow-up to yesterday’s post, IBM started shipping magnetic disk about four years after their tape. Jeffrey McGuire sent me the link to this video, 60 Years Ago: IBM Invents the Hard Drive.

(One impression from this video: people talk about corporations controlling things now, but it feels like it was worse in the 1950’s. Of course, IBM’s corporate culture under Watson Sr. was always a bit creepy.)

Data-driven

Higher Education and the Perfect Data Storm

Some quotes:

In education, data always arrives too late, like Inspector Clouseau, blundering into a scene, oblivious to what’s really going on or who the villain is.  The kind of information data yields is retrospective, not predictive.  Correlation, as we know, is not causation.  To this, I would add mathematization is not explanation. I just learned “mathematization” is among the “bottom 20% of lookups” in the online Merriam-Webster’s Dictionary; what exactly does this tell me?

Even analyzed data is haunted by forging, fudging, trimming, and cooking, along with confirmation bias and egocentric thinking.

I am going to make a radical suggestion about data and higher education:  colleges and universities will be better served if they avoid kneeling at the altar of data and instead fill key positions with people driven by intuition, experience, values, conviction, and principle.  A good place to start would be looking for leadership guided by a transcendent educational narrative.

An article at the Register yesterday ranked buzzwords’ credibility from -1.0 (not at all credible) to +1.0 (credible). “Data-driven” was rated -0.76.

Microsoft a top Linux contributor

Microsoft makes Top 20 list of Linux kernel contributors

For contributions made to the kernel since version 2.6.36, Microsoft ranks 17th, with Redmond’s contribution estimated at 1 per cent of the whole. The top contributing companies were Red Hat, Intel, and Novell. Samsung and Texas Instruments were also named as fast-growing contributors, reflecting an increase in interest in Linux for mobile and embedded systems.

Times have changed.

No, not a good idea

I’ve had the unpleasant experience of trying to help someone debug some Java code. We had a stack trace, and it pointed to a line where a new exception was being thrown within a catch block. So all that’s needed is to look at the try block and figure out where it was throwing the original exception, right? Only problem: the try block is 140 lines long.

Why would someone do something like this? Well, beyond not really understanding the importance of modularization, undoubtably the reason was to work around one of Java’s features: in a method’s signature you have to declare all the exceptions it might throw. So he (I know who the guilty party is; that”s the correct pronoun) wrapped everything in a try block and threw his own exception so the compiler would accept his code. The reasoning behind this feature is clear, they’re trying to force programmers to think about what errors might occur and how they should deal with them. But of course you can’t really force someone to think if he doesn’t want to; people will just do something goofy to subvert your restrictions.

Deleting code

It may seem paradoxical, but even though a programmer’s job is to write code one of the most productive things he or she can do is remove code. Software AG changed the way a particular module works, so I’m having to change a system routine to fix a resulting error.* This routine was originally written by Bill Wagner in the mid 1980’s and I’ve been maintaining it for close to a quarter century, and as I was looking at it I realized that the reasons for a lot of the things it’s doing disappeared years ago. When I get done it should be significantly shorter than what it is now.

This reminded me of a story about early Macintosh development: -2000 Lines of Code. It’s a great story, and a great site.

* Technical details: ADALNKR, the reentrant module for calling Adabas at the Assembler level, now dynamically allocates working storage. If you call it repeatedly, it will leak memory, and our installation’s IEFUJV, the job verification exit that runs in the JES2 address space, does this. (This is what caused our emergency IPL on November 4.) Last week they finally sent us documentation for how to ask for this memory to be released.

McCarthy

This morning comes the news that John McCarthy, creator of Lisp, has died.

I always thought the story of how he wrote the first Lisp interpreter was interesting. McCarthy and his students had developed Lisp notation, but they heard how much effort went into the Fortran compiler and didn’t think they had the resources for that, so when they actually wanted to run a program they translated it to machine code by hand. Then McCarthy wrote a paper showing that Lisp was Turing-complete, and in the process he wrote an eval function that could interpret an arbitrary Lisp expression. When one of his grad students read the paper, he realized that once they translated that function to machine code they would have an interpreter that could run any Lisp program, and they wouldn’t have to translate by hand any more.