politics
  2014-08-14 16:47 Z

This week I had a great experience with charitable giving thanks to Donors Choose, a charity that gives money through to teachers for classroom needs. Right now is a good time to give with school starting soon. And the way Donors Choose works feels personally meaningful.

The site lets you browse projects that need funding: $115 for classroom organizers for a kindergarten in Louisiana, $70 for planters and seeds for a garden in Oklahoma, $1300 for iPads in Washington DC, or heartbreakingly $239 for fans for kids in juvie without fresh air. The requests vary widely and the schools are all over the US; you can choose what speaks to you most. Or just give some money and let the organization figure out where to send it.

I ended up spending several hours choosing projects a few bucks at a time. I used the map view to focus on poor, rural areas where the parents weren’t going to be able to raise money with a bake sale. Mostly places I had some connection to, rural Texas and New Mexico near where I used to live. Places I used to drive through thinking “thank God I didn’t grow up here, I’d be stuck”. I don’t know that a copy of The Maze Runner is going to make all the difference to help a kid in Gallup, NM access the wider world around him, but if a Teach for America teacher thinks it’d help then that’s probably a good use of $7.

One of the sad but inspirational things I learned looking through the site is that the teachers themselves are often donating. As if taking an oath of poverty to become a teacher isn’t enough. If you’re in an industry that pays well, consider chipping in a few bucks as thanks for whatever teacher gave you the education to get you where you are today.

life
  2014-08-06 16:39 Z

Riot’s hugely popular game League of Legends is still installing malware, some five months after saying they don't use it, players can delete it, and they planned to remove it.

The malware in question is Pando Media Booster. A few years ago this software was arguably useful, it allowed games like LoL to distribute patches via a peer-to-peer network. But Pando was discontinued in August 2013. Then in February 2014 someone used Pando to install malware on any suckers who still had the software. The software Riot is still distributing. And all of Riot’s customers who clicked “yes” on the update dialog had their browsers hijacked.

Riot has millions of users all over the world. I’m sympathetic to how hard it is to make software changes; they’re famously behind on a whole lot of development projects. But continuing to distribute malware to customers is unacceptable.

Update: a Riot employee said on Reddit that the problem was "the amount of work it takes to hand update new installers for every language" and offered the idea that the previous Pando owners might help them prevent the malware. That was five months ago.
techbad
  2014-08-02 18:03 Z

A movie totally worth watching: Around the World by Zeppelin, a semi-documentary of a multi-week 1929 zeppelin flight. Originally a Dutch production titled “Farewell”, the BBC Channel 4 version in English (and on Youtube) is just terrific.

What makes the film so marvelous is how much primary film footage they were able to use. The multi-week journal was a press event (funded by William Randolph Hearst) so most of the passengers on board were journalists. Including at least two film cameras. Really amazing to see all this vintage aviation, engineering, and socializing. Another thing that makes the film terrific is the storytelling, drawing most of its narrative from diaries kept by Lady Grace Drummond-Hay. She was a journalist with a fairly sharp eye and pen and her story makes for a nice structure for the trip. Beware the film is partly fiction; some of the events depicted (like an unlikely mid-Pacific repair) did not actually happen.

The story itself is just amazing, the history of airships. The Graf Zeppelin comes from a parallel Earth, a time when elegant dirigibles sailed the skies like cruise ships and navy aircraft carriers were airborne. This actually happened, lovely to see it play out in a film. The Graf Zeppelin company succeeded in operating a passenger service for a few years before improving airplane technology and the looming war made airship success unlikely. Not to mention the Hindenburg disaster.

There still is a German company operating zeppelins. I flew in the Airship Ventures craft a couple of years ago in the Bay Area, but sadly that company didn’t make it.

aviation
  2014-07-11 00:06 Z

I love the phrase between the thought and the act. It summarizes a slightly mystical experience of humanity, the difference between willing to do something and actually doing it. It comes up in all sorts of contexts. In twitch games it explains the value of better UI for allowing the player to do what they intend (as in League of Legends quick casting). In general human affairs it describes being effective. You may think of a great product idea but ideas alone are worthless; it’s the implementation that has value. The phrase also has a second meaning it ethics, the difference between thinking of doing something vs. actually doing it.

I think the best known use of this phrase is slightly different, coming from TS Eliot’s The Hollow Men.

Between the idea
And the reality
Between the motion
And the act
Falls the Shadow

I don’t like the use of “motion” though, since in so many cases the motion is the act.

The earliest use of the phrase “between the thought and the act” I could find occurs a few years before the Eliot poem, on page 242 of the 1917 book Educational Psychology by Kate Gordon. I have no idea if that book had much reach though. I wonder if the phrase comes from an older idea, maybe Greek philosophy?

Every time I think of the phrase, I hear the Crime & The City Solution song The Adversary.

Update: Douwe tells me of the 1910 Dutch poem Het Huwelijk by Belgian poet Willem Elsschot (English translation), which contains the phrase "tussen droom en daad", roughly the same meaning.

Update 2: my old gamer buddy Hronk wrote to tell me that this concept shows up in Shakespeare's Julius Caesar, Act 2 Scene 1, Brutus reflecting on the turmoil of making a decision.
Since Cassius first did whet me against Caesar,
I have not slept.
Between the acting of a dreadful thing
And the first motion, all the interim is
Like a phantasma, or a hideous dream
culture
  2014-07-02 22:57 Z

