Projects and long-reads
Open source projects
Sometimes I decide to contribute something back to humanity. Others would say I unleash my crappy code to the world. In any case, here's something you can laugh at, be horrified about or maybe, maybe, find useful. The list is probably incomplete, out of date, or both. Some of these projects hail from the dark ages of the early 2000's, and may be woefully out of date.
TODO: I should write a description of all these
- https://github.com/nicolasbrailo/zigbee2mqtt2web
- https://github.com/nicolasbrailo/BatiCasa
- https://github.com/nicolasbrailo/MdlogGen
- https://github.com/nicolasbrailo/PyTelegramBot
- https://github.com/nicolasbrailo/GitToDo
- https://github.com/nicolasbrailo/ChromecasticSlideshow
- https://github.com/nicolasbrailo/wta
- https://github.com/nicolasbrailo/gowatch
Spotiweb - Run in your browser
Alt web client for Spotify.
If you find the native client for Spotify is too cluttered, SpotiWeb can provide a simpler experience. SpotiWeb automatically goes through the list of your followed artists to create an index groupped by category. The categories will be automatically determined based on the artists you follow. The result will be a simple web page with an index of all the artists you followed, groupped by somewhat logical categories.
VlcFreemote - Link to article
Control your VLC from an Android device. No need to get up from the couch.
Pianoli
A baby game for Android
Have a baby curious about shiny tablets and phones? Use this app as a baby-game and, more importantly, to prevent random taps of a baby from doing anything you may not want.
This app will show a small piano a baby can use to explore sounds in a mobile device. At the same time, it will block any naive attempts at closing the app. The back, home and apps-menu buttons will be blocked, and Android's top menu won't be available. This ensures a baby can't accidentally close the game, preventing any actions on the device you may not want.
IMGeotagger - Link to article
An image Geotagger for Linux that doesn't entirely suck. Will give you a pretty GUI with G. Maps, from which you can geo-tag a set of pictures.
TrippingSdCardPhotoManager - Link to article
When you're on a long trip and you don't want to carry around a heavy computer just to manage your camera's SD card, this app can be a helpful tool. Using your tablet's SD card reader (or an OTG cable, if it has none) you can manage the photos taken in your trip, preview your snaps and make room for more by deleting those that you don't want. Let's you use ImageMagick in Android.
Godmin - Setting up a Linux GW/Router, a guide for non network admins
Godmin is intended as an application to *easily administrate a Linux based gateway*, but *not as a one size fits all* tool; Godmin was created with a very narrow audience in mind, it was created as a tool to easily administrate a Debian based gateway running ISC, bind and iptables, for a small to mid size LAN (10 to a 100 clients). You might find Godmin useful if you [...]
TrelloPrinter
Trello board printer: generate a printable version of a Trello board including card descriptions and attachments.
Hacked pictag - Pictag: finally a simple geotagging tool for Linux
A hacked clone of https://launchpad.net/pictag to have it run in newer Ubuntu versions
[Vim plugin] Impl Switcher : Easily switch between impl and header files
Impl Switcher: a Vim plaugin to switch between implementation and header files (for example, between .h and .cpp files).
[Vim plugin] BTN: Better tab new
Better tab new: replaces the default tabnew command with a slightly smarter version, capable of understanding line numbers. This is very useful for programming, where filenames are usually expressed as "fname:line number". Even when grepping, the output format will usualy be "path/to/file:42". BTN won't reject these strings, it will instead open them and move the cursor to the appropriate line.
Fastgrep - A cache for grep
Feel your grep searches are too slow? Try caching your project for grep! Works great in combination with this Vim plugin.
Long form reads
This is a list of long-form articles I’ve written over the years which I am allowed to share publicly, and which do not always have an associated post in this blog. In many cases they are the presentations I used for courses or talks.
Testing & mocking
- Link a la presentación (PDF) Testing & mocking: C++*
- Link a la presentación (PDF) Console Ninja: Cómo dejar de ser un usuario desconsolado*
- Link a la presentación (PDF) SQL FTW*
- Link Valgrind*
- valgrind Notas sobre metodologís ágiles*
- Introducción a las metodologías ágiles (spanish only) Introducion a GNU/Linux*
- Link a la presentación (PDF) GNU/Linux: Guía de Supervivencia (FLISOL 09)*
- Link a la presentación (PDF) LyX: A text editor that stays out of the way*
- URL: http://debaday.debian.net/2008/01/20/lyx-a-text-editor-that-stays-out-of-the-way/
Long-format articles and presentations I've written over the years.
C++ exceptions under the hood (read as single page)
- C++ exceptions under the hood
- C++ exceptions under the hood 2: a tiny ABI
- C++ exceptions under the hood 3: an ABI to appease the linker
- C++ exceptions under the hood 4: catching what you throw
- C++ exceptions under the hood 5: magic around __cxa_begin_catch and __cxa_end_catch
- C++ exceptions under the hood 6: gcc_except_table and the personality function
- C++ exceptions under the hood 7: a nice personality
- C++ exceptions under the hood 8: two-phase handling
- C++ exceptions under the hood 9: catching our first exception
- C++ exceptions under the hood 10: _Unwind_ and call frame info
- C++ exceptions under the hood 11: reading a CFI table
- C++ exceptions under the hood 12: and suddenly, reflexion in C++
- C++ exceptions under the hood 13: setting the context for a landing pad
- C++ exceptions under the hood 14: multiple landing pads & the teachings of the guru
- C++ exceptions under the hood 15: finding the right landing pad
- C++ exceptions under the hood 16: finding the right catch in a landing pad
- C++ exceptions under the hood 17: reflecting on an exception type and reading .gcc_except_table
- C++ exceptions under the hood 18: getting the right stack frame
- C++ exceptions under the hood 19: getting the right catch in a landing pad
- C++ exceptions under the hood 20: running destructors while unwinding
- C++ exceptions under the hood 21: a summary and some final thoughts
- C++ exceptions under the hood appendix I: the true cost of an exception
- C++ exceptions under the hood appendix II: metaclasses and RTTI on C++
- C++ exceptions under the hood appendix III: RTTI and exceptions orthogonality
Writing Vim plugins
- Vim utilities: Findgrep & Fastgrep
- Vim utilities: Impl switche
- Vim utilities: Better Tab New
- Simple vim plugin I: integrating new command
- Simple vim plugin II: a psychic project grepe
- Simple vim plugin III: a polymorphic project grepe
- Simple vim plugin IV: project grepin
Setting up a Linux gateway/router, a guide for non network admins
- Setting up a Linux gateway/router, a guide for non network admins
- Setting up a Linux GW II: NATting and forwarding
- Setting up a Linux GW III: Setting up DNS with bind9
- Setting up a Linux GW IV: Setting up apparmor
- Setting up a Linux GW V: DCHP
- Setting up a Linux GW VI: Configuring a console friendly router and setting up static DHCP IPs
- Setting up a Linux GW VII: Fun with iptables, setting up port forwardings
- Setting up a Linux GW VIII: Proxy and content filtering
C preprocessor
- C preprocessor: Just a simple replacer?
- C preprocessor II: stringify operator
- C preprocessor III: Token pasting
- C preprocessor IV: VA Args
- C preprocessor V: Conditionals
- C preprocessor VI: Recursive macro expansion rules
- C preprocessor VII: Recursive expansion on function macros
Cool C++0X features
- Cool C++0X features 1: Intro
- Cool C++0X features 2, Variadic templates: What's wrong with varargs
- Cool C++0X features 3: Variadic templates, a fix for varargs
- Cool C++0X features 4: Variadic templates again
- Cool C++0X features 5: Templates and angle brackets, a short interlude
- Cool C++0X features 6: A variadic wrapper
- Cool C++0X features 7: A variadic wrapper solution
- Cool C++0X features 8: Variadic wrapper and type inference with decltype
- Cool C++0X features 9: delayed type declaration
- Cool C++0X features 10: type inference with decltype
- Cool C++0X features 11: decltype and disappearing constness
- Cool C++0X features 12: type inference with auto
- Cool C++0X features 13: auto and ranged for, cleaner loops FTW
- Cool C++0X features 14: Initializer lists
- Cool C++0X features 15: Initializer lists for custom (non-std) objects
- Cool C++0X features 16: Lambdas
- Cool C++0X features 17: Lambdas syntax
C++ Template metaprogramming
- Template metaprogramming: A slow descent towards utter maddness
- Template metaprogramming 2: Openning the box
- Template metaprogramming 3: Entering Pandemonium
- Template metaprogramming 4: Nightmares to come
- Template metaprogramming 5: Face to face
- Template metaprogramming 6: The Spider Webb
- Template metaprogramming 7: The Enemy Within
- Template metaprogramming 8: A Rough Whimper of Insanity
- Template metaprogramming 9: Absolute Zero
- Template metaprogramming 10: Zero Minus Ten
- Template metaprogramming 11: Hidden Agenda
- Template Metaprogramming 12: You Really Got a Hold on Me
- Template Metaprogramming 13: Heart of Darkness
- Template Metaprogramming 14: Marathon
- Template Metaprogramming 15: Gemini
LaTeX
- LaTeX!
- A case for LaTeX
- LaTeX basics
- LaTeX: format basics
- LaTeX: LyX Revisited
- LaTeX: Makefile
- LaTeX: including documents
- LaTeX: Including Source Code