Skip to content

Ian Jennings Posts

Time for the next thing

After 5 1/2 years, Friday was my last day at PubNub.

My role at PubNub was unlike anything I’d ever heard of. After a year I gave up on trying to find a title to describe me.

While there, I made PubNub’s most popular GitHub repository. I made their most popular YouTube video. And above all, I prototyped, branded, documented, and launched a product driving a massive part of their strategy.

Right now ChatEngine is being used by almost a million people per month.

My entire life has been supported by mentors who believed in me, saw my drive, and let me loose. My parents, MorAnthony, and most recently Stephen.

So thanks to PubNub for the half decade opportunity to experiment, learn, and grow in my own way. And thanks to the team who’s shoulders I stand on.

It’s time for the next thing.

Dear Professor,



Attached is my business week paper summary.

As I mentioned in my note turned in when this paper was intended to be submitted, I have been very busy starting a company from the website I showed you in class. I am taking trips up to New York more than twice a week; sleeping over friends houses or offices where hacakthons are thrown.

Also note, because my final project proposal has changed so drastically from the beginning of the course, I have included a cover page with an updated proposal to provide context for articles relating to my proposal. Some of the articles I’ve read in Business Week have proven to be invaluable to me during this time. One article in particular got me very excited as it validates our business plan.

Although I have been slacking in class, I have been gaining real world entrepreneurship experience.

Ian Jennings Jablonowski



Thanks for cutting me some slack a couple years ago.

The company I mentioned above sold to Intel today.


Minor League

Got some cool feedback on today:

Hello, I just wanted to recommend making it so when you are on your phone you can better navigate what’s on your computer if you are not actually looking at your computer. I use it mostly to power pandora to listen to music over a PA system, and when i need to run it I just have to remember where all the buttons are without looking at the computer.

I actually work for a Minor League Baseball team, and I use this app to control pandora in our stadium so I don’t have to keep going all the way up to the press box to change the channel, skip, thumbs up or down. I would just recommend making it easier to switch stations from the app without being at the computer.

Show Your Work


I don’t go to Urban Outfitters often. But when I do, I buy small square yellow books that are less than 100 pages and half pictures.

I bought “Show Your Work” by Austin Kleon thinking it would help get inside the minds of users for my new project, DevPort. It turns out it inspired me to set up YAB (yet another blog). So here we are, once again.

Most of my Tumblr stuff made it over; though I’ve combined all three of my Tumblrs into a single blog found here.

One interesting note from “Show your work” is how Austin referred to blogs. He calls them “your own little corner,” which is easy enough to relate to. He also suggests using your own domain, your own site, and your own blog engine. Avoid the trendiness, restrictions, and judgements from Tumblr, Medium, etc. This is your corner and you should decide what that means.

I think I was too intimidated to post more on Tumblr knowing that all my friends, employers, and a handful of Venture Capitalists would get pinged about it. Then again, I was afraid nobody would read my content if I didn’t have a network to support it.

Well fuck it, now I have my corner and I’m going to write whatever I want.

Reserve your Developer Portfolio subdomain

I’m working on a new project called DevPort, a platform for developer portfolios. The idea is to help developer showcasse their apps, websites, and GitHub projects in a visual way.

  • Import your work from places it already exists online. Supports GitHub, iTunes App Store, Websites, and bulk image uploads.
  • Automatically grab screenshots, media, codeblocks, readme, and more from online endpoints. Your projects will look great, even if they’re command line tools.
  • Customize your portfolio using your favorite editor. Use our npm module to edit and preview your portfolio locally. Portfolios use mustache templates just like Jekyll and Ghost.
  • Every user user gets a professional subdomain with storage space. Easily deploy your portfolio and keep it up.

The idea was inspired from countless “Hackathon Hackers” Facebook posts where users would ask “what do you use to host your personal site?”

My goal is for the answer to be “DevPort.”

Reserve your username here:


When I was 15 or 16 I saw the move “Hackers” and it became my fantasy. I never spray painted my computer or learned how to roller blade; I thought learning to crack was the sure path to my “Hackers” enlightenment.

As I past through different scenes: academia, hackathons, the startup life, electronic music clubs… each world offering a taste but not quite fully encapsulating my fantasy.

Over the years I’ve had this urge to create some gathering place for hackers. First it was the “Hacker Hotel,” and most recently the “Hacker Bar.” Of course, in each scenario I imagine the bunker the characters in “Hackers” hang out in. On paper, these ideas quickly morph into kushier hangouts for startup folks.

At Electric Forest this year, my friend Andrew broke out a “Tron costume” and I remember slapping his back and shouting “you’re keeping the hacker spirit alive!”

It’s all I’ve ever hoped to do, but I can’t even explain what the hacker spirit is.

