Josh Juran's Résumé
Summary
- 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
May 2018 - present
The Mill architecture is a novel belt-machine-based computer architecture for general-purpose computing. Currently, my focus is maintenance of Mill's LLVM compiler backend, to which I've brought dramatic performance increases, along with numerous bug fixes and other improvements. Previously, I modified the Mill "specializer" compiler stage to output control flow graphs (via GraphViz) on request, added initial C++ runtime support to the target platform, and wrote tools to adapt the Mill toolchain to existing build systems. (C++, Python)
Independent Consultant to Ted Nelson (San Francisco, CA)
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. I 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, I implemented support for Ed25519 keys and signatures, as well as 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, crypto)
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. I designed an event-driven testbed management system with subsecond status update latency to Web browser clients, which replaced the existing poll-every-minute system; I also implemented and deployed the back end. 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
I started off working on a multi-million-dollar support contract which involves patching Wine to enable old games to run on GNU/Linux. Additionally, I wrote a tool to automatically clean up leaked shared memory segments, which were causing server crashes. Finally I developed a proof-of-concept Windows version of a GNU/Linux server codebase, using Cygwin to port the code and Perl for rewriting Erlang code.
Employee of Adobe (Seattle, WA)
July 2007 - January 2009
Adobe's Photoshop Express is a community-oriented Web application. On the storage cluster team, I 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. I also refactored the build scripts to avoid duplicate logic. (GNU/Linux, C++, sockets, make)
Employee of Microsoft (Redmond, WA)
March 2006 - July 2007
I worked on core aspects of Microsoft Office for Mac OS. I fixed bugs in the Compatibility Report module, ported the Test Drive (demo) timeout and tamper-detection code to the Intel architecture, and implemented 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) which was reused after the fact by another developer for a different feature.
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 Core Graphics only), 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. (C++) -
Vertice:
A software-based 3D renderer with shading (taking into account light distance and angle of incidence), texture-mapping, and color anaglyphic stereo. (C++) -
Noisegate:
A virtual keypad for entering a code to unlock the gate at the Noisebridge hackerspace. (Prototype at <https://www.jjuran.org/Noisegate-debug.apk>.) (Java, Android) -
Chronometer:
An analog clock using direct touch manipulation. (Prototype at <https://www.jjuran.org/Chronometer-debug.apk>.) (Java, Android) -
Order of the Stick:
A webcomic viewer app for Android. (Prototype at <https://www.jjuran.org/OOTS-debug.apk>.) (Java, Android, Perl) -
Maxim:
A simulation in CSS and JavaScript of the classic Mac OS look and feel -- and portions of its API, as well. (HTML, CSS, JavaScript) -
Freemount:
A network file interaction protocol designed to minimize latency. -
FORGE (File-Oriented Reflective Graphical Environment):
A cross-platform, language-independent graphics and windowing API (and prototype implementation) in the form of a virtual filesystem. The prototype runs in a custom-developed POSIX-like system; a port to Mac OS X via Freemount is in progress. (Screencast video at <https://www.youtube.com/watch?v=JgivHy-oC2g>) (POSIX, 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)
Free Software Collaboration
Nitrogen
A thin but rich, type-safe, exception-safe C++ wrapper for the Carbon API of Mac OS 9 and X, Nitrogen allows design-by-contract, reduces source code size (typically) by more than half, and makes certain classes of errors impossible to make. I was the third developer to join the project and am now the maintainer. Additionally, I adapted Nitrogen's principles to develop a POSIX C++ wrapper called POSeven.
Linux/m68k
Penguin is a Mac OS application which loads and executes the Linux kernel. I was the second developer to work on Penguin, and produced the first usable release.
Obligatory XKCD
https://xkcd.com/137/