Useful Software References
Blogs, News, and Periodicals
Here are some blogs and news sites that you can use to stay up to date on programming and embedded systems:
- Meeting C++ - A collection of C++ articles from around the web. Updated weekly.
- Meeting Embedded - A collection of embedded systems articles from around the web. Updated weekly.
- Embedded in Academia - John Regehr's Blog, a great resource on undefined behavior and compilers
- LLVM Project Blog
- Ganssle Group - Jack Ganssle's website. Jack has graced the world with his wisdom, and I highly recommend reading everything he has written. He also puts out the Embedded Muse newsletter (also highly recommended).
- Embedded Gurus - A collective blog run by a few embedded professionals. This blog was previously very active, but now is much quieter. However, it remains a useful reference and there are many great articles.
- Simplify C++ - Arne Mertz's C++ Blog
- foonathan::blog() - Jonathan Müller's C++ Blog
- Bartek's Coding Blog - Bartek's C++ Blog
- Fluent C++ - Jonathan Boccara's C++ Blog
- Sutter's Mill - Herb Sutter's C++ Blog
Embedded Systems Newsletters
- The Embedded Muse - Jack Ganssle's long-running firmware newsletter
- The Firmware Update - A newsletter run by the Barr Group
General Software Development
- A Successful
- Michael Barr](https://embeddedgurus.com/barr-code/) proposes dropping the term "bug" in "Is it a Bug or an Error?".
- Apple Open Source Software - Archive of Apple Open Source software
- Atoms of Confusion - an interesting study on programming concepts that confuse readers and how to make them less confusing
- Crontab Help - for figuring out what your crontab schedule lines should be
- Epoch Converter - I find myself referring to this site quite often during bringup and debugging
- IoT Security Maturity Model
- Data Oriented Design with Balázs Török - an excellent starting point for understanding data-oriented design
- Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP)
- Learn TLA - If you're working on an algorithm or want to improve your software architecture chops, check out TLA+, a model checking language.
- The Architecture of Open Source Applications
- ISO C++ Website
- ISO C++ Core Guidelines
- Awesome Modern C++ - Collection of awesome modern C++ educational resources. Check it out!
- Modern C++ Features Cheatsheet - A handy cheatsheet breaking down new features in C++11, C++14, and C++17
- C++ Best Practices - a "Collaborative Collection of C++ Best Practices". It's a highly valuable source for modern software development with C++ and general considerations of good C++ code. This general considerations include the safety, maintainability, portability, threadability, and performance of the code.
- C++11: A Visual Summary of Changes
- C++ Concurrency Cheatsheet
- C++ Regex Cheatsheet
- Modern C++ Features
- Learning C++ Best Practices (O'Riley Ebook)
- Introductory Modern C++ Course Notes (IFS) - Very helpful set of course notes introducing you to C++
- Advanced Modern C++ Course Notes (IFS) - Continuation from the introductory course
- C++ Guru of the Week Series - A series of C++ programming problems created by Herb Sutter
- Guidelines for Rvalue References in APIs - a must-read for advanced C++ developers and library authors
- Awesome Perf Cpp - A curated list of C/C++ performance resources: talks, articles, books, libraries, tools
OS & Embedded
- Bithacks - An excellent resource for bit manipulation routines. This code is in the public domain and is used in a variety of projects I've worked on.
- OS Development Wiki - wiki for diving into low-level operating-system concepts and OS design.
- Microcontroller Tips
- Beyond the RTOS: A Better Way to Design Real-Time Software
- Writing ARM Assembly
- Apple Concurrency Programming Guide - Introduces the concept of dispatch queues and provides advice for migrating away from threads.
- Clang C++ Status - Check in and see what new / experimental C++ features are currently supported by
clang. Also a great way to learn about new features that you may not be aware of yet.
- Fucking Clang Warnings - You may not always be sure what the warning name is for some of the stranger
clangwarnings. This guide will help you.
- Getting Started
- Using Jenkins
- Cloudbees Documentation - a useful resource to turn to when you have Jenkins problems