It’s somewhere between startup life and touring with Phish in a converted school bus. It’s blasting Gramatik out of a speaker while riding a neon yellow bike around downtown NYC. It’s wearing Google Glass at a standup desk with three monitors. It’s smoking hookah in UV light in your dirty old basement. It’s going to the arcade everyday to play DDR. It’s starting your ancient car with a switch you wired in yourself from RadioShack. It’s being a virtual worker. It’s a warehouse full of 3d printers, laser cutters, and an auto bay. It’s doing yoga to dubstep. It’s knowing your friends as screen names first and flesh months later.

Like any culture it’s impossible to define, but you know what it means to be a part of.

You think you are going into business by yourself…

Came across this in my DropBox. Seems to be from a weekly school assignment where we’re supposed to write a passage based on something from Businessweek.

The challenge of starting a small business.

Rather than cite an article this week I think it would be more interesting to write about a conversation I had with a local business owner.

I’ve lived on the corner of Hamilton and Louis Street for the past three years of college. There is a local pizzeria called “Ta-ta’s” that is famous for being “the only pizza place until Easton ave.” It’s far down Hamilton Street, next to a convenience store but far away from competing pizzerias. They deliver, but not often enough to have a reputation.

The food does not have a reputation for being phenomenal, but the owner, Andy, gets a fair share of business because of his location. Andy is there almost every day. Ta-ta’s also has abnormal hours, as the pizzeria is only open from 4:00pm to 2:00am.

Because the pizzeria is so close to my house, I have eaten there quite a lot over the past few years. I’ve made small talk with Andy now and then. For a while I thought he was the smartest business man on College Ave.
He was far away from other pizzerias, he was only open during the hours that mattered for college students, and the store quickly became a regular place for underground punk rockers going to shows close by. Andy also stocks more than 100 unique drinks at Ta-tas.

I got dinner from the store last night and Andy told me I could get $5 off by using a referral code he had on the counter. I stepped behind the counter onto his Windows 95 machine and entered in my information and billing address into He was very eager to get my referral.

I figured if he was comfortable letting me behind the counter he would be alright with me talking about his business a little. I was always curious about how he saw his business. Why did he open so late? Why didn’t he deliver more? Did he ever take a day off?

It turns out that Andy is an extremely hard working man. He outlined a normal day for me. He wakes up at 9:00am to go to stores. It might be the restaurant depot, Cosco, Shop Rite, who knows. He then has to go to the bank to get change (this morning needed two bank stops because he forgot something). After that, he picks up his two employees and heads to the store.

He works a full day, opening the store at 3:00pm and ending at 3:00am. After the store is clean, he drops off his employees and records the sales for the day in an Excel spreadsheet. He mentioned that he would be lucky to sleep by 4:00am to wake up the next day at 9:00am again.

I asked him, “why don’t you hire anybody?” He mentioned that he hires now and then, but has caught numerous employees stealing from the register. He said that once the employees get sick or call out, he must come in anyway. He needs a lot of trustworthy employees for this to work correctly.

Another customer came in through the door and Andy quickly zipped his mouth. His last words were “You think you are going into business by yourself, and it turns out you’re doing all the work. Sometimes you really wonder if it’s worth it.”

He greeted the next customer with a smile.

Mobile Group Chat with One Line of JavaScript

One of our first and most popular blog posts is Chat in 10 Lines of Code. In my constant quest to outperform PubNub founder and CTO Stephen Blum, I decided to challenge myself to create a mobile group chat demo that was responsive and ready for mobile in just one line of JavaScript.

mobile group chat

Yes, that’s right…with one line of code you’ll get a mobile group chat app that looks like this:

mobile group chat

Today, I’m happy to announce the release of the PubStrapChat jQuery plugin. With this library you can add mobile group chat to your site, mobile or otherwise, with a single line of javascript:

The chat box drops right into any div on your page. It’s fully responsive and will look great on any mobile site with Bootstrap. Or, you can ditch Bootstrap and style it yourself.

You’ll first need to sign up for a PubNub account. Once you sign up, you can get your unique PubNub keys in the PubNub Developer Portal.

All the code you need to get started and an example is below:

See the Pen PubStrapChat by Ian Jennings (@ianjennings) on CodePen.

The PubStrapChat plugin can be extended to use your own PubNub API keys and even your own user authentication system. You can configure the plugin by using an options object.

Check out the documentation to get it working with your custom user system. You can even set it up to use third party authentication systems like Facebook.

Building a Devtools Chrome Extension to monitor traffic from PubNub

Why a custom PubNub Chrome Extension?

When I started developing, all the PubNub publish and subscribe calls got noisy and confusing. To solve this, I created a custom function to manually title and log all PubNub traffic to the Chrome console inside Dev Tools.

