As per item 3 of 50:

InfiniteLooper version

Well, there are better memory-triggering songs but I think this pretty much sums up how I feel about blogging right now (possibly including the very act of choosing that song.) And college apps. And life. Plus, the music video is silly in its own incredible way.

Anyway. Around this time a year ago, I made a post talking about how around a year before that,

I paused my participation in big high-school competitions, for a variety of reasons.

And then I rambled on life and programming competitions.

If you didn’t get it yet, this post so far has been written to meaningfully echo the last one. Nothing so abrupt has happened this year, but I just realized how nice it was to have a paragraph humorously listing the weird stuff I had gotten myself into over the course of 2013, so I’m going to do so again, even more completely.

(Broken into headers for easy skipping by people who don’t care for reading about certain categories.)


  • Okay, the year started with the conclusion of Deterministic Frogs (AoPS thread, my amazingly readable source code), which I did allude to at the end of that post, and I won. (Normally I try to humbly share some of the credit, but there really isn’t any to share for this one.)
  • Later, the programming competitions really picked up:
    • USACO. Wow, I almost forgot about this. Meh on January, okay on February, terrible on March (but I procrastinated and just spent half the time limit. I think), tied for second on US Open and beat the first-place guy later somewhere else, so at least I can feel smug about that. Teehee.
    • First Google Code Jam.
      • Later this year, I signed up for Hacker News to make a single comment referencing one of the Google Code Jam problems that I unexpectedly solved. (The problem was 1A/C and my polished solution is a GitHub Gist.) I don’t know why I feel particularly like mentioning this.
    • A weird side contest gave me the chance to go to PyCon, where, as the post says, I got a GitHub sticker for my laptop, which is totally rad.
    • IPSC 2014 — I got some friends together and we won the secondary-school division by a hair’s breadth with a submission for J2 two minutes before the end. w00t. (Aside: The crazy changing requirements of K. Knowledge Test provide a great example of one of those cases where I’m glad I didn’t use Haskell. Good ol’ Python.)
    • Then, obviously, IOI 2014, where I was the highest scorer who failed to fully solve the problem with the simplest solution. Yay?
    • And, finally, NPSC 2014, where I finally got to use a randomized binary tree in its full copy-on-write lazily-updated-range-modifications glory, and also accidentally solved a string problem (determine in linear time whether a string can be cut into exactly three nonempty palindromes) with a correct algorithm that I didn’t come anywhere close to proving. I retreated from the competition world into my college-apps shell after this.
  • Waded into open source on GitHub. I received my first pull request in March during the IOI selection process and made my first pull request in May near the events of PyCon, followed by many others.

    I like to think I leveled up in refactoring and git ninjaship. The former is partially documented by various commits to DominoPlayer, a project dropped into my hands to maintain; the latter is partially documented by some commits to my GitHub page cheat sheet. I didn’t realize version control would turn out useful as a nostalgic record of stuff I did during the year, heh.
  • Apart from general open-source stuff, I coded some for Mystery Hunt, a terrifying amount of which was wrangling with PHP. Oh, cripes, what the zarking Babelfish, PHP.
  • Jekyll-and-Bootstrapped my GitHub page, writing some CoffeeScript in the process. I realized this year that Kramdown offers easy MathJax markup, which is quite practical, although it turns out to take some effort to get a MathJax system without too many extra junk so that the memory footprint is manageable.
  • Taught an algorithms-slash-programming-competitions class (slides in Chinese with reveal.js). I didn’t know I could do that. I still don’t. Dagnabbit, teaching is hard.
  • Trained myself to use Vim text objects. Only, what, a decade after I started learning it? I was very glad for at and it when reindenting the PHP beast.
  • My MacBook battery died. A classmate took it apart to replace the dead battery, though. Yay.


This section is much shorter because I guess the math things I did are fuzzier and harder to itemize, which is probably to be expected.

  • Um, does NIMO 2014 April Fools count? Not really mathematical but this is also something I forgot about until I wrote this post and clicked around my forum records. Which is bad, because the Silver Cyanide concept (which I have already used in my IOI selection process post) and its cute execution deserve to live longer.
  • Went to the Tournament of Towns Summer Conference. I did not blog about it, although I wrote an article for my school newsletter, which I might post if I work out a reasonable systematic excuse for posting ancient expired drafts. I learned lots of things:
    • Russian is tricky.
    • Wi-fi is tricky.
    • Airports are tricky.
    • Flowchart programming is tricky. Especially when there are no arrays and you have to hack it with “indirection”, that is, constructing variable names by pasting together strings and numbers. But when there’s a will, there’s a way. (Sigh, why did I spend so much programming things I was already comfortable with at a math camp?)
    • Electrical networks are an intensely graph-theoretic subject. (Extra points because the original problem that got transformed thus was pretty number-theoretic!)
    • Hallucinatory osu! sound effects, when one hears a song outside osu! accompanied by the game sound effects after playing it sufficiently many times, can persist for a long time…
  • Well, yes, I “finished” (strong emphasis on quotes) my complex analysis book. The electronic trail just consists of a few complex analysis posts on the AoPS blog documenting interesting bits, and at least one more draft that seems almost complete.
  • Tried to do something that vaguely resembled research but did not get far, although I produced some self-contained bits of elementary math exploration as a side effect. I also learned how to do linear algebra in Haskell, which I used later for an entertaining roulette puzzle I bumped into.
    Chekhov’s Skill is really an overused trope in my life.
  • Got a math club to lead, which I also do not know how to do. (Two of the people are doing USAMTS, so I can’t do anything anyway.) Note to self: asking “What does X say?” produces more accurate answers than “Do you know X?” ∀ theorem or law or postulate X.
  • Gave part of a presentation about polyhedra; my task was proving that the sum of the angular defects of polyhedra (with Euler characteristic 2) was 720°. During the rest of the event I also made lots of origami cubes and tetrahedra. Alas, my origami skills were not good enough for the beaver that just arrived.

