19
Oct

Really Useful Hosted Services

I’ve compiled a quick list of some services we find very useful on a day-to-day basis in the never-ending quest to improve productivity. There were two basic criteria for inclusion:

  • It needs to be hosted - Making sure our own servers stay up is enough to worry about. Not having to worry about maintaining these is one less headache we need to think about. The fact that you can work from anywhere and some have mobile support is a bonus.
  • Focus on Simplicity - Most of the services listed below have a single function and performs that really well. None of them require a degree to operate so you can be productive with the right away which leaves more time to focus on your core business.

The services we find really useful in no particular order :

  • Blinksale - The easiest way to send invoices online
    • Blinksale generates really nice looking invoices in a snap. While the default templates are already quite styling you can design and add your templates by customizing the css. If you don’t need a full-blown accounting package Blinksale is ideal. Integrates with Basecamp.
  • time.onrails.org - Time tracking made easy
    • Makes tracking time on multiple projects a snap. Simple but very effective. There is integration into Blinksale for automatically generating invoices from within time.onrails.org. Unfortunately that integration is currently not working.
  • Basecamp - Get Projects Done
    • Simple but effective way to collaborate around projects. Works especially well for us working in a distributed environment. Integrates with Blinksale which is a bonus. The recent addition of “Open Bar” or support for OpenID means if you have multiple products and accounts with 37Signals you can now just sign-in once and have access to all of them.
  • Lighthouse - Beautifully simple issue tracking
    • As the name implies this is great looking service but it also backs up the looks with a really simple but effective issue tracker.
  • Highrise - Simple CRM
    • See at a glance the history of your interaction with a client. We just forward all communication to our drop-box at Highrise and its automatically tagged and assigned to the correct customer.
  • Google Apps - No hassle communication and collaboration tools
    • All the convenience of hosted email, calendaring, an office-suite and IM services without any of the hassle. This is probably the most useful and used service of the list. No spam, no backups, no upgrades, no hassles. With some of the best mobile applications to support it you don’t have to maintain something like an Exchange server to have instant access to your email, news and documents.
  • Pibb - Stay in the Loop
    • “Pibb combines the best features of instant messenger, chat, email, and bulletin boards.” 
    • A service we haven’t been using to it’s full potential and currently looking at introducing as a mechanism to improve communication between distributed team members by setting up private channels.
    • Also looks extremely useful for adding a feedback channel to your websites instead of having to rely on traditional forums.
    • From the ninjas at JanRain so it of-course supports only OpenID and rocks.

I probably left out a few but these were the ones that sprung to mind now. Any other suggestions for services that can make your life easier?

[?]
Share This
18
Oct

New Direction

While this blog have been very quiet the opposite was happening behind the scenes. So just a quick explanation, or excuse if you may, of why there has been no posts for the past month.

In September I left Red Five Labs with the intention to free up some time to pursue personal projects while doing some consulting work to keep the pots cooking. As things turned out free time was the last thing that happened and we got quite a bit more consulting work than I hoped for which left very little time for anything else.

At around the same time I got an opportunity to join a really great consulting team on a full-time basis and as the five folks that follow my Life feed or Twitter updates might know I initially accepted the offer and was going to join the company in November. But with business growing and more potential work on the horizon I had to make a tough decision and after lots of sleepless nights turned down the offer to instead focus on setting up a new, soon to be launched, company with my good friend Ernst Kuschke.

This new venture which combines our passion for technology and our love for social networking will also give us a vehicle to incubate and commercialize some new ideas we’ve been working on. We’ll be making a more formal announcement once the site is up, the admin sorted out and we’re ready to open our virtual doors for business.

[?]
Share This
29
Aug

Updated Identitude Site

After not having had too much time to work on Identitu.de the past two weeks I’ve finally got around to deploying an updated site. I’ll post a more comprehensive list of what has changed tomorrow morning but just thought I’d post a short notice that the new site is up and quickly high-light some changes (and bugs :)) that was introduced in this release before calling it a day.

  • The start of a more usable user interface. Still not much in terms of content but the new design lends itself better to adding content and more complex user interface components. The previous one font/size didn’t scale beyond one-liners :P
  • XFN/Attribute Exchange. The bulk of the work in this update went into a mechanism for allowing contact requests cross-network without disclosing email or personal information. I will explain the support for this in full detail in a separate post.
  • Initial work was done to allow external microformats links to be pulled into your profile and users will in future be able to provide these as part of their profile to Relying Parties via AX.
  • And lastly a fun addition was the ability to add and vote on new features ala Jyte so the most requested features are implemented first :)

