Showing posts with label blogging. Show all posts
Showing posts with label blogging. Show all posts

Wednesday, 3 January 2007

the walls have eyes

So it seems C is reading this blog (heya), or at least skimmed it on occasion. Well, good. I've been writing this from the beginning with the assumption than anyone could be reading at anytime, so mission accomplished, objective: total transparency. Koweynlg started out of a general sense of frustration. I never seemed to know where all my time went. Keeping a private journal wouldn't cut it because I would eventually get bored and just stop. Keeping a public daily journal, that's much better for accountability. It's easier to imagine you have an audience (yeah... right).

Keeping it honest is suprisingly easy. I have no qualms about saying that I spent an entire week slacking off, audience or no audience. Un, I'm really bad at lying, some kind of genetic mishap, social handicap if you will. Deux, it is ultimately my problem if the thesis don't get done, and therefore push comes the shove, the only person that gives a shit if I work or not is me. Trois, the blog is mostly for my personal needs, it functions as a diary, and nothing is worse than lying to your future self. Quatre: writing this blog has become a force of habit, a semi-automatic process, getting ready to leave work? Core dump. Qu'on vide son sac. And here's the trick: after a week of saying you've been slacking off, knowing that everybody is reading about slacking off, you start to get a little self-conscious and getting back to work. It goes a little like this:
Honesty + Blog --> Accountability --> Productivity

That being said, today I got a friendly and well deserved reminder that I've got a paraphrase selection chapter to write... yeah... just one more script and makefile hack, eh? But yes, that is the entire point. Koweynlg exists to keep me honest, and to keep me on my toes. I'm sure it's not as simple as that. I've probably spent months whining about my lack of productivity with nary a result. But I like the feeling of it. I like the very thought of working in the open, my faults and failures ready for all to see.

Makefile of Drama

Tweaked the reporting from the Makefile of Despair. Trying to work our way to a more meaningful naming scheme.

SEMCONST stuff

I showed off my My-First-Oz-Code patch to Y today and he seemed to approve. Also learned that the curly braces has nothing to do with the distinction between statements and expressions. Ok, just method invocation for objects (for classes, you would use parentheses). We agreed that in order to avoid re-compiling the grammar each time C ran it in batch mode, we would have to move some more of semconst's intelligence into the Makefile (it's either that or compare dates, booorrring). Looks like I have a bit of hacking ahead of me, just a bit, just enough to get it so that we don't have to keep re-compiling grammars, and so that GenI can share the semconst grammar.

GenI stuff

I didn't really mean to do this, but I couldn't resist. I cleaned a bit of the enrichement and co-anchors code so that it would be easier to print out warnings without using unsafePerformIO. The trick behind all this is that you really do NOT need to mix IO or State into your code, not always. Sometimes, it's just a matter of cutting your functions into smaller pieces. Instead of one monolithic function which spits out unsafePerformIOs given a certain condition, I now have two functions: one to do the work, and another to check for warning conditions. You might have to refactor so that the two functions share common code, but generally, the right solution to the oh-no-Haskell-is-too-pure problem consists of making your code cleaner, not introducing another hack.

Paraphrase counter

This took no time at all. Remember how skeptical I was about extending the GenI parser, and making everything go through the parser? It was the right decision after all. Making little scripts to deal with this crap is pretty trivial. Just call the geniparser and extract values. I ought to go back and learn how to make a library with Cabal. Instead of distributing all these scripts with GenI, I could just make a libgeni and write the scripts anywhere. Here's what the script looks like (click to enlarge):