What’s wrong with Milan’s Open Data initiative

I spent some time during the last weeks playing with the Open Data published by the City of Milan. I did not have a clear goal in mind, except for building some interesting visualization of the Public Transport coverage of the city grounds.

A quick exploration of the dataset seemed to be encouraging: while most of the data was relatively useless, some datasets were indeed promising and worth spending some time. While at the end of the week I was able to get the result I had in mind (the heatmap you can find in this post), I was left with that lingering feeling of dissatisfaction that accompanies me when I see good initiatives that can be dramatically improved by changing a few specific features. Continue reading What’s wrong with Milan’s Open Data initiative


Prettier source code on WordPress.com

Formatted source code

Posting source code on WordPress.com is quite simple: the platform already provides an extremely easy to use shortcode called sourcecode, based on a fairly flexible syntax highlighter plugin. By looking at the examples in the documentation page, however, it is evident that the default styling used to render sources is quite old-fashioned and does not fit most modern themes.

While the shortcode offers options to allow users to control many options of the rendering, it does not allow us to configure colors, fonts and size (the default size is so tiny that it is barely readable on high-resolution screens).

When I was writing the previous technical post, I did some investigations to figure out what options are available to post more readable sources if your blog is hosted on WordPress.com and I found out there are basically two alternatives.

Continue reading Prettier source code on WordPress.com

There is no such thing as Internet Security

During the course of the last months, we have seen frequent news of security breaches, with many websites falling victims of malicious attacks. While this by itself is not a news, the frequency and scale of this kind of attacks hardly passes without notice.

Sony’s example is probably the most visible example of this trend, as Kevin Mitnick points out.

But they are not the only ones: the attacks on Citigroup and security company RSA are even more alarming. If even those companies that should be dealing with security issues every day are not impenetrable, chances are everyone’s data is at risk. Or, at least, that’s the message that most of the newspapers appear to be conveying.

While it’s easy to dismiss those people as fools, those facts should teach us something different: there is no such thing as a secure system.

Continue reading There is no such thing as Internet Security

A bit of confusion around Google Bookmarks?

Let’s start with two quick facts:

1. Google recently refurbished Google Bookmarks (after neglecting them for a couple of years), giving them more importance in search and allowing us to share them with friends more easily.

2. Meanwhile, a different team (I guess), implemented Bookmark Sync from Chrome, a new features that synchronizes bookmarks with a Google account (quite handy when you routinely use Chrome on many computers). Those bookmarks end up in a read-only directory in your Google Docs space.

I’m now wondering: why do we have two different sets of entities, called bookmarks, that

  • share some similarities,
  • are stored in different places,
  • serve (slightly) different purposes,
  • have the same name.

Isn’t that confusing?

Are our passwords safe?

I can’t tell how many times I registered on a website since I started surfing the Internet, and I bet it’s the same for you. We’ve been through countless registration forms, and we had to choose a username/password pair for each of them.
But I, like the majority of you, tend to use the same credentials for more than one place, sometimes.

I know it’s a good practice to avoid using the same password for too many services but, hey, we’re human beings, and we’re not so good in remembering things. However, maybe I’d be more reluctant to use my favorite password (the one I use to register on countless websites) if I knew that it would end up in clear text on some database, where some malicious DBA can easily see it.

That’s why I think it would be better if registration forms included an indication (maybe just an icon) about whether the password you’ll supply will be encrypted before being stored on the website database.

Maybe times are not mature yet…

Bittorrent video streaming on Bitlet

We recently updated bitlet.org to add support for video streaming via bittorrent.

The applet allows you to watch videos while you are downloading them and doesn’t require the installation of any third party application, except for Java.

Although still experimental, you can try the new feature by visiting this page.

A new use for margins

While I still read books on my way to work, I recently started reading online articles and blog posts using my phone as well.

This morning, while I was reading a column on Alertbox on iPhone, I noticed with pleasure a small detail: the left and right margins of the page have more than a merely aesthetic purpose.

As anyone who ever used an iPhone will certainly know, you usually slide your thumb along one side of the screen to scroll the page you’re reading.

Now, look at the screenshot below (red margins were highlighted later): because of the empty space at the sides of the page users are able to scroll without hiding text under their fingers. That’s relevant if you have the habit of scrolling and reading at the same time. 😉

Alertbox, on the iPhone

I don’t know if Alertbox is styled like that by chance or by design, but I appreciate the result nonetheless.

As a side note: Alertbox is one of the most mobile-friendly websites I read. As such, it’s perfectly readable even on the small screen of my Nokia E71. 😉

