Buca Bay - Always nice

Dua tiko noqu toa loaloa, na yacana ko… laga mai…

Google Wave or Google Spreadsheet

October26

ReadWrite web posted an article titled “Google Should Stop Playing Around With Wave and Focus on Spreadsheet” a few days ago.

As the title suggests, the author believes Google is wasting time working on Google Wave and should put their efforts into Google Docs SpreadSheets.

I believe there are a few misconceptions. Google wave is not the Google Wave Client, that is in private beta. That is like saying GMail is Email. Google wave is an open protocol (like SMTP for email, or XMPP for IM) for realtime concurrency control.

On the other hand, ordinary folk create real apps on spreadsheets all day long.

More people use Email, IM and Social Networking. This is the areas Google Wave will be used in.

Real-Time Spreadsheets? That Is So 1980s, Dude!…
Online spreadsheets that anyone can edit concurrently solved the version control problem. Problem solved! Done, finished. Can we move on now?

No, not just yet. Version control is not concurrency control. However, they are often used synonymously. Simplistically, version control, is the saving of changes made to a document, while concurrency control, is the merging of these changes.

Here is an overview of version control systems in use today. Most of today’s version control systems such as used in Subversion, Mercurial and GIT implement a copy-modify-merge for their concurrency control. I’ve already blogged about how concurrency control in today’s version control systems is different from realtime concurrency control.

In the case of Google Docs, including Google Spreadsheets, there is no concurrency control. If you simultaneously edit a document with another user, any save overwrites the previous save. So if your update had not reached the user yet, it would be lost.

Google Wave implements true realtime concurrency control. It does this using Operational Transformation (OT), which is not new, and used by other software. What is new is that Google went ahead and defined a standard protocol for editing documents concurrently.

Most importantly Google built Google Wave on top of XMPP Federation (Open Source Instant messaging), so that anyone can host a Google Wave server by hosting an XMPP server and/or XMPP component, just like hosting an SMTP (Email) server. They also went ahead an made an open source implementation of the Google Wave Server. (I’ll be adding a post on how to build the Google Wave Server on CentOS 5). Already, there are other implementations of Google Wave Servers such as pygowave and yet to be release EJabberd extension (XMPP for client-server also).

This is a very important factor. If Google had not made Google Wave an Open Standard that can be implemented by anyone, they there would be very little hype about Google Wave from developers. I wouldn’t be writing this article. Instead I’d probably be joined by others criticizing Google for creating a monopoly on a new technology. However, Google made the “right choice” and made Google Wave and open standard like the rest of the open internet standards.

Now that we have a better understanding of what Google Wave is, we know that it:

  1. Is not a software like spreadsheets, it is a protocol
  2. It offers a basis for real time concurrency control that spreadsheets do not have
  3. Spreadsheets and similar applications will be built on Google wave in the future
  4. Better communication and collaboration is a much greater need then better spreadsheets

So you cannot say stop working on Google Wave and work on the Spreadsheets since they are not mutually exclusive. Working on Google wave will bring much needed true realtime collaboration features to spreadsheets. In fact it will bring realtime collaboration to the whole web, allowing the creation of applications that surpasses the uses of the spreadsheet.

posted under xmpp | 1 Comment »

Watch streaming video over the LAN with VLC

October12

I have a large collection of videos on my Windows PC. Before today, in order to watch the videos on my computer somewhere else in the house, we’d have to copy the movie to a USB stick and transfer it to the other computer.

Since this is an almost daily occurrence, and copying videos  can take a while, I decided to look into streaming the videos  over the Local network.

My first thought was to create a virtual host on my local Apache server, and have the videos  streamed by Apache over HTTP. This worked reasonably well for a while, but after about 10 minutes or so  the video started to lag on the other side. This also happened when I tried streaming the file via FTP, using Filezilla FTP server.

I also tried using Nginx which has an FLV streaming module. The videos on my PC are mostly .avi or .divx, so I’d have to transcode to FLV before hand in order to stream. I didn’t want to have to transcode each file to FLV, since it was already taking up a huge amount of space on my hard disk.

This whole time I was using VLC to play the videos. I had totally overlooked the fact that VLC was also a video streaming server. It turns out, VLC can transcode and stream at the same time (using FFMpeg internally), so you don’t need to transcode files before hand, and keep around multiple copies of the same file in different encodings.

Here is the article on streaming video with VLC that I followed. Pretty soon I had VLC on my PC streaming movies to multiple PCs and laptops on the local network. The videos playback can also be controlled from the streaming server, so I could start and play movies for my 2 and a half year old daughter Joana while doing my work.

The only problems with streaming with VLC is that you’ll have to mix and match video encodings and streaming protocols to figure out which works. For me, streaming H264 streamed over RTP seemed to work best. Edit: I somehow missed their documentation on supported streaming protocols.

Step by step to setting up streaming a video with VLC over your LAN:

  1. Open VLC on your PC with the video
  2. Click on: Media -> Streaming…
  3. Choose the video file you want to stream (double click) A window opens with the streaming options.
  4. Choose RTP for the streaming protocol. For the address put in the IP* of the computer to stream to. You can leave the port number as is.
  5. Choose H264 from the “profiile” dropdown. This selects “MPEG-TS” for encapsulation, H264 for Video and MPEG-4 for audio.
  6. Click Stream.
  7. Then on the computer you want to watch from, Open VLC.
  8. Click on Media -> Open Network
  9. Choose RTP and the computers IP or localhost. Leave the port number as is.
  10. Click “Play”
Instead of using IPs, you can also use the computer names.
To list the computers on the Local network by going to: Start -> Network

You can also use the command line.

To open the command line on XP: Start -> Run -> type in “cmd” and click enter
On Vista: Start -> type “cmd” into the search box and click enter
In the command prompt, type: net view
For the list of IPs: arp -a
To get the IP of a computer given its name: ping <name>

To get the name of the current computer: hostname

Before trying out VLC, I was thinking of setting up Red5 to stream videos, since I have worked with it before to stream video and audio for XMPP (Instant Messaging), but since VLC does the job really well and is so easy to set up, I’m sticking to that for now.

posted under networking | 3 Comments »
Tag Cloud