Notional Slurry Logo

Archive for September, 2005

This is probably a perfect situation for somebody to study closely for a postgraduate journalism degree

Because there is going to be a debacle. Hey kids: pay attention!

On the subject of the New York Times charging for access to articles:

I, for example, will not direct readers from any of my blogs to a site they’ll have to pay to read.

Ditto.

I’ve always been a big fan of apple green, and am pleased to see it used to such good effect. You rarely see it anywhere, these days.

Pantone 368, a Symbol of Growth:

Yes, my naive and uninitiated friends, there are actually people who are paid very well indeed to shovel horseshit of this magnitude. And you thought Paris Hilton was a waste of carbon.

and from the actual press release:

“The green just came into being. I was looking for something that would take Quark in a completely new direction–a color that was friendly and inviting, but would also really help Quark stand apart. We wanted to help Quark break out of the visual ‘sea of sameness’ that lumps together so many corporate software companies,” said Chris Wood, creative director at SicolaMartin and designer of the new Quark logo. “It really was an evolution. The more I played with the green, the more it came to represent so many things that Quark has gone through: rejuvenation, growth, and rebirth. It just seemed to make sense.”

File under: “Nice work if you can get it.”

(Via SIVAcracy.net.)

A word on the dangers of the hobbyist mentality

Playing my own Devil’s Advocate (since I seem to like thinking amateurs should be empowered as much as possible at all turns), I feel I should pass along a little object lesson.

For about six months my laptop has been acting weird. As in: working fine, but now and then going haywire. An application will “unexpectedly quit”, and then within a few minutes all the applications will “unexpectedly quit”, including the OS.

Sometime in the first week of trying to fix it, I discovered that if as soon as the first application disappeared I restarted the computer and ran fsck (you don’t know what it is? That’s OK. A fixy thing you do for Unix machines like Macintoshes.), it would be better and I could get another 3 to 6 hours of use from it before having to do that again. Meanwhile I zeroed the drive, and reinstalled a pristine Tiger install, and ran TechTool Pro, and checked all the apps, and ran a bunch of third-party utilities that look at low-level hardware and software stuff, and avoided doing anything too important or time-consumig like upgrading all my apps and keeping the OS up to date and so forth. And I backed up. A lot.

Months. Because I knew I could fix it myself. The last straw was buying a $100 piece of super-extra-powerful disk-checky and -fixy software and running it… and having nothing wrong show up.

So I caved. I called AppleCare.

Two minutes into my description (”…and it seems to be whenever lots of pages of memory are getting swapped in and out, because it tends to happen when there are a lot of concurrent threads running and there are large files being displayed and there are large arrays being manipulated and stuff….”) the nice girl on the other end interrupted and asked, “Have you checked you RAM?”

Hunh?

“You know: booted into Open Firmware and checked your RAM with the Apple Hardware Test utility? Like it says in the little 64-page booklet that came with your computer, in the Troubleshooting section?

Ahh. No, see, we’ve had Macintoshes in the house since 1985. We have six working machines in the house now, and a couple of doorstops in the garage. We know all about all the stuff that can go bad. We read macfixit, and I know how to zap PRAM and run fsck and–

“No, you should check your RAM. It sounds like a RAM problem.”

Hmmph. Well, I suppose if you think so. That’s a lot like, “Did you turn it off and back on again?” though, don’t you think?

“Tell you what. I’ll open a case number for you, and you take a few minutes while the email is coming to run the utility like it says in the little book.”

Well, OK.

Utility: BAD RAM.

Today, 37 hours later: 1 GB of new RAM installed, the thing is noticeably faster, everything’s great and happy, and I’m updating all my junk.

My way: about 25 weeks. Her way: about 7 minutes.

Think about that next time you hesitate to call support.

Blogger discovers unknown ancient ruins via Google

An Roman villa, discovered with a keen eye and Google Maps

[Via Crumb Trail]

Let us therefore discuss tenure

A not-really-enigmatic comment seen at Confessions of a Community College Dean:

Let me tell you how I lost 6 weeks of my life last year, as an untenured member trying to work collegially with tenured members who think that tenure means they can abuse the rules, push people around, and ignore the needs of curriculum, campus etc.

Starts me musing. Musing-deaf readers may move along.

The classic academic life-strategy embodies a certain economic contract: The applicant is expected to voluntarily postpone economic and social gratification and join the Program — which is accompanied by oppressive and sometimes demeaning demands, occasional hazing and a state of effective indenture (but also by the inevitable excitement of the life of the mind, the security afforded by the culture’s safety blanket, and the glimmer of a real shot at the end) — over the entire period of graduate school, postdockery, adjuncthood and non-tenure-tracking in exchange for the chance to get tenure later in life.

Now in all fairness I should point out that this is not everybody’s experience everywhere (for instance it’s not mine, here and now), but it is at least a shared folkloric image of academic life, and forms the basis of many an amusing Webcomic, personal academic blog, and murder mystery.

