Joshua Juran's Résumé
Objective
I'm seeking a position as a software developer, bringing to bear my experience with many languages, tools, and techniques, advancing the state of the art in a critical area of computing.
I'm especially interested in generic programming in C++, Perl, Mac OS and UNIX environments, user interface design, automation, and agile development practices.
Technical Areas
Problem Domains
- Dynamic, interactive hypertext (client-, server-side Web scripting)
- Network programming (HTTP, SMTP, POP3)
- Systems programming (cross-platform backtrace, Mac OS drivers and system patches)
- Operating system development (POSIX over traditional Mac OS)
- Realtime graphics display (screen-synchronized drawing)
- 3D graphics (shaded software rendering)
- Cryptography (MD5, SSL)
- Object modeling and scriptability (Apple Event Object Model)
- Financial transactions (credit card authorization)
- Software publishing (automated disc image production)
- Artificial intelligence (Sudoku solver)
Programming and Scripting Languages
- C/C++ (17 years, heavy use)
- Perl 5 (7 years, moderate use)
- JavaScript (2 years, moderate use)
- Motorola 68K assembler (3 years, moderate use)
- PowerPC assembler (2 years, light use)
- Bourne shell, make (7 years, moderate use)
- SQL (1 year, heavy use)
- PHP (6 months, heavy use)
- Common LISP, Scheme (2 years, moderate use)
Application Programming Interfaces and Frameworks
- Macintosh Toolbox, Carbon (21 years, heavy use, implementation)
- POSIX (11 years, heavy use, implementation)
- Standard C++ library, STL (10 years, heavy use)
- Perl DBI (1 year, heavy use)
- Level 1 DOM (1 year, light use)
Development Tools
- GNU C/C++ (9 years, heavy use)
- Git (2 years, heavy use)
- Perforce (2 years, heavy use)
- Metrowerks CodeWarrior (13 years, heavy use)
- Xcode (2 years, heavy use)
Open Source 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.
Self-founded
-
A-line:
A multi-project software build management tool without the problems of recursive make, supporting concurrently running jobs and cross-preprocessing. It targets classic Mac OS (68K and PPC), Mac OS X (PPC and Intel), and generic Unix systems such as Linux. -
Lamp:
A POSIX-like, multi-tasking Mac runtime environment, including pipes and TCP sockets, running on both classic Mac OS architectures (and Mac OS X). Lamp (Lamp ain't Mac POSIX) provides several virtual filesystems to expose Mac OS functionality to userspace, including the windowing toolkit -- allowing applications to be written as shell scripts. -
Pedestal:
A Mac application framework. -
Vertice:
A sample Pedestal application which is also a software 3D renderer with shading.
Work Experience
Independent Researcher (Seattle, WA)
January 2009 - present
Extending one of the tenets of Unix philosophy (that everything is a file) in a direction inspired by Plan 9, I'm designing and implementing a GUI environment whose components are constructed, queried, and manipulated strictly through POSIX I/O calls. In addition to supporting peer access over a planned remote filing protocol, the use of pathnames and file descriptors as object references allows a GUI application to exist as a collection of cooperating processes, and therefore to be implemented in shell scripts (as well as any language supporting POSIX I/O directly, such as Perl).
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 and refactored the build scripts. (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)
Freelance Software Developer
August 2003 - present
MacAuthorize is a credit card processing application which, having been discontinued by the publisher, has never been revised to run natively on Mac OS X, and therefore runs in the Classic compatibility environment, which doesn't provide access to the computer's internal modem. I devised and implemented Port XTender, a software solution that enables MacAuthorize to use the internal modem as it did in Mac OS 9. Writing a device driver was required.
Independent Consultant to Macquarie University (Sydney, Australia)
August 2003 - January 2005
I ported PsyScript (a scriptable application engine for administering cognitive psychology experiments) from C to C++, from Mac OS 9 to Mac OS X, and from CodeWarrior to gcc (retaining backward compatibility with CodeWarrior and Mac OS 9).
Senior Developer at LEROS Technologies (Fairfax, VA)
July - December 2002
City Sprinter is a distributed application for running a courier business written in Object Pascal for Mac OS. The included modules for communicating over several TCP-based protocols were severely broken when I began working as the sole maintainer. I eliminated crashes, data corruption, and memory leaks in general and rewrote the networking code to avoid race conditions. (CodeWarrior)
Senior Programmer/Analyst (contractor) at the National Center for Biotechnology Information
March 2001 - January 2002
I was responsible for the Mac support of NCBI's Bioinformatics C Toolkit. Most of the toolkit was platform-independent; the VIBRANT application framework was not, and I ported the VIBRANT Mac code to the Carbon API required by Mac OS X.
NCBI's Mac build system used AppleScript to create CodeWarrior project files. I refactored the build scripts to eliminate redundant code and support multiple targets.
Independent Consultant to Targa Partners (Baltimore, MD)
July 2000
A stock charting application uses a perpetually imminent time bomb as a means of access control (and ongoing revenue), but the vendor withdrew support and discontinued updates. I wrote a program to patch the system such that the time appeared never to advance past the allowed threshhold. (Mac, C)
Contractor to Buttonwood Internet (Frederick, MD)
January - June 2000
The ORBS open relay blacklisting service sent us an automated message warning that our mail server had tested positive as an open relay and would be listed as such in one week. I implemented a POP-before-SMTP solution and closed the relay before the deadline. (Linux, sendmail, Perl)
I was selected to complete the back-end of a customer Web site project after a key project member left the company. I developed Perl libraries to conduct credit card transactions through Authorize.net and the site went public on time. (Linux, Perl, CGI, HTML)
Contractor to The Learning Company (School division) (Baltimore, MD)
December 1998 - December 1999
After a manual CD-ROM imaging process resulted in repeated incorrect images, a plan was made to develop an in-house mastering utility to automate the process given a single configuration file per disc. In addition to being the sole developer on the project, I also produced the design and documentation and participated in requirements analysis. (Perl, AppleScript, DOS batch)
(Incidentally, the utility is no longer used, but the core engine (originally targeting classic Mac OS) was later deployed on Solaris by another team for a completely different project, demonstrating just how well-written the code was.)
I was asked to help eliminate a "showstopper" bug in an unrelated application, which turned out to be caused by a system software flaw. Despite there being no defect in the application code to correct, I successfully modified the code to avoid the bug. (Mac, C/C++, CodeWarrior)
Independent Consultant
October 1997 - November 1998
Various odd jobs including diagnosing and eliminating hardware and software problems, and upgrading hardware and software.