So, this isn’t a place that’s updated much anymore, but because I wanted it to be something public, I’m copying here the body of an email I’ve just sent to

If you read the below message, I’m sure you’ll see why, but I’ll make one takeaway abundantly clear: do not give money to OLL/NaNoWriMo.

From: Ian McEwen <>
Subject: Congratulations on finishing your work destroying a region

Before you read this email, please dig through your archives, if you're
organized enough to keep them, and find my email from last year. Reread

You did *nothing* in response to those problems last year. Me and the
others who emailed you reported an ML who stopped even telling her co-ML
when she was making decisions; actively insulted and denigrated
participants, including the previous ML; and hijacked write-ins so that
they were impossible to use for writing.

This year, our kick-off party was substantially smaller than last
year's; while last year they ran out of goodie bags with 45, this year
only about 30 were taken at the kickoff. At last year's kickoff, I
personally (as a random participant -- I'm not ML and have no intention
of being) had to tell multiple people "no, this noisy, rude, fannish
drama-fest isn't how write-ins are" -- of course, since upon us telling
you you did nothing, that ended up being a lie. So there's a bunch of
the region gone already.

Of course, from what I've heard from you elsewhere, that can't possibly
be your fault.

So, thoroughly disgusted with your handling of the event, we tried to
work on rebuilding. The co-ML who was completely shut out (and thus
*couldn't* participate as ML) carried on and one of our oldest
participants, and the most involved person in the region -- who had
stepped up already to make extra things for the region and help organize
things, despite being directly insulted by the problematic ML -- became
our second ML. Since it'll be relevant later, I'll note that I live with
this person.

And given the email I sent last year (you read it, right? since I know
how little respect you have for participants, I'm guessing you didn't,
so go do it) and what I've said above, you should be able to understand
my reticence in saying this, but the problem ML from last year did have
one thing right: her co-ML wasn't fit to be ML and wouldn't do anything
to help.

As the months progressed, this got more and more problematic. Early in
the year, sure, fine, NaNo is months away. August, would be nice to
start talking, but nothing needs to be firm yet. Barely any talking --
every time an excuse, off-topic rambling, etc. September, the pre-nano
events probably need to get planned. But that'd be far too easy! Why
don't we instead talk about integrating Benson (~1h drive out of town)
instead! October, and finally the events just needed to be planned: so
the newer ML set up days and locations, wrangled the old one into at
least giving it a "sure, sounds okay", and the events happened.
Similarly with the actual region write-ins -- because hey, those aren't
important, let's make all the sticky posts on the forums, even though
your co-ML asked to be the one to publish some of those so it's clear
there's two MLs. (Other than one close to her -- not that she actually
lives in Tucson, but instead in Marana, on the outskirts, where the vast
majority of participants have no interest in driving 30-45 minutes to
attend.) But hey, at least the new ML had done some groundwork, finding
us a new location so people don't have to eat crappy IHOP food to be
able to attend write-ins, that has WiFi, etc. -- so there's the main
write-in, and a local one. And a few participants from the region were
up for planning their own write-ins, so that made for two more. Bullet
dodged. And ordering things happened, ultimately, but all the money came
from the new ML -- because it's not like there'd be any chance of
actually pinning down the old one to get her to pay something back in
time; pay for it now and hope that in the future you'll be able to
convince her to pay her share.

And then, of course, the biggest problems started. Growing weary of the
constant off-topic unhelpful bullshit, and the requirement to spend 2
hours fighting to get on-topic to have a 10-minute conversation, the new
ML told the old ML to please back off and keep themself on topic,
because their friendship and partnership as MLs was at risk.

Of course, that did nothing. Here's where I started to need to get
involved -- not particularly willingly, but because I have a higher
tolerance for bullshit than my housemate and didn't really want to have
to manage her getting freaked out at her requests going blatantly

Naturally, that hardly helped. So over the course of two weeks I
probably spent 10 hours helping manage panic attacks, trying to run
interference, etc. -- just as a friend, because from last year we knew
you'd do nothing about it. Which, given the opportunity, you decided to
prove: when outlining the complete lack of help, non-action as ML, and
social misbehavior, my housemate got a wonderful response of "oh, the
past doesn't matter, we just need to figure out how to run the rest of
the event" (to which I, at least, sarcastically would respond "we?",
given the role OLL and her co-ML played in actually running NaNo in this
region). Of course, this was after requesting logs of said time, but
hey, consistency's for chumps, right?

Luckily for the region, the MLs were able to reconvene in response to
someone hijacking a thread on the region's facebook group -- in response
to a post reminding people about a write-in that night, including a link
to the location, one wrimo made the choice of responding to the effect
of "Don't bother providing any details, like the time or a usable
address. What's wrong with you?". In response, she was given a location
and the time, and then *kept going*, turning it into a rant -- across
five or six rambling, wordy comments -- about how there's a trend among
young people/people on the internet toward excluding information, and
how this is obviously terrible. (Though she did not use the phrase 'get
off my lawn', the tone was abundantly clear). Several commenters also
pointed out that hey, the full location and time, and a full address,
are on the actual NaNo site, on the official calendar -- but apparently
that wasn't good enough, because she uses a text-to-speech program that
evidently has no trouble writing 5000-word rants about kids these days.
Since both MLs were quite clear that sarcasm and an off-topic rant
weren't the appropriate response to a reminder post on a non-official
site, the thread was deleted and recreated, and the old ML, in a rare
show of actually doing something, made a post pointing out that the
group is not official, that there's a calendar on the official site, and
please don't hijack threads.

But that wasn't enough for some of the others in the region, who seemed
to be convinced that asking someone not to be rude was bullying. Save
the assholes! Protect the rights of people to say whatever they want to
anyone without consequences! (And lest you think my sarcasm in this
email is hypocritical: as you'll see below, you've demonstrated you
don't have a problem with it, so I don't see much need to bother taming

This person sent you a log from the chat room in which the new ML said
that they didn't want to deal with this idiot.

And for some reason, this was enough for you to ask an ML to step down.
Homophobia and racism, hijacking the event to be a fanclub, noisily
interrupting write-ins, and failing to do the job of ML while getting in
the way of the preson trying to do the job: none of those mattered. But
someone saying to a group of their friends that they don't have much
patience for someone being an asshole to them and disrupting the whole
region, that's sufficient?

Just to top it off, earlier this evening she called you to talk about
the issues. And what did your hosebeast of a "Director of Programs" do
but say that all of this drama was obviously her fault. Having no
support and a shaky foundation for the whole region due to your inaction
last year and an incompetent co-ML? The people choosing to respond with
sarcasm? Couldn't possibly be: everything falls to the person who tries
hard to do the right thing, instead of expecting everyone else to. You
even went so far as to say that the co-ML was the one to run the region;
but hey, it's an easy job when your co-ML and her housemate have been
fielding all of the problems, putting in all of the money, and planning

So here's a lesson for you: when you fail to address problems,
repeatedly, and then blame the people trying to solve them, you're
destroying the event you claim to be running. You don't even get to
claim you're helping run it -- because as the last two years of this
region show, when it comes down to you, you routinely choose the wrong

Every person in your office is a waste of their salary, and any donation
that goes to your office is working against the goal of a happy,
well-run, and productive NaNoWriMo event.

Ian McEwen
former NaNoWriMo participant

And for others who participate or think they want to be MLs: consider yourselves warned.

Creative Commons License "OLL/NaNoWriMo HQ are worthless idiots" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

I’ve been busy writing, well, a bunch of code. Next release should have 16 tickets of mine; not all of those are internationalization-related, since I also tackled some other low-hanging bugs.

Notable i18n changes: presuming it passes beta testing for the next week (done one already!) my split-domains work should make it in. Additionally, I’ve done a variety of things on my so-called “fixup path”: fixing edit type i18n, making the tabs on the statistics pages translatable,  and translating editor dropdowns. Non-i18n changes include bringing back voting icons on edit notes, fixing some statistics-related things (so, last year’s GSoC project), and fixing the database settings for slave installations.

Next week, during beta freeze, I’m hoping to start working on the language-picker and the associated reworking of our language-switching infrastructure.

Creative Commons License "GSoC 2012: quick update" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

Not that it’s new to me, but I have my first GSoC work up for code review:! This is the entire “domain-splitting path”, essentially. It also includes some other fixes, though, especially a few we’d already put on correcting the language codes to the right format for translation, and successfully translating non-ASCII msgids.

Hopefully this’ll ship soon — but it’s already on the sandbox, for those who want to test it out.

Creative Commons License "GSoC 2012: code review!" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

Transifex ( is updated with all the new translations, and I’m working on updating the server to use these new domains — I have the framework in place, now it’s just a matter of changing over huge numbers of places using the old system where the new domains need to be used! Picard 1.0 also got released, which included a number of languages where translation was done on Transifex. Several Picard developers are working on using the ‘countries’ domain I extracted from musicbrainz-server, to reduce duplication.

Hopefully shipping the code changes for the new domains in the next few days!

Creative Commons License "GSoC 2012: i18n update" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

Hello again! Just a quick update: I’ve set up the new fancy split domains, and put them up on Transifex for reviewing by interested parties. The default ‘server’ domain hasn’t been updated yet, since I’m still working on migrating translations to the new system, but the splits, and the contents of all the other domains, can be seen at You’ll also see a new ‘picard’ domain, for translation of MusicBrainz Picard. Thanks to Lukáš Lalinský for migrating that to the same place as musicbrainz-server translations; hopefully Picard can benefit from some of the new split domains!

I hope to update again shortly, once the translations are migrated to the new system (and once musicbrainz-server knows how to use these new domains).

Creative Commons License "GSoC 2012: i18n: splitting domains" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

Hi everybody!

Been a while since I’ve posted here, but for all three of you readers (±3) I figured I should do an update.

Specifically, I’d like to report that I’ve been accepted for a second year to work on MusicBrainz for a second year in a row as part of the Google Summer of Code program. Last year I worked on the MusicBrainz Timeline Graph (and statistics in general); this year I’ll be working on internationalization of musicbrainz-server.


MusicBrainz: Now in Japanese!

Internationalization is an interesting topic in this context – the basic structure for i18n has been in musicbrainz-server from the start, but it’s never been particularly well set-up, and it’s never run on production. I’d like to fix both of these problems. As you can read on the GSoC Project Details page for my project, I’m doing this through three distinct “paths”: interface, domain-splitting, and general fixups. Domain-splitting deserves further explanation: currently, all our translatable strings are in one huge context – more than 5,000 strings. I’ll be splitting them up somewhat to group things contextually related, both so some things can be reused (for example: names of relationship types, which are useful for anything using MusicBrainz data) and so that translation isn’t quite so insurmountable a task.

My first task, during the “Community Bonding Period” through May 21, will be to find “language liaisons” – people who can serve as people I can ask questions of for languages I don’t personally know, to highlight problems with our system for those languages, file tickets, and serve as coordinators of translation teams.

Read more on the GSoC Project Details page for the project! For the interested, our current i18n/l10n is available on Transifex. I’ll be updating that soon, though, hopefully. Some of our translations, a bit out of date, are also running on, an internationalization-oriented MusicBrainz sandbox (note: I also run the MusicBrainz sandbox server).

I hope to report more soon!

Creative Commons License "Google Summer of Code 2012: Internationalization" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

For awhile, NaNoWriMo – short for National Novel Writing Month – was my life. I discovered it in 2003. I was working a dead-end job as a “computer person” for a small nonprofit whose founders my family knew personally for $5.50 an hour. Unhappy with the fact that my mother was micromanaging what my life would be, I dropped out of community college in February of that year. My excuse at the time for not completing my classes was that I was sick (in the spring, I was still working as a nanny, and the little monsters brought all the germs home and shared them with me. I’ve never been a particularly robust person in terms of health), and in the fall I didn’t go back.

So I didn’t have much of a life at this point. In October, I read a post on a forum about NaNoWriMo, and went to check it out. I found out we had a local group and thought this was a great idea. After, all I liked to write! I always said so, except I never did it. So I went to the local kickoff and had a great time. I was 18, and would turn 19 shortly after the start of the month. There were a lot of people participating, but a core group had began to form. I was the baby of the group at the time.

click to read more »

Creative Commons License "Why I’m not doing NaNoWriMo this year" by Eliza Gebow is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

… I may as well update the wide vague population of the Internet as to my progress.

So, hm, what all have I done:

a.) added some various statistics to the collection mechanism; specifically, artist countries, genders, and types. I made them get displayed, too! See and for these. I’m currently working on/have in review a fix for the gender calculation, since despite adding calculation for type statistics at the same time, I totally neglected to think of the fact that groups can’t have genders!

b.) I added copyable URLs (mostly) for the timeline graph. For example, see for a graph of just Works. I have in review a fix for this one, too, so that the region you’ve zoomed to also goes into and gets parsed from the URL. In the same change, I made it so the zoom level doesn’t reset when you add and remove lines from the graph.

c.) In review, I have something to merge the checkboxes for adding/removing lines and the legend. Yeah, that means the checkboxes won’t move when you click on them any more! Part of this change was also hardcoding the colors (rather than hardcoding integer indexes into an array… complicated, but anyway), so there’s a new colorscheme which you can see at Thanks to Eliza, my coauthor on this blog and fellow MusicBrainz GSoC student, for helping me work around my stunted color sense.

