buddycloud goes west. As far west as possible.
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!
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.
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/
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
To help us plan numbers, email frontdesk@buddycloud.com and let us know you can make it.
In the meantime
- all buddycloud public events in the buddycloud calendar (Also available in XML and HTML)
- we track our dev work on Trello
- we try to keep great buddycloud documentation
- you can follow buddycloud on the mailing list and in the buddycloud chat room
- all buddycloud code is open source and hosted GitHub
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.

hosted buddycloud makes it easy to get buddycloud on your domain.
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.
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.
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
- keep up to date on all buddycloud public events in the buddycloud calendar (Also available in XML and HTML)
- Trello will help you track the buddycloud development
- access the buddycloud documentation
- reach out to other buddycloud developers on our mailing list and in our chat room.
- buddycloud code is ready for your forking on GitHub.
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
- keep up to date on all buddycloud public events in the buddycloud calendar (Also available in XML and HTML)
- Trello will help you track the buddycloud development
- access the buddycloud documentation
- reach out to other buddycloud developers on our mailing list and in our chat room.
- buddycloud code is ready for your forking on GitHub.
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.
CC-BY Steven DepoloOther 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.
CC-BY cod_gabrielBut 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
- keep up to date on all buddycloud public events in the buddycloud calendar (Also available in XML and HTML)
- track the development on buddycloud’s Trello page
- access the buddycloud documentation
- reach out to other buddycloud developers on our mailing list and in our chat room.
- buddycloud code is ready for your forking on GitHub.
