Software Engineer2017 - PRESENTGroq, Inc.
Technologies: Haskell, Yesod, Reflex.Dom
- Built a web front-end for select customers to upload large files for us to process and report back on.
- Built a framework for back-end workers to subscribe to work queues, claim jobs, performs data analysis, and publish the results back to a data broker.
- 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.
- Built a 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.
- Built simple interactive web pages.
CTO2014 - 2016Nickel Labs
Technologies: Clojure, Datomic, Swift
- Built a "Best New App" across all categories in the App Store.
- Built the entire back-end 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.
G-Speak Engineer2012 - 2013Oblong Industries
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)2012 - 2012Numenta
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 & Development2010 - 2012Reverb (FKA: Wordnik)
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.
- Created Seymour, a document similarity search using tradition tf-idf weighting and cosine-similarity comparisons.
- 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.
- Programmed NikNet, a large graph of lexical data, to store/explore relationships among words.
- 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.
- Developed Lydia, a decorated REST-based corpus service for requesting the linguistic annotation of English sentences.
- Built SGT (Simple Good-Turing) frequency estimation for smoothing probabilities from observed data. Opensourced: https://github.com/marklar/Statistics.SGT.
CTO2005 - 2010Glyde
- 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. 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.
- Programmed BopGun, a named-entity resolver for video game titles.
- 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.
- 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.
- 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.
- Wrote CStore, an Mmap-ed, relational, columnar data store for Ruby.
- Programmed OrdIntSet, a C-language Ruby extension for fast set operations on ordered lists of integers.
- Developed Dragon, a prototype of item-to-item collaborative filtering-based recommendation system.
- Built CatalogEditor, a set of drag-n-drop web-based tools to allow content managers to organize Glyde’s catalog data.
- Programmed TimeoutEvent, a system for scheduling future (and possibly cancelable) actions as part of Rails application framework.
Entrepreneur in Residence2004 - 2005Charles River Ventures
- 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 startups.
- Worked on my own projects, including a DHTML, Ajax web calendar (before the days of Google Calendar), called Skej.
Co-founder, CTO2002 - 2004Vitaganic (FKA: Mitamins)
- Co-founded this made-to-order eCommerce company.
- Designed and built the original, DHTML-heavy website website.
- 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 Engineer1993 - 1999Excite
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.
- 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.
- Helped build NewsTracker, perhaps the web’s first personalized news service. It included a special-purpose web spider and data management UI.
- 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.
- ActionArgs (Development)https://github.com/marklar/action-args
A Rails plugin for declaring args to Controller actions (Ruby). DSL for declaring expected and optional arguments to Controller actions. Performs validation and handles type conversion.
- HasType (Development)
A Ruby library for optional typing.
Provides an internal DSL for declaring method signatures in a Haskell-like syntax. For large coding projects, it helps to describe expectations using runnable code.
- JAML (Development)https://github.com/marklar/jaml
- Escalera (Development)https://github.com/marklar/escalera
This was an interview project, and hence is small and easy to understand. It's written in Ruby.
Simulates the shuffling of playing cards and generates statistics on the resulting decks (as regards 3-card straights).
FrameworksAndroid SDK, Ruby on Rails (RoR), Django, Web.py, Hadoop
Libraries/APIsEventMachine, Gevent, jQuery, NumPy, NLTK, Compojure, ØMQ, Incanter, MALLET
ToolsEmacs, Eclipse IDE, OmniGraffle, GDB, MATLAB, Weka
ParadigmsTest-driven Development (TDD), Functional Programming, Concurrent Programming, Agile Software Development
StorageMongoDB, MySQL, PostgreSQL, LevelDB, Berkeley DB, Memcached, CouchDB, Mnesia, HBase
PlatformsAndroid, Linux, MacOS
- Bachelor of Science (partially completed) degree in Symbolic Systems1987 - 1991Stanford University - California