Josh Juran's Résumé
GitHub:
jjuranSummary
- C/C++, STL, POSIX, Mac OS Carbon (10+ years)
- Perl 5 (8 years)
- Varyx (self-developed language) (5 years)
- JavaScript (3 years)
- Android (2 years)
- Python (2 years)
I design, build, and maintain complex software systems consisting of simple parts. I create new developer tools as needed.
Work Experience
Independent Consultant to Mill Computing (remote)
May 2018 - present
The Mill architecture is a novel computer architecture for general-purpose computing.
- Fixed numerous bugs and missing functionality in Mill's LLVM compiler backend.
- Improved performance of a compiler bottleneck from O(n^4) to amortized O(n^2).
- Modified the Mill "specializer" compiler stage to output control flow graphs (via GraphViz) on request.
- Added initial C++ runtime support to the target platform.
- Wrote tools to adapt the Mill toolchain to existing build systems.
(C++, Python)
Independent Consultant to Ted Nelson (remote)
June 2015 - April 2016
ZigZag is a hypergrid-based data storage and navigation system in which cells may be connected along an arbitrary number of dimensions.
- Built the newly canonical implementation using a curses front end.
(Python)
Senior C++ Engineer at Ripple Labs (San Francisco, CA)
September 2014 - May 2015
Ripple is a payment network using a distributed ledger with some similarities to the Bitcoin blockchain.
On the "rippled" team supporting the low-level server daemon:
- Implemented support for Ed25519 keys and signatures.
- Implemented a protocol for propagating the deprecation and replacement of server public keys to peers (avoiding the need for all peer operators to manually edit a config file).
(C++11, cryptographic functions)
Senior Software Engineer at Scale Computing (San Mateo, CA)
December 2012 - October 2013
Scale Computing's flagship product is a virtualized storage and computing cluster appliance.
- Designed an event-driven testbed management system with subsecond status update latency (replacing the existing poll-every-minute system).
- Implemented and deployed the back end for same.
The same architecture was then reused in a rewrite of the product's UI. (GNU/Linux, C++, pthreads, MySQL, Thrift, make)
Contractor at iSwifter (later Agawi, acquired by Google) (Menlo Park, CA)
August 2011 - February 2012
- Patched Wine to enable old games to run on GNU/Linux.
- Wrote a tool to automatically clean up leaked shared memory segments, which were causing server crashes.
- Developed a proof-of-concept Windows version of a GNU/Linux server codebase, using Cygwin.
Computer Scientist at Adobe (Seattle, WA)
July 2007 - January 2009
Photoshop Express (cloud-based photo editor), storage cluster team:
- Redesigned and reimplemented file uploads to avoid performance bottlenecks in lighttpd (by writing a custom HTTP server optimized for receiving huge files instead of tiny GET requests).
- Refactored the build scripts to avoid duplicate logic.
(GNU/Linux, C++, sockets, make)
Software Development Engineer at Microsoft (Redmond, WA)
March 2006 - July 2007
Microsoft Office for Mac OS, shared components:
- Fixed bugs in the Compatibility Report module as assigned.
- Ported the demo version timeout and tamper-detection code to the Intel architecture.
- Implemented reusable changes to the Formatting Palette, including the ability to specify an alternate button shape (used for groups of buttons clustered together with the edges rounded).
In addition, I discovered and fixed latent bugs exposed by compiler warnings and made various improvements to the build infrastructure. (Mac OS X, C/C++, Carbon, Python)
Recent Projects
In between positions, I've kept my skills sharp with various projects:
-
Advanced Mac Substitute:
A high-level classic Mac OS emulator, including reimplementation of Toolbox/OS calls and 68K processor emulation. A factored application approach allows a single emulator back end to work with multiple front ends, including fbdev (Linux framebuffer), X11, macOS (via OpenGL and Core Graphics), Mac OS X (via Carbon), and VNC (with Android a work in progress). (C++, 68K asm, Varyx) -
Varyx:
A memory-safe, dynamic programming language with bigints, closures, modules, threads, and optional type checking, using C-like syntax. Though the language remains in development, the interpreter is quite functional, and has been used to write a digital signature tool, generate XML for property lists, and complete seven years of Advent of Code. (C++) - An HTML markup generation library (usable either dynamically or as a static preprocessor), ensuring the absence of syntax errors. It also pretty-prints the results for easy sanity-checking by humans. (HTML, Perl)