Do I Spend Too Much Time Listening To Podcasts?

I listen to a lot of podcasts. And I do it all the time. This morning I couldn’t sleep, so at 5 I started listening to some podcasts. I am sure that’s bad at all sorts of levels, but I am addicted. So I thought I would share with you my current list of absolutely required podcasts to listen to, plus the new ones I am starting to get into.

First off, if you are relying on iTunes to get your podcasts, then wake up and discover Instacast. There is an iPhone and iPad version and they are fantastic. The only caveat with the two versions is while they claim to sync, they don’t. But I still love them.

OK, so what are the required podcasts? Here we go, roughly in order of best to…well…not best.

The ones I listen to as soon as the new episode comes out

You Look Nice Today – I am so excited that “That’s Babies” is no longer the most recent show. This is Merlin Mann, Lonely Sandwich, and the other guy at their best! Razzledazzle!

NPR Foreign Dispatch – This is my #1 source of news

Javascript Jabber – The most perfect show on Javascript. I keep re-listening to the one with Paul Irish.

Whisper Cities – Only 3 episodes with 2-4 months between each, but great stories about urban architecture. Escalate makes me want to discover the metro in my own city.

99% Invisible – I wish they did this more often. Similar to RadioLab in style and 100% perfect.

Roderick on the Line – Laugh out loud conversation with Merlin Mann and someone else.

The Javascript Show – Weekly rundown of the interesting projects in the javascript world

BBC World Update – This is my #2 source of news

The Moth Podcast – Some of the most amazing stories I have ever heard. 90% excellent

WNYC RadioLab – I don’t think I have heard an episode on here that isn’t spectacular. Loop the Loop was definitely my favorite!

Spotcast – I started at the beginning with the Lonely Sandwich episodes which were fantastic and they just get better. An interview show with filmmakers.

Founders Talk – Great interviews with interesting people

Six Pixels of Separation – Amazing marketing podcast that always keeps me interested

Marketing over Coffee – Right up there with 6 Pixels for the top two marketing podcasts to keep up with

Scruffy Thinking – Hard to describe, but the host has had a pretty interesting career

Love & Radio – Think 99% Invisible and RadioLab, then cover the kids’ ears.

Iterate – More web dev along with mobile dev in there as well

Creatiplicity – Creative Development

Mac Power Users – There are some things they say that are annoying, but generally this is one of those top notch shows. The Workflows shows are my favorites and the absolute best episodes of any podcast I listen to are the Merlin Mann Workflow shows. OMG, rocked….my…..world!!!!

Triangulation – Great interviews with interesting people. The Capn Crunch episodes were some of the best, but they are all good

Foundation – Great interviews with entrepreneurs

Freakonomics Radio – Absolutely Fascinating annecdotes about the world we live in

Content, Structure, & Style – I have a few Squarespace sites and this podcasts talks about whats new in that world

The B&B Podcast – Interesting conversation between two interesting guys

Core Intuition – Life as an independent developer. I really wish Manton and Daniel would get back to it. I loved this one.

The Changelog – Weekly rundown of open source projects

Forrst Podcast – Seems to be on a hiatus, but hopefully it will come back. Great rundown of web dev & design news

The ones that are mostly good

The Critical Path – Horace Dediu usually comes up with some interesting analysis that makes me want to visit the site to learn more.

DigitalFilm.TV Digital Convergence – Great filmmakers podcast. Sometimes too much of a lovefest of Canon, but when they talk more generally it gets great.

This American Life – The NPR show. Its great, and I have nothing bad to say about it and it should be spectacular, but I find myself listening to the others at the top of this list first

Above & Beyond: Trance Around The World – Great stuff for those long Plane/Train/Automobile rides

iDeveloper Live – Mac dev focused

The ones I keep around just in case

Build & Analyze – Interesting, but I really wish they would edit it down

Back to Work – Like most 5×5 shows, this is just way too drawn out. But Merlin Mann is a godd and I will listen to anything with him (even though I get him mixed up with Ze Frank)

The VergeCast – This should be good, but I keep finding myself skipping forward searching for a good bit

The Bro Show – Like 5×5, many of the 70Decibels shows sound too similar. Pick one. I might drop this one soon.

The ones that I just heard about and have a lot of potential

512 Podcast

The Industry

Mikes on Mics – Mike Vardy’s new thing so could be good

Inhatko Almanac

Shop Talk

Non Breaking Space – Listening to this now and its about to make it into the top list.

How To Get Started With Pusher.com

Last night I was listening to one of my favorite podcasts called The ChangeLog. Its a weekly show covering new Open Source stuff. One of the sponsors is a company called Pusher, but even after the ad, I wasn’t totally sure what they did. So I checked out their website.