First, there are an increasing number of us who really don’t want the tenure, let alone the postdockery &c. What you want us to do? Pay anyway? I don’t think so, Boyo [statistically speaking, scant faculty members in my field(s) would warrant "Girly" in that sentence.].

Second: attrition? How many have fallen by the wayside. Does their absence lead to a diminished and therefore limiting supply of applicants? Heh. Right. This is a functional, mature, and apparently stable pyramid scheme; there will for the foreseeable future always be enough young people willing to do anything to get a job in academia.

[more in a bit]

“Thirty thousand quatloos on the living photographic film!”

The Synthetic Biology class I mentioned I was taking the other day is a kind of scouting system for the University of Michigan Intercollegiate Genetically Engineered Machines competition 2006 team.

I still say the format of the competition shouldn’t be so “science fair” (the coinage of a classmate), but rather more of Robot Wars.

Oy, you there! Historian! San Francisco?

Under the large header of “previous examples”, I’m wondering this morning how the reconstruction of San Francisco after the 1906 earthquake/fires went. How long until it was done? Who paid? Can one reasonably argue that the economic and social effects played a role in WWI and associated national politics? Racial and labor politics in California? In setting the stage for the economic powerhouse that the Bay Area has become?

I look forward to reading your cunning and well-informed insights.

Left as an exercise for the student: Create a 2-dimensional cellular automaton to solve a system of linear equations

Suppose you’re given a matrix A of mxn coefficients for a system of m linear equations on n unknowns. And, sure, what the heck, also you have a vector b containing the right-hand side values, too. We’ll interpret these values as a linear programming task: find min(∑xi), such that Ax≤b and all xi≥0. Simple, yes?

Embed this matrix and this vector in a finite rectangular array of any size you like (up to 100m x 100n), in any position or orientation you like (but without rearranging the rows or columns). If the array you paste the matrix and vector into is larger than needed to hold them, you may assign any “background” values of your choice to the remaining cells; you don’t have to leave them zero, and they don’t all have to be the same. Your array can be comprised of objects more complicated than scalars, but each object must contain at least one scalar attribute called “topLayer” into which the numbers are placed, and from which the answers will be read.

Now, construct a set of rules for a cellular automaton, such that one or more of the following is true:

  1. At some finite time (of your choice) 1000<t< 2mn, a contiguous range of n values in some row (also of your choice) of the array will contain any feasible solution of the system of equations. As should be obvious, you need to denote the time and row of your “answer registers” before you start cranking the handle of the CA.
  2. At some time t limited as above, a block of n entries of some row (of your choice) will contain a unique value (that you pre-specify) if there are no feasible solutions to the system of equations.
  3. Like (1) above, but the block of numbers in your row of choice should be a solution to the minimization problem (min(∑xi), subject to the constraints) that lies anywhere the best-rated quartile of all feasible solutions, if any feasible solutions exist. If the problem is unbounded… well, I dunno. That implies the numbers should be Really Really big; let’s say they have to be above some threshold — xi ≥ 10^6 if a particular optimum value is unbounded in dimension i? That seems reasonable.
  4. Like (3) above, but the values in the block of “registers” should be an optimum solution, if one exists (and again we will have to cope with the unboundedness thing).

Any one of these tasks is a nice one to try.

Acceptance tests: I pass you 139 different arrays of coefficients no larger than 10×10, and your algorithm will place them in the CA array (or in the attribute of the array called “topLayer”), will state the time and position where the answer can be read [in "topLayer"], and then we’ll initialize the array according to whatever specification you prefer and run the rule to time t, and check your answer. Your rule needs to succeed at the chosen task 50% of the time. For a High Pass, you need to succeed 80% of the time. For a fucking Nobel Prize in Mathematics with a side of Computer Science and a Pony, obtain a High Pass on all four tasks with one algorithm.

A “cellular automaton” of what sort? I don’t care. You may use traditional cell-wise update rules, or Margolus-type swapping rules, or any rule you like. In reality it can be any function mapping the previous states of the array to the next value of the array, as long as it’s applied simultaneously to every cell on every time step.

Here: Your rule may access history of any cell in the array as far back as time 0. Your rule may refer to the values of cells locally or remotely. Your rule may read from and write to complicated objects (scalars, vectors, stacks) in the other attributes of the cells. Your rule may use conditionals, or iteration, or random numbers (assume there’s a free pseudorandom number generator on hand). Because (as I said) the array may contain complicated objects, any attributes beyond “topLayer” can be used as scratch space or memory or stacks, and can contain arrays or stacks or single values that are continuous or binary or categorical or logical or even (if you want to get really fancy) λ expressions, and your rule can use conditionals or transcendental functions, bitwise or general logical operators, exponentiation, composition (of the suggested λ expressions) — whatever.

Except it shouldn’t be quantum. We don’t want quantums. That’s for later.

