roller coaster markets

Yesterday Ryan posted about the dread he feels at the prospect of one day having to take his daughter to an amusement park.

Specifically, I’m dreading the queues. Endless, winding queues, lasting hours, all to ride a roller coaster for two minutes.

He proposes the creation of a market for individual rides — whether through actual pricing or some sort of scrip — which would help shorten lines and, hopefully, do a better job of letting customers use the attractions they value most.

I don’t like this idea! I am a roller coaster enthusiast — though each visit to a theme park makes it clearer that adult bodies are physiologically unsuited for such entertainments — and I would hate to have to participate in a market for rides. I’m sure it would lead to more efficient outcomes in a narrow sense. But the increasing body of literature around the power of “free” as a price point indicates why this would still be a drag: freedom from calculation, judgment and decision-making has utility all its own. This would be no kind of way to run a society, but for entertainment it often makes a lot of sense to excuse people from the burden of weighing pros and cons. Folks really like all-you-can-eat buffets, even if they have to pay a little more. Besides, nobody wants to take their kid to the park and be asked why the rich families don’t have to wait in line.

Fortunately, I think technology can save us (surprise!). Disney’s got something called FASTPASS that lets park visitors claim an electronic reservation for a ride, then wander around the park until the appointed time. Limits on the each customers’ number of simultaneously-held reservations are enforced to prevent opportunistic oversubscription, and dynamic displays showing the expected wait times help regulate demand across the park’s attractions. You spend much less time in line listening to the loud, looping and probably-broken pre-ride video presentation, and the park has successfully put you back into the market for games, concessions and other add-ons. Everyone wins! Plus, with the ubiquity of mobile phones, the up-front cost to implementing such a system is driven way, way down — all you need to do is hand out some ziploc bags to make the system log flume-compatible.

So there. I think these systems will proliferate, solve Ryan’s worry, AND still provide enough interesting data for an econ paper or two. I think everyone can get excited about that.

Twitter and DMCA notices

Here, read this.  The author got his tweet removed via a DMCA takedown notice that read like this:

jp917, Apr 22 03:10 pm (PDT):
Hello,
The following material has been removed from your account in response to a DMCA take-down notice:
Tweet: http://twitter.com/jp917/statuses/12499491144 – New Post: Leaked: The National – High Violet http://jpsblog.net/2010/04/20/leaked-the-national-high-violet/

As he points out, this didn’t actually point to any copyright-violating files.  The link just discusses the leak.

I don’t think this is deliberate suppression of the discussion of piracy.  What I think is probably happening is this:

  1. Copyright-holding Corporation A pays Technical Vendor B to monitor Twitter for leaked albums. They can do this cheaply by creating an automated process that looks for band names and the word “leaked”, or through some other simple heuristic.
  2. Matching results are turned into DMCA takedown notices with a minimum (or no?) human intervention.
  3. Twitter receives the notices, removes the user’s content and notifies the user with a minimum (or no?) human intervention.

The user is then free to make a counterclaim!  Unfortunately, there is not a button or script for that.  Before long he or she will have to pick up the phone, find a lawyer, and pay that lawyer to fight on their behalf.

This is flatly unacceptable.  The need for a DMCA-style simplification of the takedown process is understandable, but this level of automation of the process should not be tolerated.  As currently structured, it’s a surefire recipe for Type I errors.  We’ve known this about the DMCA takedown process all along, of course, but this really brings it into stark relief — there’s a huge power asymmetry introduced by the DMCA, so much so that the rights-holders it empowers can’t even be bothered to follow a link and read a paragraph.  Why would they?  There’s no incentive for them to.

There ought to be substantial sanctions — payable to the counterclaimant — that can be recovered when copyright holders suppress legal content through spurious claims.  Let’s get some of those much-maligned trial lawyers up in here.

welding!

My colleague Kerry assures me that I am insufferable when I talk about the interesting things I do in an increasingly desperate attempt to forestall… well, whatever [INSERT SUBJECT OF EXISTENTIAL DREAD HERE].

