Friday, September 4, 2009

Okay, Now I'm Really Done

Finished porting my street cleaning reminder program to Python for AppEngine, where it seems to be working fine. One unfortunate thing about moving the original desktop C# 3.5 code to ASP.NET 2.0 was that I had to replace all my nice Linq queries with regular loops, so being able to make use of Python features like tuples and list comprehensions was enjoyable.

Here is the code, with my personal identification information removed, and which I hereby release into the public domain:


import cgi


from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app


import gdata.service
import gdata.calendar
import gdata.calendar.service
import atom.service
import gdata.alt.appengine


import string
import time


class Cleanendar(webapp.RequestHandler):
  
  def __init__(self):


    manager = CalendarManager()
    self.commands = { 'n': manager.north, 's': manager.south, '': manager.clear }




  def post(self):


    if self.request.get('event') == 'MO':
      if self.request.get('uid') == MY_ZEEP_UID:


        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write(self.process_command(self.request.get('body').lower()))
        return


    self.response.clear()
    self.response.set_status(400)




  def process_command(self, body):


    if body in self.commands:
      self.commands[body]()
      return ''


    else:
      return 'Bad command [' + body + ']'






class CalendarManager:


  def __init__(self):


    self.service = self.get_service()
    (self.calendar, hcalendar) = self.get_calendars(self.service)
    self.id = self.calendar.id.text.split('/')[-1]
    self.holidays = self.get_events(hcalendar.id.text.split('/')[-1])


    self.prefix = 'Cleanendar: '
    self.begin = time.strptime(time.strftime('%Y%m%d', time.localtime()) + '1230', '%Y%m%d%H%M')
    self.end = time.strptime(time.strftime('%Y%m%d', time.localtime()) + '1400', '%Y%m%d%H%M')
    self.daynames = ['Mo','Tu','We','Th','Fr','Sa','Su']




  def get_service(self):


    service = gdata.calendar.service.CalendarService(MY_GOOGLE_ID, MY_GOOGLE_PW, MY_APP_ID)
    service.ProgrammaticLogin()
    return service



  def get_calendars(self, service):


    feed = service.GetAllCalendarsFeed()
    calendar = None
    holidays = None
    for i, c in enumerate(feed.entry):
      if c.title.text == "Cleanendar":
        calendar = c
      elif c.title.text == "2009 NYC Alternate Side Parking":
        holidays = c
    return (calendar, holidays)




  def north(self):
    self.set_days([0,3])




  def south(self):
    self.set_days([1,4])




  def clear(self):
    events = self.get_events(self.id)
    for i, e in enumerate(events.entry):
      if e.title.text.startswith(self.prefix):
        self.service.DeleteEvent(e.GetEditLink().href)




  def set_days(self, days):
    self.clear()
    self.add_event(self.make_event(self.begin, "Move car", days))
    self.add_event(self.make_event(self.end, "Move back", days))



  def get_events(self, id):
    return self.service.GetCalendarEventFeed('/calendar/feeds/' + id + '/private/full')




  def make_event(self, t, desc, days):
    event = gdata.calendar.CalendarEventEntry()
    event.title = atom.Title(text=self.prefix + 'Street cleaning')
    event.content = atom.Content(text=desc)
    event.recurrence = self.make_recurrence(t, days)
    event.reminder = self.make_reminder()
    return event




  def add_event(self, event):
    return self.service.InsertEvent(event, '/calendar/feeds/' + self.id + '/private/full')




  def make_recurrence(self, t, days):
    data = ('DTSTART;TZID=UTC;VALUE=DATE-TIME:' + time.strftime('%Y%m%dT%H%M%S', t) + '\r\n' +
      'DURATION:PT5M\r\n' +
      'RRULE:FREQ=WEEKLY;BYDAY=' + string.join([self.daynames[d] for d in days], ',') + ';' +
      'UNTIL=' + time.strftime('%Y', t) + '1231\r\n' +
      'EXDATE:' + string.join([time.strftime('%Y%m%d', d) + time.strftime('T%H%M%S', t) for d in self.make_exclusions(days)], ',') + '\r\n')
    return gdata.calendar.Recurrence(text=data)




  def make_exclusions(self, days):
    e = []
    for i, h in enumerate(self.holidays.entry):
      for t in [time.strptime(w.start_time, '%Y-%m-%d') for w in h.when]:
        if t.tm_wday in [0,3]:
          e.append(t)
    return e




  def make_reminder(self):
    return gdata.calendar.Reminder(minutes=10, method='sms')




application = webapp.WSGIApplication([('/', Cleanendar)],
                                     debug=True)


def main():
  run_wsgi_app(application)


if __name__ == "__main__":
  main()

Thursday, September 3, 2009

Victory!

Zeep did indeed do what I wanted, and I found a site that hosts ASP.NET for free for 90 days, so I can now set my street cleaning days from my phone!

So if I have it set for the South side of the street (reminding me to move the car on Tuesdays and Fridays), my calendar looks like this:

Week from a Google calendar showing reminders to move the car on Tuesday and Friday

And then I go somewhere and when I come back I park on the North side. So I text "cleander n" to 88147, and the reminders jump to Mondays and Thursday, (excluding any day in the green holiday calendar):

Same week with reminders to move the car on Thursday, with none on Monday because of Labor Day

Zeep recognizes my phone number and uses the "cleander" string to route everything following it to my ASP.NET page in an HTTP POST request.

When the message gets to my site, the "n" or "s" populate the calendar with reminders on the appropriate days, an empty text clears the calendar completely (useful for going on vacation), and anything else will result in an error response.

I've saved "cleander n" and "cleander s" as message templates on my phone, so now any time I park it's just a few quick clicks.

Of course it will all fall apart in 90 days when my AspSpider account is deleted, but in the meantime maybe I'll be able to find some other free hosting option: all I need is to be able to run some sort of code in response to a POST request; the code is in C# right now, but it's short, and Google has APIs for Python and PHP and Java and whatnot as well, so I should be able to find something that works.

Update: Okay, Google's AppEngine will totally do what I need. I'll try it out tonight. It's fun and amusing to cobble together a baroque solution like this all to accomplish something that would take no effort at all if stupid T-Mobile would let me run a program on my phone in the first place. but also sort of depressing that I have to.

Update Deuce: This makes me feel a little better...apparently I'd have to do something similar on the Apple phone, as they don't provide a calendar API. Android does, but it's undocumented, though I would assume they make syncing with Google Calendars pretty easy so maybe it's less work. Palm gets it right.

Wednesday, September 2, 2009

Nerdery

So after being stymied (is that anti-Semitic?) in my attempt to run an alternate-side parking reminder program on my phone, I finally decided to just write a desktop version:

Window for selecting side of street

It sets up recurring events for the beginning and end of street cleaning hours, with an SMS reminder 10 minutes before, and excluding any days listed on a user-specified "holidays" calendar.

So, almost fine. I'll still need to remember to run the program after I get home and park my car, whereas with the mobile application I could have done it right from the phone. But text reminders and not having to set alarms twice a day on street cleaning days gets me 80% of what I wanted.

