Chris Kottaridis
Verified Expert in Engineering
Software Developer
Roanoke, TX, United States
Toptal member since April 12, 2022
Chris has 25 years of experience in Linux environments. Most of those years were spent in operating system development, such as writing device drivers and embedded Linux systems. His most recent tasks have been in the cloud computing world, where he was on IBM Cloud's core development team. He's currently interested in both Linux and FreeRTOS-based embedded systems.
Portfolio
Experience
- Unix - 20 years
- C - 20 years
- Linux - 20 years
- Embedded C - 15 years
- Git - 15 years
- C++ - 10 years
- Eclipse - 5 years
- PHP - 5 years
Availability
Preferred Environment
Linux, Unix, C, C++, Android Studio, Analog-to-digital Converters (ADC), I2C, FreeRTOS, Device Drivers, ARM Embedded
The most amazing...
...thing I've developed is a scheduling tool to allow customers to schedule various tasks to be performed by the employer's team.
Work Experience
Embedded Systems Developer
Toyota Material Handling, Inc - Main
- Developed an application that gathered messages from I/O processors and reported various messages to the Redis publisher-subscriber tool, which forwards them to a web-based database.
- Built a tool to gracefully shut down user space processes when the temperature crossed a specific threshold. When the temperature dropped below a point, it would reboot the system to start all the applications again.
- Re-factored code that monitored an impact sensor and reported warnings and errors to the Redis publisher-subscriber tool, which forwards them to a web-based database.
- Fixed various bugs in various applications using the Microsoft ADO bug tracking system.
C++ Back-end Developer for Robotics Control Application
Freelance Client
- Created a variable storage subsystem for the STM32L476 microcontroller's EEPROM. The task involved porting STM32 Cube code into the client's FreeRTOS environment. The work was done using C++ with Eclipse IDE.
- Created an Analog-to-Digital driver for STM32 STM32L476 micro-controller. This was a polling driver to replace the existing driver. The code was written from scratch for the client's FreeRTOS environment. The work was done using C++ with Eclipse IDE.
- Wrote an I2C driver for STM32L476 microcontroller. This was an interrupt-driven driver that could perform multiple transfers. The code was written in C++ for the client's FreeRTOS environment. The Eclipse IDE was used.
- Built physical units classes. Devices measure voltage in different units. Some in volts and some in milli-volts. This can result in conversions scattered all throughout the code. The voltage and amperage classes localize the conversions to one place.
- Recommended a protocol to exchange data between the firmware and the controlling device. It allowed for different types of data like JSON or XML. This recommendation was made as an alternative to the existing one being used that had some problems.
- Added code to define a test mode that can be used during development. This model created a FreeRTOS environment with a dedicated task to use during development to test new features as they are added.
Software Developer
IBM
- Developed a scheduling tool for the managed services team to schedule routine patching.
- Added a new feature to display data from the monitoring device.
- Performed code security analysis and fixed issues as needed.
- Created a tool to monitor incoming support requests for managed services and flag high-priority issues.
- Made a tool to monitor previously scheduled support requests.
Member of Technical Staff
Wind River Systems (Subsidiary of Intel Corporation)
- Acted as a member of the original team for the company's Linux embedded systems product.
- Ported Linux source RPM's into Wind River's build system. This involved creating RPM build and installation sections as well as making changes to the source code to compile and execute properly in the Wind River environment.
- Served as the tech lead and primary creator of the Linux sustaining engineering team. I was responsible for setting policies and procedures for the team.
- Approved escalations and all patch fixes for existing releases. Gave guidance on how to troubleshoot technical problems.
- Fixed the bugs in any language that might be in the application level or the kernel. This included C, C++, Python, Bash, and Perl.
Software Development Engineer
Berkeley Software Design
- Performed bug fixes primarily in the Unix kernel. I also had the responsibility of building and distributing patches to our customers.
- Created device drivers for the BSD Unix kernel. This included both ethernet drivers and RAID disk controllers.
- Hired as the initial employee to provide telephone support for the BSD Unix product. Defined the policies and procedures for the support team. Trained all incoming support team members.
Software Developer
Ceram Inc
- Created a software hard disk compression program for DOS computers. This involved implementing a proprietary software compression algorithm and a strategy to store the variable-sized compressed blocks on the fixed disk drive.
- Built an installation tool for the Sun Microsystem's TurboDisk product. I wrote the installation script that automatically installed the necessary device driver and rebuilt the UNIX kernel.
- Provided customer support for the TurboDisk product.
Experience
Temperature Monitor
As a software developer, I addressed a specific requirement to monitor operating temperature. I developed a process to gracefully halt all user space applications and place the kernel into sleep mode if temperatures breach a predefined threshold. The system was programmed to awaken the processor every minute to check if the temperature dropped to safe levels. The system would reboot if adequate cooling was achieved, restarting all user space applications. If not, it would resume sleep mode for another minute. This functionality was achieved by creating a systemd target and service, triggering a C program I created to continually monitor the temperature and command the system to either reboot or sleep accordingly.
The purpose of the monitoring system I engineered was to prevent potential damage that could arise from the system overheating, thus ensuring uninterrupted and safe forklift operations.
Drone Controller
Scheduling Tool
I developed a scheduling tool specifically designed to enhance the efficacy of our managed hosting team. This tool seamlessly integrated with our existing in-house ticketing system, and its primary function was to automate ticket creation for scheduled maintenance activities on customer servers. Its flexible design also allowed for its use in general scheduling tasks.
Before the implementation of my scheduling solution, many of the planned scheduling events were missed. However, the introduction of this tool marked a turning point—every scheduled maintenance task was carried out punctually, bolstering our service reliability and client satisfaction.
Skills
Libraries/APIs
Garmin API
Tools
Apache, Git, Android Studio, Gradle, GitLab, Systemd
Languages
PHP, C, C++, Embedded C, Bash, Perl, PHP 7, HTML, CSS, Embedded C++, Kotlin, Python, Java, JavaScript
Platforms
Linux, Unix, LAMP, Eclipse, Embedded Linux, Android, Kernel
Storage
MySQL
Other
IBM SoftLayer, Linux Kernel Programming, ASCII, UTF-8, Embedded Systems, Embedded Development, Firmware, Back-end, APIs, Yocto, Linux Device Driver, Device Drivers, Linux Kernel, Linux Kernel Modules, Linux Kernel Drivers, FreeRTOS, Analog-to-digital Converters (ADC), EEPROM, ARM Embedded, I2C, Real-time Operating System (RTOS), Web Applications, Networking, SOAP, Embedded Hardware, Embedded Software
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring