tl;dr: anybody want to add me on Line or tell/remind me about
other phone chat apps? betaveros as always.
Wow, talk about uninspired post titles.
I got a new phone today. Or, well, it’s second-hand, actually. I try
to make electronics last a long time, but I think this was justified
given the state of my last phone’s screen:
Besides, I’m going off to college and all. Anyway, the phone is
pretty cool. It’s a slick shade of red, it came with a cover and
everything, and it has one of those fancy 3x3-grid locks. How secure are
those again?
Okay, I think I’m figuring this out. When I make a filler post for
the streak, it should be an
unabashed filler post, so I can accumulate some of the blogging time I
find each day to work on a serious post (and for doing the other
important stuff I should be doing!) instead of wasting it right
away.
Life. I’m programming something for Dad involving a parser using
Jison, and one of the tasks
involved stuffing a
custom
lexer into the parser. I was struggling to get my custom lexer to
track locations properly. I thought this might be because I didn’t
properly understand which components of which location went in which
variables of the lexer, which seemed to be a plausible source of trouble
since I had glanced at the sample code and it seemed to have a weird
half-open range of columns and lines that I didn’t understand how to
mimic in my code.
Out of boredom and curiosity, I
graphed how many
emails colleges sent me, excluding the colleges I actually applied
to. I am being extremely polite and just calling them emails. I’ve
wanted to make this for a long time, but it wasn’t until I saw this
post
about an email experiment on
waxy.org/links that I understood
which tools I could use to quantify my emails. (And then I actually made
it and procrastinated posting it here for two months. If you look at my
GitHub page or activity you might have seen it already, though.
Oops.)
I don’t think the results were expected. Other than saying that, I
leave the interpretation up to the reader because I’m on a tight
blogging schedule. Cool? Cool.
What do you do when you get a bunch of files like this from a
zipfile?
I’ve blurred the messed-up file names because I’m not convinced it’s
impossible to reconstruct the Chinese names of people from them and I’d
rather err towards being paranoid about privacy. Except for the one file
name whose author’s identity I’m OK with disclosing.
Back story: I have been tasked with collecting everybody’s Chinese
assignments for this semester. I didn’t even do that part yet (I really
should); first the girl who handled last semester’s assignments had to
pass on the files she collected to me, and I unzipped the attachment to
reveal these file names.
5:27 PM phenomist: do you use gridderface to make
pretty puzzles?
…
5:52 PM phenomist: actually nvm excel is probably
easier lol
Okay I’m sorry this is a horrible puzzle where the rules don’t make
sense and I didn’t even get it testsolved. I just wanted an image to
concisely demonstrate the capabilities of
gridderface, my
puzzle marking and creation program, for the project homepage, after
somebody expressed interest in using the program to write a puzzle. Then
I got tremendously carried away.
I’m assuming you want to use D largely, but not entirely, for
competitive programming. That’s me right now.
Basics
Syntax is very similar. Function definitions, semicolon-terminated
statements, variable declarations, and so on. You can declare
int main() {...} or void main() {...} or
something with arguments.
Basic types like bool and int and
double are all there. Wonderfully, long is 64
bits. Instead of unsigned whatever, just prefix a
u, e.g. uint.
Arithmetic operators and bit operators are all there too, including
unsigned right shift >>>. Although ^
is still xor, D has exponentiation as ^^. Sadly,
% is still same-sign remainder; there’s no true mod.
import std.stdio;
Casts look like cast(int) x;
Control Flow
if, while, for,
do, and even switch all work as you’d expect,
along with break and continue.
foreach is the nice addition though. Not only can you
iterate over arrays and stuff, but range loops go like:
I started trying to sleep at 9 the night before the contest, tossed
and turned in bed until 10, then fell asleep and got up at 3:35 in the
morning. Blah. At that point, I went to the bathroom and applied some
chapstick before trying to go back to sleep until 6. After breakfast, I
grabbed a few minutes of sleep on the bus to the convention center where
our contest would be, then slept on a sofa outside the actual contest
hall alongside most of the rest of our team as we waited for a very long
time until it was okay for us to enter. Competitions really mess with
one’s sleep schedule.
Then, much too soon, we could enter. Day 1 of the contest was about
to start.
The laptops were as yesterday, although they were protected with a
white screensaver that indicated my name and ID as well as a countdown
to the start of the contest. I was glad to see that my mousepad and all
my writing utensils had survived without me. Somebody had the sense of
humor to project an online stopwatch with an animated bomb fuse onto the
screens to indicate the remaining time, which, once again, there was a
lot of.
I conferred briefly with Paul (TZW (alphaveros (?))) about vim
settings for a bit, but there were still fifteen minutes left or so. I
idly stretched, practiced typing my .vimrc on an imaginary
keyboard, and watched as the US dude two tables to my left unplugged his
laptop’s mouse and rearranged absolutely everything on his table using
the surface under his chair as swap space. (Well, that was how I
mentally described it at the time, pending further revelations. (hint
hint))
Yes, I know day 1 of the contest already ended and is probably a more
interesting topic to blog about, but I finished writing this last night
just before the internet was cut off to quarantine the contestants from
the leaders, who received the problems and began translating them. I
didn’t know about this until it was too late, which is why I’ve been
waiting since yesterday to post this.
To provide a counterpoint to the last post, one of the many,
many advantages of entering an international competition is
that you get to meet a lot more people you already know, so there’s less
time spent being socially awkward. While waiting for stuff to happen,
aside from all the expected time spent with the Taiwan team, I also
talked to, played games with, and otherwise entertained a whole lot of
people I already knew, including my schoolmates (no less than fourteen
of them were volunteers) and some of the college students who had
shepherded us around during olympiad training.
Which is a good thing, too, because there was a lot of waiting.
First I waited for my teammates; my parents had decided to take me to
the hotel (Fullon Shenkeng) directly, since I had a lot of stuff, and I
had arrived early. This took about an hour, after which we had lunch.
Then I waited for the hotel to give us our room cards, which took about
five hours, after which we had dinner. Finally, at night, I waited for
the Codeforces system tests. Very nerve-wracking. But I’m getting ahead
of myself.
Advantage #2 of being the home team: you can talk to all of the
organizers and volunteers fluently, so you can get them to help you more
quickly. Although we waited for our room cards for an obscenely long
time, I got the volunteers to replace my pinyin-name-card with a
legitimate one that said “Brian” on it really quickly.
Unfortunately, after I talked to a few more people, it looks like
they aren’t going to change my name in the database. So if anybody
reading this chances to look at the IOI live ranking and is unable to
find me, look for the first name “Po-En”.
It started with an online competition — write programs, solve
problems, get points. I wouldn’t call the problems easy, but they
weren’t hard either. So I solved all of them. To make it even less
impressive, only about twenty people submitted anything at all.
But the result was just what it was: I ended up with a free ticket to
PyCon APAC 2014.
I’d prefer a conference about a more functional programming language,
but I’ll take what I get. Another adventure!