At first glance of the site I still had a hard time understanding what they did. It looked like they provided some sort of communications layer between the browser and a server. They have all sorts of case studies, and a few examples, but after that, it was still hard to figure out what function they really actually performed.

So I started playing around with it, getting a free account and running through a sample or two, then scouring the web for other examples. After a while I thought I got it, but I was still wrong. It wasn’t until a few too many hours invested that I got close to grokking it. And it turns out that its really simple, and its extremely cool!

What Does Pusher Do?

Basically, its a way to get data from the server back to the client asynchronously. Sure there are other ways to do that, but this is so darned simple to implement and it just works. You could use it to update a chart on your website with new usage stats, or implement a chat service, or all sorts of other things. Maybe even initiate a call to a customer using Twilio as well.

What Does It REALLY Do?

The chat was the first example I read and I think thats why I got confused. When I think of chat, I think of client to client. There might be a server somewhere in the middle, but its usually just there to initiate the conversation. And I assumed that Pusher was that server. But thats not what happens.

Your client, which is probably a web page, subscribes to a Pusher channel. You set up that channel from the server (or client). Messages are sent on the channel and any subscribers will see the messages on that channel (assuming permissions allow it, but my server assumes there are no secrets).

Now what I didn’t get till the last minute was that the client cannot submit messages, only receive them. Instead, the client has to contact the server on its own. I used a jQuery ajax post to do that. My server then parses the request and sends a message on the channel, which my client then deals with.

How Do I Set It Up?

To set up a Pusher app, you need a server. The server doesn’t have to be complicated, but you do need a server. In today’s world of cloud services, a server no longer means a big loud rack mountable monstrosity in the closet. In fact in my case its a mysterious service in the ether called Amazon Web Services. I could just have easily used Heroku, or PHPFog, or all sorts of others, all of which have free base packages. So I setup the simplest possible server application I could come up with.

For me that application is a NodeJS based chat application. Here is the complete source code listing for my server.

Really! That’s all there is! Now this is NodeJS and its written in CoffeeScript, because thats just how I roll these days. The first two lines should be obvious, but node-pusher can be found at https://github.com/crossbreeze/node-pusher. Just run npm install node-pusher to get it installed on your server.

Then comes the key, secret, and appId. You can get those when you sign up for the free account at Pusher.com. Create a new pusher object by passing it your key, secret, and appId. Then I create a few vars to store my channel, event, and some initial data. You can call your channel and event whatever you like. Its just a way for you to reference it in your client and server.

The trigger function is what actually sends the message on the channel as a specific type of event (again, you name it). The data can also be whatever your want to pass. So in my case I listen on port 8888 and anytime someone passes a query string like from=matt&content=ChatMan, then the server triggers an chat message on a channel called ChatChannel. Anyone who is subscribed will see that message.

What About The Client?

If you thought the server was easy, the client is even easier. First, lets look at the HTML. As you can see its really basic. Just a text box to enter your name, and a text box for a message to send.

My html needs three javascript files: jQuery (just because I am lazy), Pusher (hopefully that one should be obvious), and my own local pusher code. So lets take a look at that code:

Again, super simple! I have moved my server URL to localhost so that you can test it with minimal fuss. Basically what happens is that whenever the text changes in the text box with ID of InputText, I post to localhost with a special query string. The fact that its going to a page called chat means nothing. That page could have been snufalufagus and it still works. I added a From name text box so I could easily test between two different browsers and see which was which.

Below that is the Pusher object which is initialized with your key from Pusher.com. Then you subscribe to the channel. This needs to be the same as the channel name on the server. Finally I bind an event handler that tells the webpage to update whenever a new ‘chat’ message comes in.

Just 50 Lines Of Code?? Really?

Really ! Thats all there is. And I was a bit wasteful in a few spots. Now of course, hopefully you see where this could be improved. Like making it not look like it does. I could also subscribe to multiple channels, or multiple types of information. Maybe the chat window shows chat stuff, but I also get a file saved to localStorage. Maybe this is actually running in an Adobe Air app and the chat is visible, but I receive keys and passwords as a separate type of event which gets stored directly in the Encrypted Local Storage area.

Thats actually my plan. I have a site I created for work called FaxDocs.tv which hosts videos for our products. I want to add a chat window to parts of the site. I already created a management app we use internally that uses Adobe Air. The reason I did that is that I run on a Mac and my colleagues are on Windows. So now I can add the chat functionality to the Air app. When one of us has the app open, then the option for a chat is available on the website. The end user doesn’t have to use it, but they can.

As I complete more of that app, I’ll share it here. Until then, have fun with Pusher. I certainly am.