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
- Watched the beginning of this video on reconciling the hard-line take on types from the programming languages academics with the real world of software engineering. Why JavaScript Programmers Hate You: an ode to dynamic languages.
- As a group, we watched:
- Brett Victor's Inventing on Priciple, which I've seen before, but it was every bit as moving the second time.
- Gary Bernhardt's short piece, WAT, which was new to me and fun.
- Guy Steele's Growing a Language, discussed above.