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

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


Long-format articles and presentations I've written over the years.

C++ exceptions under the hood (read as single page)

  1. C++ exceptions under the hood
  2. C++ exceptions under the hood 2: a tiny ABI
  3. C++ exceptions under the hood 3: an ABI to appease the linker
  4. C++ exceptions under the hood 4: catching what you throw
  5. C++ exceptions under the hood 5: magic around __cxa_begin_catch and __cxa_end_catch
  6. C++ exceptions under the hood 6: gcc_except_table and the personality function
  7. C++ exceptions under the hood 7: a nice personality
  8. C++ exceptions under the hood 8: two-phase handling
  9. C++ exceptions under the hood 9: catching our first exception
  10. C++ exceptions under the hood 10: _Unwind_ and call frame info
  11. C++ exceptions under the hood 11: reading a CFI table
  12. C++ exceptions under the hood 12: and suddenly, reflexion in C++
  13. C++ exceptions under the hood 13: setting the context for a landing pad
  14. C++ exceptions under the hood 14: multiple landing pads & the teachings of the guru
  15. C++ exceptions under the hood 15: finding the right landing pad
  16. C++ exceptions under the hood 16: finding the right catch in a landing pad
  17. C++ exceptions under the hood 17: reflecting on an exception type and reading .gcc_except_table
  18. C++ exceptions under the hood 18: getting the right stack frame
  19. C++ exceptions under the hood 19: getting the right catch in a landing pad
  20. C++ exceptions under the hood 20: running destructors while unwinding
  21. C++ exceptions under the hood 21: a summary and some final thoughts
  22. C++ exceptions under the hood appendix I: the true cost of an exception
  23. C++ exceptions under the hood appendix II: metaclasses and RTTI on C++
  24. C++ exceptions under the hood appendix III: RTTI and exceptions orthogonality

Writing Vim plugins

  1. Vim utilities: Findgrep & Fastgrep
  2. Vim utilities: Impl switche
  3. Vim utilities: Better Tab New
  4. Simple vim plugin I: integrating new command
  5. Simple vim plugin II: a psychic project grepe
  6. Simple vim plugin III: a polymorphic project grepe
  7. Simple vim plugin IV: project grepin

Setting up a Linux gateway/router, a guide for non network admins

  1. Setting up a Linux gateway/router, a guide for non network admins
  2. Setting up a Linux GW II: NATting and forwarding
  3. Setting up a Linux GW III: Setting up DNS with bind9
  4. Setting up a Linux GW IV: Setting up apparmor
  5. Setting up a Linux GW V: DCHP
  6. Setting up a Linux GW VI: Configuring a console friendly router and setting up static DHCP IPs
  7. Setting up a Linux GW VII: Fun with iptables, setting up port forwardings
  8. Setting up a Linux GW VIII: Proxy and content filtering

C preprocessor

  1. C preprocessor: Just a simple replacer?
  2. C preprocessor II: stringify operator
  3. C preprocessor III: Token pasting
  4. C preprocessor IV: VA Args
  5. C preprocessor V: Conditionals
  6. C preprocessor VI: Recursive macro expansion rules
  7. C preprocessor VII: Recursive expansion on function macros

Cool C++0X features

  1. Cool C++0X features 1: Intro
  2. Cool C++0X features 2, Variadic templates: What's wrong with varargs
  3. Cool C++0X features 3: Variadic templates, a fix for varargs
  4. Cool C++0X features 4: Variadic templates again
  5. Cool C++0X features 5: Templates and angle brackets, a short interlude
  6. Cool C++0X features 6: A variadic wrapper
  7. Cool C++0X features 7: A variadic wrapper solution
  8. Cool C++0X features 8: Variadic wrapper and type inference with decltype
  9. Cool C++0X features 9: delayed type declaration
  10. Cool C++0X features 10: type inference with decltype
  11. Cool C++0X features 11: decltype and disappearing constness
  12. Cool C++0X features 12: type inference with auto
  13. Cool C++0X features 13: auto and ranged for, cleaner loops FTW
  14. Cool C++0X features 14: Initializer lists
  15. Cool C++0X features 15: Initializer lists for custom (non-std) objects
  16. Cool C++0X features 16: Lambdas
  17. Cool C++0X features 17: Lambdas syntax

C++ Template metaprogramming

  1. Template metaprogramming: A slow descent towards utter maddness
  2. Template metaprogramming 2: Openning the box
  3. Template metaprogramming 3: Entering Pandemonium
  4. Template metaprogramming 4: Nightmares to come
  5. Template metaprogramming 5: Face to face
  6. Template metaprogramming 6: The Spider Webb
  7. Template metaprogramming 7: The Enemy Within
  8. Template metaprogramming 8: A Rough Whimper of Insanity
  9. Template metaprogramming 9: Absolute Zero
  10. Template metaprogramming 10: Zero Minus Ten
  11. Template metaprogramming 11: Hidden Agenda
  12. Template Metaprogramming 12: You Really Got a Hold on Me
  13. Template Metaprogramming 13: Heart of Darkness
  14. Template Metaprogramming 14: Marathon
  15. Template Metaprogramming 15: Gemini

LaTeX

  1. LaTeX!
  2. A case for LaTeX
  3. LaTeX basics
  4. LaTeX: format basics
  5. LaTeX: LyX Revisited
  6. LaTeX: Makefile
  7. LaTeX: including documents
  8. LaTeX: Including Source Code

Makefiles

  1. Makefiles
  2. A Makefile for TDD with C++
  3. A Makefile for code coverage report with C++
  4. A talking makefile
  5. Useful predefined variables in make