Something I definitely want to look into is the possibility of using an SMS web gateway to control a similar program running on a web server. I don't know if there are any free web hosts that allow you to run .NET or Python programs...you'd think that kind of thing would be de riguer in this day'n'age, but you could fill a wikipedia with what I don't know about internets hostering.

Update: I forgot to specify that when I wrote "sets up recurring events" that I meant it adds them to a Google calendar. That's where I got the idea to exclude holidays, because there's already a public calendar I subscribe to with all the street cleaning holidays. I also neglected to include the name of the project, which is "Cleanendar" and makes perfect sense.

Monday, August 31, 2009

Dog-Proofing the Litter Box

I was googling around for info on keeping dogs out of the kitty litter a little while ago and ended up at a site that sells covered cat boxes that dogs can't get into. They're sort of expensive, and a little more complicated that what we'd need since Prancis is big enough that he could be foiled by something pretty simple. Here's what I came up with:

Computer model of litter box cover

It's not to scale, but there's the general idea...a little doorway for the cats and an interior wall to keep Prancis away from the goodies. (The litter box on the inside is a model I found on the web.)

I got the wood cut to size at the wood store and put it together with drywall screws because they are the best.

One side and top
Two sides and top
Three sides and top
Four sides and top

They wouldn't do curved cuts, so I had to get a jigsaw (racist).

Box with internal wall visible
Doorway cut

And here it is set up:

Covered litter box

The Colonel (and hence Lucy) can get in:

The Colonel stepping into the box

But Prancis cannot:

Prancis looks at the opening

I still need to sand and paint it. The inside should be glossy white for ease of cleaning. Not sure what we'll do with the outside.

Tuesday, August 18, 2009

Red Bulls!

Via Atrios, one can now take NJ Transit to Giants stadium. I should go watch some soccer!

Friday, August 14, 2009

Nice

I did enjoy this joke, despite it relying sort of overmuch on childhood nostalgia. But well done, in any case. Which also reminds me of this game I read about the other day that sounds like it might be in sort of a similar vein. Being vague here so as to prevent spoiling the comic.

Tuesday, August 11, 2009

What Digby Said

What Digby said:
If these Democrats had spent less time gossiping about what Clinton really did with Monica or handwringing about Gore's "lies" and more time analyzing how those spectacles unfolded, they wouldn't be caught flat footed today. But they didn't because they blamed Clinton for being "weak" and Gore for being "inauthentic" as if those were the real problems. I'm sure it made them feel very confident that it couldn't happen to them.
Though actually I had been surprised with how well the Obama administration was doing in this regard, right up until the health insurance reform lunacy. My guess is that the economic crisis had media types genuinely unsure of the future, to the point where they were less willing to undermine a president who seemed to be trying to make things better, even if he was a Democrat. Now that we're on more familiar ground, it's back to business as usual.

Sunday, August 2, 2009

Baseball Sex

Man, it's been forever since I downloaded mix tapes...now Gucci Mane is everywhere? With OJ Da Juiceman?

But Lil Wayne's "Baseball Sex" was basically designed in a laboratory to appeal specifically to me.

Monday, July 27, 2009

The Victim-Blaming Impulse

Excellent post from Amanda on abusive police. Especially this passage:
Victim blamers are often also telling a story about how they personally will never be...arrested unfairly for doing something totally legal. To blame Gates for being stupid is to say, "I would never get arrested for breaking into my house, because I have the sort of self-preservation instincts that this man is clearly missing." People enjoy the illusion of having more mastery of the world than they do, because it makes them feel safe, but it also contributes to an atmosphere where victim-blaming can flourish, particularly in situations that are loaded with racial or gender politics.
I think this is hugely significant. And also tragic, because it's a reaction basically rooted in the recognition of just how horrible it would be to find oneself in a victim's situation, i.e., empathy. Ideally we'd be able to channel that initial identification with the victim toward something more constructive.

Cyclones @ Yankees

Well we finally made it to the Ballpark at St George on Staten Island, which was as awesome as advertised. The seats along the third base side have the best views of the harbor. Crazy thunderstorms prompted two separate rain delays, neither of which were called when it was actually raining...very bush league, guys.

Great game, though. The Yankees came back against an early Cyclones lead, but couldn't quite overcome the Brooklyn powerhouse. Wish it hadn't run so long that the ferries were on their hourly schedule by the end, but what can you do.

Friday, July 24, 2009

Barcode Question

You know when you buy tickets to something, or check in for a flight, online, and they send you an Url you can click on to print your tickets out at home? And then you bring in the ticket and they scan the barcode? The tickets are full page deals, which seems like such a waste: can I print 2- or 4-to-a-page and still have them scan?

May try a few mini tickets in Staten Island just to check.

Setup Error

I have been working on this stupid bug like all week: one of my programs would occaisionally pop up a window entitled "Setup Error," with the contents "Failed to load resources from resource file. Please check your Setup" and then disappear when the window was dismissed: no exceptions to catch, no other clue as to what might be wrong.

It's evidently a symptom that can arise under several different circumstances: I found several people who saw it when causing an infinite recursion, or when running an application on a machine with certain third-party anti-virus software installed. I didn't find anything that sounded like my circumstances, so I record them here in hopes that frustrated searchers might be helped along.

My setup and architecture were as follows:

  • .NET Framework 1.1;
  • One UI event handler hides the main form and creates another form, displayed in its own Get/Translate/Dispatch message loop until it's closed;
  • The new form creates a System.Windows.Forms timer;
  • At which point, certain calls (the two I found were System.Threading.Thread.Start() and the overloaded System.Xml.XmlDocument.Load() that takes a URI string; the one taking a TextReader worked fine) cause the "Setup Error" when made from the timer elapsed event handler.
Also, the "Setup Error" only occurred when running a Release build, either from Windows or from Visual Studio "Without Debugging."

I'm still not sure exactly what I was doing wrong, or whether I was encountering a bug in the framework. I refactored the code to get rid of my inner message loop and it seems to have fixed things, so I assume that the implementation of the forms timer somehow relies on its only being maintained by the built-in message loop...but in such a way that causes only certain other methods to fail? It's a mystery.

Please Save Us from the Liberals

Some of the commentary around the Skip Gates arrest regarding how much benefit of the doubt to give the police officer has been pretty absurd. But Bob Somerby's hints towards police apologia are positively risible:
Gates is wealthy, affluent—famous, influential. Officer Crowley quite plainly is not—which forms part of a famous old American story.
As if Gates had demanded "do you know who I am?" of a surly counter clerk at Au Bon Pain, rather than the armed officer of the law standing in his foyer.

Teasing his upcoming Friday post, Somerby opts for verbal irony:
Guess what, kids? Upper-class people, of whatever race, often have trouble respecting working-class people.
And cops "often have trouble" acknowledging the rights of (let alone respecting) anybody without a badge. And I will grant in a heartbeat that we wouldn't have heard word one about this injustice had the victim not been a Harvard professor, but that's an argument for more scrutiny of law enforcement, not less.