You might ask: “doesn’t all traffic show up in the network tab?” It’s true, but we’re really talking about all traffic here, in one giant list. It’s unorderly and difficult to decipher. Plus, we only really care about a small portion of this network traffic; the JSON messages received.

You might be familiar with the ability to debug a single WebSocket in the Network tab. Wouldn’t it be great if the same was true for PubNub?

Because I carry the burden of creating all the most awesome stuff for PubNub, I decided to take matters into my own hands. I built a Chrome extension that does just this. It takes PubNub traffic and displays it in a fashion similar to WebSockets.

You can read more about this extension here. We just released a second version that adds message filtering and traffic graphs.

Google Chrome Devtools Extension APIs

Many developers are familiar with Chrome Extensions, but many are surprised to find that you can also create extensions for Chrome Developer Tools.

A DevTools extension adds functionality to the Chrome DevTools. It can add new UI panels and sidebars, interact with the inspected page, get information about network requests, and more. DevTools extensions have access to an additional set of DevTools-specific extension APIs:

Extending DevTools – Google Chrome

All we’re interested in is monitoring the PubNub traffic and formatting it in a way that makes sense. Lucky for us, Chrome Devtools exposes a network api that lets us catch all incoming traffic. Perfect.

Use the API to retrieve the information about network requests displayed by the Developer Tools in the Network panel. – Google Chrome

But where do we log the traffic? Devtools extensions allow us to create a new panel just for our extension. Again, just what we needed.

Use the chrome.devtools.panels API to integrate your extension into Developer Tools window UI: create your own panels, access existing panels, and add sidebars.

chrome.devtools.panels – Google Chrome

The third special API for Chrome Devtools is inspectedWindow. The PubNub Console extension does not make use of it, but it’s worth an overview.

Use the chrome.devtools.inspectedWindow API to interact with the inspected window: obtain the tab ID for the inspected page, evaluate the code in the context of the inspected window, reload the page, or obtain the list of resources within the page.

chrome.devtools.inspectedWindow – Google Chrome

I’ve made a few extensions in the past, so I started with the Chrome Preprocessor Example from the samples page.

Sample Extensions – Google Chrome

The goal here is to provide a general overview of how our Devtools extension works, but not necessarily a tutorial on how to make a full extension. However, if you want to follow along at home you’ll notice that almost everything you need to get started is within the Panel directory. I also highly recommend taking a look at the rest of the devtools examples.

Using the API

Let’s take a look at how to monitor network traffic. We start by register a watcher for all page requests and fire a function when a new one is complete:

Great, now whenever a new network request is finished our function is fired. It works just like the Network tab.

But we don’t want every request, just stuff from PubNub. So let’s take a look at exactly what this function is returning to us so we can filter it.

Network requests information is represented in the HTTP Archive format (HAR). The description of HAR is outside of scope of this document, please refer to HAR v1.2 Specification.

So we can access the URI of the request through the *,request.url parameter. I did some googling and found this awesome URI parser gist which will really help us out.

Now it’s just a matter of parsing the URI according to the PubNub Rest Push API. All PubNub push traffic is sent through the request headers, so this is all we need to keep track of PubNub publish.

However, the body of subscribe calls is sent through the request content. You’ll notice from the documentation that we don’t get request content for free.

There’s an additional function we need to call. It is cleverly named getContent() and is a property of the object returned from the first function.

PubNubChromeConsoleRoundAnd that’s the core of it! From here the extension does some additional work to check if PubNub messages have been bundled. Everything else is formatting, user interface, and shiny graphs.

You can learn more and download the full Chrome extension here.

PubNub Console for Google Chrome Update

nullWe’re happy to announce that we’ve released a number of new features and upgrades to the PubNub Console for Google Chrome. We released the extension just last month and have already made numerous improvements to the interface.First, you’ll notice an overall improved styling of the console, as well as a shiny new PubNub logo in the toolbar for aesthetics.The most requested upgrade (by the PubNub team themselves) was the ability to see exactly when a message was published or received. You can now see the date appear next to the message type.datesWe’ve also added the ability to filter the type of messages you see in output. Now you can choose to see only “publish” or “subscribe” type messages from a pulldown in the toolbar.

filterNext, we added a here_now shortcut to the toolbar. When you click this button you’ll be able to see a list of all UDID’s currently subscribed to the channel.

here_nowFinally, we’ve added sparklines next to channel names so it’s easier to see which channels are receiving messages right now. The sparklines graph messages published + subscribed over the past 10 seconds.

sparklinesDid we miss something? Let us know what kind of improvements you want to see in the PubNub Console for Google Chrome! Tweet @PubNub or contact us.

Need more help with the PubNub Console for Google Chrome? Check out our how-to video below: