logo
Keep in touch with meI'm using Intch to connect with new people. Use this link to open chat with me via Intch app
Work Background
Senior Software Engineer
Trimble Inc.Senior Software Engineer
Nov. 2021 - Feb. 2024United States, Westminster3D Architectural App Tech stack desktop / server: C++ 17, Javascript, Objective-C, Swift, Qt6 Widgets, CEF, Sqlite, React, CSS, Go, Postgres, Docker, GTest, Object Oriented Design, iOS, Windows, MacOS - Trimble Connect Integration: Lead design and integration with their cloud file storage using the rest api endpoints. Implementation included async http request processing with state machines, caching project meta data and updating UI dialogs with an event mediator. - Remote File Navigation: Added to and collaborated on file navigation including creating projects, folders and/or adding files. This work included Qt file navigation dialogs and a recent files list. - Documentation: Provided clear documentation of supported use cases with sequence diagrams and activity diagrams, using plantuml. - Unit Testing: Included GTest, GMock unit testing with remote file integration improving the stability and performance of the integration. - Shared Preferences Rest API: Implemented rest api for any shared preferences for the web, mobile or desktop apps. We used docker containers for development with the desktop app. The containers were given to the web team to deploy with AWS. - SVG Animation: Added Qt SVG animations to desktop app, improving the UX experience with file state changes during file operations including save, download and upload. - Auto Suggest Control: Model scene auto-suggest control, to switch between model scenes. - Performance Profiling: Profiled the app using Visual Studio to analyze and fix processing bottlenecks. - Logging: Added logging and timing metrics to http queries for easier maintenance.
Senior Software Engineer
Robert Half TechnologySenior Software Engineer
Nov. 2019 - May. 2020United States, Cincinnati3D Aircraft Maintenance App Nov 2019 – May 2020 Tech stack desktop / tablet / server: C++ 14, Qt5 Widgets, Sqlite, Java, SqlServer, Postgres - Parts Tree Control: Designed and implemented a new Tree Control that let users find and choose parts on a 3d cad drawing. Providing a simple filter that narrowed the list of parts. When a user selected a part the 3d viewer would scroll and zoom into that part. - Barcode Scanner Control: Implemented the tablet UI for a barcode scanner. When a maintenance operator or engineer wanted to see a part on the cad model they only needed to scan the part. We would zoom in and center the 3d view on that part. The barcode scanner api was implemented by another team member. - SQL Upgrade Scripts: Added new fields into existing server side Java classes and added the columns to the SqlServer and Postgres upgrade sql scripts.
Senior Software Engineer
TEKsystemsSenior Software Engineer
Apr. 2019 - Nov. 2019United States, DaytonLink16 Service April 2019 – Nov 2019 Tech stack: C++ 11, Boost, UDP, Raw Sockets, TCP/IP, Bash, Google Test, Android - Link16 Message Engine: Decoded link16 messages routines and fixed some bugs with the translation engine. Tested using a Harris Radio and with simulation software. - Event Driven Architecture: Added events based on Boost Signals2 design pattern, utilizing shared_ptrs bound to class instance functions that handled TCP responses from link16 messages received on Radio. - Debugged Custom Socket Interface over a usb port to the radio to get the messages from the registers on the device. - UDP IPC Messages Added IPC JSON messages that were translated and sent to the Java Android app via a UDP connection.
Senior Software Engineer
LENASenior Software Engineer
Feb. 2013 - Mar. 2014United States, BoulderSpeech Reports App Tech stack: C++ 11, MFC, Boost, FTP, Bash, XMLSoap, Win32Api, Sqlite, Unit Testing - Local Time Conversion: While working through some bugs that were being reported from clients in England and Australia related to local time calculations. I discovered over 8 different implementations to calculate local time using various date time methods in the win32 api and linux/posix api. I leveraged C++ BOOST_TEST adding date time calculations as they were implemented. Then I started refactoring the various implementations into a custom C++ date time class that inherited from the Boost DateTime class to use the Olson Timezone database to calculate local time. - FTP File Delivery: Refactored the existing speech analysis xml file delivery feature into a multi-threaded file delivery queue, protected with a mutex and locks. The problem was that sometimes speech analysis files were becoming corrupted on the server and discovered that the client app was delivering them from different areas of the app using the same FTP connection. And if the timing was right the FTP directory might change while a file was being delivered. So instead of adding multithreaded complexity we added a simpler FTP processing queue where one file at a time was delivered. - Filter Bar Control: Added a C++ class to manage the filter bar so users could intuitively apply filters to various columns in their client list. The class wrapped all the lower level Win32Api calls around HDS_FILTERBAR to properly size, show, hide and retrieve the filter bar strings as they entered the text. We would then use the text as filters on SQL queries for the data shown in the table. - SQL Queries: Fixed several sql queries, improving performance. - Online Sync: Added new sync feature between desktop and the newer online app to sync client speech studies stored locally, using MSSoap xml with .NET WebMethods as receivers. - Unit Testing: Setup testing suite for stress and unit tests using BOOST_TEST against 10, 100, 1000, and 10000 users. Probably stretching what a unit test is classified as, but it helped us narrow in on the various views that needed attention at the time.
Senior Software Engineer
American Science & Engineering (acquired by Rapiscan)Senior Software Engineer
Jan. 2007 - Nov. 2012United StatesX-Ray Scanner Apps Personnel Scanner Tech Stack: C++, C#, TCP/IP, WinForms - Motor Driver Interface: Designed, implemented and tested TCP IP interface to motor drivers sending simple text commands and profiles. One motor would spin a wheel on a horizontal axis, while another would move the spinning wheel up and down on the vertical axis. The api was first tested in a mock environment, adding to the existing C# Winforms app. The mock environment simulated rotational velocity and vertical speed and location. This work required coordination with mechanical and electrical engineers during system integration as the devices came on-line. Because of the mock test environment and successfully testing with the motors, we quickly determined that the scanner system had wiring problems. Baggage Scanner Tech stack desktop: C++, C#, MFC, .NET, XAML, GDI, Bitmap, WinForms, File IO, ISO Image, PrimoBurner SDK, SqlServer, TCP IP, Matlab, Threads, Mutex, Events - X-Ray Thumbnail Control: Fixed a C# thumbnail control that translated x-ray intensities into either colored images or greyscale images using lookup tables. It was painting really slowly until I figured out we needed to lock the bits in the bitmap before making changes to the array. - Archiving Utility: Designed and implemented a Winforms Archiving utility that wrote images to an ISO image and written to CD or DVD media. The utility let the user either archive all images within a date range or select specific ones. - Blend fictional threats into real time display: Implemented a C++ image filter that projected fictional threats seamlessly into real time baggage images. The filtering component was added into the image pipeline and monitored threat projection using a state machine. The outer state machine would track bags on the belt, the inner state would track where and if we were projecting fictional threats into the next bag. This filter worked with the bag masking, image stitching and virtual belt position components described below. - Bag Detection: Implemented and collaborated with the imaging department to develop an image masking algorithm. The imaging department developed the algorithms using Matlab and I translated them into C++ modules that were added into the image pipeline. Verified the implementation using a bit mask of 1 and 0 written to a file against the images. This verification helped us gauge our thresholds limits. - Image Stitching: Implemented and improved an image stitching component using C++. The component solved the problem of an operator stopping the belt, for any number of reasons, while we were acquiring bag image lines. After resuming the scan we needed to back up the belt and turn on the x-rays again in order to acquire lines that could be matched to previously acquired lines. The challenge of this problem was making sure we were getting a seamless match on the display, we needed to make sure the x-rays were at full power and the belt needed to back up enough so we could find a stitching point for the image. - Virtual Belt Tracking: Refactored and tested an existing virtual belt component to improve the accuracy of bag tracking. I added state transitions like {started, accelerating, forward, reverse, stopping, and stopped} to improve our implementation. This component posted messages to the stitching component to let it know when to start looking for a good stitching line. - Thread Wrapper Class: Refactored C++ thread creation, debugging and destruction policies. As our product lines grew we started witnessing startup and shutdown inconsistencies. I initiated and created a wrapper class to consolidate all the create, destroy and debugging code across our code base. The implementation named the threads so they would show up in the Visual Studio Threads view. We added an event to signal thread shutdown. This effort fulfilled the product requirement to shut off the x-rays within N-milliseconds when hitting the emergency off button. This improved the maintainability of the code base in over 300 dlls and improved the crash dump display as it showed the named threads during those debugging sessions. - SQL Upgrade Script: Maintained and added to the SqlServer upgrade script, adding columns to existing tables and migrating existing data into new tables when needed.
Senior Software Engineer
eMed Technologies (acquired by Merge Healthcare)Senior Software Engineer
Feb. 2005 - Dec. 2006United States, BurlingtonRadiologist App Tech stack: C#, C++, .NET, Winforms, System Tray, HttpRequest, MVC, Virtual List Control, CruiseControl.net - MVC Architecture: Implemented, tested and refactored a Client-Server based architecture into an MVC architecture implemented in C# .NET. The initial release of the application was riddled with various unreproducible bugs due to multiple windows in charge of getting their own data. I refactored several patient study implementations into one, using refactoring techniques by Martin Fowler, and verified fixes using unit testing. The refactoring effort improved the quality of the user experience with its responsiveness and also improved maintainability of the app.. - Upgrade Utility: Fixed an upgrade utility that downloaded application binaries by adding an application manifest. So we could determine if the binaries were downloaded correctly. Once confirmed we would continue with the update process otherwise we would abort and ask to upgrade again or at a later time. - Virtual List Control: Fixed a custom Virtual List Control so Radiologists could choose the Studies they needed to review. Worked with the engineering lead to refactor our custom list control into a virtual list control that only painted and processed studies that fit onto the displayable area. The problem was sometimes the radiologists might have hundreds of studies to review and it would cause performance issues with the list control. Making it virtual meant that we still got all the studies but only added the ones that were in the displayed area, improving its responsiveness. - Controller Http Requests: Refactored all Http Requests to the controller to support the MVC refactoring. - Continuous Integration: Added CI testing using CruiseControl.net which was configured to run nightly and about 5 minutes after the last commit.
Intch is a Professional Networking App for the Future of Work
300k+ people
130+ countries
AI matching
See more people like Arthur on Intch
IT
245188 people
24
Data Scientist Intern @ Newell Brands
16
Program Manager @ DISH Network
24
CEO & Co-Founder @ Daniel Consulting, Marketing, & Print LLC
ITBackend Developer
53227 people
15
Owner and General Manager @ OLD SKULL LLC
16
Cybersecurity Director
17
Software Architect @ IntelyCare