“Thai” Turkey Salad

I was aiming for Mexican-inspired, but this came out more like a café “Thai beef salad”.

While it was nice enough, I’d like to have another try at some point. The salad could use more zing — maybe fresh coriander?

The sauce also came out very salty (like a Thai fish sauce) so I may have added a bit too much salt.

Serves: 4
Cooking time: 45 minutes



  • 1 small wombok or other cabbage (~ 100-200 g), shredded
  • 1 red capsicum (bell pepper), sliced into strips
  • 1 Spanish (red) onion, diced
  • 1 can corn kernels


  • 500 g turkey breast, sliced into 4 pieces
  • 1 onion, sliced
  • 1 cm ginger, chopped very finely
  • 1 tsp coriander seeds
  • 1 tsp chilli flakes
  • 1 tbsp dried coriander (cilantro) leaves
  • Reserved corn liquid
  • Salt & (optionally) pepper, to season


Drain corn, reserving liquid. Toss with wombok, capsicum, and onion, and set the salad aside.

In a hot pan, fry onion, ginger, and spices until fragrant.

Add turkey to pan. Sear well on all sides, then reduce heat to low, and fry until cooked through.

Once turkey is cooked, remove it to rest somewhere warm.

Return pan to high heat, deglaze with reserved corn liquid, then add coriander. Reduce sauce to desired thickness — not too thick, this is your salad dressing!

(If any liquid has drained out of the turkey, add that to the sauce too.)

Divide salad between four plates. Top each with a piece of turkey, drizzle on sauce, and serve. You could probably slice the cooked turkey first, but I was too lazy to bother.

Duet of Reflections

Who is she?
What will she look like?
Will she be sexy
Will she be stern?

Is this me?
Am I too dressed up?
Will I be dressed up
Too much like her?

Who is she?
What will she act like?
Will she be bitchy
Will she be shy?

Should I believe her?
Tell her my secrets?
If she is family
Should I be blind?

First time in a lifetime
Finally I meet
My mysterious twin

Is this girl
So like me
So different
Really my sister?
Is she a friend?

When we meet
How will I greet her?
Will she embrace me
Will we shake hands?

When we talk
What will we speak of?
Does she have style?
Has she known love?

When we meet
How will it touch me?
Will it be creepy
Will there be a bond?

I’m a geek
Does she watch the same shows?
Does she hate my shows?
Will she hate me?

No more speculation
End of the questions
Proof of the fear

That first fateful meeting
Seconds away now
Heart in my eardrums

The moment is here

I dedicate this poem to Susan and Diane of El Goonish Shive, who seem like mirror-images of each other but haven’t quite met each other yet.

Would I had the skill to set it to music!

Calling Elm Functions from Node.js Code

(Update 2017-02-26: This is actually covered by the Elm docs, just in a more obscure place than I expected.)

If you just want to call Elm from JavaScript, see the GitHub repository. If you want the full saga of how I learned this, read on…

At RubyConf AU, I heard about Elm, a functional programming language based on JavaScript.

Now, I recently started building a set of command-line tools that are pure functions (i.e. they don’t keep running or change things, just process and return their input). These are currently in Ruby, but I’d like to use them for a browser app eventually, so I need something I can call from JS.

Pure function? Callable from JavaScript?

Seems like a job for a JS-based functional language!

Continue reading

Sueness and Popularity: Mistakes

I’m (finally!) scoring the last of the webcomics for my Sueness and Popularity project.

But I’ve just realised a major flaw in my experiment plan: I haven’t specified which characters I will score as “Fan Characters & Newcomers”. The test has a separate section for these characters, and I know from my first scoring project that the choice of section makes a big difference to a character’s score.

This is fine for fan characters, since it’s usually fairly obvious when a webcomic is based on an existing story. But for “newcomers”, it’s a difficult judgement call. As a reader, I can’t reliably tell if a character is a new one the author just made up, or if they were planning to introduce them all along.

I could pick a rule: for instance, “any character who doesn’t show up in the first storyline is a newcomer”. But for something that could have such a big impact on my results, I don’t want to rely on such an arbitrary choice.

Alternatively, I could ignore the original-character/newcomer distinction, and just score every character on the “Original Fiction” scale. This avoids arbitrary cut-offs, but it also means I’m not applying the test properly.

Neither choice really makes sense, so I’m going to re-plan my experiment to try both:

Continue reading

Making Dungeon Non-Linearity Meaningful

I’ve always been a fan of non-linearity in game design.

Some time ago, I read Justin Alexander’s series on Jacquaying, and immediately decided I wanted to use those principles — loops, elevation changes, and meaningful choice — in the maps I designed.

Using the tools wrong

A 30-room dungeon in three levels, with lots of inter-level connections.

Everything loops around eventually, but the paths are never short.

Recently, I got to run my first full-size dungeon (built, of course, on my understanding of these principles).

It didn’t quite work.

Continue reading

Sueness and Popularity: Sample

(Continuing the project from this data collection post.)

I’ve now decided on my 50-webcomic sample (download the full list).

It’s one month today since I sampled the first one, so it’s time to start reading and scoring them. Before I do, though, I’d like to say what I’ve noticed so far:


