Building a Chat App, and The Difficulties of Pizza Delivery

cover
30 Jan 2018

Hacker Interview:

Please welcome PubNub as the weekly sponsor of Hacker Noon! PubNub is a global Data Stream Network (DSN) and realtime infrastructure-as-a-service (IaaS) company based in San Francisco, California.

We’re going to hear from Ian Jennings, the brainchild behind PubNub’s ChatEngine and many, many other cool products. ChatEngine is an open and extensible chat SDK and APIs for building powerful 1:1 and group chat quickly. We’re going to discuss that and some of his past work, such as selling a company he started at Rutgers to Intel and controlling a swarm of drones in real-time.

David: What makes a good hacker?

Ian Jennings: To me, hacking is about a focus on outcome. I want this done, and I’m gonna find the easiest way to do it. It’s a disregard for standards and a celebration of cutting corners. Hacking is the punk rock of computer engineering.

The cool part about focusing on the results is it turns the implementation into its own game of trying to reduce effort. What library can I pull in? That’s expensive, can I do this myself for free? Can I just bust open my coffee machine and hook it up to the internet?

Engineering is very regimented. I mean, we run linting programs so that all everyone’s coding style conforms to appear exactly the same.

Hacking is the absolute opposite of that. It’s total freedom. It’s commonly done alone. Nobody can tell a hacker that “they can’t do that.” It’s like, I’m gonna get this done, and I’m gonna do it my way.

To me, a great hacker is someone who has a goal, creates their own solution, and inspires others to do the same.

Why did you/PubNub make ChatEngine?

PubNub is a realtime data stream network and doesn’t hold an opinion to what kind of system you want to build. PubNub can power real time notifications, multiplayer games, internet controlled sprinkler systems, and even fleet management and ridesharing use cases. However, more than half our customers use PubNub for chat.

So we set out to build a special product that sits on top of PubNub and makes it even easier to build chat into your application. As we’ve already been providing chat infrastructure for years, we know all about the kinds of problems you run into when building a chat app.

ChatEngine comes with 1-on-1 chats, group chats, private chats, typing indicators, emojii, and markdown support built in. It even includes the ability to create your own plugins to work with whatever service you can imagine. It’s Javascript so it works on the front end, back end, and mobile. With react, react-native, Angular, jQuery, anything. You can even make your own bots with NodeJS!

At PubNub we believe that the future is real-time. Personally I believe that anywhere you would have had a “forum” or “comments” section will be a chat in the future.

Could you share some numbers about how people are using ChatEngine? What KPIs define growth/success for ChatEngine?

We’ve been overwhelmed with support for ChatEngine. We have hundreds of signups and feedback is coming at us from every angle. People are really interested in the functionality and we’re getting asked to support every platform you can think of.

Adoption is a big role for us, but personally I’m interested in solving problems people have. I want you to be able to go from not knowing what ChatEngine is to having production ready chat in your app within an hour; and when you want feature xyz, I want that ready for you too. The best statistic we have to measure this is probably support tickets.

How much data does PubNub process per day / month / year? And how do you approach the problem of processing data faster?

PubNub does 2 trillion monthly transactions per month on 330 million unique monthly devices. PubNub processes 5x the data that Twitter does, and that continues to grow.

It’s very difficult stuff and I hold huge respect for our core engineering team. Things that never cross your mind when you’re building a simple web app are insanely complex at this scale. I’m a client developer, so when I end up communicating with the core team I find myself starting by saying “now I know this is different because it happens 66 billion times per day, but…”

In terms of speed, we guarantee message delivery under ¼ second latency. We’ve done a ton of work to get that speed down and it’s very hard to decrease it further. Real world distance starts to become the bottleneck.

To mitigate this, we maintain data centers all over the world and optimize connections based on distance. This way, if you’re in Europe communicating with other Europeans, you don’t need to wait for your packet to travel over the ocean to North America and back.

In a video about ChatEngine, Typing Indicators is the first feature mentioned. Why are the use of Typing Indicators so important to driving the growth of ChatEngine?

Typing indicators represent high resolution real time communication. Not only do you get a message, but now you’re getting updates in-between the messages.

It’s the addition of a meta conversation that starts to get really interesting.

It also demonstrates ChatEngine’s ability to be extended. It’s not just chat, but it’s chat and all the other fun stuff that goes with it; like gifs, markdown, image uploads, etc.

Plus our customers ask us how to do it all the time.

Which plugins have been the most with ChatEngine? How do you see this ecosystem maturing?

It seems like people go right for the markdown and typing indicator plugins. We’re getting a lot of requests for all sorts of plugins and I’m excited to continue building them.

When someone asks if ChatEngine can do something special, we can tell them “yes, here’s how you do that in a plugin.”

Since anybody can write a plugin and publish it, I’m hoping we see all sorts of developers participating. I want ChatEngine to be the jQuery of chat. I want a newbie who barely knows Javascript to be able to combine ChatEngine and a bunch of plugins into a full featured chat app.

Plugins have already proven to be totally awesome for development. They are completely modular, isolated, and testable on their own. The codebase would be an absolute mess without this pattern of feature isolation.

We’re Hacker Noon and you started Hacker League. Your definition of “hacking” above was great. You ended up selling Hacker League to Intel in 2013. How did that sale happen? How did it change the direction of your career?

Mike Swift, Abe Stanway and I build Hacker League during the rise of the student hackathon movement, and the end of our college undergrad. We had thousands of students and hundreds of hackathons on the program, but we didn’t really have a plan on where to go from there or how to monetize the app.

After graduation we all got full time jobs and kept working on it nights and weekends. Swift eventually hooked up with the team at Mashery, who was interested in purchasing the application.

Swift is still in the same space today, with a new company called MLH.

What’s the best thing you’ve built? Or, how do you look back on the things you’ve built?

Community is the common thread in my work.

I started getting involved in the web by running a Photoshop forum in which users shared tips and tricks with each other. In college I started the Rutgers subreddit and then Hacker League, a student hackathon website. My three biggest passion projects were all community focused. So that’s where I hang out.

PubNub is about connecting machines, and therefor people. It’s a great place for me to continue my community obsession. After all, any piece of software I write with PubNub is going to involve multiple people communicating.

That’s why I’m stoked about ChatEngine. Not only are we developing it open on GitHub, but it also supports an extensible plugin system that allows anybody to participate. They can add new integrations and functionalities into the SDK, without actually editing the SDK. We’ve laid an amazing groundwork for community around the product and we’re starting to see developers participate. It’s really exciting.

Your @sw1tch bio reads, “Last of the freelance hackers.” Do you have any thoughts on the future of high speed pizza delivery? Snow Crash— I haven’t read it — want to now.

Yes, “Last of the freelance hackers” is a direct reference to Snow Crash.

However, it means a lot more to me. At first it reads like a job title, but if you think about it, Hiro (the protagonist) is actually defining his morals. “I will maintain my commitment to free thought, independence, and exploration even if I’m the last person who thinks this way.” That’s freaking badass.

I’ve thought more about pizza delivery than your average hacker. I worked delivering pizza all through college and daydreamed of a system that would push the order address into my TomTom so I didn’t have to type it manually.

Now, pizza delivery is the new “go to” example of solving a logistics problem. In fact, PubNub has even created a real time pizza delivery system demo.

Your recent Control-A-Swarm-of-Drones-in-Realtime-from-Anywhere Tutorial has some real Black Mirror powers… That bee episode…. Scary stuff. Do you have an army of flying drones right now?

Technology is not inherently good or evil. Black Mirror is a fantastic commentary on the evil side of technology, but it is not our only future.

When I worked on the PubNub drone, the internet was having a conversation about “taco copters,” drones that would deliver tacos to your doorstep. Well, when you engineer a taco copter, you also engineer a drone that can deliver an explosive. You can’t separate the two.

Should we give up a future where tacos rain from the sky because the same technology can be used for evil? I don’t think so.

What we should focus on are ways to stop people from using technology for evil. If you’re interested in reading more about this issue in regards to autonomous killing machines, check out Stop Killer Robots.

PubNub, our weekly sponsor, provides realtime APIs and global messaging infrastructure for building interactive apps of the future.

Start Building Today