Welcome!
This is where I collect and publish online my personal notes.
Articles
List of articles:
- 2024-12-05 : Replace file in an android program
- 2024-12-01 : Configure Thunderbird
- 2024-11-04 : Fake time in Virtualbox
- 2024-10-27 : Fake network card on GNU/Linux systems
- 2024-10-18 : Register function at link time
- 2024-10-04 : Copy Android application folder with adb
- 2024-09-29 : A C++ test suite in 100 lines of code (updated the 2024-10-18)
- 2024-09-20 : Virtual functions, overloads, and default parameters - pick one
- 2024-09-11 : Conditional compilation
- 2024-08-25 : Query the number of elements in an array
- 2024-07-25 : Recover files from damaged media
- 2024-07-14 : Remove noise from audio files
- 2024-07-06 : Windows Server as Desktop Environment
- 2024-06-01 : Self-hashing code in C++
- 2024-05-22 : Reuse an old smartphone
- 2024-04-25 : A computer as a webserver
- 2024-03-31 : Lazy initialization, an alternative to double-checked locking
- 2024-03-24 : How to assemble a Java Program
- 2024-03-03 : Work with PDF files
- 2024-02-27 : TUI programs for Windows
- 2024-02-17 : Generic owning type erasure
- 2024-02-13 : Midnight Commander cheat sheet (part 2)
- 2024-02-10 : Introduce chrono in an existing codebase
- 2024-02-04 : Midnight Commander cheat sheet
- 2024-02-01 : Query properties of a class (updated the 2024-02-14)
- 2024-01-18 : Passwords
- 2024-01-11 : Destructure a C++ function
- 2024-01-09 : Mount archives
- 2023-12-18 : Mount folder
- 2023-12-06 : Owning type erasure for simple types
- 2023-11-21 : Execute a function after a return statement
- 2023-11-15 : Comma operator in C++ (updated the 2024-01-28)
- 2023-10-25 : A computer for retrogaming
- 2023-10-16 : git and binary files
- 2023-10-10 : Detect transparent comparators
- 2023-10-07 : Insert an element in a map efficiently
- 2023-09-14 : Prefer function overloads to std::variant
- 2023-08-26 : Mapping types in C++
- 2023-07-31 : Dependency injection in CMake
- 2023-07-08 : Bookmarklets
- 2023-07-02 : How to get the parent branch in git
- 2023-06-14 : Backup webpage
- 2023-06-11 : Comparison of ebook readers
- 2023-06-01 : CMake, MSVC, and Ninja
- 2023-05-24 : Emacs cheat sheet - part 2
- 2023-05-14 : Reproducible zip archives
- 2023-05-11 : Force null checks (updated the 2024-06-26)
- 2023-05-02 : Emacs cheat sheet
- 2023-04-25 : tmux cheat sheet
- 2023-04-19 : Android release notes
- 2023-04-12 : Verify the size of a webpage (updated the 2023-08-03)
- 2023-04-03 : Blacklist dependencies in CMake
- 2023-02-16 : Wine and X (updated the 2023-04-05)
- 2023-02-04 : A computer as a home media center
- 2023-01-26 : Create dummy deb packages
- 2023-01-17 : Windows release notes (updated the 2024-03-05)
- 2023-01-04 : E-Ink photo frame
- 2022-12-19 : dynamic_cast and multiple inheritance
- 2022-12-10 : Magic numbers for runtime checks
- 2022-11-27 : Let It Snow! Let It Snow! Let It Snow! 🌨️
- 2022-11-25 : Micro-optimizations
- 2022-11-03 : Mimick Mozilla Prism with profiles and KDE
- 2022-10-22 : When you cannot call hidden friends in C++
- 2022-10-15 : How to write friend functions
- 2022-09-30 : Showcase: a test article (updated the 2022-10-10)
- 2022-09-19 : decltype on a temporary lambda
- 2022-09-13 : Extract tokens from Microsoft Authenticator
- 2022-09-04 : Type erased view types in C++
- 2022-08-25 : Considerations about iOS (updated the 2024-02-23)
- 2022-08-16 : Find and fix code smells in C++ with regexes (updated the 2023-08-22)
- 2022-07-04 : Toolchain file in CMake
- 2022-06-26 : Digital audio library
- 2022-06-15 : Undefined behavior - the ugly
- 2022-06-04 : Write a custom virtual table in C++
- 2022-05-31 : Smart devices (updated the 2023-04-21)
- 2022-05-26 : A static word cloud with HTML and CSS
- 2022-05-04 : Conditional import and optional runtime dependencies in Java
- 2022-04-19 : The sad state of the web (updated the 2023-06-13)
- 2022-03-31 : Write programs for Android without writing apps
- 2022-03-21 : Disk power management (updated the 2023-01-06)
- 2022-03-14 : Merge video files
- 2022-03-07 : Compile-time optimizations in Java
- 2022-03-04 : Analyze configure times with CMake
- 2022-02-27 : Recreate EFI partition with GRUB
- 2022-02-21 : Customize powershell
- 2022-02-15 : Clean zip archives
- 2022-02-05 : vi cheat sheet
- 2022-01-30 : Analyze build times with clang
- 2022-01-21 : Automate git interactive add
- 2022-01-16 : Git aliases gotchas
- 2022-01-11 : How to declare function pointers
- 2021-12-26 : Webserver in PHP
- 2021-12-10 : Toolbox of a GNU/Linux C++ programmer (updated the 2024-07-17)
- 2021-11-24 : SSH everywhere (updated the 2024-02-07)
- 2021-10-30 : Compile-time string operations
- 2021-10-24 : Macros usages in C++ (updated the 2024-08-25)
- 2021-10-19 : Testing the health of a website (updated the 2023-04-12)
- 2021-10-15 : Parallelize bulk operations
- 2021-09-24 : A minimal C++ development environment
- 2021-09-16 : Guaranteed copy elision
- 2021-08-09 : constexpr tree structures
- 2021-08-03 : constexpr linked list
- 2021-07-25 : natstepfilter
- 2021-07-20 : Change the date of a photo to match Exif
- 2021-07-16 : CMake, custom targets, and commands
- 2021-07-05 : Migrate from Subversion to git
- 2021-06-29 : A better LaTeX environment
- 2021-06-25 : Natvis files
- 2021-06-12 : std::span, the missing constructor (updated the 2022-10-25)
- 2021-06-05 : Less assembly does not mean faster code
- 2021-05-28 : Clang-tidy on Windows
- 2021-05-20 : Recording macros in VIM
- 2021-05-18 : Backup user data with rsync
- 2021-05-10 : Risks of rooting Android
- 2021-05-02 : Synchronize contacts between Android and Thunderbird
- 2021-04-21 : Deducing return types in C++
- 2021-03-22 : Support FOSS
- 2021-03-17 : Botstrapping and cross-compiling
- 2021-03-15 : Linker error with static member variable
- 2021-03-12 : Should I root my Android phone (updated the 2023-03-18)
- 2021-03-06 : Remove Android system applications (an example)
- 2021-03-05 : Analyze Apache access logs
- 2021-02-27 : Introduction to make
- 2021-02-21 : PHP as static site generator
- 2021-02-18 : Git is actually easier than svn
- 2021-02-10 : Quick GIMP tricks
- 2021-02-07 : MathML support in Chromium-based browsers
- 2021-02-05 : git, cygwin and WSL
- 2021-01-27 : Namespace vs struct
- 2021-01-10 : Decomposing an expression
- 2021-01-03 : C++ performance guidelines
- 2020-12-17 : string_view(s)
- 2020-12-08 : Cygwin and WSL
- 2020-10-05 : How to force return value optimization
- 2020-10-01 : Thoughts on public virtual inheritance
- 2020-08-28 : Restrict interface with private inheritance
- 2020-08-24 : Minimize Debian
- 2020-08-17 : Library dependency graphs in CMake
- 2020-08-01 : The private implementation pattern (PIMPA)
- 2020-07-25 : Extending the generic thread-safe mutexed_obj class
- 2020-07-13 : How to envelop a class with suffixes and prefixes and discover properties fields in C++
- 2020-07-07 : We already have uniform initialization, stop proposing braced initialization as a solution for everything
- 2020-06-10 : Windows hardening (part 2)
- 2020-05-29 : Windows hardening
- 2020-05-14 : Recover music files (part 2)
- 2020-04-26 : Recover music files
- 2020-02-11 : Still using Windows XP
- 2020-01-20 : Unable to delete files as Windows administrator
- 2020-01-13 : chroot as docker alternative for building
- 2019-12-17 : Docker process creation overhead when compiling
- 2019-10-21 : Name your conversions
- 2019-10-10 : Remove Android system applications
- 2019-10-06 : Immutable virtual machines with VirtualBox
- 2019-09-30 : Custom static analysis with Cppcheck
- 2019-09-23 : Test failures in C++
- 2019-09-16 : Tracing with GCC
- 2019-09-09 : fmove
- 2019-09-02 : Post-build static analysis - pfunct and pahole
- 2019-08-26 : Post-build static analysis
- 2019-08-18 : Global variables in C++ libraries
- 2019-06-30 : Arcane C++ rules, namespaces and overloads
- 2019-06-17 : Detect member variables since C++11 (updated the 2024-01-28)
- 2019-06-10 : Setting a default editor in Microsoft Windows
- 2019-06-05 : Iterating over delimited string in shell scripts
- 2019-03-05 : Sharing data between threads
- 2019-01-20 : Some shell script tricks
- 2018-11-20 : Deprecate and delete
- 2018-09-04 : Function poisoning in C and C++
- 2018-06-30 : Stop using regex for validation
- 2018-04-07 : Floating in C++ - part 7 - Runge-Kutta
- 2018-02-06 : Floating in C++ - part 6 - Approximating the Solution to the Cauchy Problem
- 2017-12-12 : Floating in C++ - part 5 - Linear algebra
- 2017-11-20 : Floating in C++ - part 4 - Testing
- 2017-09-24 : Floating in C++ - part 3 - Integration
- 2017-09-13 : Floating in C++ - part 2 - Interpolation
- 2017-08-27 : Floating in C++ - part 1 - Root problem
- 2017-08-19 : Floating in C++
- 2017-07-20 : C++ comparison operators
- 2017-06-15 : Undo in git
- 2017-06-13 : Resource handling in Java