25. September 2009

Google Sidewiki

Google launched its new Sidewiki feature. Sidewiki opens an annotation sidebar on every Web page. Sidewiki is a Google Toolbar feature. You can leave notes (annotations) on every Web page and see notes of other people. The annotations appear is a sidebar. This is not the browser sidebar, but an extension driven page element. The feature looks quite advanced. It has rating system integrated, crowd driven spam identification, you can choose to see only annotations in your language. While posting an annotation you can send the same text also to your blogs.

Sidewiki is not real virtual presence, as you do not see the people who are on the page at the same time. Sidewiki is also not a new concept. Annotations have been here before, as early as 1999. But Sidewiki is important for virtual presence, because it shows, that a major player is moving closer. A big advantage of annotations compared to virtual presence is that annotations persist. Chats on a Web page are transient. They are gone after you leave. Annotations stay (for some time). You can leave your mark in the world. That's what people want. They want to create something that persists.

Important for virtual presence is, that Google invests in the notion, that Web pages are places. They are not just an anchor for places, like in Lively. The plain Web page identified by it's URL is a place where things happen.

_happy_wikking()

The usual weblin annotation: when a "great manager" told investors, that virtual goods would not work as a business model, he proposed "annotations". What a disaster would that have been to get Google as a direct competitor. Oh right, the decision was correct, because nobody could have known. I heared that before. Being right because of not knowing seems to be a constant.

24. September 2009

TwiX - Jabber Twitter Gateway Version 0.4.8

I was spamming my twitter account accidentally. Actually it was my Jabber/Twitter gateway, which got an XMPP error message from a broken jabber server and tweeted the error, then sent me a confirmation, got another error message and tweeted it again. Infinite loop!

The main problem is, that the error message looks very much like a good message. That's a Jabber "feature". A good message looks like:

<message from="JID" to="JID">
<body>...Started</body>
</message>
If that produces an error, then comes back:
<message from="JID">to="JID"type="error">
<body>...Started</body>
  <error code="500" type="wait">
  <internal-server-error xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
  </error>
</message>
...which looks very much like the original message, if you do not check for the type="error" bit and just forward the body to the twitter API.

Fixed.

TwiX has now been updated to version 0.4.8. Get it here.

_happy_looping()

16. September 2009

ejabberd crash solved by raising number of network connections

I was bothered by ejabberd crashes. Suddenly it started to crash quicky. The crash dumps said something like:

eheap_alloc: Cannot allocate 747325720 bytes of memory (of type "heap")
and:
eheap_alloc: Cannot allocate 934157120 bytes of memory (of type "old_heap").
I tried the installer, tried compiling erlang and ejabberd from source. I usually run ejabber in a virtual server. I tried on the native host. Nothing helped. We had a similar problem before with a memory bug related to mnesia tables where a server with 5000 clients reaches 3 GB in 5 days and crashes. That case was solved by upgrading the erlang runtime from R12B-3 to R12B-5.

But in this case it needed only 5 minutes and 1000 users to suck up the entire system memory. This was different. The number of about 1000 client connections was the constant of all crashes. @zeank suspected that the problem is the limit of open file descriptors, 1024 by default. The open file descriptor limit means also the max number of TCP (client) connections. Setting this to a higer value, e.g. 32.000 solves the problem.

In practice: insert into ejabberdctl
after:
ERL_MAX_PORTS=32000
the line:
ulimit -n $ERL_MAX_PORTS
_happy_ejabbering()

2. September 2009

Twitter Microtagging = Personal Tags

It is time for structure in Twitter. I will now start microtagging my tweets so that followers can filter and read only what they are interested in.

Hashtags are currently used for several purposes:

  1. Global tagging: is done in the spirit of tag-clouds to support global search for topics. example: "Official hashtag for Barcamp Bangkok 3 is #barcampbkk3".
  2. Comment tagging: is a very recent development. People started to add single word comments which support or augment the original tweet in form of hashtags. Example: "Got my iPhone today #happy". Nobody would search for #happy. Its just a funny (and completely valid) mis-use of tagging.
  3. Data tagging: to use Twitter as a data channel for later evaluation. Example: "My current #weight 72.2 kg" with the convention that after #weight follow a number and a unit. Example: "I am now at Los Angeles Airport #geoloc 33.94 -118.40" with the convention that after #geoloc follow longitude and latitude. Rarely used though and probably yet underrated.
  4. Follower phishing: is done by adding as many hashtags as possible to the tweet in the hope to attract attention of followers, specifically auto-followers which are triggered by certain keywords. Example: I once was followed within seconds by @timmendorf when I twittered #helgoland (both are beach holiday resorts).
Hashtags are the community driven Twitter way to give a litte bit of structure. But this is not enough. What we need is a way to filter relevant information from streams. I am tweeting different parts of my life. I tweet about my work, about various projects, about my lunch, about the kids, about fun stuff I find. But, there are followers who are not interested in my kids. My familiy is not interested in technical tweets. Parts of it is always spam for some of my followers. They have no way to filter only the interesting tweets. There should be a way for me to tag my tweets with my own personal tags, so that followers or their client software can select what they read. This is Microtagging: short personal tags.

I will now start to add short tags to my tweets which indicate a kind of "sub-channel" inside my tweet stream. You (or your software) will be able to ignore #dev tweets if you are not interested in my development work. You may ignore #kids tweets if you do not want to know when we are having ice cream in the local zoo. Microtags are personal tags. Everyone can define her own. They are not globally defined. Microtags have only meaning inside a single Twitter account. There might be standards later. Until then read my microtags at microtags.org to learn what they mean.

I will start with:
#life What I do, eat, where I walk and other spam
#me About me, but not the trivial #life stuff
#chat Chats via twitter, which you'd probably ignore if your r not @'d
#fun Fun stuff I find and want to share
#pol Politics (I am trying to avoid this)
#fam Family matters and events
#me About me, but not the mundane #life stuff
#blog New blog posts announced on twitter
#web The Web, Internet including social media, social networks and Twitter
#vw About virtual worlds
#soc Society, including rants about how bad/good the world is
#sci Science, if any
#kids Not yet
#dev Software development and tools
#tec Technical stuff except software development
#ovw That's the project I am currently working on most of the time
#vg My series of Virtual Goods Articles (see http://blog.wolfspelz.de/2009/10/virtual-goods-ticker.html)

A twitter client could have multiple input fields, so that I do not have to choose the microtag for each tweet. A twitter client could automatically fetch the microtags of a new follower from microtags.org and show you a list to select from. My list is at http://microtags.org/tags/?http://twitter.com/wolfspelz. Your twitter client could also fetch my microtags from time to time and offer new choices if they change.

I'd rather make these tags metadata for the tweet and not as part of the text. But since there is not metadata in microblogging, there will now be microtags in the text. Clients can strip them anyway.

_happy_microtagging()

See also: http://www.microsyntax.org but I can't wait anymore.