True Measure of Code Quality
26 Feb 2008 - permalink
Too good not to post, I found this gem on OSNews FocusShift comic strip page. Brilliant!
26 Feb 2008 - permalink
Too good not to post, I found this gem on OSNews FocusShift comic strip page. Brilliant!
18 Jan 2008 - permalink
My last two posts have been about opening the social web and I am obviously not alone in thinking greater interoperability would benefit providers and users alike. The net is buzzing with initiatives for opening the social graph and one of the most promising is the Dataportability Workgroup.
This brilliant video explains why data portability matters:
1 Dec 2007 - permalink
Aggregating content from a variety of sources through APIs is just a small part of the task of opening the web. While it allows me (the user) to present my online activities where I choose, it lacks the social relations.
There are currently hundreds if not thousands of takes on the social net and some of them take a more open approach than others. I recently re-discovered Plaxo, a site that first set out to keep your address book up to date and know includes a mashup timeline of user’s online events on other sites. My main gripe is that it requires registration to see the profiles. A site like SecondBrain is closer to what I want (and been building on this site): A public stream of activities that I’ve chosen to share with the world.
Though many sites allow for importing contacts from other sites like Gmail, LinkedIn, finding people you know is very much a manual and tedious process. How can the social relations be implemented in an open way re-using as much as possible of what is already out there and in a format that is readable by a computer?
Using the markup defined by XFN to add relationship information to hyperlinks, it is easy to see how one could build a parser to find these tags and build a social graph, one node at a time. Tagging urls as me
, I could easily list urls to various sites I use and by doing so provide further data to the parser.
Aggregating personal data from your own sources and making it available in a standard format (RSS or some other XML/* structure) makes it possible for software (and users of it) to stay updated. Marking a link to a person (in the form of a website) as friend/family using the XFN markup would allow for certain types of data to be made available only to those relations. Best of all this could happen automatically. Brian Suda wrote an article on portable networks, touching on many of the same subjects.
Using OpenID could be a way of establishing a standardized (but distributed and open) identity online. In fact, it seems this is what ClaimID is all about, a site I’ve just discovered. Another very interesting project is the NoseRub protocol, an open source (MIT license) decentralized social network (also recently discovered and very similar in approach to my ideas). See also the wiki on open networking on the Microformats homepage.
I believe the combination of these existing technologies provides very promising tools of realizing the open social network, free of commercial interests and without giving away more control than absolutely necessary to make it all work. It would also seem that I either need to write a lot faster or seriously get involved in some of these projects as I discover tens of interesting resources, ideas and thoughts on the topic just be researching for these articles. Brilliant!
23 Nov 2007 - permalink
In a continuous effort to leverage the power of other sites like Flickr, I’ve integrated my Flickr photos in the blog list. Somewhat related to my thoughts on social networks and putting your content online, it is an example of pulling my data from a variety of sources and displaying them where I choose, here. It is also reminiscent of the mini feed on facebook.
Apart from spending time thinking about what I wanted, the programming didn’t take long - in great deal thanks to Zend Framework. It is my personal mashup.
I realize that most of this has already been done by software such as WordPress through it’s plugin architecture. It requires knowledge of programming and it does not include the crucial element of the social graph.
Grabbing updates from friends, however, would simply be a matter of changing the urls of the various services. As such it illustrates one of my key arguments against Facebook: The fact that Facebook is a walled garden, accessible only to members, prevents me from accessing from outside information about friends (or myself) from that small part of the internet.
Now, to solve the social graph problem…
20 Nov 2007 - permalink
Believe I just found a gem in the Database Browser bundled with TextMate! Substantially improved since I last played with it (appears to have been updated in July), it allows me to browse my local MySQL installation, looking up a table structure, browsing content or even running queries directly from my text editor.
It’s not phpMyAdmin but it is definitely a context switch less in many development situations. Brilliant and - in another example of the genius TextMate is - right at my fingertips.
12 Nov 2007 - permalink
Having used 10.5 for about two weeks I must say I am very impressed. There are, however, a few things that could use a .1 upgrade. Here are a few things I’ve noticed.
Spotlight is very fast and returns mostly relevant results. I am disappointed that iPhoto keywords are not supported (presumably to avoid breaking the iPhoto structure). Looking for images I am thus forced to find an instance of the Media Browser.
Having a media browser in every Open panel is a welcome addition, with media files being organized by applications other than Finder. I wish Finder had a media browser as well.
Quick Look is simply an amazing tool. I wonder how I ever managed without it. Live previews on almost every file in Finder is great and very fast. Even fonts are displayed with a preview.
Dictionary.app has been updated with an Apple dictionary and (yay!) built-in Wikipedia! Though hardly better than the online version, it illustrates perfectly how integral part of computing the internet has become. Even better, there is now a documented way of creating new dictionaries, something I’ve requested since Tiger.
I love how Mail now reads my RSS feeds. Makes perfect sense to me having incoming items collected this way. I do wish I could select all feeds by clicking the RSS headline, though.
Web Clips (for turning parts of webpages into Widgets) is incredibly easy to use. It does not, however, store sessions making it impossible to use it on pages that require login. And I really want to use it with Google Analytics…
Saved Searches cannot be added to the Dock as a Stack. Would have been cool to have a stack of the 10 most recently opened documents.
SVG support in Safari is a great addition. Completely missing are scrollbars as well as any way of zooming. Also it would be good to have (read) support in Preview.
Time Machine is a beautifully easy backup tool. It does behaves erratically, however, when backing up to a disk formatted with a partition scheme not matching your CPU. It refuses to find deleted files through the Finder Spotlight search bar but reveals them by manually navigating to the relevant folder. Look at this Apple Discussions thread for more.
8 Nov 2007 - permalink
A few emails from users of my software (thank you) and my own testing has revealed that both the ShowOff screensaver and Retrospective breaks under Mac OS X 10.5.
ShowOff Screensaver
The screensaver refuses to run at all and crashes either System Preferences when configuring or the Screensaver Engine upon activation. Appears related to reading the preferences and loading some resources, and interestingly the preview window works. I am not entirely convinced what the cause is, but I am investigating and will hopefully have a compatible version ready soon.
Retrospective 1.2b3
Apple changed the caching system for Safari 3 in Leopard to make the cache and history searchable by Spotlight. While it breaks Retrospective’s ability to search the cache, it also makes it somewhat obsolete. With Spotlight finding webpages previously visited, the argument of Retrospective is moot. If you would like to see Retrospective development continued, please leave a comment or send me an email.
ShowOff Widget works perfectly.
1 Nov 2007 - permalink
I’ve been planning a post on what I see as the major problem with Facebook, MySpace and most other social networks: They are all walled gardens where the relations and content is kept inside the garden that is the specific site. Facebook suffers the most from this as their application interface is in effect creating a Facebook controlled internet within the internet and since profiles are only viewable by members. I have no doubt this will fail in the long run, much like AOL lost to the open nature of the web. (in spite of this Facebook was just valued at $15 billion!).
While refining my thoughts, I found a few other people also having trouble with Facebook’s closed world view. My idea was to outline the basic requirements for a social network and suggest the creation of a standard protocol for setting the social web free. I wanted to let the users be in control of their relations and content.
In many ways this would be a refinement of the APIs that many sites provide for their content. Flickr, Google and more all have APIs for interacting with the services they provide programatically. Basically, a social network is nothing more than a set of clever hyperlinks and automatic updates. I used to keep track of (online) friends by visiting their websites and reading emails. The Social API would be an open system for allowing connections between profiles on any server, allowing me to view latest blog posts, twitter updates, Flickr photos and more in a single place. Think RSS on steroids with access control.
In effect it would be an open source, distributed social network with content (dynamic hyperlinks in a way). It would need to be open source to be truly trustworthy and distributed for users to keep control of content.
Here’s a brief outline of the benefits:
Anyway, I was preparing a list of requirements and functional outline when I read that Google is working on something that look very similar. They call it OpenSocial and according to a Macworld article their OpenSocial documentation page should be up very soon and I’ll be following this development closely.
With Google behind a social API, widespread adaption should be certain. Let’s just hope it really is open.
17 Oct 2007 - permalink
Finally got around to updating the site to use the Zend Framework and in the process decided to update the design as well.
My reason for using Zend Framework is mainly that the idea of loosely coupled components fit my thinking perfectly. I love how I am able to use only the parts that I like and being able to easily integrate existing code. I want something flexible enough to not run into walls or find myself bending over backwards trying to make this or that framework do what I want the way I like it. Also I am absolutely amazed at how far they’ve come in the short time they’ve been building on this and I have high hopes for future versions.
I took the liberty of removing some stale sections of the website, notably the desktops and images of Cambodia. I am in the process of uploading photos to Flickr and plan on pulling in the best. For now, they are viewable at my Flickr account. The about section has been updated as well as the content of the sidebars. I am also experimenting with using Twitter for short posts not worthy of a regular entry. They are currently displayed in between, sorted by date. More information on the about page.
And now, back to real work and (hopefully) interesting posts :)
12 Oct 2007 - permalink
Two problems widespread on today’s internet:
The first problem is recently solved to some extent by the array of sites like Flickr, Youtube and Digg. It used to be you created a website and put your content there, but easy tools for the masses where missing.
Second problem has been attempted solved many times in small steps. Regular links, RSS feeds, blog comments, trackbacks and profile pages are ways to keep track of friend updates. Now Facebook attempts to solve both problems by providing storage for many types of content and a simple system for notifying friends of updates. I am hard pressed to see how social sites is really anything more than a dynamic set of good old-fashioned hyperlinks, though the dynamic aspect is a crucial one! What Facebook does well is provide developers with the network and the tools for distributing their content.
The problem with most of these approaches is that you loose control. Regardless of how open these sites are with APIs and whatnot, the fact remains that they take (or even delegate) control of your content, your relations to other people or both (I should mention Google here as well, they store quite a lot of information about you). This is not a satisfying long term solution and I would like to propose is a solution whereby the user stays in control of both content and relations.
The solution is based on existing standards where possible and centers on the idea of building basic versions of the current content storage sites, hosted and controlled by the user. On top of that is an API for controlling who can se what and when and logic is added to allow for updates to propagate through to connected people (similarly to rss feeds and trackbacks). In effect it would be an open source, distributed social network with content (dynamic hyperlinks in a way). It would need to be open source to be truly trustworthy and distributed for users to keep control of content.
In short, you get all the benefits of today’s solutions but regain control:
The idea is to build a content management system without the presentation layer, an open backend for other systems to interact with. Looking at the relational aspect first, the backend would provide means for interacting with people (and other sites). It could revolve around the well known address book.
The updates are available as summaries with links to the relevant urls on my friend’s server. He stays in control.
As for searching and aggregating this type of content, the situation is possibly better than what we have today. Firstly, anything visible on a webpage will be indexed by the search engines just like the world is today. The system will provide a mechanism similar to the management of personal relations for handling exchange of data with other types of sites. A video site can be granted access to my videos for as long as I choose to use it. I could then be notified of activity on that site through the backend system itself or by usual email.
There are obvious, non-trivial problems with this system in terms of authorization and authentication but I hardly believe they are worse than with existing sites! Using OpenID could be part of the answer.
If any such system is to gain widespread usage, a plugin system is needed. This would primarily be to expand on the kinds of content that can be handled, secondarily how it is presented (presentation should ideally be left to another system).
A major obstacle for any new technology is that the majority of potential users will find it difficult to use. It takes time to get used to new ideas. Using a computer, setting up a server, browsing the internet, all this certainly has become easier over the last 15 years but it is only recent millions of people began blogging, uploading photos and socialize online.
The proposed solution, however, is not very different from what people have come to expect from online services and it is very much possible for hosting companies to offer the system pre-configured. The important part is choice, not putting all your eggs in one (someone else’s) basket.
The above looks very much like what the Facebook Platform provides, but without being trapped in their walled garden. There’s a future in building on the outside. If nothing else, this idea sprang from the explosion in collaborative thoughts on the web and, particularly, my aversion against Facebook.