ROBERT L. ODEGARD
Eagan, MN ****2
612-***-**** (Cell)
********@*******.***
Career Summary:
Software Engineer with 30+ years experience using a variety of technologies and platforms to solve real world problems. Demonstrated strengths in learning technologies, object-oriented design and innovative problem solving, from embedded systems to client servers.
Skill Summary:
Languages: 20+ years C++, 12+ years C#, 30+ years SQL, 2 years Python, 1 year Java, 20+ yearsAssembly, and 1 year PowerShell. Web: ASP.NET, Angular, Vue.js, Blazer, Cold Fusion, MVC, ASP, HTML Databases: 20+ years Microsoft SQL, 2 years MySQL, 6 years Sybase, 3 years SQLite Operating Systems: 6 years RTOS, 2 years Ubuntu LINUX, 3 years Raspberry Pi, 20+ years MS-Windows, 30+ years MS-DOS. Networks: TCP/IP, Microsoft COM/DCOM, Embedded (CAN, I2C, SPI and WS2812). Hardware: IBM PC, SUN, HP, Embedded (Arduino, ESP32, Teensy 4.x, Seeeduino Raspberry PI, Raspberry Pi Pico, 68000, 80x86, 68332, 68376, 8051, 8515, SX8, PIC).
IOT: 2 year Home Assistant (ESP32 with C++)
MQTT: 2 years Home Assistant, 2 years Node-Red
Software: GIT, WPF, Intel-J, VS Code, Spring Boot, IIS, TFS, ROS2, Home Assistant, Nana GUI C++, Node-Red, IOT ROS2 (Robot Operating System) using Ubuntu Linux 1 year Design: 20+ years OOD
Graphics: 20+ years Adobe Photoshop, 5 years Corel Paintshop Pro, 2 years Direct X Relevant Experience:
C++ (20 years)
Independent Consultant
Tech-Pro/Global Case
Teradyne
RoboVac Systems Inc
Forth Shift
Jasc Software Inc.
Software Architects
Adia Information Technologies
Cooperative Power
Apertus Technologies
Embedded (12 years)
Independent Consultant
Teradyne
RoboVac Systems Inc
Apertus Technologies
Dairyland Power
RTOS (6 years)
Independent Consultant
RoboVac Systems Inc
Apertus Technologies
SCADA (9 years)
Cooperative Power
Control Data Corporation, Energy Management Division Dairyland Power
Robert Odegard 2 of 5
Work Experience:
Independent Consultant: 2021 – Present
System Designer for local business
Developing a control system using Node-Red on Ubuntu Linux with Arduino microcontrollers, to control the special effects of an entertainment production. This includes developing the printed circuit boards, sensors and output control modules. The Node- Red UI interface, allowing none technical people to update how the system interacts without requiring developers to update the software.
Using Teensy 4.1 with RTOS to control devices for effects.
Using ESP32 for wireless communication to Teensy 4.1 devices.
Using ESP32 with Home Automation to control devices for effects. Talent Software Services on assignment to MN-BCA 2022 – Present Application Developer (C#, MVC, HTML, JavaScript, React, VUE.JS, SQL, Windows Services)
Performed enhancements of the BCA law enforcement Predatory Offender Registry Web site, utilizing C# .Net 4.5, MVC, JavaScript, HTML, and windows services.
Developed a GUI project task tracking application using C++/20 and Nana GUI C++ library that is cross platform (Windows and Linux)
Developed a C++ version on Linq using C++/20
Roehl Transport 2009 – 2022
Application Developer (C#, WCF, WPF, Angular, ASP.NET, MVC, SQL, Windows Services)
Designed and implemented C++ tool FP (File Processor) that can be used to assist in manipulating data to generate command scripts or SQL scripts.
Designed and implemented the .net window services and UI, allowing the central dispatch control system to utilize a new Fuel & Route management system from Manhattan Associates. This include the following technologies and systems: web-based user interface to administer and use the system, web-based report exports to excel, TCP/IP communication, MSMQ inter-process communication, Email notification, WCF services (client and provider), web-services, Windows Services, internet maps to display location of vehicles, PC-Miler integration.
Designed and implemented a web-base application parameter configuration tool, allowing developers to control the values of application parameter settings, and provide audit trail of parameter changes.
Designed and implemented a refrigerated trailer monitoring system using new StarTrak WCF services to monitor the state and temperature of refrigerated trailer moving thru out North America.
Designed and implemented the sub-system for Qualcomm communication that replaced the AS400 Qualcomm communication system. The new sub-system utilizes the new WCF interfaces from Qualcomm and several .net windows services to allow direct communication with Qualcomm devices and our central dispatch control system.
Designed and implemented the sub-system for DriverTech (TruckPC) that replaced a custom DriverTech SQL base interface. The sub-system utilized the new WCF interfaces from DriverTech and several .net windows services to allow direct communication with DriverTech devices and our central dispatch control system.
Created new Qualcomm and DriverTech macros for DOT DVIR reporting along with the changes in background processes to support the validation, logging and reporting of DVIR messages.
Designed and implemented a .net windows service to retrieve and store HOS (Hours of Service) data from Qualcomm and DriverTech, using new WCF services. Plus, altered existing web-pages on the central dispatch control system to display the HOS data to the fleet managers.
Designed and implemented a .net window service to retrieve and store the ELOG (Electronic Log) for drivers from Qualcomm and DriverTech, using the new WCF services. Created new web-pages in the central dispatch control system to graphically display the ELOG information to the fleet managers.
Designed and implemented a .net windows service to automatically report driver hours for all drivers with Qualcomm or DriverTech ELOG equipped trucks.
Designed and implemented .net windows services to retrieve Qualcomm SensorTracs and DriverTech DriverPerformance information from new WCF web-service interfaces and send that data to the Driver Payroll system.
Enhanced functionality of an EDI Microsoft MVC 3.0 Utility Web-Site, allowing EDI implementation personal to directly update control records within the BIZ Talk system, allowing rapid EDI “On Boarding”.
Developed utilities for developers to do their work more efficiently.
Refactored existing code bases to be more testable by adding repositories, isolating external dependencies, allowing tests to use mock software to help test code.
Added OpenLayers and ALK Map functionality to Fuel & Route System and IRIS user interfaces.
On the scrum team to develop Workflow process to aid the drivers in the day to day activities. This process had many parts, from MVC front ends to client server back office applications. Robert Odegard 3 of 5
Tech-Pro 2005 – 2009
Sr. Consultant - On assignment at Target Corporation
Web Applications
Developed enhancements to internal web applications that accessed DB2 database and performed “Stores Order Enhancement” and
“Automated Production Guide” operations.
GUI
Converted VB applications into C++ GUI systems and create new GUI applications (either C++ or C#) as need to support Stores Development.
Web-Services
Designed, developed and implemented Web-Services using ASP.NET to allow corporate applications (web and otherwise) to retrieve the URL of the ISP (In Store Processor) database. Also, designed, developed and implemented the ASP and C++ code required to access the web service.
Win CE SIP
Developed and implemented Win-CE keyboard plug-in, using Visual Studio 2005.
Graphics for web development
Using Adobe Photoshop CS2 was able to combine images to make them look “Real” for use in various business web applications.
Common Printer Efficiency
Modified legacy C++ applications to remove custom label printing code and use a common web service printer engine to print shelf labels. Developed the C++ interface wrapper used by the legacy C++ applications to call a SOAP web service.
C# Inter-Op to existing COM components
Developed and implemented COM objects to interface between C# applications and legacy COM components.
C# Common Function Library
Developed and implemented a Common C#.NET library containing utility functions for application development.
Enhanced Legacy application testing
Developed and implemented methods to automate the testing of existing legacy C++ applications. Designed and implemented tools to support testing of applications (MQ Utility, SQLADO Utility).
Legacy application performance enhancement
Modified an existing legacy C++ application to optimize the SQL queries and processes to increase the number of labels printed per second by 300%.
VC 6.0 to VC 2008 Migration
Assisted in the migration from Microsoft VC 6.0 to VC 2008 and solved various migration problems.
IBM Web Sphere MQ Development
Designed and developed applications using IBM Web Sphere MQ to transfer data from a source (corporate data servers or “In Stores Processor”) to a destination server, storing the data in a database or passing it on to other processes.
Trouble Shooting Store Issues
Performed diagnostics in the store systems to resolve problems encountered at the stores.
Mentoring
Provide mentoring to junior developers on various technologies. Robert Odegard 4 of 5
Teradyne 2004 – 2005
Sr. Software Engineer
Developed a daily testing environment to execute functional tests on updates of the programmable power supply and distribute the results to the development department. Developed a code generator (in Perl) to automatically create the COM code to link the Windows application to the embedded system. Developed a data caching system for the Windows application and the embedded system.
Global Case 2003 – 2004
Sr. Consultant
From UML specifications implemented various upgrades to C++ and Microsoft SQL Server applications for a retail distribution organization. Assisted in the evaluation of Microsoft .NET for future development. RoboVac Systems Inc 2002 – 2003
Sr. Development Engineer
Designed and implemented the embedded “Engine Room” platform of an autonomous robotic system that can navigate in an industrial environment.
Software:
Image processing
Image capture using direct X
Edge detection using various methods: Robert’s, Sobel, etc.
Statistics such as histograms, standard deviation, means and averages
Color segmentation
Pattern matching
Process Control
PWM (Pulse Width Modulation) of drive motors using 68332 TPUs
Quadrature decoding using the 68332 TPU
PID (Proportional Integral Differential) process control
Trajectory Generation for PID using either distance or velocity profile
Dead Reckoning processing for location tracking
CAN (Controller Area Network) - the primary means of communication between all the processors onboard the robot
I2C - Network communication between various sensor modules
Embedded programming of dedicated sub-processors Atmel T89C51CC01 and Sceinx SX8s
Simulation system that allowed for testing new software before it was loaded into the robot Hardware:
Dual H-Bridge Motor Control unit
Embedded CPU board design and layout
Interfacing circuitry:
Power indication via optical-isolation
Caster angle via a signal conditioning op-amp
Bump sensors via a de-bounce circuit
“Stop Cord” via relay and TTL control logic
Multi-Channel Sharp IR sensor interface for the T89C51CC01 cpu
Designed the main power unit and control system with both hardware and software interlocks Forth Shift 1999 - 2001
Senior Software Engineer
Performed tasks to migrate a legacy application to utilize MS-SQL Server, ADO, OLE-DB, COM/DCOM (both MFC and ATL).
Designed and implemented feature and speed enhancements to FSRecordset (a C++ wrapper class for simplifying and isolating access to the database).
Completed implementation of the “Deferred Task Framework” a multi-threaded multi-host library that allowed for multi-threaded server applications to be invoked and controlled from a remote client.
Performed speed enhancements on numerous Microsoft SQL server stored procedures.
Designed and implemented the “Lockless Scroller” (a library that easily allows developers to build interactive screens to access and manipulate information in the SQL database).
Performed tutoring and mentoring to other developers in C++ and SQL. Robert Odegard 5 of 5
Jasc Software Inc. 1999 - 1999
Senior Software Engineer
Implemented new graphics features in the libraries using MS VC++ 6.0 for Paint Shop Pro and Animation Shop. Developed the software to allow Paint Shop Pro to read and write Adobe Photoshop Adjustment layers. Software Architects 1995 - 1999
Software Consultant - On Assignment to Carlson Company - 1997 - 1999 Designed and implemented a three tiered multi-user Client/Server Application for credit card reconciliation, using MS VC++ 5.0, MFC, ODBC, COM/DCOM, TCP/IP, SQL, Sybase SQL Anywhere, and MS-SQL 6.5. This system allows the users to take in charge card statements and match them to expense data to determine the actual billing to the charge card vendors. Software Consultant - On Assignment to West Publishing - 1995 - 1997 Converted windows C based applications to a C++ framework for the Premise Publisher 4.0 system. Designed and implemented a smart data dump utility in Borland C++, allowing user to view Premise data files in a more usable manor. Designed and implemented the virtual data paging system and table access engine for a database system. Adia Information Technologies 1994 - 1995
Software Programmer - On Assignment to 3M
Designed and implemented a C version of a C++ Class Object to access a Sybase database. Designed and implemented various business interface applications using C and SQL, using Sybase Data Server on a HP T-500 platform running UNIX S5V4. This software interfaces the OpenUpTime product (Sybase client/server application) to legacy HP-3000 and IBM mainframe business systems.
Cooperative Power 1992 - 1994
Senior SCADA System Analyst
Designed and implemented a C++ Sybase database wrapper on the SUN Solaris UNIX system, providing faster application development. Designed and implemented C++ container classes (stacks, lists, trees and queues) for the IBM-PC.
Designed and implemented a "Pattern Propagation" tool, using C on an IBM-PC to populate the SCADA database.
Designed and implemented interface applications using C/C++ and SQL using Sybase Open Server on a SUN Solaris 2.2. Apertus Technologies 1987 - 1992
Senior Software Engineer
Designed and implemented applications and features using PL/M on an embedded 80186/IBM-PC platform, for use in the DataStar 5000 cluster controller, including a Keyboard modify utility, an IBM 3270 Screen Presentation system for utilities, a diagnostics utility, and other related features.
Designed and implemented the conversion of the RTE (Real-Time operating system) to allow dynamic configuration of system tables and resources. The conversion merged nine separate versions of the RTE into one easily maintainable version. Redesigned device drivers used in the RTE, and designed and implemented a crash dump analyzer (DMP).
Designed and implemented a multi-tasking MS-DOS operating system, using C. The system replaces conventional MS-DOS and provides all the same services as conventional MS-DOS.
Implemented enhancements to the TCP/IP applications interface system used in the Telnet module. Control Data Corporation, Energy Management Division 1985 - 1987 System Programmer
Analyzed and implemented the enhancements for R&D version of the Supervisory Control Sub-system, used in the SCADA
(Supervisory Control and Data Acquisition) System. Designed and implemented a SCADA development system, allowing developers to unit test their software, without having to reserve limited test-bed hardware. Dairyland Power 1982 - 1985
System Programmer
Designed and implemented a Real-Time Data Acquisition System for a nuclear power station, using FORTRAN and Macro-11 on PDP-11 running RSX11-M. Designed and implemented a Reactor Plant Simulator as a training tool for emergency drills. Designed and implemented scientific applications for the Health and Safety department. EDUCATION
Bachelor of Science in Computer Science - 1982
University of Wisconsin-La Crosse - La Crosse, Wisconsin