12 Oct 2007 - permalink
Two problems widespread on today’s internet:
- Content: How do I get my stuff online for others to see and react to
- Relations: How do I keep track of friends and what they’re up to
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.
Implementation
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:
- You own the domain name and choose the hosting provider.
- Content is placed with someone you trust (possibly even your own server), not some arbitrary website your friends signed up with.
- You decide who can see what and when.
- You’re always up to date on your network as updates to their content propagates to your server.
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.
- I get a url from a friend for connecting with him, I’d enter it into the module for storing contacts.
- The backend sends a request to connect to the url entered, possibly with information on what kinds of data I’m interested in.
- My friend selects which data he wants to share with me (basic contact info, photos, other content, etc.)
- For notifications, one of two approaches seems appropriate:
- Whenever my friend updates content a ping is sent to each interested relation to be displayed.
- When I visit my relations page, my backend sends a request for updated information.
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).
Ease of Use
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.
Preliminary conclusion
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.
8 Oct 2007 - permalink
These last couple of weeks have been very exciting and quite hectic. Having just launched the music site Tape5.dk, we’re now thinking about marketing and future plans for the site. The launch itself was rather quiet as we have told only people close to the project about it - we’re still waiting for a few more deals with the labels to come through. Never the less it was a great feeling to flick the switch on a project underway for more than two years - it is now no longer a concept in development but an actual product we can tell the world about.
Being deeply involved for so long in a project you are bound to learn a lesson or two about management. A few things to keep in mind:
- Keep things simple. Even if it can be tempting to add new features, stay focused on the core value of the idea.
- Don’t spend too much time perfecting. A great idea will work without bells and whistles. No one expects a version 1.0 to do everything.
- Stick to deadlines if at all possible. Learn from mistakes and allocate more time the next time but accept a basic implementation for the first iteration. You can always refactor.
Although I believe we’ve done a reasonable job of keeping focused and dedicated to ship, it is something I will definitely be aware of in future projects. Having someone outside the inner circle of development review the plans and set the deadlines could be a great way of keeping up to speed. It would be someone you’d be hard pressed to disappoint (much like the client in financed projects) and, if possible, someone to motivate when the core team has run out of steam.
Speaking of future projects and following my post about searching for interesting projects, I was approached by the entrepreneurial Morten Wulff about the possibility to join a network of talented people to share and implement new business ideas. I’ve met a few people already and am very excited about the possibilites!
Also I’ve spoken with a couple of people about my Wii idea and they all share my enthusiasm about the possibilities, encouraging me to move forward. I’ll be writing down some of the details and ideas for approaching this over the next few weeks and then get started with a simple prototype.
7 Sep 2007 - permalink
I’ve always liked the fall. In the crisp and colder air everything smells of more, and with it comes memories of new adventures. Fall is when the semester starts again, when you find yourself submerged in projects. It is also the time of year when we left for 4 months in London last year. This year is no different.
Workwise, I am considering a change of scenery from working remotely for a British company. The absence of colleagues near me is becoming a missed part of work. Though rather busy at my current job, I am on the lookout for interesting positions near Copenhagen. By interesting I mean being part of building and shaping great ideas, applying and growing my technical knowledge. Where are the innovative (web) companies in Denmark?
The music site Tape5.dk, which Andreas and I have been developing for the last two years, is finally ready for launch this fall. We are currently finishing off any remaining development and closing the first series of deals with record labels. Soon the daunting task of marketing (on a very limited budget) will follow. October 1st is the launch date and, needless to say, we are very excited.
With Tape5 soon ready, I’ve begun thinking about my next spare time project. I always end up having a few of these at a time. I won’t tell much about it just yet, but it does involve a Wii, some internet and a lot of fun.
17 Aug 2007 - permalink
Today 25 years ago, on August 17 1982, the world’s first compact disk was produced by Philips. Later that year the first CD player went on sale in Japan.
25 years is a long time in technology. In 1982 when the CD was introduced, there was no public internet and mobile phones had only just appeared. Computers had between 800KB and 5MB of storage and memory was below 1MB, making today’s standards a +1000-fold increase (Moore’s Law has been surprisingly accurate so far. The law states that the power of computers per unit cost doubles every two years, so we should now have computers ~4096 (2^12) times more powerful than in 1982). It was before the first Macintosh was introduced, so computers didn’t have a visual interface. It sure is a long time.
The introduction of the CD and huge success (Philips estimate that more than 200 billion CDs have been sold to date) marked the beginning of the transition from analog to digital technology. While the Laserdisc preceded the CD, it was much larger, used mainly for video and never gained widespread adoption. The success of the music CD paved the way for the CD-ROM, recordable CDs, DVDs and recently HD-DVDs and Blu-ray discs. In a way, that beginning was also the beginning of the disruptive change that the creative industry is going through, with the music indutry in the front line. That the internet happened along the way only made change happen even faster.
The CD standard (known as “Red Book”) was co-developed by Philips and Sony and I believe this joint effort contributed in no small amount to the success of the format. It stands as a great example of why open standards are a good thing.
Read Philip’s official press release.
14 Aug 2007 - permalink
I’ve never noticed it before so I can’t tell you how long it has been in Mac OS X. If you have a Mac with ambient light sensor (I only tested on two MacBook Pros running 10.4.10), go to the System Preferences and select the Displays icon. The bottom of the window will reveal a surprising animation:
The ever experimenting interface builders at Apple have created a special kind of slider for adjusting the brightness to visually convey that the ambient light sensor is active and that the brightness (and slider) will adapt to the environment. Such a good idea even if the implementation is not that clear, particularly since you’ve probably never seen this control before.
7 Aug 2007 - permalink
I keep a set of bookmarks in my Dock (on Mac OS X) for stuff that I come across and find interesting but am unable to process at that time. That list grows over time and then, when some threshold is crossed, I take the time to go through them and decide their further fate.
One such bookmark was an article by Clay Shirky about the nature of groups, specifically in an online context. I have long forgotten when or how I came across it, but I finally found the time to read the rather lengthy text (at least for an online post).
Called A Group Is Its Own Worst Enemy, I found the article to be an insightful view on groups and the dynamics of those in general and in particular when formed online.
Shirky has a number of interesting points and rather than trying to summarize them (and no doubt miss important pieces), I’ll highly recommend reading it if a subset of the following holds true for you:
- Enjoy learning new
- Enjoy reading well written thoughts
- Are interested in people
- Work with, build or otherwise use social software
Should cover pretty much anyone :)
I hadn’t previously heard of Clay Shirky but Wikipedia reveals that he is, in fact, a well known authority on social-technological interactions and has written a number of books.
1 Aug 2007 - permalink
From security update 2007-007
released today by Apple:
PHP
CVE-ID: CVE-2007-1001, CVE-2007-1287, CVE-2007-1460, CVE-2007-1461,
CVE-2007-1484, CVE-2007-1521, CVE-2007-1583, CVE-2007-1711,
CVE-2007-1717
Available for: Mac OS X v10.3.9, Mac OS X Server v10.3.9,
Mac OS X v10.4.10, Mac OS X Server v10.4.10
Impact: Multiple vulnerabilities in PHP 4.4.4
Description: PHP is updated to version 4.4.7 to address several
vulnerabilities. Further information is available via the PHP web
site at http://www.php.net/
I say update to PHP5 already instead of patching a version that was surpassed 3 years ago. It’s been so long that PHP4 has been
declared end of life and the
GoPHP5 project is gaining traction.
I know Apple probably won’t upgrade in a minor OS version bump, but here’s hoping they’ll include PHP 5.2 in Leopard. Until then, I’ll continue to compile PHP5 myself (or grab the PHP binary from Marc Liyanage). Keeping third party software up to date is a big step towards a secure environment.
20 Jul 2007 - permalink
Timezones in web applications are often dealt with the same way as character sets. Either incorrectly or ignored. The case of unicode is improving slowly as developers discover the need for international language support.
The problem with not handling timezones correctly is not apparent in the usual case of the webserver and the database server being in the same timezone. A lot of PHP code passes the task of timestamps on to MySQL, e.g. by calling NOW() on inserting or updating records. It is nessesary to know in what timezone the timestamps are stored to process them correctly.
Often a specific timezone is assumed for displaying date and time. This could very well be incorrect for a large number of visitors. If the database server is in yet another timezone, things begin to get out of sync.
MySQL’s handling of timezones is - obviously - separate from that of PHP. Along with the fact that the MySQL timezone can only be changed by users with SUPER privileges, this means that MySQL cannot be relied on for creation of timestamps in correct timezone. In other words, the usual call to NOW() is not an option.
PHP 5.1 introduced the date_default_timezone_set() method for setting the timezone PHP will use for functions like date() (or alternatively the date.timezone php.ini directive). This allows for a flexible and consistent way of creating timestamps in the correct timezone form within PHP. One user in London might start a thread while a response comes from New York. To handle this consistently and make sure both users see local time and the correct timespan between the posts, use date_default_timezone_set() to create the timestamps from PHP in a fixed timezone like GMT.
Time for an example to illustrate the practical use of this. I created a simple class Timer for dealing with these operations. The methods will be called statically as there is no need to instantiate the class.
class Timer
{
static function DatetimeInGMT() {
return date("Y-m-d H:i:s", time()-date("Z",time()));
}
static function GMTDatetimeToLocal($datetime) {
$time = strtotime($datetime);
return date("Y-m-d H:i:s", $time+date("Z",$time));
}
}
Timer::DatetimeInGMT() produces a timestamp in GMT. I use it instead of MySQL’s NOW() because it calculates the time relative to the timezone set in PHP rather than that of MySQL.
When reading the timestamp back in to PHP, another function call is needed to convert it back to whatever timezone PHP is in at that time (it might be a different user viewing with another timezone setting). That’s the job of Timer::GMTDatetimeToLocal($datetime).
These two very simple functions and a correct setting of PHP’s timezone will ensure that dates are stored in a consistent way and displayed correctly.
22 Jun 2007 - permalink
My thoughts on the Microsoft Surface were generally positive and I see it (or rather the technology behind) as a step towards ubiquitous computing. Sarcastic Gamer, however, felt the need for a parody.
Hilarious!
(via John Gruber)
13 Jun 2007 - permalink
Steve Jobs held his anticipated keynote for the WWDC 2007 in San Francisco two days ago. Apple has put up a stream of the keynote for the interested. During that keynote, Steve talked about and demoed 10 new features in the version 10.5 of Mac OS X called Leopard.
I’m gonna go over some of them with a few thoughts.
-
New Desktop - a consistent GUI, a semi-transparent menubar a new Dock with Stacks
The consistent GUI brings with it the playlist type of sidebar that iTunes first introduced and Mail also uses. This is no doubt due to the fact that, according to Steve, 500 million Windows users have downloaded iTunes - they (and practically all Mac users) already know how to use it.
A semi-transparent menubar seems like an odd decision, particularly to long time Mac users. It could help keep focus on the current task (as will the added depth to the active window). However, the menubar is still the only indication of the active application it seems and that will confuse some users. To switchers the change will make their new Mac look more like Windows and ensure association of the Dock with the missing Task bar. I’d have preferred the menubar to fade up on mouseover.
The stacks in the Dock is a great idea and really adds to the useability of folders in the Dock and the addition of a stack for downloaded content is great (for those new to the platform). I’d love to have stacks elsewhere, on the Desktop for instance, but I doubt it.
The 3d effect with reflections in the Dock is useless but help sell computers and, I suppose, make the UI look more ’live’ - important when you’re competing with Vista.
-
New Finder
Using the aforementioned playlist from iTunes is a welcomed improvement over the hackish implementation that is the current Finder sidebar.
Including default smart folders is a smart move - something even Vista has. I hope Spotlight 2.0 will bring vastly improved creation of smart folders.
The column view preview, unfortunately, does not seem to include the ability to set Spotlight keywords - something I’ve missed from day one. Of course, this might change come October. I hope the Save dialogs have this option as well.
I’d really like to see a scaling slider in the lower left corner of Finder windows for changing icon sizes like iPhoto scales photos.
Coverflow in Finder looks good and is very nice for browsing photos or just anything recognizable in small. It would, however, seem useless for browsing text heavy documents.
-
Quicklook is just plain cool
-
Time Machine
Even though I’ve recently automated backup to a remote server, having a built in solution with history will benefit all. I wonder how fast it will be browsing/searching back through time though. The rumored addition of the ZFS filesystem would help in this regard.
Another thing yet to be seen is how well it behaves on portables where the backup drive might not be connected at all times.
-
Mail
Bringing RSS feeds to Mail makes perfect sense to me. It is very much like a web version of newsletters. Data detection (though hardly new, Apple once had something called Apple Data Detectors that did the same) is a very nice addition and something I expect to be system wide.
I have no intention of using the HTML templates. Much like text documents (.txt or .rtf over .doc), I prefer mail as plain as possible.
-
Core Animation
GPU accellerated animations in every program is sure to bring some GUI experiments. It is the next step of Quartz Extreme and it will be interesting to see how developers - and Apple - put this to use in the future. I’m sure iPhoto, for instance, could benefit from it when dealing with massive amounts of photos.
That was my take on some of the stuff we’ll see in the Leopard. Please share your thoughts in the comments - there is still a long time till October…