teferi: (Default)
In Murakami's Dance, Dance, Dance, the protagonist, a freelance writer, describes the PR and magazine article he writes for a living as "shoveling cultural snow", as the process of writing them is tedious, but largely mechanical.

This chapter of thesis (describing what the code in the compiler actually does) feels like shoveling technical snow.

(ps: 55pp omgwtfbbq)


Apr. 11th, 2006 05:11 am
teferi: (Default)
LaTeX: successfully formatted {53} pages.

What the hell, man.
teferi: (Default)
ohnoes:~/work/thesis/code adam$ svn ls -R | xargs wc -l 2>/dev/null
601 backend/3ac.rb
109 backend/stdlib.s
117 cinf.rb
39 common/globals.rb
241 common/symtab.rb
197 common/types.rb
94 frontend/cinf.rl
159 frontend/cinf.ry
169 tree/common-nodes.rb
373 tree/expr-nodes.rb
239 tree/function-nodes.rb
42 tree/stdlib.rb
178 tree/stmt-nodes.rb
62 tree/toplevel-nodes.rb
10 tree/tree.rb
2630 total
ohnoes:~/work/thesis/code adam$

I think it's done! Type inference works, it uses the argument registers for function calls, it even supports escape sequences in strings and character constants.

Now I have to finish writing the wretched thing up :(


Mar. 28th, 2006 02:03 am
teferi: (Default)
RIP Stanislaus Lem, 1921-2006

One of my favorite writers, in any genre, of all time. I don't think I've ever read anyone quite like Lem.

The world is less rich, less interesting. less joyous, and less humane for his absence from it.


Mar. 20th, 2006 05:58 am
teferi: (Default)
aglasgall3:~/work/thesis/code adam$ wc -l *.rb *.rl *.ry
711 3ac.rb
36 cinf.rb
1048 tree.rb
52 cinf.rl
150 cinf.ry
1997 total

Good night, Internet.


Mar. 10th, 2006 06:02 pm
teferi: (Default)
Mar 10 17:18:40 snark kernel: [4294753.078000] e1000: eth0: e1000_watchdog_task: NIC Link is Down
Mar 10 17:18:40 snark kernel: [4294753.078000] e1000: eth0: e1000_clean_tx_irq:
Detected Tx Unit Hang
Mar 10 17:18:40 snark kernel: [4294753.078000] TDH <0>
Mar 10 17:18:40 snark kernel: [4294753.078000] TDT <2>
Mar 10 17:18:40 snark kernel: [4294753.078000] next_to_use <2>
Mar 10 17:18:40 snark kernel: [4294753.078000] next_to_clean <0>
Mar 10 17:18:40 snark kernel: [4294753.078000] buffer_info[next_to_clean]
Mar 10 17:18:40 snark kernel: [4294753.078000] dma <1a845202>
Mar 10 17:18:40 snark kernel: [4294753.078000] time_stamp
Mar 10 17:18:40 snark kernel: [4294753.078000] next_to_watch <0>
Mar 10 17:18:40 snark kernel: [4294753.078000] jiffies
Mar 10 17:18:40 snark kernel: [4294753.078000] next_to_watch.status <0>

followed by a freeze, followed by my rebooting into single-user mode, followed by a console message about a double fault.
Goodbye, laptop ethernet. Time to call IBM Service and get this thing fixed while I still can.
teferi: (Default)
This guy is like this guy, only fifteen times funnier, less pretentious, and more entertaining. Also, he likes Ruby.

Sample: On the niceness of Lisp and the horrible pain of XML and the Web )

Reference also: this thread, wherein it is shown that I'm joined in my heretical refusal to worship at the altar of the Holy Angle Brackets by none less than the Google engineers. Good enough for me.


Mar. 6th, 2006 12:26 am
teferi: (Default)
Boo on the Academy for overlooking my favorite film of the year, Good Night and Good Luck. At least Clooney won another award.

But still.

Happy birthday to me.
teferi: (Default)
I sure wish I had discovered that Ruby has not only a debugger, but a debugger with full Emacs (gud) integration! This could have saved me at least a week of sticking print statements where they don't belong. Looks like it's back to good ol' Emacs for thesis code work, at least until RDT gets serious.

