I continued to work with F#, deploying a couple of small apps.
The really cool part came when I realized that with F# I was programming at the language level -- that I could effectively and easily write my own languages. So I decided I would like rails-like entities, where the entity reads the structure of the table and then conforms itself to whatever is in the table.
Couple hundreds of lines of code later, and presto chango, I could simply say "give me a list of customers" and point it to the table and I had a list of customers. This totally disconnected the database data structure from the code. Add a new field in the database and there was nothing to change in code. Or add a new field in the type and have it percolate out to the database. Change database providers and it was only a few function changes. Very cool. The kind of simple fix Microsoft should have done with data access instead of writing ODBC/ADO/OleDb//EF/etc
Then I had a blast with mailboxes, er monads, agents, and threads. Ended up writing a small app that was purely functional and all ran in the background. It was so automatic, at first I couldn't figure out how to start the dang thing!
This led to a venture into MPI and other technologies which has just begun. I'm also trying to wrap up my language work with a full DSL sometime soon (if I have a project that needs it). Looking forward to parsing and setting up trees and walking them. I also broke out of windows and started working in a linux environment using Mono, Apache, and MySQL.
Incredibly fun stuff. Looking back, I really had a blast this past year. Next year should be even better.
The really cool part came when I realized that with F# I was programming at the language level -- that I could effectively and easily write my own languages. So I decided I would like rails-like entities, where the entity reads the structure of the table and then conforms itself to whatever is in the table.
Couple hundreds of lines of code later, and presto chango, I could simply say "give me a list of customers" and point it to the table and I had a list of customers. This totally disconnected the database data structure from the code. Add a new field in the database and there was nothing to change in code. Or add a new field in the type and have it percolate out to the database. Change database providers and it was only a few function changes. Very cool. The kind of simple fix Microsoft should have done with data access instead of writing ODBC/ADO/OleDb//EF/etc
Then I had a blast with mailboxes, er monads, agents, and threads. Ended up writing a small app that was purely functional and all ran in the background. It was so automatic, at first I couldn't figure out how to start the dang thing!
This led to a venture into MPI and other technologies which has just begun. I'm also trying to wrap up my language work with a full DSL sometime soon (if I have a project that needs it). Looking forward to parsing and setting up trees and walking them. I also broke out of windows and started working in a linux environment using Mono, Apache, and MySQL.
Incredibly fun stuff. Looking back, I really had a blast this past year. Next year should be even better.