Yes, I have actually crossed the finish line of the half-marathon of Paris, despite my knee injury. I am so happy and proud of myself and I’d like to take the occasion to thank again all of you who donated to VML and who supported my participation in the race at the same time. I talked at the end of the race to some families affected by lysosomal diseases and they were extremely relieved by all the donations raised by runners like me. Proud of you, guys!
Finishing this race was quite an achievement to me and I would like to take the time to relate that story properly somewhere during this week as I don’t want to forget this moment!
Ladies and gentlemans, we made it, we raised 350 euros for the charity Vaincre Les Maladies Lysosomales. Thanks to you and other donators supporting other runners this charity has raised a total of 17 000 euros. This is an incredible achievement for them as they are not used to be put under spotlight given that lysosomal diseases are very rare and less popular than other diseases like cancers.
So first, I would like to thank each one of you who donated to VML-ASSO and making it possible for me to get this bib:
This is a green bib, which means that my goal is to run the distance in 2 hours. To be honest, it was very optimistic of me to think that I could run this distance in 2 hours, I just hope to finish the race.
Which brings me to the last point of this article, less than two months ago I started feeling some pain in my right knee and as a result I had to reduce my training volume drastically. If it wasn’t for your support It would have been easier for me to just let this go. So thank you again!
Finally, if you want to follow me throughout the run you can go on this site and search for my bib number: 43984.
I had mixed feelings, on one hand I found the view beautiful but on the other hand I thought that I’d miss my traditional weekly long run session. After a breakfast (watching Lance Armstrong’sinterview with Oprah), I started thinking about whether or not I should do that run. I started searching on Twitter for the hashtag #courir (french word for running) and found lot of not so motivating tweet about people heading back to bed after seeing all that snow falling. Then I remembered that I had a half-marathon to run in no less than 41 days and figured I should give a try to running in the snow (yeah,call me noob if you want, I have never done that before).
How it went?
(tracked with a Garmin FR 360 – Review coming soon)
Wonderfully! First of all, it wasn’t possible to slip on the ground as the snow was still very solid at that time. Also, as you can see I was running at a very very slow pace (avg 65% of my maximum heat rate). Of course it was mostly voluntary as I planned to do a long slow distance run. But obviously, there was additional friction.
Other than that I found the following advantages to running in the snow:
You have the freedom to run almost anywhere you want (less cars, almost no bicycles at all…).
Your legs work harder than usual so it helps strengthen your muscles more than usual.
It teaches you how to stabilize yourself when running.
And finally, you will benefice from stunning views during your workout:
The above pictures were taken in The Bois de Boulogne (west side of Paris), you can notice the frozen lac on the last picture. Here is also a small sequence from my workout:
Anyways, I now feel that nothing (not even snow) can get in the way of my half-marathon preparation, I am really committed to run it under 1h50 (which is quite challenging given my current level).
As a final note, I would like to thank each one of you who already donated to the charity I am supporting (a charity that fights against Lysosomal Storage Disease) which covers many rare genetic diseases), it really means a lot to me and it gives me the courage to step outside,whatever the climatic conditions are!
For those of you who don’t know what I am talking about, the only way for me to run the half-marathon of Paris is to collect some amount of money for a charity. This page explains it all! If you are willing to donate to the charity, remember that if you live in France you can deduce 60% of that donation off your taxes. Otherwise, you can read more about Lysosomal Diseases and understand why it’s important to donate even the smallest amount to the charity.
I read a lot. But not much the kind of books that everyone reads like novels, I mostly read books that have some connexion with programming, entrepreneurship and creativity.
You can find in my bookshelf the following books:
Books about personal development, like: How to be more productive? How to be happier? How to control your emotions? How to unleash your creativity?
High level books about my discipline that I read to grow up as a better software engineer (or as I like to call myself, as a better craftsman).
Technical books related to the technologies and tools that I use everyday.
My addiction to reading has become worse since I bought an iPad, which combined to the Kindle application makes my reading experience a blast! Although, to be honest with you I miss how books smell sometimes – Yeah, I am that weird dude who smells books at the library, and you know what? It turns out that I am not the only one.
Anyway, now that 2012 is over, I wanted to take a step back to look at my last year’s favorite books. The goal is not only to keep track of what I read, but also to keep track of what I don’t read (Yes I often buy many books at the same time and often forget to read them after a while).
Coders At Work This book offers a collection of interviews with very famous developers (and sometimes even legends), to name a few: Jamie Zawinski, Douglas Crockford, Ken Thompson, JoshuaBloch and even Donal Knuth in person! Each interview is very rich both in terms of length (above 30 pages) and content. Indeed, the author, asks very interesting questions about their what brought them to programming, their programming style, the tools they use, the most difficult bug they had to solve as well as other questions that depend on who the interviewee is. So far, I have been reading 50% of that book and I have learned a lot.
Effective Java – Second Edition I bought this book when I started using Java professionally (when I started Android development during my internship 2 years ago) and I urge you to do the same if you haven’t read it yet. It is written by Josh Bloch the guy who designed many Java features: generics and collections for example. This book covers topics like: patterns to object creation, generics or concurrency. The best way to master a language is to read its specification, but this book might be a good replacement to it.
The architecture of Open Source Applications I bought this one after a colleague recommended it. It’s a collection of reflections on different Open Source projects. A non exhaustive list of these projects include: Asterisk, Bash, Eclipse, LLVM and Mercurial) written by the authors of those projects themselves. The premise of this book is, as quoted from the introduction, that Building architecture and software architecture have a lot it common, but there is one crucial difference. While architects study thousands of buildings in their training and during their careers, most software developers only ever get to know a handful of large programs as well. And more often that not, thsoe ar eprograms they wrote themselves. They never get to see the great programs of history, or read critiques of those programs design written by experienced practitioners. As a result, they repeat one another’s mistakes rather than building on one another’s successes. I couldn’t agree more. It is really valuable to be able to read some thoughts shared by the authors of the most important open source projects out there, who have been putting so much effort on their design!
The Algorithm Design MANUAL Every serious software engineer should keep handy a serious manual about algorithms and data structures. I hesitated a lot between buying this one or buying the very famous Introduction to Algorithms from MIT press. I finally went for this one because it provides both practical and theoretical insights on most of algorithm topics. The killer feature of this book, is also its war stories which tell you how algorithm problems arise in the real world. Highly recommended.
Effective Programming More Than Writing CodeCodingHorror is one of the most popular blog written by a programmer for fellow programmers. It is also one of my favorites, given how much quality Jeff Atwood (also the father of StackOverflow) put into each blog post. When I saw that he wrote a book and that he was only selling it for 2.99$, I ran on my wallet and pullet out my credit card to buy it. Of course I don’t regret that decision as the book covers a lot of topics dear to my software programmer’s, engineer’s, craftsman’s (pick the term you wish) heart: How to get shit done, how to hire good programmers, how to test your code, how to design with your users in mind, working remotely etc. The format of the book itself makes each section very easy to read as each chapter is only 2-3 pages long max.
REWORK This is an excellent book written by DHH (the original creator of Ruby On Rails) and Jason Fried on how business should be done differently than what it is right now. It is a highly opinionated book that basically breaks all the current business norms. For instance: planning is guessing, don’t hide your idea from your competitors, don’t kill yourself at work, avoid meetings etc. It is very easy to read as each story is a page or so long only.
Rails AntiPatterns Yes while I am doing Android development at the moment, I have also been doing a lot of server side programming with RoR. One of the things I noticed when I was doing it, is that it’s very easy to come up with a messy codebase. This is the book I have read to improve my skills back then. Have you heard of: Fat Models? Spaghetti SQL? Fat Controller? Bloatted Sessions? Well, these are all anti-patterns covered by the book along many others.
The App & Mobile Case Study Book I bought this book at the San Francisco Museum of Modern Art. It was supposed to contain a list of mobile apps case studies (for iOS though but anyway). I have to say, I was a little disappointed as the case studies where not very constructive. Each case study is composed of 4 sections: The brief, the challenge, the solution and the results.It might sound good but it actually isn’t due to how super short each section is. Sometimes it’s mostly advertisement in my opinion. The only positive thing about this book is that you get to see a lot of app screens that could inspire you. Also, the book itself (not the content) is high quality and it smells good (I smell it every night before heading to bed. I’m kidding of course…). By the way, did you know that TASCHEN (the editor of this book) published a 15 000$ book about Muhammad Ali once? I am not kidding (Although it appears to be selling at 6000$ now).
Outliers: The Story of Success Always wondered why are some people highly successful where others are just above average? Malcom Gladwell, in this book discusses the factors that contribute to high level of successes. Ever heard of the 10 000 hour rule, by which some people agree is the minimum amount of time needed to be an expert on anything? Well, this is where it comes from. Of course, I have always been interested in this topic as I explained earlier on a blog post (beware it stinks cheese as it’s written in french) and I enjoyed this reading a lot.
I was blind but now I see Let me save you some time by cutting the crap and by telling you what this book is really about. In this book, James Altucher, bitches about life. He has obviously gone through a lot of drama in his life, so he wrote a book to share his opinions on what life is really about and how not to fall into some traps (like buying a house, going to college, being stuck at a job you don’t like etc.). A good read overall. Just wear your critical thinking hat while reading it.
Endurance: Shackleton’s incredible voyage This is the story of Sir Ernest Henry Shackleton who was leading a ship named Endurance during an expedition that turned into a disaster. The ship became trapped in pack ice and was slowly crushed before the shore parties could be landed. But thanks to Shackleton good leadership, there was no loss of life during this expedition. I am still going through the very first pages of this book so I can’t tell you more about it now.
The How of Happiness: A New Approach to Getting The Life You Want I bought this book after reading an interesting quote from the book on Eric Larchevêque’s blog Find a happy person, and you will find a project. And honestly, I think, this is by far the most serious book about happiness that you can find out there. The reason why it’s serious is because every statement is backed by some scientific evidences. The author, Sonja Lyubomirsky who holds a PhD in psychology, starts by explaining why some of us are born more disposed to be happy or depressed and in that case describes some daily activities that one could accomplish to feel better and happier.
La Théorie de L’information This is a french novel that relates the digital revolution that started in France 30 years ago with the creation of the Minitel and then describes the chain of events that happened up until now. This book is half fiction and half real. Why? Because, this is based on a real story but the characters are fictional to some degrees. Actually, the hero of the book, Pascal Ertanger, is said to be the fictional representation of Xavier Niel the founder of Iliad/Free. By the way, this is the book that sits on my bedside table right now. So far entertaining and full of information about things that happened before I was born (and even things that happened the day I was born like the launch of a Pink Minitel Service by Xavier N… Pascal Ertanger, hmm).
Steve Job’s biography. Should I say more?
Of course this is what I have been reading (or started reading) in 2012. There are other programming books that I have been reading before and that I highly recommend like: Code Complete (specially if you just started as a professional developer), Design Patterns Head First or The Well Grounded Rubyist (if you want to start learning Ruby – I have of course other programming language books but this one is just excellent that I just decided to mention it). There are also entrepreneurship books that I recommend like Once You Are Lucky Twice You Are Good that talks about the PayPal Mafia or Founders At Work (an equivalent to Coders At Work for entrepreneurs).
So now that a new year has started, I need to start looking for other books. There are probably some good classics that I am planning to buy real soon like the Structure and Interpretation of Computer Programs (who everybody agrees on being one the most important books that any serious developer should read) and I might also buy some books from Martin Fowler. Besides that, what books do you recommend me reading? What books have you read the last year or so? What books are you going to read this year?
Are you an Android developer or an Android Hacker? If yes, you certainly use ADB (Android Debug Bridge) to do various things like:
Start a shell on the target device.
Install/Uninstall some packages.
Monitor the state of the device (memory used, cpu used etc.)
Push/Pull some files to/from the target device.
One thing I have noticed is that most developers connect their device to their computer using a USB cable and that sucks because:
It is not ergonomic.
It is ugly.
You probably need that cable to plug your device to an electric outlet while you are at work.
You may not have a USB cable at all!
Anyway, for those of you who want to connect to your device wirelessly using ADB, I have some good news for you: it is possible and it is easy.
First, let’s talk about how ADB works and then let’s dig into that very straightforward solution (or if you are busy just jump to the second paragraph).
How does ADB work?
ADB is a tool that includes three components:
A client: It runs on your development machine. This is where you will be issuing your commands.
A daemon: It is a background process hosted by the target device.
A server : It basically acts as a Proxy between the client and the daemon. By the way, the server runs as a background process on your machine.
As you can guess, there is a two way communication going on between the server and the daemon. That communication happens over a medium which can be of two sorts: USB or TCP. Aha, you get it know? If we want to connect to our device wirelessly then we just have to switch the transport mode from USB to TCP. Let’s do that!
The solution: Switching ADB transport mode from USB to TCPIP
Before switching to TCP, we’ll need to grab the IP address of the device. To do that, we can either go to the phone settings or use the command line tool netcfg:
adb shell netcfg
Once you are in possession of the device’s IP address (let’s say it’s: 192.168.1.25), you can switch to TCP mode by doing:
One thing to remember is that you can only choose a port number within the range of [5555...5585] (the reason being that ADB Server only works with these ports). So for instance you could do:
adb tcpip 5555
Stop ADB Server (we’ll restart it later by issuing any ADB command):
Set ADBHOST to your IP address:
ADBHOST=192.168.1.25 adb devices
Make sure your device is connected
the last part of the last command should print the device that you are trying to connect to.
What to do if you don’t have a USB cable from the begining?
If you don’t have a USB cable at first, then you need to root your device first then run the following command on your device:
setprop service.adb.tcp.port 5555
Then you need to stop/restart the adb daemon:
How to switch back to USB transport mode?
But there is one caveat
This only works since Android 4.0 (ICS). If you have to develop/hack on other Android versions then you need to root that device (in order to use ADB in unsecure mode).
That’s all folks, I hope that you are now hacking Over The Air
(Disclaimer: the following article is exceptionally not technical and exceptionally written in french).
À moins que vous ne viviez sur une autre planète, vous savez probablement qu’en ce moment se déroulent à Londres les Jeux Olympiques. Pour être honnête avec vous, les JO sont l’un de mes événements favoris; cet intérêt est motivé principalement par la devise olympique : Citius, Altius, Fortius alias plus vite, plus haut, plus fort. Oui, j’aime regarder les athlètes féminines se surpasser, battre des records du monde ou à défaut leurs records personnels. Et puis qu’est ce que c’est beau un(e) athlète qui domine avec brio sa discipline/catégorie ! Lorsque j’assiste à ce genre de performances, je ne peux m’empêcher de me poser les questions suivantes: Comment font-ils ? Qu’est ce qui différencie le meilleur du second ? À quel moment, dans leurs carrières respectives, ces différences se sont elles déclarées ?
Evidemment par meilleur j’entends un athlète individuel (ou équipe collective) qui domine sa discipline de manière indiscutable ou un même groupe d’athlètes qui se disputent toujours les victoires. Ces athlètes on les connait tous (pour faire court je ne vais citer que des athlètes en activité), je pense à: Usain Bolt; le big four au Tennis (Federer, Djokovic, Nadal, Murray); Michael Phelps; Teddy Riner; l’équipe américaine de Basketball etc.
En parlant de Basketball, l’autre fois je regardais USA-Nigeria et j’étais complètement impressionné par l’efficacité américaine; tout réussissait à cette équipe; le pourcentage de shoots à 3 points était extrêmement élevé ; tout paraissait fluide, facile et naturel pour eux… Bref, comment font-ils ?
Naturellement, une domination de cette ampleur peut être expliquée par:
Le facteur génétique : la taille, la capacité cardiaque et respiratoire, la taille des muscles ainsi que les types de fibres musculaires etc.
La qualité de l’encadrement et des infrastructures dans lesquelles les athlètes s’entrainent.
L’hygiène de vie de l’athlète.
Le talent et l’intelligence de l’athlète (notons qu’on peut considérer l’intelligence comme un facteur génétique bien qu’elle peut bien évidemment être développée, d’autant plus que dans ce cas on fait référence à l’intelligence de jeu et tactique).
La motivation de l’athlète (oui certains athlètes compètent pour gagner et d’autres uniquement pour le plaisir de participer).
Oui j’insiste sur le travail car bien que le facteur génétique soit important, il est loin d’être suffisant : on peut citer plein d’exemples d’athlètes prédisposés physiquement à la pratique d’un sport (ou munis d’un talent naturel pour le faire) qui échouent lamentablement par manque de travail et d’entrainement.
Tous les autres facteurs sont bien entendus non négligeables mais certains sont directement liés au travail (comme le développement de l’intelligence de jeu). Vous remarquez aussi que j’ai omis de citer l’expérience qui à mon avis ne joue pas un rôle aussi déterminant (regardez les nageurs adolescents qui explosent les chronos; Rafael Nadal survolait déjà Rolland Garros à 18 ans etc.).
À ce niveau de la compétition, le travail est donc le facteur qui différencie le meilleur des autres. Oui mais vous allez me dire que tous les athlètes s’entrainent dur et qu’il serait injuste de qualifier les perdants de glandeurs. Oui mais voilà, les meilleurs s’entrainent: plus, beaucoup plus, beaucoup beaucoup beaucoup plus depuis leurs plus jeune âge.
En 1990, déjà, le psychologue Anders Ericsson se livrait à une expérience intéressante. Dans une école accueillant l’élite des étudiants en violon, il divisait, avec l’aide des professeurs, l’effectif en trois groupes. Le premier était composé de ceux, indubitablement excellents, qui feraient des carrières de solistes ; le second regroupait ceux qui étaient bons et joueraient dans des grands orchestres et le dernier rassemblait les étudiants jugés moyens, qui seraient sans doute professeurs de violon pour les enfants. En analysant les caractéristiques communes aux trois groupes, il apparaît que tous les étudiants ont intensément joué du violon depuis l’âge de 5 ans. Vers huit ans, les différences émergent. Les étudiants que l’on retrouve dans le premier groupe pratiquent plus que les autres : six heures par semaine à neuf ans, huit à douze ans, seize à quatorze ans et ainsi de suite. Lors de l’entrée à l’école de violon, le groupe d’élite totalisait 10 000 heures de pratique, le groupe moyen 8000 et le dernier 4000. Ericsson concluait en affirmant qu’aucun des étudiants du premier groupe ne possédait de « don » le dispensant de travailler.
D’autres études et examples ont par la suite confirmé que 10 000 heures était une bonne estimation de la quantité de pratique délibérée nécessaire pour devenir expert dans quelque domaine que ce soit (le sport en fait partie).
Mais au fait, qu’est ce que la pratique délibérée ? Une pratique délibérée reflète la qualité de toutes les heures d’entrainement qu’un athlète peut accomplir. Une pratique est dite délibérée, si elle inclut les 4 éléments suivants:
La nécessité d’être motivé à l’accomplissement de la tâche et à la recherche de performances.
La tâche à accomplir doit être choisie en fonction du niveau actuel de l’athlète.
L’athlète doit recevoir un feedback immédiat après avoir accompli la dite tâche (on peut imaginer alors que les athlètes évoluant dans des infrastructures modernes ont un avantage certain, je pense notamment aux capteurs de mouvements qui permettent de corriger le moindre petit défaut).
La tâche doit être répétée plusieurs fois (avec comme objectif de faire mieux à chaque fois).
Il est aussi important de souligner que la pratique délibérée n’est pas nécessairement agréable mais elle est indispensable lorsque l’on est en quête de résultats.
10 000 heures de pratique délibérée, voilà le secret des champions.
Plus haut je donnais l’exemple de l’équipe américaine de Basketball à qui tout réussissait lors de son match contre le Nigéria. Certes ils réussissent toujours en général, mais ce match là fut magique, ils ont quand même gagné en marquant 156 points ! Comme je le disais, tout avait l’air tellement simple, n’importe quel shoot tiré de n’importe quelle distance était systématiquement réussi ! Les joueurs étaient en grâce, ils étaient fluides. La Fluidité ou Flow peut être définie comme un état de grâce où on est tellement immergés dans l’accomplissement d’une tâche, que l’on perd complètement conscience de l’environnement qui nous entoure ainsi que de nos faits et gestes.
Voilà ce que nous entendons par expérience optimale. C’est ce que ressent le navigateur quand le vent fouette son visage,…, c’est le sentiment d’un parent au premier sourire de son enfant. Pareilles expériences intenses ne surviennent pas seulement lorsque les conditions externes sont favorables. Des survivants de camp de concentration se rappellent avoir vécu de riches et intenses expériences intérieures en réaction à des évènements aussi simples que le chant d’un oiseau [...]. Ces grands moments de la vie surviennent quand le corps ou l’esprit sont utilisés jusqu’à leurs limites dans un effort volontaire en vue de réaliser quelque chose de difficile et d’important. L’expérience optimale est donc quelque chose que l’on peut provoquer… Pour chacun, il y a des milliers de possibilités ou de défis susceptibles de favoriser le développement de soi (par l’expérience optimale).
Ces expériences sont souvent inattendues et spontanées et surviennent lorsque le sujet ne s’y attend pas. Elles provoquent un souvenir généralement inoubliable , donnent à l’intéressé la sensation d’un dépassement de soi, de transcendance, d’une non-séparation avec l’environnement.
Il cite également plusieurs récits d’athlètes ayant été dans la zone pendant un événement sportif important. Notamment Diane Roffe médaillée d’or aux JO d’hiver en 1994 qui affirmait qu’elle ne gardait pratiquement aucun souvenir de l’épreuve de descente à skis et qu’elle avait l’impression d’être une chute d’eau. Il cite également l’exemple d’écrivains, de chirurgiens, programmeurs ou encore de mathématiciens.
Dans l’état de fluidité, l’individu ne pense plus à lui même. Au lieu de se laisser envahir par une anxiété nerveuse , l’individu fluide est si absorbé par ce qu’il fait qu’il perd entièrement conscience de lui même et oublie les petits tracas de la vie quotidienne. En ce sens, dans ces moments-là, la personne est dépourvue d’ego. Paradoxalement, les gens en état de fluidité maîtrisent parfaitement ce qu’ils font, leurs réactions sont parfaitement adaptées aux besoins changeants de leur tâche. Et, bien qu’ils soient au sommet de leur performance, ils ne se demandent pas s’ils vont réussir ou échouer. C’est le pur plaisir de l’acte qui les motive.
La fluidité/flow est donc l’autre secret des champions. Bien entendu, on n’entre pas dans la zone systématiquement à chaque compétition. Cet état se mérite et pour l’atteindre, Christian Target dans son manuel de préparation mentale propose la formule suivante:
Par ailleurs, de par cette formule, on peut remarquer que sans avoir une bonne maitrise de sa discipline (acquise via une pratique délibérée) il est quasiment impossible d’atteindre cet état de Flow.
Bref, ce sujet m’intéressait particulièrement non pas que je sois sportif mais parce que je pratique aussi une discipline qui nécessite un haut niveau de concentration ainsi que de très longues heures de pratique délibérée afin d’être performant, à savoir: la programmation. Comment être dans la zone lorsque l’on programme est une tout autre histoire et dépasse le cadre de cet article.
En attendant, je me prépare à la finale du 100m en tant que téléspectateur en me demandant si le talentueux Usain Bolt (qui s’est, parait-il, moins bien entrainé pour ces JO qu’auparavant) confirmera son statut, ou si Johan Blake sera dans la zone pour battre l’homme le plus rapide du monde !
The other day I was working on one of my side projects written in Ruby on Rails, and I was in need of a gem (third party libraries are called gems in Ruby) for performing syntax highlighting. After a few seconds of research, I stumbled upon this page from The Ruby Toolbox which lists all the available gems for handling this particular task. That is clever! Now, whenever I need to do a task that I think could be better achieved using a gem, I just go to The Ruby Toolbox looking for the right category and I can see how good the community think the gem is and how many times it has been downloaded. Ultimately, in 5 mins I am able to pickup the right gem for the particular task that I am trying to achieve.
I want to build the same thing for Android! The reason for this is that I can’t think of any place where I can find a list of third party libraries targeting Android development. Of course, we have things like Android UI Patterns that list a fair amount of libraries but as its name suggests, it is only related to UI Patterns and nobody can contribute by suggesting new libraries, nor is it possible to rate those libraries.
As far as the requirements are concerned, the user should be able to:
Browse and download libraries by category (Barcodes scanning, In-App payement, Advertisement, Geolocation, UI Patterns, Social, Data Oriented libraries, Testing libraries etc.).
Rate and post feedbacks on any library.
Propose a new library.
But before I start working on this, I would like to get your feedbacks on this idea. There is also a fair amount of chance that this project does already exist in a way or another (even if I have done some research and haven’t found anything close to what I have just described).
Finally, I would like to know if there are people interested in joining me on this project. Two guys can do a better work than one guy, if only because they can bounce ideas off of each other. So if you are interested, I definitely want to talk to you!
That’s it! Looking forward to reading your comments on this!
The last few days, I have been busy coding an Android application called: Digikod. I am happy to announce, that the first version of this application is now published on the Market. So what does this application do? Let me answer through a serie of Q/A.
What is Digikod
Digikod is an application that helps you keep and organize all your Door-Lock Pin Codes in one place.
Why did you develop it?
These last weeks have been pretty intense in term of social interactions (= me going to other people’s houses a LOT) and I have to admit, although I am still very young, I have had some serious issues trying to memorize their building’s Door-Lock Pin Codes. And sometimes, when I was in front of the door I have had those moments where I asked myself: « Was it 4890B or 4890A or wait… may be it was 4590A… ». So this is my answer to this issue! We all have many codes to memorize (home, workplace, girlfriend, parents, gym etc.) and I hope this application will help you with that.
What are all the features of Digikod?
This is version 1.0, you can call it MVP (Minimum Viable Product) if you want, so it has the least amount of features:
You can add a Door-Lock Pin Code through a friendly user interface:
You can associate a location to your code:
- Finally, you can access the list of all your codes sorted by proximity:
That way, when you arrive at the given location you will be able to look quickly at the information that matters to you the most: the Door-Lock Pin Code of the door in front of you (Killer feature right?).
Are you going to add other features to this application?
Sure I’ll do, I have some ideas about some features I could add to this application. For instance:
Protect the codes by password. Although, I assume you are already protecting your phone against thiefs (with a lock pattern screen for instance), adding this feature could make sense.
Add a Widget which only shows the code of the nearest building.
Improve the friendliness of the app, by adding states to each button for instance (normal, focussed, pressed) .
Improve the navigability by adding an Up button to the ActionBar.
Interfacing this application with your contacts list.
How much time did you spend developing this?
I started it last week as a side project. I guess I have been able to code only 2 hours a night (even on the Week-Ends), so that’s about 15 hours at most.
What does Digikod mean?
The word Digikod comes from the french word Digicode which is a registered trademark for Door-Lock Pins. This trademark is owned by CDVI France, but apparently the guy who invented it is a french engineer whose name is: Bob Carrière.
Why is it only possible to enter one of the following characters: 0…9, A, B, #, * ?
Because I think those are enough (at least in France, I don’t know about other countries! Please let me know if you have special pads with other characters, I’ll add the possibility to type custom codes right away).
Did you do this alone?
As far as programming is concerned, yes. However, I’d like to thank Ghislaine Guerin for helping me with the design work. She provided a bunch of valuable resources and she made a lot of great suggestions on how the different screens should look like.
Where I can get it?
On the Android Market of course (it’s free!!), you can also grab it from this QR Code:
I have to say that I’m glad that I have been able to publish this app within a week. I developed it for myself because I really needed to keep all my Pin Codes in one place and now, I am sharing it for free in case someone else needs it.
Finally, if you download this application, I’d appreciate any comment/suggestion in order to make it better.
Earlier this morning I saw this tweet from the Google Nexus Twitter account:
Great news, since I own a Google Nexus S device. And instead of waiting for the update to be rolled out on my device over the air, I decided to install it myself. The update went fine, and after playing a bit with ICS I can now give you my first impressions on ICS.
First, I will start talking about what I didn’t like in ICS and then I’ll tell you about things that I liked.
What I didn’t like in ICS
The general experience feels laggy and slow (at least slower than what I was used to with Gingerbread). Everything takes a lot of time to load like on the native phone app. In order to confront my intuition against some real proof, I ran some benchmarks on Quandrant and Antutu and the results were disappointing.
The screenshots are explicit. The only satisfaction is probably on the 3D graphics performances and yes I have felt that as well while playing some 3d games (like Shine Runner).
Some of the games that used to work just fine before, are crashing now. Heavy Gunner 3D is an example of that. Oh and I also noticed that the force close dialog is no longer displayed when an app crashes.
The contacts page is ambiguous. I couldn’t find how to modify the information of any contact. Usually, a single press on any row would bring me to a detailed page where I could change the info of the contact. Now, a single press will just make the phone call.
Fun bug. Restart your phone in order to bring up the PIN code page. Start typing your code, but before pressing ok, turn your screen off. Now turn your screen on again and, tadaaa the code is now gone. These sort of bugs just don’t make the overall product look professional.
What I liked in ICS
The clear separation between widgets and apps on the menu page. I have to say, that on former versions of Android, I had a tendency to forget about widgets because they were hidden. Now that they are visible, I can see what applications have widgets and this will make me more of a widget guy.
The new notifications are gorgeous. First the drawer is now transparent, which gives us the possibility to keep a look on what is running behind.
To continue on the notifications, we can now delete them manually which was really missing before.
To finish on the notifications, I like that we can now read more about the content of the notifications. For instance, when you receive a new mail you will actually know who sent you that email and its title, right from the notifications tray.
Holding the home button, brings you a list of all the running apps. In order to kill one app, you only need to swipe it from left to right. Very useful. I can now delete Advanced Task Killer.
At last, it’s now possible to take screenshots right from the phone. All you need to do, is to hold the volum down button and the power button. Apparently that featured existed on some Galaxy phones but not on other devices.
Voice recognition works great. I just typed an entire email with it and it makes n0 mistakes. Also, it’s worth mentionning that the result of the recognition is dynamically shown on screen. This is huge.
Another sweet feature, is the possibility to group icons in folders on the home page. All you have to do, is to drag an icon and drop it into another icon to form a group. This feature is awesome. I can now organize my space more wisely.
Dragging apps from one screen to another on the home page, is easier.
This is subjective, but I find that the new animations are better. For instance the transition animations (when moving from one activity to another) are more… polished, less brutal. I also like the animation on the menu page, when swiping through the pages.
I also noticed, that the software buttons (back , search , menu and home) are not shown on the Nexus S, because it already has the physical ones. Smart.
The new font (called Roboto font) is very beautiful. It’s sharp and very pleasant to look at.
Ice Cream Sandwich has very nice new features that makes the life of Android users easier. However, I regret that it slowed down my Nexus S as shown on the different benchmarks that I ran. I also regret some bugs on apps that use to work well before (games, the photo app that crashed before the phone was plugged to my computer in storage mode etc.). I hope Google will do its best to fix all these issues as soon as possible. Finally, I have to say that I approve this update and I feel that once I will be used to all these changes, it will be hard for me to get back to older Android versions.
Recently a lot of hot mobile apps (both on iOS and Android) have been published by major Startups from the Silicon-Valley, like Flipboard, Path or Any.Do. What do these apps have in common? They all address a very saturated market, and their only way to shine is to differentiate themselves from other apps through excellence. An app that is excellent, is an app that is both beautiful and easy to use. It’s an app that makes you happy whenever you use it. It’s an app that has some magic inside its hat. Generally they all have that single feature that everyone is going to remember and talk about. Path has that beautiful and smooth animated radial menu and Flipboard is a piece of art, you can flip through the articles like a magazine, but vertically instead of horizontally in order to compensate the size of the screen on the iPhone that is smaller than the one on the iPad.
I have a confession though, I have been using Path for only 2 days. Why? Because I just don’t need it. Yes, I can survive without it since none of my friends are actually there and I, sincerely, don’t need another fuck**g social app. In fact Facebook/Twitter and may be Google+ cover all my social needs. But although I’m not using it, I have it still installed on my Nexus S because I often need to refer to it when talking about high quality apps (especially with clients).
On the other hand, I can see myself as a regular user of Flipboard because the app is useful (can’t say that I am a regular user, since I don’t own any iOS device yet).
The conclusion of this, is that building an excellent app in a saturated market, is only a necessary condition. Nothing more. So please, before building any app, question yourself about whether your app could be useful in any capacity. Yesterday, I have read an article written by yongfook titled: Design is Horseshit. I strongly recommend you to read it, basically he is saying that Startups should be focusing more on creating value than on creating something that is just beautiful. I couldn’t agree more with him, I think design became overhyped (especially since Steve Jobs’s death). Don’t get me wrong, I am not saying that having a good design isn’t important but if the product isn’t useful in the first place, then people will just toss it away. And if you show me two apps, one that is beautiful and useless and the other one that is ugly but useful, then I’ll go for the latter one on a regular basis (unless I find a suitable replacement for it by the way). This is best explained by this short clip from How I met your mother:
Basically Barney Stinson (What’s his job? Please!) stipulates that a girl is allowed to be Crazy, as long as she is equally Hot. I feel the same for apps. An app is allowed to be Ugly as long as it is equally Useful.
Actually, I think I’ll make my own theory here, by sorting apps on their hotness/ugliness and their usefulness/uselesness scale. To clarify, let’s consider this chart:
As you can see, I have listed a few apps that you probably all know. Among these apps, I am only using those that are situated on the right side of the chart. Path is freaking hot, but not that useful. Badoo is not only useless but I have found their Android app to be a horrible, horrible piece of shit! Consider Prixing, which is an app that allows you to compare prices and helps you find whether some food has any suspicious ingredient (that will hurt your body if you follow a special diet for instance). Well, Prixing is a good example of an app that is not hot (well to be honest, it’s not hot but the design is simple and intuitive which is all that counts at the end) but very useful. No matter how hot Path will become, I don’t see myself using it in the future. On the other hand, no matter how ugly and laggy Prixing will become, I will always keep it on my device. Why?Because I can’t live without it. Of course, if you succeed into building an app that is both beautiful and useful then you are doing great, keep it going.
But please, stop making only good looking apps and start making useful apps. My device needs them more.