Types

August 16th, 2008

Since learning about the Curry-Howard isomorphism, I’ve been looking more closely at type theory, starting with the freely available and well-written book, Type Theory and Functional Programming. But now, I’ve been wanting to play with some type systems more. I looked at LambdaPi, which prompted me to review my basics. So I jumped to Pierce’s class, Software Foundations, which he discusses in Lambda The Ultimate TA. The lectures/scripts are a great and simple way to learn Coq. I’ve only just finished lecture 3, and I finally understand Coq’s role as a proof assistant. I am planning to work through the entire set of lectures.

New Blog

July 23rd, 2008

I’ve just created a new blog: Spotless Spots.

Completed TECS

June 14th, 2008

I completed all the projects I wanted to from The Elements of Computing Systems (my Amazon review). I did 10 out of 12 projects, just leaving out projects 9 and 12 (the ones involving high-level programming in Jack). I had a lot of fun. My favorite project was project 8, which completed the VM translator. I learned a lot all the way (though, perhaps, less than I thought I would in the last project, the compiler from Jack to the VM). Highly recommended.
I am not sure whether TECS will be enough to prepare me for my Computer Architecture class. I definitely have the big picture of architecture in mind now, but I might need to supplement it with some 6.004 readings.

Mathematical Books

May 21st, 2008

I went to the library today to check out Munkres’ Topology, because I am interested in listening in 18.901 next fall. I couldn’t find it except on Reserve, so I checked out some lighter readings:

I got the Spivak’s books because Gerry Sussman recommends Calculus on Manifolds in Structure and Interpretation of Classical Mechanics (SICM), where he mentions that his notation is inspired from Spivak’s.

Perspective on F#

May 19th, 2008

I’ve been using F# for roughly a semester now. It has been very beneficial to my project.

As part of my research, I am implementing a plug-in to AutoCAD, Micado. A Windows-only application, AutoCAD can be extended in C++, .NET, and AutoLISP — all in various degrees; in particular, certain core extensions can only be implemented in C++. Given these constraints, I chose to write the bulk of my application on the .NET platform. Initially, I implemented a prototype in C#. When it was time to start fresh, I decided to spice things up by learning F# and using it whenever possible.

The benefits of switching to F# entirely exceeded my expectations. I feel my code is written at a higher-level of abstraction. Coding in F# feels like building little languages that allow me to express my problem closer to its domain, thus solving a class of problem instead of just the one specific problem I am facing (whose requirements keep changing anyways — that’s research, after all!)

This resonates with a recent post of Don Syme to the F# mailing list:

[…] F# clearly excels at being a “domain” language. […] So I’d encourage us all to look at F# in that light: a general-purpose programming tool that can be applied very effectively to “crack open” domains like those above and apply the essential power of both FP and OO programming to problem solving in those domains, as well as being just a great FP/OO language. Applying F# to solve problems is what it’s all about, and that’s where much of the fun lies.

I’ll see if I can give specific examples in Micado. To be continued…

For now, let me conclude by saying that F# is tons of fun. And the fun elevates the research.

The term is coming to an end…

May 19th, 2008

This term was a lot of fun. Specially Sussman’s class. In fact, I liked it so much that I am thinking of taking his other class next term (the idea of expressing a physical theory as an unambiguous computer program really appeals to me). Then, for my second class, which has to be in Systems (and unfortunately, there isn’t that many options next fall!), I hesitate between Operating Systems and Computer Architecture. I feel Computer Architecture might be more useful in the long run, specially for someone like me who hasn’t taken a solid undergrad class in architecture. However, I heard it’s boring, and Operating Systems is sure to be more fun (though probably more time-consuming!), as I’d get to write my own operating systems from scratch in the labs.

On to achievements:

  • In Sussman’s class, my team and I had a really great time on the final project. We used the great book Building Problem Solvers (my Amazon review) as a base to implement a debugger for metabolic networks, BioHacker.
  • In my research, I finally released my work as a real product, Micado. The latest feature I’ve added is automatic control inference & generation, though this is still not officially included yet.

Now, I only have my film music exam on Wednesday. I don’t think I’ll study much for it. Instead, I’ll be reading a few books:

Review of Expert F#

April 2nd, 2008

I posted a review of Expert F# on Amazon.

micado 0.2 released

March 28th, 2008

I’ve just released Micado 0.2. This release features generation of instructions and export to a Java GUI. It’s pretty neat!

Now, I’ll move to more research-oriented problems.

micado

March 11th, 2008

I’ve just publicly released Micado, the AutoCAD plug-in for programmable microfluidics, which I’ve been working on as part of my Meng.

CiteULike

February 22nd, 2008

In order to get more organized about papers to read, I created an account at CiteULike.