Wiki
A curated collection of articles covering C++, audio programming, software engineering practices, development tools, and programming philosophy.
No articles found matching your search.
C++ Programming
Explores std::initializer_list in C++, explaining its internal mechanics and demonstrating use cases such as container initialization, creating custom container-like objects, and flexible function parameter handling.
Covers useful string processing operations in C++, providing practical examples for common text manipulation tasks and demonstrating efficient approaches to string handling.
Discusses the from_chars function in C++17 for efficient string-to-number conversion, comparing performance with traditional parsing methods and showing practical usage examples.
Explores compile-time number parsing capabilities in C++23, demonstrating how constexpr functions can be used for parsing numbers at compile time for improved performance.
Introduces std::expected in C++23, a type that represents either a value or an error, providing a safer alternative to exceptions for error handling in C++.
Covers the new monadic operations for std::optional in C++23, including and_then, or_else, and transform, enabling more functional programming patterns in C++.
Explores the proposed pipe operator for C++, demonstrating how it can improve code readability and enable more functional programming patterns in C++.
Demonstrates how to leverage multiple C++ features in just a few lines of code, focusing on function overloading and template techniques for clean, efficient code.
Covers the evolution of enums in modern C++, including scoped enums, underlying types, and best practices for type-safe enumeration usage.
Shows how to create type-safe bitmasks using enum classes in C++, providing a modern approach to flag handling with enhanced type safety and readability.
Deep dive into C++ arithmetic types, covering integer and floating-point types, their sizes, precision, and best practices for numeric computations.
Memory & Performance
Explains that std::move() is not inherently free, as its efficiency depends on the object type. Shows how moves can be efficient for dynamic resources but equivalent to copies for simple types.
Explains struct packing in C/C++, demonstrating how to optimize memory usage by ordering struct members strategically and understanding compiler padding behavior.
Practical tips for optimizing C++ code, covering compiler optimizations, algorithmic improvements, and performance measurement techniques for better program efficiency.
Analyzes how class and struct layout affects software performance in C++, discussing memory alignment, cache efficiency, and data structure design for optimal performance.
Critical analysis of std::shared_ptr usage in C++, discussing performance implications, ownership semantics, and when to avoid shared ownership patterns.
Explores efficient allocation strategies for std::shared_ptr in C++, including make_shared usage, memory layout considerations, and performance optimization techniques.
Covers the most important time and space complexities in algorithm analysis, providing practical examples and guidance for performance-conscious programming.
Comprehensive guide to Resource Acquisition Is Initialization (RAII) in C++, demonstrating how to use RAII for automatic resource management and memory safety.
Build Systems & Compilation
Explains how to dynamically load libraries at runtime on macOS, covering dlopen, dlsym, and the intricacies of shared library loading in C++ applications.
Detailed walkthrough of the C compilation process, from preprocessing to linking, explaining each stage and how source code transforms into executable programs.
Guide to managing header include directories in CMake, covering target_include_directories, PUBLIC/PRIVATE/INTERFACE keywords, and best practices for C++ projects.
Comprehensive tutorial for beginners to learn CMake from scratch, covering project setup, dependencies, and modern CMake best practices for C++ development.
Advanced C++ Concepts
Deep dive into advanced C++ template metaprogramming, exploring the intricate relationships between if constexpr, requires clauses, and concept definitions.
Comprehensive guide to C++ template best practices, covering design patterns, error handling, and techniques for writing maintainable template code.
Comparison between C++20 concepts and traditional type traits, discussing when to use each approach and their respective advantages in template programming.
Explains the opaque pointer (PIMPL) pattern in C++, demonstrating how to achieve better encapsulation and reduce compilation dependencies in large codebases.
Implementation of the observable property pattern in C++, enabling reactive programming paradigms with automatic notification of property changes.
Explores component-based programming in C++, discussing how to design efficient, modular systems using component architecture patterns for better performance and maintainability.
Introduction to tetrads as a data structure concept in C++, exploring their applications in efficient algorithm design and memory-conscious programming.
Explores the upcoming reflection features in C++26, demonstrating how compile-time introspection can be used to generate UML diagrams and enhance metaprogramming capabilities.
Concurrency & Threading
Personal journey into understanding C++ atomic operations, covering memory ordering, synchronization primitives, and practical approaches to concurrent programming.
Deep dive into atomic operations and concurrency in systems programming, explaining memory models, race conditions, and synchronization techniques for parallel programming.
Microsoft's insights into Windows threading and synchronization primitives, covering mutexes, critical sections, and platform-specific concurrency considerations.
Security & Safety
Comprehensive analysis of safety and security concepts in programming languages, covering memory safety, type safety, thread safety, and their impact on software security.
Comprehensive exploration of error handling strategies in programming languages, comparing exceptions, return codes, and other approaches for building resilient software systems.
The author argues that C++ exceptions were crucial in developing a complex UML Editor, enabling sophisticated error handling and transaction management. Exceptions allowed the team to manage intricate scenarios like nested object interactions and XML parsing, providing a more elegant solution than traditional error return values.
Testing & Quality Assurance
Complete guide to data flow testing methodology, covering test case design, data dependency analysis, and systematic approaches to testing data transformations in software.
Innovative software testing approach that evaluates systems by applying transformations to inputs and checking for consistent outputs, particularly useful for complex systems like ML models.
Detailed methodology for implementing metamorphic testing in software projects, with practical examples and guidelines for creating effective metamorphic test cases.
Guide to using metrics effectively in QA teams, covering key performance indicators, measurement strategies, and how to drive quality improvements through data-driven approaches.
Discusses challenges with mocking final classes in C++ unit testing, exploring alternative testing strategies and design patterns for testable code architecture.
Comprehensive guide to testing microservices architectures, covering unit testing, integration testing, contract testing, and end-to-end testing strategies for distributed systems.
Audio Programming & DSP
Quick tutorial on using Undertone 2 audio plugin for dialogue ambience replacement in post-production. Shows how to isolate background noise from recordings and create consistent sound beds for dialogue editing workflows.
Step-by-step tutorial for manually replacing footstep sounds in Pro Tools using clip replacement techniques. Covers chopping audio tracks, using "tab to transient" for precise cuts, and replacing clips while maintaining original timing for professional sound design workflows.
Comprehensive guide to exporting surround sound audio from Pro Tools, covering Dolby Atmos bouncing, stem workflows, and the Dragout 2 plugin for multiple output formats. Explains the difference between mono summed and interleaved export methods and Pro Tools' traditional studio routing approach.
Machine learning algorithm that synthesizes raw audio waveforms using generative adversarial networks, capable of generating up to 4-second audio clips across multiple domains including speech, music, and sound effects. Based on DCGAN architecture adapted for audio generation with novel phase shuffling techniques.
Comprehensive guide to handling mouse and keyboard events in JUCE Components, covering event propagation, focus management, and creating responsive audio software interfaces.
Deep dive into the JUCE component system architecture, explaining the rendering pipeline, component hierarchy, and best practices for building efficient audio applications.
Technical blog covering reverb algorithms, DSP techniques, and audio effect implementation, with practical insights for audio software developers.
Comprehensive collection of DSP algorithms, filters, and audio processing techniques with source code examples for music and audio applications.
Open-source framework for developing audio plugins and digital audio workstation software, providing tools and abstractions for professional audio development.
JavaScript library for audio wave processing and manipulation, providing tools for web-based audio applications and sound analysis.
Technical discussion about implementing OpenAI's Whisper speech recognition model in C++, covering performance optimizations and practical deployment considerations.
Comprehensive guide to Audio Definition Model (ADM), a standardized metadata model for describing technical properties of audio content, covering rendering processes, structural components, and practical use cases.
Development Tools & Practices
Critique of current C++ debugging tools and their user interfaces, discussing the challenges developers face and proposing improvements for debugging experiences.
Guide to using Google Benchmark library for C++ performance measurement, covering microbenchmarking techniques, statistical analysis, and performance optimization workflows.
Analysis of code duplication in software projects, discussing when duplication is acceptable, refactoring strategies, and maintaining clean, maintainable codebases.
Insights from Salvatore Sanfilippo (antirez) on programming philosophy, software design principles, and approaches to building reliable, maintainable systems.
Comprehensive guide to logging best practices in software development, covering log levels, structured logging, performance considerations, and debugging strategies.
Guide to implementing effective log management systems, covering log aggregation, analysis, retention policies, and monitoring strategies for production applications.
Critiques the "vibe coding" approach that relies heavily on AI tools, arguing that traditional programming is a creative, meditative process that involves deep problem-solving and modeling the world. Explores the philosophical differences between AI-generated code and genuine programming craftsmanship.
Machine Learning & AI
Guide to encrypting and decrypting TensorFlow pretrained models in mobile applications, covering security considerations and implementation strategies for protected AI deployment.
Discussion on loading PyTorch models using C++ istream, addressing integration challenges between PyTorch and C++ applications for model deployment.
Guide to using Data Version Control (DVC) for model registry and versioning, covering MLOps workflows, model management, and deployment strategies for machine learning projects.
UI/UX & Design
Collection of user experience research articles from industry leaders, covering usability principles, design patterns, and evidence-based UX practices for software interfaces.
Jakob Nielsen's famous ten usability heuristics for user interface design, providing fundamental principles for creating intuitive and user-friendly software interfaces.
Education & Technology
Opinion piece examining the implementation of smartphone bans in schools and their impact on students. Explores the debate around distraction-free learning environments, emergency communication concerns, and the balance between educational focus and modern technology integration.
Learning Resources & References
Curated collection of programming and computer science learning resources, including books, courses, tutorials, and practice materials for software developers.
Open-source book covering algorithms and data structures in C++, providing practical examples and explanations for computer science fundamentals in modern C++.
Comprehensive video tutorial covering programming fundamentals and software development concepts, suitable for developers looking to strengthen their foundation skills.