Archive for the 'meng' Category

Perspective on F#

Monday, 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…

Monday, 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:

micado 0.2 released

Friday, 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

Tuesday, 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

Friday, February 22nd, 2008

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

Protected: Research!

Friday, February 22nd, 2008

This post is password protected. To view it please enter your password below: