hacker-school-monday-june-23rd-2014

The annual North American conference for computational linguistics, which I have not missed since 2003, is convening in Baltimore as I write this. I was deeply disappointed about having to miss it, although, of course, by "having to", I mean I had something I wanted to do even more, and that's a great position to be in. Anyway, since it is so close to New York, and since the Sunday always consists of tutorials and the opening reception, I decided to go in just for that day.

The tutorial I chose was on a hot topic I've been following with interest: New Directions in Vector Space Models of Meaning. It was very well done, if a little too much to absorb in one afternoon, but the slides are online, and I'd like to study it further. I'm glad I attended.

The reception was a lot of fun, but I drank a fair share, and then had to catch my return bus to New York at 11:20 pm, arriving back home at 3. So, I was a little bit tired yesterday, and not quite as functional as usual.


I decided that it would be best to focus on only one thing, the Factor protagonist project, and I made some slow, but satisfying progress with that. I also watched some videos, part of one that was suggested in chat, and three that were watched as a group activity.

The last one we watched, Guy Steele's Growing a Language, was both brilliant in its execution, and interesting in its message. I would not wish to spoil it, but what struck me as I listened, was how beautiful a fit for the concept he was demonstrating the language Factor is. Factor consists of vocabularies of words that are built on each other starting from a kernel of stack manipulations and some basic types. The approach to polymorphism seems to combine the best of object-oriented and functional wisdom. Extensibility is a core value of the language.


I having been worrying about my progress, but I know that part of the slowness is just due to the learning curve of writing in a new language.


Plan

  • Factor / Protagonist
    • Time to reassess, in light of what I learned about interfacing on Friday. Possibly refactor for modularisation.
    • Make more progress on the core functionality.

Actual

  • Factor / Protagonist

    • Made several small changes and did some refactoring:
    • the constructor I had added previously seemed to be getting in the way, rather then helping, so I took it out.
    • I found a shortcut word for something I had done repeatedly. I expect to learn a lot more of this kind of optimisation.
    • Made a couple more symbols. I'm still not sure if this is canonical. I look forward to getting some review.
    • I fixed the function make-file-id so that it does something useful. That thing is to hash the contents of the file and keep the file extension.
  • Git

    • I went to most of Alan's tutorial on this (mistakenly thought the break was longer than it was, so I missed a bit in the middle). I got a better idea of the data structure that Git implemements, thus making everything more comprehensible. Also learned the handy command git reflog, which gives a lot of information that will come in handy.
  • Videos