Headshot

Horia Coman - CV

Blog GitHub StackOverflow LinkedIn

Summary

I'm a software developer working on the ad systems bits at Stack Overflow. Before this I was doing more or less the same thing at Google, where I worked on AdSense and DoubleClick. While I'm focusing on building Internet applications, in previous lives I was a computer vision researcher, and any project which combines computer vision, machine learning or data analysis with building large distributed systems will pique my interest.

Experience

Software Engineer - Stack Overflow

May 2016 - Present in Bucharest, Romania

I'm a software developer working on the ad systems bits. Still learning the ropes.

Software Engineer - Google

May 2013 - March 2016 in London, UK

I worked on the AdSense product. The core work involved building streaming logs analysis pipelines which produce revenue optimization recommendations for clients. I made use of common Google infrastructure, but tools I've interacted with more closely are ProtocolBuffers/gRPC, Borg, BigTable, MapReduce/Flume and MillWheel. For the last three quarters I have worked on the Optimization Tab as one of the original three engineers in a group which later grew to six contributors. This was a large greenfield project which aimed to provide a single place for customers to find out and experiment with ways to improve their revenue. I was the owner for one of the two sections, which included building a front-end application, a service backend, as well as coordinating the work of other engineers as the project increased in scope

Research Engineer - DigialOptics Corporation / FotoNation

October 2012 - January 2013 in Bucharest, Romania

I developed algorithms for gesture recognition in an embedded setting (phones, TVs etc.). The work was equal parts computer vision and machine learning research (literature study, proposal for new methods if it was the case) and development (getting things to work in real-time with limited resources). The prototype was done in MATLAB under Windows, while the production code was done in C, in an embedded setting.

Software Engineer - Luxoft

October 2008 - September 2010 in Bucharest, Romania

I worked on software for wireless network switches. More precisely, I was on the team responsible for a network simulator for use in development and for testing purposes. I also did minor work on parts of the actual switch control panel software. The work was mostly done using C and Tcl under Linux and BSD.

Open Source

Bazel PyPi Integration

Bazel macros for building Python packages and interacting with PyPi.

I am the author and main contributor to this project.

SDHash

Python library for image hashing and deduplication.

One interesting algorithmic hurdle in ZigZag was figuring out which images were content-level duplicates of each other, even though the bitmap representation was different (different sizes, compression artifacts etc.), for which I built a Python package called SDHash.

TableTest3

Unit testing module for table-like test, for Python 3.

I am the author and main contributor.

Masters Thesis

Experiments in deep neural networks and sparse coding.

This project was part of the requirements for receiving a MSc after finishing my masters studies. I built an ML system for classification/regression centered around Deep Neural Networks and Sparse Coding methods. Thanks to an original contribution, it managed to beat the best known results in a number of benchmark problems. I've also used the system in an image text detection problem, as a showcase of a more complex application. One research paper (Sparse Coding Neural Gas Applied to Image Recognition in WSOM 2012: The 9th Workshop on Self-Organizing Maps) has been produced as a result of this work. The project was about 10000 lines of MATLAB and 3000 lines of C for the numerical computation.

Undergraduate Thesis

Verilog designs for a minimalist CPU and assorted I/O devices. Also includes an assembler and a system builder, written in Haskell.

This project was part of the requirements for receiving a BSc after finishing my undergraduate studies. I designed and implemented a minimalist microprocessor, a set of assorted I/O devices as well as a system builder and assembler. I used a Digilent Spartan 3e FPGA development board to test and showcase my designs. The project was about 10000 lines of Verilog, 1500 lines of Haskell, 600 lines of Makefiles for the build system and 500 lines of processor specific assembler. Overall ~13000 lines of code in the system core, several tools and 5 example applications.

ZigZag

The smart funny images browser.

A small image aggregation Android/iOS app. I built the server side component and the Android app, while another developer built the iOS app. I did this project as an exercise in building a multi-platform internet application with a service based architecture. I used Python with Django for the API server, Thrift and its Python RPC system for various services, PIL for image handling, vanilla Android for the Android application and Chef for configuration management.

Publications

Sparse Coding Neural Gas Applied to Image Recognition

WSOM 2012: The 9th Workshop on Self-Organizing Maps.

The work belongs to the field of Deep Learning. It studies one method of learning a dictionary, called Sparse Coding Neural Gas, and applies it, together with classical techniques from the field, to a problem of image recognition. The article was written as part of the work for my Masters Thesis and has appeared in Advances In Self-Organizing Maps, AISC 198.

Education

MSc University Of Lübeck & Universitatea Politehnica București

October 2010 - July 2012

BSc Universitatea Politehnica București

October 2006 - July 2010