Pagination directions

Although pagination is a widely diffused pattern, some times it can still be a bit confusing, when it comes to blogs.

Most blogs (and many news sites) have a couple of links at the bottom of the page, newer and older posts or articles. Of course, there are two opposite ways to arrange those links: put the newer link on the left and the older one on the right, or just the opposite. What I consider to be annoying (and confusing), is to find both alternatives used inconsistently across blogs and websites.

For example, the Google Blog puts the Newer Posts link on the left,

Google blog pagination links

while the Worpress Blog places Newer Entries » on the right

Wordpress blog paginationConfusing, isn’t it? What is the right way to show those links?

Pagination by itself is quite clear: most web users have long become accustomed to Google search results pagination,

Google search results paginationand Yahoo’s Design Patter Library states it clearly:

  • Present links in the following order: ‘Prev’, page links, ‘Next’.
  • Display a left arrow after the label ‘Prev’.
  • Display a right arrow before the label ‘Next’.

In other words, previous goes to the left, while next goes to the right.

The problem with blogs and articles is that it’s not clear what should we consider the “previous page”.

Is it the one with the older (previous) posts? Or, since articles are listed starting from the more recent ones, the page with the more recent posts?

I think any answer would be debatable, and that’s the source of all the confusion. What would you say?

Outsource your features!

A new trend is rising: applications which are not designed to fulfill some user’s needs but, rather, to provide some service to other web apps.

Until some time ago, if you were to design your own web app, you had to write the same code, with little to none variations, to deal with pretty common issues (i.e. login, user profiles, messaging and so on) every time. You had no choice but to reinvent the wheel each time. Over and over.

Now you have one more possibility: delegate your recurring, non-core (albeit relevant) functionalities to third party web applications, which are built to integrate easily with your own one.

This leaves you with a lot more time to focus on your core features, maximizing your effort. Think of it as code reuse, for web apps. 😉

I’m writing this post a few hours after adding support for user avatar images on Novlet, and I’m still surprised about how painless the process turned out to be.

Although I consider avatars a great addition to most account-enabled applications, we chose not to support them at the beginning because we considered them not to be that relevant for a web app centered upon creative writing. At least, not relevant enough with respect to the effort they required.

So, what made me change my mind?

Gravatar logo

The answer is, in just one word, Gravatar.

In short, Gravatar allows users to associate email addresses with avatar images, and allows application developers to access that images using the email address users registered with. Users have to set up their images just once, and any gravatar-enabled application will transparently use them.

Stop. Gravatar does just this. But it does it well: it took me a ridiculously small number of lines of code to set everything up, and it works like charm. (You should see the new avatars on Novlet.com when we finish polishing the details. 😛 )

Another example: BitLet’s feedback forum.

Originally, we used to gather feedback and suggestions from our users through email or via the blog. But the forum we created with UserVoice allows us to collect suggestions and manage them in an orderly and efficent way, and it took us just a few clicks to set it up.

Now you should understand why Bitlet’s blog is created with Blogger. And that’s why we plan to leverage Google Account Authentication and, eventually, all OpenID providers for our upcoming Secret Project™.

It’s a trade which benefits both users and developers: why not to take advantage from that?

In one of my previous posts I wrote about the potential of Facebook as an application platform. But with a family of interoperable and pluggable application services (or service applications 😛 ) which can be used as building blocks for our web apps, the Internet itself can become an even more powerful, open, platform, pushing the concept of mashup to a new frontier.

Connecting people

Conferences are great. Not just because you can (hopefully) learn a lot by attending, but also because they give you the chance to meet great people who share your interests and work on the same issues you’re facing.

Obviously, most of those desirable effects happen during, or maybe after the conferences themselves. (But it applies to conventions, meetings and the like.) Is that really the only option?

Some context: this month I’m flying to Amsterdam to attend User Experience 2008. I was thinking that I might end up sitting on the plane next to someone who’s going at the same conference. And we might not discover it until the first day of the conference, since the organizers did not provide attendees with any means to interact with each other.

Building an event on Facebook, a network on Ning, a group on LinkedIn are just some examples of what the organizers of an event can do to promote communications between participants. (For the less web 2.0 oriented, probably a plain forum or a mailing list would work more or less the same. 😛 )

Think about the benefits of allowing participants to interact before getting to the event. One among all: making a community out of an audience.

Perhaps Seth Godin is right, after all, when he gives so much emphasis to Tribes, and to the importance of building a community of connected people.