|
|
Resume - John C. "Hsoi" Daub
hsoi@hsoi.com
http://www.hsoi.com/hsoi/
Objective
To practice the fine art of software development in a manner allowing for the evolution
of all involved parties and processes. I like making shrinkwrap Mac OS X software, working both on
developing an elegant and intuitive user experience, and solid under-the-hood foundations.
Work Experience
Adjunct Instructor: Texas Engineering Extension Service, Public Safety & Security Division, a part of the Texas A&M University System.
February 2009 to present
Assisting in teaching and curriculum development for the Cyber Security Awareness course.
Senior Engineer: Smith Micro Software, Inc., Consumer Group
April 2008 to present
Software Engineer: Smith Micro Software, Inc., Consumer Group
June 2000 to April 2008
NB: I started at the company when it was named Aladdin Systems, Inc. In January 2004, Aladdin Systems, Inc. was
purchased by International Microcomputer Software, Inc. (IMSI), but remained a wholly owned subsidiary. In
July 2004, Aladdin Systems, Inc. changed its name to Allume Systems, Inc.. In July 2005, Smith Micro Software, Inc. (NASDAQ:SMSI)
acquired Allume Systems, Inc. and while the "Allume" brand remains, technically Allume has been assumed into
Smith Micro and I am a SMSI employee. So, I've worked for the same people for a long time, just
lots of corporate juggling about.
September 2008 - present
Working on my next project(s)...
Spring Cleaning 10
Released 8 September 2008.
With Spring Cleaning 10 I implemented scripting support throughout the majority of the Spring Cleaning
application (the application, 61 plugins). Spring Cleaning can now be driven by AppleScript or any OSA-based
scripting mechanism, including bridges to Ruby and Python. This was a massive undertaking that consumed
most of my cycle. I did create initial support in Spring Cleaning for interaction with Poser,
Smith Micro's 3D figure rendering and animation tool, including a Python script to enable PoserPython
users to utilize Spring Cleaning for scene inventory collection.
Internet Cleanup 5
Released 6 February 2008.
Transitioned to using the same GUI as Spring Cleaning, which greatly simplified and improved our codebase
and the user experience of Internet Cleanup. Continued to evolve SpyAlert, making it more data-driven
by embedding Python as the mechanism to provide customized
logic and using Boost.Python to expose
application functionality into the scripting layer.
Spring Cleaning 9
Released 21 February 2007.
Spring Cleaning 9 was a major rewrite of the product, and I was the primary for the project. We retired the
PowerPlant-codebase and rewrote the project mainly using the Cocoa frameworks. We redesigned the application
from the ground up to have a more flexible and expandable architecture, along with simplifying the
user experience. I was responsible for much of the core application design and infrastructure, as well
as generating some of the end tool and action plugins.
Internet Cleanup 4
Released 22 June 2006.
I was only minorly involved in Internet Cleanup 4's release, updating components like SpyAlert
and IM Log Cleaner. I was deeply involved in the rearchitecting of Spring Cleaning 9, so my energy
was focused there instead of here.
Spring Cleaning 8
Released 9 January 2006.
In Spring Cleaning 8, I created numerous new plugins: Music Finder search plugin, Image Finder
search plugin, Disk Image Finder search plugin, Archive Finder search plugin, Add to iTunes action
plugin, Import into iPhoto action plugin, Burn to Disc action plugin. The Font Finder plugin was
completely overhauled into the new Font File Finder plugin. Performed modernizations, updates, and
massive optimizations to the core file searching framework resulting in some big performance gains.
Internet Cleanup 3
Released 28 June 2005.
Internet Cleanup 3 was a major bit of work, since it was a complete ground-up rewrite
of the product. We wanted to rewrite using the Cocoa framework, and much of the GUI and
presentation logic is in Objective C and Cocoa. However I spent a good deal of time
developing our internal "Gonzo" library, a C++ Carbon/Core Foundation-based library of
engine code to help implement and drive much of the internal functionality of the product.
I was chief architect and implementor of Gonzo, and it's modern, flexible base is core
to much of what we'll be developing in the future.
Some application-specific bits of implemenation have been: a rewrite of SpyAlert, providing
a more thorough scanning for spyware and loggers; IM Log Cleaner; logging functionality;
working on core functionality (Gonzo); core threading issues; sheet and notification
managers and bottlenecks.
Spring Cleaning 7
Released 17 August 2004.
Spring Cleaning 7 was a tight release cycle that saw me implementing a means to save
Custom Search search configurations; removing Fat App Slimmer and Trim Fat; creating
the "Logs & Temporary Items Finder" plug-in; adding a custom dock tile menu to the
Spring Cleaning application; and fixing some long-standing bugs.
This product version also saw the introduction of the System Snapshot product, based
upon tripwire. I guess I'm responsible for bringing
open source to Allume, or at least bringing about Allume's first GPL product. The work
was performed by a buddy of mine and I was the liason/manager for the project between
him and Allume.
Internet Cleanup 2
Released 1 June 2004.
In the time since Internet Cleanup 1 and Spring Cleaning 6 were released, I worked on the
Internet Cleanup 1.1 release, and also a project that is as of this writing unreleased and
may never be released depending how things go. The project furthered my Cocoa skills,
use of "real" threads (pthreads via the QpThread framework), and improved my abilities
in ground-up application architecture.
For Internet Cleanup 2.0 my major tasks were creating the IM Log Finder plug-in, integrating
MailCleaner into Internet Cleanup (originally part of Spring Cleaning), updating SpyAlert,
adding table striping, windows saving and restoring their locations, adding a custom Dock
menu, many other GUI changes and improvements, some long-standing bugs were fixed, and
various internal changes (e.g. no more HeapManager so we can use direct Mac OS X memory
allocations).
Spring Cleaning 6
Released 6 June 2003.
Internet Cleanup 1
Released 10 June 2003.
My teammates were focused on NetBlockade, so a lot was left for me to focus on. I updated
to the StuffIt 7 SDK and switched to supporting StuffIt X archives. Created the Secure Delete
Action Plug-in. Added Preview support. Removed kind string cache and query OS directly.
Created SpyAlert plug-in. Created Language File Finder plug-in. Performing code changes
to establish Internet Cleanup's GUI and form.
I find myself enjoying object oriented thought and design. UML is a fun tool for brainstorming
and sketching out ideas. My Mac OS X developer skills are coming along as well. Getting
to work with Cocoa as well as Carbon.
StuffIt Deluxe 7.0.3
Released 9 April 2003.
Added tar archive support to ArchiveSearch.
StuffIt Deluxe 7.0
Released 19 September 2002.
Mostly an update for ArchiveSearch, adding Zip support, Unicode improvements, cleaning up some handling
of the archive searching logic.
Spring Cleaning 5
Released 20 May 2002.
Big project for Spring Cleaning 5 was writing FileSearch. Taking design patterns I started in ArchiveSearch
for "searching", I wrote a framework that abstracted the criteria and bridged the Carbon File Manager
implementations of searching for files on Mac OS. All core Spring Cleaning searches were rewired with
this FileSearch engine, and it lead to Search Plug-ins such as Custom Search. I also improved the GUI
support for drag and drop search contexts so the user could search folders. General Mac OS X support
improvements were also made. I found the work on FileSearch to have improved my framework architecting
skills; UML was a helpful tool during design, and my STL skills greatly improved.
StuffIt Deluxe 6.5
August 2001 - September 19, 2001 - v6.5
Updated ArchiveSearch to function properly under Mac OS X. ArchiveSearch 6.0 worked under Mac OS X but
had lots of problems (things broken, crashing, etc... hey, Mac OS X was still a beta OS when StuffIt
Deluxe 6.0 was released). This was just an effort to get it working and functional, no new features
added... that'll be in ArchiveSearch 7.
Spring Cleaning 3.5.1 & 4.0
October 2000 - 4 April 2001 - v3.5.1
October 2000 - 6 June 2001 - v4.0
My next project for Allume was Spring Cleaning. For v3.5.1 I helped with the effort to transition to
Carbon, mostly involving rewriting/translating Font Remover from it's Pascal heritage into C++. It was
an interesting project given what Font Remover does and the way Carbon considers fonts vs. how you could
poke around at fonts in "Classic". A learning experience all around. ;-)
After 3.5.1 shipped, my main project for 4.0 became the development of the Standard and Advanced modes
of operation. I lead the design and implementation of the feature, including the invention of the Standard
Mode GUI and revamp of the Advanced Mode -- all GUI savvy to the Mac OS X Aqua user experience. Converted
the alert system to the StandardAlert mechanism (SC, iClean, and all plugins). Added the preferences GUI
to iClean. The Standard/Advanced mode helped me to further explore notions of object-oriented software
development (design and implementation).
StuffIt Deluxe 6
June 2000 - October 2000 - v6.0
When I first joined Allume (back when it was Aladdin), my first project was ArchiveSearch 6.0.
I did not write the original spec, but did probably 90% of the coding on it. Fun experience.
Learned a great deal about writing multithreaded applications.
Freelance Software Developer, Grand Pooh-Bah:
Hsoi's Shop
1993 to present
Contributing Editor: MacTech Magazine
September 1999 to October 2005
Wrote many articles for MacTech Magazine.
Software Engineer: Pervasive Software, Inc.
April 1999 to June 2000,
Tango Engineering
Development of the Mac-hosted Tango Editor.
- Implemented the GUI support for Tango Class Files (debut, Tango 2000).
- Implemented the GUI support for Create Object and Call Method Actions (debut, Tango 2000).
- Design, feature, and implementation input into Tango 5, but this never saw the light
of day as Pervasive killed Tango on 13 July 2000. Oh well, them's the breaks. :-)
Software Engineer: Metrowerks Corporation
June 1996 to April 1999
PowerPlant Engineering
Development of the most popular
C++
application framework (roughly 40% of all Mac OS applications at the time (and many still today) were based
upon PowerPlant) for Mac OS software development.
- Performed initial ports of PowerPlant (and the Metrowerks Standard C/C++ Library (MSL)) to
Carbon and Mac OS X.
- Author, Contextual Menu and Menu Utility Classes (debut on CW Pro 4).
- Author, Cursor Classes (debut on CW Pro 1).
- Author, Debugging Classes (debut on CW Pro 3).
- Author, Editable Text Classes (debut on CW Pro 1).
- Author, sundry PowerPlant example code (PP cdev, LArray Demo, TextView, MarqueeAnts, OutlineTable, etc.).
- Co-Author, Appearance Classes (debut on CW Pro 2).
- Contributor, PowerPlant core (general improvements, bug fixes, optimizations, ANSI C++ compliance).
- Contributing Author, Metrowerks Constructor.
- Maintainer, Metrowerks Constructor for PowerPlant (start, May 1998)
- Maintainer, Thread Classes (start, May 1998)).
Junior Software Engineer: Metrowerks Corporation
June 1996 to May 1998
Quality Assurance
Testing, validation, and regression of software products and product components. Author
and implement test plans, administer and coordinate components for beta testing, collate
and integrate components into the unified end-product.
Technical Support
Provide product support to customers (other software developers), finding solutions
and solving problems in a timely manner. Validate user bug reports and escalate to
development engineers. Specializations include:
Computer Lab Manager: Texas A&M
Department of Speech Communication
December 1994 to May 1996
Graduate Research Assistantship managing the TAMU-SCOM Instructional and
Research Laboratories.
Co-authored two grant proposals receiving US$79,000 for the development of a
Communication Instructional Computer Laboratory. Also established the
Communication Research Laboratory. Key committee member in the planning,
design, and purchase of the labs and their equipment. Implemented and
managed both labs.
Instructed 1500+ undergraduates per semester on computer assisted
presentation skills. Maintenance of lab security. Assisted faculty and
graduate research projects. Sundry administrative tasks.
Instructor, Public Speaking: Texas A&M
Department of Speech Communication
September 1994 to December 1995
Graduate Teaching Assistantship teaching two undergraduate classes
per semester in public speaking.
Instruction of undergraduates in public oratory and overall effective
communication skills. Administered exams and graded student work and tests.
I was the students' actual teacher, not an assistant for a professor.
Publications
John C. Daub.
Cool Tools: ARTIS Screen Tools. Useful utilities for pixels measurements.
MacTech Magazine, Vol. 19, No. 9 (September 2003).
John C. Daub.
Viewpoint: Apple's Developer Toolchain. Or, how I learned to appreciate Objective C.
MacTech Magazine, Vol. 19, No. 8 (August 2003).
John C. Daub.
Viewpoint: What we can learn from OpenBSD.
MacTech Magazine, Vol. 16, No. 9 (September 2000).
John C. Daub.
What Makes You Productive? Tools and toys to enhance your productivity.
MacTech Magazine, Vol. 15, No. 12 (December 1999).
Ron Davis. John C. Daub, Contributing Editor.
Learning to Tango.
MacTech Magazine, Vol. 15, No. 10 (October 1999).
John C. Daub.
Tango 2000 Unveiled: Extend to Tango application with COM, JavaBeans, and the new built-in Web analyzer.
Tango Developer's Journal (feature article), Vol. 1, No. 1 (Fall 1999).
Aaron Montgomery. John C. Daub, Technical Editor.
Threaded ACGI's in PowerPlant
MacTech Magazine, Vol. 15, No. 7 (July 1999).
John C. Daub.
Utility in Utilities: Exploring the PowerPlant Utility Classes.
MacTech Magazine, Vol. 15, No. 6 (June 1999).
John C. Daub.
PowerPlant's Debugging Classes: Techniques and tools to help you find and prevent bugs.
MacTech Magazine, Vol. 15, No. 5 (May 1999).
John C. Daub.
PowerPlant Tips, Tricks, and Gotchas: Tidbits of knowledge to improve your use of PowerPlant.
MacTech Magazine, Vol. 15, No. 4 (April 1999).
John C. Daub.
Modifying Objects at Runtime in PowerPlant: A look at PowerPlant's Attachments mechanism.
MacTech Magazine, Vol. 15, No. 3 (March 1999).
John C. Daub.
Arrays, Iterators, and Comparators... Oh my!: A look at PowerPlant's Array Classes.
MacTech Magazine, Vol. 15, No. 2 (February 1999).
John C. Daub.
The Ultra-Groovy LString Class: An introduction to the PowerPlant-way
of working with strings. MacTech Magazine,
Vol. 15, No. 1 (January 1999).
John C. Daub.
What Is PowerPlant? An introduction to and overview of the Metrowerks
PowerPlant application framework. MacTech
Magazine, Vol. 14, No. 12 (December 1998).
John C. Daub & Dave Mark.
From the Factory Floor: A PowerPlant Update, Part 2.
MacTech Magazine, Vol. 14, No. 11 (November 1998).
John C. Daub
Tips & Tidbits: CodeWarrior Target Switch.
MacTech Magazine, Vol. 12, No. 8 (August 1996).
Lectures
The Virtual Teleworker
A lecture given to the ATI Telework Group, a part of the Texas State Energy Conservation Office
Comptroller of Public Accounts. This lecture discussed the realities of telework from both the
teleworker (employee) and home base (employer) perspectives, and how to balance the realities,
wants, and needs of both perspectives. Given 14 March 2002.
Computer Experience
Operating Systems
Languages : Programming
Languages : Scripting
Languages : Markup
Development Tools
Education
Texas A&M University; College Station, Texas
August 1994 to August 1996
GPA: 3.5/4.0
Degree: Master of Arts, Speech Communication
Thesis: The Mediating Effects of Choice Upon Computer Self-Efficacy (oh who am I kidding... I'm probably never going to finish the thing.) :-)
Area of Study: Communcation and Technology. An examination of technology and their impacts
upon society, culture, and our communication processes.
James Madison University; Harrisonburg, Virginia
August 1990 to May 1994
GPA (Major): 3.5/4.0
GPA (Overall): 3.2/4.0
Degree: Bachelor of Science, Speech Communication
Major: Speech Communication, Concentration: Interpersonal Communication
Minor: Music Industry
Homeschooling
My wife and I home school our three children. My wife is the primary educator, but I too teach the children
and act as "principal" of our school.
Volunteer Work
Cub Scout Pack 403; Austin, Texas
Summer 2008 - Present - Tiger Den Leader
Spring 2006 - Present - Outings Chair
Spring 2007 - Present - Pack Trainer
Spring 2006 - Spring 2007 - Webelos Den Leader
Fall 2005 - Assistant Webelos Den Leader
Summer 2005 - Day Camp Den Leader
Boy Scout Troop 403; Austin, Texas
Spring 2007 - Spring 2008 - Assistant Scoutmaster
Instructor - Kuk Sool Won Martial Arts
At the Oak Hill school (opened July 2008):
July 2008 - December 2008 - Assistant Instructor
At the old South Austin school (prior to it's closing, July 2008):
May 2005 - July 2008 - Assistant Instructor, child and adult classes
September 2005 - June 2008 - Instructor, Tiny Tiger's program. In Summer 2007, revamped and refocused the program.
May 2005 - September 2005 - Assistant Instructor, Tiny Tiger's program (5 year olds)
Hobbies
- I am a 1st degree black belt in the traditional Korean martial art Kuk Sool Won. I enjoy researching and studying martial arts in general.
- I enjoy riding and working on my Yamaha V Star 1100 Classic.
- Spending time with my family is an enjoyable way that I try to spend as much of my time as possible. :-)
|