Software Design
Linux
Linux Kernel Organization (US non-profit)
Free TLS Certificates
Let's Encrypt (US non-profit)
Domain Name Registrar
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) | |
Thriving in a Crowded and Changing World: C++ 2006–2020 (Stroustrup) | |
Joint Strike Fighter AV C++ Coding Standards (2005, Lockheed Martin) | |
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) | |
The Power of Ten - Rules for Developing Safety Critical Code (2006, NASA) | |
C Coding Guidelines for Critical Systems (2004, MISRA) |
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:
- Create project folder with version control and build system
git init newproject
- 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
Text Search
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
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
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
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
VR/AR:
Machine Vision:
Audio
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 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
Notes
All comments shall use inline comment syntax (ex. //).