There are several comics in that list I might not be able to score. (I should have made a plan to handle this, but it’s too late to change the experiment rules now.)

No Regular Characters

Two comics (The Science of Cookies and 3 Frame Movies) don’t seem to have any recurring characters (i.e. no-one shows up on more than one page). By the rules I’ve set out, this means I can’t score anyone in the comic, and therefore can’t analyse it.

This is probably fine — if a comic has no prominent characters, I can’t really measure it for Mary Sues in a useful way.

Too Many Authors

Another two comics (links removed for privacy reasons) are “interactive” comics like MS Paint Adventures (readers suggest actions for characters, and the author picks one and describes the result).

It’s hard to argue these authors bear all the blame for any Mary Sues — or even that it’s a problem at all. Author self-insertion is one thing, but audience self-insertion (or is that just “identifying with the character”?) is quite another.

Fortunately, these comics shouldn’t have too many people making suggestions, so I can just spread the blame equally: if someone’s suggestion gets used, count them as an author. Edit 2020-01-11: One of them was excluded anyway due to going offline before I could score it.

(Needless to say, I’ve deliberately not submitted any suggestions to these comics myself).


The next time I do this, I’ll need to have a list of rules to exclude comics (e.g. must have a regular cast, must be fictional, must be in a language I read), and decide how (or if) I want to find extra samples to make up for the excluded ones.

Other Complications

There were a few grey areas around what counted as a page.

Generally, I counted all images posted on the site, provided they were either (a) posted as part of the main comic, or (b) had some sort of narrative. (Title pages and side comics count, but random art pieces don’t.) In particular, I didn’t count (and won’t read) anything I had to buy to see.

Page sizes vary, both between comics (three-panel strip versus full pages) and within them (pages posted as double images). For sanity’s sake, I counted each individual blog or image post as a “page”, regardless of size.

This means page counts aren’t comparable, and I’ll only be able to compare relative counts for characters (e.g. “10 out of 100 pages” and “2 out of 20” are the same).


More updates once I’ve got some scoring done!

Sueness and Popularity: Data Collection Protocol

(Continued from yesterday’s Sueness and Popularity post)

This post is a list of all the statistics I’m going to collect on each webcomic. It might not be very entertaining; the point is to stop me fiddling with things half-way through the process.

Comic Details

  • Title
  • Website (somewhere from which the rest of the comic is reachable — preferably the home page)

Author details

For each artist, writer, etc. if several. This includes colourists.

  • Full Name, if public (The test I’m using cares about author name, but I don’t want to go stalking people just to get accurate results.)
  • Any other public names, psuedonyms, etc
  • Date they started contributing to the story (if they weren’t there from the start)

The Webcomic List Statistics

I’ll collect each of these numbers twice: once when the comic is first added, and again a month later when I score it.

If I miss a day, I’ll collect the data for that day as soon as I have time (hopefully not more than a couple of days late).

  • Nominal data-collection date (when I should have collected these stats — date added, or that date plus one month).
  • Actual data-collection date (should usually be the same)
  • Number of comic pages. This includes side stories, title pages, etc., but not non-story content (cast lists, author commentary), or guest comics that don’t contribute to canon. Text-only pages (like Erfworld often has) do count.
  • TWL stats (“views this month”, “average views a month”, “favourite of n members”)
  • Number of TWL comments
  • Number of “accusations” in those comments (posts saying the comic contains a Mary Sue)

Character Details

I aim to score every distinct character who appears in more than one comic page (if there’s only one page, I’ll score every character in it). This includes animals, AI’s, robots, etc., but not random inanimate objects (e.g. the One Ring isn’t a character).

Interchangeable randoms (e.g. mooks, or most of the stick figures in XKCD) don’t count, but named characters who never appear on panel do (if they’re mentioned on at least two pages).

As well as the score, I’ll collect this inforation:

  • Name
  • Other names (psuedonyms, superhero names, maiden names, etc.)
  • Gender (“male”, “female”, or “other”, based on how the character’s presented in the comic (so robots, aliens, etc. can be male or female if they’re presented as clearly one gender). If the correct gender is complex or unclear, I’ll use “other”.
  • Number of pages with this character (same rules as above).

Mary Sue Test score

(For each non-one-off character, as above.)

I’ll score characters based off supplementary information (commentary, previous comics with that character, etc.), even if I wouldn’t include it in the page count. However, I won’t consider (and will try to avoid reading) anything that was published after the one-month cutoff date.

If a comic is fanfic, I’ll try to research the canon enough to score it correctly — but I won’t necessarily read the whole source canon.

This might mean reading spoilers. If so, I reserve the right to either (a) put off scoring the fanfic until I’ve read the original, or (b) get someone else to score it according to this protocol. However, I don’t plan to do this unless the original is something I really want to read.

A lot of questions ask about the author’s intent or feelings. If I have that information (e.g. from author commentary), I’ll use it. If not, I’ll default to “no” when the question is just about the author’s mind (e.g. “do you see your character as a role model”), or “yes” if there’s a concrete part I can answer “yes” to.

For instance, “does your character have … an exotic name … chosen primarily because” will get a “yes” if the character has an exotic name but I don’t know why it was chosen.

If I run into anything else ambiguous, I’ll check SyeraMiktayee’s Ask.fm (but I won’t actually ask about it, as I don’t want to spam xir with questions). If that doesn’t clear it up, I’ll just pick something and document what I did.

Can a Mary Sue Test Predict Popularity? (Experiment Plan)

A few years ago, I calculated some statistics on SyeraMiktayee’s Universal Mary Sue Litmus Test.

This time, I’m back with a specific question: can it predict popularity?

If Mary Sues are bad writing, and the most popular stories tend to be well written, then stories with Mary Sues should be less popular.

To test this, I’m going to score 50 webcomics, and see if “Sueness” and popularity line up.

Data Collection

There are plenty of sites that track popular webcomics. However, they tend to focus on rankings (e.g. “5th most popular comic). Unfortunately, scoring the 50 best comics won’t tell me much about bad writing.

Instead, I’m going to score 50 new-ish comics.

I’ve found a site, the webcomic list, which tracks views per month (a good approximation of popularity), and also has a list of recently added comics. With any luck, this will include some terrible ones.

To prove I’m not picking and choosing what I score, I’m going to score the first 50 comics added to that page after Tuesday (12 July). I’ll give each one a month (so there’s a decent amount of content) then start scoring on 12 August.

Data Analysis

I’ve got lots of theories I want to try, and consequently lots to record.

For the popularity question, though, only two things matter: the “sueness” (Mary Sue Test score) of the highest-scoring worst character (since one Sue can ruin a whole story), and the average views per month (as of the 1-month anniversary when I score the comic).

I’ll compare these with a simple linear regression. If I’m right, this will show a negative correlation (higher “Sueness” equals lower popularity).

If I get a “p-value” of less than 0.05 (i.e. a 1 in 20 or less chance that the result was just random), I’ll consider it proof (or at least, strong evidence) that the test can predict popularity.

What next?

Before I start scoring anything, I need to define the rules I’ll use to do it.

Expect a post on Monday or Tuesday with a list of exactly what I’m going to record, and how I’m going to decide tricky questions.

Goal: Write Goals

Between illness, broken Internet, and various other demands on my time, my focus petered out at the end of the last ROW80 round.

I’d like to say that won’t happen again. But that means something will have to change.

My Internet should be fixed soon, but that may not be enough.

Can I reduce the impact of being sick?

The last few times I’ve been sick like this, it’s taken ages to go away. I suspect this is because I don’t get enough rest. However, setting aside my goals to give myself time to relax doesn’t really work; even if I don’t write, I still stay up late and lose sleep.

For all I know, I’d actually get to sleep sooner (and heal better) if I did keep my writing goals.

What about those other demands on my time?

Some of these are house-related things (e.g. organising repairs). Some are related to things at work. But the majority are social commitments.

When I started ROW80, I basically had one day out a month. I’ve now got fencing every week, and various other social things on three weekends out of four — plus, often, a one-off thing on the fourth.

This probably isn’t that much in an absolute sense, but every extra commitment is one fewer day I can use to work on my own projects (like writing). Combined with being sick (and therefore being behind on everything), this adds up to more pressure than I’m used to.

So, what can I do about this?

Improving my time management would help, but I don’t think that’s going to happen in the short term.

Which means I need to reduce my commitments — either cut down on social situations (and become lonely), cut down on writing (and feel my goal of being a serious writer slip further from my grasp), or cut down on my other hobbies, like programming (I’d like to keep up my skills for what I do at work) and reading.

I’ve considered cutting down on punctuation (especially parentheses), but it’s too great a loss for the time it would save.

If this were an easy choice, I would have made it already.

Pork and Apple Pizza

According to Stephanie Alexander (in The Cook’s Companion), apples go with both pork and cheese. This got me wondering if you could have them on pizza.

(This recipe seemed to work, but I’ve only tried it just now. Your mileage may vary.)


A bottle of "Ayam" plum sauce. The sauce is a light brown colour.

Plum Sauce

  • 1x 26cm pizza base (or equivalent; I used two smaller ones)
  • 200 grams pork loin
  • 2cm piece fresh ginger
  • pinch nutmeg
  • 1 large apple
  • 1 spring onion
  • 150 grams grated cheese
  • 2 tablespoons plum sauce (I also tried tomato paste, but it’s too salty)

I used a supermarket plum sauce, made in Malaysia. I don’t know if the reddish-purple home-made plum sauce would work or not.


Pre-heat oven to 250 degrees Celsius.

Dice pork into 1cm cubes.

Chop ginger and sauté with nutmeg. Add pork, and fry until meat is cooked through.

While pork is cooking, dice apple and chop onion.

Assemble pizza (spread base with plum sauce, add seasoned meat, apple, and onion, and top with cheese), and bake for 30 minutes.

A pizza. The base is topped with a clear brown sauce, then apples and pieces of white meat, and finally cheese.

The finished pizza.
I cooked this one at too low a temperature, so the cheese hasn’t melted properly.