Video
[Flash 10 is required to watch video]

buddycloud goes west. As far west as possible.

Video
[Flash 10 is required to watch video]

Thanks for everyone’s hard work.

Photo
spotted on a beach in Half Moon Bay.

spotted on a beach in Half Moon Bay.

Text

Google sponsors two great developers to work on buddycloud

buddycloud is really proud to be working with two great students from Google’s Summer of Code program.

Denis Washington will be building an HTTP API to buddycloud.

buddycloud has an event driven architecture (everything in buddycloud is realtime and events can happen on any domain that runs buddycloud).

Soon, developers who want to extend buddycloud will benefit from the new HTTP API: Denis’s HTTP API will give developers a nice way to plug existing JSON-based queries into buddycloud’s realtime architecture. buddycloud users will still have the  “ooooh this is fast and nice” experience.

Rodrigo Duarte will be building a buddycloud media server (GSOC proposal).

The buddycloud media server makes it so simple to drag and drop media into a channel and chat message. Media is magically permissioned to the person you are talking with or the followers of your channel. But simple-to-use will mean that Rodrigo will be working hard on a design that removes all user confusion and “just works”.

I’m really looking forward to working with Rodrigo and Denis and to using their code in production.

Also, a huge thanks to Kev for coordinating and organising the Google summer of code. Without him, none of this would be possible. Thanks Kev.

Welcome Google summer of code programmers!

Text

buddycloud hackathon - postponed

We have an awesome line-up for next weekend’s hackathon.

but,

Two of us can’t make it (for very nice reasons). But we still really want to hack with you soon and so we will plan a new hackathon in may. As soon as we have a date, it will be posted here.

Link

Dynamic template drives your channels. It’s a new and quick way to mark up pages and then shove events into them without overloading the browser.

More info: http://dodo.github.com/node-dynamictemplate/

Text

Next buddycloud hackathon: 28-29 April

After the success of the last buddycloud hackathon, we have another planned: Munich, 28 - 29 April. We will kick off at midday and hack the night away.

Where

coworkingmunich.de 
Sonnenstraße 32
80331 München

Map

To help us plan numbers, email frontdesk@buddycloud.com and let us know you can make it.

In the meantime

Tags: hackathon
Text

buddycloud and Google Summer of Code

We’re working with the nice folks at the XSF and with Google’s Summer of Code.

The GOSC takes smart students that would otherwise flip burgers over the summer and pairs them up with a mentor at buddycloud to build blocks of code that other’s can use.

If you are interested please introduce yourself on the buddycloud-dev mailing list and we’ll get in touch.

Video
[Flash 10 is required to watch video]

hosted buddycloud makes it easy to get buddycloud on your domain.

Video
[Flash 10 is required to watch video]

A quick buddycloud screencast.

Text

An introduction to coffeescript and XMPP

Due to public demand there will be a further introductory tutorial to coffeescript and the buddycloud webclient by dodo.

The tutorial will be held with Skype, starting at 7pm CEST

He wants to meet in seehaus@channels.buddycloud.com at 6:45pm CEST to get every interested person on board.

Text

Coffee, Beer & XMPP: and introduction to coffeescript

Dodo will give a coffeescript and webclient tutorial tonight.

The tutorial will be held with Skype, starting at 7pm GMT

He wants to meet in seehaus@channels.buddycloud.com at 6:45pm GMT to get every interested person on board.

Photoset

Last weekend there was the buddycloud hackathon for thinkers and makers in Munich.

Thanks to all that attended!

Planning/discussing buddycloud

On Saturday evening and on Sunday there was a lot of talk about the future of buddycloud. Features to be implemented, possibilities of the architecture of buddycloud and how buddycloud works.

Debugging buddycloud

With so many dedicated usersbug hunters present the bug population of buddycloud was reduced.
Some of the bugs survived the weekend but Dodo and Astro now have an idea how to take them down.

Buddycloud vm for your convenience

René worked on a buddycloud vagrant/veewee/puppet vm that you just have to put on your system and fire it up
This should ease the installation process very much.

There are more pictures in the buddycloud flickr group

Text

Update on the buddycloud hackathon for thinkers and makers

Hi everyone!
The hackathon planning is comming along great and we have some updates for you.

Where?

