1. So the Internet is a great thing, no denying. Love it.

    And, SOPA and PIPA are shitty laws being pushed by shitty people who think their dying business model is more important than the freedom of everyone else, and these laws need to be strangled in the crib. Granted.

    But yeah, so it took someone trying to take away your YouTube/business model/cat pictures for you to stand up and act? You know there are more important issues right now, that are hiding comfortably behind the American public’s ignorance and apathy.

    I’ll be glad if our representatives hear our collective, massive AHEM on this issue, and back off on this legislation. It means our voice works in the goddamn democratic system.

    Why don’t we use it, then?

  2. Don't Be Evil* →

    parislemon:

    *except if evilness is good for business.

    The basics: Google, by way of their Getting Kenyan Business Online initiative, stole customers (and data) from rival Mocality. 

    Mocality uncovered as much in a clever sting operation, not unlike the one Google itself used to catch Bing “borrowing” search results last year. 

    What a fucked up situation. Google has fessed up to it, but is distancing themselves — “a team of people working on a Google project” sure is a funny way of saying “Google employees”. Not good. 

  3. Your Military At Work

    Received this weekend:

    From: "Shean, Jake D SFC MIL USA USARPAC" <jake.shean@us.army.mil>
    Subject: WOD Feedback
    To: "feedback@wodapp.com" <feedback@wodapp.com>
    
    Name: jake shean’s iPhone
    
    What a waist money! It won't load the workout of the day and that's
    the name of the app! You should feel shame for stealing money!
    Part number two of the crook app this is, is that you aren't even
    cross fit inc. No wonder why you can't rate this app. You suck!
    
    Sent from my iPhone
    

    I’m only guessing, but I think the above email illustrates why this gentleman is more suited for a career in firing a gun at brown people than anything else.

  4. Varying Outcomes and Experiences of Getting a Price Quote for a Car Online

    The Volkswagen Golf R is going to be released soon. It’s a car I’ve wanted for a few years, ever since the R32 went out of production and the rumors of a replacement based on the MK6 Golf platform started coming out.

    It’s a pricy car, and might be beyond my reach right now. That didn’t stop me from going online to try getting dealer quotes, though. In the end, it showed a remarkable variability of competency (even though no dealer contacted seemed to have even average competency with computers and the Internet) and greed.

    The car I wanted a quote on was the two-door model, manual transmission (which is the only transmission available, it seems), without the extra sunroof and navigation package. The MSRP of this car is $34,760, including destination charge.

    Here’s the current roundup:

    • Santa Cruz Volkswagen offered one with sunroof and navigation, in a color not in my top two choices, for $36,260 (which reflects MSRP). A number of words were misspelled in the reply, and an email reply requesting more information got no further response.

    • Capitol Volkswagen offered the car for $5000 more than MSRP, or $39,760. Email replies calling this out as bullshit provoked butthurt responses claiming demand exceeded supply (even for cars ordered custom? Hmm), finally ending with a survey email congratulating me on my purchase elsewhere.

    • Steven’s Creek Volkswagen quoted MSRP exactly, after a couple of follow-ups asking for my preferences in the car. They did mention that the car would need to be ordered.

    • Sunnyvale Volkswagen came back with response, which I think was automated, that quoted the price for a normal Golf.

    I’m curious why auto dealerships seem so firmly stuck in the dark ages, as far as computing and the Internet goes. I suppose it’s the automakers that mandate the shitty CMS systems that all dealers use. Or that they mandate that CMS as the bare minimum a dealer must support, and no dealer is savvy enough to put together anything better. I await eagerly the future wherein I can just search inventory for the exact car I want, and the price I want, or even just order the damn car online and have it built and shipped where I please.

    The auto industry seems ripe for a disruption of this middleman bullshit.

  5. nevver:

Iconic Scenes, Revisited and Reimagined

    nevver:

    Iconic Scenes, Revisited and Reimagined

  6. Resolutions for 2012

    • See more live music; small shows local to Santa Cruz.
    • Buy more things locally.
    • Get back into CrossFit, at least 1x a week.
    • Brew beer.
    • Pave a new driveway at my house, and do as much of it myself as I can.
    • Write more (here and there).
    • Read more (a book per month at least).

  7. Where Did Node Go Wrong?

    And, did it?

    My opinion is that node.js isn’t the kind of thing I should be using for the work I am currently doing, mainly because I don’t think it’s mature enough, and because it’s simply too difficult to use in real-world problems and gain the efficiency it claims.

    (I’m even talking about it here because there is a misguided push where I work to ship production code on top of node.js. So I have a vested interest in explaining, in detail, why I think this is a bad idea, because I actually would rather babysit a bunch of Java code instead of this abomination.)

    Anyway, where did the fanciful notions of efficiency in node.js come from? Let’s go take a look.

    So, we nerds remember back in the day this website called Slashdot. For the children just joining us, it was kind of like Reddit: there would be a story or a link, a bunch of comments under that, and a swarming horde of nerds at their computers clicking on the links posted there. Generally, for your average gee-whiz I put up a website website, the huge amount of traffic this link generated would crash the web server. We called this “slashdotting,” as in, “my site got slashdotted!” There’s variations of this nowadays, when someone links to a WordPress site or to a Tumblr: “fireballed,” “reddited”.

    So people have been consumed with the problem of serving thousands and thousands of connections over the network, most prominently on port 80 and serving HTTP traffic. Dan Kegel maintains an excellent web page that explains the problem, the C10K problem, and the various ways of handling it. In particular, anyone who’s interested in this topic likely has read that page, as well as this wonderful slide deck that presents the issue well.

    The tl;dr of that? If you want to scale to 10,000 or more clients, your server can’t use a thread or a process per connection, because it just doesn’t scale (not even on Linux, which is kind of astonishingly good in all the benchmarks). You’re better off using an API that tells you when there is activity on a socket and non-blocking I/O in a single, or in a handful, of threads.

    I’m not certain of the timelines here, but people have taken this advice to heart, and have written servers that use an async I/O notification system to handle clients, instead of giving Apache more and more RAM. I remember seeing thttpd as a cute, simple example of the idea. Today we have some pretty sophisticated servers executing this idea. Generally, these servers can beat Apache at serving large numbers of clients.

    So, nonblocking, asynchronous I/O is a good idea, and has been proven.

    The idea then, is: if we wrap a fast JavaScript interpreter (and yes, nobody is arguing that V8 isn’t a state-of-the-art piece of software) around an event loop that uses a scalable I/O polling mechanism, we can write very-high-performance socket servers in JavaScript!

    Well, it kind of works. The toy servers that node people have written and benchmarked do go fast, and they don’t take a whole lot of code, but they’re also trivial. Here’s the key point, in case it hasn’t sunk in yet: node, by virtue of using asynchronous I/O in an event loop, does not equate to an efficient platform for all uses.

    Yes, you know what? Writing a non-trivial, highly scalable server in node is just as hard as it is in any other language! Even more so, in my opinion, because its callback hell makes code that much harder to understand and maintain.

    Maybe I’m wrong, and that this is the new paradigm, and people will write some kick-ass servers in it. I might just be too old and set in my stubborn ways. But I’ll still stick with anonymous nested interface implementations over callback spaghetti, thank you very much.

    (Also, one final aside. I’ll start having better confidence in node once its users start speaking like adults. I gave up on a project after reading this in the fucking README:

    Think this is sexy?

    Contacts.all({httpAuth: base64("coolaj86:secret"}).limit(30).render();
    // all - makes request to two servers to get contacts
    // limit - takes the first 30 contacts
    // render - some function to render the contacts
    

    So do the ladies. Now read up on the API.

    I miss Slashdot sometimes. Not a lot, though.)

  8. Tumblr reactivated

  9. Die in a fire, Tumblr

    Hosting my own wordpress blog again: http://metastatic.org/text/Concern/

    PS Eat a billion dicks.

  10. Working on something. I like it a lot.

    Working on something. I like it a lot.

  11. Note

    A couple of trends have been going on for a while now, both of which need to stop, because they suck:

    1. Minimalist, retro-70’s movie posters for contemporary movies. E.g.

    2. Minimalist posters of various concepts, people, etc. E.g.

    Stop that. Stop that right now.

  12. Ben the Bodyguard →

    Really well done teaser site.

  13. The MacBook Air is Full of Win

    I ordered a new MacBook Air soon after it was released, and have been using it exclusively since it arrived, on the first of November. I took the plunge because it was, with a couple of upgrades, identical in spec to my previous laptop, one of the first unibody MacBook Pros. As far as RAM, screen resolution, CPU speed, and internal storage went, the MacBook Air was on par. It did away with ports I never used and an optical drive I rarely used, but added solid-state internal storage and legendary battery life.

    Using it for nearly a month has largely confirmed for me: this is the best laptop I’ve ever owned, and laptops like this are where the portable computer market should go if it wants to succeed.

    This is what I really like about the Air:

    • As I mentioned, the legendary battery life. This wasn’t something I thought I’d ever care about, but working in coffee shops, where the nearest outlet might be in use or just too far away, really made me appreciate it. I mean, now, I can go an entire session at a coffee shop (usually, something like two to four hours, depending) and never have to plug in.

    • It doesn’t get all that hot. My old laptop would, just in normal use, get very hot and it would be uncomfortable to work with on my lap. I almost didn’t notice this change, but there I am, reclined back and working and not even paying attention to the device I’ve got in my lap.

    • It’s very light. This feeds doubly into the benefits of the previous point.

    • It’s, well, intimate. The screen is significantly smaller than the one on the Pro, but has the same resolution. The result is that I can see everything I used to see, but it’s more compact. I think this smaller, more detailed screen makes the most sense when the screen is arm’s length away. Also, when I look at the screen on my Pro, it surprises me how comically large everything looks. Having an iPhone 4 hasn’t helped in this regard, since I more than ever don’t want to perceive a pixel ever again.

    Overall this computer has surpassed my expectations, simply because of these tiny improvements that I didn’t know would be important when I ordered it. I doubt I’m measurably more productive when I’m using it, but honestly, with this I can work and start to not pay attention to the tools I’m using. This is significant.

  14. Relaxing dog is relaxing.

    Relaxing dog is relaxing.