Still, with apologies, I will persist.  First, though: Emily tells me that research indicates that the utilitarian return on investment is better for experiential purchases — things like classes — than anything else.  I believe this!  I’ve been on kind of a class-taking kick lately: surfing, trapeze, microcontroller-programming and now welding.  It’s working out so far. Take some classes!

But okay, welding.  I’m taking a class at the Art League.  It’s very affordable, but apparently in high demand.  The subject is oxy-acetylene welding — there are opportunities to learn to use MIG and arc welding setups, but the focus is gas welding, which is both easier and less dangerous than those alternatives.

Welding is neat.  In the past, I’ve done quite a bit of soldering, a process in which a low-melting alloy is used to make electrical connections.  This background proved to be both helpful and confusing.

It was helpful when cutting metal.  This is probably the coolest thing I’ve done in the class — it’s a very different operation from welding.  The oxy-acetylene flame is used to heat the steel to a yellow-hot state, at which point you press a lever on the apparatus that projects a jet of pure oxygen onto the heated spot.  The steel then serves as the fuel, sending sparks everywhere.  The oxygen both fuels the reaction and physically pushes the molten steel away.  It’s an interesting trick, playing with metal right at the edge of liquefaction, trying to melt some but not too much of the metal in order to blow away an optimally precise slice of steel.  Soldering electrical components can definitely convey an understanding of how metal melts and flows.  I was pretty good at cutting right from the start.

I sucked at welding.  You learn to be tentative when soldering: you do have to work quickly, before the flux burns off, but in general you learn to be careful about applying heat.  Too much and you’ll burn the component; better to back off and resolder, if necessary.  This isn’t the case with welding. You need a lot of heat, and to patiently wait as the structure of the piece begins to collapse, forming an entirely new and unified hunk of metal.  It’s unnerving to watch this happen.

It gets even worse when you start to incorporate a feeder rod.  I’m assured that this makes for a stronger (abeit less attractive) weld than working without one, but it sure is frustrating.  When you feed solder into a joint, it dissolves, flows, incorporates.  The feeder rod really wants to stick.  Gently rocking it back and forth sort of works — I can see how this will eventually make sense — but it feels pretty unnatural.  Particularly given that your other hand is manipulating an insanely powerful jet of superheated gas.

Anyway!  Below is some evidence of my efforts at cutting, and my first and second weld (each of which is half with-rod and half without).  It’s all quite fascinating, I’m sure.

unpopular opinions about popular music

Now it can be said:

  • Those of you who enjoyed the new Titus Andronicus record — which should be all of you, as it’s really good — would do well to reconsider the Bright Eyes records Digital Ash in a Digital Urn and I’m Wide Awake It’s Morning (and maybe the rest of the oeuvre; I couldn’t say). At the time of their release, I can’t recall any friends saying anything even vaguely nice about these albums, with two exceptions: 1) Lindsay expressed delight at the phrase “hoodie-clad trim”, which I suppose doesn’t really count, and b) Susan agreed with me that they were good and hey maybe all this NEXT DYLAN BUSINESS was maybe not so crazy, potentially? No: probably it was crazy! But pause for a moment and consider that, statistically speaking, Susan is almost certainly both smarter AND deadlier than you. Then reflect on whether you have given Conor Oberst a fair shake or whether you have discriminated against him just because he has so many feelings. Or because he was overhyped, or because his fanbase uses strange social networking sites that confuse and terrify you.Get past that. They’re good albums, is what I’m trying to say, with timbre, cadence and emotional content similar to the Titus album. Worth a shot.
  • On Monday I listened, for the first time in at least half a decade, to the high points of the first big-hit Everclear LP. You know what? It holds up. This was not actually a surprise to me: I have been an apologist for Sparkle & Fade and So Much For the Afterglow for years now (the other albums: emphatically not). What was surprising: this is an alt-country album! Sort of, anyway. The guitar work is a bit too clean, and there’s nobody playing pedal steel while chain-smoking. But try listening to the phrasing of the songs on S&E with the words “Son Volt” in your mind; I think you might be surprised. And anyway albums about heroin always tend to punch above their weight. Reconsider.

crunk for a cause

Alright, enough hectoring.  Better news!  Tomorrow we’re having a fundraiser for work, and I hope you’ll consider coming.  It’s at Tabaq, it’s $20, there’s an hour-long open bar, there’ll be a raffle for various exciting prizes (coffeemaker! kindle! other stuff!), and the band that’ll be playing is actually pretty good (also, preposterously/awesomely, their guitar player is named Lisa Simpson).  You should come!

briefly, more aggrieved cyclist blogging

Sorry, I can’t help it. I’ll be quick:

  • As she reported on Twitter, Emily got clipped by a car pulling out of a parking space this morning as she cycled in the bike lane, slowly, in Philadelphia (she’s fine).  A cop who saw the incident advised her to “follow the rules” to avoid this sort of situation (she had been).  It’s not always apparent, but there really is something pathological about the way we’re viewed by non-bikers.
  • Less distressingly, a tip and request for motorists: I appreciate the sentiment, but you’re not actually doing me any favors by yielding to me in situations where you have the right of way — like, say, when the light has just changed and I’m trying to make a left.  It’s good to know your intentions, but I still have to assume the worst about every other driver’s plans — like those of the inattentive guy in the lane next to you.  By waving me through you’re basically asking me to either make an assumption about those other guys’ behavior and put myself at risk, or to inconvenience you by ignoring your generous offer to yield.  I don’t really want to do either.  Just treat me like a car the way the law tells you to.  But thank you for not deliberately trying to kill me!

be reasonable

I hate being a NIMBY. The truth about city life is that it’s crowded. Not unpleasantly so, not most of the time, but you’re going to find yourself around a lot of your fellow men, and sometimes they’ll get in your way and sometimes you’ll get in theirs. It’s your responsibility to try to hold your tongue in the case of the former and count on your obliviousness to the latter to even everything out. If everyone threw a fit about every inconvenience they had to suffer, none of us could enjoy the things that are great about living together.

But I think the disruptions accompanying the nuclear disarmament summit at the convention center go a bit beyond the normal give and take of city life. I hasten to add that I haven’t suffered much personal inconvenience — walking a few extra blocks on Sunday evening has been about the worst of it. My discomfort is more about how the event feels than what it’s done to me, and maybe that means my objections should be ignored. But it’s disturbing to see the streets barricaded, to feel suspicious eyes on you as you walk from the grocery story and past an idling Humvee. I don’t like that the folks living in the apartments on the same block as the convention center are being physically searched before being allowed into their homes. I don’t like that businesses in the area have had to shut down for the duration of the summit.

And it’s hard for me to really see the case for hosting this event. DC has a lot of non-negotiable obligations to the federal government, many of them understandable. But the convention center? It’s still a business, right? They could have said no, right? That they’re sorry, but they can’t handle the security requirements; that the economic boost that a convention is supposed to bring would, in this case, be swamped by the disruptions that would ripple across the city; that the city’s facilities exist for its residents, and the proposal on the table asked them to make sacrifices without receiving comparable benefits.

Maybe they could have said this, but I think they probably didn’t. And now a commuter has died what sounds like a truly horrific death because of the decision to try to protect and accommodate the world’s most important people in the middle of a working city.

I’m sorry to be upset by this, because I know this city is filled with suffering that I easily shrug off. It’s stupid that I feel angry just because she and I got to work the same way.

But I am angry. Because people online are blaming the victim. Because the security equipment used to protect our leaders has continued to grow even as the threats they face have withered. Mostly because it could easily have been me, or someone I know.

I know it’s the federal city. We will grit our teeth and mostly go along, thinking little of pausing for the daily motorcades down Connecticut, contenting ourselves with grumbling half-heartedly about a commuter tax from time to time.

But now that the planners’ ever-escalating 24 fetishization has shown its deadly potential, it needs to be put in check. Military vehicles do not belong within city limits. I’m all for nuclear disarmament, but I hope federal officials take their next high-risk party to a more appropriate location. I intend to insist that city leaders do what they can to make that happen.

an early AVR victory

For the past few Sundays I’ve been heading over to HacDC for some intro-to-AVR classes run by Nikolas C. It’s something I’ve wanted to learn for a while. Yesterday I actually got the toolchain working and managed to reprogram the Game of Life doohickey that Kriston and I built to do something of my own design. Not anything as cool as the GoL code, admittedly, but still: it’s a start. Now the door’s open.

The AVR is a particular brand of microcontroller (“uCs” for short) — the same one that powers the Arduino, in fact. I should maybe explain what that means. Microcontrollers aren’t very useful by themselves. They need power supplies, things to interact with, and sometimes some supporting components to protect the relatively delicate chip. The Arduino platform adds a bunch of commonly-used circuitry around an AVR chip. It also provides a software environment — both on the chip and on the computer you use to write code — that’s easier to work with than vanilla AVR code. With Arduino you don’t have to worry about binary arithmetic or anything like that — the metaphors in use are similar to the ones employed when programming a full-sized computer system. The software environment abstracts that stuff away. It makes for a much less daunting experience, particularly for those who have taken an introductory CS class.

As you might expect, Arduino has to make some sacrifices to achieve this ease of use. The AVR has some interesting features that aren’t exposed, or aren’t fully exposed, by the Arduino environment. Things like interrupts (a useful way to increase the responsiveness of your application and avoid messy loop structures), variable clock speeds (a good way to save power) and sleep modes (another good way to save power) are more easily worked with through direct manipulation of the AVR. Plus there’s the fact that, for many applications, an Arduino is overkill. It’s physically larger, it has circuitry for features you may not be using, and it costs $15 bucks or so, instead of as little as a dollar or two for an AVR.

The AVR/Arduino system is actually a great example of the power of abstraction: not only does Arduino make AVR development easier, but AVR taken by itself also represented something of a landmark in the simplification of microcontroller development. That’s because you can write programs for the AVR in C, instead of the inscrutable assembly code demanded by most other architectures (the PIC family of uC is also popular with hobbyists because it let them program in a flavor of BASIC — but AVR is supplanting it).

Of course, to a scripting language-oriented CS fraud such as myself, programming in C is still daunting. I haven’t really worked with compiled languages since college, and I certainly wasn’t any good at them — there’s a threshold of understanding that I didn’t cross until years after graduation; I’m still years away from the sophistication on these matters that people like Alex and Tim possess.

But even they would probably find AVR programming to be a bit bizarre. It mostly involves the manipulation of the specific bits located in specific places in memory. There are helpful macros for this stuff exposed by avr-libc, but figuring them out still involves trudging through novel-length PDFs. And since there’s obviously no monitor attached to the chip, debugging presents some unique challenges.

My advice to anyone starting down this path would be to find a class, like I did. Having someone who can supply you with a working Makefile counts for a hell of a lot.

For those curious, here’s what my code looks like:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <avr/io.h>
#include <util/delay.h>
#include <inttypes.h>

// convenience function
int min(uint8_t a, uint8_t b)
{
    return (a<b) ? a : b;
}

int main() {
  DDRB = 0xff; // set data direction on Port B to OUTPUT
  DDRD = 0xff; // set data direction on Port D to OUTPUT
 
  // x goes from 0 to 15, then loops. the same number of LEDs is illuminated (connected to ports B & D)
  uint8_t x = 0;
  while(1)
  {
      x = (x + 1) % 16;

      int y;

      // turn off all LEDs on port B
      PORTB = 0x0;
      for(y=0;y<min(8,x);y++)
      {
          // LEDs are turned on by setting a bit of the port register/byte to 1
          // the _BV() macro returns a byte with a single bit in the specified position turned to 1
          PORTB |= _BV(y);
      }
     
      // do the same thing, but with port D, and with the top half of the 0..15 range
      PORTD = 0x0;
      for(y=8;y<=x;y++)
      {
          PORTD |= _BV(y-8);
      }

      // wait 100 milliseconds
      _delay_ms(100);
  }
 
  return 0;
}