And then this:
(Persistently, this has harmed progressive interests.)
Again, this is part of the teaser for Somerby's Friday post, so I can't really say exactly how his argument for this point will go. But from the content of this post, it sure looks like it might be along the lines of clueless limousine liberals who don't have time for the concerns of the working class. Which is normally the kind of nonsense that Somerby is so good at taking apart, so it's especially annoying to see inklings of it here.

A reminder: Democrats, and liberals, do great with the working class. It's those of the suburban middle class who like to defend their Republican voting habits by claiming that progressives are out-of-touch elitist snobs; the voters who seek out "safe neighborhoods" with "good schools" and worry about "personal responsibility," and vote Republican because John Kerry looks French. Those people are out of Democrats' reach, for what should be obvious reasons.

One set of people that liberals could do better with are those on the left who see things like Democrats turning a blind eye towards police thuggery as a reason to vote third-party or stay home. Somerby is an all likelihood correct that "progressive interests" don't have anything to do with resisting abuse of authority; to which I say, to hell with progressive interests, and to hell with liberals who side with the bullying cop over the rich professor because it will play in Peoria.

Thursday, July 23, 2009

Having not been to a Cyclones game (yet!) this summer...

...I have no idea whether, or in what capacity, the team may have made use of Jay-Z's "Brooklyn (Go Hard)", but now that I'm thinking about it, it seems like an ideal stadium chant.

Of course immediately you run into the problem of, with the "Brooklyn, we go hard" chant and then "Brooklyn" spelled out over it, is doing that as a group in an audience setting really something that is rhythmically within the grasp of your average baseball fan?

And then of course I realized that minor league baseball was probably not the sport for which Jay-Z intended the song to function as a cheer, and I looked up the lyrics and he even mentions how he's going to "bring the Nets" in a verse of the song.

So I'm an idiot basically, but also I hope they've been playing the song at KeySpan.

Tuesday, July 21, 2009

The Capitalist Solution to Health Care: More Money for Capitalsts

The apologists for capitalism really are beyond parody.

I will quibble with digby's implication that this has anything to do with a misplaced faith in markets per se; there's nothing inherently absurd about insurance insurance (and it sort of exists in, e.g., auto policies that include coverage for collisions with uninsured drivers), and if there were sufficient demand for those kinds of policies then insurance companies would offer them.

That's not good enough for the likes of Cato, however, who aren't happy unless the very maximum amount of wealth is being extracted from the populace and funneled into corporate coffers. The crisis of the medically at-risk being insufficiently covered by rapacious insurance companies becomes the opportunity for those selfsame insurers to squeeze out one more drop of blood. Such is the nature of capitalism: markets are a means to an end, but it is the end—the continued ascendancy of the capitalist class—that is paramount, and when markets aren't getting the job done they are dropped to the side without a second thought.

Wednesday, July 15, 2009

My Afternoon on the Internet

I have a recurring idea that it would be sweet to make some sort of 2D platform type game but with really awesome character animation, like if not actually rotoscoped then approaching rotoscope-caliber.

Sometimes I even start trying to animate a walk cycle before I remember that making awesome character animation is actually really difficult, and if you can pull it off then it is pretty much enough to carry a hit game. I have literally wanted to do something along these lines since I was making crappy games on the Mac using Ingemar's Sprite Animation Toolkit. And it haunts me yet!

The latest incarnation of this lunacy was an idea I had, while walking the dog, that there should be a game where the player is a dog, but only it's animated totally awesome and you can sit down and gallop and stuff and it looks like the movements of an actual dog, albeit 2D and lo-res. Amazing right!

And actually there is a game where you're a dog, but it's 3D and for the Playstation Deuce and the character animation is not even that good. (No disrespect, the animators did a great job, but it looks like they didn't use motion capture, so it's both not quite realistic and damned impressive that it looks as realistic as it does.)

And thus did I find myself searching for visual references regarding the canine walk cycle, which led me to this link, and damn. That page is huge! And loaded with diagrams! And very heavily footnoted!

And then I scrolt up to the top of the page and it was chapter ninety-one! Of what?!? A textbook with the best cover graphic ever.

If only Netflix had been around during college

Just remembering all those all-night bull sessions spent debating which Meatballs sequel was most Lynchian.

Netflix recommendations window suggesting that 'Meatballs 4' and season one of 'Coach' are similar to 'Eraserhead'

Tuesday, July 14, 2009

Personal Virtue as a Poor Substitute for Political Change

Via the Just Seeds blog, a great article summing up the flaws inherent in the personal virtue model of social change.

Not a new idea by any means, but one that I've always found interesting and thought-provoking. I've always liked Noam Chomsky's succinct rejoinder along these lines:
Q: [H]ow can you justify living a bourgeois life and driving a nice car?

A: ... When I go to visit peasants in southern Colombia, they don't want me to give up my car. They want me to help them.
Just so. It's an obvious point, but so easy to lose track of in our culture, even once you're aware of the dynamic at work.

And it really is a distraction, as teeth-gnashing over one's contribution to gentrification, for example, ends up being "white guilt" of the most pointless sort: you either waste your time twisting yourself into knots, trying to explain how you're actually not part of the problem; or you shrug your shoulders and resign yourself to being an irredeemable oppressor, and thus liberated from any responsibility to change the system.

Monday, July 13, 2009

Dog Walk Conversation

"How much did you pay for that dog?"

"He's from a shelter, so nothing."

"What's his name, German shepherd?"

"Uh, it's Prancy."

"Okay, Fancy. Don't bite me."

"Oh, he doesn't bite."

"Yes he does."

Calorie Labeling

Ezra has an anecdote about how a restaurant labeling its menu items with calorie counts would have changed his lunch order. At the Mets game Saturdy we noticed that the roving food vendors now wear buttons advertising the calorie counts of their wares. It was a welcome bit of information, and did lead one of our number away from the fallacious "not sure if I could eat a whole hot dog, maybe just a soft pretzel" line of thinking.

The game, by the way, was great, and we all had a blast on our first visits to Citi Field. Santana was amazing, and though for the most of the game he didn't leave the rest of the Mets defense with much to do (probably a good thing), we did get to see a double play in the latter innings. And though rain threatened from about the seventh inning stretch on, it held off until we were on the way home.

Friday, June 26, 2009

Boo

The program I wanted to write for my phone was simple: I wanted to be able to select which side of the street my car was parked on, and have it add alarms to the calendar reminding me to move my car for street cleaning on the appropriate days of the coming week.

It was easy! And it runs perfectly in the Nokia emulator, but when I tried running it on my actual phone...SecurityException!

And basically I'm screwed, as it seems T-Mobile locks everything down...no "third party" access to user data (such as the calendar) at all.

Of course, I'm not even a "third party," I'm the second party, the owner of the phone. How annoying.

Needless to say, my next telephone will run Lunix.

And my code I hereby release into the public domain:

package street;


import java.util.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.pim.*;


/**
 * @author Travis
 */
public class StreetCleaning extends MIDlet implements ItemStateListener {
    public void startApp() {
        Form form = new Form("Street Cleaning");


        options = new ChoiceGroup(null, Choice.EXCLUSIVE);
        options.append("North (Mon/Thu)", null);
        options.append("South (Tue/Fri)", null);
        options.append("None", null);


        form.append(options);
        form.setItemStateListener(this);


        Display.getDisplay(this).setCurrent(form);
    }


