Older blog entries for cdent (starting at number 495)

Federation is Sad

I spent a brief amount of time recently checking up on the state of so-called federation on the web. In part this was while thinking about MTC but also while learning about (and implementing an experiment of my own) distributed hash tables.

The web, at large, is distributed. Content is in this giant graph with many nodes. A URI identifies some atom of content in the graph. Some atoms link to others. This simple model has expanded information exchange enormously. The last twenty years or so has had a lot of zOMG.

At various times throughout those twenty years, sometimes some branches of the graph have more nodes than others, creating an apparent imbalance. These days Facebook has a lot of the nodes. While technically this does not violate the distributed nature of the web, it adjusts the human experience to such an extent that some people can think of Facebook _as the web_.

To combat this people come up with the idea of federation: create content somewhere and copy it to one or more other places. For example create a message on status.net and have it duplicated on twitter and facebook.

This makes my inner geek cringe: federation makes copies of things. This is wrong. Surely we should be distributing URIs? Copy by reference not by duplication!

If that happened you can imagine a considerably more distributed web: Rather than publishing something to a service, you simply put it into a distributed hash table network storage service, and get back a URI. You don't know where the content is, only that it is out there somewhere. Then you give the URI to systems that can display or otherwise manipulate the content, by reference.


Unfortunately people aren't excited to make this sort of thing work because:

  • they worry about latency
  • they are addicted to search
  • they are addicted to control

So they return to federation as the next (but distant!) best solution.

And that is sad.

Syndicated 2012-11-04 15:07:45 (Updated 2012-11-04 15:08:08) from cdent

30 Jul 2012 (updated 30 Jul 2012 at 22:12 UTC) »


Created tsapp to display, in a very basic way, the functionality available via the tsapp tool that I've been creating over the last few days. It worked really well.

There are a few issues but for the most part the concept seems sound and the implementation simple enough that it doesn't make my ZOMG complexity! Run! reaction kick in.

One open question: Should it allow user registration and space creation? At first glance this seems a step too far, we'd want people to have understood what TiddlySpace is before using tsapp. But perhaps this is wrong, maybe tsapp is a vector for new (technically oriented) people to enter the ecosystem?

Another issue is how to deal with an app that is designed to be included or uses "extra" bags. Is special support for that needed? Or can that be worked around.

It may be useful to compare what was created and what was discussed. The discussion described the form of an app and the process of app creation. The form of an app is mostly the same between the two. The major difference is that at the moment tsapp has no facility for pushing to "optional additional bags". You can proxy to those bags, but when tsapp push is run the content goes to just one bag. It may be worth considering a way to map assets to different bags (presumably by pathname).

The discussed app does both push and pull. The created app only does push. Implementing pull assumes there are situations where the server is authoritative for content. Either the local dir or a git repo ought to be authoritative. Also GET is the easiest of the methods, so curl can be used in a pinch.

The discussed app planned "reliable algorithmic transformation" of paths to allow content both local and remote. The built app goes for a much simpler solution, that seems to cover most common cases. So, in fact the "overkill" solution was the simple one. Largely because WSGI is awesome.

Syndicated 2012-07-30 19:47:47 (Updated 2012-07-30 21:33:12) from cdent

28 Jul 2012 (updated 28 Jul 2012 at 21:12 UTC) »


I have upgrade my notebook to Mountain Lion and in the process seem to have rather messed up my development environment for Python. Haven't yet figured out where I went wrong, but merely upgrading Xcode does not fix it.

The problem appears to be a mismatch between workarounds that packages like Python-MysqlDB do to cope with where OS X puts include files and new places where such things are in Xcode 4.4. In addition to installing the command line tools (from within the Xcode preferences (Downloads), my solution:

cd /System/Library/Frameworks/Python.framework/Versions/2.7/include
su mv python2.7 python2.7.orig
sudo ln -s \
  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 .

This could very well break a bunch of other stuff, but we'll see, it has my TiddlySpace dev environment working again.

Syndicated 2012-07-28 18:23:41 (Updated 2012-07-28 20:53:47) from cdent


$(document).ready(function() {
var wholething = $('#text-html.section');
if (wholething.length == 0) return;

        var bag_name = 'theinformation_public';
        var host = 'http://theinformation.tiddlyspace.com/';

    if (typeof(io) === 'undefined') {

    var socketuri = 'http://tiddlyspace.com:8081'
    , atdiv = $('#recents')
    var atbox = new Tiddlers(atdiv,
            host + 'tiddlers?',
            ['recipe/' + bag_name],
            {sizer: 15});

Syndicated 2012-07-28 17:01:31 (Updated 2012-07-28 17:02:33) from cdent

The Usefulness of Useless Knowledge - Brain Pickings

Out of this useless activity there come discoveries which may well prove of infinitely more importance to the human mind and to the human spirit than the accomplishment of the useful ends for which the schools were founded.
The Usefulness of Useless Knowledge - Brain Pickings

This kind of serendipity is what I care about. Not the pursuit of solutions, but the pursuit of discovery.

Syndicated 2012-07-28 12:54:58 from cdent

This is for everyone

timbl live tweeted from the Olympics opening ceremony:

This is for everyone

It was the culmination of a long montage on the advancements and power of communication in recent history.

I suspect that it was meant as a statement of hope, a kind of blessing, but to me it was warning: "Don't blow it."

Don't let the corporates have it, this is for everyone.

Syndicated 2012-07-27 21:19:54 from cdent


Infinite probability is good, not bad. Meaningless disorder to be challenged, not feared. Language maps a boundless world of objects and sensations and combinations onto a finite space. The world changes, always mixing the static with the ephemeral, and we know that language changes, not just from edition to edition of the Oxford English Dictionary but from one moment to the next, and from person to the next. Everyone's language is different. We can be overwhelmed or we can be emboldened.

Syndicated 2012-07-27 20:11:24 from cdent


"The more we 'communicate' the way we do, the more we create a hellish world," wrote the Parisian philosopher also a historian of cybernetics Jean-Pierre Dupuy

I take "hell" in its theological sense, i.e., a place which is void of grace the undeserved, unnecessary, surprising, unforeseen. A paradox is at work here: ours is a world about which we pretend to have more and more information but which seems to us increasingly devoid of meaning.

Syndicated 2012-07-27 19:58:21 from cdent


It is a symptom of omniscience. It is what the critic Alex Ross calls the Infinite Playlist, and he sees how mixed is the blessing: "anxiety in place of fulfillment, an addictive cycle of craving and malaise. No sooner has one experience begun than the thought of what else is out there intrudes." The embarrassment of riches. Another reminder that information is not knowledge, and knowledge is not wisdom.

Syndicated 2012-07-27 19:36:25 from cdent


There is a whiff of nostalgia in this sort of warning, along with an undeniable truth: that in the pursuit of knowledge, slower can be better. Exploring the crowded stacks of musty libraries has its own rewards. Reading even browsing an old book can yield sustenance denied by a database search. Patience is a virtue. Gluttony a sin.

Syndicated 2012-07-27 19:33:01 from cdent

486 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!