The truth about your Facebook status updates

Development, Facebook September 3rd, 2010 @ 15:09

Yesterday night I went live with Status Analyzer, a small side project I’ve been working on this week.
The idea is simply to get an analysis of your Facebook status updates, to see if anyone actually care about what you’re writing.

I’m making use of the Facebook Graph API to collect the data.

The test only takes a few seconds to run, and you’re presented with some stats on reactions to your updates as well as a nice pie chart to visualize the ways people interact with your posts. And of course, you’ll get that final verdict on how interesting you actually are!
The analysis is based on your updates the past two weeks.

Apparently, "people like what I'm saying".

Do you have the guts to find out the truth about your status updates!? ;)

Save the world from the Vuvuzela invasion!

Development, Jadestone June 30th, 2010 @ 10:06

Jadestone – and myself – released a new iPhone/iPod touch game the other day. Vuvuzela Whacker is probably the most heralded game of the summer – a whac-a-mole style game where you score points by “whacking” football fans playing vuvuzelas! How can you NOT love that? :)

Whack those vuvuzela players!

From the press release that went out:

Vuvuzela Whacker is an action packed game for iPhone and iPod Touch. The goal is to save the world from the vuvuzela infestation by whacking as many vuvuzela players as possible in one minute. Tap away at the fans holding vuvuzelas – but avoid hitting the regular fans. There are zombies in the stands, too.

Vuvuzela Whacker features score multipliers, beautiful graphics and the ability to release frustration for TV viewers who’ve grown tired of the drone. For soccer fans, the pleasure of silencing a vuvuzela is equal to watching Lionel Messi attacking.

Vuvuzela Whacker users can show off the number of vuvuzelas they’ve silenced to their friends on Facebook. As the instrument’s at risk of being exported to the national championships as seasons begin in August, our goal is to have 1.000.000 vuvuzelas whacked before the end of the World Cup.

So help save the world and download Vuvuzela Whacker from App Store right away for only $0.99!

Trying Google Web Toolkit again – and liking it

Development, JavaScript January 11th, 2010 @ 11:01

A while back, I tried out Google Web Toolkit to see if it was any interesting. My main concerns after that early glance was the stability of the applications and the possibilities to mix GWT code with plain JavaScript code.

Giving it another stab

I decided to give it another go last week, when re-building the mixtape interface for my side project Spotiseek. A few things led me to creating an “Ajax” application with GWT:

  • quite a few requests are required to present the view – I needed the requests to be cached in the client to reduce the server load
  • I needed an application built on stable and easily maintainable code
  • I figured it would be a good chance to learn more about GWT
Spotiseek Mixtape based on Coldplay

Spotiseek Mixtape interface

Drawing some conclusions

After completing the first release of the new interface, I feel confident enough to draw a few conclusions:

Positive: It’s Java!

When looking to write stable and easily maintained code, I really can’t find any better candidate than Java. Since I’ve been working with Java for a number of years, I’m of course very comfortable with developing GWT apps.
The syntax is nice and clean and of course the magic of the fantastic IntellJ IDEA is indispensible.

Positive: It does what I want it do do

It might appear a ridiculuous header, but I have to say it’s very easy to create widgets that does exactly what you want. There’s little confusion on how to actually construct the application.

Negative: Problematic project setup in the IDE

Even though IntelliJ is a fantastic IDE, there’s appearantly some improvements that could be made to the setting up of GWT projects.

Just setting up a GWT project is not a huge matter, but trying to add a GWT project module to an existing web project was a lot of hassle. There was a lot of problems getting the built-in build/make process to put the files in the right place etc.

Negative: Surprisingly poor community support

I honestly thought that the usage of GWT would be more widely spread across the internet. But when I – from time to time – got stuck with an issue, there wasn’t really that much help from Googling.

There are of course a few good forums and such where many questions are answered, but unfortunately not the answers I was looking for. I had to dig deeper in the Google documents in  order to get enough info to draw my own conclusions.

EDIT: One nice resource I’ve found is Matt Raible’s blog.

Maybe it’s not inadequate for most issues, but I had expected more…

(Sort of) Negative : Building everything from scratch

Usually, you try to mix as much HTML and JavaScript as possible in order to write code more efficiently. Building it all up from scratch is often a quite expensive process and rarely gives you the most maintainable code.

