Icosian Reflections

…a tendency to systematize and a keen sense

that we live in a broken world.

IN  WHICH Ross Rheingans-Yoo—a sometime quantitative trader, economist, expat, EA, artist, educator, and game developer—writes on topics of int­erest.

Not Quite a Dissent: On Solidarity [Guest Post, Response]

A friend and classmate offers the following anonymous guest post in response to yesterday's post on (empty) declarations of solidarity. Their post follows with no edits by me.


The internet is a great and terrible thing. I say this often. We are inundated with a dramatically larger \(N\) of events to process and, thanks to social media, a larger audience to say it to.

I don't claim that the UC does a good thing by spouting largely empty declarations of support. I agree that it's trivializing, condescending, and mostly devoid of meaning, particularly when we seem to stand in solidarity with every cause that comes our way to demonstrate that we are caring, compassionate, and informed citizens of this world. I remember back in April when the #bringbackourgirls hashtag in support of the kidnapped Nigerian schoolgirls exploded on Twitter--for two days. We offer our solidarity when it is easy, convenient, and painless, and move on with our lives.

All the same, I think there is something valuable in the exercise of directing attention to events, causes, and ideas that otherwise would have slipped our notice. How many of us would have noticed, much less bothered to care for 30 seconds or 5 minutes, the shootings at UNC had they not blown up our social media newsfeeds? Maybe I am being cynical and underestimating my peers when I say probably very few. We notice because someone tells us to; we forget when the next new thing crowds for our attention.

So in some senses, sure. The UC does not stand in solidarity, the UC does not think carefully about what it means to be a Muslim in the United States or

READ MORE

Empty Declarations


(0)

Context: The Crimson | UC Passes Act of Solidarity in Light of UNC Shooting. But first, Scott Alexander writing in Slate Star Codex | I Can Tolerate Anything Except the Outgroup (himself quoting Chesterton):

There are a lot of people who say "I forgive you" when they mean "No harm done", and a lot of people who say "That was unforgiveable" when they mean "That was genuinely really bad". Whether or not forgiveness is right is a complicated topic I do not want to get in here. But since forgiveness is generally considered a virtue, and one that many want credit for having, I think it's fair to say you only earn the right to call yourself 'forgiving' if you forgive things that genuinely hurt you.

To borrow Chesterton's example, if you think divorce is a-ok, then you don't get to "forgive" people their divorces, you merely ignore them. Someone who thinks divorce is abhorrent can "forgive" divorce. You can forgive theft, or murder, or tax evasion, or something you find abhorrent.

I mean, from a utilitarian point of view, you are still doing the correct action of not giving people grief because they're a divorcee. You can have all the Utility Points you want. All I'm saying is that if you "forgive" something you don't care about, you don't earn any Virtue Points.


(1)

Sunday, The Crimson reports (edit: ...and the UC finally gets around to publishing), the Harvard

READ MORE

[CS161] The Classic CV Error

This is a very technical post, largely for the benefit of the students of CS161: Operating Systems, for which I am a Teaching Fellow this semester. It may be useful to you if you're interested in operating systems for some reason, but if you're not in a CS mood today, maybe just move along.

From what I've seen as a TF for this course, it is very, very normal to write condition-variables code that looks like this:

struct cv {
    struct semaphore *sem;
    volatile int waiters;
}

void cv_wait(struct cv *cv, struct lock *lock) {
    KASSERT(lk_do_i_hold(lock));
    
    cv->waiters++;
    lk_release(lock);
    P(cv->sem);
    lk_acquire(lock);
}

void cv_broadcast(struct cv *cy struct lock *lock) {
    KASSERT(lk_do_i_hold(lock));
    
    for (; cv->waiters > 0; cv->waiters--)
        V(cv->sem);
}

This code is wrong (or, more specifically, badly synchronized). And it is such a common error that I'm choosing to dub it The Classic CV Error. It's subject to a race condition in e.g. the following case:

int before_and_after (int *the_thing, struct cv *thing_changed_cv, struct lock *thing_changed_lock) {
    lk_acquire(thing_changed_lock);
    
    int before = *the_thing;
    cv_wait(thing_changed_cv, thing_changed_lock);
    int after = *the_thing;
    
    KASSERT(before != after);
    
    lk_release(thing_changed_lock);
    return compare_things(before,after);
}

void mess_around (int *the_thing, struct cv *thing_changed_cv, struct lock *thing_changed_lock) {
    lk_acquire(thing_changed_lock);
    mutate(the_thing);
    
    cv_broadcast(thing_changed_cv, thing_changed_lock);
    
    lk_release(thing_changed_lock);
}

This code is properly synchronized (and in particular, protects the KASSERT(before != after)), assuming that your locks and CVs

READ MORE

[CS161] On Scheduling

This is a very technical post, largely for the benefit of the students of CS161: Operating Systems, for which I am a Teaching Fellow this semester. It may be useful to you if you're interested in operating systems for some reason, but if you're not in a CS mood today, maybe just move along.

Why Do We Schedule, Master Bruce?

A scheduler, as you know, is responsible for determining which threads run, for how long, and in what order. As much as possible, it should give the shared illusion that each process is running constantly to completion, using the entire processor. To this end, there are three major desiderata:

  • That interactive threads (in particular, user-interactive threads) are responsive.
  • That no process starves.
  • That the system, on average, runs quickly.

