Chris Kottaridis, Developer in Roanoke, TX, United States
Chris is available for hire
Hire Chris

Chris Kottaridis

Verified Expert  in Engineering

Software Developer

Roanoke, TX, United States

Toptal member since April 12, 2022

Bio

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

Toyota Material Handling, Inc - Main
Embedded C++, C++, Embedded Systems, Embedded Hardware, Embedded C...
Freelance Client
C++, FreeRTOS, Analog-to-digital Converters (ADC), EEPROM, GitLab, ARM Embedded...
IBM
PHP, Linux, Eclipse, MySQL, JavaScript, CSS, HTML, LAMP, Apache, Java, APIs...

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

Full-time

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

2023 - 2023
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.
Technologies: Embedded C++, C++, Embedded Systems, Embedded Hardware, Embedded C, Embedded Software, Firmware, Back-end, APIs

C++ Back-end Developer for Robotics Control Application

2022 - 2023
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.
Technologies: C++, FreeRTOS, Analog-to-digital Converters (ADC), EEPROM, GitLab, ARM Embedded, I2C, Firmware, Back-end, APIs, Kernel

Software Developer

2016 - 2021
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.
Technologies: PHP, Linux, Eclipse, MySQL, JavaScript, CSS, HTML, LAMP, Apache, Java, APIs, Web Applications

Member of Technical Staff

2001 - 2015
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.
Technologies: C, Linux, Git, Bash, Python, Perl, Yocto, Embedded Linux, Linux Kernel Programming, Linux Kernel Modules, Linux Kernel, Device Drivers, Linux Device Driver, Back-end, APIs, Kernel, Networking

Software Development Engineer

1994 - 2001
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.
Technologies: C, Linux, Perl, Embedded Linux, Apache, Linux Kernel Programming, Linux Kernel Drivers, Linux Kernel Modules, Linux Kernel, Device Drivers, Kernel, Networking

Software Developer

1991 - 1994
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.
Technologies: C

Temperature Monitor

This project aimed to gather data from an array of sensors and transmit this information to a centralized cloud database. By having the data centralized, each forklift could be monitored in real time, allowing for early detection of issues and scheduling routine maintenance.

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

Developed a sophisticated controller interface for drones as a software developer. My primary role entailed writing and implementing code that enabled the persistent storage of variables within the flash memory of an ARM-based microcontroller. The functionality I created allowed variables to be retrieved by their names and necessitated the integration of STM32 sample code into the client's specialized build environment. This enhancement allowed end users to establish and retrieve custom configurations for their drones swiftly and efficiently.

Scheduling Tool

Worked on the managed hosting team for a cloud computing project and ensured that we delivered consistent routine maintenance for our clients, which included managing backups, performing upgrades, and other scheduled tasks, all in alignment with timings set with our customers.

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.

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

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring