Skip to content

Software Design

Linux

Linux Kernel Organization (US non-profit)

Free TLS Certificates

Let's Encrypt (US non-profit)

Domain Name Registrar

Namecheap

Resources

General

Description Link
The Art of Unix Programming (Raymond) WEB ARCHIVE
Operating Systems: Three Easy Pieces (Remzi, Andrea) WEB
Network Programming Guide (beej) WEB
Site Reliability Guides (Google) WEB
Advanced Software Design Articles (Mirdin) WEB

C++

Literature:

Description Link
Technical Report on C++ Performance (ISO, 2006) PDF
Thriving in a Crowded and Changing World: C++ 2006–2020 (Stroustrup) PDF
Joint Strike Fighter AV C++ Coding Standards (2005, Lockheed Martin) PDF
C++ Style Guide (Google) WEB

Libraries:

Description Link
Boost: free peer-reviewed portable C++ source libraries (STRONG RCMD) WEBSITE

Python

Description Link
Python3 Virtual Environments WEB

C

Description Link
JPL Institutional Coding Standard for the C Programming Language (2009, NASA) PDF
The Power of Ten - Rules for Developing Safety Critical Code (2006, NASA) PDF
C Coding Guidelines for Critical Systems (2004, MISRA) PDF

Assorted

Description Link
Process vs Thread Based PostgreSQL HackerNews
ROS2 Real-Time Design WEB
Build System: Future Plans for Autotools HackerNews

Key Knowledge

Data (its physical storage, idea representation, input/output transformation) is the foundation of all software design.

Function Item
Main Languages Python (fast abstract), C++ (high-performance complex), C (high-performance), Rust (high-performance reliable-dev), PHP (fast web)
Programming Paradigms Procedural, Functional, Object-Oriented
Code Source Code, Assembly Code, Object Code, Byte Code, Machine Code, Executable File, Library File
Runtime Compiled vs Interpreted, Process and Thread,
Data Landscape Kernel Data in RAM, Files and Folders in DISK (filesystem), Program in RAM, Program Data in RAM

Tools

Main IDE

(integrated development environment)

Visual Studio (RECOMMENDED)

Free IDE from Microsoft with versatile plugins and collaborative editing.

Workflow:

  1. Create project folder with version control and build system
git init newproject 
  1. Prepare the internal file/folder structure

Compiler

GCC (GNU C compiler) (C/C++/Objective-C/Fortran/Ada/Go/D) --- GCC Website

Clang/LLVM --- Clang/LLVM Website

CLI Text Search | Silver Searcher, Silver Searcher on Github

# AG Search
ag target-phrase ~/target-folder/

Design Targets

Operating System

Our preferred kernel is Linux and our preferred operating system is Debian. We're fully committed to this open-source kernel+OS ecosystem for all of our CPU/MPU modules. We use real-time Linux for time-sensitive applications.

We use embedded RTOS (ex. FreeRTOS) for our MCU modules.

Linux

Description Link
Linux Kernel Website WEB
Real Time Linux, Main Website WEB

Debian

Description Link
Debian Main Website WEB
Debian Packages WEB
Debian Bookworm Release (2023-06-10) WEB
Antivirus Debian Manual

FreeRTOS

FreeRTOS, Main Website

Codebase

Version Control

Git (STRONG RCMD)

Canonical Project Structure (Code Synthesis)

Github (RCMD)

Build System

Options: make, cmake, meson/ninja

Description Link
Meson WEBSITE / GITHUB
Ninja WEBSITE / GITHUB

Logging

Boost.Log

Error Handling

(monitoring/detection and repair/recovery)

C++ exceptions (pros/cons) traditionally avoided in real-time/critical applications because of insufficient tooling support (ex. Lockheed JSF-CPP Standard) and legacy code non-tolerance (ex. Google CPP Standard).

Boost CPP Outcomes, History, ABI Stability Guarantee

Native CPP Expected

Distribution

  • Source Code
  • AppImage

For our open source projects, we strive to provide an easy process to compile/install/uninstall the code.

For all our software distribution, we strive to provide data-integrity and data-authenticity verification.

Graphics

LearnOpenGL

VulkanTutorial

VR/AR:

OpenXR Spec (Khronos Group)

Machine Vision:

OpenCV

DepthAI (Luxonis)

Audio

Pipewire

Alsa

Automated Speech Recognition (ASR):

CAN

https://github.com/linux-can/can-utils

https://www.kernel.org/doc/html/latest/networking/can.html

Wireless

https://wireless.wiki.kernel.org/en/users/documentation/iw

IT Automation

Ansible, Ansible Docs,

Ansible Best Practices, Ansible Sample Setup

Note: Ansible 7.3 is available as a Debian-Package (bookworm) for easy install with apt

Playbook Design: idempotency

Website

Web Traffic Analytics

HTMX

Notes

All comments shall use inline comment syntax (ex. //).