weiqiang.shan's blog
tagsabout

    2026

  • Python C Extensions: Part VI — ROS 2 Message Bindings - June 20, 2026
  • Python C Extensions: Part V — ctypes Handle Pool - June 20, 2026
  • Python C Extensions: Part IV — ctypes Structs and Handles - June 19, 2026
  • Python C Extensions: Part III — ctypes and CFFI - June 19, 2026
  • Python C Extensions: Part II — tp_call and PyCFunction - June 19, 2026
  • Python C Extensions: Part I — C API and PyTypeObject - June 19, 2026
  • Type Erasure: Part IV — ROS 2 Message Type System - June 13, 2026
  • Agents as Universal Interfaces - April 08, 2026
  • Protobuf vs JSON Compatibility - April 02, 2026
  • Linux Shared Libraries: SONAME and RPATH - April 02, 2026
  • Precision Time Protocol (PTP) - February 14, 2026
  • Static vs Dynamic Typing and Type Erasure - February 07, 2026
  • All-In-One Routers - January 24, 2026
  • The Selfish Gene: Keynotes - January 10, 2026
  • Computer Graphics Software Stack - January 02, 2026
  • 2025

  • Python Signal Handling - December 13, 2025
  • Floyd's Cycle Detection: Tortoise and Hare - August 17, 2025
  • Type Systems: Part IV — Python Runtime Types - August 10, 2025
  • Type Systems: Part III — JSON Types - August 10, 2025
  • Type Erasure: Part III — Downsides and Trade-offs - July 08, 2025
  • Type Erasure: Part II — How std::function Works - June 29, 2025
  • Type Systems: Part II — Protobuf Reflection - June 14, 2025
  • Compile Time vs Run Time - June 12, 2025
  • Static Storage and Nifty Counter - May 23, 2025
  • Type Erasure: Part I — Core Logic - April 20, 2025
  • Reactor and Proactor: Event-Driven I/O Patterns - March 29, 2025
  • C++ Expressions and Value Category - February 28, 2025
  • Variable-Length Shared-Memory Ring Buffer - January 12, 2025
  • 2024

  • C++ Symbols and the ODR - November 03, 2024
  • C++ Object Lifetime - October 26, 2024
  • CMake Best Practices - September 18, 2024
  • C++ Standard Library Containers: Cheat Sheet - August 31, 2024
  • Type Systems: Part I — Data and Type Format - July 14, 2024
  • Linux clone() System Call - June 30, 2024
  • Reference Counting in Systems - June 23, 2024
  • The Mapping Design Pattern - June 09, 2024
  • Linux futex - June 08, 2024
  • AUTOSAR Service Model: A Big Picture - June 08, 2024
  • ara::com API: Part III — Skeleton Class - June 01, 2024
  • pimpl vs Virtual Class - May 25, 2024
  • I/O Buffers: User vs Kernel - May 19, 2024
  • Life of a TCP Segment - May 19, 2024
  • ara::com API: Part II — Proxy and Events - May 12, 2024
  • ara::com API: Part I — Proxy/Skeleton Model - May 05, 2024
  • std::condition_variable Deep Dive - April 27, 2024
  • C++ Smart Pointers: Lifecycle - April 21, 2024
  • C++ Smart Pointer Memory Model - April 20, 2024
  • SOME/IP Protocol Overview - April 19, 2024
  • SOME/IP Service Discovery - April 08, 2024
  • C++ Parameter Binding - April 05, 2024
  • Docker CLI Architecture - March 20, 2024
  • C++ Callables and std::invoke - January 21, 2024
  • 2023

  • pimpl and unique_ptr Incomplete Type - December 24, 2023
  • C++ Member Function Overload Resolution - November 23, 2023
  • CRTP and Mixin Inheritance in C++ - October 13, 2023
  • A C++ Programmer's Guide to Rust - August 12, 2023
  • Python Metaclasses: Class Creation - June 24, 2023
  • Python Decorators - May 02, 2023
  • C++ Template Name Lookup - May 01, 2023
  • Python Descriptors: Descriptor Protocol - April 22, 2023

weiqiang.shan's blog

  • {"name"=>"weiqiang.shan", "email"=>"schmessi@163.com"}
  • schmessi@163.com
  • shan-weiqiang