Mark Wong-VanHaren, Software Developer in Palo Alto, CA, United States
Mark Wong-VanHaren

Software Developer in Palo Alto, CA, United States

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.
Mark is now available for hire




Palo Alto, CA, United States



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.


  • 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
  • CTO

    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
  • CTO

    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++


  • ActionArgs

    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

    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

    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.

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


  • Languages

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

    Android SDK, Ruby on Rails (RoR), AngularJS, Unity, Unity3D, Django, Yesod,, Hadoop
  • Libraries/APIs

    EventMachine, Gevent, jQuery, NumPy, NLTK, Compojure, ØMQ, ZeroMQ, Incanter, MALLET
  • Tools

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

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

    Salesforce, Android, Linux, MacOS
  • Storage

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

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


  • Bachelor of Science (Partially Completed) Degree in Symbolic Systems
    1987 - 1991
    Stanford University - California

To view more profiles

Join Toptal
Share it with others