But with GWT I didn’t really see any way of not building everything from scratch. Partly because it’s very easy to do so, but also because I didn’t find any good way of reusing existing HTML components.

I’m not sure it’s a true negative having to build everything from scratch, but it requires a somewhat different approach than you might be used to.

To sum it up…

Even though there was a few problems during the development, I’m glad I chose to develop the application in GWT. It’s resulted in a nice (enough) application, built on code that is stable and easy to maintain.

Also, I’ve learned a lot about GWT development and will have no problems going forward with the development.

(Apart from the conclusions I’ve drawn, there’s of course a bunch of positives that comes with developing GWT applications. )

Maybe not suitable for all products

As I’ve stated before, I still feel that you should always consider if GWT is the best approach for your particular application.
I guess a certain amount of complexity is required, as it’s probably more tedious to write GWT Java code than regular JavaScript. If you’re going to develop a small-sized application, you’re probably best of doing it the old fashion way.

SEO issues with JavaScript applications

Of course, there are some issues with building your applications in JavaScript. One of them being the drawback in Search Engine Optimization (SEO), as your content is hidden from the indexing robots.
I know Google have proposed a new standard for specifying JavaScript content, in order to make the robots understand how to activate the content. But we’ll see what happens there…

Find new Spotify music with Spotiseek

Miscellaneous December 26th, 2009 @ 13:12

I figured I should start a small development project on the side, just for fun and learning. It resulted in Spotiseek – a tool for finding new music for Spotify.

The concept is pretty straightforward – enter the name of an artist you like, and get a playlist ready to be used in Spotify!

You should check it out if you like Spotify and want to find some new music. I’d love to get some feedback and suggestions as well!

Google Analytics setVar() deprecated and replaced by setCustomVar()

Other December 7th, 2009 @ 15:12

For a while, there’s been a possibility to separate your users in various segments in Google Analytics, by setting a (single) variable in the Analytics cookie, for example:

pageTracker._setVar("member-premium-true");

Earlier this year, Google introduced the neat possibility to use multiple custom variables, allowing more customization and flexibility. You are allowed to use five slots (1-5) and set a name, value and scope to your variable.
The old setVar method has been deprecated and replaced by the new setCustomVar:

pageTracker._setCustomVar(
      1,                // This custom var is set to slot #1
      "Member Type",    // The name of the custom variable
      "Premium",        // The value of the custom variable
      1                 // Sets the scope to visitor-level
 );
pageTracker._trackPageview();

This isn’t really news, but it wasn’t obvious what had happened by just looking at the Google Analytics API docs, so I thought I’d mention it here just to “spread the word”.

<script type="text/javascript">
				pageTracker._setVar('member-premium-true');
			</script>

The one essential Agile ingredient

Other November 8th, 2009 @ 13:11

I just read a great article, summarized over at InfoQ, about Agile development.

I think Mark W Schumann is spot-on with his formulations on what you have to understand and accept in order to be successful with agile development.

Pairing is important, but it’s more important that you’re happy to be corrected a couple dozen times a day. Test-driven development is useful, but it’s more useful to imagine a hundred ways something can go wrong. Stand-up meetings can be effective, but the trust in your colleagues that frees you to do your own thing makes them really effective.

It’s all about being humble and accepting the fact that you just don’t know everything at the start of a project, a task or whatever.

… there has to be an attitude in middle-to-senior management that they don’t know everything, that some things aren’t amenable to control, that surprise is something that should be expected. You have to trust your teams, even when they don’t deliver the results you expect. You have to imagine more than one possible outcome.

Really recommend reading the post, no matter if you’re a developer or a manager.

Presentation: How to go from Flash to Flex development and why

Flash & Flex October 16th, 2009 @ 15:10

I’ve conducted a small study recently, trying to figure out if we could evolve in our Flash RIA development somehow. I’ve read and experimented a lot with Flex, MXML and related tools to see if we’re missing something (we’re not using it very much today).

It’s not that we’re unhappy with how things are done now, but with the new Flex 4 and everything associated to it, I’ve felt that there’s an opportunity to make some improvements to our workflow.

Summing it up

As presented below, there are a few conclusions to be drawn here, for example:

  • Flex 4 seems to be a really nice upgrade and probably something you can’t ignore in the end.
  • There’s little information on the web about development of large Flash/RIA applications (like those we do). Pretty much all focus is on Flex development of small-to-medium sized applications. I’m not to speculate on the reasons why no one is spreading the word, but hope that my work can shed some light on the area.
  • There’s a lot of fuzz around the Adobe products in general and Flex in particular. Very few seem to have any criticism at all when it comes to Flex, which is a bit disturbing, as nothing that looks too good to be true ever is. But maybe I’ve just been looking at the wrong side of the web? Just a reflection…

Presentation of findings

I held an in-house presentation on my findings yesterday, and I thought I’d better share it with the world (= your favourite search engine). I’ve stripped it down a bit, as there were some company specific things in there, but most of it is free for everyone to read.

A few things to consider before jumping in, though:

  • This is a PowerPoint (well, OpenOffice actually) slide with notes. There was lots said when presenting each slide, so I can’t guarantee that you’ll learn everything I said. I understand this is not perfect, but figured that it’s better to upload this than nothing.
  • It’s just plain slides with notes, really. I did have some imagery in the original slides, but left it out as it’s probably only needed as “distraction” when viewed on a large screen with me talking next to it. So don’t get mad if it’s boring!
  • The plan wasn’t actually to hold an in-house presentation, but I figured it was a good idea. So the format on which it is presented may or may not be optimal, as it’s pretty much been summarized as I’ve went along. It could be a good idea to shape it up and make it a bit better, but at the moment, it’s more important just getting it “out there”.

The presentation itself

With that having been said – and my back having been covered ;-) – here it is (also available as a PDF):

[gview file="http://blog.sommestad.net/wp-content/2009/10/Catching_up_with_Flex_public.pdf" width=538]

EDIT: Also added the presentation to SlideShare.

CSS compatibility in Internet Explorer 6, 7 and 8

Browser Compatibility October 14th, 2009 @ 13:10

I just came across this article in Smashing Magazine about the CSS differences in Internet Explorer 6, 7 & 8.

Nothing new really, but a good summary of what works and what doesn’t. The consensus is of course that you have to be aware of that IE6 pretty much can’t handle anything, so we’re still bound to write old code to be compatible with it. Sad but true!

Solving issues with showFeedDialog in Facebook Applications

Facebook October 5th, 2009 @ 11:10

Damn, it’s annoying when you get stuck at a single point in development.

When continuing development of an Facebook Iframe application, I got stuck when trying to implement the showFeedDialog feature. For some reason, I couldn’t get the feed form dialog to show, even though I had configured the initialization properly and was using the correct methods and syntax.

I read through the extensive (and inconsistent thus confusing) Facebook developers’ documentation, but couldn’t really find anything to help me. I’ve probably tried all of the various ways to initialize the app and use the API by now, and also tried to use streamPublish instead.
Also, the return values from the API insinuated that the dialog should actually be displayed (returned true when invoking the method).

Back to basics

So I figured it’s best to go back to the basic levels and read through the Getting started docs. And there it was. In a screenshot of the application settings, I noticed that they’d specified the Connect URL and set it to the same as the canvas URL. That’s the one thing I’d missed!
I guess the problem was that I didn’t see this as a Connect application, as it’s running in an Iframe.
But anyway, setting the connect url solved the problem and the feed dialogs popped up as intended!

Confusing Wiki docs

The Facebook developers’ wiki is full of (useful) information, but it seems like it’s got lots of counter-information with different ways of using their implementation. It gets confusing quickly and is quite hard to troubleshoot. I hope they manage to sort it out some day…

Interesting tool for comparing browser versions

Browser Compatibility September 24th, 2009 @ 14:09

I stumbled upon Expression SuperPreview, a really neat tool for comparing different versions of web pages.

It basically lets you enter the URL (local or public) of  a web page, and allow you to compare images of different browser versions. Compard to other tools, like BrowserShots, it’s got the handy addition to also inspect and compare DOM elements in the views.

Slim & Free or Fat & Premium

There’s a free, slimmed version available for Internet Explorer (6+) comparisons and a “premium” version included in Expression Web, where you can compare with Firefox and other browsers you may have installed. The premium version is available as a 60-day trial, and the licence is priced at $149 USD, which could prove to be money well spent.

I usually test my apps in IETester and on a virtual machine, but I’ve downloaded the 60-day trial of SuperPreview and will give it a go.