The one important firm rule here is that there must be a single explicit functional rule applied to every cell of the array at every time step, synchronously, and that even if there are additional attributes of the objects in the array, the answers must be in the same attribute you stuck the original array into.

Oh, by the way: notice that I didn’t say the final answers had to be in a particular set of cells, just in a specified row. That’s a freebie. The answers (to whichever task) need only appear in attribute “topLayer” in a contiguous subset of adjacent cells in a specified row, in the same order as the original variables in the array.

Notes: While every cell must have an identical neighborhood structure, you should realize that a Margolus neighborhood appears to change behavior on alternate time steps, you can kludge this with a single rule and a layer of flipping bits. Never assume I will be amused by algorithms whose rules don’t halt, or which use indefinite memory resources.

Example: OK, here’s one that won’t work. Say you define the objects in the array like this:

cellObject:
  topLayer: real; // the numbers I give you, and the ones I read
  rowAbove[1000]: real; // we’ll use this for row operations
  rowBelow[1000]: real; // this one too
  referenceCells[12,2]: integer; // we’ll use this
    // to dynamically change the cell indices
    // that each cell refers to
  divisible?: boolean; // a flag

You say that I should put the array I’m going to hand you into a 300-rowx301-column array, with the upper left corner located at cell (31,17) and the RHS vector running down from cell (81,2). You say that the remaining values of the array should be set to a background value of the default initialization constants (zeroes, FALSEs, &c). You say that I can read the answers in row #17 at timestep 3100, and that it will be the Grand Prize Winner of the optimum solution to the problem, or a row of n -1 values if the problem is infeasible*.

And you define an algorithm like this (in gross pseudocode):

- put the 1000 present values of the topLayer attribute in the row above me and to the left into my rowAbove[] (if there are not 1000 cells to my left, or I’m in the topmost row, wrap around the array toroidally)
- put the largest 1000 values at time t−17 of the row below me into my rowBelow[] attribute (if there are no values in the history that long ago, use the initialization values)
- for each of the columns in my referenceCells[] array attribute, replace the values in both rows with the values of the equivalent row and column in the referenceCells[] array of the cell referred to by me on the last timestep. So if my old column #6 is (-2,12), replace these values with the contents of column #6 of the referenceCells[] attribute of the cell located 2 to my left and 12 below me.
- if my topLayer value is 0, set my divisible? value to FALSE; else TRUE
- set my topLayer value to a random number in [0,1]
- if my topLayer value is below 0.1, revert all my attributes to the values they had at the end of the previous timestep; otherwise don’t

We check the code, run the automaton for 3100 steps, and check your answer. And you would, in this case, be wrong* 139 times. For both tests you claimed. You lying fool.

No pony.


* You’d be really really wrong, by the way.

Reactionaries in action

Ivan, oh Ivan.

Rebecca Goetz experiences an unsettling and chilling effect of glibly ridiculous Ivan Tribble, and the joke of his essays is suddenly far less a joke than it used to be:

I expected that Tribble’s poison would have little effect, but I was wrong. It is even worse: Tribble’s drivel has become even more twisted in the telling and is being peddled at job-hunting seminars. I was at a CV and cover letter writing workshop sponsored by Harvard’s OCS today, in which we were told that the Chronicle of Higher Education had reported that bloggers were not getting jobs because they wrote terrible things about their colleagues, and then job committees found out about this by checking the URLs bloggers had listed on their CVs. Actually none of Tribble’s victims had committed that particular blogging crime, but it seems that Tribble has trickled down in an especially anti-blog way that characterizes all blogs as career-destroying gossip sheets. In fact, it seems to be translating into an anti-web attitude completely: my cohort and I were further advised to google ourselves and attempt to get anything that looks less than appetizing “removed from the web.” (I’m not sure how one goes about doing that.) I’m checking with friends at other universities to see if an anti-blog attitude is prevalent in job-placement seminars away from Harvard as well, but I suspect that it is.

More in a bit. But if you’re an academic blogger, please go to Rebecca’s entry and take a brief survey.

Freedom, freedom

Now here’s an amazing thing, though not a new one except for me, that I happened across while following up a weird idea:

A programmatic interface between Microsoft Excel and the R Programming Language for Statistics. It apparently lets you drive R from Excel, or Excel from R.

Which is good, if you want to do technically useful and interesting things in a business environment, or fake businessy things in a technically astute environment….

Dear Miss Manners

This morning while riding the bus to work, I noticed a young lady drop something from her purse while she was getting up to leave. I was about to stop her when I noticed, in quick succession: (a) that several other people nearby were also about to catch her attention, (b) that we all saw that she had dropped a brightly-colored [vivid blue] “exotic” condom in a sleeve, (c) that we all independently neglected to say anything at all.

What should we have done? Over the course of the fifteen-minute ride, at least seven other people walked past the condom on the floor, noticed it, and left it there.

Signed,
Somewhere between a “Wise Crowd” and a “Smart Mob”

« Newer entries · Older entries »