Hi, I'm Chris!
I have 20+ years' experience developing software applications including 9 years at Chase Paymentech (Now Chase Merchant Services), 4 years on the Point of Sale team at Publix supermarkets and 3 years in the industrial automation industry.
My primary tech stack is currently C# and SQL, but the nature of software development is such that through the years I have worked with a variety of languages, libraries and technologies including containerization with Docker, YAML and Azure deployment, Git, C++, SPLUNK, Angular JS and JavaScript.
To the left is a screen shot of a prototype Gate Access control application I developed for a client that runs on Raspberry Pi computers and interfaces to TWIC biometric card readers and a facial recognition API.
I have a passion for classical Traditional Logic and the natural law idea of an abstraction.
The relationship between abstractions in the traditional logic natural law tradition and software design and development is deep. You could spend a lifetime devoted to the study of it and not exhaust everything there is to know.
Below is a summary of my work experience. I hope to meet with you to discuss how I can be of service making your project or idea a reality!
Reach me at chris at christopherlind dot com
Computrol - Oct 2023 to Current
- Responsible for the design and development of an alarm monitoring system that could be installed at client factories to alert workers of problems on the factory floor.
- Met with the owner to gather project requirements, which included the creation of a front end for users to specify alarm monitoring points on Programmable Logic Controllers (PLCs) out on the factory floor, along with a way for users to associate alarms with email recipients.
- I'm a big believer in taking some time to plan out and do initial block level design of an application…taking the time to think through what the major abstractions will be, and laying it all out in pen and paper in wiring diagrams and perhaps some sequence charts. These sorts of diagrams map easily to C# classes and functions and SQL database tables, creating a nice skeleton or framework to build your application around when it is time to actually start coding. I did so with this project.
- A big hurdle when communicating with PLCs is that they require polling for constant monitoring. This influenced my design decision to go with a C# worker service that could run on the background and continuously poll the PLCs. Another hurdle was selecting a library to actually communicate with the PLCs. Many PLCs have a proprietary communication protocol. Research had to be done to find a suitable communication library and vet it out to make sure it was usable for the project.
- Another project I worked on was an application that could poll potentially hundreds of PLC tags (essentially memory addresses on the PLC) across multiple PLCs and update a display in real time as the values of these tags changed. This app was to be used by Computrol employees as a trouble shooting tool out on the factory floor. In this project, just a single GUI application was written in C# using the Avalonia library so that the app could be loaded on a small Raspberry Pi device and taken around the factory if desired. Continuous polling was locking up the GUI. To overcome this, the polling was offloaded into an asynchronous task. The GUI could then subscribe to receive notifications whenever changes to a tag were detected by the task.
- Tech Stack: C#, LibPLCTag, Avalonia, SQL
idSoftware - Mar 2023 to Oct 2023
- Responsible for the complete design and development of a gate access controller application.
- I was the lone developer on this project. The goal was to replace an existing software and hardware solution in Production with a version that offered visual feedback to drivers as they interacted with a facial recognition system with the hope of reducing driver time at the gate. The existing solution offered no visual feedback. Project requirements included that the new solution run on commodity raspberry pi computers at the point of entry, that the application interact with a brand new TWIC card reader and fingerprint scanner which the company had never used before, and that each Raspberry Pi interface to an existing centralized web api for the data repository and facial recognition.
- Since this was a C# shop, I opted to go with a C# solution, dividing the work between a C# worker service to handle business logic at the gate and a front end GUI written in C# and the Avalonia library for visual display, all running on a raspberry pi.
- Biometric card readers and cameras were shipped to my home, and my job was to figure out how to make it all work and integrate with the new C# application.
- The project came with a unique twist…the new TWIC card readers selected by the business did not perform as expected! I was able to prove this to the business through the use of C# software interfaces that allowed the system to work with either the new card reader or the older ones used in production. The QA lead on this project and I collected statistics to show that the older card readers were consistently faster.
- Tech Stack: C#, Raspberry Pi, OSDP.Net, Avalonia
Global Emergency Response - Nov 2021 to Feb 2023
- Part of a team maintaining an Angular JS front end, C# web api backend, and SQL codebase for a company that creates software for first responders.
- In 20 years of programming, these were some of the most complicated code bases I had ever seen in my life. Many of the database tables, along with associated stored procedures and views, were literally created on the fly by the GUI application. A lot of time was initially spent understanding the code and then DOCUMENTING what I learned. The documentation really payed off, especially later when other developers were hired on the team. I was able to use the documentation to help them get up to speed!
- Another interesting challenge was trouble shooting and maintaining their back end web api (C#), which included a proprietary Object Relation Mapper that had been written in-house.
- The team was just starting to branch into DevOps. This gave me the opportunity to assist in the creation of their YAML integration and deployment pipeline scripts in Azure.
- The team was exploring containerizing their applications in Docker. I had the opportunity to wrap my mind around Docker and help to containerize their applications.
- Tech Stack: C#, Angular JS, Docker, JavaScript, SQL
Classical Computer - Jul 2021 to Nov 2021
- Pursued a dream to create an educational company, www.classical-computer.com, which teaches the relationship between traditional logic, computer programming and STEM.
- My immediate, short term goal was to, within 6 months’ time, create a textbook that can be used independently by students to learn the basics of computer programming and traditional logic, and come away with an understanding that the two are fundamentally the same.
- The first version of this book taught students the basics of C#. Later, after my involvement with JavaScript and Angular JS at Global Emergency Response, I realized that JavaScript would be a much better choice of a language for beginners first learning to program, and rewrote the book to introduce JavaScript.
- The long term goal of the book was (and still is), to reach the homeschool community at local conventions and to begin holding an annual programming and traditional logic “STEM” camp to introduce students to these ideas.
- Tech Stack: C#, JavaScript, electronic circuit prototyping
Publix Supermarkets - Mar 2017 to Jul 2021
- Part of the Point of Sale software development team for Publix Supermarkets maintaining their C++ and C# codebases for the POS cash registers at their 1,000+ stores.
- I was involved in all phases of the software development lifecycle, initial meetings with the business to understand business requirements and create software designs, development, integration testing, meeting with QA to help them understand testing requirements, and production rollout to all 1,000+ stores.
- Assisted in the design and development of their Digital Receipt and Mobile Pay initiatives.
- A big highlight for me was thinking through a natural key that could be used to identify any transaction from any POS machine across any store. I had been reading a paper on digital currencies by mathematician Bill Dembski that introduced me to the idea of cryptographic hashing, and I realized that the natural key could be used in conjunction with a hashing algorithm to create a key that could not be traced back to the originating store and POS machine. Although I was not the one who ultimately coded the algorithm (that honor went to another very talented C++ programmer on the team), the idea was adopted and used in the codebase. I was really excited over this. To my knowledge this key generating algorithm is still in place and has never resulted in a collision…the creation of duplicate keys.
- Publix is where I first introduced to the idea of abstractions…what they are and how to organize your thinking and your code in terms of them. I owe this to my collaboration with another developer on the POS team and am really grateful for the interaction.
- Tech Stack: C#, C++, ASP.NET, SQL, SPLUNK, Postman
Computrol - Apr 2016 to Mar 2017
- Was the C#, VB.Net and Database guy for a 3 person team that designs and develops industrial automation solutions. (I was the 3rd guy)
- Worked on the design and development of a batch processing system that communicates with PLC’s out on the factory floor.
- Had a LOT of fun wearing a hard hat and climbing around through factory floors that resemble the Star Wars death star with their never ending web of conduit and piping leading into PLC’s, Hoppers, Mixers, etc.
- Tech Stack: C#, VB.NET, SQL
TrueSearch - Sep 2015 to Apr 2016
- Had a go at trying to launch my very own search engine company.
- Designed and developed website crawling and page parsing algorithms in C# from scratch.
Tech stack: C#, ASP.NET, SQL
Chase Paymentech - Sep 2006 to Sep 2015
- Part of software development team for a Payment Processing company partly owned by JPMC. We designed, developed, and maintained the software used to board merchants onto their payment processing system.
- Tech Stack: VB.Net, ASP.NET, SQL (PL/SQL), Oracle, TOAD, Unix, Kornshell
Computrol - Nov 2005 to Sep 2006
- Created a working prototype of an embedded application that allowed a user to remotely open and close a gate via a web page.
- Software design and development for a factory floor batch processing application.
- Tech Stack: VB.NET, ASP.NET, WinForms, BASIC STAMP, SQL, Parijat PLC API
F1 Technology - Apr 2005 to Oct 2005
- Design and prototype of an online sales and inventory management software application for client Smith and Associates.
- Tech Stack: VB.NET, ASP.NET, SQL.
Lind Software - Jan 2004 to Mar 2005
- Provided software design and development services for small businesses.
- Software design and development of a Human Machine Interface (HMI) for a thin film deposition chamber (VB6 with MS Access as a database).
- Tech Stack: VB6
Global Software Corporation - Apr 2000 to Jan 2004
- Design and development of a B2B application that integrated seamlessly with the Macola accounting software system.
- Tech Stack: VB6, ASP, HTML, XML, JavaScript, WML, BTRIEVE database, Native BTRIEVE API