Work Locations: Western States, Colorado, Texas, San Francisco
Colorado Springs, CO
Software Developer WHEATBRIDGE Colorado Springs, CO
May 2011 to Present
1. NodeJS, Express JS, Responsive Apps. Currently working on a series of 3 NodeJS apps.
2. 802.11 Detection & IoT Integration: Cell phone/Bluetooth detection for traffic transit time calculation, municipality traffic congestion matrix sampling, crowd mapping. Originated the detection component (back end), middleware, and UI/UX. (Responsive: cell to desktop). Original LAMP + WordPress version, also Node.js + Mongo (MEAN) version.
3. Angular JS/React Fixup. Code fixup, bug repairs, feature additions and testing of a Angular JS/React/Grails/JVM website.
Software Developer & Multimedia Producer TRAFFIC OPERATIONS CENTER Colorado Springs, CO
August 1998 to April 2011
Worked in concert with IT department, professional engineering (PE) staff, software developers, vendors, network engineering staff, and traffic engineers at Colorado Department of Transportation and City of Colorado Springs operations centers in the development of software for traffic operations in El Paso county and other locations throughout Colorado. Project funding was through US Dept. of Transportation. Note: Most all of the modules/software listed below operated as stand-alone programs, a windows service, in some instances also as a web service, and as modules integrated into a system-wide user interface. Module interfaces were through synchronous and asynchronous (multi-threaded) protocols: HTTP, DCOM, TCP/IP, UDP, serial, WMI (Windows Management Interface), ASCII, SNMP, socket servers, event-manager message interception, .NET components, WIN32 message interception, database triggers, shell commands, WIN32 APIs, mutex interception, process injection and various other methodologies.
2010 €” 2011
H.264 Video Virtual Matrix Switcher & Transcoder Software. This multi-monitor and video wall desktop app supports numerous video windows that capture H.264 and other types of video surveillance streams; it records multiple streams from multiple threads to multiple files on multiple discs while avoiding head contention issues. The program captures individual frames and contains algorithms for motion detection and object counts: for example, it can count pedestrians on the street or cars on the road as well as recognizing types of objects. [C#, VB, MS-SQL, transact SQL, vLan, MPEG, H.264, H263, multicast, unicast, point-to-point, Internet Group Management Protocols (IGMP)]
Camera PTZ & FOV Controller/Virtual IP Controller Software. A corollary of the system above, this software module controls dome camera movements, adjusting camera positions via joystick or cross-hairs on video monitors. It controls camera swivel in 1-degree increments, pan, tilt, zoom, focus, color, wipers, tracking, field-of-view calculations, and so-on. [C#, VB, SNMP, STX/ETX, i5110, Panasonic, Pelco, Canon, network packet sniffing, TCP/IP, hex packets, binaries, MIB]
Origin & Edge Media Streamer Network. Set up and tested a WOWZA origin and edge media server expandable for 200+ cameras. Origin server ‘A’ was on a subnet, followed by a firewall, with an edge server that delivered media to load-balancing servers and from there distributed to the public. [WOWZA, Flash, ECMA-262, supplemental vLan transcoding using VLC, Windows 2008 servers, HTML]
SNMP Controller. This VB.NET application is for iVolution 1000 and for setup of IGMP on Extreme Networks Summit switches. This is a simple module for setting MIB values via SNMP. [C#, VB.NET, SNMP, loading & parsing MIB files into XML files, assembling subsequent XML files into application configuration files, TCP/IP, UDP, IGMP on Summit Switches]
2008 €” 2010
Network Poller & Database. This multi-threaded network poller searches a network with multiple subnets asynchronously for hundreds of IP devices, collects and identifies MAC addresses, correlates MAC addresses with manufacturer tables in MS SQL database, searches port addresses to attempt to identify types of hardware, sends STX/ETX, ASCII, and binary commands to ports to confirm hardware type, measures network latency, if it identifies the object as an ethernet-to-serial it attempts a search of multidrop (HDLC) addresses, attempts to communicate with and identify type/kind of device. After building a database image of the network and its subnets, it compares the current topography with historical topography and alerts users to any changes and creates a plug-and-play scenario for new devices connected to or dropped from the network. The program correlates types of devices found with configuration options (Telnet, SNMP, HTTP) and then tests and creates connection links to configuration protocols/interfaces. [VB.NET, SNMP, HTTP, Telnet-ASCII, TCP/IP ]
Time-lapse Still and Video Builder for IP Cameras. This system precisely positions an IP camera (or multiple cameras) and captures images from a JPEG, H.264, H.263, or MPEG stream. The images are stored in a series of directories. Time-lapse video is then assembled €œon demand€� with the user selecting the frequency/timing of shots: e.g., a time lapse with a snapshot at 8:00 a.m. each day, or a time-lapse composed of images every hour. The program identifies the images nearest the requested time and assembles an AVI or H.264 file, which is transcoded to SWF and FLV (or other selected) formats for web transmission. [C#, VB.NET, MS-SQL, videoDub, x264, MS SQL Database, Panasonic IP camera, GSP Systems IP camera, Bosch IP camera, ASP.NET, FTP]
Microhard/Radio Network Poller. A poller that accounts for signal drop on IP/ethernet radios. It continuously polls until successful or generates an alert when not successful. [VB.NET]
Wavetronix Data Collection. A data warehousing and polling module that queries Wavetronix radar sensors, parses the string values, stores the data in an MS-SQL database. [T-SQL, MS-SQL, triggers, stored procedures, VB.NET, ASCII string and binary conversions]
EOC (Emergency Operations Center) Camera Controller and Video Streamer. Network tunneler and camera device controller (SX-850) designed to overcome firewall blocking of UDP messaging. Video is streamed through a Flash Media Server or transcoded to H.264, WebM, Ogg, etc. for web streaming. [HTML, ASP.NET, network UDP & TCP/IP, VB.NET] Remote Signs Lite. A small laptop program for controlling matrix signs outside the firewall. [T-SQL, database triggers, DLLs, database launch of external programs using WIN32 API and Shell functions, ITC-HTTP, HTTP, C#, VB.NET]
Voice-activated DMS/VMS. This is an application based on Google Voice. Voice mails are accepted by Google Voice, transcribed to text messages, and then sent to an e-mail account, which is queried and downloaded using SMTP protocols. Messages are matched to an approved list in an MS-SQL database via SOUNDEX() and DIFFERENCE() and, if a match is found, an NTCIP SNMP message package is constructed and sent via TCP/IP, Serial, or Modem transport to matrix signs, which display the requested message or graphics. [SNMP, MIB, SMTP, NTCIP, VB.NET, C#, C, network and serial protocols, T-SQL, Google Voice]
E-mail-activated DMS/VMS. This does the same thing as above, but bypasses the voice activation and accepts e-mail and SMS messages sent via cell phone or SMTP.
Multi-threaded Matrix Sign Poller & Setter. A large, multi-threaded program that packaged command-and-control SNMP binaries for Matrix signs. Prior to this, all native (manufacturer based) control programs were synchronous, but this created an asynchronous environment of control of these devices. The user interface is like a property grid, and is built on the Visual Hint Smart Property Grid component. [T-SQL, VB.NET, C, SNMP]
2006 €” 2007
Image Digitizer & Graphics Repair. (Consulting work for Animart Galleries) This VB program interfaced with a large-format scanner that digitized hand-painted animation cels from the Alexander Film library. The program would take a series of images from the digitized sequence, adjust color saturation and color values to match from one cel to another, clean the images of specks and acetate shine, create transparency for the background, adjust X and Y positions for image match, create png and other copies of images and record the image sequencing in a database. [T-SQL, MS-SQL, VB.NET, C, SNMP]
SX-850 Camera Controller-Revision. Revised an SX-850 camera control system to fit into Visual Studio 2005 and .NET environment. Also built a revised user interface in Visual Studio. [C#, VB.NET, DLL wrappers]
2005 €” 2006
Traficon Video Detection Integration. This integrated Traficon video detection streams and data into the Roadrunner system. It collected data from remote stations and uploaded data via HTTP transfer and integrated video playback and conversion of legacy 8-bit AVI files into SWF files for web playback. [MS-SQL, VB6, MS Access, MySQL, XML, ITC-HTTP]
2002 €” 2004
Webcam & Video Stream Capture. This image capture program collected images from traffic cameras on the interstate highway system. The program was capable of capturing video streams (AVI files) as well as JPG, BMP, TIF, TARGA and other types of files. Images were saved via FTP to a disk system accessed by a website that distributed the images. [VB, T-SQL, MS-SQL, Access, FTP protocols, WS-FTP]
TIGER Mapping. Wrote a mapping program that took TIGER database street chains, decomposed the polygons using winding-number algorithms, created polys and mapped the subsequent location using Flash or SVG technology. System included a color picking option for NTSC colors, web-safe colors, or CMYK color systems. [MS-SQL, T-SQL, VB-6, Flash, SVG, various conversion algorithms]
Microsoft Voice. This program utilized the Microsoft Voice SDK to control camera selection, orientation, pan, tilt, and zoom through voice commands. [Microsoft Voice SDK, VB-6, TCP-IP, Flash]
Automated Video Broadcast Version II. This revised automated video broadcasting system took SWF (Flash) based timelines and dynamically generated content (traffic conditions, weather conditions, public service announcements, airplane departures/arrivals, etc) and switched cameras and cut in NTSC video feeds of traffic cameras for broadcast over cable television stations. [Flash, VB6, HTTP, TCP/IP, SVGA to NTSC conversion, WINSOCK socket serving, ITC-HTTP Data Mining]
Roadrunner Version 1. This traffic center control station was web based and used Flash for the operator’s interface. The back end used VB6, C++ DLLs and components, and MS-SQL. Hardware input types included: video detectors, radar, video, web XML feeds, web data mining, police CAD systems, weather feeds, data streams, and DCOM connections. Output hardware included fax, cel phone, PDA, broadcast (television), tape video, digital video, variable message signs, and printed media. Output formats included PDF, SWF, plain Text, AVI, XML, BMP, JPG, web datacasts, web streams. Operator inputs included keyboard, joystick, and voice activation. [Flash, VB6, HTTP, TCP/IP, SVGA to NTSC conversion, WINSOCK socket serving, ITC-HTTP Data Mining]
2000 €” 2002
Weather Database and Module. This module was one of the first modules for the Roadrunner traffic management system and automated a video broadcast system. It performed data mining operations on NOAA websites every ten minutes and collected and stored the following types of data into an MS-SQL 2000 DB: GOES West & East, water vapor, radar, precipitation type and quantity, wind speeds, cloud cover, temperature, heat index, relative humidity, thunder, dewpoint, and weather advisories. It had a small Flash-based display interface that could be cut into broadcast streams or a User Interface. [VB6, ITC-HTTP, Flash]
Automated Video Broadcast Version I. This automated video broadcasting system took SWF (Flash) based timelines and dynamically generated content (traffic conditions, weather conditions) and switched cameras and cut in NTSC video feeds of traffic cameras for broadcast over Cable Television Stations. [Flash, VB6, HTTP, TCP/IP, SVGA to NTSC conversion, WINSOCK socket serving, ITC-HTTP Data Mining]
Junior Achievement Website. (Consultant) Website built for Junior Achievement National Headquarters. [Flash, SQL 7, Access database, HTML, various DLL’s written in VB6] Several Video Projects. Produced a number of videos for the City of Colorado Springs on various topics, including: open spaces, waste water management, local government, 30-minute news shows, etc.
1998 €” 2000
Traffic Show. Produced a semi-automated traffic program for cable television during rush hours. Contained several dozen traffic cameras and announcements.
Automated Broadcast System. (Built an automated broadcasting system that would show programs at designated times for cable television. Controlled Betacam SP UV1800, Beta, Super VHS high-end tape machines.
Cable Broadcast System. Designed a cable broadcasting system for City of Colorado Springs.
Traffic Website. Built a traffic website based on Flash 3, Flash 4, and HTML that included webcam images captured using various software packages.
President & CEO PEGASUS LEARNING COMPANY Colorado Springs, CO
December 1991 to June 1998
One of three partners in an educational technology firm that specialized in building educational technology products for textbook publishers and school systems. Started company with $10,000 investment and took it to multi-million dollar revenues.
1997 €” 1998
Web Spider and Fax Sender. Built a web spider that crawled the web searching for fax phone numbers. Program would then trigger on Fridays at 12:01 a.m. and send faxes until 11:59 p.m., as we had Sprint free Fridays program. Faxes would be to school libraries, who were customers for our products.
Junior Achievement Grade 6 CD. A CD-Rom that contained a visual database, test bank, and several social-studies interactive programs targeted to 6th graders. [Allen C++ .NET]
Junior Achievement Grade 6 Videos. A series of videos targeted to 6th grade social science, distributed by Junior Achievement.
1996 €” 1997
Website for Pegasus. Built a corporate website using HTML version 1. [HTML] Online Content Approval Website. Built website for approval and storage of content for the Science Anytime Series, to be accessed by Harcourt. [HTML]
Junior Achievement Grade 5 CD. A CD-Rom that contained a visual database, test bank, and several social-studies interactive programs targeted to 5th graders. [Allen C++ .NET]
Junior Achievement Grade 5 Videos. A series of videos targeted to 5th grade social science, distributed by Junior Achievement.
Science AnyTime Videodisc Series. A series of 7 interactive videodisks and textbook materials produced in conjunction with Harcourt Brace of Orlando, Florida. Constituted 7 hours of programming with an accompanying CD-ROM Programming Guide. All the material was barcode accessible. Video screens were built using Photoshop and Avid Media Composer. The videodisks contained a database of 3000 images with corresponding text annotations. [Avid Media Composer, Photoshop, Allen C++, various image conversion programs, CSV database files, Hypercard]
1995 €” 1996
Science AnyTime Science Experiment Series. A series of over 60 videotapes and textbook materials produced for Harcourt Brace of Orlando, Florida. Constituted over 60 hours of programming with an accompanying Guides. [Betacam SP, Avid Media Composer, Photoshop, Allen C++, various image conversion programs, CSV database files]
Junior Achievement Grade 4 CD. A CD-Rom that contained a visual database, test bank, and several social-studies interactive programs targeted to 4th graders. [Allen C++ .NET] Junior Achievement Grade 4 Videos. A series of videos targeted to 4th grade social science, distributed by Junior Achievement.
Healthy 2000: Tobacco, Alcohol, & Other Drugs Interactive Videodisks. An award-winning interactive videodisk with barcode materials and barcoded controls. Produced for Churchill Media in Los Angeles. [Avid Media Composer, Photoshop, Allen C++, various image conversion programs, CSV database files]
1993 €” 1995
Healthy 2000: HIV & STDs Interactive Videodisks. An award-winning interactive videodisk with barcode materials and barcoded controls. Produced for Churchill Media in Los Angeles. [Avid Media Composer, Photoshop, various image conversion programs, CSV database files]
Harcourt Internet Project. Conducted research into Internet materials available for linkage to textbook series. Wrote a C++ portal that utilized Mosaic as a demonstration program.
Healthy 2000: Human Reproduction Interactive Videodisks. An award-winning interactive videodisk with barcode materials and barcoded controls. Produced for Churchill Media in Los Angeles. [Avid Media Composer, Photoshop, Allen C++, various image conversion programs, CSV database files]
Being Healthy Interactive Videodisks. An award-winning video series and accompanying print materials produced for Harcourt Brace of Orlando, Florida. [Avid Media Composer, Photoshop, Allen C++, various image conversion programs, CSV database files]
1991 €” 1993
Healthy You. A series of interactive 4 videodisks and barcoded textbooks produced for Scott Foresman in Chicago.
Science AnyTime Video Series. A series of 18 videos produced for Harcourt Brace in Orlando, Florida. Footage for these videos became the foundation for the Science AnyTime Videodisk Series.
A Closer Look. A series of 5 science videodisks and barcoded textbooks produced with Smithsonian Institution materials for Churchill Media in Los Angeles.