- G-Speak EngineerOblong Industries2012 - 2013
Technologies: Java, Clojure
- Wrote an Android app for Oblong's flagship product, Mezzanine, using OpenGL.
- Created reusable libraries for animations and positionable dialogs.
- Wrote tests for a server API in Clojure.
- Maintained proprietary Java-language client communications code, used by the Android app.
- Senior Software Engineer (contract)Numenta2012 - 2012
Technologies: Python, ZeroMQ
- Designed and built "Rio", a streaming-data infrastructure for Numenta's real-time predictive analytics product, Grok. It uses ZeroMQ for messaging, Gevent's cooperative lightweight threads for concurrency, MongoDB for buffering, and a web-based UI built with web.py for administration.
- Vice President, Research & DevelopmentReverb (FKA: Wordnik)2010 - 2012
Technologies: Clojure, Scala, Python, Haskell, CoffeeScript, Matlab
- Headed the R&D team, focused on modeling the semantics of English.
- Helped chart the company strategy, set the research agenda, and manage all development efforts.
- Developed TaskTagger, a Multi-class Naive Bayes classifier for tagging documents. (Scala, with MongoDB).
- Created Seymour, a document similarity search using tradition tf-idf weighting and cosine-similarity comparisons. (Scala, with MongoDB).
- Built Min-Loss Hashing, a locality-preserving hash function, trained via stochastic gradient descent, for fast, scalable similarity search. Implementation of the algorithm is described here: http://www.cs.utoronto.ca/~norouzi/research/papers/min_loss_hashing.pdf. (Haskell, Python with MongoDB).
- Programmed NikNet, a large graph of lexical data, to store/explore relationships among words. (Clojure, with MongoDB).
- Wrote Dismal, a Distributional Semantic Modeling infrastructure. It implements ideas described here: http://www.mitpressjournals.org/doi/pdf/10.1162/coli_a_00016. It allows one to request, declaratively and succinctly, what data to use and how to slice it for analysis. (Clojure, with MongoDB).
- Developed Lydia, a decorated REST-based corpus service for requesting the linguistic annotation of English sentences. (Clojure, with MongoDB).
- Built SGT (Simple Good-Turing) frequency estimation for smoothing probabilities from observed data. Opensourced: https://github.com/marklar/Statistics.SGT. (Haskell).
- CTOGlyde2005 - 2010
- Architected the mostly Ruby on Rails site and supporting tools for this eCommerce site. Was the sole engineer for more than a year. Built and managed a team of 13 engineers.
- Created Maiele, a live search service. There were many interesting business requirements for the project, partially described in this talk: http://cufp.org/videos/clearsimplecomposingmarketplace. (OCaml) I later re-implemented the runtime in Haskell: https://github.com/marklar/kainoa.
- Built StoredCredit, an in-house PayPal service. Double-entry bookkeeping system for tracking pending, available, and reserved funds of Glyde’s users. Featured internal DSL for declaring rules for the transfer of funds. (Ruby, MySQL).
- Programmed BopGun, a named-entity resolver for video game titles. (Haskell, Ruby).
- Wrote ActionArgs, a Rails plugin. DSL for declaring expected and optional arguments to controller actions. Performs validation and handles type conversion. Open-sourced: https://github.com/marklar/actionargs (Ruby).
- Created MethodMaker, a Ruby library for effecting and undoing monkey patches while a service runs, in order to turn on safeguards or additional logging. Open-sourced: https://github.com/marklar/hastype/tree/master/lib/method_maker. (Ruby).
- Built HasType, a Ruby library for optional typing. Provides an internal DSL for declaring method signatures in a Haskell-like syntax. Performs a couple of static analysis tests, but mostly performs runtime validations of method argument and return value types. For large coding projects, it helps to describe expectations using runnable code. Open-sourced: https://github.com/marklar/hastype. (Ruby).
- Wrote CStore, an Mmap-ed, relational, columnar data store for Ruby. (Ruby).
- Programmed OrdIntSet, a C-language Ruby extension for fast set operations on ordered lists of integers. (C, Ruby).
- Developed Dragon, a prototype of item-to-item collaborative filtering-based recommendation system. (OCaml, Erlang).
- Programmed TimeoutEvent, a system for scheduling future (and possibly cancelable) actions as part of Rails application framework. (Ruby).
- Entrepreneur in ResidenceCharles River Ventures2004 - 2005
- Performed technical due diligence for this venture capital firm.
- Wrote white papers and made presentations to the partners on technical issues related to investment opportunities.
- Advised start-ups.
- Co-founder, CTOVitaganic (FKA: Mitamins)2002 - 2004
- Co-founded this made-to-order eCommerce company.
- Developed the website to feature a "wizard" tool for formulating one's own product.
- Created a shopping cart and credit-card billing system.
- Hired a team of engineers to take it over for me.
- Co-founder and Software EngineerExcite1993 - 1999
Technologies: C++, Perl
- Co-founded Excite, a pioneering and successful search engine and portal.
- Managed and led two technical teams.
- Helped build the search engine as well as numerous web products and infrastructure pieces.
- Developed for the search engine, which is highly optimized and scalable. (C++).
- Contributed to the creation f Spider (web crawler), a Large, distributed system for collecting web documents. Pluggable architecture for filters and transformations. I gave a number of presentations on its architecture, at MIT, Stanford, and to various SIGs. (Perl).
- Helped build NewsTracker, perhaps the web’s first personalized news service. It included a special-purpose web spider and data management UI. (C++, Perl).
- Developed for LogMaster, a large collection of scripts for mining data from web server access logs and generating SVG graphs. For both internal metrics and reports to advertising partners. (Perl).