ROBERT PAUL SCHOOLFIELDBack to Page 1
Colorado Springs, CO 80915
e-mail: rschoolf@gmail.com
This page: http://home.comcast.net/~rschoolf/resume2.htmEXPERIENCE DETAIL
Software Developer: Coded enterprise shipping solutions. Implementation on-site at customer DC's. Provided custom coding in C# .NET, Visual Basic, SQL Server, TracerX and Kewill.Integrate, and other scripting languages for Data Trak customers. Wrote enterprise shipping application and packing/shipping machine interface for Best Buy. Wrote hundreds of custom solutions. (Data Trak Technologies, Inc., Minneapolis, 2001-2007)
Software Developer II: Principle developer in newly formed Integrated Products group. Mentored three new peers for the group. Designed and wrote client-side code and Windows PC-to-UNIX integration methods for Clippership, Optio, Palm Pilot, Palm VII wireless, ICVerify Credit Card. Kewill TracerX and InstallShield certified developer. Developed automated build procedures, Customer Care web site. Taught UNIX class. Won ROSE award. (NxTrend Technology Inc., Colorado Springs, 1997-2001)
Lead Development Engineer: Wrote CI-Toolkit for Windows, a collection of continuous improvement programs currently in wide use with US military and government agencies. ISO900 methodologies. Also wrote program specifications, company procedure, help documentation. Developed corporate web site. Managed tech support department and personnel. System Administrator for training center, R&D, marketing, and admin LANs. (Systems Improvement Inc., Colorado Springs, 1993-1997)
Contract Programmer: Wrote motion controller interface for a custom CNC application. (Design Sciences Inc., Colorado Springs, 1997)
Contract Programmer: Developed experiment command and control programs, post-processing utilities, data acquisition database for a Defense Nuclear Agency contractor, in Microsoft Professional Basic 7.1. Designed and installed on-line BBS system for Defense Nuclear Agency in Washington, D.C. (JAYCOR, Colorado Springs, 1992-1993)
Contract Programmer: Developed Net Present Value of Disposable Retired Pay legal analysis software for law office. (Law Office, Colorado Springs, 1991-1996)
Contract Programmer: Developed on-line database BBS system and automated data management system for information supplier firm (On-line Contractor’s Network, Colorado Springs, 1992)
Owner/Software Developer: Developed, coded, and marketed several business applications. Design and installation of custom electronic systems such as access control, security, professional audio, two-way communications, etc. (Electronic Systems Design, Colorado Springs, 1988-1995)
Office Management and Analyst: Developed contact management system and invoicing software, full-charge office management included invoicing, (A/R), marketing, daily deposits, customer service, implemented PeachTree accounting software. Wrote custom invoicing software. (Electronic Essentials, Inc., 1991-1994, 1997)
Manager: Responsible for all alarm sales, installation, service and central station management for a large security patrol and guard corporation. Increased alarm sales by 60%. (Knight-Hawk Security Services, Inc. Tyler, TX 1987-1988) Performed routine and on-call field service and security systems installation. Also computer-controlled access and other custom systems. (Alert Security Systems, 1988-1989)
Reliability Technician: Performed dynamic burn-in of microelectronic devices. Compiled company specifications. Maintained device driver boards using oscilloscope. (NCR Microelectronics, 1986)
Audio/Electronics Engineer: Specified, constructed, and managed a multi-track recording studio. On-location and demo recording. Performed installations of high end audio systems in churches, component-level electronics trouble-shooting / repair. Sound man. The Master's Recording, 1983-Date)
Manufacturing Engineer/Programmer: Developed 210 part programs for CNC fabricators using DEC VT-100 and CNC programming language. Employed optimal programming methods. Prepared mechanical drawings and in-depth documentation for shop production. (Micro Metals, Inc. 1981-1986) Worked as machinist in precision sheet metal shop, operated all shop tools, such as shear, press brakes, punch press, CNC press, mills. Performed inspections. Promoted to lead operator. (Pike Tool and Grinding, Colorado Springs, 1979-1981)
EDUCATION
- Mitchell High School, Colorado Springs. Emphasis: Electronics, Computer Math. Graduated: 1977
- Statistical Process Control Course
(SPC) A manufacturing quality control method using compiled statistical data, 1984
- American Sign Language (ASL), Colorado Deaf and Blind School, 1983
- NFPA Initiating and Signaling Course, Dallas, TX. Fire systems technician course, 1988
- Thinker Tools, Inc., Colorado Springs. Contract classes in accelerated C programming, 1992
- Continuous Improvement Workshop, Colorado Springs. Activity-Based Management, earned-value program management techniques, self-assessments, high-performance work and management systems. 1996
- TracerX Language Certification, Kewill Corp., Marlbourgh, MA Achieved highest score in class, 1998
- InstallShield Programming Course, InstallShield Corp., Chicago, IL, 1999
- SX University, also many other programming, industry and application specific courses, NxTrend Technology Inc., Colorado Springs, 1997-2001
- Pilot Training, flight training, aeronautical navigation, instruments, multi-engine.
SOFTWARE TITLES
Software application titles written entirely by Robert Schoolfield, except as noted.
OTHER APPLICATIONS
- Professional Cost Analysis Inventory, contact database, with expert system, bid writer
- Robert's MP3 Loader Tool used with RSS aggregators to install Podcasts and music to iPod and MP3 players.
- Professional Sales Assistant, a contact manager application with inventory control, invoicing and accounts receivable modules
- The Basement Archives An encrypted client-server groupware application
- The Hughes-Schoolfield Utilities This popular early 90's shareware archive can still be found on sites such as http://garbo.uwasa.fi/ Also Installation program.
- The exec32 Desktop Scripting Language Automates repetitive tasks using a superset of VB scripting. Also InstallShield Setup.
- The CI-Toolkit Collection of software tools for use in continuous improvement programs and seminars. 300,000 user licenses sold. Includes Hypertext Author, hypertext database application, with RTF/HTML parsers and graphics support, Computer based training viewer, tester, content builder tool, Evaluation authoring tool, Techbase, contact, marketing and issues management, Task manager tool with gantt chart, Statistical tools: Pareto, histogram, scattergram, bar, matrix, fishbone, Activity Based Costing Analyzer tool. Custom install program.
- The Trend/SX.e-Clippership Interface Carrier compliant Windows shipping application, interface to ERP on UNIX. ROSE award, 1999. Also InstallShield Setup.
- SX.shipping, SX.e-CS and TWL-CS Interface, Carrier compliant Windows shipping application, interface to ERP on UNIX. Also InstallShield Setup.
- York Packing Machine Interface, Carrier compliant Windows shipping application, interface custom packing/labeling machine to ERP. Ships 60 packages a minute at Best Buy, Franklin OH.
- Data Trak Shipping Application, Carrier compliant Windows shipping application, interface with UPS OnLine WorldShip. Also InstallShield Setup.
- SX2Go Hotsync Handler Palm Pilot conduit application. Also InstallShield Setup.
- Pencil Labeling Control Custom motion controller, with DDE interface to ERP system.
- CyEdit An encrypting text editor
- Cipher A file encryption application
- Net Present Value of Disposable Retirement Pay, a legal analytical application
- GeoClipping, a popular web clipping application.
- PIREP Formatter, a utility for submitting pilot's reports for a DC-3 Airways
- Ghost Writer, a word processing application.
- The Human Genome Project Human Genome simulation software, Windows port from Mac application.
UTILITIES
- Command and control application for Defense Nuclear Agency EMP test "Bluebolt". Software performed "successfully" in this classified test.
- Data acquisition application for Defense Nuclear Agency EMP test of Trimble GPS. Software performed "successfully" in this classified test.
- On-line system for the Defense Nuclear Agency, using eSoft's TBBS
- Client/server database, using XML structures
- Rarity Value analysis application
- Online Bid Management application
- Backup plug-in for exec32
- HTTP script driven client plug-in for exec32
- Freeform database application
- Book/Sold analysis application, written for a retail shop
- Retail management application
- Raw data analysis parsing tool
- Database application for test records
- Network e-mail application (2)
- Several programmers text editors
- Quick Terminal, Communications program with xmodem
- Optio Interface to ERP host (Note: wrote 40%)
- Task time punchclock
- Professional Sales Assistant Windows rewrite
- GPS Tools
- Interface Administrator
- MAPI e-mail client
- Many ftp client applications
- Software registration server, using encryption and authorization codes
- Software registration client and server, using encryption, hash and Internet access
- Database code generating tool
- Flight planning E6B and flight logging application for Palm
- Message dialer
- SX.e host emulator
- Hundreds of custom solutions...
References available upon request.
- Help utility, converts hypertext database into Windows help files
- Spider, a network crawler file indexing utility
- Delimited files conversion tool
- Many various menuing and launch applications
- Batch file tools, 15 new functions for DOS batch files
- ASCII Screen Compiler
- Quick Address Database
- Hex Dump
- Print formatter
- UNIX utilities for DOS: sh, cat, ls, more, rm, vi, cron
- Benchmarking utility
- Time punchclock
- VDos, a full screen directory and file manager and shell
- Environment editor
- Smart change directory utility
- Memory map
- Incrementing Zip file utility
- Tree
- Countdown timer
- Elapsed Time
- Time arithmetic tool
- Get DLL version utility
- File search utility
- SUPPORT.ZIP remote service and support module
SOURCE CODE SAMPLE
This code was written by me. I wrote the language interpreter as well.
' ----------------------------------------------------------------------------- ' Script : Snarf Gazette.e ' Description: Snarf the Gazette local news website, convert to iSilo format ' and install on Palm Pilot. It also creates a website on your hard ' drive, for off-line viewing. This exec32 script demonstrates how ' to use the web clipping function in the exec32 Desktop Scripting ' Language to gather dynamic information from a website, striping ' out the "noise", and re-packaging the content for use on a handheld ' device. ' ' You can download the exec32 Desktop Scripting Language from the ' exec32 website at: ' http://users.adelphia.net/~rschoolfbn/exec32/index.htm ' ' Assumptions: C:\Temp exists. You have iSilo commandline converter software ' installed in D:\Program Files\iSiloWeb. You have a batch file ' "..\Bat\gazette.bat". Here is the contents of the batch file: ' @echo off ' "D:\Program Files\iSiloWeb\iSiloC32.exe" -y -I -Idef "c:\temp\gazette.htm" "c:\temp\Gazette.pdb" -i"Gazette Local News" ' rem pause ' ' Date : 02-20-2001 ' Author : Robert Schoolfield, rschoolf@hotmail.com ' Changes : ' Copyright : (C) Copyright 2000, by Robert Schoolfield. All Rights Reserved. ' This script is released to the Public Domain, and may not be re- ' sold. ' ----------------------------------------------------------------------------- sub main() ' ---------------------------------------------------------------------------------- 'trace dim r, tmp ' --- change directories to the exec32 Scripts directory... tmp = getdir("rundir") & "Scripts\" cd tmp ' --- check to see if we have done run today, and if so, bail... if done_run() then tmb "The snarf has been done run today." exit sub end if ' --- retrieve each local news item to a random file name, prepend an entry for each in the ' control file... snarf_todays_items ' --- read through the control file, and create a web site... create_website ' --- convert the website to an iSilo file, install it on my Palm via HotSync, and ' place a copy on a server for other to access... convert_to_isilo end sub function strip_html(thehtml) ' ----------------------------------------------------------------------------------- ' --- Given a string, stript out the HTML markup... dim tmp, r, i, buf, intag, ch, eatlist eatlist = chr(10) & chr(13) for i = 1 to len(thehtml) ch = mid(thehtml, i, 1) if ch = "<" then intag = true elseif ch = ">" then intag = false elseif not intag then if instr(eatlist, ch) < 1 then buf = buf & ch end if end if next strip_html = buf end function sub snarf_todays_items ' ----------------------------------------------------------------------------------- ' --- retrieve each local news item to a random file name, prepend an entry for each ' in the control file, and finish up with a date line. Web clipping works on the ' principle of predictable begin and end strings around the desired content... dim controlfile, buf, tmp, theclip, headline, itemfile, thedate dim fp, r, i, p, q q = chr(34) ' --- get the local daily news... for i = 1 to 8 theclip = clipping("http://www.gazette.com/daily/loc" & trim(i) & ".html", "<!headline>", "<!-- end of storie") if len(trim(theclip)) then write_the_clip(theclip) else exit for end if next ' --- get the daily life... for i = 1 to 8 theclip = clipping("http://www.gazette.com/daily/life" & trim(i) & ".html", "<!headline>", "<!-- end of storie") if len(trim(theclip)) then write_the_clip(theclip) else exit for end if next ' --- get the daily opinion... for i = 1 to 3 theclip = clipping("http://www.gazette.com/daily/opin" & trim(i) & ".html", "<!headline>", "<!-- end of storie") if len(trim(theclip)) then write_the_clip(theclip) else exit for end if next ' --- add a date line to the control file... thedate = date prepend thedate, "", "" end sub function gen_rand_name() ' ----------------------------------------------------------------------------------- ' --- generate a random webpage name... dim randint randint = Int(Rnd * (9999 - 1000 + 1)) + 1000 gen_rand_name = "c:\temp\" & Left(Trim(randint) & Trim(Int(Timer)), 8) & ".htm" end function sub prepend (thedate, itemfile, headline) ' ----------------------------------------------------------------------------------- ' --- add a line to the top of the control file... dim r, buf, fp1, fp2, tmpfile, controlfile controlfile = "c:\temp\gazette.ctl" tmpfile = "c:\temp\gazette.tmp" fp1 = fopen(tmpfile, "output") buf = thedate & "~" & itemfile & "~" & headline & "~" r = fprint(fp1, buf) fp2 = fopen(controlfile, "input") do r = finput(fp2, buf) if r < 0 then exit do r = fprint(fp1, buf) loop until r < 0 fclose fp1 fclose fp2 copy tmpfile & " " & controlfile end sub sub create_website ' ----------------------------------------------------------------------------- ' --- read through the control file, and create a web site... dim tmp, homefile, fp1, buf, fp2, headline, thedate, controlfile dim itemfile dim p, r, q, i q = chr(34) controlfile = "c:\temp\Gazette.ctl" homefile = "c:\temp\Gazette.htm" fp1 = fopen(controlfile, "input") fp2 = fopen(homefile, "output") buf = "<html>" r = fprint(fp2, buf) buf = "<title>Gazette Local News</title>" r = fprint(fp2, buf) buf = "<body>" r = fprint(fp2, buf) buf = "<h2>Gazette Local News</h2>" r = fprint(fp2, buf) buf = "<hr>" r = fprint(fp2, buf) buf = "<ul>" r = fprint(fp2, buf) for i = 1 to 40 r = finput(fp1, buf) if r <> 0 then exit for thedate = subtoken(buf, 1, "~") itemfile = subtoken(buf, 2, "~") headline = subtoken(buf, 3, "~") logmsg "thedate: " & thedate logmsg "itemfile: " & itemfile logmsg "headline: " & headline if len(thedate) then buf = "</ul><p>" r = fprint(fp2, buf) buf = "News from " & thedate & "<p>" r = fprint(fp2, buf) buf = "<ul>" r = fprint(fp2, buf) else if len(itemfile) > 0 then ' --- make a link to it... buf = "<li> <a href=" & q & itemfile & q & ">" & headline & "</a><br>" r = fprint(fp2, buf) end if end if next buf = "</ul>" r = fprint(fp2, buf) buf = "<p>News items snarfed from the Colorado Springs Gazette Telegraph by exec32, written by Robert Schoolfield.<br>Version 1.5<p>" r = fprint(fp2, buf) buf = "</body></html>" r = fprint(fp2, buf) fclose fp1 fclose fp2 end sub function subtoken(thestr, elem, delim) ' --------------------------------------------------------------------------------------- ' --- retrieve elements in a delimited string... dim tmp, buf, thestrc, p, i thestrc = thestr for i = 1 to elem p = instr(thestrc, delim) if p > 0 then tmp = left(thestrc, p - 1) buf = thestrc thestrc = mid(buf, p + 1) else tmp = "" end if next subtoken = tmp end function sub convert_to_isilo ' ------------------------------------------------------------------------ ' --- convert the website to an iSilo file, install it on my Palm via HotSync, and ' place a copy on a server for others to access... ' --- kill the existing iSilo file... del "c:\temp\Gazette.pdb" pause 1 ' --- convert the new website into a Palm database... exec "..\Bat\gazette.bat" pause 2 ' --- copy it to the server... if exist("\\nxtintprod\public\palmdb\readme.txt") then copy "c:\temp\Gazette.pdb \\nxtintprod\public\palmdb" end if ' --- install it on my Palm... exec "c:\Palm\Instapp.exe c:\temp\Gazette.pdb" pause 1.5 sk "~" end sub function done_run() ' ------------------------------------------------------------------------ ' --- check to see if we have done run today... dim fp1, buf, thedate, controlfile dim r thedate = date controlfile = "c:\temp\Gazette.ctl" fp1 = fopen(controlfile, "input") r = finput(fp1, buf) fclose fp1 if instr(buf, thedate) = 1 then done_run = true else done_run = false end if end function sub write_the_clip(theclip) ' ------------------------------------------------------------------------ ' --- write the clip to a web file... dim controlfile, buf, tmp, headline, itemfile, thedate dim fp, r, i, p, q ' --- trim up the clipping... 'p = instr(theclip, "<p>") 'if p > 0 then ' buf = mid(theclip, p) ' theclip = buf 'end if ' --- find the headline... p = instr(theclip, "<!headline>") headline = "Item" if p > 0 then tmp = mid(theclip, p, 100) headline = strip_html(tmp) end if ' --- write out the story file... itemfile = gen_rand_name() fp2 = fopen(itemfile, "output") buf = "<html>" r = fprint(fp2, buf) buf = "<title>" & headline & "</title>" r = fprint(fp2, buf) buf = "<body>" r = fprint(fp2, buf) ' --- write the clipping... r = fprint(fp2, theclip) buf = "</body></html>" r = fprint(fp2, buf) ' --- close the file... fclose fp2 ' --- prepend the entry in the control file... thedate = "" prepend thedate, itemfile, headline end sub