-
Partial evaluation of fat languages
Language theory has always been my favorite part of computer science, and recently I have been playing around with partial evaluation. Creating an optimal, self-applicable specializer is really tricky. I thought that I was helping myself by working in a very minimal language, but this turned out to be counter-productive. It is easier to write a specializer in a language that has a large number of unnecessary primitives. The additional complexity of each primitive is very localized: just add another case to the giant switch statement, which does nothing more than “lift” the container language’s primitive into the contained language, and is a small price to pay for easing the coding of the rest of the specializer.
-
Automatic redis, part two: sorting and data structures
This post is part of a sequence I am calling automatic redis, which is my attempt to solve the cache invalidation problem.
-
Automatic redis, part one: inserts and cache key extraction
This post is part of a sequence I am calling automatic redis, which is my attempt to solve the cache invalidation problem.
-
Rubber-duck logging
I often ask myself, “How can I be a more productive software engineer?” I can answer this question better if I break it down into pieces.
-
A data representation language
I have an idea for a language, and I want to know if it already exists. The language is a data representation language. It encodes rules about how data is represented in a store (e.g. MySQL, HBase, Riak, Neo4J, MongoDB, Redis, flat files). The language would have four directives:
entity
,predicate
,operation
, andrealize
. Theentity
directive gives the “platonic” description of a type.