wow-I’m-a-high-school-Senior Things

  • Junior grad performance for the seniors. Wow, it was only a few months ago? I’m bored; you can read our lyrics.
  • Joined, on a combination of a whim and positive peer pressure, the new Senior Party Slam Poetry club despite a total lack of experience writing poetry past fourth grade or so. I did not write any poetry until, riding a sudden stroke of psychotic inspiration at 11 PM of the day of our self-imposed deadline, I dashed out three surprisingly sensible stanzas about humanity and global issues that somehow even included occasional rhymes and alliteration and all the bells and whistles.
  • Photo shoot. Photo shooooot.
  • Applied to colleges, of course. Also, late in the year, started arguing on their blogs. Results so far, in chronologial order (I hope): two acceptances, one Javascript injection, one orange envelope, one blog comment, one concerned email from CommonApp, one silver tube that just barely arrived in time for this post.

    Still the best (harmless (well, if you trust the particular third-party)) JavaScript injection ever:

  • Our last Christmas Concert performance! Thankfully we were original enough to not sing “Last Christmas”. We did it, everybody!
  • Signed up for CollegeConfidential to make a single comment about… well, what do you think?
    • …and received a PM about it.

Everything Else

  • I discovered HabitRPG, which became my new semi-idle game, filling the void of… some other game that will not be named, as well as successfully pushing me to go on Facebook and Twitter and reddit and Hacker News even more rarely than I did after installing LeechBlock, which is no small feat, plus made me exercise. I also met my awesome guild, the Kick-Ass Crusaders. In related news, I made two pull requests to the game (PR#4101, PR#4112).
  • Australian puzzlehunting, as expected, I guess. Much to everybody’s disappointment, CiSRA was cancelled. We did okay on MUMS, but my team’s SUMS performance exceeded all my expectations (hooray for cultural knowledge advantage on A4S2 Tiles!)
  • Forum game victories, for no particular reason: Zendo-Tao 1 (I have no idea how sequels fared, come to think of it; one game was too exhausting), first round of Thwart Poker
  • IMO TWN 2014 OP
  • I played guitar more… one notable performance during IOI, and then one with my best pal at a school concert. The South Park Lorde song. Can you believe it?
  • I started a TIL. It sputtered for a few days recently but it’s back on track.
  • Spent eight hours watching Turnabout Storm, the Phoenix Wright / My Little Pony: Friendship is Magic crossover. Conclusion: I don’t feel more or less about the ponies than before but I have got got got to play through a Phoenix Wright game some day.
  • I turned 18, which is pretty important. I did not do anything (…blogworthy) about it, other than write a silly inductive puzzle for the occasion.
  • I gave a terrible speech to our president and a bunch of other olympiad competitors.
  • Puzzle-writing, which I definitely have to blog about next month.
  • I vlogged. More than once. All of the videos are unlisted, though, and if you haven’t seen them yet, I’m probably too sensitive or embarrassed about them to show them to you. Sorry!
  • I ran my first marathon. Actually, it was a wimpy 9km run. I am definitely going for a 21-km run in 2015 if I get the chance.
  • My Neopets™ bank account is now Millionaire Mega-Platinum (5,000,000 NP).
  • FurryScaley doodling…

Notable Things Not Done

  • I did not take APMO 2013 because I forgot about the sign-up deadline. Yes, really.
  • I did not take the ALS ice bucket challenge, despite something that might be interpreted as a challenge.

That’s seriously all because I want to publish this in 2014 before it ends.

See y’all next year!

edit: Never mind! Publish first, edit later!

edit: I’m going to sleep now. ♪ Maybe I’ll wake to find that I went and blew it / But till I do, I’ll keep going strong ♫

(note: the commenting setup here is experimental and I may not check my comments often; if you want to tell me something instead of the world, email me!)