My tweet last night “Node.js is the MongoDB of programming languages” got enough response I feel I need to explain it a bit. It’s an awfully snarky thing to say, but it has some truth.

MongoDB used to be the cool kids’ database. It’s appealing when you start using it: good docs, easy to get going, a plausible story on performance. NoSQL is exciting and MongoDB is an easy NoSQL system to try. But then people started looking closer and finding all the ways it broke and now MongoDB is out of favor, at least for serious production servers.

Node.js is now the cool kids programming language. It’s appealing; good docs, clean slate of libraries and tools, fast VM, and a plausible attempt at server performance. Non-blocking systems are exciting and Javascript closures make continuation programming easy. But now people are looking closer and finding all the ways Node.js is awkward or brittle and one starts to wonder.

I’m not saying Node.js is bad. There’s a lot of good in it, I particularly like that it’s made non-blocking programming more accessible than Python or Java or Nginx has. Mostly I’m just mocking the fashion of the month. It is a shame that people are rushing to this Brand New Thing without knowing the history and potential pitfalls. Just like we learned with MongoDB that ACID is hard, Node users are now discovering that reasoning about continuations is hard and memory management with closures is tricky, not to mention unwinding the stack on errors. The Node community is hard at work on improving things, hopefully that development process will lead somewhere productive.

For a more hilarious view on MongoDB and Node.js see Mongo DB Is Web Scale and Node.js is Bad Ass Rock Star Tech.

tech
  2014-06-18 16:40 Z

Just finished another game visualization project, graphs of stats for the top 5000 BF4 players. It makes scatterplots for the player population of statistics like skill score vs time played, win/loss ratio vs. skill, and kill/death vs. win/loss. Lots of details in this Reddit post.

Another fun D3 project; scrape a bunch of data, cook it into a 2 megabyte CSV file, then do custom visualizations. I like the way the scatterplot came out and may re-mix it as a generic data exploration tool, a sort of GGobi lite in your web browser. Drop a CSV file into your browser window and get a simple tool for exploring it for correlations.

It’s frustrating trying to get attention for projects like this. All I know to do is post it to the relevant subreddit and hope for the up-votes, but that’s pretty random. My Reddit attempt for the LoL lag tool failed, and a site I worked about 50 hours on has had a total of a few hundred visitors after a week. Discouraging.

culturegames
  2014-06-16 18:12 Z

I had no idea Microsoft’s Bing Ads included an option to import from Google AdWords. Complete with simple OAuth-like authentication and seamless data import. It’s been able to do that for at least a couple of years, I only learned about it today when setting up a Bing campaign.

Warms my heart to think my AdWords API project helped enable some data portability for Google customers. That’s essential to having a competitive market. Google AdWords is nearly a monopoly, so much so I’m surprised there’s not more anti-trust interest in Google’s ad business. Allowing customers to bring their data to competitors is a valuable step in staying honest and legal.

The drawback is Bing’s ads have to mirror Google’s crazily complex data model. (Quick, what’s an AdGroup, and how is it different from a Campaign or a Creative?) I also recently set up my first AdWords campaign in years and the frontend product is really complicated and confusing. It’s been nearly ten years since I worked on the AdWords advertiser UI, I was sad to see that it hadn’t gotten any simpler or clearer for advertisers.

tech
  2014-06-10 16:04 Z

I just released Logs of Lag, a small project I’ve been working on. It’s a netlog analyzer for the game League of Legends. You drop a log file from the game on it and the tool gives you a nice report. Not a huge thing, but it’s been useful to me already.

The webapp is another of my line of client-heavy programs. It all runs in static files, no server needed at all, the parsing and rendering is all done in the browser. I really like this style of programming, it’s fun and interactive and easy to scale. I did end up making a simple CGI server for storing log files so that people could share reports with friends. I may yet rewrite that to just use S3 as a filestore and bypass my server entirely.

The code is on GitHub.

culturegames
  2014-06-09 17:23 Z

There’s a new history of Perl making the rounds now that’s worth reading, if nothing else then for the dissonance of reading a whole thing written about Perl in the past tense. It reminded me of a bet my friend Marc and I made back in 1999 or so.

Marc and Nelson will agree that Python has more mindshare than Perl on May 1, 2004. If so, Nelson gets the contents of this envelope. If not, Marc does.

In 2004 I conceded he won the bet, based on this evidence of Google search result counts:

Perl: 28M. Python: 14M
Perl filetype:pl: 2.9M. Python filetype:py 0.2M

I don't think anyone would argue that Perl is still more popular than Python in 2014. I looked at those measures again today, but given how goofy Google’s results count can be I don’t put too much stock in this:

Perl: 28M. Python: 45M
Perl filetype:pl: 11M. Python filetype:py 2.9M

I wish I'd taken up his 2004 follow-on bet: Groovy vs Python. Oops. Meanwhile we both missed the language right under our noses, Javascript. Mostly I’m just grateful Java is on the way out. If it weren’t for all the work put into JVM efficiency I think it’d be entirely dead now.

tech
  2014-06-09 16:00 Z