The 3 levels of understanding

In the last couple of years, I have been a reader, a student, an apprentice, a researcher, a speaker, a trainer, and above all a passionate debater. These activities have something in common: they are all in some way about teaching and learning. Like most people, I did not need a lot of time in school to believe that there are good teachers and bad teachers. But it took me years to understand that it is actually all about good and bad ways to understand things. This article is a lot about learning, and a bit about teaching if you…

read more...

Getting Things Done with Inbox

As a software developer, I read and reply to a large number of emails. Counting both my professional and personnal accounts, I go through about a hundred emails every day, even though I dont spend more than 10 minutes in my mailbox. I am usually very quick to answer, I don't "lose" emails, and I don't let them interrupt me. For that, I rely fully on Inbox by Gmail, which radically changed the way I use emails and organize my time. In this article, I will discuss fundamental issues of emails as we know them, then explain how David Allen's…

read more...

Parcels and inheritance in Android

To pass information between Activities and save states during the application lifecycle, Android uses Parcel objects. Like Serializable in Java, the Parcelable interface offers a marshalling mechanism to represent and transfer object instances as bytes. In this post I will present some of the differences between Parcels and Serializable, then explain how to implement the Parcelable interface correctly, in particular in a hierarchy of inherited classes. Why Parcel? Parcels are a lightweight alternative to Serializable for inter-process communication. As stated in the documentation, it is not a general purpose serialization mechanism and should not be used to store object representations…

read more...

A try-with-resources equivalent for Java 6 and Android

In Java core libraries, resources such as network, files and databases can be accessed through a large range of low-level interfaces which all require to explicitly handle exceptions and release resources properly. As a consequence, writing such code is arguably more error-prone than in languages with high-level resource access methods, and it is actually quite common to find bugs related to flawed resource management in Java codebases. To tackle this issue, Java 7 offers higher-level methods to access files in the java.nio.file package, but also a new try-with-resources language construct to automatically release resources, even when errors occur.…

read more...

Hello World!

After many years of hacking WordPress, I wanted to move to something lighter, faster and simpler. While looking for alternatives, I found out about Ghost and immediately wanted to give it a try. Ghost Ghost is a lightweight blogging system written in Node.js, Ember.js and HandleBars. It provides a clean and simple client interface and focuses on content. The installation is easy enough if you have root privileges on your server and you know a thing or two about Unix: it boils down to installing Node.js, deploying a packaged Node project, changing two flags and setting up…

read more...