These high-level desiderata factor into the low-level conditions that:

  • Threads which block expecting a response are rescheduled promptly after waking.
  • Time is allocated more-or-less fairly, subject to:
  • Processes closer to completion are prioritized (recall that shortest-time-to-completion-first is provably optimal in total average time)
  • ...but in any case, do not starve even the long-running processes too much (exponentially is a good benchmark -- since that, analytically, places a finite cap on the total runlength of a process).

Many of the designs I've seen from the class in A2 design documents fail in at least one of these respects, so I think it may be useful to go over common design failures and good designs.

indicates a potential issue of which you should be cautious. Check that your system doesn't have this as an issue!


Timeslicing and Timedicing

Not every thread blocks voluntarily; after running a thread for a certain

READ MORE

Cultivated Publicy

Publicy is a term coined (or at least signal-boosted to me) by Jeff Kaufman in a series of posts (beginning with JeffTK | Giving Up on Privacy, JeffTK | Publicy and Notification, and JeffTK | A Right to Publicy) that I think is pretty great, because it's intuition-bending in a way that's reflective of the way the digital world is shaping up to be different from the physical one. (See also: Wiki | Sousveillance.)

Tyler Cowen (of MR) recently pointed to an article by the NYT about an interesting non-privacy which seems somehow related (NYT | Ratings Now Cut Both Ways, so Don't Sass Your Uber Driver):

"Highly specific pools of reputation information will become more useful in aggregate," said Mr. Fertik, co-author with David C. Thompson of "The Reputation Economy," a guide to optimizing digital footprints. "If you're a really good Uber passenger, that may be useful information for Amtrak or American Airlines. But if you add in your reputation from Airbnb plus OpenTable plus eBay, it starts to get useful globally." (...)


(1)

I'd like to have publicy (note: not publicity) as a reasonably responsible, nice person who can be trusted with things, from cash which isn't mine (because I'm not going to steal it) to charity in discourse (because I'm really trying to make a good-faith effort to understand things when I discuss them), to people's time an attention (because I have things to say which they might want to hear). I mean, basically everyone would like publicy as [good thing] for most values of [good thing], deserved or not, so what I really mean is, "I believe I am [X], and would benefit from having

READ MORE

http://dev/null

content warning: rampant cynicism, tongue-in-cheek metaphor


Today, I was going through my morning newspaper feedreader[1], saw a few links I liked, socked some away for Friday's linkwrap, dropped some others in my blog's reading feed, on the off-chance that I -- or someone else trawling the archives of Faults -- would want to revisit them later. Another one was an annoying article on Bloomberg about how the FCC's Title II reclassification of Internet Service Providers will raise rates by $X and thus price Internet access out of the reach of Y million households.

And I closed it, and didn't show it to anyone, and hoped that that would mean that fewer people would look at it. Yes, I could have pointed at it for the purposes of dissent, but I've got a post about vaccines to write, and blogging confrontationally makes me sad, so I decided that it was easier to flush it down the memory hole that is ctrl-W[2] instead.

Orwell's Nineteen Eighty-Four occasionally seems like one of those books that missed slightly in meme-space and fifty years temporally, but nevertheless was disturbingly prescient. Of course we've all ported ourselves off paper and nothing's truly lost forever on the Internet, but all the same...the real question is becoming less "is the record around" and more "does anyone remember it?"

In the walls of the cubicle there were three orifices. To the right of the speakwrite, a small pneumatic tube for written messages, to the left, a larger one for newspapers; and in the side wall, within easy reach of Winston's arm, a large oblong slit protected by a wire grating. This last

READ MORE

February 6 Links: Photographs and a Cactus Doctor

0

On Thursday, I wrote a post, the first in a series of "not everyone doing harm is evil", and a reader commented on Facebook with an NPR interview that I hadn't actually read, but which definitely fits right with the main thrust of my post:

You know, David, when my child has a nightmare, I don't come to her in the middle of the night and say, look, you're a moron for believing there's a monster under your bed. I acknowledge that the fear might be real, even if there's no monster under the bed. And we -- I sort of help her deal with the fear. (...)

Anyway, more at Thursday's post, and now back to your regularly-tardy linkwrap...

1

I'm a sucker for clean designs, and these re-imagined Harry Potter volumes are awesome:

Book covers -- minmal, laser-cut designs

Same covers, glowing blue in the dark

Illustrations on inside pages

...by Kinsco Nagy, a graphic-design student in Hungary.

Along the same vein, some nonzero percentage of my readers may be interested in the Bibliotheca project, a similarly-beautiful of the most-printed book of all time.

2

But of course, books spend a lot more time being stored than being read, and sometimes, that storage ends up being really cool, too:

That's a trailer for Cold Storage, a documentary about the Harvard Depository, which warehouses the bulk of Harvard's second-largest-in-the-nation library collection. Related: UChicago's Mansueto library, where books are retrieved for your reading pleasure by robots:

3

Elsewhere in "things being moved by cranes", ever wonder where New York subway cars go to die?

A car hits the water, after being thrown from a ship into the ocean by a crane

More evocative images from Next Stop: Atlantic, by photographer Stephen Mallon. Apparently, the practice is pro-ecological and not pollutative -- the nooks and crannies of the cars (which are stripped down

READ MORE