For the benefit of others, the Emacs debugger integration is in ruby1.8-elisp in Debian. You need to manually LOAD /usr/share/emacs-site-lisp/ruby1.8-elisp/rubydb3x.el[1](autoload.'rubydb "rubydb3" "Debug ruby code." t). Once you've done that, M-x rubydb, enter the name of the script to run with any arguments, and you'll be at a suspiciously familiar (if you know GDB) prompt.

Here's a (partial?) reference for the debugger.

Thesis update: I submitted a finished chapter and code snapshot yesterday. Paul seems to care more about getting more written output out of me than he does about me actually finishing this compiler, an attitude I can understand but makes me slightly sad. Oh well. One down, three to go. I think I have some momentum on my side now. Relatedly, [livejournal.com profile] yellowpigs's srthesis documentclass for LaTeX works like a charm - I'm quite pleased with what my output looks like.

Topology exam tomorrow. Ugh. So very tired of homology theory. Wish I'd never heard of chains and bounding cycles.

[1] This shouldn't be necessary. I don't know what I'm doing wrong.


Feb. 14th, 2006 11:05 pm
teferi: (Default)
I keep thinking the girl in this song is saying "friends page" instead of "front page." It confuses me.

(Good song, though)
teferi: (Default)
From bc(1):

If bc is invoked with the -l option, a math library is preloaded and
the default scale is set to 20. The math functions will calculate
their results to the scale set at the time of their call. The math
library defines the following functions:

s (x) The sine of x, x is in radians.

c (x) The cosine of x, x is in radians.

a (x) The arctangent of x, arctangent returns radians.

l (x) The natural logarithm of x.

e (x) The exponential function of raising e to the value x.

j (n,x)
The bessel function of integer order n of x.

One of these things is not like the others, one of these things is just not right...
teferi: (Default)
thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis DEADLINE DEADLINE

thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis DEADLINE DEADLINE

thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis thesis MEETING! It's a meeting! Oh, it's a meeting!
teferi: (Default)
1) It is better to seek forgiveness than to ask permission. (Don't check to see if you can do something before trying to do it, because the answer might change under you.)
2) Laziness is a virtue. (Delay calculating values until you actually need the values)
3) Adding another layer of indirection solves everything. (I don't really have a pithy explanation of this, it's just true.)
4) Just because something is impossible doesn't mean it can't happen.
Corollary: Impossible behavior is your runtime screaming at you to pay attention. Ignore or work around it at your peril.

Is this worth expanding on? Am I just being overly pretentious? Should I go into more detail about situations that gave rise to these?
teferi: (Default)
(This was initially a much longer entry, but logjam crashed. Grr.)

So I've been writing the compiler for the language I designed for my senior thesis in Ruby. I've been pretty happy with it overall, but the available tools seem badly deficient:

- I really, really miss Eclipse or MSVS-style Intellisense. Neither Emacs's ruby-mode or RDT for Eclipse provides anything remotely similar. I realize that this is difficult to implement for a language as dynamic as Ruby, but damn, do I miss it.

- There's a serious shortage of cross-referencing ability - keeping track of which productions in the grammar I've implemented syntax tree nodes for, and which syntax tree nodes I've implemented the necessary intermediate-code instructions for is rapidly becoming a bigger problem than my puny brain can handle (the thing's a hair under two thousand lines long and growing!). This is partially related to the fact that there isn't *any* editor support for rex and racc (the lexer and parser generators I've been using, respectively), but is larger - RDT just doesn't keep a master project list of classes and methods.

- The available documentation for rex and racc is pretty bad (and Engrish, where it exists at all!), but I seem to be getting by okay. My biggest gripe is that the rex documentation seems to be completely inconsistent with rex itself.

- This is mostly a RDT-related problem and sounds silly, but I really miss how ruby-mode inserts "end" automatically after I type "def" or "class" and similarly completes code. It also doesn't do auto-indent, which is much more annoying.

So, anyone out there in LJ-land doing Ruby development and know of better tools than the ones I've tried?
teferi: (Default)
There's something very satisfying about clicking "Commit" and watching the changes to your code be pushed to the repository.

My compiler does stack allocation properly now. It also properly only gives functions global labels. I think the backend is nearing completion.

teferi: (Default)
- temporaries go on the stack, even if they're temporaries used in getting the initial value of a global.
- why functions have prologues and epilogues
- calling conventions
- languages where all types have the same size are very convenient
- duck typing is great
teferi: (Default)
I'd tangled with NetworkManager before, so when I saw that a new version had finally landed in Ubuntu, I wasn't expecting much. On the other hand, though, the state of Linux wireless has been so bad that I didn't really have anything to lose by trying it, so I apt-get install network-manager.

The Damn Thing Just Works.

It's unbelievably creepy. It started, I ran nm-applet, and it stuck a nice little icon in my notification area. I picked my apartment's wireless network from the list, entered my WEP key when it prompted me, and all of a sudden, I had connectivity. It worked perfectly across suspend-to-disk and suspend-to-RAM. It picked up both WEP networks in at home in New Jersey and the unencrypted network at school, and worked flawlessly with all of them.

I'm really, really impressed. And kinda scared.
teferi: (Default)
Dear everyone who posted a LJ entry to note the fact that their computers inserted the leap second properly:

teferi: (Default)
I've been working on compilers projects for too long.

Sticky note on my desk: "For great lexical scope, symtab entries become stacks hurrr durrr."


Dec. 15th, 2005 02:31 pm
teferi: (Default)
∀x:(Fx => Cx)
Fx := x is a final exam
Cx := x is complete
Page generated Jul. 28th, 2017 04:55 pm
Powered by Dreamwidth Studios