Mark Wong-VanHaren

Mark Wong-VanHaren

Barcelona, Spain
Hire Mark
Scroll To View More
Mark Wong-VanHaren

Mark Wong-VanHaren

Barcelona, Spain
Member since March 22, 2013
Mark is an entrepreneur, engineer, CTO, and artisan with decades of startup experience, including co-founding Excite.com. 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
Portfolio
Experience
  • JavaScript, 15 years
  • Ruby, 9 years
  • Python, 3 years
  • Swift, 1 year
  • Ruby on Rails, 6 years
  • Emacs, 20 years
  • Functional programming, 7 years
  • MongoDB, 3 years
Barcelona, Spain
Availability
Part-time
Preferred Environment
Mac, Emacs, Git
The most amazing...
...thing I've built is 'live search' on glyde.com. With each keystroke, it performs a dozen searches in parallel and merges the results, all in mere milliseconds.
Employment
  • G-Speak Engineer
    Oblong Industries
    2012 - 2013
    • 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: Java, Clojure
  • Senior Software Engineer (contract)
    Numenta
    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 web.py for administration.
    Technologies: Python, ZeroMQ
  • Vice President, Research & Development
    Reverb (FKA: Wordnik)
    2010 - 2012
    • 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. Open­sourced: https://github.com/marklar/Statistics.SGT. (Haskell).
    Technologies: Clojure, Scala, Python, Haskell, CoffeeScript, Matlab
  • CTO
    Glyde
    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: http://cufp.org/videos/clear­simple­composing­marketplace. (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).
    • Developed JAML, a templating language for generating HTML pages on the client, using HAML syntax but embedding JavaScript logic (instead of Ruby). Open­sourced: https://github.com/marklar/jaml. (Haskell, using Parsec).
    • 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/action­args (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/has­type/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/has­type. (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).
    • Created FX, a JavaScript library for Dynamic HTML effects, etc. Built on top of Prototype.js. (JavaScript).
    • Built CatalogEditor, a set of drag­-n-­drop web­-based tools to allow content managers to organize Glyde’s catalog data. (Rails, JavaScript).
    • Programmed TimeoutEvent, a system for scheduling future (and possibly cancelable) actions as part of Rails application framework. (Ruby).
    Technologies: Ruby (on Rails), OCaml, Haskell, C, JavaScript
  • Entrepreneur in Residence
    Charles River Ventures
    2004 - 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.
    • Worked on my own projects, including a DHTML, Ajax web calendar (before the days of Google Calendar), called Skej. (Ruby on Rails, JavaScript).
    Technologies: Ruby (on Rails), JavaScript
  • Co-founder, CTO
    Vitaganic (FKA: Mitamins)
    2002 - 2004
    • Co-founded this made-to-order eCommerce company.
    • Designed and built the original, DHTML-heavy website website. (Perl, JavaScript).
    • 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: Perl, JavaScript
  • Co-founder and Software Engineer
    Excite
    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. (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).
    Technologies: C++, Perl
Experience
  • 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

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

Skills
  • Languages
    HTML5, Swift, JavaScript, JoCaml, Ruby, Python, Clojure, CoffeeScript, OCaml, CSS, Java, Elm, C, Erlang, Haskell, Emacs Lisp, MATLAB, Scala
  • Frameworks
    Android SDK, Ruby on Rails, Django, web.py, Hadoop
  • Libraries/APIs
    jQuery, NumPy, Gevent, EventMachine, Compojure, ØMQ, Incanter, MALLET
  • Tools
    Emacs, GDB, Eclipse, OmniGraffle, Weka
  • Paradigms
    Functional programming, Test-driven Development (TDD), Concurrent Programming, Agile Software Development
  • Storage
    MySQL, MongoDB, LevelDB, Memcached, Berkeley DB, PostgreSQL, CouchDB, Mnesia, HBase
  • Platforms
    Linux, Mac, NLTK, Android
Education
  • Bachelor of Science (partially completed) degree in Symbolic Systems
    Stanford University - California
    1987 - 1991
Hire the top 3% of freelance developers
I really like this profile
Share it with others