Tim Dieckman
Software developer · User interface and application architecture
Since starting my career as a software engineer, I've designed and implemented many internal and commercial software applications. My focus is user interface design and application architecture, and I aim for designs that are easy to use and that accommodate future improvements. I'm available for short and long term contracts as well as permanent positions.
Experience
-
JoeProgrammer, Inc. — Owner, consulting software developer
7/2006 – presentMy consulting company. Since 2006 my contract work has been through JoeProgrammer: for Sylux and Compal USA, for the Autoliv, Veoneer, and Magna thermal camera division, and for Logitech after leaving my permanent position there, as described below. JoeProgrammer also makes the Blik Calendar Widget for Android.
-
Sylux, a division of Compal USA — Contract software developer (founding team)
4/2025 – presentModern C++, wxWidgets, TCP/UDP sockets, Raspberry Pi 5, CMake, git, PowerShell, Windows
Recruited by former Veoneer and Magna leadership, along with much of the thermal camera team, to help establish a new thermal camera division at Compal USA, which became Sylux in 8/2026. The team's tools are built from scratch in modern C++: FirLab, a Windows application for working with thermal cameras through a Raspberry Pi 5 controller (the "MECO") running our own C++ server.
- FirViewer prototype. Built the first working prototype with the company's existing thermal camera, the starting point for the new tools and the move from MFC to wxWidgets.
- UI design and implementation. Lead UI designer and developer for FirViewer and FirLab, working with the dev lead: a main window with a tree of the network interfaces, MECO controllers, cameras, and open files, from which live video and other views open in their own windows.
- TCP communication. Proved that the cameras could communicate over TCP, replacing the previous platform's UDP broadcast and its complex client-side packet reassembly and retransmission, a major simplification.
- Networking. Helped build the initial socket layer, and now refactoring it to handle disconnects and a full set of connection states.
- meco-discovery. Created the discovery service that answers network requests with each controller's address and connection details, so FirLab finds MECO controllers automatically.
- Deployment. Built FirLab's deployment logic: it reads the version of the server running on each controller, tells the user when it's out of date, and deploys the newer version.
- Build and packaging. Designed how third-party libraries are packaged in Gitea Packages: versioned package folders so multiple versions can coexist and any project can reference the one it needs, published with PowerShell scripts. Projects include a single props file for all include and link settings, instead of editing each project's and solution's settings by hand.
- Continuous integration. Wrote the CI build instructions and am guiding the intern who is implementing the Jenkins build.
-
Autoliv → Veoneer → Magna — Contract software developer, thermal camera division
1/2012 – 12/2012 · 6/2013 – 3/2025C++, MFC, GDI/GDI+, Windows
One team and one product line through three company names: Autoliv; Veoneer, spun off from Autoliv in 5/2018; and Magna, which acquired the business in 5/2024. The division designs and manufactures an infrared (thermal) camera pedestrian-detection safety system for cars.
- Production stations. Building the cameras takes several production floor stations, many of which test the cameras with custom software. Created new station software (Run-In, GainCal, Camera Studio, Label Printer, SW Download) and enhanced existing stations, covering architecture, user interface design, and communication with test equipment and cameras.
- Engineering tools. Added features to the developer application hardware and firmware engineers use to analyze and test cameras, and greatly improved its look and feel.
- Build server. Solely responsible for setting up and maintaining the server builds in Visual Studio Team Services (VSTS).
-
Logitech — Tech lead (employee, then contract)
9/1998 – 11/2005 · 7/2006 – 10/2007C++, MFC, COM, GDI/GDI+, Windows
Logitech is the leading maker of personal webcams, which ship with a suite of software applications. I was responsible for application architecture and UI/UX, and as tech lead on many projects I worked with program management, marketing, and sales.
- QuickCam application suite. The main webcam app: recording video, taking pictures, time-lapse and
stop-motion video, motion detection, and viewing recorded media.
- Version 5: a new activity-based application. As dev lead I designed the UI/UX and the COM plug-in architecture, and built the Capture and Gallery plug-ins.
- Version 6: support for detachable webcams that work like point-and-shoot cameras. I designed the media sync UI/UX and its integration into the existing architecture.
- Version 7: the application was split up and redesigned to use more of Windows' built-in programs.
- Version 8: Video Effects, which change the live video in any Windows app using a Logitech webcam. I designed the UI/UX and the video effects architecture.
- Model Packaging Tool. An internal tool marketing, content management, QA, engineering, and the build team used to manage and build Video Effects packages. I designed the UI and workflow states, evolved it with its users as new effect types were added, and worked on the encryption that protects model assets.
- Video Masks. Extracts the user's eyes and mouth from live video and projects them onto a model with a static background. I proposed the isometric projection approach and implemented the extraction and compositing, optimized for high frame rates.
- Video Mask creation tool. Lets users create their own Video Masks. I worked with marketing on an easy-to-use interface and implemented the application.
- QuickCam application suite. The main webcam app: recording video, taking pictures, time-lapse and
stop-motion video, motion detection, and viewing recorded media.
-
Connectix Corporation — Software engineer
7/1997 – 9/1998C++, MFC, Windows
Webcam applications and Desktop Designer, a Windows 95 app for creating and managing desktop themes (backgrounds, sounds, cursors, and colors). Major contributions to its UI design, implementation, and testing.
-
McAfee Associates — Software engineer
3/1996 – 6/1997C++, MFC, COM shell extensions, Windows
VirusScan e-commerce: online purchase of VirusScan95 and virus definition upgrades, including enforcing subscription policy. QuickBackup: scheduled and manual backup and restore. Redesigned the UI, built a Windows virtual folder shell extension, and integrated the tape drive UI into the Windows Device Manager.
-
Micrografx, Inc. — Software engineer
8/1994 – 3/1996C++, MFC, Windows
Windows Draw, a vector drawing application. Contributed to the UI design, extended the MFC toolbar classes with pop-out/tear-off toolbars, and implemented OLE container, server, clipboard, and drag and drop support.
Selected project: Blik Calendar Widget
An Android app I conceived, designed, built, and support. Blik reads the text of calendar events and shows each one as a picture with just the words that matter. For example, "Birthday party for Joe" becomes a birthday cake labeled "Joe" with the start time. Its main interface is a home screen widget that's always visible, with screens for event details and customization. Free with an optional Pro upgrade, and distributed by Sprint for several years. More about Blik
Skills
Languages and libraries
- Modern C++
- wxWidgets
- MFC
- COM
- GDI/GDI+
- Java
- XML
Platforms
- Microsoft Windows
- Linux (remote build and debug from Visual Studio)
- Raspberry Pi
- Android
Networking
- TCP/IP and UDP sockets
- Device discovery
Build and tools
- Microsoft Visual Studio
- MSBuild
- PowerShell
- SSH
- git
- CMake
- WiX
- VSTS / Azure DevOps
- Android Studio
Strengths
- Commercial software development. Part of the release of many commercial applications and their successive versions.
- User interface design (UI/UX). Working alone and in groups to produce easy-to-use interfaces.
- Engineering methodology. Software that meets its requirements, is well documented, and is easy to test and maintain.
- Problem solving. Object-oriented, expandable architectures that shorten later releases and simplify maintenance.
- Technical leadership. Developer lead on numerous projects.
- Large projects. Coordinating across engineering, marketing, project management, testing, and end users.
- Teamwork. A productive team member who values cohesion and communication.
Education
Milwaukee School of Engineering — Bachelor of Science in Computer Science & Engineering