<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PubNub: Real-time Messaging for Pushing Data to any device</title>
	<atom:link href="http://www.pubnub.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pubnub.com/blog</link>
	<description>Real-time Messaging system for pushing data to any mobile, web or desktop app instantly.</description>
	<lastBuildDate>Tue, 21 May 2013 18:50:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Ditch Your Backend with PubNub Messenger</title>
		<link>http://www.pubnub.com/blog/ditch-your-backend-with-pubnub-messenger/</link>
		<comments>http://www.pubnub.com/blog/ditch-your-backend-with-pubnub-messenger/#comments</comments>
		<pubDate>Fri, 17 May 2013 16:11:23 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1310</guid>
		<description><![CDATA[Written by Dan Ristic Although &#8216;messaging&#8217; has become increasingly popular among web applications, there have been issues with connectivity, a poor feature set, and compatibility with one platform. These are most likely due to the complexity of building a scalable <a href="http://www.pubnub.com/blog/ditch-your-backend-with-pubnub-messenger/"></a>]]></description>
			<content:encoded><![CDATA[<p><em>Written by Dan Ristic</em></p>
<p>Although &#8216;messaging&#8217; has become increasingly popular among web applications, there have been issues with connectivity, a poor feature set, and compatibility with one platform. These are most likely due to the complexity of building a scalable backend that connects in real-time to multiple clients. I set out to fix this with PubNub Messenger.</p>
<p dir="ltr">My task for this project was to create a well-featured and scalable chat application that runs on Android, iOS, and Desktop in a few weeks work. No big deal, right?</p>
<p style="text-align: center;" dir="ltr"><a href="http://blog.pubnub.com/wp-content/uploads/2013/05/devices.jpg"><img class="size-full wp-image-1327 aligncenter" title="devices" src="http://blog.pubnub.com/wp-content/uploads/2013/05/devices.jpg" alt="" width="400" height="453" /></a></p>
<p dir="ltr">The tools I chose for this task were <a href="http://jquerymobile.com/">jQuery Mobile</a> and the <a href="https://github.com/pubnub/pubnub-api">PubNub API</a>. jQuery Mobile is an amazing frontend framework that allowed me to deliver my app to multiple devices without worrying about interface size or enabling touch. The PubNub API allowed me to cast my backend aside and build everything with just HTML and JavaScript. It handled real-time messaging between my users, scaling out to multiple regions, and load balancing across multiple servers. Here&#8217;s the <a href="http://dristic.github.io/pub-messenger/">final result</a> and <a href="https://github.com/dristic/pub-messenger">source code</a>.</p>
<p dir="ltr"><strong>The Approach</strong></p>
<p dir="ltr">The entire application consists of three files, one HTML file, one JavaScript file and one CSS file. Most of the frontend is built with jQuery Mobile components. In the end I had to add some CSS to get the user list working responsively and add some overall flair to the app. The app also uses jQuery Mobile&#8217;s page navigation. This allowed me to define all my pages in one file and then show and hide them using JavaScript. This might not scale if I kept adding more functionality, but it worked for the purposes of building this demo.</p>
<p dir="ltr">The rest of the app is built on top of the PubNub JavaScript API. Each user is identified by a username that they enter at the beginning of the application. From there the user can enter any chat room designated by a chat room name and use the app to talk to everyone else in that room. The PubNub API also allowed me to get chat history for a given room so you can see what people have been talking about as well as <a href="http://blog.pubnub.com/announcing-pubnub-channel-presence/">PubNub Presence</a> to tell the user who is currently in the room chatting.</p>
<p dir="ltr">The final piece of the puzzle to get it working on iOS and Android was using <a href="http://phonegap.com/">PhoneGap</a>. With PhoneGap, I could easily generate an Android and iOS app that runs a full screen web view to load the application in. As soon as the page loads, the frameworks take care of the rest. The best part of this that is the only mobile support I had to include was hiding the user list on smaller screens. Everything else was simply plug and play.</p>
<p dir="ltr">Overall, it was pretty straightforward to build. Instead of spending my time writing platform specific code or setup a single server, I was able to focus on adding great features to my application. <em>This is how web development should be</em>.</p>
<p dir="ltr">If you would like to build your own application like this,<a href="https://github.com/dristic/pub-messenger"> check out the source code on GitHub</a>.</p>
<p dir="ltr">Also stay tuned for upcoming in-depth tutorials on how to build PubNub Messenger.</p>
<p>&nbsp;</p>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/ditch-your-backend-with-pubnub-messenger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lightweight Multiplayer HTML5 Games with PubNub and melonJS</title>
		<link>http://www.pubnub.com/blog/lightweight-multiplayer-html5-games-with-pubnub-and-melonjs/</link>
		<comments>http://www.pubnub.com/blog/lightweight-multiplayer-html5-games-with-pubnub-and-melonjs/#comments</comments>
		<pubDate>Thu, 09 May 2013 18:15:46 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1228</guid>
		<description><![CDATA[Written by Jay Oster In my quest to change the world, I&#8217;ve been experimenting with an HTML5 game engine to push the limits of the browser as a platform for serious gaming. melonJS has been my tool of choice because it&#8217;s lightweight, <a href="http://www.pubnub.com/blog/lightweight-multiplayer-html5-games-with-pubnub-and-melonjs/"></a>]]></description>
			<content:encoded><![CDATA[<p><em>Written by Jay Oster</em></p>
<p>In my quest to change the world, I&#8217;ve been experimenting with an HTML5 game engine to push the limits of the browser as a platform for serious gaming. <a href="http://www.melonjs.org/">melonJS</a> has been my tool of choice because it&#8217;s lightweight, runs well on mobile, and is very easy to use. Starting last year, I became co-developer on the project. One question that always comes up on the melonJS forum is the best way to use Node.js/socket.io to build multiplayer games. In this article, I&#8217;ll be using <a href="http://www.pubnub.com/">PubNub</a>, but many of the techniques can be applied to socket.io as well.</p>
<p>For this experiment, I&#8217;ll start with the platformer demo that ships with the <a href="https://github.com/melonjs/melonJS">melonJS 0.9.7 source code</a>, and transform it into a multiplayer game with just a few extra lines of code. And all without any servers! This is only possible with the power provided by PubNub.</p>
<p>Want to see the end result? Check it out <a href="http://parasyte.github.io/melonJS/examples/platformer/">here</a>. I&#8217;ll walk you through how to add multiplayer support to your own game below:</p>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/05/PubNubMelonJSGame1.jpg"><img class="alignleft size-full wp-image-1264" title="PubNubMelonJSGame" src="http://blog.pubnub.com/wp-content/uploads/2013/05/PubNubMelonJSGame1.jpg" alt="" width="809" height="488" /></a></p>
<h2 id="download-melonjs">Download melonJS</h2>
<p>First step, clone the git repository and checkout the 0.9.7 tag:</p>
<div>
<pre>$ git clone https://github.com/melonjs/melonJS.git
$ cd melonJS
$ git checkout 0.9.7</pre>
</div>
<p>Next, you&#8217;ll want to follow the build instructions to build the library. And you can test the vanilla platformer demo by launching an HTTP server with Python:</p>
<div>
<pre>$ python -m SimpleHTTPServer</pre>
</div>
<p>Now visit the URL in your favorite web browser:</p>
<div>
<pre>http://localhost:8000/examples/platformer/</pre>
</div>
<p>It&#8217;s a very simple game demo, with a handful of enemies and two maps. However, we want multiplayer support as well. What I started with is a simple module to handle the multiplayer communications:</p>
<h2 id="mpjs">mp.js</h2>
<div>
<pre>var Multiplayer = Object.extend({
    init : function (new_player) {
        this.pubnub = PUBNUB.init({
            publish_key   : "demo",
            subscribe_key : "demo"
        });

        this.new_player = new_player;

        // Record my UUID, so I don't process my own messages
        this.UUID = this.pubnub.uuid();

        // Listen for incoming messages
        this.pubnub.subscribe({
            channel : "PubNub-melonJS-demo",
            message : this.handleMessage.bind(this)
        });
    },

    handleMessage : function (msg) {
        // Did I send this message?
        if (msg.UUID === this.UUID)
            return;

        // Get a reference to the object for the player that sent 
        // this message
        var obj = me.game.getEntityByName(msg.UUID);
        if (obj.length) {
            obj = obj[0];
        }
        else {
            var x = obj.pos &amp;&amp; obj.pos.x || 50;
            var y = obj.pos &amp;&amp; obj.pos.y || 50;
            obj = this.new_player(x, y);
            obj.name = msg.UUID;
        }

        // Route message
        switch (msg.action) {
        case "update":
            // Position update
            obj.pos.setV(msg.pos);
            obj.vel.setV(msg.vel);
            break;

        // TODO: Define more actions here
        }
    },

    sendMessage : function (msg) {
        msg.UUID = this.UUID;

        this.pubnub.publish({
            channel : "PubNub-melonJS-demo",
            message : msg
        });
    }
});</pre>
</div>
<p>This class has a constructor and two methods; the constructor takes one callback, and the <code>sendMessage()</code> method is the one we&#8217;ll be using to send game state updates. This module also does some useful things like creating new player objects, and handling player position updates. I placed this file (mp.js) into the <code>platformer</code> directory, and included it within index.html (along with pubnub-3.4.5-min.js)</p>
<h2 id="creating-a-new-multiplayer-object">Creating a new Multiplayer object</h2>
<p>To initialize the Multiplayer object, I added a few lines after the level has been loaded, around line 104:</p>
<div>
<pre>    // Instantiate the Multiplayer object
    game.mp = new Multiplayer(function (x, y) {
        // Create a new player object
        var obj = me.entityPool.newInstanceOf("mainplayer", x, y, {
            spritewidth : 72,
            spriteheight : 98,
            isMP : true
        });

        me.game.add(obj, 4);
        me.game.sort();

        return obj;
    });</pre>
</div>
<p>This creates the object, placing a reference into the <code>game</code> namespace as <code>game.mp</code>, and passes a callback function that will create new player objects when we receive messages from other players we haven&#8217;t seen before.</p>
<p>That <code>isMP : true</code> line is important! It will be used later to determine whether the player object is Keyboard-controlled, or controlled by messages from the network.</p>
<p><em>Side note</em>: to make testing easier, you can disable the &#8220;automatic pause&#8221; feature when navigating away from the browser window. I added the following line just before the call to <code>me.video.init()</code> in main.js:</p>
<div>
<pre>        me.sys.pauseOnBlur = false;</pre>
</div>
<h2 id="turning-the-playerentity-object-into-a-multi-playerentity-object">Turning the PlayerEntity object into a Multi-PlayerEntity Object</h2>
<p>Now we&#8217;re ready to hack the PlayerEntity object to work in a multiplayer environment, sending position updates, and ignoring the keyboard input for the <code>isMP</code> entities. Starting in entities.js at line 25, I added two new properties:</p>
<div>
<pre>        this.isMP = settings.isMP;
        this.step = 0;</pre>
</div>
<p>Then I changed the following lines to be conditional on the value of the <code>isMP</code> property. The viewport follow and key bindings should be skipped if the entity is a multiplayer object:</p>
<div>
<pre>        if (!this.isMP) {
            // set the display around our position
            /* ... snip */

            // enable keyboard
            /* ... snip */
        }</pre>
</div>
<p>The original code has been snipped from the example above, but it should be pretty obvious what needs to be changed here.</p>
<p>In the <code>PlayerEntity.update()</code> method, there are a few things that also need to be made conditional on the value of <code>isMP</code>. This first checks the key status:</p>
<div>
<pre>        if (!this.isMP) {
            if (me.input.isKeyPressed('left')) {
                /* ... snip */
            }

            if (me.input.isKeyPressed('jump')) {
                /* ... snip */
            }
        }</pre>
</div>
<p>There&#8217;s also a call to <code>me.game.viewport.fadeIn()</code> that reloads the level when the player falls into a hole. We could make that conditional too, if we don&#8217;t want to reload the level when other players fall in.</p>
<p>And finally, there&#8217;s a comment at the end of the method about checking if the player has moved. This is the perfect hook for sending out player position updates to other players! I added the following code just before the call to <code>this.parent()</code>:</p>
<div>
<pre>            if (this.vel.x !== 0)
                this.flipX(this.vel.x &lt; 0);

            if (!this.isMP) {
                // Check if it's time to send a message
                if (this.step == 0) {
                    game.mp.sendMessage({
                        action : "update",
                        pos : {
                            x : this.pos.x,
                            y : this.pos.y
                        },
                        vel : {
                            x : this.vel.x,
                            y : this.vel.y
                        }
                    });
                }

                if (this.step++ &gt; 3)
                    this.step = 0;
            }</pre>
</div>
<p>The first two lines will fix the &#8220;direction&#8221; of the player object when it is updated by a message from the network.</p>
<p>The rest contains a basic counter to prevent sending messages too fast, and the final message publish that other players will receive.</p>
<h2 id="play-it-online">Play It Online!</h2>
<p>The final demo can be played <a href="http://parasyte.github.io/melonJS/examples/platformer/">online now</a>! And you can also have a peek at the full patch <a href="https://github.com/parasyte/melonJS/commit/035b420415f9fd8fae167c6289dc916a11eba2ef">here</a>. A much better approach would be separating control logic entirely from the entity. But in this case, the demo serves its purpose. Maybe next time, we can work on synchronizing more of the game state, like enemy positions and individual score counters!</p>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/lightweight-multiplayer-html5-games-with-pubnub-and-melonjs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Employee Spotlight: Dan Ristic</title>
		<link>http://www.pubnub.com/blog/employee-spotlight-dan-ristic/</link>
		<comments>http://www.pubnub.com/blog/employee-spotlight-dan-ristic/#comments</comments>
		<pubDate>Wed, 08 May 2013 18:48:34 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1222</guid>
		<description><![CDATA[Here&#8217;s your chance to meet the people behind The PubNub Real-Time Network. We talk with Dan Ristic, our Senior Front End Engineer (and newest addition to the team). 1. What are you going to be doing for PubNub over the <a href="http://www.pubnub.com/blog/employee-spotlight-dan-ristic/"></a>]]></description>
			<content:encoded><![CDATA[<p><em><strong>Here&#8217;s your chance to meet the people behind The PubNub Real-Time Network. We talk with Dan Ristic, our Senior Front End Engineer (and newest addition to the team).</strong></em></p>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/05/DanRPubNub1.jpg"><img class="alignleft size-large wp-image-1286" title="DanRPubNub" src="http://blog.pubnub.com/wp-content/uploads/2013/05/DanRPubNub1-1024x1024.jpg" alt="" width="584" height="584" /></a></p>
<p><strong>1. What are you going to be doing for PubNub over the next couple months?</strong></p>
<p>I am going to be developing and showing off some really cool demos built on top of the PubNub Real-Time Network! I want to really show off what our API is capable of. Overall, I also will be working on the front end presence of PubNub to make our website and dashboard sleek, shiny, and extremely usable for our customers.</p>
<p><strong>2. So you make things pretty. What&#8217;s your favorite part of that?</strong></p>
<p>My favorite thing about making things pretty is seeing a great user experience come together. I love creating experiences that don&#8217;t just &#8216;wow&#8217; people visually, but make their day-to day easier in some way as well. <em>Elegant but usable</em> is my motto when it comes to my work.</p>
<p><strong>3. Why&#8217;d you pick PubNub?</strong></p>
<p>I picked PubNub because we are making huge strides on what you can build in a web page. I am passionate about pushing the web forward and I feel like I can accomplish that with the PubNub team. There are also <a href="http://www.youtube.com/watch?v=5OvB10Fpp88">free frisbees</a>.</p>
<p><strong>4. When you&#8217;re not at work, what are you doing?</strong></p>
<p>When I am not work I am usually playing video games or hiking. The Bay Area has some amazing sights to see. I also grew up on video games and love to play all types. I play everything from the most complicated games on Steam to the most simple games on the phone and love them all.</p>
<p><strong>5. What is the musical soundtrack to your life?</strong></p>
<p>I would have to say anything by Radiohead. It definitely fits my outlook on life. It is also a great coding soundtrack.</p>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/employee-spotlight-dan-ristic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XCode: How to Make Friends with an Ugly IDE</title>
		<link>http://www.pubnub.com/blog/xcode-how-to-make-friends-with-an-ugly-ide/</link>
		<comments>http://www.pubnub.com/blog/xcode-how-to-make-friends-with-an-ugly-ide/#comments</comments>
		<pubDate>Tue, 07 May 2013 17:33:07 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1215</guid>
		<description><![CDATA[Written By Geremy Cohen Learning a new programming language has always been fun for me. That’s why my job as Manager of Client Solutions at PubNub is literally a geek&#8217;s dream &#8212; it involves working closely with our customers to <a href="http://www.pubnub.com/blog/xcode-how-to-make-friends-with-an-ugly-ide/"></a>]]></description>
			<content:encoded><![CDATA[<p dir="ltr"><em>Written By Geremy Cohen</em></p>
<p dir="ltr">Learning a new programming language has always been fun for me. That’s why my job as Manager of Client Solutions at PubNub is literally a geek&#8217;s dream &#8212; it involves working closely with our customers to provide client SDKs to them in over 50 different languages!</p>
<p dir="ltr">Since I started working here, I&#8217;ve been stocking up on O&#8217;Reilly books and honing my skills in many of these languages, such as Android, Flash, Java, J2ME, JavaScript, Ruby, PHP, &#8230; the list goes on and on. But the one language I&#8217;ve had the hardest time getting my brain around has been Objective-C for iOS development.</p>
<p><img class="alignleft size-large wp-image-1216" title="PubNub Programming Books" src="http://blog.pubnub.com/wp-content/uploads/2013/05/PubNub-Programming-Books-1024x1024.jpg" alt="" width="584" height="584" /></p>
<p dir="ltr">Objective-C is very ugly, and not at all easy on the eyes. It has many sharp edges due to its use of square brackets, and by design it&#8217;s very verbose and syntactically-bloated. Its friends don&#8217;t invite it to the beach or the mall anymore, and at parties, it hangs out in the corner of the room, sober and alone.</p>
<p dir="ltr">In order to really embrace it, one must get past its physical appearance. I tried. And tried. And eventually, I did. And once I did, and learned to appreciate it for what it is, like probably everyone else who has done iOS development, I began hacking around with XCode.</p>
<p dir="ltr">For those who are unaware (as I was until recently), <a href="https://developer.apple.com/xcode/">XCode</a> is the all-in-one, Super-IDE, provided by Apple via the iTunes store.  Nearly all tutorials, HOWTOs, etc. reference this IDE in their documentation. If you try to develop on Linux or Windows for iOS, good luck &#8212; you will have a hard time setting up the open source dependencies and libraries required to achieve this. It’s totally possible, but takes a lot of time, and if you have any issues during coding or compiling, a select few will be able to assist you with your issue, as many people would normally say &#8220;Ok, in XCode, did you try clicking this then that?&#8221; You can probably see where this is going.</p>
<p dir="ltr">&#8220;SO!&#8221; you may say, XCode is only available on Mac, and it’s basically the only supported way of doing iOS development. Apple makes things that are shiny and expensive that everyone MUST LOVE! iPods were awesome, Newton was awesome, so XCode must be awesome! Actually, nope. It kinda sucks. I can honestly say that MS Quick C 5.0 had an easier-to-use QBasic-based IDE than XCode provides.</p>
<p dir="ltr">Although there are ways to extend it via plugins, the base, Apple-supported IDE is pretty weak in features. For example, you can only open two tabs at a time, there is no quick and easy way to reformat code, and the code-commenting logic gets confused by indentation. I can go on and on, but I won&#8217;t because there are <a href="http://devcodehack.com/xcode-sucks-and-heres-why/">articles</a> dedicated to how much XCode sucks already out there.</p>
<p dir="ltr">I asked some iOS developers what they were using, and <a href="http://www.jetbrains.com/objc/">Jetbrains AppCode</a> came up a lot. So I gave it a shot. And I must say, it’s AWESOME!  I may be biased, as I am no stranger to Jetbrains IDEs&#8230;</p>
<p dir="ltr">I was first introduced to <a href="http://www.jetbrains.com/ruby/">RubyMine</a> a few years ago, and was dazzled by how awesome and easy to use it was.  As I now need an IDE that can support nearly every language on the planet here at PubNub, I began using <a href="http://www.jetbrains.com/idea/">Jetbrains IDEA</a> to fill that niche. Aside from the awesome features that you come to expect in an IDE (code reformatting, multiple tabs, debugging tools, built-in diff tools, etc) one of the best things I have become accustomed to with IDEA is the consistency of keyboard commands for a given task, regardless of the language I&#8217;m working with.</p>
<p dir="ltr">AppCode has a very similar look and feel to that of IDEA. So for me, the learning curve was dramatically reduced (I already knew how to debug, compile, diff, etc. using IDEA, so figuring it out with AppCode took me seconds. The only real obstacle I ran into is the key bindings, as I&#8217;m coming from IDEA on Linux via a PC keyboard. But you can&#8217;t have it all, can you?</p>
<p dir="ltr">I would say if you are a fan of IDEA or any of the other Jetbrains IDEs, and you either want to learn iOS development, or are looking for an alternative to XCode, AppCode is awesome. You should still get acquainted with XCode, as you will need it every once in a while, but AppCode has made learning iOS not only tolerable, but actually FUN!</p>
<p dir="ltr">Happy coding!</p>
<div></div>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/xcode-how-to-make-friends-with-an-ugly-ide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Streaming Geo Coordinates from MongoDB to your iPhone App with PubNub using WebSocket SDK</title>
		<link>http://www.pubnub.com/blog/streaming-geo-coordinates-from-mongodb-to-your-iphone-app-with-pubnub-using-websocket-sdk/</link>
		<comments>http://www.pubnub.com/blog/streaming-geo-coordinates-from-mongodb-to-your-iphone-app-with-pubnub-using-websocket-sdk/#comments</comments>
		<pubDate>Thu, 02 May 2013 17:24:49 +0000</pubDate>
		<dc:creator>Stephen Blum</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1188</guid>
		<description><![CDATA[Not long ago we partnered with a high-standards online engineering broker (an online listing service where you can post engineering projects). The partnership involved joint PR and blogging, however a new opportunity/idea was presented. This particular idea stemmed from a <a href="http://www.pubnub.com/blog/streaming-geo-coordinates-from-mongodb-to-your-iphone-app-with-pubnub-using-websocket-sdk/"></a>]]></description>
			<content:encoded><![CDATA[<p>Not long ago we partnered with a high-standards online engineering broker (an online listing service where you can post engineering projects). The partnership involved joint PR and blogging, however a new opportunity/idea was presented. This particular idea stemmed from a commission listed on the broker&#8217;s website which listed requirements for building an integrated Real-time Map Service. We took the opportunity and built a <strong>Ruby GEM</strong> with a sprinkle of documentation and HTML5.</p>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/05/mongo-pipe-iphone-7001.png"><img class="aligncenter size-full wp-image-1161" title="mongo-pipe-iphone-700" src="http://blog.pubnub.com/wp-content/uploads/2013/05/mongo-pipe-iphone-7001.png" alt="" width="700" height="477" /></a></p>
<h2>Quick Start Guide</h2>
<p>For those of you who need a <strong>quick mini-guide</strong> to getting your MongoDB installed and running with data sync streaming directly to your mobile app, you can follow this guide: <a href="https://github.com/stephenlb/pubnub-mongo-pipe">MongoDB Pipe GitHub Repository</a>. It will show you how to download/install MongoDB and the <code>MongoPipe</code> GEM.</p>
<h3>Real-time Data Stream of Geo Coordinates</h3>
<p>Lat/Long from MongoDB replicated to your iPhone App</p>
<p>The commission at the online workplace was posted as a $3,025 bounty. Rather than taking the commission for ourselves, which involves building and delivering the solution in a <em>private exchange</em>, we instead reviewed the specifications and requirements and we developed an open source implementation that you can download and run for your live app today! MIT License, so you can use this however you desire. We even created a GEM for you and made it easy to get started:</p>
<pre><code>gem install monogopipe </code></pre>
<p>Downloading the GEM is the first step in the process and next we&#8217;ll walk you through more details. Actually now may be the time for you to <strong>watch the short video</strong>, so feel free to jump into that now if you want a very brief demonstration and usage covering these points:</p>
<ol>
<li>Installing the Ruby gem and</li>
<li>Executing the commands to setup MongoDB and</li>
<li>Running the Pipe Daemon.</li>
<li>Launching the Map Viewer.</li>
<li>Finally inserting lat/long coords into MongoDB.</li>
<li>Result is live-animated points on a map displayed on the iPhone.</li>
</ol>
<blockquote><p>The video will show usage of the MongoPubNubPipe gem. Source code is available via GitHub if you want to see everything -<a href="https://github.com/stephenlb/pubnub-mongo-pipe">MongoDB Pipe GitHub Repository</a></p></blockquote>
<p>This becomes the <code>new</code> interface that is available with <code>mongopipe</code> gem:</p>
<div>
<pre>MongoPubNubPipe::Connect.new(...)</pre>
</div>
<p>Usage of <code>MongoPubNubPipe</code> is available lower in this document.</p>
<h3><a name="play-video---mongodb-geo-coordinates" href="https://github.com/stephenlb/pubnub-mongo-pipe/blob/master/blog.md#play-video---mongodb-geo-coordinates"></a>Play Video &#8211; MongoDB Geo Coordinates</h3>
<p><iframe src="http://player.vimeo.com/video/60716860" frameborder="0" width="500" height="313"></iframe></p>
<p>&nbsp;</p>
<p>The video demonstrates an implementation of the connection between <strong>MongoDB</strong> and a <strong>mobile device</strong> (an iPhone in this case). This application code and gem library will provide you a way to easily add a live always-on map connection which allows you to send lat/long signals directly to the device displaying the map with the specific Lat/Long DB written into MongoDB. <strong>This will cause the device to draw an animated dot onto the screen of the device in real-time.</strong></p>
<p>The dot that animates is triggered by simply writing to your MongoDB collection directly either through the mongo console or through your RoR/Ruby Server Code. For example here is a MongoDB Console Command that will cause a DB write, creating a Document, which then triggers the sync with the consumer iPhone device that is rendering the map in real-time.</p>
<div>
<pre>db.collection_name.insert({ latlon : [ 1.5, 2.0 ] })</pre>
</div>
<p>Once you&#8217;ve written a Lat/Long coordinate into MongoDB collection, the process begins instantly synchronizing with any connected iPhone. We where able to include several feature requests and here follows the requirements:</p>
<ul>
<li>When a new Lat/Lon document is <strong>inserted</strong> into MongoDB, stream the Lat/Lon data to a mobile device is push data.</li>
<li>Use a <strong>Ruby</strong> or Node.JS Service to stream the data out of MongoDB as it is written in real-time.</li>
</ul>
<p>Simple enough, yes, though it requires moving pieces. We simplified the process and built two modules: one in <code>Ruby</code> and one in <code>HTML5</code>. We&#8217;ll walk through the methods for getting you started and how to hook into the stream on your iPhone App. You can fast-track the tutorial and go strait to the GitHub Repository or <code>gem install mongopipe</code> package for ruby.</p>
<h3><a name="github-repository" href="https://github.com/stephenlb/pubnub-mongo-pipe/blob/master/blog.md#github-repository"></a>GitHub Repository</h3>
<p><a href="https://github.com/stephenlb/pubnub-mongo-pipe">MongoDB Pipe GitHub Repository</a></p>
<pre><code>gem install monogopipe</code></pre>
<h2><a name="how-it-works" href="https://github.com/stephenlb/pubnub-mongo-pipe/blob/master/blog.md#how-it-works"></a>How it Works</h2>
<p>MongoPipe is a new tool powered by <a href="http://www.pubnub.com/">PubNub</a> that <strong>streams your MongoDB Documents</strong> from your MongoDB Collection directly to your iPhone App in less than 0.25 seconds (real-time) using the PubNub Real-time Network. Your iPhone app opens an always-on TCP Socket Connection to PubNub while a dispatch process runs on your MongoDB server via Tailable Cursors to catch inserted documents. The data is streamed and brokered via PubNub Network directly to your iPhone App in real-time.</p>
<h2><a name="mongodb-tailable-cursors" href="https://github.com/stephenlb/pubnub-mongo-pipe/blob/master/blog.md#mongodb-tailable-cursors"></a>MongoDB Tailable Cursors</h2>
<p>The ruby GEM <code>mongopipe</code> utilizes the tailable cursor interface provided by MongoDB Core. Document Data is then piped directly through the PubNub Network which uses a direct broadcast synchronization socket with the mobile app.</p>
<p>Next we&#8217;ll show you what the process is to get the <code>mongopipe</code> running on your Ruby Server.</p>
<h3><a name="make-sure-mongodb-is-running" href="https://github.com/stephenlb/pubnub-mongo-pipe/blob/master/blog.md#make-sure-mongodb-is-running"></a>Make sure MongoDB is running</h3>
<pre><code>mongod </code></pre>
<p>Next open a text editor and copy/paste the following mongopipe example.</p>
<div>
<pre>require 'rubygems'
require 'mongopipe'

## ------------------------------------------------------------------------
## Pipe MongoDB for Inserts
## ------------------------------------------------------------------------
MongoPubNubPipe::Connect.new(
    :puts_usage    =&gt; true,
    :publish_key   =&gt; 'demo',
    :subscribe_key =&gt; 'demo',
    :db            =&gt; 'test',
    :collection    =&gt; 'cap_collection',
    :callback      =&gt; lambda{ |doc|
        ## Optional Callback Called on Doc Insert
        ## Remove :callback if you don't need it.
        puts(doc)
    }
).pipe()</pre>
</div>
<p>Save this to a file <code>pipe.rb</code> for example then <strong>execute it</strong>.</p>
<pre><code>ruby pipe.rb </code></pre>
<p>This will connect directly to MongoDB and print usage guide on next steps. The video covers only a demonstration of this process. Here is a sample output of what may be provided via the <code>puts(doc)</code> output:</p>
<pre>Step 1: Open Your Browser to Show PubNub Pipe Console</pre>
<pre><span style="font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; font-style: normal; line-height: normal;">&gt; open http://www.pubnub.com/console?channel=test.cap_collection </span></pre>
<pre><span style="font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; font-style: normal; line-height: normal;">Step 2: Open Demo Map on Your Phone </span></pre>
<pre><span style="font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; font-style: normal; line-height: normal;">&gt; open http://goo.gl/HAqAv#test.cap_collection </span></pre>
<pre><span style="font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; font-style: normal; line-height: normal;">Step 3: Insert Test Data </span></pre>
<pre><span style="font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; font-style: normal; line-height: normal;">&gt; ./mongo</span></pre>
<pre><span style="font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; font-style: normal; line-height: normal;">&gt; use test</span></pre>
<pre><span style="font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 13px; font-style: normal; line-height: normal;">&gt; db.cap_collection.insert({ latlon : [ 1.5, 2.0 ] }) </span></pre>
<h2><a name="remaining-details" href="https://github.com/stephenlb/pubnub-mongo-pipe/blob/master/blog.md#remaining-details"></a>Remaining Details</h2>
<p>This blog entry was intended to give you a quick skim over the details on how the <code>mongopipe</code> ruby gem works and what is involved in coordinating the embeddable mobile HTML5 animated map.</p>
<p>If you have any more questions please tweet <a href="http://twitter.com/PubNub">@PubNub</a> directly.</p>
<p>You may be curious about the connectivity mechanism between your iPhone App and your MongoDB Sever. Checkout the <strong>PubNub WebSocket Reference</strong> below to see the transport mechanism utilized.</p>
<p>Thank you for reading!</p>
<h2><a name="pubnub-websocket-reference" href="https://github.com/stephenlb/pubnub-mongo-pipe/blob/master/blog.md#pubnub-websocket-reference"></a>PubNub WebSocket Reference</h2>
<p>The MongoDB Pipe uses the PubNub Network WebSocket interface which provides an always-on socket connection to your iPhone app. The PubNub Network WebSocket acts as a broadcast receiver and syncs directly to your mobile device in real-time from your MongoDB server via MongoPipe.</p>
<p>Following is an example of how the Map app implements the socket:</p>
<div>
<pre>// Create Socket Connection
var socket = new WebSocket(
    'wss://pubsub.pubnub.com/PUBLISH_KEY/SUBSCRIBE_KEY/CHANNEL'
);

// Set Message Receiver Function
socket.onmessage = receiver;

// Receiver Function Prints Data Result
function receiver(evt) { console.log(evt.data); }</pre>
</div>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/05/pubnub-mongo-pipe-logo-transparent.png"><img class="aligncenter size-full wp-image-1182" title="pubnub-mongo-pipe-logo-transparent" src="http://blog.pubnub.com/wp-content/uploads/2013/05/pubnub-mongo-pipe-logo-transparent.png" alt="" width="615" height="488" /></a></p>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/streaming-geo-coordinates-from-mongodb-to-your-iphone-app-with-pubnub-using-websocket-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customer Profile: Stageit</title>
		<link>http://www.pubnub.com/blog/customer-profile-stageit/</link>
		<comments>http://www.pubnub.com/blog/customer-profile-stageit/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 20:46:55 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1084</guid>
		<description><![CDATA[Stageit is an online concert venue, allowing performers to broadcast live real-time events, including selling tickets, all within a fully interactive environment. Fans can chat with the event&#8217;s artist, and even tip them during the show. Stageit’s artists include Jimmy <a href="http://www.pubnub.com/blog/customer-profile-stageit/"></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://stageit.com">Stageit</a> is an online concert venue, allowing performers to broadcast live real-time events, including selling tickets, all within a fully interactive environment. Fans can chat with the event&#8217;s artist, and even tip them during the show. Stageit’s artists include Jimmy Buffet, Rick Springfield, Korn, independent artists, as well as YouTube sensations looking for a new way to monetize their multi-million view YouTube videos.</p>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/04/Stageit.jpg"><img class="aligncenter size-large wp-image-1132" title="Stageit" src="http://blog.pubnub.com/wp-content/uploads/2013/04/Stageit-1024x492.jpg" alt="" width="584" height="280" /></a></p>
<h2><strong>Challenge</strong></h2>
<p><strong></strong>The appeal of Stageit’s service is the ability for artists to interact in real-time with a large number of fans. In launching its service, Stageit had two key concerns. First, they wanted to power an unlimited number of users to chat live during a real-time show. Secondly, it was critical that users experienced zero downtime. At the time Stageit was using SocketIO and XMPP as a technology solution. However, these technologies didn’t scale effectively resulting in a limited number of chat participants and frequent downtime.</p>
<p>After looking at other real-time messaging systems, Stageit ultimately decided to go with The PubNub Real-Time Network. The reasons were simple. PubNub could empower an unlimited amount of fans to interact with artists seamlessly—with no cap on scalability. PubNub also offered unparalleled reliability and wide ranging device support.</p>
<h2><strong>PubNub Solution </strong></h2>
<ol>
<li>Stageit’s existing XMPP chat servers and secondary servers worked well until the company hit over 400 people then quickly became unreliable.</li>
<li>Pubnub was used to replace the backend SocketIO and NodeJS servers and worked very well but the XMPP servers were still crashing.</li>
<li>Therefore, Stageit replaced XMPP with PubNub and wrote a Chat Wrapper that talks to PubNub using Goliath to support Business and Security logic.</li>
<li>The system has been successfully tested to support five times their normal capacity, delivering the real-time user experience Stageit set out to create.</li>
</ol>
<h2> <strong>PubNub Value</strong></h2>
<ol>
<li>Wider browser and device support.</li>
<li>Redundancy and high-availability.</li>
<li>Reliable and scalable.</li>
<li>APIs are easy to learn.</li>
<li>Stellar service and support.</li>
</ol>
<p style="text-align: center;"><em>&#8220;When we started to experience explosive traffic we turned to The PubNub Real-Time Network to</em> <em>take care of our real-time infrastructure challenges. With the help of their top-notch support and product, we are now able to put all our focus into growing our business,</em><br />
<em> instead of baby sitting our servers.&#8221; -Evan Lowenstein, Founder and CEO</em></p>
<p style="text-align: center;">
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/customer-profile-stageit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Employee Spotlight: Jordan Shaw</title>
		<link>http://www.pubnub.com/blog/employee-spotlight-jordan-shaw-2/</link>
		<comments>http://www.pubnub.com/blog/employee-spotlight-jordan-shaw-2/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 09:00:21 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1125</guid>
		<description><![CDATA[Here&#8217;s your chance to meet the people behind The PubNub Real-Time Network. In a first installment we talk with Jordan Shaw, one of our Full Stack Software Engineers. 1. Full Stack Software Engineer? What&#8217;s that mean? I sling the codez <a href="http://www.pubnub.com/blog/employee-spotlight-jordan-shaw-2/"></a>]]></description>
			<content:encoded><![CDATA[<p><em><strong>Here&#8217;s your chance to meet the people behind The PubNub Real-Time Network. In a first installment we talk with Jordan Shaw, one of our Full Stack Software Engineers.</strong></em></p>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/04/jordan1.jpg"><img class="aligncenter size-full wp-image-1139" title="jordan1" src="http://blog.pubnub.com/wp-content/uploads/2013/04/jordan1.jpg" alt="" width="450" height="273" /></a></p>
<p><strong>1. Full Stack Software Engineer? What&#8217;s that mean?</strong></p>
<p>I sling the codez from anything interacting with the core to what our clients see. Ergo, Day to day I write low level python stuff that interacts directly with the core C process all the way up to writing JS/CSS/HTML for our customers to interact with the core.</p>
<p><strong>2. What&#8217;s the coolest part of working at PubNub?</strong></p>
<p>Working on stuff that is connecting millions and millions and millions (The Rock WWE reference) of people, using the software everyday and the camaraderie in the office.</p>
<p><strong>3. You recently moved from North Carolina to San Francisco, that&#8217;s a long way. What do you like most about being here?</strong></p>
<p>It&#8217;s nice being close to a lot of new things to explore, Golden Gate Bridge, Tahoe, Yosemite&#8230;etc. The tech community is obviously larger so chances are I&#8217;ll walk into a bar and start talking about python or ruby with someone.</p>
<p><strong>4. What&#8217;s one reason every app should be real-time?</strong></p>
<p>The most successful and engaging apps these days are content driven and contextual with what&#8217;s going on right now, in the moment. So if your app is able to engage customers in a timely and relevant way it will be less likely to go stale. No one likes stale apps!</p>
<p><strong>5. When you&#8217;re not at work, what are you doing?</strong></p>
<p>Usually running, riding my bike, watching the Netflix or Hulu Plus, or there is usually some birthday party in the city I&#8217;ll go crash with my roommate.</p>
<p><strong>6. Wait, what? You and your roommate crash random B-Day bashes?</strong></p>
<p>Well, not exactly. I usually have some connection like a friend&#8217;s work friend&#8217;s sister. I show up, eat cake and sing Happy Birthday without really knowing anyone. It&#8217;s fun.</p>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/04/jordan21.jpg"><img class="aligncenter size-full wp-image-1143" title="jordan2" src="http://blog.pubnub.com/wp-content/uploads/2013/04/jordan21.jpg" alt="" width="450" height="273" /></a></p>
<p><strong>6. What&#8217;s the most challenging part of your day?</strong></p>
<p>The morning. West coast is 3 hours behind everyone else (give or take 2 hours) so there&#8217;s usually a lot of fires to deal with straight out of the gate.</p>
<p><strong>7. If you had a soundtrack to your life, what would it be?</strong></p>
<p><a href="http://www.youtube.com/watch?v=E1eX6BQ1oGo" target="_blank">Tarzan</a> (Phil Collins&#8217;s version of course).</p>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/employee-spotlight-jordan-shaw-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PubNub Expands Staff and Office</title>
		<link>http://www.pubnub.com/blog/pubnub-expands-staff-and-office/</link>
		<comments>http://www.pubnub.com/blog/pubnub-expands-staff-and-office/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 09:05:00 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1064</guid>
		<description><![CDATA[You can only fit so many desks in a given space before you have to start stacking them on top of each other. When looking to accommodate the rapidly growing PubNub team, stacking employees turned out to be unfeasible, so we <a href="http://www.pubnub.com/blog/pubnub-expands-staff-and-office/"></a>]]></description>
			<content:encoded><![CDATA[<p>You can only fit so many desks in a given space before you have to start stacking them on top of each other. When looking to accommodate the rapidly growing PubNub team, stacking employees turned out to be unfeasible, so we needed another option. To give everyone a little more room to breathe, PubNub doubled our office space at the current location. The new section has quickly taken on the nickname &#8220;The PubNub Annex&#8221;.</p>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/04/door-sign.jpg"><img class="alignnone size-large wp-image-1065" title="door-sign" src="http://blog.pubnub.com/wp-content/uploads/2013/04/door-sign-1024x660.jpg" alt="" width="584" height="376" /></a></p>
<p>The increased elbow room is one perk of the new space, but the fastest Real-Time Network on earth needs some cool racing stripes too!  Check out the time lapse of a small part of the new paint job below:</p>
<p><a href="http://blog.pubnub.com/wp-content/uploads/2013/04/gif_worker1.gif"><img class="aligncenter size-full wp-image-1082" title="gif_worker" src="http://blog.pubnub.com/wp-content/uploads/2013/04/gif_worker1.gif" alt="" width="480" height="319" /></a></p>
<p>&nbsp;</p>
<p>In addition, the new office space overlooks the heavily congested 17th and Mississippi intersection. When we&#8217;re not working on the PubNub Real-Time Network, were watching 18 wheelers try to maneuver around tight corners while avoiding fork lifts and pedestrians. Sometimes they&#8217;re even successful!</p>
<p>To say the least, everyone&#8217;s happier with the new space. Not to mention we have plenty of room to continue to add new desks (and new people). No stacking required.</p>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/pubnub-expands-staff-and-office/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PubNub Takes Top Honors at WebRTC</title>
		<link>http://www.pubnub.com/blog/pubnub-takes-top-honors-at-webrtc/</link>
		<comments>http://www.pubnub.com/blog/pubnub-takes-top-honors-at-webrtc/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 16:35:09 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[webrtc]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1045</guid>
		<description><![CDATA[An awkward high five and light speed coding weren’t the only highlights of PubNub’s product demo at the WebRTC Conference and Expo. Competing with 12 other companies, PubNub took top honors including Best WebRTC Demo and Audience Choice award. CEO <a href="http://www.pubnub.com/blog/pubnub-takes-top-honors-at-webrtc/"></a>]]></description>
			<content:encoded><![CDATA[<p dir="ltr">An awkward high five and light speed coding weren’t the only highlights of PubNub’s product demo at the WebRTC Conference and Expo. Competing with 12 other companies, PubNub took top honors including Best WebRTC Demo and Audience Choice award. CEO Todd Greene and CTO Stephen Blum presented four brief PubNub demos showcasing the wide range of real-time services that PubNub offers, including PubNub’s ability to connect a phone call in under a second, group chat capabilities, sharing content and user activity in real-time. In addition, Greene and Blum won over the crowd with their humorous and charismatic presentation and were awarded the Audience Choice award.</p>
<p>Want use PubNub to create your own WebRTC app? <a href="http://www.pubnub.com/free-trial">Sign-up for a free API Key</a> and start building apps in just minutes.</p>
<p><iframe src="http://www.youtube.com/embed/n33S29uvl84" frameborder="0" width="560" height="315"></iframe></p>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/pubnub-takes-top-honors-at-webrtc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PubNub CEO Todd Greene on Untether.tv</title>
		<link>http://www.pubnub.com/blog/pubnub-ceo-todd-greene-on-untether-tv/</link>
		<comments>http://www.pubnub.com/blog/pubnub-ceo-todd-greene-on-untether-tv/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 16:39:55 +0000</pubDate>
		<dc:creator>Dan LaBelle</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.pubnub.com/?p=1029</guid>
		<description><![CDATA[Todd Greene, PubNub Co-Founder and CEO, talks with Rob Woodbridge of Untether.tv. This is Todd&#8217;s second appearance on Untether.tv and together he and Rob discuss entrepreneurship, the growing demand for real-time applications and the importance of a Real-Time Network. Here <a href="http://www.pubnub.com/blog/pubnub-ceo-todd-greene-on-untether-tv/"></a>]]></description>
			<content:encoded><![CDATA[<p>Todd Greene, PubNub Co-Founder and CEO, talks with Rob Woodbridge of Untether.tv. This is Todd&#8217;s second appearance on Untether.tv and together he and Rob discuss entrepreneurship, the growing demand for real-time applications and the importance of a Real-Time Network.</p>
<p><iframe name="wistia_embed" width="640" height="387" src="http://fast.wistia.net/embed/iframe/53s5286z0t?controlsVisibleOnLoad=true&amp;playerColor=97af3f&amp;plugin%5BpostRoll-v1%5D%5Blink%5D=http%3A%2F%2Fwww.untether.tv&amp;plugin%5BpostRoll-v1%5D%5Bstyle%5D%5BbackgroundColor%5D=%232200ff&amp;plugin%5BpostRoll-v1%5D%5Bstyle%5D%5Bcolor%5D=%23ffffff&amp;plugin%5BpostRoll-v1%5D%5Bstyle%5D%5BfontFamily%5D=Gill%20Sans%2C%20Helvetica%2C%20Arial%2C%20sans-serif&amp;plugin%5BpostRoll-v1%5D%5Bstyle%5D%5BfontSize%5D=36px&amp;plugin%5BpostRoll-v1%5D%5Btext%5D=Get%20this%20in%20your%20inbox%20as%20soon%20as%3Cbr%2F%3Eit%20is%20ready%20by%20clicking%3Cbr%2F%3Ehere.&amp;plugin%5Bsocialbar-v1%5D%5BbadgeImage%5D=http%3A%2F%2Fembed.wistia.com%2Fdeliveries%2Fc0d877a5e98375b3ab39c628e94c51972cc4d61b.jpg%3Fimage_crop_resized%3D100x20&amp;plugin%5Bsocialbar-v1%5D%5BbadgeUrl%5D=http%3A%2F%2Funtether.tv%2Fsubscribe-to-untether-tv-2%2F&amp; ;plugin%5Bsocialbar-v1%5D%5Bbuttons%5D=embed-twitter-facebook&amp;plugin%5Bsocialbar-v1%5D%5Blogo%5D=true&amp;plugin%5Bsocialbar-v1%5D%5BpageUrl%5D=http%3A%2F%2Funtether.tv&amp;version=v1&amp;videoHeight=360&amp;videoWidth=640" allowtransparency="true" frameborder="0" scrolling="no"></iframe></p>
<p>Here is a quick reference of what was covered in the show.</p>
<ol>
<li>What is PubNub <strong>2:10</strong></li>
<li>What are real time applications <strong>2:40</strong></li>
<li>How are you selling this very broad service offering <strong>4:30</strong></li>
<li>What are the implications of real time applications <strong>6:10</strong></li>
<li>Why has it been easy to sell PubNub services <strong>11:20</strong></li>
<li>Who are you selling to? Who is your customer? <strong>13:20</strong></li>
<li>Are your customers mostly new products or existing products <strong>14:30</strong></li>
<li>How are social television apps using PubNub? <strong>16:25</strong></li>
<li>What happened with Loyalize <strong>18:40</strong></li>
<li>Why sell Loyalize to Viggle? <strong>20:30</strong></li>
<li>Why you shouldn’t say no to an acquisition conversation <strong>23:35</strong></li>
<li>How did you balance between the two companies? <strong>25:45</strong></li>
<li>Was the version of PubNub you re-joined different than the one your started 4 years back? <strong>28:40</strong></li>
<li>What is your vision for PubNub – will you become a consumer brand? <strong>30:35</strong></li>
<li>Where did the name come from? <strong>32:40</strong></li>
<li>How did you manage raising money for PubNub at the same time selling Loyalize? <strong>33:50</strong></li>
<li>How much activity flows through PubNub <strong>34:45</strong></li>
<li>How do you not get into other businesses and remain true to your vision? <strong>38:30</strong></li>
<li>Why should companies look at PubNub to bring real-time computing into their applications <strong>39:40</strong></li>
<li>What should app developers focus on? Stagent case study <strong>44:20</strong></li>
<li>Does this limit innovation or support it <strong>46:25</strong></li>
<li>How did you land your first customers <strong>50:10</strong></li>
<li>Is there anything you would have done differently with PubNub? <strong>51:30</strong></li>
</ol>
<div></div>
<p class="vapp_wrapper"><a class="vapp" href="http://www.pubnub.com/blog/view-all/">View all posts</a></p><!-- .vapp_wrapper -->]]></content:encoded>
			<wfw:commentRss>http://www.pubnub.com/blog/pubnub-ceo-todd-greene-on-untether-tv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- CDN Linker <https://github.com/wmark/CDN-Linker/tags> active -->