If I’ve broken something that was previously working or there’s something that has never been working please let me know either through my blog or the Facebook forum for the application. I’d also be very interested if there is Relying Parties that doesn’t work with this server.

[?]
Share This
09
Aug

Minor Identitude Updates

I made two minor updates this evening to the Identitude OpenID Provider. These changes includes :

  • Added an option to always trust a site with your identity. Useful if you don’t want the extra confirmation every time your login to an OpenID site you frequently visit.
  • If a site uses the Simple Registration Extension it now shows which profile fields were requested. Additionally if they supplied a link to a privacy policy it is displayed as well.

The trusted sites were necessary for a pretty cool feature I’m working on which will allow verified messages to be delivered to your Facebook Inbox without having to disclose your email address.

For now I’m looking forward to a rock & roll long weekend at the “Oppikoppi” Music Festival and will resume that work next week :)

[?]
Share This
08
Aug

A Facebook OpenID Provider

Facebook, with their Facebook Platform, can’t really be classified as a walled garden anymore. They provide all the tools both for building Facebook applications that live on “the new internet” aka inside Facebook as well as for building your own applications that live out here on the traditional web but which has access to all the same information as their in-house cousins.This makes them the ideal candidate to see what would be involved in setting up an OpenID Provider that sources information from a social network.

As an initial prototype I’ve setup an Identity Provider (IP) called Identitu.de which act as an OpenID Server backed by your Facebook account and also as a source of XFN information built up from your Facebook network. (Refer to this figure and explanation for a more thorough OpenID walk-through).

In a traditional OpenID server setup the Identity Provider would require some form of authentication, be it a username/password or certificate or by some other means, to verify that you are in fact the owner of the URL you claim to be the owner of. Now with Identitude we offload the authentication to Facebook. So whenever we need to assert that you own your OpenID URL the same process you go through to login to Facebook is triggered. Except that you are also “logged in” to the Identitude application in the same way as you are logged in to all the other applications you’ve added to your Facebook profile.

Below is the steps for 1) Using Facebook as an OpenID Provider and 2) For OpenID users and Relying Parties to extract a XFN friends export from Facebook through the OpenID Provider:

Getting an OpenID:

  1. You visit Identitude (either online or by using the Facebook application)
  2. You “Claim” an OpenID URL. (This requires Facebook login so an URL can be associated with you in future interactions) The URL is in the form <yourname>.identitu.de and can be used wherever OpenID is supported.
  3. Sorted

Using this OpenID:

  1. Wherever you see the OpenID logo you can type in your OpenID URL to login instead of using an username or password. (Try www.jyte.com)
  2. After clicking on login you will be redirected to Identitude.
  3. Depending on whether you are logged in to Facebook you might get prompted to login to Facebook again. This is to verify that you are in fact the owner of the OpenID URL and to ensure no-one can spoof your identity or claim to be you.
  4. You will be prompted by Identitude whether or not you trust the site that you are logging in to.
  5. If you selected Yes in the previous step you are now successfully logged in to the 3rd party site.

Simple Registration Extensions:

Because just using an OpenID for logging in to sites very quickly becomes boring and I already have my basic details on my Facebook profile the next logical step was to add the Simple Registration Extensions. (An extension to the basic OpenID authentication process which allows you to provide the Relying Party with sufficient information to complete a basic registration form. Things like Full Name, a NickName, Sex, D.O.B etc)

Xhtml Friends Network and OpenID 2.0 Attribute Exchange

This is where things becomes more useful. The next logical step was to see how we can make more meaningful information like my relationships with people available to Relying Parties. The most commonly accepted format for this information seems to be the XFN format or “Xhtml Friends Network” format and it also seems to be the most popular suggestion on all recent posts on this subject. Basically it’s a basic modification to hyperlinks which adds meaning of the link or relationship between two people to the markup:

e.g. the link between myself and Thea can be marked up as :

<a href="http://theab.identitu.de/" rel=”sweetheart date met”>Thea Burger</a>

I’m not sure whether I like my relationship marked up as sweetheart/date but will leave it at that…

Here I had to make a couple of decisions. It can either be implemented as another simple extension where the link to my Facebook XFN markup is shared or I had to look at implementing the OpenID 2.0 Attribute Exchange Extension (AX). I went with the AX route as sharing something like an XFN link would mean agreeing on another form of verification and authorization as to who can access that URL and when etc etc. By using AX Identitude would be leveraging of an existing protocol which would be in keeping with the goal of creating a way of opening up social networks.

So provided your OpenID consumer site supports the OpenID 2.0 Draft specifications and AX the site can request his/her Facebook friends in XFN format by issuing an OpenID AX fetch_request message on the back of the authentication messages. (See the OpenID 2.0 Attribute Exchange Specification for more info on the protocol) :

openid.ns.ax=http://openid.net/srv/ax/1.0
openid.ax.mode=fetch_request
openid.ax.type.microformats.xfn=http://schematobedefined
# One of the following two options:
openid.ax.required=microformats.xfn
openid.ax.if_available=microformats.xfn

I haven’t specified a proper OpenID 2.0 AX defined type or schema url. For the interim to make it as easy as possible to consume I’m just returning the required markup in the specified field in an URI encoded format and POSTing it back using a form-redirect if the consumer supports the OpenID 2.0 protocol. (Most networks would be too big to try and squeeze into a query string anyways)

There is a test consumer which supports AX and OpenID 2.0 at http://identitu.de/test_auth/login. By checking the AX checkbox the consumer will use the OpenID 2.0 protocol and request a friends list from the OpenID Provider.

Some of the those steps go into a little more detail than necessary. An end-user would not need to understand or know this. He/she only needs to be familiar with the basic OpenID process. Existing Identity Providers MyOpenID, ClaimID and Verisign is already doing a good job of shielding end-users from the underlying complexities.

Privacy

The only information stored in the Identitude database is the Facebook UID used to map a Facebook user to an OpenID URL and a Facebook session identifier as required for integration into Facebook. All other information including relationships between users is discarded directly after use. You also only have access to information that your user would normally have access to through the Facebook interface. All interaction happens in the context of your user.

The only information supplied as part of the Simple Registration Extension is the First Name (NickName), Full Name, Time-Zone, Sex and Postal/ZIP code. Facebook don’t supply the email address so I’m generating a dummy address for now.

As part of the AX the only information from your friends list I supply is the Name and Surname and a relation as friend.

Planned Updates:

  • Verified Notifications. As we’re already generating a fake email address incoming email on those accounts can be filtered and only email from sites previously trusted by the user can be forwarded as Facebook notifications to the real user.
  • Only returning URLs for friends with known OpenIDs. For privacy reasons I don’t want to share a Facebook profile page or uid. This leaves a problem but also something that is a problem with XFN in general, how to identity or contact users. I’m leaning towards temporary OpenID urls for unknown users.
  • Proper OpenID 2.0 Protocol Support. The current implementation is very much a stab at let’s see what is involved with getting OpenID 2.0 running so I’m sure there is a 100 places where it either deviates or fall short of the specifications.
  • Proper OpenID 2.0 AX Support. At the moment there is not a proper type or schema for the information exchanged as part of the attribute exchange. Instead relying on the pseudo ax type openid.ax.type.microformats.xfn. To figure out what the best options here are.
  • Allowing users to specify different sources for different microformats.

Some useful links:

[?]
Share This
07
Aug

Social Networks vs Identity Providers

There’s been a lot of talk on the internet the past couple of months about the problems and challenges of Social Network Portability and the so-called walled gardens of the prominent players like Facebook and co. Most recently Wired’s “Slap in the Facebook” article and Plaxo’s Pulse announcement prompted a new flurry of activity around the subject of closed Social Networks.

