October 2023
« Sep    




Stack Storage and Garbage Collection

Recently, I ran across Mike Vanier’s page containing his opinions on Scalable Computer Programming Languages. I agree almost entirely with his list:

garbage collection no pointers or pointer arithmetic a foreign function interface to the C language static type checking with type inference support for exception handling run-time error checking for errors that can’t be […]

Scaling Automated CS Education

The success of Salman Kahn’s Academy and other instances of disruptive education, have started me thinking about how computer science education might scale. Let’s first analyze how Kahn is organizing the learning experience.

First: Have a huge collection of videos. Kahn’s library has been organically grown. Each video introduces only a single topic, through the […]

Keyboard Kraziness

Again, I spent far too much time looking at different keyboards. This time around, however, I can see that some people are progressing toward my latest ideal: The multi-touch surface with re-configurable keys. Mostly, I want to record all the cool things that I came across.

What’s wrong about what I currently have […]

Measuring Effectiveness of a Domain Specific Language

Also, at CGO I met Hassan Chafi, who is working on a graph-based Domain Specific Language. Even though I never seem to find time that I can explicitly devote to studying them, DSL’s are, to me, an compulsively fascinating topic. A day or so after the discussion it occurred to me that we need some […]

Experience, CGO 2012

I attended CGO 2012. The speakers were universally boring, but the conversations that you have with other attendees can be quite interesting. For example, I have been thinking that the hodge-podge babel of languages that makes up web applications should be replaced with something more lispy. William Maddox, currently at Adobe, shares the same opinion […]

Express yourself: to the compiler and to your fellow developer.

The keynote speaker at CGO 2012 (Chris Lattner, LLVM) put some crazy thoughts into my head.

Want compiler to know about:

memory disjointness aliasing Usage of data structures (array of struct vs struct of arrays) whether arithmetic is done on a pointer (and the bounds) invariants (in loops and between methods)

A language needs to […]

Thoughts on Hugo’s Thought Experiment

Dear Hugo Salinas Price,

In your article, Second Thoughts on the ‘Thought Experiment, you raised a sequence of 5 items which together form an objection which led you to believe that the Thought Experiment had to “go back to the drawing board”. I think, that with a small adjustment, this objection can be overcome. I […]

Information Uncertainty Principle

Through Denning’s Presentation Great Principles of Computing I heard of this fascinating tale regarding Buridan’s ass.

It refers to a hypothetical situation wherein an ass is placed precisely midway between a stack of hay and a pail of water. Since the paradox assumes the ass will always go to whichever is closer, it will […]

Segregate Third-Party JS Libraries

Typically, web authors simply load whatever library they’d like to use with full trust. In JS, such loading amounts essentially to a #include. I’m flabbergasted that this practice remains normal. It could be paranoia, but even without invoking all the security concerns, I’d be reluctant to include other people’s code simply because of the potential […]


Ugh. I spent too much time today and yesterday doing grading. I shouldn’t be this slow at it. Here’s the general process:

Look at 5–10 submissions and note what are the most common errors. From this, a rubric can be generated. Then, comb through all assignments and dock points according to the rubric. Even after […]