Steve Hanov
Waterloo, Ontario. N2V 2X9
Phone: 519-***-****
email: abo1es@r.postjobfree.com://stevehanov.ca
Skills Summary
Practiced in developing new employees and getting them to be productive in highly
skilled areas in very
little time.
Works well under pressure.
. Intimately familiar with EDGE/LTE/UMA
. Can create advanced web applications from scratch
cellular technologies.
without using any frameworks.
. Day to day work involves everything from
. Best languages are C, Javascript, C++, Python,
writing embedded software for resource-
PHP.
constrained processors, to creating scalable
web services for big data analytics.
. Used to know Perl, Java, Intel assembly.
. I enjoy reading computer science papers on
. In-depth knowledge and experience with the Win32
various topics and implementing the ideas.
API .
Personal Projects
http://Zwibbler.com
A vector graphics application implemented entirely in Javascript (9000
LoC).
Extensive use of HTML5 features, including Canvas, LocalStorage.
The server renders images using the Google V8 Javascript engine, with
Canvas and database access implemented using my own C++ objects.
websequencediagrams.com
Created a web-based tool in C++ to draw sequence diagrams from a text
description.
Learned how to sell to enterprise, run a company, and provide customer
service. Sales are growing, and customers include many well-known
technology and communication companies.
Learned to write portable applications that will run on many different
versions of Linux as well as Windows.
QBASIC Javascript
A limited implementation of QBASIC in Javascript (7500 lines of code).
Implemented complete parsing engine, from regular expressions to
Earley parsing to static type analysis.
http://stevehanov.ca/blog/?id=92
http://Rhymebrain.com
Researched dozens of machine learning papers to find a technique for
automatically extracting word pronunciation from English text, using the
EM algorithm.
Implemented entirely in C++, most algorithms are O(number of letters).
The rhyme engine starts from scratch for each request, loads the 12 MB
database, and completes in 30 ms. The entire website is currently
running on a 1GHz Acer Aspire One netbook.
Various windows apps
Various Windows applications made using the WIN32 C API.
Photowipe: Image processing removes objects from photos. Just paint
them black and hit go.
Banshee Screamer Alarm (1999): 100 lines of C++ code for the Alarm,
29,900 for the skin framework that allows switching on the fly and uses
3 inappropriate design patterns.
Shark Ticker. A desktop stock ticker.
http://www.hanovsolutions.com
Work Experience
Research in Motion
Senior Software Developer, Office of the CTO. 2011 to 2012
. As part of a small research think tank, we held frequent discussions about the future
of technology,
while we created prototypes to learn about them and evangelize to others in the
organization.
. I used Python/HTML5/Riak to create machine learning and cloud storage technology
demonstrations.
Team Lead, EDGE/LTE Firmware. 2003 to 2011
.
Manager and lead developer of a team responsible for writing and maintaining the
central
components of a cellular protocol stack, including EDGE RLC/MAC, RR, UMA, EDGE L1
control,
and LTE L1 control layers. Can quote sections of the cellular communications standards
3GPP
44.018, 44.060, 44.318, and 44.008 from memory.
. Seen as an expert who can be counted on to solve critical problems under pressure.
. Helped create logging tools to diagnose problems from the field.
. Wrote CSN.1 and ASN.1(PER) compilers at home for fun to aid development.
Microsoft CorporationSoftware Design Engineer, Networking and Transports. Spring 2002.
. Designed and implemented a Layered Service Provider that allows IPv4-mapped
communication
over IPv6 sockets.
Soma NetworksSoftware Developer, Telephony Group. Fall 2001.
. Modified real-time audio filters to support new encodings using Java and C.
. Improved reliability of product and regression test suite.
Quack.com (AOLbyPhone)
Software Developer, R&D. Spring 2000, Winter 2001.
. Aided management in understanding complex technical issues. Interacted with industry
partners to
get answers when needed.
. Created prototype projects to quickly answer questions like, How can we do this with
available
technologies? .
. Adapted vendor-supplied speech recognition engine to reside on a separate server and
process
concurrent requests via HTTP and XML.
. Designed and implemented an object-oriented hardware abstraction layer to simplify
Dialogic
telephony APIs.
Corel CorporationSoftware Developer, Text Engines. Winter and Fall 1999.
. Learned to quickly assess the impact of changes to legacy code in an extremely large
project.
. Proposed, specified, and implemented several new features in CorelDRAW.
. Researched and implemented support for multiple international character sets in a
document using
ANSI and Unicode.
. Fixed over 75 bugs in application, text rendering, and font engines.
Education
. University of Waterloo, Ontario. 2005-2009
Masters of Mathematics, Computer Science.
Completed while working full time. No specialization; Did course projects in:
o Colour Theory: Automatically finding N colours which appear maximally different from
each-
other.
o Natural Language Processing: Automatically finding word pronunciation (Later created
http://rhymebrain.com).
o Static analysis of binary executables (techniques for creating or detecting malware).
o Automatic type inference for compiler optimization.
o Wavelet edge detection for image processing.
. University of Waterloo, Ontario. Sept. 1998 April 2003.
Honours of Mathematics, Computer Science.
Took Compilers, Graphics, and Realtime, known as the big three courses.
Activities/Interests
.Programming Learning new technologies, reading computer science papers, creating
interesting web
applications. Regular presenter at Waterloo Devhouse hosted by PostRank.
.Cartooning A weekly comic strip of appeared in Imprint, the Waterloo school newspaper,
and later a
RIM internal newsletter.
.FASS A University of Waterloo theatre group that I have been involved with on and off
since 2002.