revisiting language decisions.
* master – oz
* sim – k
* mdl – qi
lols. all-star. realistic:
* master – just writing it in erlang instead of poorly and distractingly reimplementing it piecemeal in scala (akka) / python (???). it’s shaping up to be spinoffable into an independent project.
* sim – obviously staying c++ / asm / cuda
* ports – python (~everything~ speaks python, yay pip)
* stats – probably python (numpy / scipy / pandas) – only other competitior is J
* mdl – current question. contenders: python, haskell, ocaml, scala. requirements: parallel exec, DS-mini-L handling, 3d cellular automata execution and concise serialization. needs to talk to kyotocabinet, needs a 3d math lib, ideally a json-rpc lib, maybe a parsecy lib.
python’s almost def out for mdl sadly, as loath as I am to depend on yet another language. it’s bad with tiny packing data, bad with dense 3d vector math, and terrible with parallel exec – mdl entities just got heavyweight, they have a local cache of spatial info per host, so in python you’d need 1 + #cores processes per box all jabbering over pipes, gotta worry about one going down not others, etc etc. ick.
it looks like a great fit for scalakka, but I’d really like to avoid having a jvm dep. or a scala dep. sbt, maven, odersky, oh my. don’t get me wrong, I love the language, but it’s still growing, people are still figuring out how to do things, and the jvm’s a huge bitch. a glorious jit, but so, so much ceremony I don’t want. so far I’m at a relative minimum of cruft, and I’d like to keep it that way. the jvm seems to like to own things. plus, where the package manager at?
so ocaml vs haskell. as far as language maturity goes ml’s got that down, haskell not so much but seems pretty good about not introducing breaking changes. I’ve never done anything in ocaml, I have no idea what it has in terms of packages and am almost sure there’s no kyoto binding for it, but I’ve seen what it can do with vector numeric calcs, and am really intrigued by its ability to modify its own grammar. the idea of updating blocks of 4k 3d vecs at a time, in place, many many many times, just seems anathema to haskell. yeah it can do it,
I dunno. I’d prefer haskell, but ocaml seems like a better fit from this distance, and would be fun. I guess I’ll compare raytracer implementations, pick the prettiest one I can find. exciting.
definitely getting a van. I realize how much I miss loud, loud, high quality, loud, high quality music at my disposal. city life, thin apartment walls don’t allow that. I just want a mobile room I can drive down to the beach and blast and code in, take to the woods for the weekends, take to festivals, road trip in. it doesn’t need to be some full on decked out camper van thing with running water and a stove and crap, shit I barely use my stove at home and I could pretty much live with just a jug of water instead of a sink. still gotta be a 4×4 though, been to one too many rainy, muddy festies.
oh yeah, a data structure I might wind up having to write: distributed, transactional, lazily cached octree. you could do some weird shit with that. I’ve also stumbled upon sly3, a smalltalk impl that claims to be not just lockless, but “anti-lock”. take that amdahl. I’ve always known my sim is gonna be this kind of async (sorta), but I might even explore it for the mdl now that I’ve seen some cold hard research on it. pinteresting.