    ChoiceGroup options;
    static final String summary = "Move car";


    public void itemStateChanged(Item item) {
        PIM pim = PIM.getInstance();
        String reminders = pim.listPIMLists(PIM.EVENT_LIST)[4];


        Calendar today = Calendar.getInstance();


        try {
            EventList events = (EventList)pim.openPIMList(PIM.EVENT_LIST, PIM.READ_WRITE, reminders);


            // get rid of existing notices
            for (Enumeration items = events.items(); items.hasMoreElements(); ) {
                Event event = (Event)items.nextElement();
                if (event.getString(Event.SUMMARY, PIMItem.ATTR_NONE).equals(summary))
                    events.removeEvent(event);
            }


            // select days of week based on side of street
            int[] days;
            int side = options.getSelectedIndex();
            if (side == 0) {
                days = new int[2];
                days[0] = Calendar.MONDAY;
                days[1] = Calendar.THURSDAY;
            }
            else if (side == 1) {
                days = new int[2];
                days[0] = Calendar.TUESDAY;
                days[1] = Calendar.FRIDAY;
            }
            else
                days = new int[0];


            for (int i = 0; i < days.length; i++) {
                // set alarms for next coming weekday
                int apart = days[i] - today.get(Calendar.DAY_OF_WEEK);
                if (apart < 0 ||
                        apart == 0 && today.get(Calendar.HOUR_OF_DAY) > 10)
                    apart += 7;


                // first event
                Calendar day = Calendar.getInstance();
                day.setTime(new Date(day.getTime().getTime() + apart * 24 * 3600 * 1000));
                day.set(Calendar.HOUR_OF_DAY, 8);
                day.set(Calendar.MINUTE, 20);
                day.set(Calendar.SECOND, 0);
                day.set(Calendar.MILLISECOND, 0);


                Event event = events.createEvent();
                event.addDate(Event.START, PIMItem.ATTR_NONE, day.getTime().getTime());
                event.addInt(Event.ALARM, PIMItem.ATTR_NONE, 1);
                event.addString(Event.SUMMARY, PIMItem.ATTR_NONE, summary);


                events.importEvent(event).commit();


                // second event
                day.set(Calendar.HOUR_OF_DAY, 9);
                day.set(Calendar.MINUTE, 50);


                event = events.createEvent();
                event.addDate(Event.START, PIMItem.ATTR_NONE, day.getTime().getTime());
                event.addInt(Event.ALARM, PIMItem.ATTR_NONE, 1);
                event.addString(Event.SUMMARY, PIMItem.ATTR_NONE, summary);


                events.importEvent(event).commit();
            }
        }
        catch (PIMException ex) {
            Display.getDisplay(this).setCurrent(new Alert(ex.getMessage()));
        }


        destroyApp(false);
        notifyDestroyed();
    }


    public void pauseApp() {
    }


    public void destroyApp(boolean unconditional) {
    }
}

New Level of Nerddom

Somehow both Andrew and Dmitry were under the impression that, back when Andrew and Jay and I all had Palms III, I had actually written software for it to track my expenses. I did have a program like that, but I sure didn't write it.

I can't remember if I ever actually tried setting up a Palm development environment; at the time my only computers were a beige Mac and a couple PC's running Slackware, so it's quite possible there wasn't anything available, or available for free. I am pretty sure I had a Palm simulator for the Mac, but I think I only used it to play Parking Lot.

