Herding Code 199: Rob Reynolds on the Chocolatey Kickstarter, Chocolatey growth and OneGet

Jon talks to Rob Reynolds about how Chocolatey has grown over the past few years, how OneGet fits in, and the Chocolatey Kickstarter.

Download / Listen: Herding Code 199: Rob Reynolds on the Chocolatey Kickstarter, Chocolatey growth and OneGet

Show Notes:

  • The state of the Chocolatey
    • (00:19) Rob explains what Chocolatey is and compares it to package managers on other platforms. Jon talks about how he uses Chocolatey to install all his programs every time he installs Windows.
    • (02:10) Rob talks about how Chocolatey has grown in the past 3 1/2 years.
  • Package Moderation
    • (02:24) Rob explains how package moderation works – whereas previously all packages were immediately published and reviewed later, now they’re reviewed by moderators before they’re listed. One common fix is just getting the naming right.
    • (05:24) Rob talks about how they’re curating the community feed. They’re currently in a grace period until December 1; some packages are that aren’t broadly applicable are being told to move to MyGet. Jon and Rob talk about other hosting options (anything that host NuGet) and benefits of using the NuGet infrastructure underneath Chocolatey.
    • (07:25) Rob talks about the checksumming features they’ve added.
  • Chocolatey Pro
    • (09:03) Rob explains how Chocolatey has grown, partly due to the OneGet announcement – they’re up to 7 million downloads now, half of them in the past six months. He talks about how the costs have grown over that time.
    • (11:40) Rob explains what the Kickstarter supports. The free / open source version will always be free. They’re also adding in professional-only feeds and a content delivery network to support the professional feeds. Jon asks and Rob explains the professional feeds work.
    • (14:50) Rob explains how the pro version includes additional virus checking via Virus Total.
    • (15:31) Jon says it sounds like most of the money is to provide for infrastructure. Rob agrees, but says some will help buy him some time to work on it. He talks about the example of Octopus Deploy – development has really accelerated since it became a full-time endeavor.
  • OneGet
    • (17:05) Jon asks what OneGet is. Rob explains that it’s a package manager aggregator and works with the Chocolatey feed right out of the box. Rob and Jon talk about the advantages of having Chocolatey support installed in Windows.
    • (20:20) Jon asks about the impact to the Chocolatey team. Rob clarifies that they’re a provider, so they build the hooks, and OneGet will read directly from their feed.
  • Windows Store
    • (21:02) Jon asks if Rob’s worried that the Windows Store will someday add Win32 app support and make Chocolatey irrelevant. Rob says he doesn’t expect it, but even if they did there are some big differences between a store and a package manager. Jon and Rob discuss package managers, meta-packages, dependency management and package uninstallation.
  • Kickstarter Benefits
    • (24:36) Jon asks Rob to explain the different Kickstarter award levels. Rob discusses Chocolatey Pro pricing and some of the higher level awards like a custom workshop. He points out that the pricing is perpetual, so by backing the Kickstarter you’re locking in the price.
    • (29:00) Jon says that even if you don’t care about the rewards, if you’ve been using Chocolatey you should consider supporting the project. Rob describes why they came up with their goal amount, including the Kickstarter and Amazon transaction fees.
  • Wrap-up
    • (21:29) Rob and Jon mention ways you can get involved. Of course you can back the Kickstarter, but he’s also really appreciate any press or exposure.

Show Links:

Herding Code 198: Damian Edwards on ASP.NET vNext, Tag Helpers and SignalR

The guys talk to ASP.NET team member Damian Edwards about ASP.NET vNext (the next version of ASP.NET), Tag Helpers, and what’s new with SignalR.

Download / Listen: Herding Code 198: Damian Edwards on ASP.NET vNext, Tag Helpers and SignalR

