First time here? You are looking at the most recent posts. You may also want to check out older archives or the tag cloud. Please leave a comment, ask a question and consider subscribing to the latest posts via RSS. Thank you for visiting! (hide this)

November 2009 Blog Posts

Why SketchFlow is not a mockup software

After almost one year of using Balsamiq I decided to give Blend SketchFlow a try. After using it in one project, I realized it’s not a sketching/mockup tool. And here I’m telling you why.

My definition of a sketching/mockup tool

I think a sketching/mockup tool should be a replacement for sketching on paper. It should allow you to “draw” lines, add a textbox and some text, without thinking too much about alignments and about how you will “implement” UI element in the real application. And must have a quick way to include common UI elements like windows, dropdown, tabs, grids and so on.

Test-driving SketchFlow

SketchFlow could be improved in many ways, but there is one main point that would probably need a more high-level rethinking: it’s not intuitive and forces you to think too much about how the design will be implemented. But let’s look at it in detail:

New Project window: SL or WPF?

First thing I didn’t like is the “New Project” window: why do I’ve to choose between a Silverlight and WPF application? What if I want to prototype a web application?

You have WPF/SL Controls

There is only a very small selection of sketch components and for most of the complex UI elements you either have to design them with lines and rectangles, or have to use the standard SL/WPF controls. For example you have to use a DataGrid if you want to display a table with data. Or the calendar, the canvas layout, the stack panel, the grid layout and so on. This is a problem because it forces you to think in terms of controls rather then in terms of sketches.

You need to understand data binding

If you want to add text to a list, a combo or the aforementioned data grid, you have to understand data binding: add a sample data source, bind it to the UI element and configure the visualization options.

Default style is not a sketching style

One last point is that I would have expected to have the sketch style (the wiggling stroke) by default. But the default style is the standard WPF/SL one. To get the correct style you have to click on the tiny little arrow button and choose from the big list of controls.

Advanced animation

With SketchFlow you can do fancy animations or state transitions, but I don’t think this increased power will be used by interaction designers and by UI experts. And since these advanced features must be developed with code (or by dragging behaviors) I think they are just adding complexity if you all you want is a sketch of your application.

Wrapping up

Probably I was using SketchFlow for the wrong purpose, but it seems to me like a tool for prototyping the UI of a WPF/SL application rather then a general purpose sketching application.

After using SketchFlow in this project I think I’ll never use it for sketching web applications again. Probably I’ll use it when I’ll need to design a WPF/SL app, but not for web apps. I’ll stick to Balsamiq for now.

What can Balsamiq learn from SketchFlow

But not everything that SketchFlow has is bad. It also has some interesting features that I’d love to see also in Balsamiq:

  • the navigation tree that makes very easy to create the “flow” of the application (Peldi says they are working on it)
  • the possibility to “componentize” some parts of the sketch, like a navigation bar that is the same in every screen (There is a lot of talking on this in Balsamiq forums)

Exporting a Balsamiq sketch to a player

Another feature of SketchFlow that I now I want so badly with Balsamiq is the possibility to export a “playable” version of the sketches for sharing with stakeholders. And you can do it now using Napkee, a very nice AIR application that can export Balsamiq projects to both Flex or HTML/CSS/JS.  There are also other opensource tools to export to various other formats.

Server migration to LinkedLabs completed

As you might have read yesterday, this weekend I moved my blog from WebHost4Life to LinkedLabs, the hosting company managed by Ken Robertson, a Senior Software Developer at Tellingent. And if you are reading this post it means the DNS transition is complete.

I decided to move away from WH4L not because I had performance problems or poor customer support (which IMHO is great), but because I needed to manage and host more websites (small ones), and this was not possible on WH4L without paying a yearly additional fee of 20$ per web application. I used to run these small sites on DotNetNuke, with which you can have just one web application with many different domains, but running, patching, updating an application like DNN for running a few kind-of static websites was overkill for me. With the solution provided by LinkedLabs I can run as many web applications as I need, without paying additional fees: the yearly fee is higher, but with the number of sites I've to run the overall cost will be lower. Another reason is that now I've a more granular control on IIS, I'll have IIS7 and SQL Server 2008, while with WH4L I was still on IIS6 and SQL Server 2000. And the last reason is that the VPS solutions offered by LinkedLabs seem better than the ones offered by WH4L, and as the traffic on my blog grows, I'll eventually have to upgrade to this more powerful solution.

Now I hope the performances and the support of LinkedLabs will be the same of WH4L.

I'm on a shared hosting, but LinkedLabs is now selling only VPS (I bought the service more than one year ago when he was still selling this solution). You can read about LinkedLabs offering from Ken's website: Awesome virtual server hosting

5th Italian ALT.NET Conference (winter edition)

GetFile Keeping the usual half-yearly pace (one in winter and one in summer), the 5th Italian ALT.NET Conference will take in Milano, Saturday January 23rd 2010, kindly hosted by Avanade.

It will be a openspace conference (like all the previous ones) and this time we will have all the 9th floor of the building: this means we will have rooms for 4 concurrent tracks, and room for more than 100 people.

We are heading for at least 15 sessions so, if you want to propose something, please do it by sending an email to cfp@ugialt.net. Session in English also are accepted.

What we are going to discuss

We have 4 session proposal so far, and other people (also from outside Italy) committed to propose other sessions.

Topics we are going to discuss are:

  • Distributed Source Control (git, mercurial)
  • Relational Databases are still alive despite the NoSql-like databases
  • TFS 2010 for Agile
  • Domain Validation: how and why
  • MonoTouch
  • Frontend development best practices (CSS, HTML, JS)
  • jQuery
  • UI and UX
  • a case study of the refactoring for a legacy application
  • and more

Registration

The registration will open exactly 2 months before the keynote of the Conference: Monday November 23rd at 10:00AM CET.

I’ll post an update with the URL for the registration a few days before it opens so that you can be on time and register before it closes.

Twittering about the conference

And last but not least, the official hashtag if you want to tweet about it is #ugialtnetconf, and I’ll post update using this tag.

Entering my 3rd year at Avanade

On November 12nd, 2007 I started working in Avanade Italy. And today, November 12nd, 2009, it’s exactly two years I’m working here.

One year ago I already wrote about my first year, and this second year didn’t change opinion about the company: it’s a great place to work, with both tech and soft skills training provided, with the CTO caring about technology (something that should happen everywhere but unfortunately never happened in my previous jobs) and with an overall family environment despite being a 400 persons company.

Unfortunately, due to both the current economic situation and to the general approach to the Internet in Italy, I was not able to do web development since I came over to Avanade Italy. I went on doing team leading as the previous year, and mentoring junior developers on best practices and writing code of quality. Not exactly my favorite kind of job, but still something I like to do. And hopefully “the public internet” will pick up in Italy as well, and I’ll start doing some web development on B2C sites soon.

And now, let’s move on to the 3rd year.

Picture "Smarties: The Fountain” by gadl on Flickr

Does Twitter Lists need Twitter Topics?

Last week Twitter pushed the new feature of Twitter List to everyone. But after few days of using it and from comments of other users I’m seeing some fallacies of the feature.

Here are some of them:

  • why am messages from people I follow and are in a list appear twice?
  • what is the difference between following someone and following a list he/she is part of?
  • if someone did a “asp-net-mvc” list, why is he getting also my tweets about my tweets about my trekking?

The first is probably a bug that, sooner or later, will be fixed, but the other two are conceptual problems that are not that easy to be fixed.

My solution is Twitter Topics. And I envision it that way:

  • Everyone declares the topics he plans to tweet about (I’d probably declare aspnetmvc, .net, outdoors and everything else)
  • When a user adds someone to a list he decides which topic he wants to bind to the list
  • Each tweet contains a tag with the “official” topic the used announced (or a new metadata could be added to the tweet to avoid stealing useful characters)

I know this sounds a bit complex, and depends too much on users adding a tag for the topic, but I think this is the only way to solve the fallacies I see on Twitter Lists.

  • It makes clearer the differences between following someone and adding him in a list (if you want to get all the tweets you follow, otherwise you add to list)
  • You get only tweets about the topic of your list.

And this is not very complex to implement. It can be accomplished by adding a filter in the list, and by asking everyone to list the topics they tweet about.

Another solution could be filtering on the usual hashtags, but I think that asking to users the tags that are going to use (and on which they want to be filtered on), will make them stick to their tags instead of using different variations (for example #aspnetmvc,#asp.net-mvc, #asp-net-mvc)

What do you think? Are you using lists? Did you find the same problems I did? What do you think about this possible solution? Please, write your ideas in the comment section below.

StackOverflow DevDays in London

Last Wednesday I was at the StackOverflow DevDays event in London (and the AltNetBeers afterward), and finally this weekend I was able to collect my thoughts and find the time to write my review.

In 30 seconds

If I had to sum it up one sentence I’d say that DevDays was a quick overview of the “cool” technologies of the moment, all at a pretty basic level. And since I didn’t know most of them if found the event useful and worth the 99€ of the price and the effort to take the plane and come to London.

If you want more details

It all started with a pretty entertaining and inspiring talk by Joel Spolsky: whether you like his approach to development or not, you cannot say that this guy cannot speak. His keynote was about simplicity in software applications and definitely left something to think about.

Python

Then came Python, and Michael Sparks explained how the spell check algorithm of Google works: it is done with Python, and it’s just 10 lines (and if 10 was not the correct number, something around that size) of Python code. I didn’t care a lot about Python, and the speech was not that great (partially due to a low volume).

Android

After the break (I headed to a nearby cafè because the queue at the catering was too long) and a sales talk about FogBugz, it came the first of the three overviews of the mobile development SDKs: Android.
It was definitely boring, more a marketing talk than something to make you (as a developer) want to try and build something for it. This also probably caused by both a blurred screen with small characters and very low volume of the voice coming from Reto Meir mic.

jQuery

The one presented by Remy Sharp is definitely the best talk of the morning. I already knew jQuery (even if I don’t consider myself an expert), but got a lot from his presentation which was well organized, with a lot of samples, that was both entertaining and rich of contents. It also showed one of the new features of jQuery, the live method. Big thumb up to Remy Sharp.

Jeff Atwood’s talk: good developers are good communicators

After lunch we had Joel trying to sell something again: this time it was the hosted version of StackOverflow, stackexchange.com and a bunch of new “produces” that StackOverflow is adding. Then a great talk by Jeff Atwood, about StackOverflow, the reasons behind the project and a inspiring discussion about how being a good writer and communicator makes you a better developer.
They are exactly the same reasons why I decided to start writing this blog and one of the reasons why I wrote my book: when you have to ask for help on a forum, you want to write a technical blog post or are trying to explain a concept inside a book, you have to think about what you have to communicate and make it clearer into your mind. Otherwise the people that are going to read your question will not understand your problem, or will not understand your idea and thoughts, and the readers of your book will not learn what you wanted to tell them. And all this additional “thinking” will make you understand the problem better, and thus, become a better developer.
Probably this was the main takeaway of the day.

iPhone

The second mobile SDK was the iPhone. I already developed an iPhone application, but the introduction Phil Nash did about Objective-C is what I would have wanted when I started developing with the iPhone: explained all the single concepts in a very clear way. And if you didn’t attend, the slides are available on his blog.

Jon Skeet meta talk

And then Jon Skeet came: together with Tony the Pony, a jr developer that doesn’t know anything about the basic concepts behind numerics, strings and dates manipulation and localization. He reminded us that localization is a very complex topic: you have different charsets, you have Unicode, you have timezones, you have different formats to represent dates with strings. But it’s no point taking everything in consideration if you are developing an intranet or application that will only be used in your country. But remember that there are all these problems that you will have to address if you are going to build an application that is going to be used in countries with different timezone, formats and charsets.

Nokia Qt

The third (and last) mobile SDK was Qt of Nokia. It was mostly a marketing talk, but Pekka Kosonen was very amusing. I don’t think I’ll ever have to write an application for a Nokia (I don’t want to get my hands wet with C++ again), but I really liked the way he described the SDK, even if he might have done better with the demos. The slides are already available online.

Scripting Languages

The “academic” talk was something I didn’t expect much from: but Paul really beat my expectations. He explained why scripting languages (or better, why script interpreters) suck so badly when it come to performances and that they cannot do nothing to solve the problem because otherwise they would break all the parsers of the given language. And the slides are online as well.

Yahoo Developer Tools

And the last talk was about the Yahoo Developer Tools: the Christian Heilmann (actually I think he is heavy-metal rock star from the ’80s rather then a developer) explained about the YUI CSS and then he showed YQL in action: and YQL is the second great takeaway of the day. I never used it, actually I even never heard about it before, but seems to be a great way to build serverside mashups, by querying various APIs (Flickr, Google, Yahoo, Facebook, Twitter) and even screenscraping “normal” HTML pages. And his slides and demo are available online.

The organization

Let’s talk a bit about the venue, the organization and the side-services.
The venue was big enough for everybody, but the audio/video system had some problems: the screen was a bit blurry and the audio, especially the one from the speaking position on the left, was too low. Then there was the catering: once you got to it, it was great (Lasagne FTW!), but there was only one desk, and it took the full one hour lunch break to serve everybody. Maybe, next time, have two or three serving desks instead of one.

And one last big win for this event, and probably unexpected also for the organizers, is the WiFi: it worked all the day, with 900 people connected in the same room, with just a few reconnects needed. Too bad the batteries of my iPhone died before the end of the conference.

Wrapping up

Collecting my thoughts:

  • Memorable
    • Jeff Atwood’s talk about social skill for developers
    • YQL
    • Scripting Languages
    • Jon Skeet
    • WiFi
  • Neutral
    • jQuery
    • iPhone
    • Nokia Qt
    • KeyNote
    • Venue
  • Bad
    • Android
    • Python
    • Joel’s sales talks
    • Lunch/Catering
    • Audio/Video

Not everything was good, but I had some topics that I consider worth studying more (YQL for sure). And if they keep the same price, I’ll definitely come again next year.