In any case, I just downloaded NetBeans and the Nokia S40 platform SDK. :( I want to write a program that sets my alarm clock for street cleaning. :((((((((((((((

Tuesday, June 23, 2009

Gaming System

Two single-button controllers and a 4-color, 3x1 display. Looks pretty fun!

Friday, June 19, 2009

Herack Oboover

I have not yet gotten to the Obama-as-Hoover article in the current Harper's (I am weirdly fastidious about reading each issue completely, and in strict order, though on occasion I do read "Findings" without having finished the crossword), but this sounds very accurate to me:
Obama’s failure would be unthinkable. And yet the best indications now are that he will fail, because he will be unable—indeed he will refuse—to seize the radical moment at hand.

Wednesday, June 17, 2009

Nerdiest Thing Ever?

3D slideshow of a concert of music from Battlestar Galactica.

Monday, June 15, 2009

Homemade Cargo Bike

Saw this just now walking the dog:

Cargo bike made with a shopping cart

It's a slightly modified shopping cart strapped to the front fork with hose clamps. The two front wheels are each attached to forks as well, also connected to the basket with hose clamps. I didn't think to inspect the headset, but I guess there must be a stem in there to hold it together, but with no bars other than the handle of the shopping cart.

So not only useful, but also welding-free and completely reversible.

Friday, May 29, 2009

All Side Effect

Pretty sure this fails to conform to the intended use of properties:

        int _alarmEventCount = 0;
        public int alarm { set { _alarmEventCount += 1; } }

Not my code, but by a coworker who is good, so I'm sure there's a logical reason how it came about.

Thursday, May 28, 2009

Hair Clipping Issues

This is stupid. There is an ultimate fighting video game coming out that cut a character because they couldn't figure out how to render his hair. Which, fine, maybe if you didn't take something like hair physics into account early in the project, then you get to the character models and can't figure out a way to make it look non-stupid.

But then they tried to get the actual guy to cut his hair, so they could give the character model short hair. Why not just give the character model a haircut? People would understand.

And up until that point I'm giving the game studio the benefit of the doubt, because I can understand how that could be a kind of unforeseen wrench in the works for which there's not an obviously ideal solution. But it turns out their game also can't show people fighting in a left-handed stance...so they show everyone as right-handed! Seriously that is like making a baseball game and realizing your engine can't handle bats so they just render everyone with golf clubs.

Tuesday, May 26, 2009

It's Wiffin' Season!

Played some solid w-ball on Sundy, in honor of our fallen soldiers.

We played this version under which, instead of keeping track of imaginary baserunners, you have to actually run on a hit and then get an increasing number of points for each base you get to safely; fielders throw the runner out by getting the ball back to the mound with the runner off-base.

It makes playing with more than two people easier because each person has their own score, and you don't have to worry about teams or anything. And the get-the-ball-to-the-mound dynamic introduces some of the interesting parts of baseball that are left out from the wiffle rules I've played under before: for example, if the pitcher runs to field a grounder, one of the other players on defense needs to cover the mound to get the out; and it actually becomes advantageous to throw pitches that will be hit for grounders that will be fielded for an out, whereas under the official rules it's often better to go for a fly out.

We also played using the softball ("king") size wiffle ball, which was not as weird as I had anticipated. It actually seemed to curve better than the baseball size, though maybe it was just that the larger size made the motion more visible. It's definitely easier to jam a finger in one of the holes (nullus) to throw a changeup, though. In any case, I had some success with the changeup/changeup combo, and with throwing a curve for a groundout, though my slider was as hittable as ever.

Thursday, May 21, 2009

Kind of Disappointing

So no Democrat Socialist Party for us. Too bad, this stuff tickles me to no end.

Tuesday, May 19, 2009

The Book of Neuteronomy

So we are supposed to get Prancis's balls chopped off soon, and our neighbors told us about the ASPCA's mobile spay/neuter truck. It so happens that it's going to be near us on Saturday, and we can save a couple hundred dollars by getting him neutered there instead of at the vet's.

I am a little hesitant because the program is intended to provide services to low income communities and they perform only a limited number of operations (25 animals a day) on a first come/first served basis. There is a nominal fee for people without proof of public assistance, but even with that we could be preventing someone from getting their pet fixed for whom going to the vet would not be an option. If we want to minimize our impact as gentrifiers in our neighborhood, isn't this exactly the kind of thing we should be avoiding? On the other hand, it would save us $300, which is a significant amount of money...but maybe that makes it that much more unethical?

I don't know, I'm not sure what we'll decide. We've also discussed the possibility that 25 people might not even show up by seven on what is going to be a drizzly Saturday morning on a holiday weekend, but that feels like a rationalization.

Monday, May 18, 2009

Balk Like an Egyptian

So Mike Pelfrey balked thrice against the Giants last night? Weird. I am fuzzy on what even constitutes a balk...the first one is obvious, I can see the second one, but the third one is just a mystery to me.

Friday, May 15, 2009

Andy Griffith Show Values

I love this classic non-apology apology: Kim Hendren is sorry he referred to Chuck Schumer as "that Jew"...because it "took away from what [Hendren] was trying to say"...which is how Chuck Jew-mer was trying to Jew up our Andy Griffith Show values with his Jewy wiles.

Perfect example about how when the right wing rhapsodizes about the good old days and 1950's values, it's not a case of forgetting about segregation, exclusive neighborhoods, and the reign of the closet. Rather, those things are exactly what they want to bring back.

Thursday, May 14, 2009

Priorities

Atrios links to this LA news story about California "ghost" towns of foreclosed houses. There are all these people still living in half-empty neighborhoods with legitimate complaints about trashed abandoned houses that get used for gang hangouts, drug sales, and so forth.

But then all of a sudden attention turns to a house that's being squatted by...a family! Who can't be evicted because...they pay their utility bills? Uh, so what's the problem again?

Oh, I see, they don't maintain their lawn and neighbors would prefer a "nice family." Maybe leaving the place empty would be a better option? Hilariously, one person even complains about the squatters' impact on property value, as if that's still a thing.

Nice to see a dying community unite around the poor bankers, who just want their justly deserved "fees," and against the evil homesteaders squatters who might actually have a shot at saving the neighborhood.

Wednesday, May 13, 2009

Dollhouse / In the Middle of the Street

I watched the season (and, in all likelihood, series) finale of Dollhouse earlier this week. My initial reading stands, I think, though it now appears to me as though the primary allegorical (and the premise and characters are more complex than mere allegory warrants, so this isn't intended as a comprehensive reading in any sense) import of "the Dollhouse" is as a representation of patriarchy, and the enforcement of rigid gender roles in particular.

That is, the feminist critique of capitalism is present (for example, in the commentary on the entertainment industry, and TV in particular), but it's more focused on the specific problems posed by patriarchal gender roles. The following musings contain many spoilers for the entire season.

The first indication of this is the name of the Dollhouse itself: the term "dollhouse" is certainly evocative, and does reflect the status of the Actives as mindless playthings, but it doesn't exactly make sense as a description of what the Dollhouse organization does in the fictional world. The organization bills itself as fulfilling clients' fantasies, whatever they may be. In contrast, an actual toy dollhouse is generally not seen as this kind of blank slate for a child's imagination to fill in freely; rather, it's a highly gendered toy, used almost exclusively by girls to act out (and rehearse) traditional gender roles.

Put another way, a dollhouse's immediate purpose is to allow a child to act out fantasies, but only of a very limited sort, while its larger purpose (not necessarily what it was intended for, but what it actually functions to do in the real world) is to enforce societal gender norms. Likewise, each Dollhouse branch is in the immediate business of allowing clients to act out certain of their fantasies, while there have been many allusions throughout the series to some greater project that the whole sprawling entity is working on.

The Actives under this framework are those whose true personalities have been supplanted by whatever pre-programmed identities are forced upon them. This is directly analogous to people who quash their own true desires in order to take on externally mandated (and often conflicting) gender roles defined by the patriarchy. Some remnants of their true selves (Alpha's sadism, Echo's suspiciousness, Victor's crush on Sierra) might leak through, but by and large they are completely displaced by the personalities they adopt to satisfy the needs of those around them.

This dynamic is nominally voluntary: as DeWitt constantly reminds everyone, the Actives work for the Dollhouse under legal contract. But the narrative reveals that for many of them, their choice to join the Dollhouse was not much of a choice at all. Thus is one of the standard apologies for problematic gender normative behavior—people are free to do what they want, and if that means wearing miniskirts then so be it—explicated within the framework of Dollhouse.

It is appropriate then that while the Dollhouse employs both male and female Actives, the majority of them are women. This reflects the disproportionate negative impact of enforced gender norms on women while acknowledging that men suffer under patriarchy as well. (Perhaps also of interest here is how Alpha and Echo react differently when they come to be inhabited by all of their programmed personalities simultaneously: Alpha experiences this as a liberating rebirth into godhood and destroys his original self, while Echo has no interest in these false personae, desiring only to pay her dues in the Dollhouse to win back her real identity.)

Characters aside from the Actives demonstrate other ways of interacting with the system of patriarchal gender norms. The two major "good guys," Boyd Langton and Paul Ballard, disagree with the Dollhouse's purpose and methods, but neither offers much promise of being able to do anything to stop it. Langton tries his best to keep an eye out for Echo, but his complicity in the Dollhouse project limits his impact. While Ballard initially appears devoted to taking down the Dollhouse, he comes to adopt the mentality of a "white knight," occupied more with rescuing Caroline in particular than in undermining the larger operation (tellingly, it takes Mellie, herself trapped within the clutches of the Dollhouse, to recognize this self-delusion for what it is). It is no accident that these two sympathetic male characters also comport themselves according to the norms of typical masculinity, guided by self-righteousness and doing their talking largely with their fists.

Topher, in contrast, does not conform to traditional masculine norms, but his misanthropic egotism and contempt for the Actives mean that he helps uphold patriarchy nonetheless. He's an example of someone who would actually benefit from a world without patriarchy, but goes along with it because feeling superior to its victims is easier than challenging the status quo. An example of someone escaping the stringent rules of patriarchy is given in the character of Whiskey, whose mutilation liberates her from gender expectations (note she becomes a doctor) because she cannot be easily sexually objectified under patriarchal standards of beauty (this option for freedom is, again, no option at all; disfigurement should not be a prerequisite for membership in humanity).

The remaining two characters, Dominic and DeWitt, don't really seem to function at the same allegorical level as the Actives and the rest of the supporting cast. Dominic is abstracted to the point of being an out and out symbol: he's the government that recognizes the power of patriarchy as a potential means to some future end, and keeps an eye on its activities as a result. DeWitt doesn't seem to be much more than a somewhat hackneyed archetype, the ball-breaking ice queen. That's clearly a role fraught with all kinds of more or less interesting gender dynamics, but it doesn't seem to be much informed by the Dollhouse-as-patriarchy framework.

So that's my reading of the show's motivating conceit. If the series does continue then I would expect its themes to evolve with it, the way Buffy's "battling the demons of adolescence" premise gave way to more complex themes. But it would also be nice to see how the story that's been told so far would work out, as I would also expect it to be consistent with this allegorical framework.

Home Office

Set up to work on my back porch, with Prancis keeping me company

Working from home in my urban hellhole.

Monday, May 11, 2009

"Empathize right on your behind!"

Bam, Michael Steele nails it. You be da man! My new voter registration as a Republican will be in the mail this afternoon.

Saturday, May 9, 2009

Current Object of Bike Lust

Saw one of these things this morning (at the farmers' market, natch). It looked like the couple it belonged to had two kids they'd brought in the cargo box.

Not sure where I'd park one, but 150 pounds is plenty for carrying a dog around...we'd looked at specs for some of the Danish-built ones that some companies used to import, and they maxed out at 100 pounds of cargo IIRC, which Prancis is not likely to exceed, but who knows.

So anyway that's tempting enough, but the Joe Bike prototype is seriously badass.

Friday, May 8, 2009

Mets!

It's hard not to feel optimistic coming off the two wins in the mini series against Philly.

My ignorance of the sport of baseball means I'm not really aware of the psychological impact something like, say, pulling a pitcher out of the rotation, can have on the whole team, but it sure seems to have had a good effect so far. It's not so much the string of recent wins, but that they seem to be more like whole team affairs, rather than Johann carrying them or just getting lucky when an opposing pitcher blows it.

Looking forward to seeing how Jon Niese does tonight. I don't think I remember him from last season.

Thursday, May 7, 2009

The Caine Dootiny

Via Sadly, No!, wow, Michael Caine is a jackass. It's not like he pulled himself up by his own bootstraps in the midst of the Thatcherite capitalist paradise...he made his career in the 1960's, under the confiscatory tax structure decried by other working class lads made good.

Clearly, while some people are none too happy about their tax brackets once they've met with great success, the threat of high taxes was not enough to put them off their ambitions in the first place, so it's hard to take Iain Martin's scaremongering in the Telegraph column seriously. He seems to half recognize this, as he is very right to worry about "[a]ccess to the best schools...increasingly limited to the affluent." It's just his proposed remedy—slash taxes for the ultra wealthy—that's nonsense.

Wednesday, May 6, 2009

Good Take on Supreme Court Vacancy

I like Ezra Klein's framing of the issue: the centrality of women's (and gay and racial minority) issues to what the SCOTUS does is exactly why non-(straight white male) candidates are so important.

And it is actually seriously incredible to me that an opinion columnist in a national paper can do a piece that boils down to "race and gender don't matter anymore so Obama should appoint a white man" and not get called out by an editor for the basic error in reasoning.

Monday, May 4, 2009

She's a Superfund (She's Superfundy)

I'm glad it sounds like the Gowanus Superfund status is going to go through. The arguments against it all basically amounted to "it's going to be really hard to get people to live in housing built on a Superfund site," which, yeah. Is that supposed to persuade anyone?

Thursday, April 30, 2009

Asher Roth Officially Sucks

Of the three predictions written for Gawker of how well Asher Roth's album would do, Byron Crawford's was almost exactly right. It was especially nice to see Touré's prediction fail, his overestimate hinging as it did on myths about how "the majority of hip hop fans" are "suburban," "[think] hip hop is theirs," and "enjoy listening to and looking at someone who reminds them of themselves." This is pretty much wrong in every particular as well as mistaken overall.

I don't care one way or the other about Tom Breihan's being wrong, but it's interesting that he got caught up in the idea that Roth would succeed entirely due to successful marketing. If anyone should recognize the speciousness of that kind of thinking, you'd think it would be Lil Wayne's biggest mainstream stan...dard bearer. If it were as simple as marketing, every label would have a Soulja Boy or a T-Pain. One thing every label does have plenty of, however, is Asher Roths...not gimmicky white rappers with "suburban" schticks, but artists they've pumped zillions of promotional dollars into creating buzz around who subsequently put up lackluster album sales.

Mistranslation?

People are probably aware of the Israeli minister who thinks "swine flu" is offensive to Jews and Muslims because it refers to a food they can't eat. I don't get it...I could see the objection if they named a deadly disease after something that Israelis do eat (falafel pox?), but it's hard for me to understand this one. I'm assuming he was mistranslated.

Tuesday, April 28, 2009

Good Idea

Using pronunciation audio clips from online dictionaries as ringtones.

Exercising myself upon a dumb Bell

For some reason I find the quotes from this week's World Wide Words weird word, dumbbell, very hilarious. Apparently the original "dumb Bell" was just a fake bell that "affords the exercise called RINGING, by means of a rope, which comes thro’ the floor or floors down to a study or chamber, and was practised by an eminent physician who was very fat." Of course.

Selling Livable Streets to Conservatives

Streetsblog links to an essay on why social conservatives should support public transportation and walkable communities. It's a good thought, though I personally tend to be fairly skeptical of the notion that the vast majority of conservatives are truly interested in things like "family values" or "free markets" beyond their rhetorical utility.

And even if you give them the benefit of the doubt on that score, they still have to weigh those benefits against the "piss off a hippie" potential of continuing to support car culture.

Honestly, a better tack might be to play up the value of walkable communities when Obama establishes the New World Order, Jesus returns, global race war erupts, and you're forced to use your arsenal of stockpiled firearms to defend your family from roving satanist cannibals. Under such conditions, riding a recumbent or hopping on the bus will be much easier than scavenging for gas.

We Like This Crime Rate Just Fine

MY previews a book that makes the claim "that if we use smarter law enforcement, and hand out smarter punishments, we can decrease the crime rate while also becoming considerably less brutal and punitive in how we treat offenders."

The obvious rejoinder: who says "we" want to decrease the crime rate (let alone become less brutal or punitive)? This is not new territory, and the ability to reform the criminal justice system has existed for long enough that at this point the assumption that there is a general good-faith desire for reform can only be considered naïve.

Friday, April 24, 2009

Biden His Time

Hey guys, what ever happened to Vice President Joe Biden? What's he up to?

Professor Emeritus Griff

Whoa, I had no idea Professor Griff still performed with Public Enemy. I think Bol is onto something in the sense that after letting Flav use PE shows to promote his reality TV career, Chuck D doesn't really have any grounds for denying Griff a platform.

And all that said, at least considering, or not dismissing out of hand, some of the left-field theories about Obama or 9/11 and so forth, if only for the sake of argument or as a jumping-off point for serious discussion, would have at one point been well within the Public Enemy mode.

Burn Hollywood Burn and One Million Bottle Bags, for example, both come to mind as songs that posit what most people would consider some fairly incredible wide-ranging conspiracies aimed at repressing African-Americans, and then develop themes around how the machinery of capitalism makes actual deliberate conspiracy redundant. Not to say those are the best examples, just that they immediately occurred to me as demonstrating Chuck D's approach to cultural analysis.

And also it is nice to see that sort of mentality now once again becoming part of PE's approach after (again, agreeing with Bol) Chuck's understandable but disappointing Obama cheerleading during the election.

Tuesday, April 21, 2009

Representation and Accountability

Matt E. Glesias bases his case for direct mayoral control of NYC schools on the argument that a larger number of democratically elected offices, most of them representing very small local regions, leads to less accountability, because the average voter doesn't have the time or means to stay up to date on the actions of all of their elected representatives.

This seems obviously mistaken to me. Having fewer races on the ballot doesn't magically make voters more informed on the issues, and it reduces the ability of those who are informed to, say, endorse current zoning policy while voting to change course on the city's approach to reducing street crime.

It's nothing more than the fetishization of turnout, and it's undemocratic.

More Opera Nonsense

Ezra Klein links to a Freakonomics blog post that links to Terry Teachout's Wall Street Journal piece wondering why more musical performances aren't booed.

The occasion prompting the article was the Met's premiere of La Sonnambula, which was booed, and though Teachout actually writes that the Met is one of the few places where booing is not unheard of and contrasts it with Broadway shows that always get standing ovations regardless of the quality of the performance, the comment thread in Klein's post somehow twists it all into a case of Met audiences standingly ovating everything.

And wouldn't you know it, the consensus seems to be that opera goers are a bunch of phonies who don't know the first thing about good music and sneakily cover it up by acting as though all opera performances are amazing even when they aren't. (Everyone knows that the best way to conceal one's insecurity and lack of discernment is via indiscriminate enthusiasm rather than with, say, baseless reflexive skepticism.)

Anyway, not much to add really. People are silly, and not least silly among them the Met audience who booed the La Sonnambula production, which could barely be called experimental by any standard rooted in the last half century, let alone "avant-garde"; I'm really reminded of the jerky guy in Farewell My Concubine who was outraged that one of the protagonists took the wrong number of steps between one specific set of lines or something.

Putting the "Erm..." in Sabermetrics

Particularly absurd post on Mets Geek charting each team's bullpen's average fastball speed against strikeouts. Don't even try to wrap your mind around what it might even mean to average the pitch speeds of an entire bullpen together, the results are random noise, not "a slight trend."

Monday, April 20, 2009

At Least He Has a Kickstand

Accident waiting to happen. Come on, put the grill on the ground before you light it. Jeez.

Interesting Church

I've walked by one of these little storefront churches that are so plentiful in my neighborhood that intrigued me with the slogan on their sign: "Where People are Equipped for Management and Productivity."

Today I looked up their website, where you can tithe online, email them a prayer request, or buy instructional CD's on topics such as Laziness and (on sale) My Lover Is My Friend ("Re-learn the magic of touching...Is there anything too hard for God?"1).

Anyway, sort of crazy. It reminds me of those "prosperity" oriented megachurches, but even Amwayer.

1 That's what He said.

Friday, April 17, 2009

Two-Way Bike Lane on Prospect Park West

A road diet and bike lane there is a great idea. CB6 knows what's up.

Aaaaand we're done here

Aforementioned C4SS blogger Thomas Knapp's credulity towards the "Tea Party movement" is the final straw.

"Little indication" it was an astroturf job? That's the whole point of the astroturfery, no? That it looks like the roots of real grass? Fortunately we don't have to rely on "indications," as the involvement of right-wing and business interests has been well documented.

Not likely to take on an "explicitly anarchist ideology"? I think you might be on to something there...the transformation of authoritarian right-wing populism into anarchism would be odd indeed.

So I'm done with them. It really gets me, as carrying water for proto-fascists who don't want to pay for public schools is exactly the kind of short-sighted tactical blunder for which Kevin Carson has so frequently excoriated libertarians. I had high hopes for C4SS but at this point they might as well be Reason.

Thursday, April 16, 2009

FeedBurner Considered Dangerous

Robert's RFC for short URL auto-discovery reminded me the other day that FeedBurner could be responsible for the same potential mass link-rot problems as URL shorteners, depending on how aggregators interpret their feeds.

It doesn't seem like RSS has a concept of how to present an item's "real" (I guess canonical) URL, versus the URL of the item within the feed itself. Or if it does then FeedBurner doesn't use it.

For example, the link element in an item from Eschaton's feed contains "http://feedproxy.google.com/~r/blogspot/bRuz/~3/WwfzaA_LDo8/thursday-is-new-jobless-day_16.html" rather than "http://www.eschatonblog.com/2009/04/thursday-is-new-jobless-day_16.html", and (at least in Bloglines and Google Reader, the two aggregators I've used) that first one is the URL that you get when you try to copy the item's address to link to it in a post of your own.

The real URL is there, but it's in the origLink element in the FeedBurner namespace, which apparently not even Google Reader knows to look at. If you're not anal retentive enough to actually follow the proxy URL and resolve the redirect then you'll most likely end up linking to the FeedBurner link that's subject to all the same risks as a shortened URL. FeedBurner, being owned by Google, admittedly looks like a pretty reliable bet at this point, but who knows what the future holds.

The Cats Know What's Up

There's a vacant apartment upstairs, and every time the landlords come in the building to show it Lucy starts growling and both cats scurry away to hide in the bedroom. I am chalking it up to class consciousness.

Wednesday, April 15, 2009

Citizen Kane 3D

Awesome. Not sure if he used successive frames from a dolly shot or cut out different elements and did it "by hand," but the results look really good.

Clowning the Discourse

Myglesias takes issue with Brendan Nyhan's approving link to Bob Somerby's criticism of Rachel Maddow. He has some worthwhile points, but there's a fundamental disconnect at play here in how these different media critics are coming at the show.

I think Nyhan is somewhat of an idealist who believes in and tries to work towards a more elevated public political discourse. Spinsanity really used to drive me nuts (during the 2004 election cycle, I guess it would have been) with how painfully even-handed it could be in the face of all sorts of right-wing vileness. Matt Yglesias is basically himself a pundit, and of course he's going to be pretty cynical about the political media; from that perspective, the existence of Democratic talking points on cable news beats is preferable to its non-existence, end of story.

Somerby is sort of a hybrid, eminently jaded about the state of the discourse, but committed to improving it because he's a true believer who is certain that liberalism will carry the day if things are hashed out in good faith on an even playing field.

Personally, I enjoy Somerby's vitriol but am probably closer to Yglesias on the cynicism scale. Not that the triumph of either of their brands of moderate liberalism is worth propagandizing or discoursing for in the first place.

Friday, April 10, 2009

Who Is This Fellow?

I subscribed to the Center for a Stateless Society feed when they picked up Kevin Carson...I had already wished he'd post more to his personal blog, and didn't want to miss anything. But now they seem to have a new blogger, Thomas Knapp, whose ideology seems much more in line with the vulgar libertarianism Carson has dedicated so much effort railing against.

For example, take this recent litany of standard libertarian canards...Mussolini never made the trains run on time, public schools suck, USPS sucks, &c. It gets my dander up, though I'll refrain from offering a classic point-by-point rebuttal; if I wanted to spend my time rebutting libertarian cant then there are any number of intertubes I could read, but I don't so I don't.

In any case, Kevin Carson seems to be pretty consistent in linking to his C4SS posts from his personal blog, so maybe I'll just stay subscribed to that.

Thursday, April 9, 2009

Ah Neat

I noticed this wall on the way to pick up pet food in Cobble Hill the other day. I had actually been wondering how long they took on it and whether it was approved by the property owner or construction crew.

Tuesday, April 7, 2009

Where'd I Put That Pitchfork Oil?

Digby posts, then follows up with the video, on a CNN segment that comes to the (counterintuitive!) conclusion that toiling away in poverty is actually a pretty good deal when the economy is collapsing, since your life can't possibly get much shittier than it's always been.

Monday, April 6, 2009

The Physics of Balls

I got a sort of demi-spam from some science organization who put on an event that Sarah and I attended last year. I would have ignored it, but it was Mets-related, so I clicked through to view a weird video about the physics of baseball. Science professors and professional athletes are pretty comparable in terms of awkward comedic timing.

Friday, March 27, 2009

The Cost of Efficiency

Kevin Carson has a good post at C4SS laying out how the supposed efficiencies of industrial capitalism actually end up costing consumers. It reminds me of a point Paul Roberts makes in The End of Food, where he cites a study suggesting that, even if you value your own labor at a pretty high wage rate, it's impossible to figure a cost for home canning vegetables that comes anywhere close to what you pay in a grocery store. The markup to cover packaging, advertising, distribution and all the other overhead is something like 400%.

Friday, March 13, 2009

Frustrations With Consumer Capitalism

It always annoys me when I can conceive of a product that I would gladly pay for, but I can't seem to find anyone who makes it.

For example, when my old cell phone died, I wanted to replace it with a similar "bar" (as opposed to flip) model, but with a few more up-to-date features like Bluetooth and support for mp3 ringtones (i.e., only two years out of date instead of six). But such a device did not appear to exist, at least not among the couple dozen of phone models offered by my provider.

Similarly, after I left my favorite winter hat at the opera, I embarked on a months-long, and ongoing, quest to find a replacement in a similar vein. This out-of-stock item is the closest I've found, though the one I lost was this completely non-stretchy wool felt that I really liked.

I've temporarily suspended my search for a basket and metal chainguard that will work on my blue bike.

The latest of these frustrations derives from the idea that I should get a table-top radio so I can listen to Mets games this summer. I had some idea in mind about the kind of radio I'd want, and what I read about this model sounded good at first. Some more investigation left me disappointed, though: the reception is apparently no good, the components are cheap and poorly assembled, and the advertised impressive sound quality is evidently reliant on the kinds of trickery used to make Bose products sound deceptively good.

The Tivoli Model One definitely seems like it's supposed to appeal to people who like the idea of a simple, elegant device that does a limited number of things well. But then instead of actually being such a product, it instead conveys those values through its visual aesthetic, and then relies on cognitive dissonance to convince consumers that they're satisfied with it.

Anyway, I've probably spent too much time on this topic (though not nearly as much time as I've wasted looking for felt caps on the internet), but I do think it's an interesting way that capitalism fails consumers on a pretty regular basis. The markets for many types of products are flooded with virtually indistinguishable offerings that change capriciously in response to fads and trends without ever responding to the needs and desires of sizable minorities of consumers. The result being that large numbers of people are constantly underwhelmed by many of the products in their lives for reasons that should have been easily corrected.

Tuesday, March 10, 2009

Why Oh Why Can't We Have a Better Press Corps?

Heard this on the radio yesterday morning. The Takeaway's correspondent, Todd Zwillich, who reports for an organization called Capitol News Connection, is completely clueless on what card check even is...he's clearly heard the phrase "secret ballot" connected to the debate, so he tosses that out and then bullshits from there.

He seriously sounds like a student who got called on when he hadn't done the reading ("card check...it's all about who checks your card"), ending up getting the Republican and Democratic positions on the issue completely reversed. Hilarious. And nobody corrects him or explains what the debate actually is. Do they even know?

No transcript, but listen to the audio at the link and fast forward to around 7:20.

Thursday, March 5, 2009

Wednesday, March 4, 2009

Pssst

Hey guys. I have a super-secret technique that will guarantee you can pay ABSOLUTELY ZERO income taxes, whether at the federal or state level, 100% LEGALLY. There is no fraud or deception involved, all the paperwork is GUARANTEED LEGIT, and you will pay EXACTLY ZERO DOLLARS in income tax if you follow my instructions. I accept paypal, email me for details today.

Monday, March 2, 2009

Who Let the Dolls Out

I started catching my ass up on Dollhouse, because I'm a dork like that. I am not really up on the reviews, but the ones I've read have been fairly negative, non-committal at best. My impression is that reviewers were expecting a little more of a specific condemnation of the prostitution-like aspects of the Dollhouse business model. Not perceiving it, they conclude that the show condones prostitution, or exploits it for the audience's titillation.

The criticism is partially correct in that, at least so far, Dollhouse has refrained from a portrayal of the sexual exploitation of the "Actives" as uniquely immoral. Which is not to say that their situation is shown as anything other than horrific. But the horror stems from denying them their personalities and memories, with sexual exploitation being merely a facet of their dehumanization: brainwashing someone into a willing assassin is as violent an act as brainwashing her into a prostitute. Viewers and reviewers who want the sexual abuse identified as especially heinous violations are missing the point.

This is a theme that Joss had begun exploring in the final televised season of Buffy, where the expectations of the duties of the Slayer, imposed from without upon a young woman without her consent, echo the expectations society has for all women from the day they are born. Dollhouse extends the (uncontroversial) theme of women's ownership of their own bodies along the lines of feminism's broader critique of capitalism, with the idea that all humans should have a right to their own minds as well.

Flashbacks have hinted that Echo, at least, began working for Dollhouse willingly, though doubtless with the understanding that she had no other viable options given her circumstances (still unknown). The horror of her employment's reality makes clear that such a selling of one's soul is illegitimate in its essence, and does violence to the subject's humanity.

Others participating in Echo's dehumanization are tainted and dehumanized as well, as demonstrated by the head of security's obvious contempt for the Actives. Even a sympathetic character, like Echo's Watcherhandler Langton, is faced with the impossible choice of either abandoning his charge to a potentially less caring successor or staying to lend legitimacy to the enterprise. In this way capitalism sorts everyone into those who are irrelevant and those who are complicit, the only other option being (going out on a limb here in a prediction for where the narrative's headed) to bring down the system itself.

Anyway, I expect that reviewers who find themselves turned off by the value system implied by Dollhouse are picking up on two quite real themes: an absence of any specific objection to sexual prostitution in the context of more general and horrifying violence, and tension resulting from trying to square feminist-humanist values with the inhuman excesses of capitalism. A reviewer operating from a worldview in which sexual violence is uniquely vile, not because of its denial of humanity, but because of its power to sully and impart shame on its victims; and in which capitalism is a force of individual freedom rather than its enemy; is going to be understandably disconcerted by a narrative that does not share or opposes those values.