Mark Wong-VanHaren, Developer in Palo Alto, CA, United States
Mark is available for hire
Hire Mark

Mark Wong-VanHaren

Verified Expert  in Engineering

Software Developer

Palo Alto, CA, United States
Toptal Member Since
April 9, 2013

Mark is an entrepreneur, engineer, CTO, and artisan with decades of startup experience, including co-founding He makes complex problems simple with expressive, maintainable code. He believes in building small, well-tested, functional pieces, loosely joined by a well-documented contract.



Preferred Environment

Git, Emacs, MacOS

The most amazing...

...thing I've built is 'live search' on With each keystroke, it performs a dozen searches in parallel and merges the results, all in mere milliseconds.

Work Experience

Software Engineer

2017 - PRESENT
Groq, Inc.
  • 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.
Technologies: Yesod, Haskell


2014 - 2016
Nickel Labs
  • 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.
Technologies: Swift, Datomic, Clojure

G-Speak Engineer

2012 - 2013
Oblong Industries
  • 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.
Technologies: Clojure, Java

Senior Software Engineer (contract)

2012 - 2012
  • 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 for administration.
Technologies: ZeroMQ, Python

Vice President, Research & Development

2010 - 2012
Reverb (FKA: Wordnik)
  • 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:
  • 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: 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. Open­sourced:
Technologies: MATLAB, CoffeeScript, Haskell, Python, Scala, Clojure


2005 - 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:­simple­composing­marketplace. I later re­-implemented the runtime in Haskell:
  • 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.
  • Developed JAML, a templating language for generating HTML pages on the client, using HAML syntax but embedding JavaScript logic (instead of Ruby). Open­sourced:
  • Wrote ActionArgs, a Rails plugin. DSL for declaring expected and optional arguments to controller actions. Performs validation and handles type conversion. Open-­sourced:­args.
  • 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:­type/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:­type.
  • 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.
  • Created FX, a JavaScript library for Dynamic HTML effects, etc. Built on top of Prototype.js.
  • 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.
Technologies: JavaScript, C, Haskell, OCaml, Ruby, Ruby on Rails (RoR)

Entrepreneur in Residence

2004 - 2005
Charles 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.
Technologies: JavaScript, Ruby on Rails (RoR), Ruby

Co-founder, CTO

2002 - 2004
Vitaganic (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.
Technologies: JavaScript, Perl

Co-founder and Software Engineer

1993 - 1999
  • 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.
Technologies: Perl, C++

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.


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 is a client-side HTML-templating engine for JavaScript. It allows one to easily generate HTML in one’s JavaScript project, using a HAML-like syntax.

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).


Swift, Python, Ruby, JavaScript, HTML5, JoCaml, Clojure, CoffeeScript, OCaml, CSS, Go, Java, C, Elm, Perl, C++, Scala, Emacs Lisp, Erlang, Haskell


Android SDK, Ruby on Rails (RoR), AngularJS, Unity, Unity3D, Django, Yesod,, Hadoop


EventMachine, Gevent, jQuery, NumPy, Natural Language Toolkit (NLTK), Compojure, ØMQ, ZeroMQ, Incanter, MALLET


Emacs, Eclipse IDE, OmniGraffle, GDB, Git, MATLAB, Weka


Test-driven Development (TDD), Functional Programming, Concurrent Programming, Agile Software Development


Salesforce, Android, Linux, MacOS


MongoDB, MySQL, PostgreSQL, LevelDB, Berkeley DB, Memcached, CouchDB, Mnesia, HBase


CTO, Freelancing, Big Data Architecture, Programming, Architecture, User Experience (UX), Big Data, Software Development, Front-end Development, Datomic

1987 - 1991

Bachelor of Science (Partially Completed) Degree in Symbolic Systems

Stanford University - California

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.


Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring