David Finch
PO Box 17
Gold Hill, OR 97525
dtfinch@charter.net

Summary: (buzzwords, by no means comprehensive)
Languages: C/C++, Java, Javascript, VB, VB.Net. Some C#, php, perl, python, bash, x86 assembly.
Web: DHTML, CSS, XML, ASP. Some ASP.Net, XUL.
Databases: Jet (Access), Pervasive. Some SQL Server, MySQL, postgresql, Oracle.
Misc. APIs: ADO, winsock, OpenGL, SDL, CDO, GDI.
IDEs: Visual Studio, Access, Dev-C++. Some Eclipse, Netbeans.
Server admin: Windows 2000-2003, Active Directory, IIS, Exchange, Samba, Apache.
Linux/Unix: Ubuntu desktops, CentOS (RHEL based) servers. Some slackware, SuSE, Mandrake, Fedora, Debian, Gentoo, FreeBSD.
ERP: Global Shop Solutions, Atrex. ICVerify for CC processing.
Education: Bachelor in CS from SOU 2000-2004. No other certifications. Self taught for 9 years prior. Pascal/C/VC++/Java classes in high school.
Employment: Mixed part & full time programming since 2000. Primarily web development, MIS development.

Career objective:
To earn a living doing something I enjoy. To maximize my value by increasing the breadth and depth of my knowledge and skills to be able to meet any need quickly, fully, and competently.

Skills & experience:
Languages: (start date)
VB (1995), up to VB6
x86 assembly (1995), some 32 bit
Javascript (1997), in web pages, server side asp, and html applications (.hta)
C/C++ (1997, 1999), up to Visual C++ 6.0, gcc
Java (2000)
VB.Net and C# (2002)
PHP (2004)
Python (2006)
And others not worth mentioning. Started programming in 1991.

Graphics & games: (Mostly hobby and school)
OpenGL & SDL.
A platform sidescroller for a game programming class.
3D first person view walking around a simple map.
Wolfenstein 3D style engine.
Many classic game remakes in VB6. Also some in JavaScript.
Assisted BasicNES project to turn it into the first NES emulator written in VB6 to achieve near perfect emulation with high performance (100% speed with sound and and no frame skip on a 350mhz pentium II)
Fast bilinear filtering patch to the Edge (Doom port) project.
Minor keyboard movement patches to the BzFlag project.
Several shareware screensavers.
Before learning OpenGL, wrote a software 3D rasterization library. Supported gouraud shading and perspective texture mapping.
Wrote a programming game called VBRobots, where you program robots in VBScript or javascript to fight.

Web:
Wrote all of the code for an interactive online store. Actually several, but most of the code is reused.
ASP. Mostly server side javascript, since I prefer it to vbscript.
Dynamic HTML with CSS and javascript. Rollovers, menus, custom tags (not so much anymore), animation, etc. Always cross browser.
Object/relational mapping to simplify database access.
Object serialization/encoding in javascript and php.
Limited PHP+MySQL development. Enough to do some RPC and generate images.
Some flash. Focus on scripting and RPC. Chat client.
ASP.Net (School only. 2 classes: Client/Server and Corporate Web Development)
Wrote a site generator for new store. Even built product configurators, which were previously created by hand. Also wrote batch image processing utilities using the GD image library to style product images to match web sites, also previously done by hand.
Search engine optimization.
Tilesets in dhtml using javascript and css clipping, putting many images into one.

Network: (socket programming)
Wrote VB program for realtime firewall log analysis and intrustion detection.
Chat server and client in Java.
Simple graphical web browser from scratch in Java as a high school project. Supported small subset of html.
Wrote simple http servers in Java and VB.
Wrote a compressed tunnel proxy in Java.
Wrote pop3 and smtp clients from scratch in VB.
Wrote some web spiders in VB, including an email spider (purely academic).

Database:
Database design, normalization, and optimization.
Oracle (School only, 2 classes: Advanced Databases and Oracle Database Administration). Some PL/SQL.
Microsoft Access. VBA. Linking to other types of databases.
ADO (Mostly Jet. Some SQL Server)
Some MySQL.
Worked with POS/Inventory system called Atrex. Used DBISAM database server. Crystal reports, batch updates, export utility for separate accounting program.
Worked with ERP system called Global Shop, written by Global Shop Solutions (formerly Infisy). Uses Pervasive database server. Mostly reporting tools, batch updates, troubleshooting, monitoring/correction scripts. Integrated with FedEx Shipping Manager and UPS WorldShip. Wrote ICVerify proxy to block some highly unwanted credit card transactions and make corrections to others.

Application/GUI: (Mostly hobby and school)
VB6. Lots of useful and useless apps.
VB.Net. Mostly at school.
Java & AWT. Some Swing. Mostly at school.
MFC in Visual C++. Just enough to make config dialogs for screensavers.
Some XUL in Firefox and XULrunner.

Security:
Security & Cryptography. (Class. Books were Applied Cryptography by Bruce Schneier, and Linux System Security)
Some experimentation with homemade ciphers and writing programs to break some known weak ciphers.
Secure Programming. (Class. Talked about buffer overflows, race conditions, etc.)
Fair understanding of SSL. How it works. What it guarantees. Used once in Java for secure chat. Set up in IIS.
Website security. Hash based logins. Protection against sql injection and other exploits.
Information Technology: Ethics and legal issues. (class)
Computer Forensics. (class)

Misc. Server:
Windows 2000 and 2003 server administration.
Linux server administration and security.
Using Samba for Windows file sharing from a Linux server.
Setting up Distributed File System (DFS) shares in Samba.
Many many (too many) hours research into performance and reliability tuning of Samba.
Bash scripts for daily rsync backups of servers onto another server, with up to 16 past revisions of each file. Critical directories backed up to multiple servers and on tape. Exchange backups.
Exchange 2003 installation and administration.
WildFire IM (formerly Jive Messenger) jabber server administration.

Math & science: (Mostly hobby and school)
Taken up to Calculus III. Also discrete structures, statistics, and applied business statistics.
Several math trophies from middle and high school.
Digital Signal Processing. (class)
Bioinformatics. (Class. Talked about DNA and protein analysis using perl, and how certain difficult problems are handled)
Physics. (Several classes)
Wrote a 3D fractal terrain program for a graphics programming class. Walk or fly very long distances. Good speed and low memory requirements.
Capstone. 3D discrete global grid (dgg) viewer. C++, OpenGL, and Java. Very scalable performance and low memory needs handling many very large datasets. Looked kind of like Google Earth, but much simpler.
Entered into the "Mars Rescue Mission Challenge" which involved making a 5 dimensional shortest path finder in C requiring all my 512mb ram and lots of swap space to find the optimal series of jet pulses to control a lunar lander like ship. Modified to handle larger maps, and find shortest path intersecting multiple targets. Optimized to run faster than any other, in seconds instead of hours. Then ported to javascript of all things.
Understanding of many compression algorithms, such as Huffman, LZW, jpeg, and wavelet.

Other: (Mostly hobby and school)
Compilers class. Used gnu-flex and bison (compatible OSS versions of Lex and Yacc).
Wrote a simple basic-like interpreter in high school. Recursive descent parser.
Played a programming game called Robot Battle for 6 years. Probably devastating to my social life. Wrote preprocessor to add several language features.
Some J2ME/MIDP (cell phone) programming. Just enough to write an asteroids game and move on.
#1 on Google for phrases "hobby programming" and "strong password generator". :)


Education:
Bachelor's in Computer Science
Southern Oregon University
1250 Siskiyou Blvd. Ashland, OR 97520
(541) 552-7672
Unofficial Transcript, 3.55 GPA
Took almost every CS/CIS class offered, starting with Programming III.

Crater High School
Crater High School
4410 Rogue Valley Blvd
Central Point, OR 97502
(541) 494-630
Took AP Computer Science (Pascal), Programming in C, and Visual C++ and Java.


Employment history:
Currently self employed. :)

Employment from 2000-2004 was full time during the summer and breaks, and 1 day a week during the school year.

ICWUSA.COM, INC.
1487 Kingsley Drive
Medford, OR USA 97504
(541) 608-2824

7/2002 to 9/29/2006. Web development, database design and admin, network setup and admin, etc. Basically "company's computer guy."
Developed online stores in ASP (Javascript). Developed some inhouse databases in Access. Worked with their inventory system database (Atrex 9 and 11) to provide batch updates and complex queries. Had major role in migration from Atrex to Global Shop ERP system. Wrote lots of reports, integration scripts, and home-grown bugfixes for the new system. Server and network administration. Installed/configured/administered Linux, Samba, Wildfire IM, Windows Server 2003, Exchange 2003, DBISAM, Pervasive, ICVerify, and everything else the company used.
Gave 5 weeks notice before leaving with the intent to pursue self employment and contract development.


Project A, Inc.
340 A street
Ashland, OR 97520
(541) 448-1702

From 7/2000 to 8/2001 - Mostly part time programming.
I worked on several VB, ASP, and C projects. Most were internet and/or database related. I wrote a team collaboration site, some activex controls including pop3 and smtp clients, and a few of the programs for logfile analysis and detecting intrusion attempts in realtime and gathering detailed information on the intruders.


Share|Tech, Inc. aka RocketDownload.com
340 A street
Ashland, OR 97520
(541) 488-4436
Out of business, except for website, acquired by Digital Candle.

From 7/1/97 to 8/31/97 - Full time software reviewer.
I mostly installed and checked out programs to be put into the Rocket Download archive. I took screenshots, captured icons and created installs with WinZip self extractor. I wrote up reviews for the programs and entered them in the database.

References available upon request.