#####################
Joshua Juran's Resume
#####################
Joshua Juran
http://www.metamage.com/resume/JoshuaJuran.html
Objective
=========
I'm seeking a position as a senior software developer, bringing to bear my experience with many languages, tools, and techniques, making a decisive contribution to a challenging project.
I'm especially interested in generic programming in C++, Perl scripting, Mac OS and UNIX environments, and agile development practices.
Technical Areas
===============
Problem Domains
---------------
* Network programming (HTTP, SMTP, POP3)
* Dynamic, interactive hypertext (client-, server-side Web scripting)
* Realtime graphics display (screen-synchronized drawing)
* 3D graphics (shaded software rendering)
* Cryptography (MD5, SSL)
* Object modeling and scriptability (Apple Event Object Model)
* Systems programming (Mac OS drivers and system patches)
* Financial transactions (credit card authorization)
* Software publishing (automated disc image production)
Programming Styles
------------------
* Object-oriented programming (14 years, heavy use)
* Generic programming (4 years, heavy use)
* Functional programming (3 years, heavy use)
* Threaded programming (2 years, heavy use)
* Declarative programming (2 years, moderate use)
Programming and Scripting Languages
-----------------------------------
* C++ (9 years, heavy use)
* C (11 years, heavy use)
* Perl 5 (5 years, heavy use)
* JavaScript (1 year, moderate use)
* Bourne shell, make, m4, sed (6 years, moderate use)
* SQL (1 year, heavy use)
* PHP (1 year, heavy use)
* AppleScript, HyperTalk (5 years, moderate use)
* Common LISP, Scheme (2 years, moderate use)
* Pascal, Object Pascal (6 years, heavy use)
Structural Languages
--------------------
* HTML (9 years, heavy use)
* XML (1 year, light use)
Application Programming Interfaces and Frameworks
-------------------------------------------------
* Web CGI (3 years, heavy use)
* Perl DBI (1 year, heavy use)
* Level 1 DOM (1 year, light use)
* Macintosh Toolbox, Carbon (15 years, heavy use)
* Standard C++ library, STL (4 years, heavy use)
* Berkeley sockets (5 years, moderate use, implementation)
* POSIX (2 years, moderate use, implementation)
* OpenSSL (1 year, light use)
Development Tools
-----------------
* GNU C/C++, CVS, make (6 years, heavy use)
* Metrowerks CodeWarrior (11 years, heavy use)
* Xcode / ProjectBuilder (1 year, moderate use)
* Apple's MPW (4 years, moderate use)
Production Tools
----------------
* Apache/mod_perl (1 year, heavy use)
* MySQL (1 year, heavy use)
* phpMyAdmin (1 year, moderate use)
Operating Systems
-----------------
* Mac OS X (2 years, heavy use)
* Mac OS (18 years, heavy use)
* Linux (9 years, moderate use)
Work Experience
===============
Employee of Microsoft (Redmond, WA)
-----------------------------------
March 2006 - present
I'm working on core aspects of Microsoft Office for Mac OS. I've 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.
In addition, I've discovered and fixed latent bugs exposed by compiler warnings and made various improvements to the build infrastructure.
Independent Consultant to CitySites Real Estate Group (New York, NY)
--------------------------------------------------------------------
February 2005 - January 2006
CitySitesNY.com is a resource for the sale and rental of local residential and commercial properties, built with Linux, Apache, MySQL, and PHP.
I have been maintaining the current site (including adding incoming and outgoing data feeds to other real estate sites) and also designing a new site rearchitected from scratch, using Apache/mod_perl.
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 from Classic as it did in real Mac OS 9. Writing a device driver was required. (C, C++, Carbon, Apple events, POSIX/termios, Mac Serial Device Manager, Xcode/ProjectBuilder, CodeWarrior)
Independent Consultant to Macquarie University (Sydney, Australia)
------------------------------------------------------------------
August 2003 - January 2005
PsyScript is a scriptable application engine for administering cognitive psychology experiments, originally written in C and targetting Mac OS 9.
I ported PsyScript to C++, to Mac OS X's Carbon API, and to GNU C++ (retaining backward compatibility with CodeWarrior and Mac OS 9). (C++, Carbon, realtime graphics display, CodeWarrior, Xcode/ProjectBuilder)
Independent Consultant
----------------------
January 2003 - July 2003
Various odd jobs including computer training, system maintenance, and Excel macro scripting.
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. (Mac Toolbox, HTTP/SMTP/POP3, Open Transport, distributed programming, CodeWarrior)
Senior Programmer/Analyst (contractor) at NCBI
(National Center for Biotechnology Information) (Bethesda, MD)
--------------------------------------------------------------
March 2001 - January 2002
NCBI's Bioinformatics C Toolkit is a cross-platform library upon which bioinformatics applications such as Entrez, Sequin, and BLAST are built. I was responsible for the Mac support of the C Toolkit. While 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. (C, Carbon, AppleScript, CodeWarrior)
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. (C, Mac Toolbox, trap patching)
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)
I was asked to help eliminate a "showstopper" bug in an unrelated project, 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.
Employee of and Consultant to STR, L.L.C. (Fairfax, VA)
-------------------------------------------------------
March 1994 - September 1997
Hired as a Programmer/Analyst (initially working on a battle simulator front-end in Excel, and later porting code between C and Pascal), I in addition evolved to system and network administrator. I diagnosed and fixed hardware and software problems, which included replacing bad cards and (re)installing system software, both Mac OS and Windows. I obviated the need for a $2800 NetWare license upgrade by writing scripts that dynamically connected to and disconnected from the server as necessary, so idle machines wouldn't occupy license slots.
I introduced the company to the Internet in general, configured a DNS server (BIND) to provide both local name service for our internal network and cached resolution for the Internet, and in a single day implemented unified intra-office and Internet email for each employee, using Internet standard software (SMTP/POP3).
Open Source Collaboration
=========================
Perl
----
Larry Wall's Practical Extraction and Report Language needs no introduction. I'm porting the perl interpreter to Lamp (a Unix-like environment that runs on classic Mac OS) and working on getting it to pass its automated tests.
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. My contributions to date include (among many others) support for the Thread Manager and Apple events, and I'm solely responsible for supporting classic Mac OS.
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. (Mac, C)
Self-founded
------------
* A-line: A multi-project software build management tool without
the problems of recursive make.
* Genie/LAMP: A Unix-like, multi-tasking Mac runtime environment.
* Pedestal: A Mac application framework.
* Ped3D: A sample Pedestal application which is also a software
3D renderer with shading.
Published Papers
================
MacHack 17: Using Generic Programming In C++ With The Mac OS Toolbox
MacHack 15: Pedestal: A Modern Approach to Traditional Framework Design
Professional Activities
=======================
NoVA Mac Developers Group
-------------------------
This cadre of industry veterans meets monthly to demonstrate new technology and discuss all things Mac.
Washington Apple Pi Computer Clinic
-----------------------------------
The oldest Mac user group in existence offers a weekly computer clinic to members and non-members on a donation basis. As a volunteer, I've replaced hard drives, motherboard batteries, motherboards, and system software, rescued data files, and recovered PPP passwords.
Special Training
================
Landmark Education
------------------
October 1996 - present
* Ongoing, specialized instruction in leadership, integrity, effective communication and action, team management, and producing breakthrough results
* Experience in course registration and production, keeping statistics, and coaching participants
* Over 1500 total hours of training
Education
=========
1991, 1993: St. Mary's College of Maryland
Major: Mathematics with Concentration in Computer Science
1987-1991: Montgomery Blair High School
Math/Science/Computer Science Magnet Program