Show Notes:

  • Hello. What is ASP.NET vNext?
    • (00:18) ASP.NET vNext is the next version of ASP.NET. It’s not just ASP.NET MVC 6 or Web API 3, it’s a total rethink of the ASP.NET platform. In some ways, it’s a bigger change than the move from classic ASP to ASP.NET. In other ways, it can be pretty seamless depending on what you’re doing.
    • (01:29) Jon asks Damian to talk about what’s crazy and brand new. Damian describes the full stack in a web application, from the operating system up to the code that you write in your application and the libraries you bring in. Starting at the bottom of the stack, ASP.NET vNext is cross platform, meaning it will work and be supported on Linux and Mac.
  • Cross platform
    • (02:36) Jon asks Damian to clarify what that means – is it supported cross-platform, or does it just kind of work? Damian says that it’s first class support – they’ll ensure that it works cross-platform, there will be cross-platform documentation, and there will be cross-platform tooling (Damian mentions the Sublime plugin for ASP.NET vNext). They’ll support building and deploying ASP.NET vNext applications cross-platform.
  • Core CLR
    • (03:41) Damian continues up the stack, talking about how .NET framework is booted up. In vNext, there is a native code custom CLR loader that is decoupled form the operating system’s .NET loader. Even when you’re running on Windows, you’re not relying on the standard .NET loading mechanism.
    • (05:56) Jon mentions having seen demos where code was written on one laptop, copied onto a USB drive, and executed on another laptop, asking if the custom .NET loader is what makes that work. Damian explains that’s half of why it works – the next layer of the platform is the managed runtime itself, which is the other half of the magic. There is a new CLR based on core CLR. Damian explains how the .NET runtime runs on a core CLR and the base class libraries. The core CLR is based on the .NET CLR for Silverlight – it was already a lightweight version that ran cross-platform. There are now two options for the CLR you can run on – the full .NET CLR, or the new "cloud optimized" CLR. It’s important because it’s smaller – so small that it can be deployed with your application. Also, because it can be self-contained, multiple versions can run on the same server.
    • (10:01) Scott K asks what prevents bundling the entire application up into a single EXE. Damian talks about how .NET Native is being used in Windows Store applications and says they’re intending to look at that for ASP.NET vNext in the future. For now they’re achieving isolation by shipping the core CLR and libraries as NuGet dependencies.
    • (12:30) Scott K asks if you need to have the .NET framework installed at all if you’re running ASP.NET vNext. Damian says no, and if .NET is installed it has no bearing on your application.
    • (12:12) Jon asks how this affects IT shops that want full control over .NET framework installations on their servers. Damian says this question requires more context on what administrators would be afraid of. He describes how ASP.NET vNext will support servicing, so any urgent vulnerabilities can be patched globally on a server.
  • How does this affect existing apps? What changes?
    • (14:50) K Scott brings up a Twitter question from James on how this will affect ASP.NET MVC and Web API applications. Damian says that ASP.NET MVC 6 will include both ASP.NET MVC and Web API. Damian explains how ASP.NET MVC is on version 5 and there are some things they’d do differently today. It also previously depended on System.Web, which dates all the way back to before 2000. ASP.NET MVC 6 has DI built in. It’s OWIN compatible, so you can run it on any OWIN compatible server and run any OWIN middleware. Global configuration (web.config and System.Configuration) are gone, replaced by code-based configuration influenced by Katana. There’s also Entity Framework 7, which is a complete rewrite that doesn’t have ObjectContext or System.Entity – instead it makes model first (DbContext) foundational. EF7 also works with non-relational databases. If you have an existing application with ASP.NET MVC 5 or Web API 2, it should port over pretty seamlessly as long as you’re not working directly with underlying components like System.Web or HttpContext.
  • Development experience
    • (19:39) Scott K asks about the development experience – will this work in a new Visual Studio version, or can he just create applications in a text editor? Damian says both will work. This both allows cross-platform development and a more flexible development stack, allowing for things like cloud-based development. Of course, ASP.NET will work work great on Visual Studio. They use Roslyn to do all the code compilation either at design or compile time. This allows for deploying the entire application as source, and eliminates the need for a separate compile step during development (since the code is constantly being compiled as you work).
    • (25:15) K Scott asks how much churn he should expect if he starts developing with ASP.NET vNext today. Damian says there’s a lot of churn still right now. It won’t release until well into next year some time.
  • Questions from Twitter
    • (26:34) Iris Classon asks what features they weren’t able to include that they’d have liked to. Damian says it’s too early to answer that question, since they’re still in pretty early development.
    • (27:00) Iris Classon also asks where they looked for inspiration. Damian mentions web frameworks like Rails and Node as well as module loading in Java.
    • (27:38) Ben Maddox asks how Damian sees this improving the feedback loop for code, UI and tests. Damian says it speeds up UI feedback since all of your code is compiled as you type it and continuous testing is enabled due to the continuous compile. Both are available today with other tools or things you set up yourself, but it will be simpler in future.
    • (28:55) Steen R. asks when we’ll see cross-platform Visual Studio. Damian says there are no plans he’s privy to.
    • (29:05) Filip Woj. asks if F# will have first class support – released and supported. Damian says not for version one, although there are demonstrations of F# providers.
    • (30:40) Steen R. asks how webroot will work in practice. Damian describes how webroot works – it’s a separate directory from which your application is served. Any files not in the webroot folder will not be served by the web server. Your application or uploads folders will be separate from your webroot, so they can’t be served.
  • Portable areas?
    • (33:49) K Scott asks about portable areas. Damian says he’s not aware of something like that for ASP.NET MVC.
  • Tag Helpers
    • (35:18) Jon asks what tag helpers are. Damian describes how Razor is a templating language that’s designed to allow mixing C# and HTML. It falls down a bit when you’re using HTML Helpers and want to change the output – for instance, if you want to pass in an HTML class to an element. C# gets in the way due to things like class being a reserved word, and you miss out on any HTML IntelliSense or HTML editor smarts, because you’re just working with C# strings. Tag helpers allow you to just write HTML tags with attributes that Razor understands. These can do things like access the model metadata to emit appropriate form HTML.
    • (41:27) K Scott asks when he can start using it. Damian says that it’s in a separate feature branch now and explains how to use them and says you can ping Taylor Mullen for help – or just wait a few weeks and it’ll be in the main branch.
    • (42:59) Jon comments on how the Spark view engine provided something similar, and Damian says that Lou works right next to him and has helped with the design. They’re not trying to change the core of how Razor works or feels, just make it easier to work with HTML helpers.
  • SignalR
    • (44:10) Jon asks what’s new with SignalR. Damian runs down some of the recent releases and mentions SignalR 3 for ASP.NET vNext. He also mentions the C++ client that’s currently in development.
    • (45:28) Jon asks if ASP.NET vNext makes some things simpler for SignalR. Damian says the main impact is that things like configuration and tracing are now shared between components like Web API and MVC.
  • Wrap Up
    • (46:56) Jon asks Damian what’s coming up for him. Damian mentions some of the talks he’ll be doing at NDC London, including load testing SignalR and ASP.NET vNext.
    • (47:50) Jon asks Damian how people can keep up with ASP.NET vNext, mentioning the asp.net/vnext page. Damian also recommends the weekly ASP.NET vNext Community Standup meetings, being run as a public weekly Google Hangout hosted by Scott Hanselman and Jon Galloway.