The location is finally confirmed.
The hackathon will be at:
coworkingmunich.de
Sonnenstraße 32
80331 München

To get there:

  • take a subway from the lines U3, U6, U1 or U2
  • take a tram from the lines 17, 18 or 27
  • take a bus from the line 152

to Sendlinger Tor and you should see the coworking space where the hackathon will be already.

What?

Those are the ideas that came from the buddycloud team for the hackathon, but your ideas are highly welcome as well.

  • internet2 project ideas
  • email content into my channel
    • checks from address and matches it with a channel name
  • email me when there are posts in my channel
    • watches channels that I produce and emails me updates
  • feed a channel with an RSS feed.
    • New posts in RSS-land are fed into a channel as a topic
    • users can comment/rant on topics
  • auto channel spinup
    • If I run a news website and want to add a channel for each new news article, having a way to auto-create channels would be nice.
    • could be a spam-haven.
  • Extend buddycloud-server by an HTTP server
    • Serve feeds
    • Implement PSHB
    • Implement WebFinger & Salmon

Join the hackathon. We’ve got mate!

Send a mail to frontdesk@buddycloud.com or just put yourself on the list of participants

Prepare for the hackathon

Text

How buddycloud uses Δt for blazingly fast DOM updates

During the development of the webclient buddycloud faced several problems.

One of the big problems was with the webclient.

The problem

The buddycloud webclient is incredibly dynamic: the buddycloud server sends events such as new posts, follow requests, message resyncs etc, to the buddycloud webclient in real time. These events need to be displayed rapidly and update only those parts of the DOM only those parts, that need to be updated and no more.

Other templating libraries started to choke when all these events hit the browser.
The buddycloud webclient processes a lot of events (to see a demo try clicking around a channel). Whenever anything is updated the entire DOM needs to be updated and reloaded. This meant that users were waiting and overall user experience suffered.

A better solution was needed.

Introducing Δt (dynamic template)

Δt is a dynamic templating engine. Like other templating engines it uses web templates and content information to produce web documents render-able in a browser.

But unlike other templating engines such as {{mustache}} dodo’s Δt is a dynamic templating engine that is fully asynchronous. That is, it can be modified even after rendering a web document and it doesn’t contain all the surprises of other templating engines.
Indeed Δt:

  • offers abstraction and separation of functionality and design
  • runs server side and browser side
  • offers streamable output
  • is completely asynchronous
  • is modular
  • is smart
  • avoids it’s own template-language
  • avoids scope breaking
  • avoids the evilness of eval

The solution

This code demonstrates how Δt works:

    class View extends Backbone.View
        template: (api) ->
            new dynamictemplate.Template schema:'html', ->
                @div class:'item', ->
                    @text 'default'
                    api.bind 'type', (type) =>
                        @attr 'class', type # changing the class to the new type
                    api.bind 'content', (content) =>
                        @text content
                    @end()
 
        render: () ->
            api = {}
            _.extend(api, Backbone.Events)
            @model.bind 'change:type', (model, type) ->
                api.trigger 'type', type
            @model.bind 'change:content', (model, content) ->
                api.trigger 'content', content
 
            tpl = @template(api)
            tpl.on 'end', -> # when the rendering is done
                @el = tpl.jquery # fresh build dom element by jquery
                $('body').append(@el) # add it to the dom

To use this, you run a render once. Whenever the DOM is changed, the event handlers in the template are triggered and the output is updated.

Implementing a template

tpl = new Template ->
    @$tag 'xml', ->
        @$tag 'child', "content"

With Δt you can write complete templates in async XML instead of only being able to generate asynchronous XML generating code.
Due to this, all the code you write for a Δt template is asynchronous and as a side effect every tag you write has to be closed.
Since that is highly annoying when building large templates Δt implements a a nice shortcut:
@html ->
    @body("content").end()
    @end()

is the exactly same as
@$html 'xml', ->
    @$body "content"

If you ever need to have parts of a template (or a whole template) work more synchronously: start tags with a $.

The buddycloud code is on GitHub. To see it in use check the buddycloud webclient source.
Feedback to dodo is always appreciated.

PS: we’re holding a buddycloud hackerthon in Munich on 3rd and 4th of March. To join please sign up on the buddycloud hackerthon wiki page.
Come and hack on buddycloud’s webclient using Δt.

Things to do after checking out Δt