- Software EngineerGroq Inc2017 - PRESENT
Technologies: Haskell, Yesod, Reflex.Dom
- Built web frontend for select customers to upload large files for us to process and report back on. (Haskell, Yesod).
- Built framework for backend workers to subscribe to work queues, claim jobs, performs data analysis, and publish the results back to a data broker. (Haskell, Google Cloud Platform).
- Helped build the core data-processing logic, something a bit like a compiler for AI programs, converting them to semantically equivalent ones optimized to run faster on specialized hardware. (Haskell).
- Built mini framework for profiling different stages of the "compilation" process, to find space/time leaks. Helped improve processing time (through use of more-efficient data structures, eager evaluation, and even IORefs). (Haskell).
- Built simple interactive web pages. (Haskell, GHCJS, Reflex.Dom).
- CTONickel Labs2014 - 2016
Technologies: Clojure, Datomic, Swift
- Built a "Best New App" across all categories in the App Store. (Swift).
- Built the entire backend data service for Nickel. This included not only the endpoints for the iOS app, but also iOS app notifications, SMS (texts), communication with external (bank) APIs, the data store (in Datomic), and an in-house admin tool for customer service. (Clojure).
- 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).