d.) In the works:
i.) MusicBrainz Events, once I figure out how to display and interact with them in a nice way.
ii.) Statistics for release and label countries (in the same vein as artist countries), and potentially a whole bunch of other things like instruments, formats, scripts, languages… etc. This is a bit removed from my actual project, so the progress will be a bit slower!

So, cool. Now to see if that run of has finished up yet…

Creative Commons License "GSoC 2011: MusicBrainz Data Visualization: While I wait for this script to run …" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

Perhaps predictably, I’m making further progress. To see: is pretty up to date. I’ve added some hover functionality, improved the ticks on the graph, improved the controls for zooming, added controls for adding and removing lines from the graph, and some other random trivialities.

Or, if you don’t want to go over to Review Board for yourself:

musicbrainz-server graph as of 2011-06-03

This thing’s getting close to something that might actually be useful!

Now I just get to wait for my mentor to review and merge my code. Wonder if there are any low-hanging bugs I can tackle in the mean time…

Creative Commons License "GSoC 2011: MusicBrainz Data Visualization: Progress" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.

Well, sort of. First code to ship! I’m working on “Database Size/Growth Visualization” for MusicBrainz. I’ve been working hard the last week, and my first code will be rolling out on the main MusicBrainz site with the release tomorrow, having made its way into master (the main branch of code) yesterday!

Right now it’s a pretty basic graph (only Artist/Label/Release/Release Group/Medium/Work are shown, and the controls are a bit primitive, and a bit undocumented), but it does exist, and lots of improvement is happening. Since the part that’s in master, I’ve already added better controls, better axis labeling, and some interactivity on hover.

But hey, shipping code 8 days into GSoC — I’ll take it!

Creative Commons License "Google Summer of Code 2011: MusicBrainz Data Visualization: First Code" by Ian McEwen is licensed under a Creative Commons Attribution-Noncommercial 3.0 United States License.