Michael Geary
Software Designer, Developer, and Engineer
Areas of expertise
- Designing web and native apps to delight users and meet their needs
- Web front end and back end development
- Windows applications and low level code
- Data importers
- Hardware control
- Creating and documenting APIs and SDKs
- Data visualization and geographic data and mapping
- System integration for VR apps in Unity and Unreal Engine
- Reverse engineering
- Technical writing
- Mentoring and helping other developers be successful
- Fluent in JavaScript, TypeScript, Python, Ruby, C, C++, C#, various machine languages, Angular, Win32, .NET, Flask, Sinatra, protocol buffers, GIS data formats, PostgreSQL, PostGIS, App Engine
Other areas of familiarity (not an expert, but comfortable jumping into any of these as part of a project):
- Electrical engineering (electronic hardware and ham radio got me into programming)
- Lua, Swift, Objective-C, Kotlin, Java, Android (including NDK), iOS, macOS, Rails, Django, OpenResty, OpenGL, WebGL
Career highlights
- Alteryx, 2020
- Design and development of a new Python API
- Wing (Alphabet), 2018-2019
- Airspace data importers - converted C++ import code to Python, reduced incremental build time from 8 minutes to 1 second
- Geospatial data viewer and KML visualization tools
- Web interface for legacy command line manufacturing test application
- Pegasystems, 2017-2018
- Interceptor for Flash ActionScript to inject bytecode and allow automation of user activity
- Quiver, 2016-2017
- Windows API interception, window subclassing, anti-hacking measures, fix multithreaded memory leaks
- Willdan, 2016
- Open source custom uploader for SharePoint documents
- Interactive office location map
- EaseVR, 2015-2016
- Open source analytics client libraries for Unity, Unreal Engine, C++, JavaScript
- SRI International, 2016
- System to import LIDAR point clouds into Unreal Engine for display in VR
- Jaunt VR, 2015-2016
- "Over the shoulder mode" using OpenGL to display VR content on external display
- Unity launcher sequence for Cardboard on Android and iOS
- Hacked Cardboard JVM bytecode to fix "flash of unwanted user interface" (FOUUI)
- Restructured C++/JUCE/OpenGL player code for easier maintenance
- Numerous other "fit and finish" improvements and bug fixes
- Skype (Microsoft), 2015
- Interactive traffic visualization map to show what other countries each country talks to
- Google, 2008-2014
- Election results and voter information maps for US and foreign elections, featured on Google home page and syndicated to numerous news sites
- PolyGonzo open source library for fast polygon drawing in Google Maps API
- 3D tour of Vancouver 2010 Olympics using Google Earth API
- KML visualizations of election results
- Persado, 2013-2014
- Website editor to allow experimental changes to a site without changing back end code, using a "man in the middle" Sinatra proxy server and JavaScript API for editing and comparing versions
- OnLive, 2013-2014
- OpenGL system to overlay multiple web views running in separate threads onto a single display
- Many other front end and back end features for their game launcher
- Carnegie Institution for Science, 2010-2012
- CLASlite Online, an interactive web viewer for Amazon rainforest satellite images and deforestation using Google Earth Engine
- 360 Cities, 2008-2010
- Optimized a location clustering program to reduce its run time from eight hours to 30 seconds
- Roundarch Isobar (Nystrom), 2009-2010
- Google Earth API library for interactive drawing and markup tools on a 3D globe
- jQuery, 2006-2010
- One of the first contributors to the project before its 1.0 release
- Contributed several architectural improvements to the library
- Helped train many of the earliest jQuery developers by answering questions on the mailing list
- Electronic Frontier Foundation, 2008
- Used my PolyGonzo open source library to help develop OurVoteLive map of election problems and inquiries
- Ageekie, 2007-2008
- Developed PdfChip, a way to connect a PDF datasheet directly to a development board, so you could view ARM chip pin status in the PDF and click on pins to toggle them on the actual chip
- Zvents, 2005-2007
- Event calendar and map widgets for Zvents customers to embed in their sites
- Rails plugin to support ClearSilver template engine
- Helped team solve JavaScript and browser compatibility issues
- Adobe Systems, 1990-1995, 2002-2005
- Created and documented interactive multimedia JavaScript API for PDF files
- Improved email support for Lotus Notes and other email clients
- Introduced the use of VMware for compatibility testing
- Split Acrobat's monolithic EXE codebase into separate EXE and DLL builds so other apps and shell extensions could use Acrobat's rendering engine
- Helped other developers solve tricky Windows programming issues
- Hacked into Windows 3.0 font rendering system to intercept text output calls and use PostScript rasterizer for scalable fonts
- Printer port monitor and COM interface for Adobe Distiller
- Rearchitected PDFWriter to run in user mode with a small kernel mode stub, to support NT 3.51 and 4.0 from the same code base
- Borland Software, 1991
- Created WinSight, a Windows message monitor and investigator included in Delphi and C++ Builder, based on my Spy program featured in BYTE Magazine
- Cooper Software (Microsoft), 1988-1990
- Led the team that created the "Visual" part of Visual Basic
- Created the VBX interface that millions of developers used to build and embed custom controls in Visual Basic apps
- Gupta Technologies, 1986-1988
- Designed and developed SQLWindows, the first visual programming tool for Windows
Other activities
- Stack Overflow, 2013-present
- 600+ quality answers, 25,000+ reputation, top 2% contributor (was top 1% for a while, which sounded much more impressive!)
- Harmonica player and photographer
More work history and entertaining stories on LinkedIn: http://link.geary.com
Stack Overflow: http://stack.geary.com
GitHub: http://github.geary.com
Contact: mike@geary.com or 408-372-7373