Future Internet: centralized or distributed?

I saw last evening the documentary “The Internet’s own boy”, about the life of Aaron Swartz. His life was very impressive, and it made me think more about the Internet and to its social value. That is still a work in progress, but I have some things to share.

I’ve struggled to understand the Internet for a very long time. This may sound very strange coming from a computer programmer, leading a team of people who develops web applications. So let me clarify: the technical part of the Internet is relatively easy to understand. There’s a lot of reading to do, and a lot of technicalities, but that’s the easy part.

The question I’ve struggled to answer is:

What is the core of the internet?

Continue reading “Future Internet: centralized or distributed?”

Grow Your Knowledge Processing Skills

The way the human brain works has interested to me ever since high school. It’s a fascinating topic, still linked to many mysteries and whose study will undoubtedly create astounding insights.

What seemed back then simply an intellectual interest has become much more than that. We’re living in the age of information that exposes us to more and more data, news and 140 characters blocks, instantly accessible through the internet. Knowing how the human brain works is important to navigate our world and our time, to make good decisions or at least to avoid common mistakes.

Continue reading “Grow Your Knowledge Processing Skills”

The Coderetreat Problem Is Not The Problem

It’s that time of year again. The time when passionate developers get together all over the world to learn from each other. It’s time for Global Day of Coderetreat!

Yet not everything is perfect. The main complain I hear from people attending Coderetreats, especially after a few of them, is that they get bored with Conway’s Game Of Life. I strongly believe that this issue comes from a misunderstanding of the coderetreat. And I have solutions for you.

But first…

The Problem Is Not Important

Coderetreats are about practicing skills. In order to practice, we need a problem and a set of constraints that push us outside the comfort zone, into the learning circle. If you know the problem by heart, great; try constraints you’ve never tried.

Continue reading “The Coderetreat Problem Is Not The Problem”

What Is Really TDD?

Every once in a while, I have conversations with people about what really is TDD. Since I built a certain knowledge on the topic in time not only by using it but also by explaining it to others, I decided to write this article that details my definite view on what TDD is. I hope you’ll find it useful.

Short Version

This is a long article. If you’re in a hurry,  this is the 5 minutes version:

Continue reading “What Is Really TDD?”

User-Centric Software Design

This is a long due blog post. I wrote it before the series of blog posts on Usable Software Design (first, second and third) but due to a strange series of events (including totally forgetting that I wrote it) is published after them. In a sense, the ideas from this blog post are superseded by the series on Usable Software Design. In many other senses, it contains a ton of background information useful to people who want to get a better grasp of Usable Software Design.

My recent blog post, “The craftsman I would like to be” generated interesting reactions both from people I know and from complete strangers. I’m glad to see that the software craftsmanship communities have reached the point where we can discuss such matters of high importance for the movement and for members such as myself.

I have to admit that I expected a bit of controversy when writing this post. After all, it’s still unclear in my mind and I’m proposing certain things that I know are impossible. That’s the point of an ideal, after all.

The Controversy

What I didn’t expect was the amount of controversy met by my views on software design. Here’s the story.

I proposed the topic called “What is good software design?” at the fishbowl session at SoCraTes UK, and I was lucky to have it picked by the majority of the participants. The discussion was very interesting and unexpected. Instead of talking about the things you would consider about software design (SOLID principles, design patterns, differences between the OO and functional paradigms etc), the discussion drifted towards the humanistic point of view on design.

“When is the last time you saw a software design that was not only useful, but amused you?”* was the (I assume) intentionally provocative statement that sparked the discussion. Continue reading “User-Centric Software Design”