This has been a very interesting subject for me for a while, and more recently comments on this post lead me to Uno’s blog where he has two posts, “Facebook is now the new OpenID” and “Facebook as an replacement for email and OpenID“. I agree with most of the points there including the fact that at the moment OpenID and microformats are still seen as too hard to use for average internet users. But at the same time I’m a little hesitant to entrust all my identity information to one provider.
I would like to be able to select and switch certain entities at will to be authoritative over certain aspects of my online identity. e.g. I would like to update my resume at LinkedIn, maintain my personal details, demographics and relationships at Facebook and have last.fm maintain my personal music preferences. I want to disclose at my discretion parts of my identity to services or sites as and when it makes sense or holds value to me. Applying for a job I’ll provide access to my hresume on LinkedIn and my personal information. Joining a new social network I might want to see who of my current “Facebook Friends” is already joined up and re-establish my relationships there by providing my friends in xfn format.

Currently we’ve got a situation where many sites are already making available this information. However there’s no standard way of exchanging or disclosing those links and information. ClaimID addresses part of the problem by creating your ClaimID/OpenID page and populating it with your complete “link identity”, bringing together all the links and relationships you claim and making it available with your OpenID. Provided you can authenticate with them and proof ownership of the OpenID it’s probably a safe assumption that you also own the verified links that form part of your identity page. Unfortunately from what I can see you can either make it available publicly or choose to keep it private. There’s no mechanism in place to selectively disclose subsets of your profile only to certain sites or split your identity up into different personas.

In this aspect it seems that continuing further down the OpenID path definitely seems to be the way to go for providing a workable solution to this problem. It’s an open standard, it provides means for identifying and authenticating people and it provides mechanisms for selectively exchanging metadata between you, the service you are signing up for and the source of that information. It’s also not centrally controlled by anyone in particular which makes it a particularly good option for weaving this social semantic thread into the internet.

While the large social networks are in the ideal position to act as these custodians for our personal information one can understand that they might be a little hesitant to share or open up what is essentially the core of what makes them successful. Watching the AlwaysOn Social Networking 3.0 panel the members came across as a little hesitant to openly discuss whether they are looking at opening up in future. Everyone knows it’s inevitable but no-one seems to be willing to make a statement on that.

While it would be great if one of them opened up there’s an important distinction to be made between social networks acting as Identity Providers and social networks opening up and and acting as a potential sources or keepers of your personal information. As mentioned earlier I would prefer it if my identity and specific aspects of it could be sourced from different locations which means I probably wouldn’t want a single social network to act as my sole Identity Provider as well. You would like to be able to swap your preferred social network without losing your identity.

This would mean services like Facebook making information available in a consistent manner to Identity Brokers or services which can act as custodians to these relationships and information and disclose or deny information based on user input. Basically acting as intermediaries between the source and consumers of your identity profile. It’s a tough problem and not something that is easily solved, even with protocols and standards like OpenID.

In my next post I’ll have a look at how feasible an OpenID provider would be that sources it’s information from one social network, Facebook.

[?]
Share This
07
Aug

Impersonation Failure Re(Railed)

After much deliberation I decided to split my personal blog into a separate domain away from my Impersonation Failure .NET blog. This is something I’ve been contemplating for a while and I hope to use this blog to post more Rails and general technology material that would not have been appropriate on my .NET blog. It doesn’t lessen my commitment to .NET, it’s still a platform I’m very passionate about but having a purely .NET focused blog often meant not writing as much about other matters of interest to me as I would’ve liked.

After much deliberation I decided to go the WordPress route. The two other contenders were Community Server, an ASP.NET based platform I’ve been using for years and is very comfortable with and Mephisto, a Rails based blogging/cms system. Since I’m keeping my .NET blogs which already runs on CS that left Mephisto and WordPress. Mephisto would be a great Rails learning tool but it’s not as widget or plug-in rich as it’s more famous PHP cousin and I know I would be fooling myself if I think I’ve got time or skills to just build the widgets as I need them.

So that left WordPress, the final clincher being the HemingwayEx theme. I’ve always been a little jealous of the quality and quantity of themes available on WordPress so now I finally have the excuse to try one :)

[?]
Share This




 

July 2008
M T W T F S S
« Oct    
 123456
78910111213
14151617181920
21222324252627
28293031  

Twitter Feed

Recently on Jyte


Close
E-mail It