Show Links:

Herding Code 197: Summer Stories, C# 6, Vim and Atom, Terrible Keyboards, Poorly Aged Hipster Code, React and the Apple Watch

It’s time for a discussion show!

Download / Listen: Herding Code 197 – Summer Stories, C# 6, Vim and Atom, Terrible Keyboards, Poorly Aged Hipster Code, React and the Apple Watch

Show Notes:

  • (01:22) What’s new for Kevin? Node, Backbone, working at Brandcast, some talk about how the shop runs. Plus he’s been busy moving.
  • (03:12) What’s new for K Scott? Lots of JavaScript, C# / MVC, AngularJS, MongoDB. Jon asks how Mongo is working in production in the healthcare application K Scott had mentioned earlier. K Scott talks about some performance issues he’s looked at, including some that came down to C# queries, and an issue with a 16MB document size limit. Jon asks if they’re using Redis or other front end caching outside of Mongo. K Scott says they’re just map-reducing and storing the information in other collections. He’s not travelling quite as much
  • (06:50) Jon asks K Scott about his recent posts on C# 6 and EcmaScript 6. K Scott talks about looking into traceur to write current code today in ES6, compiling to ES5 to work in current browsers.
  • (07:25) Jon asks K Scott about his recent C# posts on property initializers and primary constructors. K Scott talks about those as well as the new "using static" feature to invoke static members without needing to use the type name.
  • (08:42) Scott K mentions a discussion about required properties with property initializers. K Scott says he was hesitant about a few things with the new syntax, and problem being that there’s no initializer body for validation. You can mitigate that a little using an assert in a the initializer. It’s nice not having to write explicit setters.
  • (11:06) Scott K says he doesn’t even think about property syntax all that much because Resharper and CodeRush handle that for him. Jon speculates how long it will take for Resharper to start yelling at him to use primary constructors everywhere. Scott K says he uses CodeRush for that reason and turns off the code hints.
  • (12:27) K Scott asks what software Kevin is using: OSX and MacVim.
  • (12:40) Jon asks if anyone’s using Atom.io. Scott K says he tried it and it was way too slow. Kevin says that after using Vim he has a hard time with heavy IDE’s – even WebStorm. He’s skeptical about the longevity of new code editors, while Vim is eternal. Jon says he’s interested in Atom.io because it’s cross-platform and open source.
  • (16:05) What’s new for Jon? He’s been doing some courses for Microsoft Virtual Academy – Introduction to ASP.NET MVC and a Bootstrap course including some advanced stuff like Bootstrap Mix-ins. Wrox Professional ASP.NET MVC book is out. He went to Norway for fun and went to pulpit rock. He’s been spending some more time on non-Microsoft web stacks and platforms now that Azure and ASP.NET vNext are cross-platform. Scott K and Kevin talk about the fun of switching operating systems and remembering keyboard shortcuts. Jon says the biggest frustration is that he keeps trying to touch the screen on a MacBook and it doesn’t do anything.
  • (21:30) What’s New for Scott K? He got a new computer a Lenovo U530 – he calls it the consumer version of the Carbon. He talks about some of the confusing things about the Lenovo keyboard, especially the function keys. Everyone talks about function keys and keyboard problems. K Scott has a newer Carbon, and the keyboard is driving him nuts. Scott K says he’s constantly hitting the touchpad because his keyboard is off-center, which always brings up the Windows charms. Jon mentions touchfreeze and other ways of disabling the touchpad while typing. Jon says he rarely uses the touchpad because he just uses the touchscreen. Scott says he never uses it, he thinks it’s weird that you use two fingers to scroll on the touchpad and one on the screen. K Scott said he accidentally put his Carbon in caps lock, but he doesn’t have a caps lock button so it was hard to turn off. Kevin is unhappy with the Microsoft Sculpt Keyboard’s function keys. Everyone, please stop messing up the function keys.
  • (34:13) Jon asks if anyone’s use the CODE keyboard. He and Jon both agree that it looks great, but they can’t use non-ergo keyboards. Scott K wants keyboards to keep it simple and last a long time.
  • (35:27) Scott K get back to telling us about his summer activities. He was working on upgrading a MonoRail that drove him crazy due to being "craftstmanned up" with lots of opinions in the code like fluent extension methods, Brails view engines and difficulty in upgrading libraries due to dependency injection and breaking changes in NHibernate. Jon says that he’s developed an aversion to things that make great blog posts but will be hard to work with in a few years. Scott K says 90% of the problems came from strong naming – binding redirects and ILMerge with aliases didn’t help. They’ve been evaluating MongoDb and AngularJS a bit at work
  • (41:50) Scott K used React with Grunt in his MonoRail project to allow him to add client-side functionality into a frightening legacy application. Jon asks how he sets it up so it works at dev time and Scott K explains. Kevin’s been hearing a lot about React lately. Scott K like that it’s not trying to be MVC, just the V – e.g. no two-way binding – and the virtual DOM diffing is so fast that people are even using it with AngularJS and Ember just to speed up diffing large lists. Plus it’s used by Facebook for Instagram and the commenting / messenging on Facebook, so it’s been proven to work in big apps. He thinks it’s going to be bigger than Angular and Ember in the next few years.
  • Lightning round
  • (46:34) Who’s getting the new Apple Watch? Kevin says it seems iPad 1-ish. Jon likes some things about the watch UI, including the automatic answer prompts from instant messages with questions. He says the Moto 360 looks better, and we haven’t heard anything about battery life. He’s not sure what he’d do with today’s smart watches, but hopes watches will be really cool in a few years. Jon doesn’t like all the proprietary stuff – payment, chargers, etc. Scott K says he could easily switch to Android and it wouldn’t bother him, so he’s not going to be getting the new iPhone. He’s got a Pebble and likes the notifications and battery life. He thinks the Apple Watch is too little too late. He thinks everything from Apple has gone downhill post-Jobs. He also talks about his recent laptop purchase – if he wanted a posix system, he’d rather just buy a laptop and put Linux on it. He starts ranting about npm and K Scott cuts him off. But then the guys start complaining about the live stream and things go off the rails again.
  • (1:02:32) Jon asks why nobody’s moved to CouchDb. K Scott says the company behind MongoDb is pretty pushy. Nobody had looked at DocumentDb yet, and both Kevin and Scott K are bullish on Postgres.

Show Links:

Sponsor

This show is brought to you by Runscope – find out more at http://runscope.com/herdingcode

Herding Code 196: Matias Niemela on ngAnimate

The guys talk to AngularJS committer Matias Niemela about AngularJS and Angular animations with ngAnimate.

Download / Listen: Herding Code 196: Matias Niemela on ngAnimate

Show Notes:

  • Hello. How’d you get started with AngularJS and ngAnimate?
    • (01:00) K Scott notes a tweet from Matias that he liked Angular before it was popular and asks Matias about how he got started with Angular and how he became a contributor, primarily contributing to animation. He’s also contributed to angular-dart and forms. (03:17) K Scott asks about the history of Animations. Matias talks about how things evolved to working with CSS classes. K Scott talks about how he found the source code for animations was pretty interesting, and Matias agrees.
  • Dart and Google Material Design
    • (04:47) K Scott asks about AngularDart relates to Angular. Matias explains that both are from Google, and they want to make sure that it’s easy to build Angular applications using Dart if you want to.
    • (05:39) Jon asks is Matias is working in both the 1.x and 2.0 source. Matias says he’s mostly focused on the 1.2 and 1.3 release and lately incorporating Google’s new Material Design, especially with animations and components. Angular Material Design includes styles and animations, but is built to allow you hooks to add your own styles and animations, transparently syncing them together in a consistent way.
  • Animation internals
    • (08:14) K Scott asks for Matias’ thoughts on CSS Animations. Matias says the API is too isolated, so there’s no way to hook into the keyframe system. CSS Transitions do allow for that, but you can’t repeat transitions. Putting them together, it’s difficult to create a comprehensive system that’s guaranteed to always run. The Material Design animations work with the Web Animations API, which is a more robust animations API. Currently only Chrome support the .animate method, and the Web Animations API spec is still being written, but Polymer has a polyfill.
    • (10:16) Jon asks about browser support and whether Matias is able to write to standards or if he has to do a lot of special casing. Matias says that the Polymer polyfill and the animations API covers almost everything without special casing.
    • (11:11) K Scott asks what the most challenging part of Angular Matias has worked on so far. Matias says the challenge has been the animations, especially in refactoring over time.
  • Testing in JavaScript
    • (12:56) K Scott asks how Matias tests animations. He says that the tests are all mocked, so they’re not running against animation engines. He says it’s been difficult testing asynchronous code in a synchronous manner.
    • (14:38) Jon asks if Matias uses Javascript libraries to deal with asynchronous code. Matias says that’s all handled by Angular itself.
  • ECMAScript 6
    • (15:15) K Scott asks for Matias’ thoughts on ECMAScript 6. Matias says that Angular 2 is built with ECMAScript 6 using traceur for backward compatibility. He likes the classes and generators an syntactic features, but after working with Dart there are a lot of other features he’s missing. The problem is that JavaScript is non-blocking, so the code will always be a series of callbacks with variables to see if a callback has fired. Promises are great, but they’re just packaged callbacks in a way.
  • Getting Started, Form Validation
    • (16:50) Jon asks for pointers for someone who’s new to ngAnimate. Matias says he’s written documentation for 1.2, but some of it isn’t up to date. There’s a SitePoint article about it, and when 1.3 is out Matias will have an article out about it.
    • (17:38) K Scott asks about form validation. Matias talks about the work they’ve been doing with forms in 1.3.
  • ECMAScript 6 and JavaScript Development
    • (18:55) Twitter question from Steve Strong asked for news on Angular 2.0 and how important ECMAScript 6 is to it. Matias talks about how ES6+ (ES6 with annotations support) simplify dependency injection.
    • (21:13) K Scott asks if Matias liked using JavaScript back when he was doing more full stack development. Matias talks about how he used to write a lot of JavaScript to do things that Angular just handles.
    • (22:38) K Scott says that Matias’ blog and twitter names, Year Of Moo, made him thing that Matias might have been involved with Moo Tools. Matias says he used to be heavily invested in Moo Tools because it supported proper object oriented programming (as opposed to jQuery’s looser approach). He eventually switched to jQuery and then to Angular. He’d originally named his blog around an idea of writing a new Moo Tools plugin each month for a year, but kept the name because it’s unique.
  • More Testing
    • (23:50) K Scott asks Matias when he became passionate about testing. He talks about how valuable tests have been to him.
    • (24:45) Jon asks if Matias has any recommendations on testing. His suggestion is to pay attention to what you’re after. Your tests are to make sure that the code you’ve written work, so test the main points of functionality. Look for friction points – things that will not change – and test those. Try to write some of your own unit tests first, and when you get frustrated look at how projects like Angular are writing their tests.
  • Inspiration and Design
    • (26:12) K Scott asks Matias what he’s been looking to for inspiration. Matias has lately inspired by Clojure and books on software patterns and refactoring.
    • (26:51) Jon asks Matias about his site’s design and use of color. Matias says the cartoons on his site are by his girlfriend who is a graphic designer. He says that most technical bloggers are not focused on writing articles. His goal is to push the boundaries of technical blogging and to address the frustrations he’s had in reading other technical blogs.
    • (28:41) Jon says he really likes Matias’ use of multiple em classes with different colors. Matias discusses that, and says that he’s rewriting the website from Jeckyl to Hugo (which is built with Go).
  • Wrap up
    • (29:58) K Scott asks what Matias does for fun. He mentions travel (he’s from Finland), golf and going to the gym. But computers is a big passion of his, so it’s rare that he’s away from the computer.
    • (30:28) K Scott says he used to play golf a lot, but he’s been making an effort to get out golfing at least once a week. Matias says it’s definitely a challenge a lot of programmers face – most of us like what we do, and going outside requires intention. Jon talks about his friends in other professions who leave their work at work. Matias talks about the portability aspect of computing.
    • (32:24) K Scott asks Matias about what’s on the way for for him. He mentions some posts and upcoming speaking engagements, especially ngEurope in October in Paris, talking about what’s new with Angular and ngAnimate.

Show Links:

Sponsor

This show is brought to you by Runscope – find out more at http://runscope.com/herdingcode

People are productive in different ways

Don’t Check Your Email in the Morning

An interesting idea from Scott Hanselman.

DON’T CHECK YOUR EMAIL IN THE MORNING.

Insane right? I believe that checking your email in the morning is the best way to time-travel to after lunch.

Why DO we check email first thing in the morning? Well, because something crucial might have happened overnight.

There’s a few things wrong with that sentence, in my opinion. Words like “something” and “might” stick out. We check our email because of fear, a sense of disconnectedness, and (in some cases) a feeling of urgency addiction.

I think this is worth trying at least once, if you aren’t me. Me, I’ve tried this before. I find that I am WAY more productive in the afternoon and evening than I am in the morning. I’ve always hated the “9-5″ workday. I find that I can’t get started and focused on a project before lunch regardless of whether I’m on IM or checking emails. There’s just something about my brain that doesn’t start working until the afternoon.

My general workflow is to check email first thing, respond if necessary, filter out the worthless emails, accept meeting requests, etc… Then I CLOSE my email client and don’t open it back up until just before I leave. Sometimes I’ll check email just before lunch if I’m waiting for a reply from someone. I do agree with Scott’s general point, don’t get so caught up in your inbox that you lose focus on the actual reason you are at work. And, as always, postpone meetings with time wasting morons.

Herding Code 195: Michael Mahemoff on Player FM

The guys talk to Michael Mahemoff about Player FM, a cloud based podcast application which is focused on discovery and multi-device synchronization that he recently showed off at Google I/O.

Download / Listen: Herding Code 195: Michael Mahemoff on Player FM

Show Notes:

  • Hello. What is Player FM?
    • (00:48) K Scott asks Mike for a quick introduction. Mike has studies both psychology and software engineering and has worked on a variety of applications, focusing lately on HTML5 web applications. He’s been working for the past few years on Player FM, a cloud based podcast application which is focused on discovery and multi-device synchronization.
    • (01:55) K Scott asks about the technologies used to build Player FM. Mike talks about the advantages of moving feed fetching to the cloud, the web site (using a PJAX implementation which pushes markup rather than data and HTML5 history) and an API.
  • Player FM API
    • (04:33) K Scott asks more about the API. The server is running Ruby on Rails using controllers that supply different format based on the extension in URL. The API is publicly available for experimentation but isn’t officially supported. Mike’s set up using a spectrum of detail levels (none, id, medium and full) rather than allowing clients to select specific fields. This allows you to be efficient in your API requests for hierarchies but is still cachable. He’s created a framework to support that.
    • (09:10) Jon mentions some of the URLs he’s seeing in browsing the API for listeners who want to play along at home. He asks Mike about the balance of a self documenting API vs the full hypermedia smart client approach. Mike says he thinks the API needs to be pretty mature for that to work and points out some of the curated lists in the feed.
    • (11:33) K Scott asks if the curation is community based. Mike says that’s the eventual goal, but for now he’s doing that.
    • (12:23) K Scott asks about the difficulty in tracking when all the feeds have been last updated. Mike says that originally it was a simple loop using feedzilla. Now it’s using sidekick and the PubSubHubbub standard (using the superfeeder service and webhooks). The clients are still polling now, but he’s going to be updating the clients to use Google Cloud Messaging (on Android) and iCloud Messaging (on Apple) so the updates will be realtime from publisher to client.
  • Native clients for Android and iOS
    • (14:30) K Scott asks if Mike’s building native clients. Mike says the iOS client is still in development and the Android app is native. K Scott says he’s wanted to do some Android dev but it’s always seemed like the most difficult platform. Mike says that it’s gotten easier lately due to the new application services and gives an example of the Google Wear Services. Jon asks for some more info on the Google Wear integration and Mike explains how any media framework application automatically gets some support, and they’ve extended it to create a phone application to allow episode browsing on the watch.
    • (17:15) K Scott says he was surprised by Mike’s blog post about the demand for Chromecast support for audio applications and asks about the work required to build that support. Mike explains the API integration and says that the hardest part was complying with the look and feel guidelines.
  • Advanced podcast support with Podlove
    • (20:02) Jon asks if there are things that podcasts can add to enable podcast applications to give a better experience. Mike talks about emerging standards like Podlove which adds support for chapters, time based links, attributions and related feeds. Jon says he’s been including timestamps in the show notes for a while so that seems pretty easy to implement. Mike talks about how TimeJump and Podlove could allow for deep linking into content.
    • (22:18) K Scott asks what’s been frustrating in dealing with feeds. Mike talks about the difficulty in feed parsing and the differing standards and implementations. Jon says he’s always just used Feedburner. Mike likes Feedburner and appreciates the built-in support for PubSubHubbub and would like to see Google pay more attention to it.
  • Misc: Business plan, mobile web support and Google I/O
    • (24:24) K Scott asks if Player FM is Mike’s full time job. Mike says it is. They’re not monetizing it yet, but he’s building out a freemium service with advanced features like unlimited subscriptions and advanced syncing across devices.
    • (26:16) Jon asks if Mike has plans for a Windows Phone application. Mike says he’d love to support it eventually, but right now his support for other platforms is via the mobile optimized website and the Player FM feeds.
    • (27:06) K Scott asks about Mike’s experience in bringing Player FM to Google I/O. Mike talks about the experience – it was his 4th Google I/O, and he’s been both an attendee and speaker in the past, but this time he was too busy to attend.
  • User Experience
    • (28:43) K Scott asks how Mike’s psychology degree has helped him in software development. Mike talks about the applications in user interface design and machine learning. Jon asks about Mikes thesis about human computer interaction; Mike talks about user interface design patterns for consistency.
    • (32:20) K Scott says he’s happy the Player FM site doesn’t use the ubiquitous cheeseburger menu. Mike talks about some of the UI design features in the web application.
  • API Optimization
    • (33:19) K Scott asks about optimizations in the API. Mike talks about timestamps in the API responses so the mobile applications can keep aware of which channels have been updated and get the responses from edge servers.
    • (36:10) Jon asks about using JSON LD and E-Tags. Mike says he hasn’t needed that since he’s building the clients and they’re doing the same checking.
    • (37:39) Jon asks how Cloudflare has worked for Mike. Mike says it’s been great, but there were a few surprises like caching of error responses.
    • (38:40) K Scott asks if it’s possible to remove things from the cache. Mike explains some of the options. Jon talks about some of the difficulties in diagnosing content problems when you’ve got multiple levels of caching and Mike agrees that it’d be nice if there were some visibility via HTTP headers.
  • Search and Discovery
    • (40:48) Jon asks if Player FM has additional markup to light up in search results. Mike says they were one of the early sites to be included in the Google app indexing setup, which supports deep linking in Android applications.
    • (42:30) K Scott says he’s looking forward to the recommendation features and Mike describes some of the things they’re including.
    • (43:30) Mike talks about Player FM support for full text search using Elastic Search to allow for easier discovery.
    • (44:25) Kevin asks if transcripts could be included in the full text search. Mike talks about some of the standards support.
  • Wrap Up
    • (45:49) K Scott asks what Mike does when he’s not working on Player FM.
    • (46:47) K Scott asks Mike what’s coming up for him in the near future. Mike talks about some Player FM features he’s excited about working on like intelligent discovery, collaborative filtering, server-side play tracking, analytics and platform support including an desktop form factor that will work offline. The desktop application is based on an open source project they’re working on that will compile a Chrome application and cross-compile native applications for Windows, Apple and Linux (based on node webkit).
    • (48:20) K Scott asks for any last words; Mike says he’s happy for any questions at mike@playerfm.com.

Show Links:

Sponsor

This show is brought to you by Runscope – find out more at http://runscope.com/herdingcode