<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<channel>
  <title>Herding Code</title>
  <atom:link href="https://herdingcode.com/feed.xml" rel="self" type="application/rss+xml" />
  <link>https://herdingcode.com/</link>
  <description>A technology podcast with Jon Galloway, Scott Allen, Kevin Dente, Scott Koon</description>
  <language>en-US</language>
  <lastBuildDate>Thu, 04 Jun 2026 00:27:35 GMT</lastBuildDate>
  <copyright>Creative Commons (by-nc-sa)</copyright>
  <itunes:author>Herding Code</itunes:author>
  <itunes:summary>A weekly discussion featuring K. Scott Allen (odetocode.com), Kevin Dente, Scott Koon (lazycoder.com), and Jon Galloway.</itunes:summary>
  <itunes:subtitle>A weekly discussion on software development</itunes:subtitle>
  <itunes:explicit>no</itunes:explicit>
  <itunes:keywords>dotnet,asp,net,programming,software,web,development</itunes:keywords>
  <itunes:image href="https://herdingcode.com/assets/herdingCode.png" />
  <itunes:owner>
    <itunes:name>Herding Code</itunes:name>
    <itunes:email>jon_galloway@yahoo.com</itunes:email>
  </itunes:owner>
  <itunes:category text="Technology">
    <itunes:category text="Tech News" />
  </itunes:category>
  <item>
    <title>Herding Code 246 - David Ortinau on .NET MAUI</title>
    <link>https://herdingcode.com/herding-code-246-david-ortinau-on-net-maui/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-246-david-ortinau-on-net-maui/</guid>
    <pubDate>Wed, 25 May 2022 14:40:42 GMT</pubDate>
    <description><![CDATA[<p>Jon talks to David Ortinau about .NET MAUI.</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 246</strong></p>
<p>Jon talks to David Ortinau about .NET MAUI.</p>








<div class="video-embed video-embed--youtube">
  <iframe
    src="https://www.youtube.com/embed/OyqzWAivI7I"
    title="YouTube video"
    loading="lazy"
    referrerpolicy="strict-origin-when-cross-origin"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    allowfullscreen></iframe>
</div>



<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-246-David-Ortinau-MAUI.mp3">Herding Code 246: David Ortinau on .NET MAI</a></p>



<p>Link: <a rel="noreferrer noopener" href="https://devblogs.microsoft.com/dotnet/introducing-dotnet-maui-one-codebase-many-platforms/" target="_blank">Introducing .NET MAUI – One Codebase, Many Platforms (.NET blog)</a></p>



<p>Transcript:</p>



<p><strong>Jon:</strong> Hello, and welcome to Herding Code. This episode is being recorded May 16th, 2022. Today I'm talking to David Ortinau now about .NET MAUI. Welcome David.&nbsp;</p>



<p><strong>David:</strong> Hey, good to see you.&nbsp;</p>



<p><strong>Jon:</strong> Okay, so let's start with the basics. What the heck is .NET MAUI? I, I mean, I know there's kind of Xamarin thing out there forms and now there's .NET MAUI.</p>



<p><strong>David:</strong> So .NET MAUI, it stands for multi-platform app UI. And it is really the evolution of Xamarin. So Xamarin is it started, you know, like 10, 12 years ago, Mono framework, Mono Touch, Mono Droid it was essentially saying, Hey, let's take what Apple and Google are doing these mobile platforms that are super cool, and let's bring it to .NET developers.</p>



<p>And it was an open source thing, you know, at least as far as the runtime and things like that go but it was kind of out there in the community. And then what, six years ago, Microsoft acquired it. and then five years ago, I joined Microsoft to be the program manager for Xamarin forms, specifically, the that, you know, we favor XAML, but you can totally just use C# or F# actually to write your mobile applications, but it was a very mobile focus thing. Right? So, we have been doing in the .NET space over years is, unifying, taking all these things that were disparate, they all had different routes in terms of where they started, but .NET You know, we anything with .NET and be able to reuse not only the technology, but our skills. So. you know, dot .NET framework turned core .NET five shipped five unified, some of the model pieces and some of the BCL pieces BCL standing for base class library.</p>



<p>And then, grandiose that was when Xamarin would also become really a core part of .NET,&nbsp;</p>



<p>however pandemic things you know, best laid plans of mice and then things didn't quite go the way we want.&nbsp;</p>



<p><strong>Jon:</strong> Well also, plus it's, it's a big job, right? I mean, like uniting everything and you've had like .NET and C#, or like there's similar specifications, but like the whole way that, that mano and Xamarin worked always seemed like it was amazing to me that it actually worked right.&nbsp;</p>



<p><strong>David:</strong> Yeah. It was the ingenuity of some very smart people that made it at work. But you know, outside of Microsoft's doors, really, even before everything was mostly open-sourced there was a lot of duct taping to make things work. Make it a good developer experience. So we're now able to in the open source era and as part of Microsoft kind of rectify some of those things. So, you know, we're adopting SDK style projects, the same project system that the rest of .NET uses. And, and we've also added platforms. So now. Give a first place support to Windows and Mac desktops. So that's a big really have. I mean, we kind of had UWP but that really started because we had this. Windows phone thing. You know, and I don't want to like trigger anybody, but it was pretty cool.&nbsp;</p>



<p>yeah, so, I mean, yeah, you're absolutely right. Tons of stuff that, that have ne has needed to happen under the hood from the runtime, the base class library, unifying all the API APIs and. In terms of Xamarin, there's some things that we did with types for end, float and end and things like that, to, to make things work with apple that are non-standard dot .NET things.</p>



<p>So in .NET 6 we unified our types, which, you know in the short term, there's definitely some pain, not gonna, not going to sugarcoat that but in the longterm, you know, we're going to see some nice gains, and consistency across the whole thing. So very excited that we finally, after years of transition we're bringing.</p>



<p>To full GA fruition here in .NET 6 Well, as part of the, as Scott, hunter would like to say the .NET 6.&nbsp;</p>



<p>wave, I think wave works really good with the name .NET&nbsp;</p>



<p><strong>Jon:</strong> Oh, nice. Nice. Okay. So, so the.&nbsp;</p>



<p>Top level I'm totally not even a .NET developer. I haven't been keeping up the high level is I can write C# or .NET code and I can build applications. That'll run on Android, iOS, Mac, and Windows.&nbsp;</p>



<p><strong>David:</strong> Exactly and their native applications. That's a key differentiator. So that means that when your app runs on iOS or Android or Windows or Mac, it's using the same premiere&nbsp;</p>



<p>UI toolkit that the manufacturers say, this is the way you should build apps.</p>



<p><strong>Jon:</strong> Okay. So it's not like a, cause I think that's been as a workaround for a long time, people are building, for instance, like. Electron apps or stuff like that. Right. Where, so you, it technically will run cross platform, but it's really running a browser and it's running like, it's, it's not that like native or even going way back, like Java or stuff like that.</p>



<p>Right. But you didn't have this like native app.&nbsp;</p>



<p><strong>David:</strong> Yeah. Yeah. You run into, what's known as the uncanny valley in some situations, depending on how well that technology is able to mimic the platform.&nbsp; you know, there are certainly other you know, platforms out there are frameworks out there that do a really good job at it. However yeah, the hybrid thing, which we typically call those as hybrid frameworks&nbsp; you end up needing to make some compromises in terms of what you can access on the native platform or what kind of UI experiences you can create.</p>



<p>But you know, with straight MAUI, you don't have those compromises plus you get to use .NET. So it's one language, right? You don't have to drop into objective C swift Java or Kotlin your code. You know we're very open, you know, opened to using whatever technologies that you really want to be able to use.</p>



<p>&nbsp;But in addition, all of that, we actually do have a really cool hybrid story. So you are a web developer. You've heard of this thing.&nbsp;</p>



<p><strong>Jon:</strong> Yep.&nbsp;</p>



<p><strong>David:</strong> Yeah, yeah. A little familiar with that. So what's really interesting to me about this and it seems to be resonating with some of the early adopters of MAUI a Blazor or just a Blazor component and you can drop it into a native MAUI and it does run in kind of that hybrid context. However, because that code gets compiled as. C code. There's really not that same browser interrupt barrier that you would normally and again, because you know, some UI frameworks such as Blazor do a really good job with helping You style your UI.</p>



<p>You don't end up so much in these uncanny. And you can use it for what it's appropriate for, but then if you really need that native UI experience, MAUI controls are right there in the same application. So you can quickly stand up an application, share your code with web and you know, sky's the limit.</p>



<p>So really cool to see. We've even seen some, just some apps shipping to the app stores already using that Blazor hybrid with MAUI scenario. And</p>



<p><strong>Jon:</strong> So it, so some of that seems like W you mentioned the word hybrid and you know, some of it seems like it makes me think of, am I paying like a big performance penalty or is it, you know, like how does it compare to what I guess part of my question here is what apps are not a good fit for that hybrid scenario. The Blazor hybrid scenario.</p>



<p><strong>David:</strong> Right. Yeah. So, The browsers have gotten really good at, you know, execute. Quickly. So I, I think that that, that window of what's not a good application is getting narrower and narrower. whereas, you know, a few years back we would have said, well, you know, if you adopt phone gapper or Cordova over one of those, early hybrid frameworks it would be much better known.</p>



<p>What's not a really good application for it. I would think that Anything that's heavily graphic intensive may not be good. anything with heavy animation may not be good. But again, there's, there's gonna be&nbsp; exceptions to these rules. So the good news is, is that if you stand up a MAUI app and you start building in one direction, let's say that you like, Hey, I really think I'm going to be able to get away with Blazor and it's going to accomplish all of my needs.</p>



<p>And you get, you get a couple miles down the road and that's not working out. You don't have to trash your application. your .NET code will work just, just swell without that browser context. And you can stand up native UI in its place. Without starting your application over again without, you know, starting from scratch. So I think that's a, that's a pretty cool way to think about it is, you know, don't overthink the approach that you take. But also you know, within within a Blazor Hybrid scenario, you still have access to all the non UI stuff that a Maui application provides such as sensors file System access notifications, local notification.</p>



<p>&nbsp;System tray, you know, all, all the things that you would want to have access to in a native application is all there at your fingertips, even though you might be standing up UI that's HTML and CSS. So yeah, I don't, you know, I don't have specific examples for you. We'll see what people do.&nbsp;</p>



<p><strong>Jon:</strong> Yeah. Well, and a lot of it, right? It goes into like, you test it and you see what works. And I, like you're saying browsers have gotten, we're recording this, this podcast over video in a browser now. Right?&nbsp;</p>



<p><strong>David:</strong> Yeah.&nbsp;</p>



<p><strong>Jon:</strong> The thinking of doing that years ago, it would be like, that's just ridiculous. And it's like, and now I guess most platforms don't have to spin up a whole browser. This there's this like web view to are these native built-in browser controls.&nbsp;</p>



<p><strong>David:</strong> Yeah. Yeah. So WebView2 is, is something that we actually use on the desktop. We use it on, on Windows right now. So when you are building a a hybrid application Blazor hybrid application with Maui, you're going to end up with web V2 on, on Windows on, Mac you're going to use w was it WK with. And I think that's the same thing on, on iPhone. So, I know that a WebView2 is coming to more platforms. we see. don't have any announcements, I'm not announcing anything. But I'm pretty sure that that that's out there. So, you know yeah, they're, they're super performance. You can bundle it with your application.It can be acquired separate from your application depending on what the OS allows for. So there's a lot of things you can do with the browser these days. And, and even on mobile context, they can run super, super.</p>



<p><strong>Jon:</strong> So a lot of what I think of mentally. I still am in this, you know, MAUI and I'm feeling, I initially think of mobile apps. but, but I have to like reset my brain because going way back when that .NET first chipped, and it was like, cool, I can build, you know what wind form applications. And, and then people are like, can I run it on Mac?</p>



<p>Well, you know, and it's like, yeah, with mano sort of, you know, but not really, you know? And so like Can I really build like a full featured, like desktop application and it runs on Windows and then I can ship it and it runs on a Mac too.&nbsp;</p>



<p><strong>David:</strong> Believe it or not. Yeah. Yeah. And you know, so we, we have done several things that are different than Xamarin to enable those, you know, desktop scenarios that differ from mobile. So one of those is multi window. So you can have multi window applications when you want to. We are working with several customers that I cannot name, but really cool customers to build out new desktop application experiences. And, you know, their requirements are pretty demanding in terms of performance, in terms of multi window custom MDI. Implementations MDI is multi document interface, something I didn't learn until we started doing Maui and realized that we needed to do desktop things. So I needed to learn what, what is a desktop thing, you know?</p>



<p>&nbsp;And so, you know, that's essentially MDI is the kind of thing you would experience in Visual Studio where you can dock and undock panels, and you can have things all floating around inside of Europe. Your primary window. So, you know, then mouse, gestures and pointers and not pointers, like, You know, sciency pointers, but, you know, your cursor, You know, I want that to be a finger, I want that to be a hand or whatever. So all of these things are new in MAUI. And that's not to say that we've got everything immediately at GA that you could ever imagine for a desktop application, but that's where, you know, our vendor partners that build awesome components step up and because, you know, sync fusion to lyric dev express, I, you know, I could go on and on.</p>



<p>Have desktop components and widgets and they can adapt them for MAUI and they are, they're doing just that or they're building new controls. So so far we have not hit a limit or a blocker in terms of What we can Do for desktop. What I think is really cool is, I mean, I don't know, years ago, and you're given that you've got, you know, web developer experience. Do you remember the whole mobile first design? Kind of wave that happened there and it kind of swept the world. It's like, okay, when you're going to build an application, that's going to run multiple places. Start with your smallest screen. We build out from there...&nbsp;</p>



<p><strong>Jon:</strong> That was actually, my next question is like, how that runs well on a phone and a, you know, huge desktop, right.&nbsp;</p>



<p><strong>David:</strong> Well, I mean, the good news is because&nbsp; the Xamarin has always been and and now MAUI of course, inherits is it adapts to different screen sizes and resolutions? So all from one project, you can have one set of images and SVGs and raw assets and And then you, you stand up your layout with the appropriate constraints and it will adapt to whatever screen you put in.</p>



<p>And then we've got a whole host of solutions for, you know, markup extensions so that you can do on platform for, you know, Hey, if it's running on Android, do this one thing, or adaptive triggers, you know, if I, it, which is a akin to a media queries right.</p>



<p><strong>Jon:</strong> Okay.&nbsp;</p>



<p><strong>David:</strong> So essentially, you know, if, if the screen gets to be larger than 1200 pixels, Add another column to the layout, or if it gets below that remove that right-hand column, because I don't have room for it anymore.</p>



<p>&nbsp;That kind of stuff, super easy to do with, with .NET MAUI, or idioms, you know, like, Hey, if I'm running in a desktop context to use a menu bar, if I'm not running in a desktop context, do a fly out menu or, or however you decide to design your application. So. Tons of options. pretty Much you can do anything you need to. And if and if those things, you know, start to make your, your UI super muddy, you can always say, Hey if I'm running on desktop, use this desktop specific layout it's a separate XAML file or whatever. And then, you know, if I'm running on mobile, I've got a separate iPhone or, or mobile layout. So tons of ways you can do it.Plus we support multi-target. I could go on and on.&nbsp;</p>



<p><strong>Jon:</strong> tell me about multi target in there.&nbsp;</p>



<p><strong>David:</strong> so-so with and this has kind of been supported, Claire Novotny RO a library. I don't even remember what exactly was called. Was it SDK mobile tools or rescue? I don't know. but it was a way in which you could use this underlying multitask editing functionality and .NET, where with some conventions.</p>



<p>&nbsp;You could say, Hey, I want this file to work on this platform. And I want this file to work on this platform. And they're basically sharing an interface or they're sharing the same class at their partials.</p>



<p><strong>Jon:</strong> Yeah.&nbsp;</p>



<p><strong>David:</strong> And, so it allows you to do these multi-platform. From a single project typically. Prior to that, you would end up writing all your Android code, for example, in an Android specific project.</p>



<p>And then you'd have a separate project for all your other platform stuff. And you know, this is just a nice way to bring it all into one project. As developers we're focused on our app. We really don't want to be thinking about as cross-platform developers. We don't want to be thinking about each individual platform.I have to worry about four things, four different platforms. The less I can focus on the value of my one app. So that's what we're able to do now. We've kind of taken everything that, that Claire, and in that, that library supported and we've worked closely with the project system teams and all the other stakeholders within Microsoft to say, Hey, let's bring this up to snuff for what we want to do in MAUI.</p>



<p>So now in MAUI, you can do all those things. You can have all your code all in one. No matter which platforms it needs to compile for, you can use conditional compiler arguments. You can use file name conventions, you can use folder conventions, and the build system will pick up the right things and do all the right things.</p>



<p>So your Android code runs on Android, only your iOS runs on iOS only, and it works in Visual Studio and they're adding support for it in Visual Studio for Mac too. So that when you're looking at a file, for example, you can go up to the top of that file and say, okay, Show me what this looks like for Android.</p>



<p>Show me what this looks like for iOS, and it changes your code to show you this is what's going to run when you're on that platform. And this is what's not going to run, et cetera, et cetera. So it's very powerful. Very cool.</p>



<p><strong>Jon:</strong> So let's say I'm developing, like right now, I'm, I'm doing this podcast on Windows. I have my laptops, a Mac. Do I need to, if I'm developing across all these different platforms, do I need to be jumping around and testing and you know, running on each or what's the, like, obviously it's important to test on the actual platform you're shipping for, but I don't want to be doing that all day long.</p>



<p>So how, you know, what does that experience feel like? Is there anything we do to make it easier so that I'm not having to run around in 19 different devices and test everything all the time?&nbsp;</p>



<p><strong>David:</strong> Right.</p>



<p>So on Windows the story is really cool because you of course can be building for Windows. And actually when you start up a new MAUI application, Windows is the default target these days. This is a change we just made previously, it had been Android. And so that makes for a really there's, there's two reasons we. One it's the faster build cycle, so you can be more productive and, to, it has the least requirements in terms of setting up a bunch of other junk. So, so you immediately get</p>



<p><strong>Jon:</strong> I D I just have to say when I've like, been like, okay, today's the day I'm going to be a Xamarin developer and I would get started. It's like, I would get sucked down into Android developer to all hell a little bit. Like, it's fine. I know I got to get there eventually, but I don't want my two or three hours to be spent, like messing with Android builds. Right. So that actually sounds.&nbsp;</p>



<p><strong>David:</strong> Yeah. So there's still more work coming to kind of smooth out the whole Android side of the setup process, because it is quite a few steps. But yeah, so...&nbsp;</p>



<p><strong>Jon:</strong> I'm sorry to interrupt you here too, but there is, there's this Android sub system for Windows sort of thing too. Is that part of that story or like, I know you can do it manually, but is that going to be like part of the actual main flow in the.</p>



<p><strong>David:</strong> So it is not part of the main flow right now. It is something that we think would be really cool to add to the main flow in the near future. and we're talking and we have had conversations with the team that kind of owns that to say, Hey, what can we do to make this a better developer experience? Related to it.</p>



<p>I happen to have seen a, a, an extension for Visual Studio that hopefully will be available in the next couple of weeks. Not on an official one, it's a community one. But essentially it will help you to very quickly get your Windows subsystem for Android started. Added to Visual Studio as a device target.</p>



<p>&nbsp;Because you have to go through a bunch of steps right now to get it to work, right? You have to go figure, you have to go, first of all, install it. Then you have to era how to get it started. And then you have to go figure out what your IP address is. And then you need the magical incantation from ADB, a specialized Android command line, only tool to connect.&nbsp;</p>



<p>Then it'll show up in Visual Studio. So this, this extension for Visual Studio, we'll do all of that for you.&nbsp;</p>



<p>So, You know, you combine that with Android, mobile and tablets, and then you also have the Windows, which is your default, but then you add onto that we have this iOS hot restart feature enables you to take your iPhone.</p>



<p>With the little cable that you probably bought it with and you plug that puppy into your computer, your Windows machine. And it becomes a target directly from Windows. Just all you need is the the iOS device and your Windows machine. And we guide you through the process of making the connection and you can start debugging right from there.</p>



<p>So really from Windows, the only target you cannot Actually interact with you can build, but you can't interact with would be a Mac desktop application because we can't emulate. At this time. And then then the additional scenario, which is also super useful from Windows is the iOS remote build host or the Mac remote build host.</p>



<p>So this is, if you do have a Mac, you can do. After the side, lid closed, if you prefer. And you can connect to it from Windows and it will actually show you your simulator directly on your Windows UI. And we actually in the upcoming Visual Studio release have. Represented in the Visual Studio UI as part of our XAML live preview.</p>



<p>&nbsp;And what's super cool about that is we're adding the ability for you to actually inspect the UI of your running application and that will navigate to code for you. And just really this is, this is what a lot of us have been waiting&nbsp;</p>



<p>for&nbsp;</p>



<p><strong>Jon:</strong> Yeah.&nbsp;</p>



<p><strong>David:</strong> All that ruling right back to the running applicant. Cause like XAML hot reloads. Great. But then if you want to go to the UI and be like, Okay. I see it on my screen. Where is that code Where's that coming from? Right. and with this functionality, you can poke at it with your cursor in visual studio and that will navigate to your code And then you can go make your changes. And so yeah, to have a go to&nbsp; devices.&nbsp;</p>



<p><strong>Jon:</strong> okay. So that is really good. And that's the development experience? What about the like testing, like CGI kind of thing? What do you recommend for.&nbsp;</p>



<p><strong>David:</strong> Yeah. So in terms of what we recommend really doing on-device, unit tests is, is the biggest bang for the buck. there's also the ability to do on device UI testing. However, that tends to be quite costly. and sometimes flaky. So the return on investment there is not awesome. so the more unit tests that you can be writing and then getting them to run on devices, you'll see, good results there.</p>



<p>&nbsp;With With some of the app center and Xamarin UI test things, which some of that though, some of those libraries still need to be brought up to .NET six. but then you also have other open source frameworks, like Appium. You can utilize some of those even on your local machine. but You know, with, with that coolness comes complexity.</p>



<p>So really, you know, unit tests are the way to go. and if you need to run across a breadth of devices, then the app center test cloud is available.&nbsp; If you're willing to pay the pretty penny, because, but then, but they, you know, they have tons of different devices and we utilize that. to run tests against MAUI, and our control gallery and all the tests that we have. But we've kind of shied away from doing UI tests these days more towards doing on device unit tests.</p>



<p><strong>Jon:</strong> Okay. So what's the let's say I'm solid now. I want to get into this. I'm assuming this comes out right after, you know, after the announcement at bill, you know, so what, what, what do I actually need to do in order to get started building now? Yeah.</p>



<p><strong>David:</strong> Yeah. So the best way to get started is to download the Visual Studio preview that will be available at build the preview channel, a Visual Studio will carry the GA bits of .NET MAUI and it will give you everything you need for Android, iOS, Mac, and Windows right there. And so with that simple install, Check the .NET MAUI box at the install. You can start developing right there. It's file new MAUI application and you're off to the races.</p>



<p><strong>Jon:</strong> Okay. So, you know, going way back, we talked about like open source background and open, you know, Xamarin being open source and stuff like that. If I'm not using. Visual Studio what's. Am I still able to get the bits, you know, open-source and do a little more work to get things done.&nbsp;</p>



<p><strong>David:</strong> So with Xamarin, that would have been a hard, no but the cool thing is, is that because we're now part of .NET, you can install MAUI directly from the command line using .NET itself. So we are, what's called an optional workload, in .NET. So we are part of that .NET. but we're also Because we are gigabytes of things. You know, we don't want to force that upon everybody that just wants to install that .NET. So you can install .NET with the installer, from the .NET website, and then you can go .NET workload installed. MAUI and .NET workload installed MAUI. We'll go ahead and grab all the things that you need to be able to build and run from the command line. And then you could use, you could use Visual Studio code, you could use another editor of your preference. they will all have differing support for C for XAML, you know, so you'll have to decide are those things worth it? you're definitely going to get the best experience in terms of hot reload .NET, hot reload, which also works with MAUI Blazor hot reload. And if, I don't know if that's actually the term we use for it, but you know, the hot reload that works with the Blazor and the CSS things,&nbsp;</p>



<p><strong>Jon:</strong> Yeah, prettysure that's hot reload to there.&nbsp;</p>



<p><strong>David:</strong> Yeah. Yeah. I think that that will work, in some scenarios, outside of Visual Studio with like the .NET, what does it a watch or whatever that works for those scenarios, but that does not work at this point for MAUI scenarios.&nbsp;</p>



<p><strong>Jon:</strong> Okay. And the, like, I always have to remind myself and think through this. So there's hot restart, which is detects code has changed and restarts the application. And that's okay. But I lose my state. I have to wait while the app kind of restarts. I have to get back to where I was. And what's crazy about hot reload.</p>



<p>Is it actually updates just the code and injects it in. Right. And I don't have to restart my application. I don't have to click through the app to get where I was. It's just updates.&nbsp;</p>



<p><strong>David:</strong> Yeah. Yeah. So it reapplies that code. And then reapplies the state that it replaced. So yeah, you don't, you don't lose your, your navigation, you don't lose your view state. it's super powerful. And I think that a .NET Hart reload which does a method, body replacement, essentially. So,&nbsp; and I've had really a lot of fun with that over the past week, building out samples and changing code and, very rarely do I have to restart my application.</p>



<p>Hopefully in the future, I'll never have to restart my application. I can just keep coding. But yeah, there's a lot of different things you can do with it. And the hot restart the way you described it as definitely accurate the the additional nuance to it is when we talk about iOS hot restart, we're essentially taking that same concept, but applying it to the ability to, to plug your ILS device into your. A Windows machine. So we can, we can take that same hot restart concept further. We actually use it under the hood on Android development for fast deploy. And we could use it on other platforms as well to&nbsp;</p>



<p>tighten up the developer loop so that you have to do less restarting of your application, less rebuilding of your application.&nbsp;</p>



<p><strong>Jon:</strong> Yeah. Yeah. W and that, like you said, that cycle of like building and re, like, it's got to be compiled for that platform and it's gotta be shipped over, they, you know, install&nbsp;</p>



<p><strong>David:</strong> We’ve developed applications like that for decades, you know? Like, but now, like if, if, if I get up in the morning and start to build an application and my hot reload doesn't work, it's like, ah, scrap it. I'm not working. We've become spoiled.</p>



<p><strong>Jon:</strong> Okay, so I've just got a few more questions. One is, so the obvious kind of like selling point for me is I'm a .NET developer. I can use my C skills. I can use my familiar tools. I can use my libraries. I can use code I've written and all that. And you get packages. That's the main selling point for me.</p>



<p>Is that really, like, if I'm, if I'm talking to other developers about like, Hey, Maori's awesome. Is that kind of the main thing? Or are there other, you know, like things that, cause there are, like you mentioned, there are other things that we talked about electron there's like flutter there's, there's some other options.</p>



<p>So like how is there anything else I should think of beyond that.&nbsp;</p>



<p><strong>David:</strong> So it is .NET. I think one of the other major selling points is You can stay within one language. You don't have to go out into objective C and swift. You know, I know that one of the reasons that a lot of developers love Blazor is the hatred of JavaScript. Or, or you just don't feel comfortable with it, or you just</p>



<p><strong>Jon:</strong> you know, I got, yeah, I got to say that because. I think people get allergic to like, oh, hey, you know, like your web developer, you should know JavaScript. I can do Java script. I can write Java script. It's not going to be the best JavaScript. It's not going to take advantage of all the, you know, it's like, so like in cases where I'm writing business logic, I think I'd do better in C sharp with that. You know what I mean?&nbsp;</p>



<p><strong>David:</strong> Yeah, I know for sure. and you know, I, on a personal level, I've, I started out as a web developer. So ASP and access databases, and then graduated to SQL servers. And you know, I started way back, man. So. I have a I have a lot of appreciation for, all kinds of different languages, whether it was VB VB script, vb .NET.</p>



<p>&nbsp;C I certainly love and I advocate for, but yeah, so, you know, being able to maximize the languages that, you know, and have mastered I think is, is awesome. One of the other great things that you get from MAUI is accessibility. So accessibility is something that is a. It's a pretty hard to understand and get up to speed on topic.</p>



<p>&nbsp;We, we realized the importance of it has developers many times, but we don't know what to do about it. So the great thing about MAUI is because first of all, it uses native UI controls. You get the native platform, accessibility features by. But also on top of that, we've added semantic services that enable you to more directly control your accessibility experiences,&nbsp; whether it's auditory, visual, et cetera. That's something that's a pretty cool advantage. And then because we are also using a native UI if there are other native libraries out there, you can bring them to .NET. So we have a couple of different patterns for doing that. So let's say that you had a cocoa pod, or you have a Java library out there and it's super popular in the ecosystem and we don't have a comparable offering for it in .NET.</p>



<p>You can totally. You can use it either just by invoking it from .NET, or you can write a binding around it, whether it's a small API that you&nbsp;</p>



<p>surface or it's a full API that you service. Like for example, I was looking on Twitter and there's a library called... Are you familiar with Lottie?</p>



<p><strong>Jon:</strong> Oh, yeah, yeah, yeah.&nbsp;</p>



<p><strong>David:</strong> Cool animations, right? And so so this library is, has been out there for a long time with a, with a, binding for Xamarin, but nobody has done any updates to it for .NET 6 And so this one developer says, Hey, well, I just did a, what's known as a slim binding which essentially is I just need to be able to call this one method and use this library.</p>



<p>And so you create the wrapper around that with .NET, you invoke into the native code and you're up and running with a a Java library. essentially. or if it's on the apple side, it's, you know probably a swift or an objective C library. So you have that capability as well. And you can stay in .NET, but use not just what you get on NuGet, but you get all the other stuff too.</p>



<p><strong>Jon:</strong> Oh, very cool Okay. One last.</p>



<p><strong>David:</strong> you think of more, if you gave me more time.</p>



<p><strong>Jon:</strong> Yeah. Yeah, I know. I D partly why I set this up is relatively short. Cause I'm like, this could go forever, right? There's so much cool stuff to talk about. One last question is, can you kind of summarize where we're at today? Like May 2022, what shipping today? What's in the future?</p>



<p><strong>David:</strong> So, you know, as we kind of started off at the top, you know, this is a huge transition in the .NET ecosystem. It's a unification of this Xamarin technology and, and all the things, the build systems and everything with .NET itself. so we recognize this is also a major transition for the ecosystem.</p>



<p>So we're shipping a GA SDK here. And that's going to give you the ability to build Android iOS, macOS, and Windows applications. We have seen, since we did our C just a few weeks ago, a lot of libraries updating and starting to ship. So the ecosystem is starting to make that transition. And we anticipate that we're going to see several. If not a long tail of that, as libraries are like, oh, I really need this. I really need that. And they start bringing their stuff and recompiling with .NET 6 targets in mind. and so, You know, we're encouraging developers right now. Bring your libraries to .NET MAUI and .NET 6 Now is the time. We're ready for it. You've got a GA product, you know, you can depend upon it. Microsoft supports it. We have a, we have a very public support policy, you know, so, you know, you can depend upon it, you know who to call if you've got problem. And it's going to be around for a really long time.</p>



<p>And then as we get later in the year as tooling become stable, because we're going to ship previews of tooling. With the GA SDK when tooling becomes stable. And we know that we can depend on being more productive, little bit later in the year, then we'll encourage more Xamarin applications to migrate.</p>



<p>&nbsp;And we'll, we'll go broader right? With the call for. You know, come be productive, building your awesome apps with .NET. But the first phase really is let's energize the ecosystem to start making&nbsp;</p>



<p>this transition. Some people were just waiting to know, is this a real product that we can take a bet on? You know, which is a realistic thing.&nbsp;</p>



<p><strong>Jon:</strong> And when Microsoft ships something as GA, like you said, that comes with a support policy and Microsoft's kind of famous slash infinite, infamous for supporting things for a very long time. Right. So it's like, once it's shipped, like that's a commitment for Microsoft and to something as a customer, you're like, okay, it's actually a real thing now.</p>



<p><strong>David:</strong> Yeah. and you know, a .NET, we just celebrated 20 years, out, out in the world. We've got, we've got ourselves, a, a young adult and,&nbsp; and you know, Xamarin, like I mentioned has pedigree that goes back, like at least 12 years to some early models. So, you know, while MAUI is a brand new first GA it's also an evolution of a product that has been around for quite a while.</p>



<p>&nbsp;And so the commitment is there, there is definitely proof in the pudding that this ha this word. Like we Xamarin forms. It survived seven releases of Android, seven releases of iOS. It went from round beveled, edges and gradients and&nbsp; Whatever that design pattern was called, where things were like leathery and stuff.</p>



<p><strong>Jon:</strong> Oh,&nbsp;</p>



<p><strong>David:</strong> And then it went many more design and simple and flat.&nbsp;</p>



<p><strong>Jon:</strong> Yeah.&nbsp;</p>



<p><strong>David:</strong> And then there's like, new amorphic skewism, blobbity blob, you know? And so, as you know, the great thing is, is if you had built your application at the very beginning, you wouldn't have have, to have, you know, been forced to rewrite it. That whole time, because Xamarin forms prove that as a pattern, as, a technology it can do that for both, you know, line of business, enterprise applications, as well as, you know, we've got customers doing commercial, uh e-commerce, you know, straight to consumer stuff and games, you know, people build games with it, you know, so tons of stuff you can do with it. So. It's a GA product. you can take a bet on it.</p>



<p>&nbsp;There's a support person you can call and you can, and they can help you with your stuff. It's pretty awesome.&nbsp;</p>



<p><strong>Jon:</strong> All right. I think you just committed to helping me with all my problems. Awesome.</p>



<p><strong>David:</strong> along commitments from people with more power than me.&nbsp;</p>



<p><strong>Jon:</strong> Where, where do we, so where do you go to get started then with MAUI? You said download the preview.&nbsp;</p>



<p><strong>David:</strong> Yeah. Yeah. So, so Visual Studio.com preview we'll have the, have the bits you can install. We actually have our own websites, so probably direct everybody to our website. So dot.net/maui. That that'll get you to our MAUI landing page. I think we might be taking over the .NET web page com GA. I don't know, I saw a beautiful design, Maira showed me a cool design. I was like, oh, that looks really nice. So yeah, from there you can get all the activation tutorial and it'll walk you through installing everything. Of course, I'm, I've got, I'll have a blog post out. That'll give you all the dirty details.</p>



<p><strong>Jon:</strong> Cool. I'll get that all linked in the show notes. So, all right. I'm out of questions. I'm ready to wrap up. You got anything else you want to say?</p>



<p><strong>David:</strong> Hey, man. Thanks for having me on it's the first time I've done a podcast with you. I hope it won't necessarily be the last, but I appreciate you having me.</p>



<p><strong>Jon:</strong> Cool. All right. Thanks a bunch, David. Okay.</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0246-David-Ortinau-MAUI.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 245 - Catching up on Java dev with Bruno Borges and Mark Heckler</title>
    <link>https://herdingcode.com/herding-code-245-catching-up-on-java-dev-with-bruno-borges-and-mark-heckler/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-245-catching-up-on-java-dev-with-bruno-borges-and-mark-heckler/</guid>
    <pubDate>Thu, 17 Mar 2022 07:11:18 GMT</pubDate>
    <description><![CDATA[<p>Jon talks to Bruno Borges and Mark Heckler about Java development.</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 245</strong></p>
<p>Jon talks to <a href="https://twitter.com/brunoborges">Bruno Borges</a> and <a href="https://twitter.com/mkheck">Mark Heckler</a> about Java development.</p>








<div class="video-embed video-embed--youtube">
  <iframe
    src="https://www.youtube.com/embed/AImxldVy4l8"
    title="YouTube video"
    loading="lazy"
    referrerpolicy="strict-origin-when-cross-origin"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    allowfullscreen></iframe>
</div>



<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-245-Catching-up-on-Java-dev-with-Bruno-Borges-and-Mark-Heckler.mp3">Herding Code 245: Catching up on Java dev with Bruno Borges and Mark Heckler</a></p>



<div class="wp-block-group">
<p>Links:</p>



<ul><li><a href="https://docs.microsoft.com/en-us/java/openjdk/">Microsoft Build of OpenJDK</a></li><li><a href="https://code.visualstudio.com/docs/languages/java">Java in Visual Studio Code</a></li><li>Visual Studio Code <a href="https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack">Extension Pack for Java</a></li><li><a href="http://esotericsoftware.com/">Spine</a>: 2D skeletal animation for games (esotericsoftware.com) written in Java</li></ul>
</div>



<h3>Transcript:</h3>



<p>[00:00:00] <strong>Jon Galloway:</strong> Hello and welcome to Herding Code. This episode is being recorded on March 11th, 2022. Today I'm talking to Bruno and Mark, and they're going to teach me all about Java because I don't know a thing about it. So welcome folks.</p>



<p>[00:00:22] <strong>Bruno Borges:</strong> Hey, Hey, Jon, how's it going? Thanks for having us.</p>



<p>[00:00:26] <strong>Jon Galloway:</strong> Yeah. And so can you introduce yourselves, tell, tell us tell us your background.</p>



<p>[00:00:30] <strong>Bruno Borges:</strong> Yeah, I said something, you go first.</p>



<p>[00:00:35] <strong>Mark Heckler:</strong> Well, hi, I'm Mark Heckler. I'm a Java developer for well, a long time now. Java champion Kotlin developer expert. We won't talk about that too much today, but but deepen the JVM and, and loving it and still loving it. So, and I, I work, I guess, on, on the, as an aside, I work in developer relations here at</p>



<p>Microsoft engineering cloud advocate for a Java and JVM languages.</p>



<p>[00:01:00] <strong>Jon Galloway:</strong> Cool. All right. And Bruno.</p>



<p>[00:01:02] <strong>Bruno Borges:</strong> Yeah, I'm a PM manager at Microsoft. I lead some of the projects on the BM side, like Microsoft to beautiful JDK and Microsoft's involvement in the Java community. Like our work with the consolidation process. I am also a Java champion. And for those who don't know, Java champion is a program similar to Microsoft MVP, but for Java developers and yeah, it's, it's, it's been my career for, for a long time too long, I would say.</p>



<p>[00:01:33] <strong>Jon Galloway:</strong> Okay. Well, let me start off with just when one thing, which is like Microsoft Java, how does that fit together? Like why, why is that a.</p>



<p>[00:01:47] <strong>Bruno Borges:</strong> Five to 10 years because. Because of cloud computing, right. Developers wants to bring stuff to the cloud and Microsoft became a cloud vendor hosts any kind of application. And that includes Java applications. Right. But it's also through the history of Microsoft. And I don't want to go back in time too much because like some experienced Java developers will remind a few things, but in more recent times in the history, Microsoft did a welcome some companies and came up with some solutions that ended up either being developed in Java or using Java based technologies.</p>



<p>So. The big, big data exploded about a decade ago. And in projects like attaching spark and Hadoop that are implemented in Java, ended up being used by every major company, including Microsoft. So, so those systems are in, used in use internally whether it's Microsoft being service or office or Azure infrastructure to behind the scenes, we see those Java based technologies in use.</p>



<p>I've actually cost them more recently. So, so Java and the Java ecosystem and tools are needed for scalable systems. And, and that happens to Microsoft as well. And then Microsoft also welcomed LinkedIn and . And those are technologies that are heavily implemented in Java with thousands of Java developers that now work here in the conflict.</p>



<p>So not only Java is a matter of like, we use the technology, but we also of course offer our tools and services to the customers outside. And the way that they host applications is through Azure at the end of the day.</p>



<p>[00:03:41] <strong>Jon Galloway:</strong> Okay. Yeah. I was going to say that the big, my main exposure to job over the past several years, thinking about it has been helping my kid with Minecraft, like when she wants to install all the mods and all that kind of stuff. So</p>



<p>[00:03:53] <strong>Bruno Borges:</strong> Yeah. And the interesting thing is Minecraft today, if you're playing with Minecraft Java tradition, the binary of Java that that is shipped with Minecraft is actually the binary that we build ourselves, the Microsoft beautiful and it's players and developers. Are in sync with their release. They will see that monograph is running on Java 16 already, if not 17 on I'm not sure if the 17, but they did two 16 at the end of last year.</p>



<p>So it's pretty modern, pretty up to date with the Java release history.</p>



<p>[00:04:32] <strong>Jon Galloway:</strong> Okay. So you mentioned open JDK and what's kind of the, what's the ecosystem like now, as far as like who's developing Java.</p>



<p>[00:04:40] <strong>Bruno Borges:</strong> Primility who develops. Java is still Oracle. Oracle is the steward of the technology and the platform is the steward of the open JDK. And open JDK is the open source implementation of the Java platform, which enclose the Java language specifications, the JVs pacification, and the Java API. So those three things combined to form the Java platform.</p>



<p>It opens you the key is the open source implementation GPL. But there are lots of contributions. Red hat is a major contributor to the opening, to the key project. IBM Azule systems, bell soft Twitter did some contributions Ali-Baba of Amazon Google in the past. And now Microsoft in, in recent times companies that we imagine like they were, you know, competitors, but still because they saw this technology as a great piece of, of software to do several things at scale, they all got together and said, Hey, let's, let's make something.</p>



<p>And the open JDK where it says a true open source project with a very high quality professionals evolved in major companies behind supporting its development.</p>



<p>[00:05:51] <strong>Mark Heckler:</strong> And if I can interject something here I, everything is in terms of Java kind of builds around and revolves around the Java community process. And that's not just in names. So you have a lot of, a lot of participants at an individual and corporate and organizational level that kind of come together and help guide, steer, develop specifications and you know, kind of suss out and test out different technologies as they start getting incorporated into Java the specifications. So specifications, I should say. So it's, it's very community driven Oracle kind of services that the central point and, and kind of is the force behind continued development. But there are a lot of, a lot of contributors to that entire process start to finish.</p>



<p>[00:06:33] <strong>Jon Galloway:</strong> Okay. So let me ask, w let me tell you what I did trying to like get up to speed a little bit with Java, and you can tell me what I should have done. Instead. I am Googled around and I, I saw a Microsoft Java get started, whatever, and I went over to the vs docs page and I installed, or excuse me, the vs code page.</p>



<p>And I installed the extension the Java extension pack, and it installed a bunch of extensions. And then I. a new project. Well, first I went on and I downloaded the open JDK just to make sure that it was installed in the newest thing and stuff. And then I also played with J hipster a bit just cause I'm a web developer and it seemed fun and I was pretty impressed with all of it.</p>



<p>I, you know, there's the usual kind of trying to figure out what is, what is Maven and what is grateful and what is, where's my Java home pointed and that sort of stuff, but it was pretty smooth. And you know, a couple of hours, what, what do you recommend for people getting started with Java development?</p>



<p>[00:07:35] <strong>Mark Heckler:</strong> That's all, I'll start off with this because that's something that I feel like, and we're certainly not alone in this, but I feel like we could do a better job on getting people. That, that kind of, that first experience you, you, you did a lot of good things there. I don't know that I could necessarily suggest improvements just because there are some rough edges there.</p>



<p>I mean, when, when you're talking about a build tool, if you're not within the Java ecosystem, and if you're not within the Java realm, you're like, what's Maven. What's great. All, you know so you know, vs code with the with a small handful of plugins knocks down, a lot of those mirrors for you if you install the JDK, that would be something that would be kind of awesome.</p>



<p>If we had some kind of like drop this in and everything just works, but there are a couple or three steps that you mentioned I know some folks are very, very fond of rebels and, and J shell and, you know, et cetera. But but ultimately I think it comes down to just finding some good materials that you can kind of get at that gentle introduction, you know, a step at a time.</p>



<p>And it sounds like you're already there. And if, of course, if you have a frame of reference that you're going from, like you mentioned J hipster, which by the way, a Julian Dubois, who is well, my manager is the lead of that project. You know, so he's, he's a Microsoft in as well and heavily involved with community.</p>



<p>So that's that's something that is, if you're coming from a frame of reference, it should be easier to pick up in that regard, but everybody doesn't share the same frames of reference. So that's part of the, I guess, struggle that we're all trying to help help solve, help make better.</p>



<p>[00:08:58] <strong>Bruno Borges:</strong> Yeah. Ecosystem can be frightening. After you spend an hour</p>



<p>reading blogs and articles and try to make us some sense out of it because, because it's a. Diversified equal system. There's no single technology vendor for any component in the Java ecosystem. Oh, I need, I need the JDK. Right? That's the basic component you need.</p>



<p>There are seven vendors, right?</p>



<p>[00:09:27] <strong>Mark Heckler:</strong> maybe more</p>



<p>[00:09:28] <strong>Bruno Borges:</strong> Or, or, or, or more, oh, I need a, I need an IDE or EDS or, well, there are five options out there. Right. And then I need a framework to build my application. Well, there are probably two. And then finally, okay. I chose, I selected my JDK, my enter, or IDE I have a framework in mind.</p>



<p>I still don't know what that means, but it has some pity and meta choice, but it's there. And I see me to build that project, so I need to build. Right. And there are actually more than two Maven in great are the most, most used ones. But is that true? Important too. There is a patchy and Apache Ivy and, and babble or not double, sorry, something like</p>



<p>[00:10:14] <strong>Mark Heckler:</strong> I'm going to paraphrase. We don't talk about those</p>



<p>Bruno.</p>



<p>[00:10:17] <strong>Bruno Borges:</strong> too many, too many. So it can be frightening. But what</p>



<p>Mark said, I think it touch if a person doesn't know, doesn't know anything about Java. Just go online search for something that says getting started with Java and something that does not involve building a level of education on the very first step and then get started with that.</p>



<p>Okay. Here's my first job application. Here's my first hello board application. And if a developer is already familiar with an IDE or editor, try to see if that's technology supports Java. And if it does use that once you got a good sense of here's my hell award application, I'm reading a file. I'm counting lines in the file, or, you know, doing some math, get some sense of the language.</p>



<p>Then next step is okay. I actually want to do a web server. I want to get each to be required to then provide HTP responses. Then there is again, a multitude of frameworks that can do that, because that is ultimately the majority of systems that are built today, but just go and get started with anything and then start learning from there.</p>



<p>And once you pick a framework and you feel like, oh, this is interesting. This is cool. And your criteria was probably, oh, this is the most usable, or this is, has the nicest website. I don't know, whatever criteria. Right. And try to dive in a little bit on data, want to understand concepts and understand what are the features capabilities.</p>



<p>Cause the reality is most frameworks can do the same thing. Last there's a lot of overlap of features and, and, and back to what I said before, it can be frightening because yeah. Dot net is awesome because you know, it is opensource, but it's also coming from a single company, right? There's no, you don't how many web frameworks aren't out there for.net it's it's not there, right?</p>



<p>[00:12:13] <strong>Jon Galloway:</strong> There's a few, but you're right?</p>



<p>It's basically there's one.</p>



<p>[00:12:16] <strong>Bruno Borges:</strong> Yeah, exactly. So, so that can help for, for beginners and developers that have to get through that barrier for the Java ecosystem. For sure. So follow Mark's advice. So if something gets started,</p>



<p>[00:12:30] <strong>Mark Heckler:</strong> Yeah. And I don't want to chase this down this rabbit hole too far, but I mean, what are the, I mean, you, you always, what you're familiar with, you always see the, the pros and you also see the glaring. I hate to say deficiencies, but you can see the gaps. right.</p>



<p>So one of the strengths and weaknesses of Java is exactly what Bruno said.</p>



<p>You, you know, oh, I need a JDK. I need, I need a version of Java. Well, what version and where do I get it? Which one? But you have options. And, and the good news is that means it's open. I mean, you can, if you want to use the Microsoft, build them up in JDK. If you were using yesterday, if you're using somebody else's new swap in this one and it's like, wow, it just, everything just works, which is amazing.</p>



<p>But when you're coming at it fresh and you're new and you're like, okay, where do I go to get this? Well, pick one. Oh, okay. Which one do I pick? And why? You know, so it it's, it gets a little weird at times. Bruna mentioning the tons of frameworks and stuff. I mean, we're not JavaScript, so there's not a new desert every day and, you know, 22 of them who die the next day, you know, so I guess there's that.</p>



<p>But but yeah, it's the same things that make it so flexible in, in many ways, make it a little more imposing for somebody coming into the ecosystem new, but, you know, I mean, like every ecosystem, we have tools that help with a lot of these things. I, I couldn't live without SDK man, so I can choose between various different SDKs just with, you know, a simple command at the command line.</p>



<p>And then I'm using something else or somebody else's built or a different version or, or whatever. And it just takes a lot of the pain out of that. But again, if you're new to the ecosystem, you're not aware of that. So then you're manually doing some of the steps that you wouldn't necessarily have.</p>



<p>[00:14:08] <strong>Bruno Borges:</strong> Yeah. Mark mentioned the command line tool called SDK man. And it's one funny enough. It's one of the many tools that we can use to manage JD case. So, so there are actually important online. So there's always that meme, right? These 14 standards are bad. We need a new one. Now you have 15 standards. It's the same thing, the Java ecosystem.</p>



<p>But the, this goes. Well, all the way back to in Java store and Java became open source with with Eva actually, before Jon became open source, because the way the Java was offered by some of Microsystems as a, as a free technology from day one, not necessarily open-source, but free for production allowed developers in the world to build products on top of Java.</p>



<p>And that's why lots of libraries came to B to B, lots of build tools were got created and frameworks for applications that stuff, applications, lab applications of all kinds, they were bored. So that, that allowed this ecosystem to exist the way it exists today. And it only gets better for whatever definition of battery or you look for.</p>



<p>[00:15:22] <strong>Mark Heckler:</strong> 15 standards.</p>



<p>[00:15:23] <strong>Jon Galloway:</strong> Yeah. Yeah. There you go. Yeah. So, so like he came in and that makes me think, like there's, you</p>



<p>know, Python as virtual environments and, you know, NPM that's got accommodate, like, is that the idea where you're setting a, like for this project or this directory I'm using this SDK.</p>



<p>[00:15:42] <strong>Bruno Borges:</strong> Yes.</p>



<p>[00:15:42] <strong>Jon Galloway:</strong> Okay,</p>



<p>[00:15:43] <strong>Bruno Borges:</strong> Yes. That's the, that's the idea. I'm not sure if that's he came in and has that capability right now. I would double-check but there are some other projects that allow the jams is another command line tool that does exactly that. I want to say this folder here. I don't want to use that command that JDK.</p>



<p>So Jones is a shell snip that configuring your shell, and it will update the JDK based on your current directory automatically. So there is a dear AMS, which is another generic tool for doubt. And you can do the same thing for Java, with your amp and clutter tools.</p>



<p>[00:16:22] <strong>Jon Galloway:</strong> let me see. So, so then we, you know, we did talk about like there's Maven and Gretel. Is, is there like a cliff notes for like, is it just pick one or is there a significant difference between them?</p>



<p>[00:16:34] <strong>Mark Heckler:</strong> my goodness. You don't want to get in the middle of that.</p>



<p>[00:16:38] <strong>Bruno Borges:</strong> I want more. I want, I want, so let me get started. Both tools are great. First of all, both tools are great. They will deliver what the developer is looking for. If the developer doesn't know what they are looking for, but if they do know what they're looking for, it's either one or the other. So Maven it starts with convention over configuration. You define your build using XML, and it's very descriptive of the things that you want to do using the XML specifications of the build file</p>



<p>[00:17:17] <strong>Jon Galloway:</strong> Was that the pom.xml file that I...</p>



<p>[00:17:20] <strong>Bruno Borges:</strong> yes, correct. So you can, you can use a variety of plugins that are official plugins maintained in the Apache project or third party plugins maintained by other folks outside the catchy foundation. And then there is great though, which is a default on Android studio. So Android developers that are already coding in Java, and now they want to do a server side application.</p>



<p>I highly recommend that they use a greater for that because you're already familiarize with the deal tool in greater has some interesting capabilities, like a built cache that builds demon that is running in the back in the background. So your compilation that happens a lot faster when, whenever you're rebuilding your project.</p>



<p>But great is a little bit different when you, the way you configure your build file, it comes with a programmatic way of doing things. It uses a language called groovy. And with that, you can write code with the instructions of how you're going to build. So it's, it's different. Even know how to use it. You go to the documentation, just copy and paste, make it work and learn along the way.</p>



<p>And for an exit for XML and Maven, it's more like, yeah, this is the only way of doing it.</p>



<p>[00:18:34] <strong>Mark Heckler:</strong> yeah. I I'm going to jump in and correct Bruno and it's some things he got all wrong. No, I'm kidding. No, I'm going to expand on something like what it's kind of interesting because the, the two approaches are pretty different because Maven is more declarative and in, in the era of, of Yamhill and Kubernetes and, and a much more declarative infrastructure as code type of mindset the Maven mindset fits a lot better in that, because it is, you, you, you literally lay things out in XML, as Bruno said, and it's just, you're declaring it.</p>



<p>And then it does the rest. Now, Maven is pretty pretty minimal. It's the plugins that really do a lot of the work. for a developer is largely irrelevant. You just want to make sure your stuff gets built right. But a great or actually uses either grooving or Kotlin depending on, you know whether you, which script you use, groovy script Kotlin script and, and Greeley, or excuse me, a grade.</p>



<p>As Brenda mentioned programmatic. So it's a, it's an execution of a program that if you have a very simple build is very clean, very elegant. If you have a very crazy complex bill, it can, as Bruno also mentioned dramatically, reduce your bill times. But the, as they say, the devil's in the details, it's a program.</p>



<p>So there are ways that things it's hard. It's easier to get things wrong. It's easier to mess things up. And, and in many cases hope I'm getting mad at me for saying this, but when, when versions change with, with grateful, several times, you have folks who have issues very quick to be resolved and stuff typically, but with Maven, again, being more declarative and you typically don't have a lot of those.</p>



<p>So everybody's got a very strong opinion. It appears either one of the others, you get this really hard partisan fight, but they're both excellent tools that both enjoy very wide industry support. And you know, they, they just work generally. So.</p>



<p>[00:20:19] <strong>Bruno Borges:</strong> Yup. Yup. If the development doesn't like XML using greater, if the</p>



<p>[00:20:24] <strong>Jon Galloway:</strong> there you</p>



<p>[00:20:25] <strong>Bruno Borges:</strong> does it block, doesn't like to write codes to do build, then go back to the XML.</p>



<p>[00:20:31] <strong>Mark Heckler:</strong> Well, knowing your love of XML, I'm sure that you always use maven, right?</p>



<p>[00:20:38] <strong>Jon Galloway:</strong> Because. XML is like, you know, considered old and busted whatever. But as you're talking about the more declarative style of con configuration, now it's kind of come back around to that. So it's funny. I'd be surprised if there's not like some Yammel based configuration way for, you know what I mean? That compiles, that text ML for you or</p>



<p>[00:21:01] <strong>Mark Heckler:</strong> Oh, Jon, no, that's a bridge too far.</p>



<p>[00:21:04] <strong>Bruno Borges:</strong> But I can say that. I can say that unfortunately, there is a product out there called poli holy Gluck maze, which you can use Jamo the finder Palm Todd.</p>



<p>[00:21:20] <strong>Mark Heckler:</strong> no. Nope. Nope.</p>



<p>[00:21:23] <strong>Jon Galloway:</strong> So you mentioned Groovy and Kotlin, and I think part of the, the thing that I've heard about JVM, that's interesting. Java, but then you can run multiple different languages on the JVM. And that's something that, you know, you technically can do in.net, but you don't see it as much as I'd hope, you know?</p>



<p>But so, but, but like Kotlin and groovy are both like they're full. Like my understanding is Android development is basically all on Kotlin now. Right. Or</p>



<p>[00:21:54] <strong>Bruno Borges:</strong> not really. Costly coddling wants to the teams behind the teams at Google and Jack rains that develop Android studio and costly. They're the reason intent on making clear coddling the default language of Android applications. But there's also floater and darts</p>



<p>[00:22:16] <strong>Jon Galloway:</strong> wow.</p>



<p>[00:22:17] <strong>Bruno Borges:</strong> and other languages. So sort of that intent got fragmented with multiple choices now as well for Android.</p>



<p>Right? So Java remains the primary choice for the majority of Android developers. We can see that just by looking at stack overflow tax for Android. But the, the interesting thing about genre, as you were saying the JPL actually for any developer, who's documented with the JVM, but is familiar with web assembly these days. It's the same concept. You're right. SEM coach. And then your rights, a compiler that translates that into a buys code. And then the JVM interprets the code, just like web assembly. Was invented in 1998 and Weber sander was invented like five years ago, et</p>



<p>[00:23:02] <strong>Jon Galloway:</strong> yeah.</p>



<p>[00:23:03] <strong>Mark Heckler:</strong> that's, that's all fair. That's all fair. And that you took that in a different direction than what I was kind of thinking. So I'll, I'll concede that to you. However, that that's it, you did make one misstatement, which is interprets because in, in the original or early stages of, of Java, everything was interpreted, therefore it was slow, but we have now just in time, compilers ahead of time, compilers and things that make it actually very competitive with native code, sometimes faster, sometimes a little slower. We have actually native code compilers now. So Java has and I know that was just kind of you know just a conversational thing, but I want to make sure that we know it is not an interpreted language per se in the same vein as things like Python. Although again, I know exceptions even there, so it gets tough to know about this stuff.</p>



<p>[00:23:48] <strong>Bruno Borges:</strong> Yeah, we can say, we can say Java code Java. I write some Java code that code can either run in interpreted modes initially, and then getting native compilation with Justin time. Compilation. I had a time, which is native all the way from, from the get go actually not really actually still compiles into byte code and then the byte code compiles offline into native code.</p>



<p>And then you run ahead of time. But those are the models. And for, for a hell of time, there is another project. And then you're just getting to the rabbit hole of the Java ecosystem and a project called So grow all the Alma is a product from Oracle that combines open JDK with a truffle framework that allows code to be compiled natively.</p>



<p>And even the truffle knocks are not truffle. Truffle is a framework that allows any language to run on. Yes, so they're all the homies is a virtual machine that is polyglot. The tropical framework allows that, and there is truffles for Ruby, for pricing, for JavaScript. And then there is the native image program that compiles code into native and grow VMs, that feature.</p>



<p>So if I'm a Java developer, I can run Java coding several ways. And it's really about use case, understanding the scenario, understanding the needs of where this code will run if it's in the felon or, or on the server on a desktop or on an embedded device, all sorts of targets. It really yeah, it's confusing. I'm sorry, folks.</p>



<p>[00:25:27] <strong>Jon Galloway:</strong> So that's interesting too, because like, you know,</p>



<p>the stigma of Java, it can be that it's big, slow bloated enterprise, whatever for big servers. But like you're saying, it runs on small devices, it runs on phones, it's all sorts of things. So you really do need to have a small, tight battery, efficient, all those sorts of things.</p>



<p>And so yeah, I don't do you. And so that's something you basically are right in the same code. And then the compiler is kind of handling that depending on where you're deploying.</p>



<p>[00:25:59] <strong>Bruno Borges:</strong> Yeah. I mean, th the way the JVM works, the GVM is this, there is a specification of the JVM on how the JVM needs to behave, but you can actually write a JVM in any language. As long as we implement the instructions as per the specification. And there are JV hours that were developed for different kinds of hardware, of different kinds of resources, embedded devices mainframes AIX, for example, right.</p>



<p>Or Solaris. So also does a hardware gods, a JVM implementation with different, sometimes you're different, even constructions. W once you write that coach, the Java code, according to the Java language specifications that code wants compiled can run in any JVM that implements the JVM specifications, mapping out to that same version of the Java language specifications.</p>



<p>So that allows them. Jonathan Barbara can write Java code for pretty much any Cod deployed anywhere. Now there's lots of gotchas and exceptions and you know, maybe this doesn't exactly work as you think you, but that is a principle and it's been working quite well since the beginning of the technology.</p>



<p>[00:27:15] <strong>Mark Heckler:</strong> Yeah.</p>



<p>And just to add onto that a little bit generally, when we talk about Java developers or Java development and, and deployments. So the deployable artifact typically you're talking about deploying, using a Java virtual machine, a JVM, and that's where you sometimes get the whole, well it's. Larger.</p>



<p>It's a bigger footprint. It's slower startup because when you start an application, it has to spin up that and warm up that JVM and, and execute the application. It does a bit of you know, again that just-in-time compilation and kicks things off. So that's kind of the large majority of the use cases.</p>



<p>When you want to build native code. That's, that's a, maybe a small subset of all use cases and the reason because Java, well, again, excluding for, for the moment, any mobile and Android you've got a large preponderance of job applications, which are enterprise applications. They are robust. They're, they're always running they're out there, you know servicing.</p>



<p>Gazillions of requests every, every minute. And, and, and when it comes to applications like that, whether it takes five seconds to start up or one second to start up, it doesn't matter. Cause it's going to be running for days, weeks, whatever, and processing millions and millions of messages and, and your, your big focus is not on the, the four seconds you can save on start-up it's on throughput and it's on, you know, making sure that, you know, continues to run well and, and whatnot.</p>



<p>So there are different use cases that necessitate different tools, but generally speaking for that, kind of the vast majority of use cases, you are talking about the standard JVM,</p>



<p>which is fast and garbage collection. It's fast on response and, and having, you know, high on.</p>



<p>[00:28:50] <strong>Jon Galloway:</strong> Okay. Yeah. You mentioned garbage collection and that's something too where people worry about that</p>



<p>for performance. What's the, is there anything kind of new on like when I follow.net releases, they're working on things to do like multipass or, you know, to like continue as over the, what is it PGO PA or performance guided optimization or things like that.</p>



<p>Is there, is there new stuff happening or happened recently on garbage collection performance?</p>



<p>[00:29:20] <strong>Bruno Borges:</strong> Yeah.</p>



<p>[00:29:24] <strong>Mark Heckler:</strong> No. Well, I was going to hit him that the whole different in terms of different JD Ks, because the community, while I say community in general, but different different builds different approaches to garbage collection can be employed by different different JDK. So if, if you want to have very exceedingly low latency maybe that won't be necessarily as efficient overall, but it keeps things moving along faster for things like stock trading and things like that.</p>



<p>And you may have others that are a little bit longer pause for a, an overall, slightly higher level of efficiency might make more sense. So you have options in that regard. That that was kind of all, I was going to say, Bruno, if you want to take it from there, but that's, again, one of the strengths of, of various different,</p>



<p>Builds of JDK, you can, or you can choose which One suits your particular use case.</p>



<p>[00:30:12] <strong>Bruno Borges:</strong> Yeah. One of the interesting things that,</p>



<p>Actually discussed this recently, the GKN specifications doesn't say anything about garbage collection. It's it's, it's, it's, it's one of the interesting things that people think, oh, this JV, I must have this garbage collector, actually, no, it must run the Java code.</p>



<p>Garbage collection is not part of this specification, which means, which means you can implement a JVM and not collect anything. And not only that, there is actually a garbage collector that red hat Rhodes that does exactly that it's a garbage collection that doesn't collect anything. It's only for, it's mostly for testing purposes.</p>



<p>But, but, but there are multiple garbage collectors in, in, in, in the Java ecosystem. That's the reality in the open JDK project itself, there are five or six garbage collectors that you can choose. Open J nine is a different implementation of the Java virtual machine specifications done by IBM and the consolidation.</p>



<p>And also has they have their own garments collection implementation or multiple implementations. Zol systems has a garbage collection called zinc, also a different implementation. And I think that's, that is technically a commercial product that they licensed to you. But at the end of the day, there are multiple choices in customers and developers do need to understand if they want to go down that path of performance tuning, they have to understand how the garbage collector works about their workload is behaving and work.</p>



<p>Are there requirements in terms of like business needs and SLS to make the right choice in the right tuning for their application? So this takes us back to the question like is Java slow. It can be, if you don't do the right thing. Right. But he's going to be super fast once you have those understandings and we can be extremely fast. Okay.</p>



<p>[00:32:13] <strong>Jon Galloway:</strong> What you mentioned earlier, some of the Microsoft and Azure? support, like what, what is the Azure? Are people running Java workloads like containerized or what, what's kind of the main the thing that you see people doing</p>



<p>[00:32:28] <strong>Bruno Borges:</strong> Mark. You want to</p>



<p>[00:32:29] <strong>Jon Galloway:</strong> is there like a standard kind of, like you mentioned some of these big, you know, like LinkedIn and you know, like large applications, is it pretty standard now to be running those containerized?</p>



<p>[00:32:39] <strong>Mark Heckler:</strong> I mean, we have different ways you can, can do that. And of course I suppose like Java developers and environments are all different. Use cases, needs desires but you can containerize them. You can deploy from code via in, into containers, VMs. You can run and managed a platform, something like Azure spin cloud.</p>



<p>So you have, you have a lot of different a lot of different ways to get there, I guess, for lack of a better way to put it. And, and everybody seems to, depending on where they are in their, their journey, I hate to put it that way, because it sounds almost like where you are. Isn't the final end point.</p>



<p>And maybe it is. And there, there are people who are maybe where they want to be and for the next well for the foreseeable future, but that if you are embracing. Moving things to Azure, let's say, and you have a significant kind of center of gravity in house or in a private cloud, whatever. You're probably going to try to mirror your existing setup and that may involve VMs and that's fine.</p>



<p>You know, we fully support that, but we also have the ability to containerize, to to use something like app service. Bruno, what am I missing? I mean, th the, the upshot, I guess, is that we meet you where you are, and we offer options for where you may want to go.</p>



<p>[00:33:48] <strong>Bruno Borges:</strong> Yeah. Once, once an application is computerized, developers can deploy that container to five services on Azure, actually six, depending, depending on the application. So, so Azure BMS, Azure, Kubernetes service, Azure container apps, Azure app service as a spring cloud five and actually six, because it gets a function designed application.</p>



<p>You can actually also apply to Azure functions. So, so there is a huge interest in containerizing applications. So you have that flexibility wherever you want to put in, take advantage of the services that your business may need. But from the developer standpoint, it's still just a container and application.</p>



<p>And that gives that flexibility of deployment model. Now. Yeah. Now just putting a job application inside upon painter is sounds simple at its beginning, but it can be, it can be very tricky once you go to production, but I will pause there. What's up, Mark.</p>



<p>[00:34:56] <strong>Mark Heckler:</strong> Well, no, I was going to say because both of us have kind of failed to mention that we actually do have partnering agreements with, with companies who offer applications, servers. So we, we fully embrace and support that as a destination for job applications as well. If you're using something like Javi Jakarta, EE in terms of enterprise Java, obviously if you're using spring boot applications, it's a little different or significantly different a story, which is kind of where we've spoken to up to now.</p>



<p>But we also support things like Jay bossy, AP WebSphere WebLogic, and things like that. So if you're coming from that kind of an environment we have a home for that as well.</p>



<p>[00:35:31] <strong>Bruno Borges:</strong> And I did forget to mention that as a red hat OpenShift, which is another service also for containers. So when, when, so he's speaking a little bit more about containers and Java and we have documentation coming soon. I don't know when this blog is going to be, this podcast will be live. If you're watching this check out documentation or listening to this checkout position, maybe this is already published, but we have documentation about how to containerize job occupations and the things that you should watch out for, especially in terms of memory constraints and CPU constraints that are applied to the computer and how that impacts performance of the JVs</p>



<p>[00:36:09] <strong>Jon Galloway:</strong> Okay.</p>



<p>[00:36:09] <strong>Mark Heckler:</strong> using an older version of java, just I'll leave.</p>



<p>[00:36:14] <strong>Bruno Borges:</strong> that.</p>



<p>[00:36:14] <strong>Mark Heckler:</strong> Yeah, I'll leave that out there. You know, obviously everybody wants to be on the latest, greatest everybody's should be on the latest greatest, but there are a lot of times constraints that keep folks from, from again, if they, if they're migrating something that maybe an older, steady, reliable application, it may be still using Java eight, but you know, it's so, so the considerations are different as you advance because Java is</p>



<p>advancing and getting better and better about that. as you might imagine. So</p>



<p>[00:36:38] <strong>Bruno Borges:</strong> yes,</p>



<p>[00:36:39] <strong>Jon Galloway:</strong> You mentioned the application servers, what, what's the, what's an application server? What do I need that for?</p>



<p>[00:36:49] <strong>Mark Heckler:</strong> I do do I, do I.</p>



<p>[00:36:51] <strong>Bruno Borges:</strong> I can. So I worked, I worked, I worked at work when I was one of the</p>



<p>PMs where WebLogic and application server is actually very much like two parties, but. In a way that only talks to job, it's not polyglot, right? Well, at least not polygon in terms of language, if it's a Java JVM based language, like Scala and closure, coffee still works.</p>



<p>But it's, it's a Java based runtime,</p>



<p>but an application server has capabilities like deploying multiple applications having a cluster with lots of nodes managing resources, managing. Connections with databases and messaging systems and identity systems, all of that. So that these applications, once they are deployed, they may have access to these resources more easily.</p>



<p>And the application server manages these resources for the applications. It's not as simple the application managing those resources. And that is what made the application server model very broadly adopted a vacuum today's because it was very good instill is a very good model for many customers that are not sitting themselves with these needs.</p>



<p>I will have to go Cooper needs. I want to go from painters. Some customers don't have that. It's not like a must do you got to have the business needs? So that's why we have these partnerships with IBM and Oracle to drink this and rent a house to bring this traditional application servers to Azure as a manager.</p>



<p>So they can, you know, lift and shift as, as executives, like to say, Marketing, lift and shift applications to the cloud more easily.</p>



<p>[00:38:37] <strong>Mark Heckler:</strong> Yeah. I mean, it's, it's one mechanism for</p>



<p>deployment, right? So you have people who love it. You have people who hate it, sort of like the Maven and cradle thing, really. But oh, go ahead, Bruno.</p>



<p>[00:38:46] <strong>Bruno Borges:</strong> Yeah. There's there's a new project called dapper that is, is that you've developed with microservice and with vapper. If, if your micro service needs to talk to a database, it actually talks to a sidecar off dapper. And then dapper does a communication with a database. That model is what application servers. But but dapper happens to be the sidecar off dapper happens to be a component inside the application server and application server happens to be Kubernetes at the end of the day.</p>



<p>[00:39:22] <strong>Jon Galloway:</strong> Okay. So you mentioned things like deployment and, you know management of your application part, like I'm thinking of deploying updates and, and specifically this kind of brings to mind for me, like, like a log for J like recently there are a lot of people needing to kind of patch and maintain an update.</p>



<p>What's what is the I don't know, like, what is the approach for managing and maintaining and what was the impact for things that you folks saw with like log for J and needing to make, make these updates?</p>



<p>[00:39:58] <strong>Bruno Borges:</strong> So funny enough, the, the love for Dave issue was so. Basic. It was not even necessarily a security vulnerability per se, not a bug, actually, it wasn't going to be ability, but it was not a bug. It was actually a feature by design that was being abused by a separate attack. Right. So because of that, it was actually pretty simple to, to update Java applications or even just secure the feature without even updating the library version.</p>



<p>And when it comes to jumping consistent in general, that happens it did happen pretty fast. The resolution of the problem. But now you're looking at a very long tail of people that are not completely aware and a sonar type of home managers, Megan central, they have a dashboard that shows number of downloads per log for J version and the affect affected versions are being still being the loaded too much.</p>



<p>The number of downloads of insecure log for J versus these two van high.</p>



<p>[00:41:13] <strong>Jon Galloway:</strong> yeah.</p>



<p>[00:41:14] <strong>Mark Heckler:</strong> Now I will say this. I, because I'm more from the spring side of the Java ecosystem and spring's default is logged back. So unless you specifically over write it, do use log for J this was largely a non event so that, you know, obviously we have good partnership and as your spring cloud, and we, you know, we, we're a great destination for spring applications, and that was almost a non-issue for a good chunk of the job applications that we, we host and manage here because of that.</p>



<p>It just wasn't. I mean, it's something everybody was very aware of and, and wanting to make sure that we were all safe and everybody's happy and all that, but in many cases, it just, wasn't an issue.</p>



<p>[00:41:51] <strong>Jon Galloway:</strong> Okay. I wasn't aware of the Azure spring cloud. That's pretty cool. I've I've heard about spring boot generally. Like there's a dotnet project to implement. Was like interrupt Steph with spring. So I'm, I'm familiar just from that point of view, but I I've heard, I hear a lot about spring boot, just kind of in general, is that still pretty active and.</p>



<p>[00:42:13] <strong>Mark Heckler:</strong> oh, gosh. Yes. I don't, I don't want to you know, push too hard on this because obviously lots of choices in the ecosystem, which is a good thing, but a spring boot is wildly poppy, wildly popular, a spring in general, spring technologies, you have a spring data, spring security and a lot of different spring projects.</p>



<p>And over half of all Java developers, enterprise Java developers. Some or many parts of the spring ecosystem. So yeah, it's, it's a, it's rather huge. And, and I, you know, we at Microsoft should be very proud because we work really well with the spring team first with pivotal and then with VMware, when pivotal and VMware came together.</p>



<p>So yeah, we, we offer, you know, Azure spin cloud is something that nobody else can really there's no parallel outside of outside of our world jointly developed, jointly supported. And, and it's just kind of that natural home for spring applications. So yeah, it's kind of a great success story</p>



<p>for both companies and that giant ecosystem that our spring developers and spring applications,</p>



<p>[00:43:14] <strong>Jon Galloway:</strong> Okay, I'm going in a totally different direction. Way back when I first looked at Java and experience work with Java was actually desktop applications. And that was a thing, you know, early on, it was like, Hey, we're going to have cross platform desktop. And I haven't really like, you know, now it's all, basically you see electron and you know, you don't see Java, desktop apps.</p>



<p>I randomly, like I did looking in loading plugins and stuff. I saw Java FX listed. What's kind of the current state of Java for client and desktop application development.</p>



<p>[00:43:53] <strong>Mark Heckler:</strong> Well, I'll, I'll start off on this Bruno and then you can correct me where I go off the rails here. But you know, again, I think everything has shifted to the, well, okay. Not everything many things have shifted to the browser and, and extensions of said construct. But but there are still some things I know Bruno and I both know folks who work with with NASA and, and with a trading company.</p>



<p>Where you have desktop type of applications or desktop applications, I should say in some capacity that it's very important to have that raw processing power to have the full control over the rendering that you just can't match. It's still unless you do a desktop type of application. So Java FX it certainly doesn't have a massive Market share, but it has a very strong vocal and an important niche that it fills.</p>



<p>[00:44:41] <strong>Bruno Borges:</strong> Yeah, not only not one Jon offense would swing is to a critical component for Java graphical development. There is, there is a, there is a software commercial software called spine, and it's a 2d animation editor. And when you look at the interface, you don't, you don't tell it's Java, but it's actually a Java based application.</p>



<p>When you're, when you I think I, I'm not sure which bank or financial corporation in Canada has a, they do have a trading. That is written in Java as well. So you go to their website and downloads, it's a Java app. It comes with the JVM. My exact job edition is used by mediums off gamers into word, and it's a Java stuff application and actually 3d Java based application.</p>



<p>Just, just to make sure that people are aware of that. And as, as, as Mark said, in the trading in finance industry, in, in, in manufacturing government agencies in general, we do see that number of Java, desktop applications. They just don't happen to be something that you download for your parents at home or your brothers and sisters in school.</p>



<p>It's something that employees actually end up using, or researchers in academic academic world end up using NASA has lots of tools internally that are reasoning Java, but you don't see those published if you ask for because they are internal use. Right? And I can say there is a big movement, even for EMD gamers in indie games that are using a library called L w X JG.</p>



<p>Something like that. It's a lightweight L w G Alibaba. JGL lightweight rascal library for job. And it's used for games. There are some games that are published on steam, perhaps for their reason in, in Java with, in combination with that library to use use open GL. So, so there is a Market for graphical Java applications.</p>



<p>There are a great software libraries and tools to do that, but it's not, it's not where startups and companies are doing cloud development. I mean, if it's a cloud development, it's going to end up in your browser. Right. But, but there is, if the question is, is there, yeah, there is.</p>



<p>[00:47:06] <strong>Jon Galloway:</strong> Okay. You had mentioned earlier big data and like Apache spark and that sort of thing. And so that's, that is a big area of Java development, right? That's including inside of Microsoft.</p>



<p>[00:47:19] <strong>Bruno Borges:</strong> Yeah. They, there is a big deal for Java because Java is one of the very few runtimes that is super easy to write an application that will come. A huge amount of data and the JVM will manage that data in memory for you. You don't have to write codes to deal with that. The JPM we'll deal with that for you.</p>



<p>And actually the garbage collector will deal that for you, Oracle and red hat are working with two little vertical vectors that can handle very massive heap sizes of object allocation in memory. Oracle has one collector called CGC and XE stands for near zero latency near zero pause time of the collection.</p>



<p>And, and they did publish a benchMark recently in Java 17, where CGC running on a machine with a heap size of 128 gigabytes. That's the amount of memory reserved for all objects allocation. They had paused times of less than one millisecond. So imagine like real time data, big data, and you need your application to not pause, right?</p>



<p>So CGC achieves that red hat has a not a girl toilet go Shenandoah, and it comes with similar capabilities and a near real time float execution. So, so those are impressive numbers. When we think about the business needs of different companies, especially the world of machine learning AI, you need to process that data and, and Java systems end up being a great option because.</p>



<p>You just need to write the codes that will compare the data process, the data, you know, but you don't have to manage the memory or manage cleanup and all of that, but you would have to write in C plus plus or other languages. And there's a lot of projects that are already implemented in Java. So you don't have, you don't have to rewrite anything as well.</p>



<p>Right? So you just use Cosco, just use Apache Pino and several other projects that have been written quite a while. And they only benefit from newer versions of Java that gaps more performance improvements. So it's the same code running on a newer version of the JVM with better performance. You don't have to rewrite the code. You don't have to recompile the code. You just need to deploy that same code already compiled or that new version of the JVM and you get better performance.</p>



<p>[00:50:06] <strong>Jon Galloway:</strong> okay. One more question. As we get close to wrapping up here, what's what's new with the Java language itself. Is there, is there much going on with that?</p>



<p>[00:50:16] <strong>Bruno Borges:</strong> Yes, there is in I was talking to Mark before it is. And Mark said who I want to talk about field classes. I don't think it would seal classes. Please. Go ahead, Mark. Talk about sealed classes.</p>



<p>[00:50:28] <strong>Mark Heckler:</strong> Well, that wasn't exactly what I said. Okay. Let me set this up a little bit because in the old days, and, and prior to what I want, I want to say like three years ago now I'd probably a little longer than that now, because time is kind of fluid over the last couple of years, but but in the, in the old days of Java, typically it was several years between releases.</p>



<p>So you had these big dropped releases, which had a lot of, well, potentially had a lot of changes. And then you waited and you waited a long time and the, you had different patches and updates that came out throughout several years. After that</p>



<p>a few years ago, we went to a six month release cycle with Java, which sounds insane when you, when you're coming from a three, what?</p>



<p>Three to four year Bruno, I I'm going back. Off the top of my head, a release cycle. So six months, that's crazy. What can you get in there? But, but what it actually has done is allow us to I say us, I mean, it allows the the JVM designers and maintainers to go ahead and drop things in for kind of a preview type of functionality.</p>



<p>So you have long-term supported releases and then you have in-between those every six months you have these kind of interim releases, if you will. So, so Java 17 is now out, but Java 16 was six months before Java 17 rolled out jive. 18 will be six months after that. 18 will not be a long-term supported release, but we'll have a few new things in there.</p>



<p>And, and it allows you to iterate and get feedback and Kind of hone things before they become production features. So with Java 17, I was telling Bruno that and to be very specific, the big things that I kind of honed in on where the sealed classes and the better pattern matching with in terms of the switch statement.</p>



<p>So, so some of these things when, when they, they hit production, if you will aren't huge features, but they are huge time savers. They kind of the fact that they're small, but incredible useful or something that you wind up using over and over and over again versus like the graphics stuff for Mac.</p>



<p>I mean, that, that may be something that it'll be nice, but it's not something I will go, wow. That that's a, that's an upgradable thing, you know, but something I'll use every day for every application I write that's small feature, huge impact. So with seal classes you can define. The ability or it defined a class and a set of child classes.</p>



<p>And that's it, you can't extend that any further than what you've already defined the ability to do so upfront. And of course better switch statements where you can do pattern matching on that. And, and more it leads to more concise code. It's, it's small, it's compact, but it's very easily readable in terms of the choices that are available to you when you're evaluating something.</p>



<p>So those are, I think those are the things that kind of bubbled at the top of my head with Java 17, because I see them having an outsize impact just because there'll be so commonly used.</p>



<p>[00:53:17] <strong>Bruno Borges:</strong> All helpful new point and exception. Any experience of a developer will be like a thing saying thank you. Whoever had this idea and wrote</p>



<p>[00:53:28] <strong>Mark Heckler:</strong> That is true.</p>



<p>[00:53:30] <strong>Bruno Borges:</strong> you know, when you have a change to calls like a dot B dot C and you call different methods and attributes, and then you'd have so many chains that you don't, there's a no point, et cetera, on that line, you don't know which part of the chain is no. So, so this contribution is actually written by SAP. SAP is a contributor of the open JDK and they also built their own OB JDK binary. And they wrote this feature and upstream to the project. So now, if there is a new pointer exception or a new value in that chain, their message will say, there's just a part of your statement.</p>



<p>That is actually not. And everybody was like, oh my God just saved my day. Another interesting feature is records of records have been in development for a few releases already, but if it became final GA on Java 17 and it records, you can basically define a POJO of plain old Java object or I'll record a class that will hold some attributes.</p>



<p>And you don't have to write gathered SAPs in equals and hashcode and strength. All of that will be generated by the compiler. You just say public record. And then the attributes that you want, strength name and to germ age and that's it. And everything will be generated by a compiler for you. There is another one.</p>



<p>Interestingly solve text blocks. Multiline texted blocks. I, my very first application was actually to generate some HTML code. And I can tell you that was not pleasant because you have to break down the string and plus signs. Concatenates the strings, every line it's super annoying. But then it's actually even bad for database out applications where you have to write SQL queries, right.</p>



<p>And you have to break that down and multiple lines. That's super annoying. So now you actually have like three quotes and then you write your text and you multiply the daily closing with three quotes and doc is the support. What else we've got here? I, I have a cheat sheet that I'm looking at.</p>



<p>[00:55:29] <strong>Mark Heckler:</strong> In fairness, while you're looking up, the next thing some of these things have been in previous releases, but this is the first long-term supported release Java 17, which rolls them all up together, which is, so this we'll have this, we'll have the higher adoption. This will have the higher impact just because people are working in a large corporate environment or a government or whatever.</p>



<p>They're not going to go to the six month release cycles in many cases, because they're going to wait for that LTS release to make that transition. So that the, even though some of</p>



<p>these things have been incorporated in earlier versions, this is the, this is the money release, I guess you'd say so.</p>



<p>[00:56:03] <strong>Bruno Borges:</strong> Yeah,</p>



<p>[00:56:04] <strong>Jon Galloway:</strong> Cool.</p>



<p>[00:56:05] <strong>Bruno Borges:</strong> there are two, I mean, there's a bunch of KPIs that change. There is a, there's a left</p>



<p>side job on the neck that shows all the API changes between virtues. And but there, there are two of the jazz everyone's off is one. There is now an actual HTP client API that is part of the Java platform.</p>



<p>So if you want to call an HTP and flight arrest, endpoint, Java has that API already implemented in India. And the other one, which is funny, it took this long, but now we have a class that helps you format X of decimal to throw max a decimal, but it's there finally.</p>



<p>[00:56:45] <strong>Jon Galloway:</strong> Yeah, well, you know, it is nice to see like, you know, going back to what you were mentioning, Mark, but just the, these quality of life things, you know, where it's like, you just, some, some things like, I'll see what that man is like, okay. You're finally out in this while I'm still happy to have it, you know, but</p>



<p>[00:57:04] <strong>Mark Heckler:</strong> yeah, it's weird. I always, I always feel weird when I say something that, something that just is really a minor thing, but you're like, this is, this is amazing. And people are like, are you out of your mind? No, because I can see a bigger impact even though it's, you know, a small impact. If you multiply that by a million, it's, it's huge.</p>



<p>Then, you know as the old joke goes about a million here, a million there, pretty soon, you're talking real money. I think upon some talking about it like a government budget or something, but, but at the same thing, if you, if you have a very small feature that is immensely useful and it's everything you write, it just has an outsize impact.</p>



<p>So, so that the other stuff is really cool and really amazing in certain contexts for the people who need it. But</p>



<p>that for almost every application, there are going to be little things that touch all these apps that that's what I get excited about. So.</p>



<p>[00:57:49] <strong>Jon Galloway:</strong> Cool. all right. Well, I think we're at a good spot to wrap up. Is there anything big</p>



<p>that I forgot to ask about or we didn't talk.</p>



<p>[00:57:56] <strong>Bruno Borges:</strong> I'm pretty happy. Like this is a great opportunity to share a little bit about the Java ecosystem with you and the folks that listen to you. I made from, from Microsoft, what I can say is Java learns from dot NACHC dot that version of Java. All these programming languages at the end of the day are ways of protecting people, but also tools that enable these people to develop nice things.</p>



<p>And if, if, if ideas here can go there and make everybody happy everybody benefits from, so we're getting a good, good shape with, you know, the stories of java.net and JavaScript and calculating enclosure in Scala and Ruby and python PHP.</p>



<p>[00:58:39] <strong>Jon Galloway:</strong> There was a little pause before a PHP, but yeah, you know, like over, over time, it's like you know, earlier, earlier on in my career, it's everyone wants to battle it out. And my, my language is the best or whatever. And it's kind of nice to be at a spot now where it's, like you said, we learned from each other, there they're more tools, especially as things are like, you know, containerized or like you can, you can interrupt back and forth.</p>



<p>And so it's, it's fine. You know, it's not strange to have, like, I was working in an application recently and it had Kubernetes going, I had several, you know, Java Docker instances and say, you know, like in.net and they're just rest calls back and forth and it's all, you know, we're all playing nicely together.</p>



<p>[00:59:21] <strong>Bruno Borges:</strong> yeah, there is another there. Yeah. Well, the time there is a motor in topic, definitely for another podcast under another session, but I feel if we are not in the debate of languages versus languages now, it's, I think it's more runtimes versus runtimes and trying to identify ideas. One time is better for DCS case.</p>



<p>Then when time is better for that use case, because language at the end of the day gets compiled to something that will be Tobar dead or natively compiled later. And we saw this weed growth, you know, left sharp and seashell or JavaScript and TypeScript closure in Scala and coddling and Greedo and Java logs of languages.</p>



<p>But the number of wrong times is actually a lot smaller. So I think we should, I think we should consider starting, comparing round times in terms like use cases instead of languages. I think languages is important because you want to develop, you have to light on something. Right. But when, when the application actually goes out, what matters is if the language, or do you run time for the use case?</p>



<p>And there are use cases where all runtimes.</p>



<p>[01:00:29] <strong>Jon Galloway:</strong> Yeah. Well, I liked the way you say that too, because it's, it's not, which is the best it's which is the best for a use case or which is, you know, and, and, and, you know, you can build anything in any language, you know, it's just some, you're going to have a better time or it's going to run a little faster or whatever, and,</p>



<p>[01:00:47] <strong>Bruno Borges:</strong> Yep. And, you know, they say, if it's going to be a routine in JavaScript, it will be written in JavaScript.</p>



<p>[01:01:02] <strong>Jon Galloway:</strong> there you go. All right, well, that's, that's a great place to wrap up. Thank you. Both of you for your time!</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-245-Catching-up-on-Java-dev-with-Bruno-Borges-and-Mark-Heckler.mp3" length="58769086" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 244: Ben Scheirman on SwiftUI and Combine</title>
    <link>https://herdingcode.com/herding-code-244-ben-scheirman-on-swiftui-and-combine/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-244-ben-scheirman-on-swiftui-and-combine/</guid>
    <pubDate>Mon, 29 Mar 2021 17:22:00 GMT</pubDate>
    <description><![CDATA[<p>Kevin, Jon and Rob talk to Ben Scheirman about developing user interfaces for the Apple platform with SwiftUI and Combine. Ben screencasts at NSScreencast and is the creator of</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 244</strong></p>
<p>Kevin, Jon and Rob talk to <a href="https://twitter.com/subdigital">Ben Scheirman</a> about developing user interfaces for the Apple   platform with SwiftUI and Combine.</p>



<p>Ben screencasts at <a href="https://nsscreencast.com/">NSScreencast</a> and is the creator of the <a href="https://combineswift.com/">Combine Swift</a> course.</p>



<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-244-Ben-Scheirman-on-SwiftUI-and-Combine.mp3">Herding Code 244: Herding Code 244: Ben Scheirman on SwiftUI and Combine</a></p>







<div class="wp-block-group"><div class="wp-block-group__inner-container">
<p>Links:</p>



<ul><li>Ben is <a href="https://twitter.com/subdigital">@subdigital</a> on Twitter</li><li><a href="https://combineswift.com/">Combine Swift</a> - a Combine course for mere mortals</li><li><a href="https://nsscreencast.com/episodes">NSScreencast</a> - Top-notch tutorials for Swift developers</li><li><a href="https://developer.apple.com/xcode/swiftui/">SwiftUI overview</a> in Apple developer docs </li><li><a href="https://developer.apple.com/documentation/combine">Combine overview</a> in Apple developer docs</li></ul>
</div></div>



<h3>Transcript:</h3>



<p><strong>Herding Code - March 5, 2021 - Ben Schierman on SwiftUI and Combine</strong></p>



<p><strong>Kevin: </strong>[00:00:00] Hello, welcome to another episode of Herding Code , our quarterly episode here. This is being recorded on March 367 2021. And today we were talking to Ben Schierman. Ben runs NSScreencast, which is a video training site for all things iOS and Apple development, and Ben's going to talk to us today about SwiftUI, a relatively new UI framework from Apple for writing Apple platform applications. So thanks for joining us, Ben.</p>



<p><strong>Ben: </strong>[00:00:40] Well, thanks for inviting me. It's good to be here.</p>



<p><strong>Kevin: </strong>[00:00:42] So why don't we start with the sort of high level, you know, what is SwiftUI? What makes it different? Like what, how is it different than what came before it.</p>



<p><strong>Ben: </strong>[00:00:50] So there's a lot of history and the Apple development community. We've had AppKit for 30 years now which follows a kind of model view controller based approach. And then when the iPhone came out, they, they sorta took lessons learned from that. And. And created UI kit. And so when you look at creating apps for the Mac or apps for the iPhone, if you squint, they're extremely similar.</p>



<p>But app kit has that, you know, 20, 30 years of legacy cruft that they just can never throw away. And so you know, things are a little bit different. Like, you know, you have UI color versus NS color UI being the UI kit version for the iOS. And, and then you have things like the coordinate system on the Mac is.</p>



<p>The origins in the lower left corner, which hearkens back to the, I guess the, the way they used to send commands to the printer or something, I don't really know, but on iOS, the, the origin is, is you know, top left. And so there's, you know, minor differences here and there, but ultimately you've got views that know how to draw themselves they're object oriented.</p>



<p>So you can have a subclass of a view that is a button or a label. And you know, the API is, are, are pretty strong, but There's there's always, you know, as our applications get more complex sometimes people complain about the patterns not being enough. And people joke about MVC standing for massive view controller instead of model view controller.</p>



<p>Because, you know, when you give somebody a pattern and say, this is where you put your logic, they tend to put all the code there. And anyway, so last year wait, Time is meaningless nowadays. This is, you know, at least five years ago in, in COVID time Apple released a SwiftUI, which is kind of a radical new UI framework for, for writing in air quotes, cross-platform applications.</p>



<p>As long as your platform comes from Apple it will work on T V U S and the Mac and the watch and the iPhone and the iPad. And SwiftUI takes just a totally different approach to, to writing user interfaces. So instead of model view controller, instead of your views being object oriented you know, and the model view controller world you would typically have of you that you would create say, I'm going to create like a new UI label and I'm gonna attach it as a sub view of my main view.</p>



<p>And then I might read a model. In order to tell what the text property of my label's going to be. So like on a viewed load, I could say, okay you know, a model dot first name, I'm going to assign that to my labels, text property. But there's nothing in that relationship. That's going to continually keep that up to date.</p>



<p>So I have to respond to events and note or re sort of update my model again. Well, SwiftUI is totally different where the view that you create in SwiftUI, Is a struct it's, it's meant to be thrown away and recreated anytime the model changes and it's balanced to the model. So you can say that I have I have this object that I'm going to observe, and whenever those properties changes, I know I need to rerender myself.</p>



<p>And because it's a struct and everything that we're building is value types. They can be thrown away and recreated really quickly. And so it's a totally different approach and kind of, you know, from a traditional model view controller mindset. It kind of bends your brain to think about how, how you write this.</p>



<p>That said it's pretty amazing because they have you know, the support in Xcode is you've got your code on the left and a UI preview on the right. And as you type, it shows you what you're building. And so you can kind of flesh things out, like really quickly without even hitting, you know, you don't have to compile it just updates.</p>



<p>And so these live previews that you get when writing SwiftUI are just really incredible. And it's, it's one of my favorite features in doing this because the feedback you get is so rapid.</p>



<p><strong>Rob: </strong>[00:04:17] It sounds like they're trying to do a more of a functional approach if they're using strucks and like immutable data. I mean, is that how it feels to you?</p>



<p><strong>Ben: </strong>[00:04:27] Yeah, absolutely. It fits in really well with like there are, there are things that you just don't really. Like most, most of the examples are like, if I have a user object and I'm going to create a screen that shows like a profile view, I can, I can create an image view and I can set the image property to the, you know, some URL that came from my model.</p>



<p>And I can set some text labels to, you know, the properties from my model as well. And that all works really well. But then you have these other things that don't really seem state driven. Like I want to present a modal screen on top of this, if the user's account is delinquent or whatever. So that modal sheet presentation is usually like some imperative logic that would happen in you know, in a method you would just check for the condition and say, Oh, I want to present this now, but in a functional world, it's all state-driven so.</p>



<p>Instead you'd need a source of truth that says like, is the sheet presented? And that's like a property on your model object that you then mutate. And because you decide to, or when you want to to show that sheet, you have to set that property to true, which, you know, it just, it's like a, definitely a different style of thinking.</p>



<p>But as you start to build your UI where everything, every interaction in the UI is driven from state. You know, it starts to lean straight toward the functional style of building applications and having your UI sort of just be a function of the state.</p>



<p><strong>Rob: </strong>[00:05:57] Interesting. You know, like in my head, I'm imagining a kind of render pipeline process pipeline that you're going to send an NSMonad through. I wonder when that's going to happen. Yeah.</p>



<p><strong>Kevin: </strong>[00:06:10] It's too early in the conversation to go to monads.</p>



<p><strong>Rob: </strong>[00:06:14] How long ago did they speak functional? Monads got followed within two minutes.</p>



<p><strong>Ben: </strong>[00:06:22] I don't even know how to follow up with that.</p>



<p><strong>Rob: </strong>[00:06:25] And thank you. This is Rob's podcast. Interview ability right here. Just created the interview straight away.</p>



<p><strong>Ben: </strong>[00:06:31] So I would say that rather than, than focusing on the, like the functional nature of it, it's, it's definitely leaning more towards the reactive nature, which I think a lot of people are familiar with. We have frameworks like reactive JS and the whole reactive ecosystem. Reactive Swift is are pretty popular or RX Swift, RxJS, those, those platforms I don't know if you call that that's more of a framework, but those are pretty popular and Apple just released their Combine framework, which is basically the, their take on a functional, reactive framework for processing streams of events over time.</p>



<p>And I've dug in deep to combine and I find it, some of the aspects of, you know, porting my event driven code to combine has like, Just change the way I write software in general and combine and SwiftUI kind of fit hand in hand, it's like peanut butter and jelly. It it's like when you start using one, you'll probably start using the other because they just, it, it makes things so much more decorative.</p>



<p>And so it being a declarativeframework that tends to like drive how you write your application from the get-go because. Things aren't so imperative. There's not like one place where like, okay, here's where I write the code. It's like, you're you're instead you're thinking more about models and state and then building up your views around that.</p>



<p><strong>Jon: </strong>[00:07:53] Sometimes when you move from an imperative style to a declarative style, like 90% of the time, it's awesome because it cuts down your code and it like allows you to describe what you want to happen. Sometimes it can be a little tough to troubleshoot what the heck is going on because things may have side effects or, you know what I mean?</p>



<p>You change one that you're not sure what is driving an update. That sort of thing is, is that a, is that a problem you run into with this.</p>



<p><strong>Ben: </strong>[00:08:20] Yes. I think that's probably a universal truth that like the more declarative and the more like magic you get, the harder it is when something breaks down and. And trying to figure out what, what is going on, what I found to be really helpful. Just in general, on the Combine side of things you have it's basically like a functional pipeline where you say, like, let's say I have an array of characters from a movie or whatever.</p>



<p>I can filter the array. I can map the characters to their last name or whatever. And I can add delays and debounces and stuff like that. And then when you think, well, it doesn't really have to be an array. It could be a network response, or it could be user tapping on the screen. Right? Any source of events can be transformed in the same way.</p>



<p>And so they have some tools that you can just insert in the middle of this pipeline to say, I just want to print out and know when this is happening, or I want to insert this little side effect block. That's just going to sit in the middle and let me set a break point or you know, print out values or whatever.</p>



<p>And I'll just delete that when I'm done, but it doesn't affect the chain. It still passes the values downstream. So you have some ability to diagnose like the data flow on the SwiftUI side I find that to be also true, where you've got a lot of things happening and the more complicated review becomes, you know, true strives you to say, okay, I want to make this a smaller thing.</p>



<p>I want, I want to design things at really small, granular level. And I mentioned the the SwiftUI preview you know, on the right side of the editor, you can create previews for whatever you want. It doesn't have to be an entire screen. So I can have say we've got a screen that has like a, that avatar that that we want to, you know, round the corners, make it a circle and put a border around it and a shadow or whatever.</p>



<p>I could just like. Create a new SwiftUI view avatar view and just zero in on just that one component. And then I can see how it looks on large screens, how it looks on small screens, how it looks in dark mode how it looks if we have accessibility, like low contrast settings turned on or whatever, and I can have all those previews up at the same time when I'm working on that one component you can also do.</p>



<p>Interactive like user interaction in these previous as well, because it's running a simulator iOS simulator behind the scenes. So if I'm doing a button component and I want to be able to tell like, okay, here's the button in? Like it's 12 different States. I've got different background colors. I've got one that has a spinner embedded in the, in the button.</p>



<p>And I've got like depressed States and highlighted States and, and disabled States and all that. And I also want to be able to like animate, you know, maybe when he, we push the button, maybe we want to animate that the shadow kind of gets smaller or whatever to indicate that the buttons kind of going into the interface a little bit.</p>



<p>It's, skeuomorphism, it's coming back. Things like that, I think are it's, it's real, it's really just not fun to be designing something like that. And it's like that button say is like two screens deep into your UI. And if you run, you have to build and run the application and like, okay. Click to the screen, you know, just that turnaround time.</p>



<p>It's just. Not fun and the faster I can get to, I would just really like to be able to click on it right there inside of Xcode. And SwiftUI previews lets me do that. I can actually run the preview, which runs an instance of SwiftUI standalone and then, you know, click through and toggle it and be able to design these things at the small level and then use that in a bigger context.</p>



<p>So I think, you know, to, to circle back around to your question, like when things don't go right. Or, or confusing. I tried to like zero in on little components and try to make their you know, the data flow more obvious and, and to design the UI in a, in a way that I can start small and just grow out from there.</p>



<p><strong>Kevin: </strong>[00:11:52] So when I've, when I've done a little bit, I've done a little bit of SwiftUI and I definitely have hit situations where that preview thing sort of breaks and you can't really tell why, and I've never been sure if it's just me doing something stupid or, you know, I'm hitting some, like, you know, I'm trying to do something in my view that just not supported or is that a, is that a common problem or is that something that.</p>



<p><strong>Ben: </strong>[00:12:14] it's a common problem, but I've been able to get around it. Again, just going back to the, make things simpler, you can comment out stuff and, and until it renders, all of a sudden will pop in. You'd be like, okay, it's something with between this part. And this part, there is a Little like a little diagnostics button, that'll say like the preview agent crashed and you can click diagnostics and it literally never tells me anything helpful.</p>



<p>But if you go to on a Mac in your home folder, library logs, diagnostic reports That's where all your crash logs show up and Xcode will have a crash log in there. And so I just keep that window open. And so when the preview stops loading it's because they tried to run the app and I did something I'm not supposed to.</p>



<p>And anyway, so usually I can go in there and it literally the crash log shows me the line number of the problem. So Xcode has all this data at its fingertips. It's just not quite right. It's not quite helpful enough to tell you exactly where the line is in the editor you're using. But I think that will improve over time.</p>



<p><strong>Jon: </strong>[00:13:15] You mentioned components so different, there's different. Like it's useful to build with components and stuff. Is there actually like a, an ecosystem? Do people sell components? Is there like a packaging and distribution thing for components?</p>



<p><strong>Ben: </strong>[00:13:28] So we have Swift package manager, which is just starting to become useful. Before that we had a couple of, you know community driven efforts to bring independencies. Nothing like what I remember when I used to be a .NET developer where people would sell like package products and they come with support and stuff like that.</p>



<p>There's, there's not a lot of that happening in the Swift community. I can think of one success story. And I've met the founder and he's he's a good. He's a good guy and he's built a huge company off of PDF controls and rendering and stuff like that. So if you've used an app that, that embeds like PDF editing or scanning or whatever, chances are, you probably use his component.</p>



<p>And that's a PS PDF kit, but outside of that, I'm not really aware of like a healthy ecosystem for like selling those types of components. But if yeah, open source, we can definitely see You know, bringing in a Swift package and being able to access all of its functionality, whether it's it, whether it's like talking to services or if it's UI based.</p>



<p>I do think that in the iOS community in general, and I suppose this is probably more of a a community where you deploy software onto people's devices and they may never update them again. You're generally a little bit more conservative over throwing other people's code. Into your projects. And there have been some in the early days especially there, there were some pretty bad horror stories about frameworks that did too much or had bad code in them and stuff like that.</p>



<p>And they might cause your app to crash and it's, you know, it's not your fault, but it's your problem type of thing. And, and so I think that there are pockets in the community that are just like no dependencies ever which that extreme I don't agree with. But but I do think that the, you should take dependencies like that with a healthy dose of skepticism.</p>



<p>And you should be able to read the code if possible and make sure that you're comfortable putting it in your project because you are going to deploy it onto, you know, hopefully lots of devices and, and you have no control at that point. You can't force them to update. Whereas, you know, I also do web development.</p>



<p>So if you make a mistake there, you can always push again. Right.</p>



<p><strong>Jon: </strong>[00:15:38] You mentioned&nbsp; like the reactive Swift and&nbsp; there've been things out there for awhile.&nbsp; So Combine is new and from Apple, is that the main difference is that it's now like in the box and official?</p>



<p><strong>Ben: </strong>[00:15:50] Yes. Yeah, so I just recently launched a course on Combine and it's at CombineSwift.com. And in, in the course, it was basically like why now? Like these open source has shown that this is not only a popular choice for iOS developers, but across many platforms that RX star ecosystem is huge. And they generally follow the convention.</p>



<p>So if you're familiar with one on JavaScript, for instance, you'd probably be quite familiar with it on Swift. The, the differences is that, you know, when. Like for instance, I I'm a consultant, so I'll go work on a project for six months or something, and then I'll help them hire a team or, or whatever.</p>



<p>And at some point I'm going to be giving this code to somebody else. And I always felt like that decision, that sort of like the calculus of like, is it responsible for me to choose like insert fringe framework name here? I want to make sure that I enable my clients to be successful. And while I personally think that those frameworks were interesting.</p>



<p>I never came across a situation where a client was asking for that. And especially if you're trying to hire from the broadest pool of developers unless you're willing to train them on a topic, I think this would probably be different if it was like my team, my company, you know, I would decide on what tools to use and train the people who are gonna to work on it.</p>



<p>But, so I think that there's something to be said about kind of sticking with the middle of the road. You know, I, you know, my, my web development platform choices, rails, and in rails, there are strong opinions and they're strong conventions and I get on a new you know, I'm on a project right now and it's very complicated, but I can look at their rails app on the backend.</p>



<p>And I. Pretty much know how to read it. And I know where things are and I know how to, you know, so there's something to be said about sticking with those kind of norms. But now I think it's different because Apple is committed to supporting it right there. They're going to be making sure that, you know, it doesn't break with a future version or they don't bring out some new technology.</p>



<p>That's just completely incompatible with that style of development. And so I think that's where the difference is. There are some. You know, probably some growing pains that they have to go through making the framework as robust as RX Swift, for instance. But the majority of the pieces are there and, and you can build the ones that aren't.</p>



<p><strong>Jon: </strong>[00:18:09] Hmm. Yeah, that's something I. Working with the net team at Microsoft. We struggle with this all the time. Right? It's like there can be a popular opensource thing out there for awhile. And then people enterprises, you know, want an official thing in the box. And it's always that challenge of like, what do you ship in the box and what do you not, you know, rely on</p>



<p><strong>Ben: </strong>[00:18:32] Yeah. And I've worked for an enterprise insulting and the dotnet space many moons ago. And they had a blanket yes. To anything that Microsoft. Gave us and a blanket. No. To anything that was outside that. And Rob, I don't know if you, you probably don't remember this, but this was like eons ago and I wanted to use subsonic on this project and they they said, no</p>



<p><strong>Rob: </strong>[00:18:54] What is SubSonic again?</p>



<p><strong>Ben: </strong>[00:18:57] I don't remember.</p>



<p><strong>Rob: </strong>[00:18:59] You know, I still get pull requests. I still get pull requests.</p>



<p><strong>Jon: </strong>[00:19:03] Yeah. Would you approve mine, please?</p>



<p><strong>Rob: </strong>[00:19:05] No, I'm...</p>



<p><strong>Jon: </strong>[00:19:06] It makes sense. It runs!</p>



<p><strong>Rob: </strong>[00:19:07] Got right, Jon. You've got to learn to write you to tests.</p>



<p><strong>Jon: </strong>[00:19:11] It's a fad.</p>



<p><strong>Ben: </strong>[00:19:13] Yeah, it's definitely like, I take caution and saying like, it's good because it comes from Apple because it's not necessarily true. You know, I like apples frameworks. I like the platform a lot. But when, when something does come from the company that you. You know, your product is based on, there's a sense of certainty and that it's going to be more mainstream for other developers as well.</p>



<p><strong>Rob: </strong>[00:19:37] So...</p>



<p><strong>Ben: </strong>[00:19:38] Not just a fringe thing.</p>



<p><strong>Rob: </strong>[00:19:39] I've mentioned, I have a question on that. I, I think you and I talked about this when you were launching your, your service, the CombineSwift.com and, and you were asking about platforms and whatnot and you ended up writing own, right?</p>



<p><strong>Ben: </strong>[00:19:55] Yes.</p>



<p><strong>Rob: </strong>[00:19:56] Yeah, no. So, I mean, I'm, I'm, I'm sitting here on the site, CombineSwift.com.</p>



<p>I'm looking at it. And this is a, you wrote this, you wrote this with rails. I find that just fascinating. Like we're having this discussion about. You know, platforms. And what about you is whatever you went with, what you knew and you wrote what you knew. And for me, I sell books, I sell videos, right. And like try and figure out how to try and figure out the mechanism to do that is such a challenge because</p>



<p><strong>Ben: </strong>[00:20:23] Well, I wouldn't necessarily recommend it.</p>



<p><strong>Rob: </strong>[00:20:25] But it's beautiful.</p>



<p>It's wonderful.</p>



<p><strong>Ben: </strong>[00:20:29] The reason why I say that is that I, I am incredibly picky.</p>



<p>I find one thing, you know, I like, I looked at teachable for instance and I know some people have launched stuff on teachable and I don't even, I couldn't even pinpoint right now what it was that was like, nah, but it was just one of those things.</p>



<p>I'm like, I it's it's, I guess it's the curse of like, I know how to write this stuff and it's also fun, at least in the moment to be writing it now that I'm paying for it and supporting it and. I'm having to deal with some stupid web packer issue right now. It's like, I'm like, why did I choose to</p>



<p><strong>Jon: </strong>[00:21:03] it off.</p>



<p><strong>Ben: </strong>[00:21:03] Yeah, it's definitely a trade off.</p>



<p><strong>Rob: </strong>[00:21:06] Well, I do find it interesting that, you know, when we're talking about these things about, you know, what you're willing to accept or not, I mean, you just leaned into rails and you built the thing you wanted, and I fully agree with you. I started on Kajabi was it a year ago trying to do this thing? And yeah, it took me about three months to realize it didn't do what I wanted to do.</p>



<p>Same with podia, same with like so many other things. And so I ended up just writing my own I using Firebase and you have pages for mine and it works great in view, I should say there is, I mean, I hear what you're saying. It's, it's troublesome, but at the same time, it's rewarding when you know the platform, you know how to solve a problem because you can get in there and solve it.</p>



<p>So I don't want to take us to too far on a tangent, but you brought up rails. And I think, like you said, you know where the code is, you know, where the thing is, that is huge. A year down the line when you're like, why didn't this thing work? Well, I'm going to go right to the spot because I know that's where it is.</p>



<p><strong>Kevin: </strong>[00:22:02] So when SwiftUI first came out, it was pretty bare bones, pretty rough, as I recall. And then the last, the last big upgrade, they added a bunch of stuff. I'm like, where is it in terms of maturity? Like what kind of apps would you build with it? What kind of apps would you have not built with it?</p>



<p>You know, whereas it, it sort of in its life cycle,</p>



<p><strong>Ben: </strong>[00:22:21] So I would say I'm both a extreme optimist and also somewhat pessimistic. If that makes sense at all, like the 80% you, it is unbelievable how fast you can get to the 80%. Like it's, it's so enticing when you see how fast it can be to develop things as small components. And when you think about Like there's, there's some ceremony and stuff like that that happens.</p>



<p>Like when you, when you're building like a to-do list app on iOS and all of those things make sense when you're building like a big project and you need to you need to modularize your code and you need to like isolate things. So you've got, you know, a controller and a view, and that view has subclasses for sub views and things like that.</p>



<p>But Sometimes those things are just there because you need a view to go in that spot. It's not like you don't necessarily need to create, like, how do I say this? Sometimes there's just too much ceremony for the level of application you're building. If that makes sense. I like that kind of a fine grain structure and, you know, attention to detail and the ability to split things off into components when my application is complex enough for that.</p>



<p>But if I'm building it to do app for, for instance, my screencasts that I do, like all the time, I kind of get frustrated with how. Mundane like creating a, a collection view for instances like there's, there's just a lot of steps to it. And I find that like in SwiftUI, I can get, I can get there in like 10 minutes, like full to do full, to do app.</p>



<p>I probably shouldn't have said that cause now Rob's going to challenge me to do it. But I just feel like there's like the easy stuff is so unbelievably easy. That said the remaining 20% is sometimes you hit a brick wall and I'm working with two apps right now that I one is just a personal project of mine.</p>



<p>I've been struggling with tinnitus for like a little over a year now. And I decided to build an app that would help with this particular type of tinnitus therapy. And so it deals with audio and it's like, it's super fun. And I decided to do this, like a bouncy little wave form animation to sort of give you some visual feedback as you're changing the frequency and the volume of your of your tinnitus frequency.</p>



<p>And it looks pretty amazing and I'm very happy with it. But it crashes in a way that I can't reproduce, and this is the only thing preventing me from shipping it. And so I just kind of put it on the back burner for now because I'm like, I got to ask, I think I've got to ask Apple about that one.</p>



<p>Cause I, I’m at a loss and I don't want to ship something that I know crashes. So anyway, and then I'm working on another app with a designer friend of mine. I know, I know the podcast, people can't see it, but it's basically, there's this book that he wrote full of these puzzles and the puzzles are called the Rebus puzzles.</p>



<p>And so they have like these icons and your job is to figure out what it is. So, yeah, so I'm holding up this book and it has a spider and a man icon. And then the other one is a bacon and eggs on the top and a golf club on the bottom. So that's breakfast club. So this is all movies, right? And so the idea is for it to be kind of like a, a puzzle app that responds to texts and voice and stuff like that.</p>



<p>And it's pretty amazing, but I'm starting to hit those edges where like those quick wins are gone. And now I'm like, I don't know how to hide the navigation bar when I scroll up because, and this is like the stupidest thing to get hung up on. Right. But it's because I don't have the hook that I need. And there, there are things like that, which I get kind of frustrated with.</p>



<p>So I wouldn't like say a hundred percent SwiftUI all day, every day, but I would say that, yes. Whatever project I go with from this point, onward, a significant portion of it would probably be in SwiftUI UI.</p>



<p><strong>Rob: </strong>[00:26:09] I have a question. And given, given that all of y'all have done this right. It's I swear to God, I'm not trolling anyone here, but in you describing, I think what you said was I can build a, to do app and, you know, and you said to, Rob's going to make me do it. No, it actually made me think of. ASP.NET 2.0, where you could drag and drop your data sources and line stuff up and bang stuff out so fast.</p>



<p>And then I, you know, my, my brain kind of locked onto that, but then all of the things that you're describing now, but the fringe cases, I can't quite get the property hook. I can't quite</p>



<p><strong>Ben: </strong>[00:26:48] Yeah, this is not a new problem at all.</p>



<p><strong>Rob: </strong>[00:26:50] Yeah. Well, it's funny because like, sometimes I think about this and, and you know, of course maybe it's just me being an old guy.</p>



<p>I don't know. Dude, what we had with web forums was insane productivity. It was insanity, of course, right. There's a bunch of problems with it, technically speaking and testing and all that stuff. But I mean, sometimes I think about this, like you want a sortable draggable droppable grid that has search built in with a, you know, an event hook that you can go and do stuff.</p>



<p>I think about that. And I just keep thinking, like, sometimes all of this stuff just seems so sickly. So anyway, the reason I'm bringing this up to you is, and this is a legitimate question. I swear. I'm not trolling you, does it ever feel like you're doing this again? All the things you did back then, and now you're doing...</p>



<p><strong>Ben: </strong>[00:27:33] Yes, but I have the context and the hindsight to like recognize some key differences. I think because I was there during that time and I was one of the people who said like, Oh, this designer thing, isn't going to work because five minutes after the demo is over, I'm going to need to like. I I'm going to need to like transform this data.</p>



<p>And I just, I just selected that field from a dropdown in a GUI somewhere, and now I'm lost right now. I need to like hook in and actually on the Mac, this is a good sort of similar point on the Mac in app kit. You have bindings. And so there's, you can, with a GUI tool, you can say like, Oh, I've got this array of people and I want to take the first name and I'm going to bind it to this thing.</p>



<p>And this is how like grids and stuff like that are built on. On on the Mac app. And so like there's a row controller and it's got a model and whatever, that's amazing. As long as you type all of the things correctly, there's no code completion. It's in some property pane, GUI, somewhere in a drop down and good luck getting a source control.</p>



<p>If that makes any sense that these are all the problems that like, I think that ASP.NET also had You know, when we're trying to do these things. What I like about the SwiftUI part of this is that I think that the, the good architecture and the ability to hook in where you need to is almost there, like for the majority of stuff it is there.</p>



<p>And I think that the, the cases where I'm getting hung up on are, are things that I'm certain I can get around. But I, I like the fact that it's not like there's a design time experience and a code experience. And I, and like, in, in, when I was doing ASP.NET, I was like, Oh, I'm a, I'm a code behind type of person.</p>



<p>Like, I don't need that designer. It's not like that. It's like, there's one representation and it is the code. And the UI is, is you know, automatically update actually the UI, the preview, you can right. Click on it and like, Manipulate stuff. And it actually writes the code for you also,</p>



<p><strong>Rob: </strong>[00:29:23] Okay, honest question.</p>



<p><strong>Ben: </strong>[00:29:24] Crazy.</p>



<p><strong>Rob: </strong>[00:29:25] When's the last time you had to edit XML?</p>



<p>&nbsp;<strong>Ben: </strong>[00:29:28] I don't know, five years ago. I don't know.</p>



<p><strong>Rob: </strong>[00:29:31] Now, you know, I do want to make it clear I'm I, I'm not, I, I am not trying to like, and excavate in SwiftUI and all that to you know, technology that's 10 plus years old. I'm just to me, it's like the idea, the idea of the designer, the idea of we can abstract this away now to a visual interface. I think it's fascinating.</p>



<p>In fact, I feel like it's coming. Like, I feel like. If someone was to come out with a rails UI or something like that, like it would make perfect sense. Cause it's all just so known. Like we can now put a UX or UI on top of it and just drag and drop stuff. You know what I mean? Cause</p>



<p><strong>Ben: </strong>[00:30:06] Well, I mean, this isn't drag and drop, right? It's it's declarative UI code,</p>



<p><strong>Rob: </strong>[00:30:11] Aye. Right. I'm sorry. I'm not really I'm not trying to conflate the two. I know I am, but I'm not trying to conflate the two. I'm just saying like the ease. Of getting from zero to whatever, you know, zero to a hundred is so</p>



<p><strong>Ben: </strong>[00:30:22] Yeah. I think that.</p>



<p><strong>Rob: </strong>[00:30:24] cases,</p>



<p><strong>Ben: </strong>[00:30:24] The differences are what happens when you do go off the rails and how painful is that?</p>



<p><strong>Jon: </strong>[00:30:29] that's the whole thing. I've been thinking this the whole time. It's like that transfer, like getting started, getting something going quickly, hitting 90% of the use cases is great. As long as when you get to that, that cut-over where you've got to get down and you need the hooks you need access to, you know, and you need to be able to find where is this thing set up or where is it, you know, where do I hook in and how quick can I fix this?</p>



<p><strong>Ben: </strong>[00:30:54] And can I put a break point on it?</p>



<p><strong>Jon: </strong>[00:30:56] Yeah. Yeah.</p>



<p><strong>Ben: </strong>[00:30:57] One thing I want to bring up about the, like Kevin, back to your question about like, would I use this in a real app or how big of an app or whatever. And I mentioned that I would use switch UI for a major part of it, if I could The Apple's done a pretty good job of making the UI kit and SwiftUI be able to include each other.</p>



<p>So in a UI kit based app, I view controllers and views. I can create a, what they call a UI hosting view and put a SwiftUI inside of that. And it renders. So I can have just like my settings screen or just, I could just have that avatar view that I designed or my custom button that could just be my only SwiftUI.</p>



<p>Part of the entire app if I want it. And then the, the reverse is also true. If I've got something that I wrote in UI kit, either a UI view or a UI view controller, including all of Apple's stuff, I can I can create a UI view wrapper that includes that. And then there there's some necessary hooks that you have to create to make sure it stays up to date because in a, in a world where all of your views are value types.</p>



<p>They get thrown away and recreated because it's cheap, you know, it's, it's not free, but it's super cheap to do so. Whereas objects on the heat are, you don't want to throw those away and rerender every time a user is typing in character. And so you, those stick around and then there's an update to method that you can use to kind of synchronize that view with your, with your model.</p>



<p>And so I use that a lot so that I can kind of mix the two. And because of that, my SwiftUI preview functionality and Xcode works actually for almost all the code that I work. I write now because I can create that little wrapper just for my preview and get that live editing experience on stuff.</p>



<p>That isn't, hasn't nothing to do with SwiftUI. It's a little bit slower because it has to create that stuff behind the scenes. But this kind of my main approach to working on applications these days, Mike, my current client that I'm working on doing a fresh build takes like four or five minutes. So if I'm like, Oh, this needs four pixels of padding instead of six.</p>



<p>Like that is just a nightmare. And I don't want to do, I don't want to build and run and have to like make those kinds of tweaks and have that feedback cycle be so long. And so, you know, breaking the app out into smaller components and being able to use these previous right. And Xcode I think is just hugely powerful.</p>



<p><strong>Kevin: </strong>[00:33:21] Both ways like you have an existing UI kit based application, you can start building some stuff, some parts of it in SwiftUI and integrate it and vice versa. You can, you know, you have SwiftUI application. You can. Yeah. Great. Cool.</p>



<p><strong>Ben: </strong>[00:33:38] There's a, there's a chocolate and peanut butter joke in here somewhere.</p>



<p><strong>Jon: </strong>[00:33:43] So what's the overall like workflow. Okay. You, you, haven't an idea for a new app. You want to build what's your general, like, it sounds like there's a lot of like iterating on the design side, but how do you actually, like, you know what I mean? How would you, how would you go from, I've got an idea to I'm shipping an app.</p>



<p><strong>Ben: </strong>[00:34:00] So I really like working with the designer. If a designer can give me like a Figma or sketch marks of an app, I feel like I'm most productive in that environment. I feel like as it, as far as developers go, I think I have a pretty good eye for design, but I wouldn't call myself a designer. So I can like, if like w w the way I work, I feel like designers don't need to tell me about things like You know, color choices and font, weights, choices, and things like that.</p>



<p>And proper spacing and consistency and all that stuff like that I recognize it and I do it as a matter of practice, whatever. But sometimes having somebody think about the flow and the bigger picture and the, you know, and being more creative with the design is something that I really value. So, so that's my preferred approach is when I have some, some Figma mocks, they don't have to be pixel perfect.</p>



<p>But you know, You know, rough or near, near final designs are really nice to have for things that I'm creating on my own like this, this tinnitus app, it's got some nice colors and it's got that nice animation, but when you've like squint, it's like two screens and it's, you know, it's, it uses some basic controls.</p>



<p>So it's got some some, some nice looking lipstick on it, but it's ultimately just some stock controls and So I think, you know, it, it's definitely something that, like, I know enough about design to be frustrated with what I can produce myself, if that makes sense. But yeah, I just try to iterate started this, this tinnitus therapy app.</p>



<p>I'm actually, you know, it's, it's basically an implementation of a white paper that I skimmed you know, skim down to the conclusion section anyway about like what frequencies, it's basically a pattern that it plays based on your tinnitus frequency and so I came up with this, this idea of like, okay, it would be really cool for me to play this on my phone.</p>



<p>I've seen tools like this on the web as well, but I'm never, you know, I want to be able to like put an AirPods or whatever and just do this, like when it happens, not when I'm like in front of the computer. And so And so, anyway, that's kind of where the idea came from and I just kind of started iterating and I wanted to also get some practice with SwiftUI.</p>



<p>So I decided just I'm going to do, I'm going to do this on a hundred percent SwiftUI. Which I think is fine if, for me, because I'm using it also as a learning tool. And I also like to teach this stuff. So I want to make sure that I have, you know, have some apps that I've created and stuff like that.</p>



<p>For somebody else who's like just wants to ship an app. I think the decision of like, There's no, like badge of honor to be like, Oh, it's a hundred percent SwiftUI. You know what I mean? It's like, I think that people aren't gonna be able to see the source code and as long as you ship it and you're happy with it, like, it doesn't really matter what it's written then.</p>



<p><strong>Jon: </strong>[00:36:39] Hm. Yeah. There are platform restrictions, right? Like Combine is only. There's OS level requirements, or I guess that's just developer level.</p>



<p><strong>Ben: </strong>[00:36:48] IO. Yeah. Runtime requirements for Combine. I'm not quite sure why, but but yeah, so I was 13 for both SwiftUI and for for Combine, which typically we have a pretty healthy update cycle and the iOS community, you know, kind of the current version minus one is, is usually pretty standard.</p>



<p>The project I'm on now is unfortunately like two versions behind. Current. So maybe in the fall we can bump up. And in that case, then we'll be able to start using SwiftUI and combine and stuff like that. But yeah, in the fall is when iOS 15 will be, will be announced.</p>



<p><strong>Jon: </strong>[00:37:22] I, what I was wondering about earlier when I was asking about the kind of workflow is I guess, how painful is it to refactor and, and like on the code side of it, how, you know what I mean, how. How easy is it to just kind of quickly refactor your code as you're going there? Like where you don't have to think too much, because if you make a mistake, it's not going to be too bad to rip it out and change it around in there.</p>



<p><strong>Ben: </strong>[00:37:49] I would say that it's in general, it's, you know, Swift is a statically typed language. So you have the ability to do refactoring and get compile errors if you're wrong and stuff like that. codes, refactoring tools are. Pretty hilariously bad. Every year I think, Oh, maybe, maybe I can actually rename a class and have it properly rename the file as well and rename all the usage usages.</p>



<p>And it usually works. Sometimes it doesn't It's just, I don't know. Like, I, I, I was a big fan of ReSharper when I was using visual studio and none of that stuff. I mean, it's just like, and that was over a decade ago. And so ex-co just doesn't have that same, like, it's just not as important to them.</p>



<p>Unfortunately, there is a jet, a jet brains IDE for Swift called app code. And it's great, but it's kind of like, They're always chasing a moving target because it's not first party. It's not a plugin. It's a separate ID entirely. So for instance, when SwiftUI came out, they had to like scramble to get their stuff, like to have some support for SwiftUI, because otherwise you're just editing Swift in app code and looking at it in Xcode, which, and if you're going to have to run both, I don't know.</p>



<p>So I've just never really made that, made that switch. I do know people who, who use it full-time because of the refactoring support. But that said, I think that, you know, as long as the compiler can, can catch all these errors I'm pretty confident, like ripping things out and moving them around and stuff like that is, especially in SwiftUI, it's actually a lot easier and SwiftUI UI.</p>



<p><strong>Jon: </strong>[00:39:26] one other related thing is like testing. Do you, do, are you able to do like, you know, unit or integration level testing or like, can you test UI component stuff?</p>



<p><strong>Ben: </strong>[00:39:37] I actually entered the world of trying to test SwiftUI views yet. Just, I basically treat that as like, I can see it working and I can create previous for all the different States. So if there's like a, a state that is. That I'm unlikely to ever see happen in the wild, like the missile launched screen or whatever, you know, I can simulate it in the preview and see it.</p>



<p>So for that stuff, I don't really necessarily see the value in it. But for testing the models and, you know, network service related things yeah, there's support and Xcode for, for writing and running tests, the testing kind of. The community isn't quite as behind it as I would like. Most people really don't write tests.</p>



<p>And when you do find the project as tests, they're, they're pretty poultry. So it's something that I think that definitely could be improved. And I think that tooling certainly helps ease that barrier. But it also requires some discipline and how you design. Your software, right? Because if you've, you know, if you start tying things together with like singletons everywhere, then it becomes pretty difficult to isolate things out to test if not impossible.</p>



<p>And, and Apple has a long way to go with that as well. You know, I. Worked on a, a, an app that was integrated with the photos app on the Mac for a couple of years. And writing tests for that environment was really difficult. And we basically had to mirror all of Apple's types with our own wrappers.</p>



<p>You know, it was probably, you know, six or 10 different like core types that we had to wrap and use our own wrappers so that we could stop them out during testing, because it was like this. Central part of the app that we couldn't touch in a test because it dealt with a photo library and you don't have access to that in the test.</p>



<p>And nor would you really want to,</p>



<p><strong>Jon: </strong>[00:41:23] Yeah.</p>



<p><strong>Ben: </strong>[00:41:24] but but yeah, I would say like, you know, I wish that the tools were more accessible and I wish the community was probably more you know, aligned to testing, but there is support for it. And I do some, myself, probably not enough.</p>



<p><strong>Kevin: </strong>[00:41:40] so with the, you know, with a new way of building applications there There may be like things that the, the community has to figure out about, like what's the right way to structure a large scales with DUI application. Right. Like I, you know, I learned some stuff by going through the, the Apple, you know, like intro course, but like, you could see where like, That's a very rudimentary way of structuring an application.</p>



<p>And if you want to build something big, that's got lots and lots of screens. Like what's a, what's an effective way to, to organize that and separate your models. It has the, has the community sort of figured that stuff out yet, or is Apple giving guidance around that?</p>



<p><strong>Ben: </strong>[00:42:16] I would say Apple's guidance has been really fantastic on the entry level stuff. Their tutorials are really interactive and rich. And you, you see, during the tutorial, you see the code you're supposed to ride and you see what that's doing live on the right hand side. And so as you scroll through, it's kind of dynamically building up the application.</p>



<p>It's a really, really nice, neat tech for interactive learning on the web. But that said, they kind of stopped there and like, you know, where do, where do you go from there? I think in general, like, Standard architecture still applies up to the point where you get to those models and the view layer that needs to be recreated.</p>



<p>So like who owns the objects that make the network calls for instance There are, there's some conventions that we can follow. Apple has these property wrappers, which I guess would be kind of akin to attributes for properties in.net, where you can decorate properties with like functionality. And so there's.</p>



<p>Because like your view is just a struct, right. And it's meant to be thrown away and recreated anything you put inside that struct will also be thrown away and recreated. So they have some property rappers, which basically say like Swift, you guys going to take ownership of this thing and keep it around so that so that you can still feel free to rerender the views at any time.</p>



<p>And so that's kind of the limit on what Apple is providing. But from there, I think that. You know, once you have your, your model logics, those are classes and they live for as long as you need them to live. And then, you know, there's no MVC to like guide you down a path, but you can, you can kind of create any architecture that you want.</p>



<p>I guess there is one architecture. That's kind of actually, I take that back. There's, there's two in the iOS community that, that People know of one of them is called the Viper and maybe to avoid upsetting anyone and I'll reserve like my, my judgment, but it does tend to remind me of that kind of like the, you know, the Java naming ecosystem kind of like, there's a, there's a presenter factory implementation type.</p>



<p>That's kind of what it reminds me of. And so it's just not my style. I've never personally worked in that environment, but I don't think I would enjoy it. And there's another one that's more geared towards Swift and SwiftUI. It's called the, the composable architecture. And there's, there's a couple of guys who run a screw, like a screencast video training site called point free.co.</p>



<p>And They talk high, low. They, they go deep on the functional aspect of Swift and SwiftUI. And Combine for that matter their, their stuff is very advanced and they came up with something called the composable architecture and it takes lessons from Redux. And there it's, it's not for the faint of heart because you look at it and you'd be like, Oh my God, what's going on.</p>



<p>But if you do know what's going on, you can express. Things in a really concise way and it's guaranteed by the compiler to work the way it should. But I would say with, with environments like that, as you know, I've done a fair amount of react as well. When you get something wrong, it's very difficult to trace down what's happening.</p>



<p>So I don't have experience shipping apps with this architecture, but it does interest me you know, just as a. At least as an exercise for learning, if not, if not more. But there are some efforts out there to like come up with architectures that people can use for their apps. For, for the most part, I just create objects with four classes with those responsibilities when I need them.</p>



<p>And I don't try to like fit into a cookie cutter pattern, if that makes sense.</p>



<p><strong>Kevin: </strong>[00:45:49] So w when you're defining an object model for use in a SwiftUI app, like how much does SwiftUI sort of dictate the shape of your object model or sort of perturb the design? Like, are you designing like a pure domain model and then. You know, plugging it into, you know, SwiftUI or are you building more of a, like MVVM ish kind of thing, which is like an object model that, you know, is designed to kind of interact with the UI.</p>



<p>Do you know what I mean?</p>



<p><strong>Ben: </strong>[00:46:20] Yeah. Yeah. MVVM is probably the closest corollary to what I ended up writing. You know, the, the models that I keep referring to are. Subclasses of observable object and Swift. And that means that anytime I Mark an property in those models as published it will fire fire and event, basically that stuff has changing and SwiftUI will coalesce all those changes into a, like in the same run loop, for instance.</p>



<p>So if you change like three, three published properties, like it just kind of says, okay, And then on the next run loop, it will, it will cause any dependent views to rerender. And so, so it doesn't do any like tree diffing or anything like that. So that influences like the shape of my view models. But outside of that, no, it, I can write whatever I want.</p>



<p>On my, on the puzzle app, I was talking about it. It deals with speech recognizers so that I can like tap the microphone icon. And I can say the answer to the puzzle and it will convert that to text. And I put the text on the screen and then we check the answer to see if it's correct. And if so we flip the card over.</p>



<p>And my naive implementation of that was each of my puzzle screens, which had a card on it, had a puzzle view model, and that puzzle view model had a speech recognizer on it. And so when I loaded up a pack of 50 cards, suddenly I had 50. Of the speech recognizers, which come from Apple being initialized at the same time, because I like, and so, and it was something that was kind of surprising to me because I was sort of used to that, like the lazy loading nature of, of traditional UI kit, like where things get created when they are, when they are called.</p>



<p>Whereas this is all state-based and I was inadvertently creating it all upfront. So I had to kind of design myself around that. But but I would say in general, like aside from the, the view model shape of things and using that published attributes or published property wrapper I still have the freedom to kind of create the code.</p>



<p>I want them right.</p>



<p><strong>Kevin: </strong>[00:48:16] Have you, have you gotten to the point in application yet where like the, you know, the, the fact that you're creating and destroying the views constantly, you know, over and over again. Like, is there a point where that starts to bog down the application? Is there like a point of complexity where that becomes an issue or is it that they really got that kind of tuned?</p>



<p><strong>Ben: </strong>[00:48:36] I honestly, I'm surprised how. Like, I don't have to care about that. The only time I really have to care about it is if I'm mutating state in the view render itself, which would be a problem in any framework. Right. Because then it would just cause like an endless render and XCode will detect this and it'll give you a well, it's a runtime warning.</p>



<p>Like, Hey, you probably shouldn't be doing this. I have a couple of cases where I'm like, Yeah, I know, but I'm only going to do it just this once. And then, you know what I mean? Like it renders once and that gives me the data I need. And then that's enough for me to say, Oh, okay. Like I actually, the context of this is I've got like, I've got a card that I want to flip over.</p>



<p>Right. And in reality, it's a view that I'm doing a tr a 3d transform on. Right. And so I've got a front and I've got a back. And, and so what I do is. When the front card rotates to like where you can only see the card edge, I swapped them where the other one is there. And then if then, and so I actually have to render the back backwards so that when I flip it it's looks right.</p>



<p>And so. SwiftUI has this thing called animatable modifiers, where you can basically take control of the animation and they give you a floating point value of zero to one to tell you like, okay, here's the progress of the, of the animation. And it's up to you to return, to transform to like squish it or scale it or whatever.</p>



<p>And what's cool about that is like you're agnostic to the animation curve. The timing of the animation, it could be easy and he's out or whatever, or it could be a spring based animation. So that number may not linearly progress from zero to one, but you don't really care. And so in that, in that animatable modifier, I check to see if that angle is 90 degrees and if it is 90 degrees, then I set some state that tells my UI to flip the display of those cards.</p>



<p>And so I get a warning right there because I'm. There are literally animating I'm in the middle of an animation. I changed state during the animation, but because I only do it once, I don't know. I think it's fine. Maybe there's a better way to do that, but but this is the type of thing that like It it's surprising to me like how little I have to worry about them throwing away pieces of the view tree and recreating, recreating them.</p>



<p>It's, it's definitely different than the like from what I understand to be like the react model where you, where does like DOM diffing and stuff like that. And there was a lot of A lot of tech that makes that fast. But Apple has chosen a different approach and it's, it's all purely based on States.</p>



<p>And I don't know. They've, they've been able to, to make it pretty fast. So.</p>



<p><strong>Jon: </strong>[00:51:08] So you talked about like the cases where you want to directly control the animation or stuff. Is there a kind of a good. System for just kind of transitions, you know, kind of like trans yeah. Transitions.</p>



<p><strong>Ben: </strong>[00:51:21] Yeah. So there's implicit animations and explicit animations. So I can say here's a rectangle on the screen. It's got a color and the color comes from my model might be model. And I can just say dot animated. And then when I changed the change, any attribute of the view tree that came before that modifier.</p>



<p>So the, the frame of the color, the alignment or whatever, the, the borders any of that stuff, it turns out if any of it, that is animatable, it'll animate whenever any of that stuff changes, which is great. If you just want a free animation. But it sucks if you want to animate the frame, but not the color.</p>



<p>So if you want to do that, you have to either get clever with the position of where you add the animated modifier because order matters. If you add it before the color, but after the frame, then the frame we'll modify it, be animated, but the color won't. And so the other, the other approach is to do an explicit animation and those explicit animations, you can be more precise about what you want to animate and, and how but the, the simple stuff about just moving stuff around is really, really easy.</p>



<p><strong>Jon: </strong>[00:52:26] okay. How, how much do you have to care about lifetime? I'm thinking of things like most app models have a way of like putting your app to sleep or something for a low power mode or that sort of thing. Do you just basically like set, set your properties in your mind and like it takes care of it for you behind the scenes or</p>



<p><strong>Ben: </strong>[00:52:46] So from the beginning, actually iOS has been really really aggressive about Killing apps that, that are are like the tie up the CPU, for instance or take too long to boot or whatever. When you go into the background, you'd be surprised how many of your apps are actually being suspended and evicted from, from the running state.</p>



<p>And until you come back in and, you know, there's, there's probably some stuff where it's taking the memory and putting it to the, to the flash storage on the device. And then when you come back at re it'll restore it, and your app is still running in the same place it was before. For the most part, you don't really have to think about that stuff.</p>



<p>If you do need to do like background stuff like if you're playing audio, for instance, especially if you are like transforming audio samples or whatever, then you need to be running like all the time. And so there are special background modes you have to elect into and Apple has to approve those.</p>



<p>So they'll, you know, if you're an audio processing app, they'll say yes. And if you're, you know, if you're I don't know, a game that has nothing to do with audio, then. They would be suspicious. Right.</p>



<p><strong>Kevin: </strong>[00:53:50] So one of the, you know, one of the compelling things about swept UI is that it's designed to be truly cross-platform. You know, you could run it on, you can write apps. So the work on the Mac, on the phone, on the watch, Apple</p>



<p><strong>Ben: </strong>[00:54:01] You said that we're truly cross-platform</p>



<p><strong>Kevin: </strong>[00:54:07] In&nbsp; the marketing sense of truly is that something you've experienced? Is that, is that something you've been able to take advantage of? Do you, or have you mostly worked in the iOS</p>



<p><strong>Ben: </strong>[00:54:15] I'm a little afraid of, to be honest. Cause I have some friends that are embracing the SwiftUI for the Mac. And some things are easy that I would say that Mac is much farther behind iOS in terms of like viability for launching like a true first-class product. But, but that said, you know, w a app kit isn't going away.</p>



<p>So if you need like, kind of a robust, like a tried and true method of developing mock-ups, you can still do that. I would probably try to suffer through SwiftUI and trying to make it work. And if things didn't work exactly how I wanted, I would be stuck with filing bugs or just dealing with it. And so I guess it just depends on what your priorities are.</p>



<p>It is pretty amazing that this puzzle app that I'm writing right now. Well, it already works on the iPad, which wasn't very surprising, but with minimal effort I can get it to work on the Mac. So that's pretty nice. And I haven't been given Mac a single thought actually, until you said that, but. Yeah, it'd probably work and I'd probably have to like fix things here or there, but I guess the question is, does it need to be on the Mac and is there, is there a market for it on the Mac and maybe there is.</p>



<p><strong>Jon: </strong>[00:55:24] What's the way that you, how do you write responsive views or do you write a different view for each platform or do you, can you write things at scale to the screen size?</p>



<p><strong>Ben: </strong>[00:55:38] Yeah, more, more likely you'd write things that are just adaptable in general. Like You can say like, Oh, this, this particular modifier only applies to iPad or only applies to this platform or whatever, or only applies when in dark mode or whatever. So, so you can make things reactive to the environment in many different ways.</p>



<p>In general, it's like you're gonna have some branching logic somewhere, and it's probably better that that's not like. In the first line of code. If I'm on the Mac, I'm going to run this app, whole view, tree, and experience. And if I'm on iOS, I'm going to do this. You know, hopefully there's a little bit more reuse you could, you could have between your views because you know, the, the views that you get, the, you create like buttons and lists and images and stuff like that.</p>



<p>Those are trying to create a conceptual model for you to write. And then on the platform, it renders what is appropriate for that platform. So. Yeah, for Apple TV, you would get a list that responds to the TV remote and has focus rings, which doesn't really exist on iOS or the Mac and, and things like that.</p>



<p>So like I, the idea is that you write at one time and it does the right thing on every platform. But like I said before, I'm really picky. So if it didn't work exactly how I wanted, I would be probably pretty frustrated. And I might go back to saying, I have a TV experience and I have a Mac experience and I have an iOS experience and maybe they're not all the same thing.</p>



<p><strong>Rob: </strong>[00:56:57] Yeah, it's reminding me of I learned tailwind CSS in the last year. I hate CSS, but like, you look at, you look at tailwind CSS on the page and it's just like, what? But then you take some time to learn it and it, it changed everything for me. Yeah. Yeah. It's it's interesting. Yeah, it's really interesting stuff.</p>



<p><strong>Kevin: </strong>[00:57:19] So I was just going to say that, you know, I have my, my little toy SwiftUI app that I built. It didn't take too long. Mostly I'm running it on the Mac. So I did it from the Mac and it didn't take too long before I hit something. It was like, Oh, I want to do this. And then you read the documentation and it says only support on IUs iOS or, you know so it's definitely some, some stumbling blocks.</p>



<p>There were some, some stuff in the platform only works on one operating system or the other. Yeah.</p>



<p><strong>Rob: </strong>[00:57:49] So I have one last question for Ben. You learned guitar when, what it was, it was like, I mean, when I say relatively recently, like within the span of time, I've known you write like,</p>



<p><strong>Ben: </strong>[00:58:01] No, no, no.</p>



<p><strong>Rob: </strong>[00:58:02] Oh really?</p>



<p><strong>Ben: </strong>[00:58:03] Yeah, I mean, I, I got my first guitar when I was seven and I, and I learned he's got the whole world in his hands and that was about it. And then I put it down forever and then I got a guitar. I got an electric guitar when I was 13. And so, you know, it was my goal in life to learn how to play Nirvana and Metallica and rage against the machine and all that stuff.</p>



<p>So yeah, so I, I played electric guitar for a while. And then I didn't really like my amp or my pedals and I couldn't sound like the people that I liked. So I just played acoustic guitar for like 15 years or something. And I just never really progressed. And then one day I was like, Oh, I actually have a job and I can afford to like buy toys.</p>



<p>I'm going to buy an electric guitar. And yeah. So now I've got multiple electric guitars and amps and a pet pedalboard and it's, it's a, it's a fun hobby.</p>



<p><strong>Rob: </strong>[00:59:00] Well, I was remembering the very first I think you said it was the very first app you made was guitar tab,</p>



<p><strong>Ben: </strong>[00:59:05] Yeah. Yeah, it was. That's what made me leave dotnet and change my whole career up is I was like, I could tolerate objective C if it meant that I can work on a Mac and you know, make money in the app store or whatever.</p>



<p><strong>Rob: </strong>[00:59:20] Yeah. Well, I was just thinking about that. Cause you and I were talking before we started recording about a Pink Floyd and in your, your Pink Floyd you recorded two two songs that you've done, which I actually watched. Well, We were getting ready here and they're really good. Like they're really good.</p>



<p>And I was like, Jesus, if he's only been playing for like the last seven or eight years, I'm jealous, but I guess why didn't know you when you were 13? Did I? No, I don't think I do so. Yeah. It's very impressive stuff. I don't know. Maybe Jon can, Jon can let that play us out. When we went, when we ended up today.</p>



<p><strong>Jon: </strong>[00:59:51] Oh, sure. Yeah. If I can get the artists release signed.</p>



<p><strong>Ben: </strong>[00:59:57] Well, thanks. That's very kind of you to say. It's it's I think it's important to have hobbies that are not software development, because if, I mean, if that starts to stress you out, then your hobby stresses you out. And that sucks for, you know, for That's just not a good state to be in. And so I've taken up guitar and baking and cooking, and I think it's good to, to have other hobbies as well as programming.</p>



<p><strong>Kevin: </strong>[01:00:24] All right. So I think we're at a time. So thanks a lot, Ben, for coming on and educating us. Tell us the websites of&nbsp; your training projects so people know.</p>



<p><strong>Ben: </strong>[01:00:34] You can find the Combine Swift course at CombineSwift.com. I, my regular screencasts on iOS development are at NSScreencast.com. One day, I'm going to have to change the name of that because the NS is probably not long for this world. Yeah. And I guess you could find me on Twitter at @subdigital. And it's been a pleasure.</p>



<p>Thanks a lot for inviting me on.</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-244-Ben-Scheirman-on-SwiftUI-and-Combine.mp3" length="32508828" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 243: Shawn Wildermuth on his new film, Hello World</title>
    <link>https://herdingcode.com/herding-code-243-shawn-wildermuth-on-his-new-film-hello-world/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-243-shawn-wildermuth-on-his-new-film-hello-world/</guid>
    <pubDate>Wed, 25 Nov 2020 23:46:02 GMT</pubDate>
    <description><![CDATA[<p>Kevin and Jon talk to Shawn Wildermuth about his new documentary film, Hello World . Shawn talks about how this film project began as a &quot;love letter to software development,&quot; ex</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 243</strong></p>
<p>Kevin and Jon talk to <a href="https://twitter.com/shawnwildermuth">Shawn Wildermuth</a> about his new documentary film, <a href="https://helloworldfilm.com/">Hello World</a>. Shawn talks about how this film project began as a "love letter to software development," exploring how amazing this career can be. As he delved into it he became more aware of the lack representation of women and people of color in this profession, and this film details his exploration of that topic through interviews and historical background.</p>



<p>You can pre-order the film now, and watch it on-demand on a lot of streaming platforms starting December 15,2020.</p>



<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-243-Shawn-Wildermuth-on-the-Hello-World-Film.mp3">Herding Code 243: Shawn Wildermuth on his new film, Hello World</a></p>







<div class="wp-block-group"><div class="wp-block-group__inner-container">
<p>Links:</p>



<ul><li><a href="https://helloworldfilm.com/">Hello World: The Film! (helloworldfilm.com)</a></li><li><a href="https://wildermuth.com/">Shawn Wildermuth's Blog</a></li><li><a href="https://wildermuth.com/hwpod">Hello World Podcast</a></li><li><a href="https://juneteenthconf.com/">JuneteenthConf - June 19th and 20th 2020</a></li></ul>
</div></div>



<h3>Transcript:</h3>



<p><strong>Jon: </strong>[00:00:09] Hello, and welcome to Herding Code. This episode is being recorded November 20, 2020. And today we're talking to Shawn Wildermuth about the Hello World film. Shawn, can you introduce yourself and the film?</p>



<p><strong>Shawn: </strong>[00:00:22] I'd be more than happy to. I'm Shawn Wildermuth. I'm a technologist and mostly a teacher these days. They don't let me around code anymore. But I've got a blog at wildermuth.com and I made a documentary about software developers called Hello World.</p>



<p><strong>Jon: </strong>[00:00:38] So what's kind of the main focus. Like how do you approach software developers and you know, what, what are you kind of talking about there?</p>



<p><strong>Shawn: </strong>[00:00:48] Sure. I started making the film. I'll tell it in this kind of story. I started making the film because I wanted to sort of do a love letter to software development because it's been so incredibly useful to me. Like it has saved me from a life of working in a 7-11 night shift. And I just love everything about.</p>



<p>How interesting the job is, and I want to sort of encourage people who didn't think they could do it, that they could. And so that was sort of the first approach. And in the middle of that the me too movement came through and some other things in our industry were changing with conferences and such, and I realized that.</p>



<p>I hadn't really worked with almost any women and certainly not women from the United States or Canada that I've worked on exclusively with people that looked like me. You know, I look a lot like a, the comic book guy, if you don't know what I look like from the Simpsons. Right. I fit the, the stereotype really well.</p>



<p>And&nbsp; so I pivoted the movie to be about the lack of women and people of color, especially in the industry. Because it's it's, as I say, in the film, it wasn't that there weren't enough women or people of color in, in, in In software development. It was that I had never noticed there weren't enough.</p>



<p>Like, it just didn't even occur to me to notice. And I like to think of myself as someone who's, you know, at least should notice those sorts of things. And so in that same time, I was having a dinner with Richard Campbell years and years ago. And he was mentioning about the early women in software development, being the first programmers, which was a story I didn't know.</p>



<p>And, and that's part of what we talk about is sort of the history. Of software development and how this sort of went from one thing to another. And&nbsp; then I looked back and it had been five years and I didn't know what I was doing with my life.</p>



<p><strong>Jon: </strong>[00:02:43] it's a, it's really fascinating that you've kind of created a documentary during a time of some transition. And some of my favorite documentaries that I've seen have kind of. Almost, but either through discovery during the filming, or just kind of by happy accident with evolution, you know, with history of evolving have kind of captured things.</p>



<p>I remember there was a documentary I saw called startup.com and it happened during the.com startup time and that startup bust and it followed these founders and, you know, getting huge valuation and going and interviewing. You know, in the white house and then everything. And then they get into huge fights and then the whole thing comes crashing down and the, and the film captured all that.</p>



<p>And it sounds to me like, I mean, and just observing everything that's gone on, it's been a lot of change and a lot of awareness has occurred just over this past year and few years. So what does that look like in terms of. You know, things changing as you're filming. Do you just kind of keep filming more stuff and figure it out in editing?</p>



<p>Or do you kind of, you know, how do you pivot a film?</p>



<p><strong>Shawn: </strong>[00:03:57] It's difficult. We interviewed 50 different people software engineers. We interviewed some people in education and a couple of others and what, what I learned, cause I didn't, I've never made a film before. Right? I mean, I've done some little things, but nothing like certainly of this size that you&nbsp; find the story in the editing bay, even though I had an idea originally, it almost always changes and it reminds me of software in a, in a lot of ways, because often what you think you're building when you start that first sprint, or when you write that first spec often, isn't what it really looks like because you it's, it's this continuous discovery of what is going on.</p>



<p>And that really attracted you know, it attracted me to it because I liked the way that I. Like to build software, which is finding a group of people that all have specific skills that are gonna lend themselves to it. Not thinking that one person is going to be the best at everything and getting over the idea that I could be the best at everything.</p>



<p>You know, for me, it's been, eye-opening not only in how I spend the rest of my life, but also like, Oh, you know what? That's a lot less pressure.</p>



<p><strong>Jon: </strong>[00:05:07] Hm. Yeah. As you're talking about that, then it makes me wonder, like with software there's been a change over the past, you know, I mean over our software development careers to moving to a more agile and, you know, being able to like pivoting is considered just something you do every day. Like you're constantly redeveloping, you know, like.</p>



<p>Figuring out the next best spin thing based on today's information, is that is that something that felt similar? Like, are you able to apply those kinds of like agile development sorts of things to film development?</p>



<p><strong>Shawn: </strong>[00:05:42] You are in a lot of ways, though it's a little different. So one of the things I learned early on was that there's a difference between documentary and let's say you know, regular films that you might see with a story in them. So when the Avengers was filmed, the Avengers shot about four minutes of film for everyone, one minute on screen.</p>



<p>And because they go in knowing exactly what they're going to film, like they have a script, they have this, they have this, they've got it all planned and documentary isn't like that. In many cases it's a hundred to one. A lot of it is this filtering mechanism, or if you take a movie like hoop dreams, which is four hours, which is really a long time for a film they had like 4,000 hours of footage cause they spent 10 years with these kids.</p>



<p>And so it is, it is really, you know, mining that information and digging through and reading transcripts and watching the footage as you're shooting it. And the, the, the agileness comes from as you're gaining information from, let's say an interview or spending the day with somebody or watching an event happen.</p>



<p>Things are really changing. There's a good example of that. I was interviewing Debra karata who you may or may not know, but</p>



<p><strong>Jon: </strong>[00:06:59] Oh, yeah.</p>



<p><strong>Shawn: </strong>[00:06:59] does a lot of angular stuff with Pluralsight and I was interviewing</p>



<p><strong>Jon: </strong>[00:07:03] when I was first learning to program, one of her books was the, one of the first books I read. And I, it was, it was like mind blowing when I actually met her in person. I was just like, Oh yeah, she's amazing.</p>



<p><strong>Shawn: </strong>[00:07:16] She is. And she hadn't mentioned that her, I think it was her daughter or a friend of her daughters had gone to this college in California Harvey Mudd college, and that they had changed to be graduating from 15% to 50% women in their computer science. And that like changed my perspective of like, Oh, I need to go back and do some research about the education piece of this. And that really changed the whole view because you're in the middle of, you know, information gathering or mining or whatever you want to think about the way filming does. And you go, Oh, this changes, everything was changed is the way we think about this in an entirely different way.</p>



<p>And that's, you know, that's what happens at least happened for me with documentary film. And when I talk to other filmmakers, it's very much like that, depending on the kind of film they're trying to make, but being unwilling&nbsp; to move or pivot or adjust. Has that idea has really changed the way we build software has allowed me to make a film because I was already sort of adept at it, but it's also forced me to in my everyday life not be so entrenched in my views or my ideas or how I expect my relationships to go or whatever the case may be.</p>



<p>It, it. It's been a really good practice for, for you know, just being able to not be as, as rigid as I've spent some of my career being like, what do you mean C sharp? Isn't the best language? What do you mean that like, whatever it is, you know, that Of course, we can't do anything outside of Firefox.</p>



<p>I mean FoxPro, there's the word I was looking for. Everything has to be FoxPro it. Like we have these weird entrenched opinions that sometimes we look back and like, what kind of bullshit was I talking about?</p>



<p><strong>Jon: </strong>[00:09:05] Yeah. Yeah. It's a, it's amazing how like, awareness, all of a sudden opens your eyes and then you see something that should have been right under your nose. Like it was right under your nose all the time, and you're just blind to blind to it, you know? Did you observe during the time that during, because this has been years for you to create this, did you observe any change in, you know, in the industry during that time?</p>



<p>Like you mentioned the me too movement, and then of course, you know, more awareness in underrepresented minorities is here. Did you see any hopefully positive change during that time? Yeah.</p>



<p><strong>Shawn: </strong>[00:09:42] I did, you know, I went into the film once we made the pivot, worrying that the industry that I love so much had these sort of sexist or racist overtones. And I came out of it really with this idea of that it's mostly due to unconscious bias and you know, fit. So what I, what I saw is that we were changing the way we.</p>



<p>Talked about software and software teams. One of the ideas in the film that is very important to me is whether you buy into the social justice of, of course, this is the right thing, and this could be generally generally changing for people in certain communities, especially underserved communities, especially underserved communities around the world, not just here in the us but that we can make better software with better integrated teams with better diversity. And I'm not just talking about diversity of race and gender, but also. Just backgrounds and ages. And you know, the idea that a company would release a app to track the period cycle of women and make it all pink. Because obviously there were four guys on the team.</p>



<p>It was like, well, it's a app for women. It's gotta be pink, you know? And just having a better exposure, you know, the facial recognition that doesn't work as well on, on dark complected skin or the fact that the early airbags were never tested with crash test dummies, the size of women. And so they killed a bunch of women before they figured that out.</p>



<p>You know, it's not, it's an engineering problem that. If we, again, if we ignore whether the right or wrong of it, you know, some people can argue about, you know, merit based or meritocracies and all that at the end of the day, I think we can make better software when we have these different perspectives to help us figure out how to build better software, you know Scott Hanselman talks about it sort of like an intersectionality of are you building medical software? Do you have people on the team who have had medical problems on dealt with medicine as a user? Are you building software for fireman? Do you have access to someone who knows fireman on the team? Like it's this idea of, of, you know, it used to be that we would get a spec and they would write an app over two years, or we used to call them programs, but app over two years and then you show it to the customer and it was either right or wrong. And then you'd have to train them to figure out how to make it right for them. And we've changed a lot of that, but I still feel like the representation is still hurting the quality of the software we build.</p>



<p>You know, there are places where. In our industry, where there is great representation. You know, it's not, it's not you know, a big solution, but I think we need to own the lack of representation when we can like get out in front of the story. If you're running a conference and 90% of the people who submit papers are men. Talk about that. Say why can't we get women or people of color to submit, talks to our thing and, and, and talk about it instead of trying to make the numbers look good, which is actually, I feel like happens sometimes. Okay. Well, except all the women in the backfield with men and I don't, again, that's not about fairness, that's hiding the fact that we don't have enough.</p>



<p>You know, let's say women's speakers at conferences. That doesn't help us because it doesn't, I think we're missing part of that. And that's something that I think is finally getting better, but still think we have a long way to go.</p>



<p><strong>Jon: </strong>[00:13:23] Yeah. Yeah.&nbsp; You mentioned that, it, it makes a better product and a better team at a better experience for everyone when there is more diversity of background and thought and you know, all the different things, education level, and, you know, just different languages spoken and so many things that we are unconsciously.</p>



<p>I mean, that's the whole thing. It's unconscious bias. And I think. You know, going into this, a lot of us had thought, well, okay, we should be nice to different, you know, people that are different than us, but it's going to put a cost, you know, it's going to slow us down and it's going to put a cost and it's harder to hire and all that.</p>



<p>And really the result, as you're saying is you end up building better software and being a better team. And you know, like all these, it's an, it's a huge net positive.&nbsp; It is something that I've worked with on&nbsp; conferences putting together conferences, is it, it does take some work to find speakers, and some of it, I think comes from people not seeing themselves as speakers and not, you know what I mean? And so like for instance, women speakers. It takes some encouraging sometimes for, for a few reasons. One is they don't see themselves as speakers because they've always seen men speaking on stage. And also there's a little bit of fear that they're going to be, you know, singled out and, you know, kind of harassed in a way that men just aren't aware of.</p>



<p>Did you, did you talk to people where, where that was an issue, you know, where people are scared or just don't want to put up with negativity.</p>



<p><strong>Shawn: </strong>[00:14:59] Yeah, we did. We, you know, we reached out to a lot of people that I thought would really have good stories, but there still was a reticence with a lot of them to talk about it on camera. Because they didn't want to be labeled as that person or being difficult or whatever, but we did find a few people that were pretty honest about just the difficulties, you know, the, they, they talk about the pipeline getting people of color and women into the software industry.</p>



<p>But the other piece of it is the leaky pipeline and that is retaining people once they're in the industry. And maybe they're there. Experience and bias or sexual harassment or just, you know, the, one of the people we talked to Donna Malaya, I think is how you pronounce her last name. I'm sure that's wrong.</p>



<p>But she talked about that there's a difficulty in. Software for some people because they have a softer voices that they think that if you want to espouse a good idea, the best way to do it is to be excited to tell everybody about it and to be, you know, want to run the meeting and to talk a lot about it.</p>



<p>And a lot of good ideas come from people that don't have that and that. And so it ends up being the, I think some people are kept out of especially leadership positions because it's viewed that the only way to be a leader is to be a leader in sort of a standard masculine way that we think about it as being gregarious and loud and, and You know, always proselytizing what they want to do.</p>



<p>And they're great. They're great voices in the room. There's a bumper sticker I've had for a long time that says speak your voice, even if your voice cracks. Cause it's this thing of like everyone has their truth and, and when you get people like me that love the sound of their own voice, I can drowned out the people that have great ideas.</p>



<p><strong>Jon: </strong>[00:16:51] Yeah. Yeah. Well, and there's a balance to that, which you've done is you're using your voice to give other people a platform. Which is, you know, which but, but you're right. That is, I mean, we're, we're on a podcast and we're all, you know, white men and, and it's, it's, you know, it's always like a, a trade-off.</p>



<p>Did you, so you had previously done a hello world podcast where the two related to the podcast kind of turned into the film a bit.</p>



<p><strong>Shawn: </strong>[00:17:21] It did. So the podcast was about how people got started. And I think you were on it, John, if I remember. Right. And we stopped after 80 or 90 episodes of, because we started to get the same stories over and over again. And that gave me this idea of like, Wouldn't it be great to show the different, those stories that I was finding in the podcast, but you'd be able to tell a larger story about how great it is to be in this industry.</p>



<p>Because one of the things I get a lot from people is, Oh, I couldn't do that. I was never good at math, or I can't do that because I'm not smart enough or whatever the case may be. And. I kind of want to burst those balloons as well. That's one of the other goals of the film that has stuck with it, even with the pivoting is we can solve this if we are more you know, accepting or if we don't, you know, hammer people with math right away.</p>



<p>I was talking with John Romero of, of doom fame. And he was like, you can learn all the math if you want, but the computers do all that stuff for you. If you just want to have the, you know, the character look into the camera, you just tell it to look into the camera. You don't have to figure out how to do the, the three dimensional matrix mass to make it work.</p>



<p>You know, that's where we're at as an industry. And so bursting some of that like elite ism about what software really is. There's tons of jobs in software that aren't. You know, working on AI or working in machine learning or working in 3d engine development or things that would be great for all sorts of people to do.</p>



<p>And, and so I've liked, I'd like that sort of democratization of, of software because of that. I want, I want us to lower the, the lower, the barrier of entry a little when I was talking with Harvey Mudd college. One of the things they did was that they changed the entry level computer science course to be Python versus Java.</p>



<p>And this isn't new versus old, nearly as much as is ceremony versus not ceremony. Right. You can run one line of, of, of Python code and get a result. You can't do that in Java. And so what it was doing, or at least what they discovered was happening was people who had played with programming in high school or taken the pre high school courses.</p>



<p>They came in ready for that. And then you have these other people who were like, well, they came to college to learn a skill, not to learn more about a skill that I already had. And they felt like they were immediately behind and more apt to change their majors and get out of it. And Maria Klawe who's the president of Harvey Mudd was talking about, this was a big change when personal computers came into the home.</p>



<p>But because before then you went to college to learn computers. You didn't have any expectation that you had knowledge before that. Right. And so, and it tended to gravitate more towards boys because computers were capable of computer games and tended to hog those computers. And so this is sort of this societal shift that happened, these great things that happened with computers, but it also has some unintended consequences we think.</p>



<p>Cause it isn't, it also, isn't just about bias. It's about interest. You know, how do you get people interested in what looks like? What we, what we, what the media of our country at least does is tell the story of what a software developer looks like. And it looks like the guy in Jurassic Park that we all identify as a computer guy or Silicon Valley, or Big Bang Theory.</p>



<p>And, and who wants that? Like the only. Early on in big bang theory, the, they played up, this men are smart and there's the dumb blonde across the hall. And then they tried to sort of solve that by bringing in other characters, but from the outside, especially when you're growing up, that imprint you with what you think you're where you're supposed to do and where you're not supposed to do, you know?</p>



<p>And there will always be those outliers that are like, I don't care. I love this. I'm going to do it, but that shouldn't be the way it is, you know? Most of the women that we interviewed for the film are very self-assured capable and you know, pillars of this community Julie Lerman and, and others but getting people who are just the day-to-day developer that also fit into those situations is just, it's just baffling that we, I feel like as a society we've kept them out just because we didn't go.</p>



<p>There's the, you can't just make D&amp;D character generators with programming. You could make music, or you could make, you know, things that might appeal more, more to women than, than sort of geeky guys in their basement. And you know, I want to burst that. I, I dropped out of high school and college.</p>



<p>Like I should not have been successful in this career at all. I came from a very poor background. I was very lucky to get a computer when I was a kid by cause I got an a go-cart accident and suddenly we had some money from the thing to buy a computer. Like this is not the standard thing, but once I started working, I would show up and I would get the sort of privilege of "You look the part". Yeah. You know, there used to be this idea about team fitness. Like, are they going to fit in with us? Well, that idea of are they going to fit in with us? You know, the culture of our company tends to mean that, you know, when you see someone that doesn't look like you are, are they going to get hired?</p>



<p>Right. Even if they seemingly have the same skills, I think it can fall down really quickly. I remember being interviewed a bunch of times and, and was, they were always like, Oh, it looks like you'd really fit in here, which I didn't realize was, was implicit bias, like this hidden bias in our brain.</p>



<p>And I have bias in my brain. I think we all do. What's that song from Avenue Q everyone's a little bit racist. In case you haven't seen it yet, you should. But the, the trick is not acting on it, right? When my reptilian part of my brain, that there's a black man walking behind me and I'm like, Oh no, I, I can't act on that.</p>



<p>Right. When some, when I see a resume and it's a name that I identify as a certain culture, or is a woman, I can't take that into account. I have to assume. And sometimes it takes explicit work to get rid of implicit bias us pretending that we're the least biased person in the room. I don't think helps.</p>



<p><strong>Jon: </strong>[00:24:08] Yeah. Wow. You covered a lot there.</p>



<p><strong>Shawn: </strong>[00:24:11] Sorry.</p>



<p><strong>Jon: </strong>[00:24:12] No, no, it's it's, this is fascinating. It's interesting. One thing earlier you were speaking about, you know, women and they're what draws them to programming and seeing themselves as, as programmers. And it's interesting for me seeing through the perspective of my three daughters and two of them right now, like regularly our programming and all of them. I've shown a little bit of like, here's what it's like, but it wasn't interesting to them at all. I mean, not really, you know, but then, but then, but so my youngest got into Jewelbots because of the work Sara Chipps has done. And she has, you know, two things that that she did that are smart is one she understands and spend a lot of time talking to young girls about what was interesting to them and realizing like, okay, software bracelets and do it. But another thing she did that was. Really smart. And I don't think people notice enough was she created a community. They had a, a forum have a forum and they like are really welcoming and they have Jewelbots ambassadors, and, and it's just super friendly, you know?</p>



<p>And so people would say like, Hey, I made a thing, check it out. And you know, a bunch of other, like, you know, young girls are like, Hey, that's awesome. I love it. You know? And it's like, super, like, you're part of it. You're welcomed and accepted and, you know, helping people out. And another thing that's, that was interesting to me is my oldest now is minoring in computer science in college.</p>



<p>And she, I showed her some computer stuff early on and she never thought it was cool. Like, it was just like that's for dudes, you know? And then she, she ended up taking a class kind of on a whim. She took a Python class and it was sort of a fun, you know, it was like, Oh, I have to take one, whatever math, science class or whatever it was.</p>



<p>And this fulfilled it. And she was shocked that she liked it. And she was like, this is really fun. And like you said, it was Python. She did, they didn't throw her into pointer, arithmetic or any crazy stuff like that. It was just like doing some fun stuff with Python in a browser. Like it was all REPL in a browser. So it wasn't all this, like let's over nerd you from the beginning, it was like, you know, Hey, it's, it's fun and playing kind of fee</p>



<p><strong>Shawn: </strong>[00:26:25] it's really interesting. Cause we we interviewed someone from Georgia tech and she was talking about the Georgia tech requires all graduate all, anyone that goes to this school to take a computer science course and they. And she noticed that a lot of women took it in their fourth year.</p>



<p>And by time they figured out they liked it. It was too late to change their major. Because there's this expectation that it's hard or it's going to be a boring course, or they're not, you know, all those same things that w we sort of think about, you know, and, and that's going to be true across the board.</p>



<p>I had to take an economics course that I still, I still use that economics book to to fall asleep at night, you know, two pages of economics and I am out.</p>



<p><strong>Jon: </strong>[00:27:11] Yeah.</p>



<p><strong>Shawn: </strong>[00:27:14] So I mean, I think changing some of that and some of it is being able to see and model yourself as it in and in other ways You know, making it to where you can realize it's fun.</p>



<p>It's not like people that get started with Python need or will stay with Python and do this sort of like, you know script programming you know, once you get them interested, then everything else, you know we're all gonna learn, you know, 14 languages in our career and decide some are great and some aren't and, you know One of the things that Maria Klawe at Harvey Mudd said that really concerned me was she said, you know a lot of it happens in high school, the kind of high school preparation that prepare women and people of color to go into, let's say the top computer science colleges in the country is very different based on economic situations.</p>



<p>You know, lower Alabama is much different from from San Francisco, right? Just the economic situation within a city or with where you're at in the country can really make a difference in what she said. That really bothered me. He said there's about a hundred thousand women every year who are qualified to go into an MIT, a Harvey, Mudd, a Stanford or whatever.</p>



<p>And there's about a hundred people of color. A hundred versus a hundred thousand. So I, you know, I think we conflate diversity with women in the software industry really easily without really thinking about the other aspect, which is where are all the people of color, you know? It, it, it it's, and I've worked with some African-Americans or I guess I should say black now.</p>



<p>But black developers before, and they were great. And again, they bring different perspective and they, they do this, but it. It tends to be that they're never thought of as the lead. We talked to a couple of people here in Atlanta that were like, I go on a consulting gig and I talk to people and they defer to the white guy because they assume that they're the lead developer in, in this project.</p>



<p>And that's frustrating. Like, there's just this expectation. We do this little test. In the in the film where we show a clip from Jurassic Park and ask people to think about what a developer looks like. And then we tell them, you know, is it, is it the white guy? That's part of your brain, the Unix system.</p>



<p>And then there's a pan over to Samuel L. Jackson. Who's also running computers and he's a head of the it department in drastic park that no one remembers no one remembers.</p>



<p><strong>Jon: </strong>[00:29:54] Yeah. Wow. Well, and then also just the day is saved by the young girl at the end. Right. That happens. I know Linux. This is</p>



<p><strong>Shawn: </strong>[00:30:03] Yeah, yeah. But no one remembers that. And so, you know,</p>



<p><strong>Jon: </strong>[00:30:08] I seriously had no idea. Samuel Jackson was in that. Wow. It's been a while.</p>



<p><strong>Shawn: </strong>[00:30:13] It has, but you know, there is something important that we need to talk about. You have a daughter in college.</p>



<p><strong>Jon: </strong>[00:30:20] Oh my gosh. Yeah. I have three teenagers. Yeah. Yep. Time flies. She actually, she had gotten accepted to Berkeley, decided to start at community college instead just for, for costs to get general ed done. And the timing was right. You know, it was right with COVID and everyone's taking class from home anyways.</p>



<p>So it ended up working really well for her,</p>



<p><strong>Shawn: </strong>[00:30:45] Oh, that's awesome. And she gets to stay home.</p>



<p><strong>Jon: </strong>[00:30:48] yeah, yeah. So</p>



<p><strong>Shawn: </strong>[00:30:49] cause you're in LA, right?</p>



<p><strong>Jon: </strong>[00:30:50] I'm in San Diego,</p>



<p><strong>Shawn: </strong>[00:30:52] Oh, San Diego.</p>



<p><strong>Jon: </strong>[00:30:53] which, you know, it's part of the LA metropolis, so</p>



<p><strong>Shawn: </strong>[00:30:56] We call it the other LA</p>



<p><strong>Jon: </strong>[00:30:58] yeah.</p>



<p><strong>Shawn: </strong>[00:31:00] or</p>



<p><strong>Kevin: </strong>[00:31:00] Excuse me. I, I grew up in San Diego. It is not part of LA. I take offense to that.</p>



<p><strong>Jon: </strong>[00:31:07] Yeah, no, it's it's it's yeah. You know, it's interesting. You were mentioning before Black developers and not, and being invisible or being, you know, not being noticed and also not being respected. And, and, you know, also there's society, I've heard definitely many times where like, there'll be a man and a woman at a conference.</p>



<p>I hear this all the time at work and people will always talk to the man. And he'll say, why don't you talk to my lead and the introduce the woman. And they'll still want to talk to the man, you know, they assume that leadership role. And yeah. When you were talking about, you know, the black developers and I, I had the opportunity to kind of help behind the scenes at JuneteenthConf this past summer.</p>



<p>Yeah, it was, it was amazing, you know, it was something that timing, they put this conference together. Right, right. Before Juneteenth, they really pulled it together. One of the sessions I helped. You know, like behind the scenes was was by the two guys that created Blackfacts and it's so Ken Granderson and Dale Dowdy, and they, I had no idea about this because it wasn't created for me, it was created for, for, for the black community.</p>



<p>And it really kind of celebrates like you know, the, the black software developer, like, you know, Hey, we're here. And we basically, I guess some of this goes back to thinking of what Sara Chipps did with creating a community that's welcoming and inclusive for young girls. This is a community that's welcoming, supportive, and celebrating black culture for black technology community.</p>



<p>And I think, you know, like, I, I don't know. I, I think that it, it was exciting for me to even hear that this thing existed and I did you come across like support mechanisms like that, or other kinds of like, you know, internal support cultures that women or underrepresented minorities are like creating to survive, you know,</p>



<p><strong>Shawn: </strong>[00:33:11] Yeah. There's quite a lot, you know, if you can think of organizations like black women code, black girls code there's a the black coders internationally think, I mean, there's a bunch of great organizations. Some of it, some of it I think is important to think about as it's not just culturally sort of surrounded by race, but it's also a different in, in I think I mentioned this earlier in how much in affluence we have this sort of affluence bias in software and not affluence bias. Like people are only picking other people that have money. It's that.</p>



<p>There's an, there is an on-ramp that has some cost to it and our public schools aren't evenly funded and things like that. And more importantly, we talked to code.org about this thing they're doing to try to educate or convert teachers in high school to be able to teach the AP computer science curriculum that they've developed.</p>



<p>So it's not even, we're not even at the point of like, how do we teach and get kids interested because we don't have the teachers to even produce that interest. And that's frustrating when you, when you think about it, because one of the, you know, I grew up in abject poverty.</p>



<p>I was born in Manhattan, but I grew up in the Bronx. I'm sorry. In Brooklyn, in the projects in Brooklyn. There's, there's the word. I was looking for the projects in Brooklyn. And so we were on welfare when I was born and my mother did some pretty heroic things that get us out of poverty, but we were never, we were never had that much money.</p>



<p>And this career has been life-changing and one of the things they talk about is for non-affluent neighborhoods , this is a generationally changing profession. Like this will, this can bring up the entire families out of poverty. And it's just knowledge. It's not about skill. It's not about having things. It's just knowledge, especially now with the internet and ubiquity of, of, of lower-cost computers. This, this can change everything. When we talked to the chancellor of UC Davis, he was talking about, we have about. Well, this was before COVID, but we had have about 3 million people unemployed, many in the underserved communities. And we have about 3 million unfilled jobs and computer in, in, in tech. And if we could marry them...</p>



<p><strong>Jon: </strong>[00:35:36] Yeah.</p>



<p><strong>Shawn: </strong>[00:35:37] Like it it's baffling. How, you know how obvious it seems. You know, and, and computer software, isn't the only place where this has happened or the only place where there's bias like this.</p>



<p>This is just the one I know, right. Because it was, it was my experience going to conferences or going to user groups and seeing women at those events and going, Oh, look, there's recruiters here. Right. It was me having to face and accept that I was part of the problem. Even as enlightened as I thought or expected myself to be looking back, I was like, Oh, I, I have to take some time to look in the mirror and just, and just face up to it. And that, you know, I think that's a big reason why the, the pivot happened was I wanted to get other people to look at themselves and maybe they don't ha they didn't do any of these things, but. If we can have a chance of sort of having that reckoning of like, you know what, I'm not going to go by a resume just because I see a name that's clearly not a white guy's name.</p>



<p>Right. I see that. I see that happen, you know, more often than I than I'd like to admit, you know</p>



<p><strong>Jon: </strong>[00:36:56] I've read some stories on this that are just like, not surprising, better. Like there've been studies where the same resume was submitted with a white man sounding name and then a ethnic minority name and the callback evaluation rate,&nbsp; it was a significantly higher percentage, the exact same resume.</p>



<p>And then another fascinating thing I saw was there was a there was a man and he had&nbsp; a woman assistant. And she would always have problems with, you know, getting replies on emails and getting meetings scheduled and things like that. And he, he just assumed, you know, like, okay, well she's learning or whatever.</p>



<p>And then something happened where she was on a vacation and he answered her emails and was shocked at the rudeness and the disrespect that just because he was sending emails from. And so he then he you know, they did a test going longer where, you know, they switched emails and, and, you know, and then the one other thing I've heard is there have been several women I've read that have created a fake coworker that's a man. And they'll have the co-worker reply to emails and, and get stuff done. And it's just like, yeah.</p>



<p><strong>Shawn: </strong>[00:38:12] I, you know, I hope at some point that's not necessary, you know, that's that, that for me is ultimately the goal. One of the other things that I wanted to mention before, I know we're running a little late was w. There was a bunch of history that I didn't know about. And I talked a little bit about the women being the first developers. But the other thing I didn't realize was how pivotal African-Americans were in the early software movement. Like the, the first 3d engine that was ever developed was developed by the first masters of computer science graduated out of Stanford. Right. We don't think of the fact that we have CGI in every movie as being really responsible to this person of color, the guy that invented the game cartridge for the original before the Atari, I can't remember the name of the machine, but that said we should, what games and cartridges that was a man of color as well. the, the third partner in the creation of Hewlett Packard. Was a, a man of color though. He wasn't Hewlett or Packard. Right. He didn't get his name in the, in the masthead, but he was the one who found all the money to start the company. Yeah. Yeah. And, and there are dozens and dozens of those stories. And Latinx is we're in a very similar case with Latinx people as well. Cause it's when I say people of color, I don't just mean. American black men and women. I'm also talking about Latinx, you know, I think a lot of times we feel like we have a diverse culture because we have East Asians in development roles. Like we're fine. We shouldn't worry about diversity because we have non white people in it.</p>



<p>Well, you ha that's not the same, you know, there's one of the reasons I, I think about the number of American woman I've worked with because I've worked with a lot of Chinese and Indian and Japanese women before, but this realization really started with the idea that I had never worked with an American woman as a developer, never in 30 years. And that's astounding to me that. That it didn't even occur to me. Like it wasn't, like, I knew that like where all the, I just didn't, it didn't occur to me that, that, that was the case. And you know, you want to know where they were, where they all went. Because England has a very similar history.</p>



<p>You know, they're, they're, they're very different, but very tied together and sort of the same things happened in the same era as the seventies, as world, when all the women went away and got taken over by man and all of that,</p>



<p><strong>Kevin: </strong>[00:40:53] One question that I'm, I'm not sure I'm going to express this question well, so forgive me, but you know, one thing that I, as a privileged white dude. You know, sort of worry about is that, you know, me speaking about racism or sexism, like comes from you know, I don't have the experience. So me talking about it is a little dicey. Like, did you, did you sort of have any concern about that then? Like you're making this movie, you know, centering these people, which is great. I'm not a criticism, but. Like, you know, that, you know, you're, you're, you're you as a white guy, you know, presenting these people, like has a, I don't know, it seems like it could have some inherent sort of risk to it.</p>



<p>You know what I'm saying?</p>



<p><strong>Shawn: </strong>[00:41:46] Huge. Yeah. That's a great question. And it's absolutely true. You know, I've had the conversation with my wife more than once is like, this movie might end my career. Like I might mishandle it because part of it is I want to present it. I want to be honest about my experience. You know, so admitting when I've been wrong without necessarily going everyone's awful. Like I, I never wanted to be, and I hopefully, hopefully it isn't sort of this gotcha journalism, like look at this company or that company. That's not what it was about. It's, it's about trying to get people to look at themselves. But also at the same point at the same place, I never want to have that feeling of white savior.</p>



<p>Like I'll fix it, you know? What you really need here to fix racism as a white guy. And it it's a thin edge to to navigate. I think sometimes when I I had talked about to the .NET Rocks guys about two years ago about doing a talk about it. And there was like, it doesn't feel like we're the right people to talk about it, but it feels like, because there's so many.</p>



<p>There's so many people that look like me in the industry, that if I can get some small percentage of them to start realizing their implicit bias, that we can improve this and that. I can't pretend to understand or explain the experience of being a woman or a person of color in this industry and what that means and how difficult or, or any of that.</p>



<p>I can't pretend to have that experience. I can admit and be honest with the experience I've had as, as maybe turning away some people that I shouldn't have when I was sort of in the hiring space or that treating women differently at conferences or, you know, assuming someone had less experience because they were a woman or a person of color or, or didn't, or didn't use English as their first language.</p>



<p>Like all of those things I've been guilty of. And I think these microaggressions are something that I want to solve. I want to fix for myself. And if I can get a couple of people that watch the movie too, Think about the way the interact with other people a little differently than I've succeeded. I'm not going to fix this, this isn't going to go away tomorrow.</p>



<p>But I think that our industry can be better served. By having more people that are diverse and having the people that are in it, not feel threatened by the fact that, Oh my God, I'm going to lose my job because now they have to have a quota of 20% women on every thing. Well, if you were going to lose your job, just because they were being more inclusive, you're not very good at your job.</p>



<p>Like the people that are worried about competition. I'm not sure they should be in the business. Like that's kinda how I feel is like, if you're concerned that, you know, adding more people or having younger developers come in or having whatever it is, you know, the chips fall where they may is kind of how I feel.</p>



<p><strong>Jon: </strong>[00:45:02] if the only reason you have the job, your job is because of implicit bias and you know, like your privilege then. Yeah, exactly.</p>



<p><strong>Kevin: </strong>[00:45:12] And that's especially absurd in this particular industry, which</p>



<p><strong>Jon: </strong>[00:45:15] Where there's so many unfilled jobs too,</p>



<p><strong>Shawn: </strong>[00:45:20] Yeah. If you can't find a job, you know, I worked for a company years ago and I won't mention them, but there was a guy that worked with me. And this was around 2002 and he had stayed with that company for 15 years, which meant he went through the dotcom bubble without taking a, another high paying job.</p>



<p>And I knew at that point, if you didn't get hired during the.com bubble, they were literally taking anyone who had edited their MySpace page in HTML and hiring them.</p>



<p><strong>Jon: </strong>[00:45:54] Yeah.</p>



<p><strong>Shawn: </strong>[00:45:55] That something was wrong. Yeah. So Yeah, I don't, I don't have any, I don't have any patience for people who want to hold onto their jobs or, you know, programmers that put in obfuscate their coach, or they're the only ones that can understand it or any of the sort of bullshit.</p>



<p>I think many of us have seen over the years with people that were insecure.</p>



<p><strong>Jon: </strong>[00:46:16] Did you as part of this, like a lot of this is just letting people tell their story and like choosing the people. Did you. Like have advisors or like, you know, I don't know, read books or like, you know, do things to kind of educate yourself on, you know, like on any, because there's there's background and historical things and there's whole study of, you know, racial injustice and all these sorts of things.</p>



<p><strong>Shawn: </strong>[00:46:44] Yeah, the first year was almost all research. Before I even interviewed anybody because I really wanted to understand the problem. And I did some surveys to try to get people to, you know, anonymously tell me sort of what their experience was and had, you know, one of the questions I had on these early ones that really bothered me, that I got such high response.</p>



<p>I think I got 40% response of people saying that they had witnessed sexual harassment in the workforce. And didn't do anything about it. Right that they weren't, that they didn't maybe do it themselves, but they saw other people do it and they weren't and they couldn't go that's bullshit. you know what I mean?</p>



<p>Because they wanted to fit in and whatever the, you know, they're, that's a difficult thing to do, but I think it's one of those things. So I read tons of studies and a number of books. There's a great book about the history of software development in. The United States and another one in for the same story about England.</p>



<p>And I think, I, I'm sure I'm going to get this wrong, but I'm pretty sure it's called computer in the boy's room. I'll get a link to the correct one, but it's a really eyeopening talk about the beginning of computers. In the thirties and forties and all the way up to sort of the present day and, and, and what, what the reasons were and how the reasons were.</p>



<p>One of the things that surprised me is like Cosmo magazine had an article in it about how programming was a great job for women because It had high pay and women were really good at it and all this other things. And then literally 10 years later, and we were down to 10% women. it just, it changed so quickly.</p>



<p>When we talked to some people at Georgia tech, one of the things they said was it's a very Western problem. If you go to Indonesia software programming is considered women's work. And why is it considered women's work? It's inside you sit down. It's not dangerous. Right? Men's work is outside dangerous.</p>



<p>Physical work. And so there's just an assumption in other cultures that this would be normally a woman's job. And in fact, the first eight programmers that were women, it was from merely thought of as women's work, because it was seen as not as important as designing the hardware. That it was just rudimentary and such.</p>



<p>And, and I think that because early programming looked like switchboards, it was mostly patch cables that, that lended itself, Oh, you're just a secretary. You can do programming. Which of course makes the whole irony of 40 years later writing that w all the secretaries should be able to write software one day article I think by Mary Jo Foley I thought it was kind of a funny book end to that because lowering the bar to computer programming.</p>



<p>So even a secretary could do it, which is, you know, has its own biases in it. but it it's fascinating how this stuff has changed and how we, you know, traded in. In how to figure out how to, what, what is a good program or look like. And I think we're still battling with that. Like we can teach skills, but how do you find those people that are good at those material tasks that isn't about writing code?</p>



<p>I mean, in a lot of ways, this is the same barrier that we have in hiring. How do you find people that will be good at programming and having them, you know, Reordering linked list on a whiteboard, isn't it. Right. I think we all know that asking them how to you know, how would you count the number of, of, of manhole covers in the world?</p>



<p>Like that doesn't really work either. Right?</p>



<p><strong>Jon: </strong>[00:50:30] Yeah.</p>



<p><strong>Shawn: </strong>[00:50:31] And part of this is us still trying to figure that out.</p>



<p><strong>Jon: </strong>[00:50:36] They're questions that we ask, because they're easy to ask. Like, I experienced this with tests that my kids take or assignments my kids take. It's like, Oh, the teacher is asking this question or having you do this project because it's easy to grade and we do the same sort of thing. Right. You know, like it's, it's easy for us to grade a reorder a link list, but it has no value like.</p>



<p>You never write that code yourself, you know?</p>



<p><strong>Shawn: </strong>[00:51:03] No. And even if you did. You know, you would be able to look up the 34 examples to pick one. That was a good model of it. Like it just, it doesn't represent what we do.</p>



<p><strong>Jon: </strong>[00:51:15] Yeah. You know, part of what you were talking about and, you know, trying to like, as, as we think of kind of like, as, as we wrap this up, I'm thinking about like, what are the solutions and things we can take forward? One thing that I've experienced is the whole value of positive role models and , you know, there's, definitely&nbsp; giving people a platform when possible.</p>



<p>And, and, but I think also there's an important thing of just allyship and I, until you, like, until I've done more of this, I had not at all realized some of the things you mentioned before about how the, the difficulty that people experience. Basically every woman that I have worked with that speaks at conferences that you know, is, does, you know, video programs and all that.</p>



<p>They all experience. Harassment that is stunning. Like it's just terrible and you just wouldn't, you don't know it until you work directly with them. They're not going around talking about it. Most of them, but every single one, like there's not a single, you know, anytime, anytime it comes up, they all.</p>



<p>And so it's frustrating, but then, like the only thing I can think of on there is just allyship and supporting them and. Helping, you know, swat the crazies away is, is there, is there a more, you know, what are like, and we've covered a little of this, but what are some positive things that people, you know, you start with education and empathy, and then what else can we do going</p>



<p><strong>Shawn: </strong>[00:52:48] think w for me, and again, this is a pretty personal movie because I can only know what I can and what I'm willing and able to do. And for me, the biggest thing I can do around sexual harassment is to be not just an advocate like, Oh, that sucks. That that happened to you. But like when you see it go, that's fucked up, Bob, right?</p>



<p>Because that's, that's what it takes. We can't be afraid of upsetting upsetting people we work with because it is, you know, we're actually in a career where we could change if we need to. Right. If we get fired because Bob's pissed off at us and happens to be our boss, I'm kind of okay with that because ultimately letting other humans be belittled is isn't anything I want on my conscience.</p>



<p><strong>Jon: </strong>[00:53:35] Hmm. Yeah. Yeah. I feel like you know, it's, it's hard to understand. Cause there are people be people that you would think, you know, are generally like you respect professionally and then you see them pushing back. And I think some of it is that they interpret, you know, any kind of social justice, warrior stance as attacking them.</p>



<p>And, you know what I mean? I'm putting a bunch of guilt on them and I, I feel like some of that is not it's, it's, it's coming from a different place, but it's hard to describe, you know what I mean? How do, how do you talk to somebody that's like, Oh, you're just being a social justice warrior and virtue signaling and that sort of thing, you know?</p>



<p><strong>Shawn: </strong>[00:54:22] it's a hard conversation. I've had it a few times, honestly. And. The way I approach it is, you know, there's there's benefits here beyond the beyond maybe what my notion of right or wrong is. I want these people in these jobs because it lifts, you know lifts everybody up. It helps me learn every day.</p>



<p>Cause that's my job as a software developer is to learn every day. Like there's something new to learn. And if that learning is how someone else experiences the world or how someone's culture could impact the way we write software or whatever that is, I have to take that into account. And so it just feels like a cop-out.</p>



<p>Frankly, when I hear that, like, Oh, you're just trying to save the world. Well, okay. I'll take that on. You know what I mean? Like I want to leave the world a better place than, than I found it. And, you know it's just one of those things that, that I'm willing to take on because it's not, again, it's not just about trying to be social justice warrior, you know, though, honestly, I've been called that more than once, but it's also feels like, something that will better our community. And I want that I really, really want that, you know, when I go to a conference in the after hours hanging out in the bar and it's 10 white guys talking about&nbsp; how to optimize memory. I'm going to my room cause I'm bored. Right? But having people from a whole slew of different backgrounds and experiences that interests me way more than any other conversation we're having. You know, and everyone has those, but because we have this common language, we fall into it. And I that's why this, a lot of this feels implicit. Sure, there is explicit sexism and racism in every industry and should be fought against and&nbsp; we should fight it. But I think the bigger problem for our industry right now is&nbsp; not realizing that there's a problem. Like thinking everything's fine. Our companies making money. I'm happy. My wife's family, I just bought a boat. Like, yeah, but it could be a lot better. Like it, you could be really happy in your job. Not just happy because you bought a boat.</p>



<p><strong>Jon: </strong>[00:56:50] As you're saying that I'm realizing a take on this too, is it's not about. It's instead of making it all about me. Oh, when I hear you, you're when I see this film or when people are talking about this, you're attacking me, take yourself out of it for a second. This is about somebody else and you should care about them.</p>



<p>Just listen to their story. Understand what they're going through. Take yourself out of the equation for a little bit. You know what I mean? And then what do you, where do you go from there? You know, it's like, Oh, this sucks. You know, these people, this person is, is intelligent. Could totally do this job. Could, you know, like it would benefit their entire family. They would benefit my team. Why not? You know, like, why not help them? Why not give them this opportunity?</p>



<p><strong>Shawn: </strong>[00:57:38] Yeah. I'm I'm, I'm totally on board with that. Cause it I'm gonna use a really bad analogy and feel free to cut it. But sometimes in the software industry, it feels like racism in the North of our country. So I live in Atlanta, part of the South. We turned to blue by 1200 votes and I'll take</p>



<p><strong>Jon: </strong>[00:57:58] one.</p>



<p><strong>Shawn: </strong>[00:57:59] worth of credit.</p>



<p>Yeah, me and my wife. thank you. But I prefer racism in the South. And that's kind of a weird, stupid thing to say. But when I lived in Boston and when I've, I've lived in the North, before it took me six months to find out somewhere there was a racist, whereas down here they've got the flag and they've got the bumper sticker and, you know, I can just avoid them. not that I finally get invited to your home and you tell a joke that. Clearly is not a joke. And I certainly don't think it's funny to find out that I have to get you out of my life now. Right. And so I think that happened some in software that we want to put up this front of being we want everyone in, but then when it comes down to it, sometimes we, we have those biases that we don't want to face.</p>



<p>We don't, we each have sure that shadow in our personality that. Is sometimes hard to, to look at. And I think it's better for everyone eventually, if we sort of confront that, it's just like just like the arrogance in our industry almost entirely. I think arrogance within some developers in our industry is masking them being afraid to be found out and imposter syndrome. Like it, it's a common way to cover that once we acknowledge that and go it's okay, you don't have to know everything. Relax. And I think that same thing can happen with this of like, yeah, your first instinct wasn't to hire this person because they didn't have the first name you expected, but look at their resume, you know? Thankfully in this country is different than Europe, Europe, almost all CVS or resumes have their picture on it. And I'm just, just it's. So it's so uncomfortable when I see a European CV. I'm like, is this cool? You sure?</p>



<p><strong>Jon: </strong>[00:59:50] yeah, yeah. Hmm. Okay. So as we wrap up, we have focused on obviously the most important part, which is the subject matter of the film, but I want to just briefly talk about like, okay, so the film itself, so it's, it's available on streaming platforms and, and like it's being released December 15th, does that right?</p>



<p><strong>Shawn: </strong>[01:00:12] It is, we just started pre-orders on iTunes in North America. You can go to will a hello world, film.com and see that link. And then on the 15th, that'll be releasing on 18 other platforms. I think it's 18. It might be 15. So you you'll be able to get it in pay-per-view or purchase it on Amazon iTunes, Vudu Xbox, Google Play Store, et cetera. And a bunch of cable providers. And then we'll probably expand that internationally within the next three months, we're working with a partner right now that is going to get it on some stores in Europe and in Australia in some parts of South America working on translating those things right now.</p>



<p>Yeah. And so it'll be expanding out to different markets as we go, but we're starting with North America because that's what my distributor told me to do.</p>



<p><strong>Jon: </strong>[01:01:03] Okay. Well, one one final thing just as we're talking about, that is the whole kind of getting in streaming platforms, especially during this time of COVID. When the industry has gone through some big change, the whole film industry has had to go through big change. What was that all like?</p>



<p><strong>Shawn: </strong>[01:01:20] Crazy. You know, I sometimes I'm like, you know, I can see what's wrong with our industry, but trying to get into film. It's, it's weird. It's been a very big learning process, but luckily I got picked up by gravitas ventures who does a lot of documentary distribution. And so they sort of handheld me through a lot of the process.</p>



<p>And that was. I finished the film December 31st, last year. And so the process of finding a distributor and getting it out there. Is is way longer process. Like every time I thought, Oh, wow, we're finished filming. We're almost done with the film. And then it took another year to cut the film. And that was like, Oh, finally, the film is done.</p>



<p>And they were like, it's not now you have to figure out how to get it out to people. So it's all been incredible learning. I'm actually about to start a YouTube series on my. YouTube channel about how I made the film and just sort of share a bunch of this information I've had because you know, none of it's proprietary to me.</p>



<p>But I feel like there's a lot that, that I've learned and right now is sort of a magic place in documentary it's, it's, it's very available to a ton of people. You can shoot a documentary on a iPhone and that's good enough to get it out there because it's much more about content than. Then sort of the technical ness of it.</p>



<p>So I'm, I'm hoping to share everything from the pre-production all the way through the distribution, everything I've learned in budgeting and hiring people and finding building a team instead of trying to do it all yourself. And you know, this all started because I got bored and I wanted to learn something new and I accidentally made a film.</p>



<p><strong>Jon: </strong>[01:03:10] That's a problem computer people seem to have all the time. It was like, Oh, let me check this out. And yeah.</p>



<p><strong>Shawn: </strong>[01:03:15] And then suddenly you have a startup</p>



<p><strong>Jon: </strong>[01:03:20] Wow, this is fascinating. Well, I'm the area that I was sad I didn't have time to ask about was all this, how do you make a film and all that? So I'm glad you're creating that YouTube series. That'll, that'll be interesting to follow and there's a lot more than fits into just one podcast anyways, there. I'm sure.</p>



<p><strong>Shawn: </strong>[01:03:37] Yeah, that'd be great. I if you go to wildermuth.com, that's where I'll be announcing the web series. Once I get a couple episodes in the can in case people want to know,</p>



<p><strong>Jon: </strong>[01:03:45] Okay. Great. So HelloWorldFilm.com. People can go and pre-order now, and then it's available on tons of streaming platforms and cable on demand. Congratulations for that. So that, that is really, really cool. I am. And the trailer is amazing. I can't wait to see the actual film. So, and then I guess one last question is audience. I mean, we're, we're software developers, but it seems like this is something that has broader application. Who, who is this film for?</p>



<p><strong>Shawn: </strong>[01:04:15] It is for a general audience. It's it's justice. It's just as much for people that don't know anything about software as it is for people in the industry. I think people in industry will be interested in sort of seeing their part of it. But a lot of the film is encouraging people who aren't in it to give it a shot.</p>



<p>And the goal of the movie was that you could take a software developer and their mother, and they both get something out of the film and the trouble with that was during the interviews, getting us technical people, not to throw around acronyms. So that was one of the more difficult pieces.</p>



<p><strong>Jon: </strong>[01:04:50] Nice. Nice. Great. Well, this is amazing. I can talk about this all day. But I can't wait to see the film and congratulations again for that.</p>



<p><strong>Shawn: </strong>[01:04:58] Thank you so much, Jon.</p>



<p><strong>Jon: </strong>[01:05:00] Awesome. All right, go ahead. And Kevin, you can say, yeah well,</p>



<p><strong>Kevin: </strong>[01:05:12] Very much so.</p>



<p><strong>Shawn: </strong>[01:05:15] I appreciate that.</p>



<p><strong>Jon: </strong>[01:05:17] All right. Well, that's all the time we have today on Herding Code. Join us next time. I wonder if it will be before 2021. Find out on the next episode of Herding Code.</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-243-Shawn-Wildermuth-on-the-Hello-World-Film.mp3" length="63027047" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 242: The COVID Cabin Fever</title>
    <link>https://herdingcode.com/herding-code-242-the-covid-cabin-fever/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-242-the-covid-cabin-fever/</guid>
    <pubDate>Thu, 17 Sep 2020 05:47:59 GMT</pubDate>
    <description><![CDATA[<p>Does time still exist? Maybe! Kevin, Rob, and Jon chat about some of the top concerns of our current time: Sourdough bread Wordpress and PHP No Code development Knock knock joke</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 242</strong></p>
<p>Does time still exist? Maybe! Kevin, Rob, and Jon chat about some of the top concerns of our current time:</p>



<ul><li>Sourdough bread</li><li>Wordpress and PHP</li><li>No Code development</li><li>Knock knock jokes</li></ul>



<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-242-Sourdough-and-PHP-and-No-Code-Dev-and-Knock-Knock-Jokes.mp3">Herding Code 242: The COVID Cabin Fever</a></p>







<div class="wp-block-group"><div class="wp-block-group__inner-container">
<p>Links:</p>



<ul><li>https://github.com/nushell/nushell</li><li>https://jeffsternberg.com/2020/03/11/beyond-spreadsheets/</li></ul>
</div></div>



<h3>Transcript:</h3>



<p><strong>Jon: </strong>[00:00:07] And hello, welcome to Herding Code. It is July 31, 2020 on the one hand. Holy cow. The year is like getting closer to done on the other hand. Will this year ever end?</p>



<p><strong>Rob: </strong>[00:00:20] Yeah, can the year just be over? Can we just be done?</p>



<p><strong>Jon: </strong>[00:00:25] Wow. Yes, it is.</p>



<p><strong>Rob: </strong>[00:00:29] I think I mentioned before the podcast that wasn't going to be salty. I think I lied.</p>



<p><strong>Jon: </strong>[00:00:33] Yeah.</p>



<p><strong>Kevin: </strong>[00:00:34] This is the bad place. The year will never end.</p>



<p><strong>Jon: </strong>[00:00:37] You know, on the one hand. So it was looking at it with since April, we talked last and we did the, Freaky Friday episode where we talked about the trading trading placces, Mac and Windows and all that. And then I was like, man, on the one hand has much changed. I mean, cause cause it's like nerds in captivity.</p>



<p>What do we do?</p>



<p><strong>Kevin: </strong>[00:00:57] It's not actually that different from nerds, not in captivity, sadly.</p>



<p><strong>Jon: </strong>[00:01:00] That's true. That's true. All right. Has anyone else, w we just, we have to cross this off the list who here has made a loaf of sourdough bread. Okay. I've made enough for everybody. I've made all the sourdough bread.</p>



<p><strong>Rob: </strong>[00:01:12] We just...</p>



<p><strong>Kevin: </strong>[00:01:13] ship it out, man. Send us some!</p>



<p><strong>Rob: </strong>[00:01:15] Yeah, I know. Wait, where's my, where's my bread, man.</p>



<p><strong>Jon: </strong>[00:01:18] Okay. So it was like after a while, I have three daughters and they're getting bored too. And so the middle one kind of gets into baking. So I was like, all right, let's try it out. You know? And then it's totally the nerd rabbit hole. Once you start it, then you're like, Oh, I really need a Dutch oven now. And now, now I need this, but it's pretty fun.</p>



<p>I halfway through, I really there's this website Breadtopia, and there's this no knead bread recipe. And it's actually like, most of the work like you do, maybe about a half hour of work, but it's spread over two days. So you could like go mix ingredients, you walk away for hours and then you come back and you'd like, flip it around and then you come back and then you put it in the oven and you walk away.</p>



<p>So it's a lot of walkaway comeback stuff. But the one thing I realized after a while is that. It was not very sour. And then I started reading and there was all these hacks you could do, but then people are like, you know, sourdough, you buy from the store has some sort of acid in it, citric acid or lactic acid, some sort of acid.</p>



<p>So I just started putting white wine vinegar in, and then I had to like, it messed with the chemistry and I had to change around the ingredients and stuff, but that totally worked. Then everyone's like, this is the best ever. So don't tell my family, I'm putting. White wine vinegar in the sourdough and we're all good.</p>



<p><strong>Rob: </strong>[00:02:35] Yeah. You know, it reminds me of making, cause you know bread and beer are very similar and yeah. And so I used to be a huge, I haven't brewed beer in a very long time, but I remember going to the store and they're like, well, you know, if you, if you can't get that bitterness, you're looking for here's some extract, you know, or if you can't get the aroma here, just drop a few drops of this.</p>



<p>It's you know, I like, wait, that's, that's cheating.</p>



<p><strong>Jon: </strong>[00:03:00] It's totally cheating. And yet,</p>



<p><strong>Rob: </strong>[00:03:04] Yeah. And yet, right. If the beer tastes good and people drink it and they like it. So who cares? I don't</p>



<p><strong>Jon: </strong>[00:03:09] that reminds me in a Malcolm Gladwell book. I forget what it was, but it was. One of these things where they're like, they did these taste tests and they had some kind of beer taste test and they put in, basalmic vinegar into some of them. And people like picked the basalmic vinegar is like much better beer and it like just had a few vinegar in it.</p>



<p>So I don't even know. Yeah.</p>



<p><strong>Kevin: </strong>[00:03:33] the most like San Francisco story, I heard. Through this COVID period is some, some dude was like going all over San Francisco, leaving sourdough starter packets, like randomly scattered around the city.</p>



<p><strong>Jon: </strong>[00:03:48] It's pretty amazing stuff. It's like, I've, I've seen videos. People take like completely like abandoned cultures that have been in the back of their refrigerator for months, you know, and they'll awaken it. And it's like, I don't even know. Yeah.</p>



<p><strong>Kevin: </strong>[00:04:04] Our version of it is we got an ice cream maker, which is even less healthy than making your own so we've been kind of experimenting a little bit, although we haven't gotten too crazy yet. So.</p>



<p><strong>Jon: </strong>[00:04:15] So I ran into Nik Molnar in the, before times in Montreal, I was at Node. What was it? Node JS Interactive up there. And, and I forgot that he is like, Crazy like trained chef, like really good. And so I was like, Oh yeah, I'm cooking some stuff for Christmas. He's like, you know, I told him and it was something like just simple thing, you know?</p>



<p>And he was like visibly disappointed. Okay. And I'm like, what are you doing? He's like, yeah, I'm just making ice cream. But he had like three different ice creams in each one had like a savory and a sweet component. And I mean, he had like, obviously planned out this very in depth stuff. And I was like, well, I'm sorry. But ice cream ice cream is</p>



<p><strong>Rob: </strong>[00:05:00] I, I had a really fun experience. I mean, I know this podcast is supposed to be back technical stuff and we're supposed to get into it, but you know what? This is, this is the human aspect of it. But you know, what, if someone can gain some value from this hooray, So my buddy, my buddy and I we're going, gonna make some burgers one night.</p>



<p>And I said, well, you know, I've always wanted to make a burger on a skillet and he's got a really good set of skillets, you know, like, Black, you know, just super cured over the last million years. And I'm like, I'm going to make a burger on that. And so I go online and I'm like, I'm going to look at the perfect burger tutorial.</p>



<p>Like, how do you make it? And of course, I find my favorite chef Gordon Ramsey, and he's got this YouTube video called the perfect burger tutorial. And so I watched it and amazingly for the burger fans out there, he did not make it in a skillet. He made it on a barbecue. And anyway, the reason I'm saying all this is I, I kind of watched this whole thing, what he was doing and the ingredients to use.</p>



<p>And so I'm like, alright, I'm going to take myself to the store and I'm going to buy this beef. I'm going to put an egg in it. Cause he recommends putting an egg in like a, what is it? Two pounds of beef. And then I'm going to like get this cheese and do all the things he did, salt and pepper. That's all he uses for, for seasoning.</p>



<p>And they did exactly what he recommends doing. And I, I'm not kidding. My friend made this buddy of this guy was making a burger with, he is a huge meat fan. He's got like a $2,500 smoker. He spends, I mean, hours and hours, ma like making meat every single week seriously. And so I was like, listen, I'm going to make, I'm going to try and make this burger.</p>



<p>I'm just going to go get some stuff from our local market. And don't beat me up. I'm going to do my best. And he's like, all right, you know, whatever, you know, little lamb go have a good time. So I did. And he swears to me and it's the best burger he's ever had in his life. And I was just like, I was, the funny part is I'm not, I don't, I'm not big burger person.</p>



<p>You know what I mean? I somehow just stumbled into this. Anyway, I left you a link here in chat. So if you want to put it on the post. It's it's literally took me, I want to say 30 minutes from start to finish. And my kid has said this to me, best burger I've ever had in my life. My buddy said this to me.</p>



<p>I'm like really? Cause that's a pretty big thing for someone to say that. So anyway, I thought, since we're talking about food, I made a damn good hamburger, you know, and I'm proud of myself.</p>



<p><strong>Jon: </strong>[00:07:29] Well done. It is funny how much, like a lot of these things come down to really simple. Like the bread that I made is like, Three ingredients, you know, and then last week we made mozzarella and it's four ingredients. And a lot of it is like doing the process and, and YouTube, it's hard to beat YouTube, you know, like I've used.</p>



<p><strong>Rob: </strong>[00:07:51] I was going to say, right when it's Gordon Ramsay, I mean, he kind of just stares at you through the thing and he's like, if you make a burger any other way, I will come find you and kill you.</p>



<p><strong>Jon: </strong>[00:08:02] True. True. Yeah. I mean, I've used, I mean, it's, it's, you know, cliche at this point, but I used YouTube recently to repair, you know, leaking gaskets and in my espresso machines, you use it for fixing dishwashers and everything. So why not cooking too, but it really does make a difference as long as it's not the long boring, you know,</p>



<p><strong>Rob: </strong>[00:08:24] Yup.</p>



<p><strong>Jon: </strong>[00:08:25] People want to talk a little too much? Just get to the point.</p>



<p><strong>Rob: </strong>[00:08:29] Speaking of this is supposed to be a tech podcast, right? I mean,</p>



<p><strong>Jon: </strong>[00:08:35] Oh, I guess so</p>



<p><strong>Rob: </strong>[00:08:36] I know.</p>



<p><strong>Jon: </strong>[00:08:37] what's happened. Well, okay. Kevin did point out there's been, there was a Mac, there was an Apple event, an Apple developer event. What do we call them now? WWDC is. There was a thing.</p>



<p><strong>Rob: </strong>[00:08:56] Oh, Jon.</p>



<p><strong>Kevin: </strong>[00:08:57] This is the guy who's on the Visual Studio for Mac team, right.</p>



<p><strong>Rob: </strong>[00:09:00] Yeah.</p>



<p><strong>Jon: </strong>[00:09:01] Yeah. Well, I watched it,</p>



<p><strong>Rob: </strong>[00:09:04] There was a Mac thing.</p>



<p><strong>Jon: </strong>[00:09:06] I watched it, I didn't get the tattoo... So now we got to do stuff for ARM. We got to do some ARM stuff, so that's</p>



<p><strong>Rob: </strong>[00:09:16] like arm templates, like Azure templates as your resource minute.</p>



<p><strong>Jon: </strong>[00:09:21] ARM chips. Yeah. a thing now.</p>



<p><strong>Kevin: </strong>[00:09:25] Silicon, Jon,</p>



<p><strong>Jon: </strong>[00:09:26] Oh, that's right. That's</p>



<p><strong>Rob: </strong>[00:09:27] Yeah, no, I was just</p>



<p><strong>Kevin: </strong>[00:09:30] excited for this?</p>



<p><strong>Jon: </strong>[00:09:32] Yeah. I who me?</p>



<p><strong>Rob: </strong>[00:09:34] no,</p>



<p><strong>Jon: </strong>[00:09:35] Everyone's excited. I guess it's better battery life, right? That's a good thing.</p>



<p><strong>Kevin: </strong>[00:09:41] Yeah, we don't know that. That's the big question. We don't know what it means aside from the fact that it's going to be screaming fast.</p>



<p><strong>Jon: </strong>[00:09:48] True. So, so there there's been a windows windows on arm thing for a while, but you know, I kind of generally follow along, but I don't know how much stuff works on it. And people are like, you know, getting things, working on it, with, with the Mac, the Apple Silicon, they have Rosetta, which kind of does some cross compiling thing, which seems pretty smart.</p>



<p>so that I do know from the. Vs Mac team. That's the at least original plan is like, make sure everything works with that. Right. So you have to get the dev kit, which is basically a Mac mini and, you know, with the new Silicon and you test on that. But, yeah,</p>



<p><strong>Rob: </strong>[00:10:28] you</p>



<p><strong>Kevin: </strong>[00:10:28] I wouldn't, I would ask you if you guys are using those, but I don't think you're allowed to say so.</p>



<p><strong>Jon: </strong>[00:10:33] using the Mac minis or the D</p>



<p><strong>Kevin: </strong>[00:10:35] the dev kits, the</p>



<p><strong>Jon: </strong>[00:10:37] So I'm personally, I'm not on the, I'm not an engineer, so I'm, I'm not, I don't have one. Maybe I could talk someone into getting me one at one point at some point, but they're like, I think they're about a thousand bucks.</p>



<p><strong>Kevin: </strong>[00:10:50] No, the 500 bucks,</p>



<p><strong>Jon: </strong>[00:10:52] Alright. Yeah. I'll</p>



<p><strong>Kevin: </strong>[00:10:53] you don't get to keep it. You gotta send it back.</p>



<p><strong>Jon: </strong>[00:10:55] Oh, that sucks.</p>



<p>Yeah. Yeah.</p>



<p><strong>Rob: </strong>[00:10:58] know, I was just telling, for those out there listening, I was just telling Kevin and Jon that right now, my computer hasn't slept. actually like, you know, when he closed the lid, like your computer goes to sleep. I use a Mac book pro 16 inch. My computer hasn't slept in two weeks, because where every time we would try and wait for him sleep, it would kernel panic and it's akin to the blue screen of death in windows.</p>



<p>And I kind of got tired of, I need to force reboot my machine every time I opened the damn lid. So right. Come to find out this is a deal. It's a software glitch as opposed to a hardware one, which is good. And so there's good news and bad news here. You know, the good news is Apple engineering is pretty good about dealing with things.</p>



<p>The bad news is sometimes it takes a while for the update to roll out. And so, as I was preparing to go ahead</p>



<p><strong>Jon: </strong>[00:11:45] Is it a, is it which year Macbook is it?</p>



<p><strong>Rob: </strong>[00:11:49] last year it was brand new.</p>



<p><strong>Jon: </strong>[00:11:51] Cause I got a 16, 2019 and I'm running Catalina,</p>



<p><strong>Rob: </strong>[00:11:56] Yeah. I don't know. I don't know. I don't know what the deal is. It apparently, apparently just kind of affects certain machines somewhere. But anyway, I just checked, as I was sitting here preparing, like to tell you all this story, I would look at the software update in the Control Yeah. You know, going through this like, Oh, this update, you know, includes bug fixes, whatever.</p>



<p>So this is the 10.15.6 Update. And one of their bullet points is. That it fixes an issue where the computer name may change after installing a software update. I'm like, okay, I'm sorry, what year is this? What do we do at what? How is this possibly a bug? How are you going to change the name of my machine?</p>



<p>No. Can you fix, can you just fix the thing where my machine will fricking blue screen? Oh my God. Anyway, computers, I don't know. I don't know what's going on. Kevin help. What's happening.</p>



<p><strong>Kevin: </strong>[00:12:50] I don't know, I'd be pretty pissed to that one. Is it, is it like you, because you're plugged into an external monitor or you're like have some weird peripherals or.</p>



<p><strong>Rob: </strong>[00:13:00] I have a feeling it's probably like a configuration that got going, which is yes, I have two external monitors and it's probably trying to reconcile something. And I was reading something on the forums where they're like, Oh, it's a threading issue. And there's a race condition deep inside the GPU, blah, blah, blah, blah.</p>



<p>You know, it makes sense, I guess. Right. Cause. Computers are hard and then concurrency is triple hard. And so, right. So you</p>



<p><strong>Jon: </strong>[00:13:22] Yeah, but concurrency shouldn't rename your computer.</p>



<p><strong>Rob: </strong>[00:13:27] is what I know. Like</p>



<p><strong>Jon: </strong>[00:13:31] If something's renaming your computer, I guarantee it we're being renamed to the developer who worked on the bug fix.</p>



<p><strong>Rob: </strong>[00:13:40] Yeah, not to beat up on Apple team. I mean, they deserve to be beat up on it. I don't want to stand here and defend, but at the same time, Two weeks ago, I got this notice on my Windows machine. It says this build of windows is going to expire on July 31st. And I'm like, what can my operating system literally expire like near to this?</p>



<p><strong>Jon: </strong>[00:14:01] It goes bad, like, like cheese or eggs.</p>



<p><strong>Rob: </strong>[00:14:03] yeah. Like, like, like what does that mean? Expire and it's. So I had to ping some people internally, right. And like, Hey, so if I get this message. It's like, well, click on more info. What does it tell you? And so I click on more info and it leads me to a 404 page, like, Oh, okay.</p>



<p><strong>Jon: </strong>[00:14:23] So my solution to this is always run the latest of everything,</p>



<p><strong>Rob: </strong>[00:14:27] Oh, I tried it. So the funny thing is, and this is the best part of the whole story. So internally we have, you know, we have tech support and I.T. And whatever. So I like pinging these people and it's amazing the level of support we have internal, which is lovely. And so I pinged a person over teams and I said, here's the problem?</p>



<p>And they said, do you mind if I come in and take a look at your machine? And I said, of course, you know, so he, we start sharing screens, right? He comes in and starts going to the control panel and like, Oh no, you're not. He goes to control panel and then, you know, windows update and like, don't please don't do that.</p>



<p>Cause I had just checked windows update. Right. I literally just checked the updater and there was nothing there. He goes in there and he checks the update and sure enough, there's an update. And he said, what do you think if we apply this update and restart your machine. And then of course that that's solved the entire problem</p>



<p><strong>Jon: </strong>[00:15:18] fixed it. Good.</p>



<p><strong>Kevin: </strong>[00:15:20] Well, so Rob, you just have to go get a job at Apple, get them to fix your Mac.</p>



<p><strong>Rob: </strong>[00:15:24] I know, right.</p>



<p><strong>Jon: </strong>[00:15:25] You can work at the Genius Bar.</p>



<p><strong>Rob: </strong>[00:15:28] Oh my goodness. I am sorry. It's a Friday. It's like end of a long week. I'm a little bit fried and loopy. Yeah. Anyway.</p>



<p><strong>Kevin: </strong>[00:15:37] I will say I have a, sorry. I was just say I have an older 15 inch MacBook pro and if there's one thing that will kill it, it's not, doesn't happen all the time. But if there's one thing that will kill it, it's. Unplugging it from the external monitor, like, like 90% of the time when I, if it's going to, if it's going to die.</p>



<p>That's what does it,</p>



<p><strong>Rob: </strong>[00:15:55] Yeah, I think what is happening? Like, is it just like an energy loss or are there like little gremlins running around like, Oh my God, you know, like we have to wait for them to come back, you know, no gremlin left behind, what are you doing in there?</p>



<p><strong>Jon: </strong>[00:16:05] I swear video, the three things that&nbsp; all computers are terrible about video drivers printing. And I feel like USB hubs too. Like in general, like especially windows, my, my desktop machine. I've got like a few hubs. I have a thousand USB devices and windows does not like that.</p>



<p><strong>Rob: </strong>[00:16:24] Wait, Jon,</p>



<p><strong>Jon: </strong>[00:16:26] yes.</p>



<p><strong>Rob: </strong>[00:16:26] still there,Jon. I think you're on mute. I can't hear you. I can't, I can't hear you. I'm sorry. What?</p>



<p><strong>Jon: </strong>[00:16:33] I see a video monitor. It shows wave forms. I can tell you're messing with me. Yeah. But seriously, like printers printers are still bad. I have a printer and you can. You can email to it. Like I don't print, right. Cause I'm, you know, a nerd, but like my family wants to print things apparently. And like, I got this printer, an HP, you can at least email.</p>



<p>So I have a, an email address, which I'm tempted to say on the phone and people could be on the call and people could email my printer, but it is, it's pretty neat, but everyone's like, I don't want to do that. You know?</p>



<p><strong>Rob: </strong>[00:17:09] that's like the 20, 20 version of a fax. Like I'll just email you this document that your</p>



<p><strong>Jon: </strong>[00:17:13] It's true, but it is a good way to get people off my back. They're like I have a report due. I can't do it. I'm like just email it to the printer, like, okay. You</p>



<p><strong>Rob: </strong>[00:17:22] Yeah, just email it to the printers. Then you just fax me. Oh my God. We've come so far. So far.</p>



<p><strong>Jon: </strong>[00:17:31] And video devices. Let me tell you about video devices. Cause we've been doing stuff with like, because of the remote thing and my team, you know, working with community .NET things and we have this community standup show we do. And so we're using OBS, but OBS is complicated. And then we have more and more shows splitting off from more and more people hosting, but we not, all of them have fancy computers and fast internet and know how to use OBS and stuff.</p>



<p>So, so then we've been messing with other things on top of that and we set up a virtual machine with, so that's pretty crazy. We set up an Azure virtual machine and they have a VM SKU? They have a VM that you can get that has Nvidia like access to the Nvidia GPU. And for some reason they have like promotional pricing.</p>



<p>So it's not very expensive. It's like a buck an hour. and then you can hook it up. So that OBS is using the GPU and it's like GPU accelerated, super nice and stuff, and actually works. But it's, then it's still like a. You need to go, you need to control access to this virtual machine and you have to like log in and apply updates and crap.</p>



<p>So we finally like we've settled on using some like services for that lately. We've been using StreamYard and Restream, and they have kind of like a web based based thing where you can kind of like we're using Zencaster now for like, you know, you call into and it's all on a webpage Restream and StreamYard are both very similar, but it's like, You, your webcam shows up your, your microphone, your audio, like just are connected to it.</p>



<p>And it's all like in a webpage and then you just click and you'd like add and remove people from the live feed and stuff. So,</p>



<p><strong>Rob: </strong>[00:19:19] Yeah. You know, thing is I've, I've crawled really deeply into all of this stuff. I mean, I won't say that I know anything about ops, sorry. Oh BS. But, so no, it's one of the cool things that I started to do here at Microsoft is I'm working on the LearnTV backend. so I'm, I'm actually leading the engineering on that.</p>



<p>It's really fun. I can't believe. Yeah, I know. They asked me to do it. I'm like what you serious? Okay, sure.</p>



<p><strong>Jon: </strong>[00:19:46] What does that mean? What is, what is this thing?</p>



<p><strong>Rob: </strong>[00:19:50] LearnTV. Well, you know,</p>



<p><strong>Jon: </strong>[00:19:53] well, I'm partly, I'm, I'm asking for, I'm pretending to be dumb, but I'm</p>



<p><strong>Rob: </strong>[00:19:57] You giving me a toss here? That's what the,</p>



<p>I'm</p>



<p><strong>Jon: </strong>[00:20:00] the ideal dumb guy, because I actually I'm dumb.</p>



<p><strong>Rob: </strong>[00:20:03] okay. No, so no LearnTV is a, it's just the broadcasting from, from, Microsoft. And it's kind of funny, you know, I feel like there's still exploration happening. What are you trying to do with it? And I'm not going to try and be the spokesman for it. Yeah.</p>



<p>Cause they could probably get fired. However, the idea so far is like, you know, a friend, a friend of mine that I worked with here, I'm working on it. He said, I love to listen to Twitch just over my shoulder and it's always running. And if I hear something interesting, I'll stop what I'm doing and listen.</p>



<p>And so I tried to explain to a friend of mine that way, just the other day. And I said, you know, he listened to NPR or someone listened to music or whatever. You get tired of music, you turn on something else. And to have something just running in the background, That pertains to what you're doing every single day.</p>



<p>it's kinda neat, you know, you just kinda hear tidbits of things. And, and so anyway, LearnTV is, is sorta trying to be that and a little bit more. And so, they're trying to bang it into shape, but for right now, we're trying to do the next rev of it. So they've asked me to step in and help out. So I am, and it's kind of fun to step into the streaming world because wow.</p>



<p>Right. Wow. There's so much happening out there. And, and to dig into all these things and I, I'm not even gonna pretend I know what's going on. The person I'm working with, Eric st. Martin. He is, he is. He's amazing. He, he. I guess built the Comcast, switcher, like for Comcast.</p>



<p>So yeah, like he designed and implemented it. Yeah. I know. It's crazy when you work in like places like Microsoft or wherever, you know, like these big tech companies and you talk to the people you work with and they're like, Oh yeah, you know, I.</p>



<p><strong>Jon: </strong>[00:21:35] Yeah. I wrote that spec.</p>



<p><strong>Rob: </strong>[00:21:37] I created Kubernetes. Yeah. I mean, that happened to me at build.</p>



<p>That happened to me, a build when someone said, Hey, you should have this person come talk about Kubernetes and like, well, who is he? And they're like, well, he's the guy that made it. I'm like, well, I mean, is he cool? Like hanging out at a Microsoft thing? And they're like, dude, dude, he works. He works for us like, Oh, Oh,</p>



<p><strong>Jon: </strong>[00:21:57] I know he spoke yesterday at, they did the .NET Conf Focus on Microservices and his talk was like super, I mean, it was just really low, key and fun.&nbsp;&nbsp; I mean, I guess he's probably spoken about microservices more than once, but his talk was just, it was like, it was just fun, you know?</p>



<p>Yeah.</p>



<p><strong>Rob: </strong>[00:22:18] Yeah, no, it's fun. And I don't mean to sit here and gloat about all this stuff. It's just to me, I'm like a kid in a candy shop. It's really fun. So.</p>



<p><strong>Jon: </strong>[00:22:26] Well, that's</p>



<p><strong>Rob: </strong>[00:22:27] blah, blah.</p>



<p><strong>Jon: </strong>[00:22:28] So, so, yeah, the, the engineering for that's gotta be pretty interesting. Huh?</p>



<p><strong>Rob: </strong>[00:22:32] Yeah. Well, he does all the streaming stuff in the back end and I have no idea what's going on with that. I'm more involved with other aspects of it, but, he'll, he'll tell me, like, he'll pop into Slack and he'd be like, Hey, you know, here's what we're going to do. And, or here's what I'm thinking of doing.</p>



<p>And I'm like, sure, whatever you think, man. That's great. For those of you wondering, I just really want to quickly say this. we have clearance to do this open source, so we are going to make it open. And I'm not sure if I'm supposed to say that I might get in trouble for it, but well, that's what we're going to do.</p>



<p><strong>Jon: </strong>[00:23:07] Awesome. It's too bad. This isn't live streamed itself. You could get fired, live on the podcast.</p>



<p><strong>Rob: </strong>[00:23:14] Yes. That would probably be the feather in my cap that I need.</p>



<p><strong>Jon: </strong>[00:23:20] Yeah, it's pretty interesting. The whole like live and definitely this year with the. Remote staff, you know, I, some of my experience with this, I work with, with Hank Pullman on, work kind of behind the scenes, helping with the producing for Juneteenth cough. So we just, and it was really cool. Like we use streaming yard for it and it was like, just, you know, we're the backend producer is Mike check people.</p>



<p>Okay. You're set to go and boom and streaming harvest, like after having done OB acids. Great. But it's definitely the. It's like Photoshop level, there's a million knobs and switches and you can, you can do that. Anything you want with it, but you it's, it's not, it's, there's a lot of like touch that button and the whole broadcast ends</p>



<p><strong>Rob: </strong>[00:24:05] Yeah. If someone described it to me as the PHP of online broadcasting</p>



<p><strong>Jon: </strong>[00:24:12] They're like, you can do anything with it. It powers it's everywhere and it's, it works, but it's yeah. So, and then it's, it's pretty cool seeing these services that kind of automate, you know. Yeah.</p>



<p><strong>Rob: </strong>[00:24:26] Sorry. No, I just have to caveat that with this is something I heard Microsofts and official stance is not that it was just something I heard online and someone was talking about</p>



<p><strong>Jon: </strong>[00:24:36] It's and it's, it's also one of those things where probably like PHP, once you've learned it, it's, it's kind of a sunk cost Stockholm syndrome thing, but it's like, now you like it. Cause you've put in all the work to learn it, you know? So</p>



<p><strong>Rob: </strong>[00:24:50] and the fascinating thing about it is like PHP. And PHB applications. Like if you need to get streaming and online fast, boom, you're up. You know what I mean? You're like,</p>



<p><strong>Jon: </strong>[00:24:59] Yep.</p>



<p><strong>Rob: </strong>[00:25:00] anyway, Kevin, I'm sorry. You're gonna say something.</p>



<p><strong>Kevin: </strong>[00:25:01] I'm not sure I've ever heard it's the PHP have ever intended as a compliment, however,</p>



<p><strong>Jon: </strong>[00:25:09] But PHP is still all over the place on the web, you know, I mean, it's, it powers a lot of forums powers, WordPress</p>



<p><strong>Rob: </strong>[00:25:16] Well,</p>



<p><strong>Jon: </strong>[00:25:16] Herding</p>



<p><strong>Rob: </strong>[00:25:16] though. If you want to, if you want to get up and running and doing something quickly, I mean, there, there really is no alternative to PHP based applications. I mean, that's my argument.</p>



<p><strong>Jon: </strong>[00:25:28] Although get hub pages is pretty close.</p>



<p><strong>Rob: </strong>[00:25:32] It's getting there. That's for sure.</p>



<p><strong>Jon: </strong>[00:25:35] It's interesting to seem. They're kind of, you know, scooping things together now, like with, I don't know, I mean, there's get hub pages and there's get hub actions and stuff like that. You really could cobble a lot of things together. I mean, I feel like that's kind of something I'm seeing too lately is like the many platforms kind of bundled together.</p>



<p>I don't know, partly I'm thinking about this because like, With work stuff. I, so I was mentioning, we do this is peanut community stand up. And then we've also helped with .NET foundation where you're like, Hey, you guys have a bunch of meetups running around the world and if you want to livestream, here's how, here's the stuff we did.</p>



<p>You know, we can kind of share it over to you and you can, you know, run your meetups as live streams worldwide. You know, and all this stuff, there's also like a good amount of it, admin, where it's like, okay, someone needs a schedule show. That means you need to notify someone. That means you need to create a stream and you need to put it in, meetup and you know, all these steps and stuff.</p>



<p>So we've on our team. Been automating some things using Power Automate. It used to be called Microsoft Flow. And it's a lot of, kind of plugging stuff together. So it's like when you fill in a form, it adds a row into SharePoint and then it sends an email and then it puts a planner task and it assigns it to a person.</p>



<p>And then if the task is overdue, it sends in it, you know, and like all this stuff kind of like these blocks that you hook together. And before, before we started, you know, the podcast, Kevin was reminding me, that's basically Yahoo pipes. so,</p>



<p><strong>Rob: </strong>[00:27:11] Yeah. Yeah, that's it. That's the problem.</p>



<p><strong>Jon: </strong>[00:27:16] but, but you really can do quite a bit, you know, the whole kind of no code thing. And there's always, you know, like the, If This Then That (IFTTT), and there's the, you know, like it is, it is interesting to be able to share, you know, and, and I feel like if you're doing a bunch of stuff, hooking a bunch of. Like Microsoft officey sorta things together. This is better than a bunch of like power shell scripts, or I don't know how else you'd do it, you know, just to kind of hook things together.</p>



<p><strong>Rob: </strong>[00:27:46] is, you know, I was just having a big argument, not argument, but like a, a back and forth is the best way to put it with a friend of mine. About, about all of these things. Like, no. I'm not going to give away the context because it doesn't really matter, but there are just like the, you know, this is like the best part of computing, you know, we can do serverless, we can do these Lambdas.</p>



<p>We can do, you know, like pushing like Netflix, talking about Netflix and pushing the JAMstack stuff and like, it's great. I mean, I do agree. It's great. And Kevin, I don't know if you're going to disagree with me on any of this or maybe you won't, but there's like, there's. You get to a point where you're like, ah, you know, I, the only the analogy I can come up with is like, wow, that ocean is beautiful.</p>



<p>I'm going to go swim in it. And then you get in and you realize that just under the surface is like this load of coral, not coral, but like a kelp. Right. And it's like, you just wrapped around and kelp and you're like, I can't move. much stuff happening. And you know, and I'm like, Oh, and I just kind of went through this with a project I was working on like, wait, where's that function and what is it doing?</p>



<p>Oh, well we have to upgrade the node version on that one. Cause that one's going to expire, but these other ones. Okay. You know, like, Oh, God kills me.</p>



<p><strong>Jon: </strong>[00:29:01] Yup. Well, and so this is kind of more the, like, as a service sort of thing, like it's, it's a more serverless applied to the serverless sort of idea, applied to business process automation, things, you know, that's like.</p>



<p><strong>Kevin: </strong>[00:29:17] Yeah, this is, this has been sort of a fascinating trend for me, cause like coming out of college, you know, 1,001 years ago, I, the first company I worked for was a, what was then known as BPM business process management company, which was essentially a no code, low code development platform, right?</p>



<p>So it was a graphical workflow model or where you would, you know, drag these blocks and connect them. And you could, you know, make decisions that kind of like model a data flow. And there were queues where people could connect and find work. And so like, you know, this, this is literally like old hat to me.</p>



<p>and then, you know, we had yellow pipes, which is sort of a very early version of that kind of thing. And then it all kind of, I don't know, I don't want to say it went backward, but it kind of went simpler with the, like, If This Then That (IFTTT) Zapier stuff where it was really literally like a, it was almost like a top to bottom script, but you were very limited in the flexibility.</p>



<p>And now, you know, now there's this sort of Renaissance, not everybody would agree. It's a Renaissance, but you know, this kind of, if you look at the like companies that are being funded startup, the company is being funded. There's been this whole raft of these no code, low code platforms, which are basically like, you know, sort of graphical, you know, business application builders, where you can model workflows by connecting services together in a graphical way.</p>



<p>So, I mean, it's one of those things where like, I've been kind of eyeing this space. I haven't really looked that much yet the current offerings out there, but I've kind of always kept an eye on that because of my original background. And, you know, there there's always. Have been problems with this kind of approach.</p>



<p>Right. You know, eventually things get so complicated and then you, you know, you don't have</p>



<p><strong>Jon: </strong>[00:31:05] how did they grow up?</p>



<p><strong>Kevin: </strong>[00:31:06] diff and like, it's, you do tend to hit some complexity walls. But, it is, I think it is an interesting space. And, you know, when you pile on like serverless stuff where you can like, basically run these applications for extremely cheaply on somebody else's infrastructure, it's, it's an interesting thing.</p>



<p>And, you know, It's there's always been this sort of like, you know, there's, there's kind of like the Excel world, right. Where like, you know, which is, you know, programming for non-programmers basically. and then there's yeah. Coding world. And this is in between, and it's never, it's, it's always kind of struggled to like break through.</p>



<p>I feel like, like it doesn't, it doesn't break through all the way to the, to the. People who aren't really coders. and, and you have the coders sort of looked down on it. So it has always been stuck in this little bit of a Valley, I feel like, but it'll be interesting to see whether this iteration of it, you know, gets any legs.</p>



<p><strong>Jon: </strong>[00:32:02] It's a, you know, that whole kind of like the problem with a lot of this, like you're saying, is it doesn't, it's not a smooth continuum. It's kinda like you can work with, you know, Excel or you can work with like a block Walkley style programming, you get to a certain point and then it just gets like horrendous and then you basically have to rewrite to move. To something better, you know, or, I mean, in the past there was also an access, right. You know, or whatever, there's these things where these businesses are, man, I worked on a project long time ago and it was moving basically moving a union union software. And so it was like, you know, relatively big schools and, you know, all kinds of government institutions and healthcare and they, and they were running there.</p>



<p>Ops and HR systems on Excel. And we moved them into a system that was managed. It was based on an open source HR system. and it horrendous because I wrote a lot of the data import stuff and it was these ridiculous SQL scripts, you know, to like, and, and I remember one, there was one thing where it was like, things were keyed on unique kid on first name, last name.</p>



<p>And so then everyone had multiple rows in this table and they just added ones and twos. And three is to the last names I had to de dupe all these, you know, like that kind of stuff. But, but, you know, I guess, I guess what you're pointing out, Kevin is the whole, like, if there's a way to move more smoothly between these worlds, that would be nice.</p>



<p>And one, one thing, actually that I saw on this just last night, Gene Kim shared this, a tweet is a blog post from Jeff Sternberg. And he's talking about his he's recommending that instead of using spreadsheets, like Excel to use Jupiter notebooks or something like it. And, and, you know, he talks about like, here's all the limitations you run into when you run a business on Excel and something like Jupiter notebooks.</p>



<p>Can grow up better than that. I don't know if Jupiter notebooks, I don't feel like Jupiter notebooks is friendly or simple enough that to somebody that, you know what I mean, like a small business can jump into Excel and just start getting stuff done in a way that you can't with Jupiter notebooks, but maybe that's like the start of an idea, you know? like for instance, Google sheets too, like whatever, you know, how do you, how do you make Google sheets? Like show as code and move and go to the next thing, you know, I'm trying to think there have, it seems like there've been some things that do that better where you can, you can start, you can go to a certain level with the kind of easy, easy mode, and then you can say, show me my code and now I'll extend it and change it over. And any thoughts? Now it's, it's a, it's</p>



<p><strong>Kevin: </strong>[00:35:08] I'm not thinking of it, but I mean, I know what you're, I understand the concept of like, you know, like you need to get when you need to take it to the next level of sophistication. Like how do you do that without having to throw it away and start over physically?</p>



<p><strong>Jon: </strong>[00:35:21] yeah, yeah.</p>



<p><strong>Kevin: </strong>[00:35:22] And yeah, I think that, I definitely think there's a there's possibilities there.</p>



<p>I'm just not sure anybody's cracked that. Not yet.</p>



<p><strong>Rob: </strong>[00:35:30] I dunno, I just was having a really fun discussion with a friend of mine about WordPress. And so here's my situation, right? So I've got literally 45 videos all based on imposter handbook stuff and interviewing and just blah, blah, blah, blah. Right. And, you know, these are some high value videos, at least to me.</p>



<p>And I think people can find value in these videos. And so my problem is I need a way to get these videos in front of people, you know? And so, you know, then, then your brain starts to explode. It's like, what can you do? Right. And so I've gone all over the place. I've, I've checked out learning management platforms.</p>



<p>I've. You don't like podia and teachable and I mean, you name it. I've gone there. Kajabi is another one I looked at. I mean, all of these are really, really cool. And you know, the whole time I'm trying to focus on what, what is it I'm trying to do? What's the business angle here. What's the payoff. And eventually, like, I always come down to like, like my thing is I want least friction between the person.</p>



<p>And the video. Right. And, and for some, I want to charge money because some of them are like five hours long. Right. So I charged for it, but I want to make it, I want to make it like, they feel good about it. And it's just not like me being cheesy and whatever. And I just want to make it feel like a really good experience.</p>



<p>And so eventually I come down to the technology angle, what am I going to use? And then that's where just everything explodes. You know, cause you roll your own. Right? And then we're having these discussions, right? So, you know, you got to know analytics, you got to know all this other crap. You gotta know so many things about what's happening.</p>



<p>How are you going to charge this person? How are you going to makes them feel like they didn't get gypped off? You know, you want to send them an email based on their purchases and communicate with him. And it's easy to see why. So when just goes with WordPress, because like with the installation, if you plugins you're off and running.</p>



<p>A year from now, on the other hand, you know, you're going to be pulling your hair out because things are broken and not working. So I don't know. I think about this every time I have a discussion with somebody about, you know, technology and functionality, what should we do? Which even comes back to the discussions I'm having now internally about what we're going to do with learning TV.</p>



<p>We're not going to use WordPress by the way, but you know, But seriously, like I did post this to somebody on the team. Like if we just had a WordPress site where we could post videos every hour, talk to me, like literally a curl script, like you're just going to post and redirect post redirect, talk to me about what's better than that, you know?</p>



<p>And like, I think that level of grounding, and again, I know people out there are going to be like, Oh my God, Connor is an absolute idiot. However, however, like. I feel like WordPress has one great use in this world, which is to be the touchstone experience in terms of what people out in the internet, you know, or out in the world expect from technology, because they have managed to capture that, you know what I'm saying?</p>



<p>Like a business person or whomever has an idea. They can implement it in WordPress, probably within, I would say within a week and probably within three to five days. Or last three to five hours, if it's simple enough,</p>



<p><strong>Jon: </strong>[00:38:54] It's like the Excel, it's the Excel of the web, you know? I mean, like,</p>



<p><strong>Kevin: </strong>[00:38:58] totally is.</p>



<p><strong>Jon: </strong>[00:39:00] and, and some of the things like I've, I've kept and it's been partly an experience just cause I want to learn and understand it, but we've had the Herding Code website running on WordPress since the beginning. And. Aside from the fact that PHP is a fascinating platform when you get hacked, because you can override things at some really interesting levels. Mmm But, but they have done a pretty good job with some things. One thing they continued to improve the upgrade. experience. So now it auto updates and it auto updates with like security features in a pretty good way. The, the extension model I feel like is pretty good. Like there's some pretty good hooks.</p>



<p>And I wrote an extension. There was a problem where Feedburner could only like Feedburner would only accept a certain number of. A certain feed size and then it would just choke. And so I went in and modify it. I wrote an extension or WordPress, add an extension, whatever. Yeah. Call it. That would for the, the latest, like 50 posts, it would grab the entire thing.</p>



<p>And then for the, all the other ones in the history, I would just grab a truncated. You know, like truncate I'm at a hundred words or something. and I mean, it was like, it took a little time to like understand the model, but then I was like, Oh, this second actually pretty elegant, you know, it's and they have a pretty good system for like versioning and marking, extensions, being tested with.</p>



<p>Certain updates, PHP itself, like is not a beautiful language to me, but like it's, you're not, you're not writing PHP when you're developing WordPress, you know?</p>



<p><strong>Rob: </strong>[00:40:42] Yeah. Yeah. Yeah. I feel like, I feel like we've probably tuned, made a lot of people tune</p>



<p><strong>Jon: </strong>[00:40:47] yeah.</p>



<p><strong>Rob: </strong>[00:40:49] There's a WordPress again.</p>



<p><strong>Jon: </strong>[00:40:51] You know, Rob, when you're doing, you're talking about like WordPress that you've done, is it mostly just configuring sites or are you like extending and writing PHP stuff?</p>



<p><strong>Rob: </strong>[00:41:03] Well, No, I have, I won't, I mean, I w I shouldn't say it like that. I only have, I only have so much left in my brain. Like, I feel like PHP, PHP is, is a universe, and a different way of thinking. And I think it's interesting. I just, if I start down that path, I probably will get lost in the forest. So I,</p>



<p>Forever</p>



<p><strong>Kevin: </strong>[00:41:25] will it dominate your destiny?</p>



<p><strong>Rob: </strong>[00:41:27] Yes. Forever really dominate. Right. Exactly. Oh God. So no. So what I'm doing now is I'm just literally, I'm trying to come up with ways to put videos in front of people. So</p>



<p><strong>Jon: </strong>[00:41:39] Yeah.</p>



<p><strong>Rob: </strong>[00:41:40] you know, it's, I've, I've gone with, I actually made a Nuxt app, you know, that. And it works. Okay. But then it's, it's interesting because like, I was able to get the functionality of this Nuxt app up and going fast, like, you know, next video and what are you watching?</p>



<p>And I've got, it was really beautiful. I mean, it came together really well, but then, but then it's like, well, okay, cool. So we've got, we've got to, you know, a 0.01, you know, the next part is like, well, what are people watching? How often are they watching it? You know, and like what, what about an RSS feed?</p>



<p>What about, you know, like these Twitter cards, what about blah, blah, blah, like on and on and on you start to getting into marketing and like, Oh my God. And then you just realize, like, I don't want to do any of this and then like search functionality. And what about like, having like maybe just a partial thing where someone can watch the first 20 seconds and then you turn it off like, Oh God spare me from this.</p>



<p>And then of course you go into WordPress. It's like, Hey, here's a plugin for Vimeo that only show the first 30 seconds lesser part of your membership site. Like, wait, how did you, how do you, Oh right. Cause you run half or third of the fricking internet. Of course you, you know, anyway.</p>



<p><strong>Jon: </strong>[00:42:50] Yeah, that's</p>



<p><strong>Kevin: </strong>[00:42:50] orchard? Rob is orchard, still a thing.</p>



<p><strong>Rob: </strong>[00:42:54] Oh,</p>



<p><strong>Jon: </strong>[00:42:57] You know, it's funny. I mean, orchard, orchard still plugging away.</p>



<p><strong>Rob: </strong>[00:43:02] Oh.</p>



<p><strong>Jon: </strong>[00:43:04] Well, so, but I mean, I don't think orchard now orchard core. Is it all related to</p>



<p><strong>Rob: </strong>[00:43:10] Oh, you said</p>



<p><strong>Jon: </strong>[00:43:11] or treatment?</p>



<p><strong>Rob: </strong>[00:43:12] you said plugin. So I had to,</p>



<p><strong>Jon: </strong>[00:43:13] yes.</p>



<p><strong>Rob: </strong>[00:43:14] So you did your own dad joke and didn't even realize it. yeah, no, I, yeah. Yeah. I'm sure orchard would probably be a I'll investigate that later. Thanks, Kevin.</p>



<p><strong>Kevin: </strong>[00:43:26] Sure.</p>



<p><strong>Rob: </strong>[00:43:28] I know Bertrand's probably listening right now. Nevermind. I can't swear. And can't swear in French and I won't bother cause like bothers him more if I try.</p>



<p><strong>Jon: </strong>[00:43:39] Yeah, good stuff. Yeah. I mean, I guess that is part of the thing, like the whole plugin model is just pretty amazing, right? It's like, that is a reason why WordPress works so well. And that's the reason why a lot of languages get super popular. Like, you know, I don't know. I'm just thinking around like NPM and, you know, I</p>



<p><strong>Rob: </strong>[00:44:01] Well, you know, it's funny you bring up WordPress to people and they're like, Oh my God, it's such a pile of stinking crap, which I'm not going to debate at the same time. You know, like a lot of people will say, Oh, it's so insecure. You know, like it's, it's this structured really simple platform that is hackable, which it is it's insecure because blah, blah, blah it's.</p>



<p>So they. It's interesting to me, they make the next logical leap, which is, will therefore PHP and WordPress, my suck, you know, and then my counter to that is, dude, this thing runs a third of the frickin web. Right. So yeah, I mean, It's going to be under a, just crazy amount of attack. Right? So if .NET ran a third of the damn web, you could be, you could be guaranteed.</p>



<p>You will find every, a single hack possible to get into whatever platform you're using. You know what I mean? And like, I mean, ah, I don't want to go too off on that, but to me that's important to</p>



<p><strong>Jon: </strong>[00:44:57] Your surface</p>



<p><strong>Rob: </strong>[00:44:57] that perspective. Yeah, not again, I sound like a total WordPress advocate right now. I'm not, I just, I look at this, like, I feel I like as technology people there's there is a split brain kind of thing happening here where.</p>



<p>You know, we, as software people look have down on WordPress, you know, let's software people, whatever, call them. I don't know this, like subset of people who are, who are doing it, Ruby and Python, node, .NET, et cetera. Right. And you're like, Oh God, WordPress. You know, you know, I don't, I'm not going to touch that.</p>



<p>That's horrible. But yet WordPress is the dominant thing and I've never, I, for the last few years, I've never really, I understood that. And I really feel like it's important for everybody to do that.</p>



<p><strong>Jon: </strong>[00:45:39] I just really am impressed with how they've continued to like grow up as a platform and move from. Like, there was a time, five or more years ago where. I was always worried about getting hacked and now, like every time I log in, it's automatically updated. I there's a few extensions, you install, I put CloudFlare on it and it's like, I don't worry about it.</p>



<p>You know? And it just, it scales pretty well. It's like, I don't. So I guess that's, I feel like that's a success story as a, as an open source platform to have evolve that well, like their release management is just solid, you know?</p>



<p><strong>Rob: </strong>[00:46:15] Yeah. Yeah. I mean, you know,</p>



<p><strong>Kevin: </strong>[00:46:17] Yes. We talk about cutting edge technology here</p>



<p><strong>Jon: </strong>[00:46:19] There you go.</p>



<p><strong>Kevin: </strong>[00:46:20] and gentlemen.</p>



<p><strong>Jon: </strong>[00:46:22] What did we talk about? Excel word, press. What's next.</p>



<p><strong>Rob: </strong>[00:46:29] what is fine? It, Eric, the guy working with Erickson, Martin, we were talking about doing this streaming thing and he, and he was, you know, he was just gushing about all this technology and he's like, you know, what, if we're going to do that, we have to learn rust. I don't know. And I'm like, yes, I just jumped out of my chair, like anything to learn rust. then, you know, it's like in the back of my mind and like, what. What is that going to serve again?</p>



<p><strong>Jon: </strong>[00:46:54] I read some things that Microsoft is using rest more. I don't really know much. I've already said more than I understand, but</p>



<p><strong>Rob: </strong>[00:47:02] No, I don't know.</p>



<p><strong>Jon: </strong>[00:47:03] I have read like, I mean, I guess for, for system level stuff, it's. It's better for writing safe code. that's about all</p>



<p><strong>Rob: </strong>[00:47:15] Let's</p>



<p><strong>Jon: </strong>[00:47:16] those are words. I feel those are words. I feel mostly confident about saying I don't understand why.</p>



<p><strong>Rob: </strong>[00:47:22] are, there are hundreds of developers getting out of their seat right now, walking into their boss's office, going Jon Galloway says...</p>



<p><strong>Jon: </strong>[00:47:28] That's</p>



<p><strong>Rob: </strong>[00:47:29] rust makes things safer.</p>



<p><strong>Jon: </strong>[00:47:32] You know, it will be interesting. That's something we should like maybe try and get someone onto that knows rest to talk about that. Cause it's but I have, I read some sort of thing and it was like, God, I don't know. I've read a thing.</p>



<p><strong>Rob: </strong>[00:47:47] There's a person in my group at Microsoft. His name is Ryan Leveck and he was on the Wunderlist team and he is our local rust expert. He runs rest meetups in Berlin. He's an amazing guy. And I hate him because his voice he's got one of these voices. It's like, Just dripping silk, just deep. I don't know.</p>



<p>It's just a first time I talked to him. I said, I hated him. was, you know, it's like, hi, I'm Ryan. I hate you. Right now</p>



<p><strong>Jon: </strong>[00:48:17] Yeah, no, I don't know</p>



<p><strong>Rob: </strong>[00:48:18] Yeah. All right.</p>



<p><strong>Jon: </strong>[00:48:19] what, what is rests package manager? Everybody's got to have a package manager</p>



<p><strong>Kevin: </strong>[00:48:25] Cargo.</p>



<p><strong>Jon: </strong>[00:48:26] cargo. That's right. I installed it at one point for some thing. And then have not since. I don't know. It's good</p>



<p><strong>Kevin: </strong>[00:48:35] I, the only thing I know about rust is one of the cargo is my commander, but, two is that, somebody, I forget who it was, wrote a shell in rust. God now I'm totally blanking on the name and it's going to piss me off. hold on one sec. Googling</p>



<p><strong>Jon: </strong>[00:48:52] I'll have to look it up.</p>



<p><strong>Kevin: </strong>[00:48:54] Oh yeah. New shell. It's called. and I was intrigued by it because, so I never really took the PowerShell.</p>



<p>I mean, I can kind of fumble my way through it, but I always kind of hated the. The, the verbosity of it and the kind of weird syntax. but I did like the object orientation of it, I guess the, you know, the fact that the things that go flow through the pipeline or objects and not just text, that was like the killer feature.</p>



<p>so new shell is, has that philosophy where, you know, you're, you're piping objects between. You know, different operators and functions.</p>



<p><strong>Jon: </strong>[00:49:34] Yeah. I'm looking at it now. It's</p>



<p><strong>Kevin: </strong>[00:49:36] but without the kind of arcane syntax that, that, PowerShell uses. So</p>



<p><strong>Jon: </strong>[00:49:41] It's funny though, as I'm looking at the sample code here, so it's github/nushell/nushell and it's like a. It's funny because PowerShell does have a lot of aliases that are similar to this. So like LS, pipe, something, or other would work in PowerShell too. but you have to know the things, you know, I dunno.</p>



<p>Yeah. That's neat. yeah. cool. Cool. Yeah. I guess, you know, one other thing, just, you know, as far as new issue on the way things there's, they're .NET 5, .NET 6. so I</p>



<p><strong>Kevin: </strong>[00:50:21] I did six. Wait,</p>



<p><strong>Jon: </strong>[00:50:22] I, okay, so .NET 5 do out November and then .NET 6 is the LTS, the longterm support version due out in 2021.</p>



<p>And, and so the idea is they're having similar to like node and Ubuntu, and the like this, I don't know, kind of a guaranteed release schedule so that people can plan on it. and then they went with, instead of people were confused, like we actually did have people that mix because there's .NET Framework 4.8 and .NET Core 3, people were like, Oh, the new, the highest version number. It must be the right one. So they would use .NET Framework 4.8 instead. so anyhow that's they were just like, Nope, it's all.net. It's not in that five. Then that net six.net, whatever. So in originally there were like some neat features that were going to be in Dutton at five, but because of COVID and changing stuff around schedule wise and things, some of that stuff is now in .NET 6.</p>



<p>so. Yeah, I'm just the, I don't know. Neat. I keep an eye on their, they're doing, they keep doing neat stuff with, intrinsics hardware intrinsics which like blows my mind to see like they'll, they'll optimize stuff in the compiler. So like, it's doing all kinds of, like, it's just using all these features that have apparently been in, you know, the chips out for awhile, but you have to like, write some smart assembly code to actually use them. So that's kind of cool.</p>



<p><strong>Kevin: </strong>[00:51:55] So I have a purely hypothetical question, which is not hypothetical at all, which is, you know, we have a, we have a applicant, one of our applications is written in.net framework for, and, you know, hosted on windows. And I would love to have it not be someday. you know, what is the, what is the migration path for.net framework?</p>



<p>You know, asp.net, MVC kind of applications. Is that hugely painful? Is it. There, you know, conversion tools.</p>



<p><strong>Jon: </strong>[00:52:24] Well, so a lot of it is, it depends. there's, there's not like a run a tool and it'll update your. Your thing. If you're using MVC, it's a lot. It's generally smoother it, but it depends how much you've customized stuff. So like, if you've done action filters and you've written, you've like, you know, hooked into a lot of stuff in the pipeline.</p>



<p>And especially if you're doing, using like the identity system, then like all of those are areas where they change over time, the actual like model view and controller thing, those are probably the least likely, you know, those have changed the least like razor as a language hasn't changed that much. And yeah.</p>



<p>You know, the controllers are pretty similar. So it's more of the, kind of got some internals where you could override an extend stuff. Those are, those are the cases I've talked to people where it's like, Oh, you're kind of screwed. You know? Like, so I don't know if that makes sense, but</p>



<p><strong>Kevin: </strong>[00:53:23] This is not a, not a case where I can like open my project in visual studio, 2021. And like, you know, magically works</p>



<p><strong>Jon: </strong>[00:53:33] no, no, not really. Yeah. So it's like a, you know, there's definitely, there is a migration, out in the, in the ASP.NET Docs where they like talk through, here are the steps you do. and it really depends on like how well factored it is. Like the service code you can, you can use .NET standard and you can like, You know, that migrates over pretty cleanly.</p>



<p>Cause it's just .net is .net code, but it's more the, really, a lot of it is the startup hosting staff. So like there's no more Global.asax There's no more web.Config. All the configuration and startup stuff have changed around. and then some other things get simpler. Cause there's dependency injection, like just it's built into everything.</p>



<p>So that simplifies some stuff where before. You know, you had to, you had to configure all that sort of stuff. So, but it's, it's hard. There's not like a simple one size fits all because MVC is like, there are a lot of different ways people use MVC. you know, there's not like a canned answer for it really. I don't know if it's helpful, but you know what I'm saying? You could, you could override the view engine. You could override the, you know, Stuff about, you know, you could have complex stuff set up with, with dependency. You could have action filters. You could have, you know, custom, I dunno, ActionInvokers and all kinds of things that are already escaping my brain now.</p>



<p>Well, so it's right about an hour. Do you think we should kind of wrap up here?</p>



<p><strong>Rob: </strong>[00:55:08] We haven't picked on Kevin enough.</p>



<p><strong>Jon: </strong>[00:55:11] Nice. Alright. Well, I have no idea how we can wrap this up. So I think we should end up with a knock knock joke. No, I'm kidding.</p>



<p><strong>Rob: </strong>[00:55:22] I got it. I got a good one. Knock,</p>



<p><strong>Jon: </strong>[00:55:24] Oh, good. Who's there.</p>



<p><strong>Rob: </strong>[00:55:26] smell, mop.</p>



<p><strong>Jon: </strong>[00:55:30] and that's all the time we have this week.</p>



<p><strong>Rob: </strong>[00:55:35] Come on. It's like the biggest and oldest dad joke. You guys have heard that one, right?</p>



<p><strong>Jon: </strong>[00:55:40] Yeah,</p>



<p><strong>Rob: </strong>[00:55:41] You've never heard smell mob. Are you going to cut this out, Jon? You can't cut this out. Smell. Mop is probably one of the best jokes ever.</p>



<p><strong>Jon: </strong>[00:55:48] smell mop.</p>



<p><strong>Rob: </strong>[00:55:50] Yeah. There you go. That's gross, Jon. I can't, I can't believe you actually said it.</p>



<p>That's really gross.</p>



<p><strong>Jon: </strong>[00:55:56] we're going to get kicked off the internet. If we have that end a podcast that includes PHP WordPress.</p>



<p><strong>Rob: </strong>[00:56:04] Yeah, it's true. I have to agree with that one,</p>



<p><strong>Jon: </strong>[00:56:07] I think, yeah, I think to balance this out, we need to end with, with like maybe an English accent in some like, you know, some like, what is it? , you know, some like, you know, erudite music.</p>



<p><strong>Rob: </strong>[00:56:22] You mean like talking about Brexit?</p>



<p><strong>Jon: </strong>[00:56:25] Wonderful. Alright. Well,</p>



<p><strong>Kevin: </strong>[00:56:28] are, I promise our Q3 podcast will be better.</p>



<p><strong>Rob: </strong>[00:56:34] Oh, man.</p>



<p><strong>Jon: </strong>[00:56:35] right. Well, since I'm cutting a chunk out, I'm just going to cut all that out.</p>



<p><strong>Rob: </strong>[00:56:40] Yeah, you should start using start the whole podcast with that.</p>



<p><strong>Jon: </strong>[00:56:44] That's right. Well, this has been, well, this has been a fascinating discussion. Hopefully the next time we talk, it will be an even more fascinating discussion and I will not be wearing a mask, the entire podcast.</p>



<p><strong>Rob: </strong>[00:57:00] Okay. My name is smell. Mop. All right. This</p>



<p><strong>Kevin: </strong>[00:57:11] Jon, when we have our, when we have our subscription program, this is the kind of</p>



<p><strong>Jon: </strong>[00:57:15] That's right. That's right.</p>



<p><strong>Rob: </strong>[00:57:17] Yeah,</p>



<p><strong>Jon: </strong>[00:57:18] No, I think people will pay to exclude it. They will pay more to not have this portion.</p>



<p><strong>Rob: </strong>[00:57:24] And maybe the podcast will be hosted on WordPress at that. Oh, wait a</p>



<p><strong>Jon: </strong>[00:57:28] it already is. It already is wonderful.</p>



<p><strong>Rob: </strong>[00:57:32] Sorry.</p>



<p><strong>Jon: </strong>[00:57:33] All right.</p>



<p><strong>Rob: </strong>[00:57:35] Bye</p>



<p><strong>Jon: </strong>[00:57:35] That's wonderful. Thanks everyone. I will now stop recording.&nbsp;</p>



<p><strong>Rob: </strong>[00:57:42] Smell mop!</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-242-Sourdough-and-PHP-and-No-Code-Dev-and-Knock-Knock-Jokes.mp3" length="55451888" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 241: The Freaky Friday macOS / Windows Switch</title>
    <link>https://herdingcode.com/herding-code-241-the-freaky-friday-macos-windows-switch/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-241-the-freaky-friday-macos-windows-switch/</guid>
    <pubDate>Thu, 16 Apr 2020 23:35:38 GMT</pubDate>
    <description><![CDATA[<p>Recently Jon switched to developing on macOS, and Rob&apos;s been developing on Windows. It&apos;s time for the Freaky Friday edition! The guys compare notes, what they like, what&apos;s confu</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 241</strong></p>
<p>Recently Jon switched to developing on macOS, and Rob's been developing on Windows. It's time for the Freaky Friday edition! The guys compare notes, what they like, what's confusing, and what they've learned.</p>



<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0241-Freaky-Friday.mp3">Herding Code 241: The Freaky Friday macOS / Windows Switch</a></p>







<div class="wp-block-group"><div class="wp-block-group__inner-container">
<p>Links:</p>



<ul><li><a href="http://brew.sh/">Homebrew</a></li><li><a href="https://haacked.com/archive/2020/03/03/how-to-work-from-home/">OhMyZSH</a></li><li><a href="https://cli.github.com/">GitHub CLI</a></li><li><a href="https://azx.ms">AZX.ms</a></li></ul>
</div></div>



<h3>Transcript:</h3>



<p>&nbsp;<strong>Kevin: </strong>[00:00:08] Hello and welcome to Herding Code. This episode is being recorded on eight April, April 3rd. Is that right? 2028 or is it still March? I feel like it's still March.</p>



<p><strong>Rob: </strong>[00:00:19] Kevin. That was smooth, man. You should do this for a living.</p>



<p><strong>Kevin: </strong>[00:00:24] And I am joined today by, smart ass, Rob Conery and, and Jon Galloway.</p>



<p><strong>Jon: </strong>[00:00:30] Hello.</p>



<p><strong>Kevin: </strong>[00:00:31] Okay. And we are here today to talk about, transitioning between Mac and Windows. Jon recently made a, a life change and, is doing more work on the Mac side and Rob has, recently transitioned over, do more Windows stuff.</p>



<p>So we thought it'd be fun to talk about how those switches went. Jon wanted, why don't you, sorry, go ahead.</p>



<p><strong>Jon: </strong>[00:00:51] we're calling this, this is the freaky Friday edition.</p>



<p><strong>Kevin: </strong>[00:00:54] right. Rob and Jon have switched over.</p>



<p><strong>Jon: </strong>[00:00:56] Over. On a Friday. Yes. Yup. Yeah. So I recently switched to , I'm working, I'm working with the VS for Mac team. I'm kinda like, I'm like, so it's a little bit less, I don't know. So my, my role really is just like dotnet dev on a Mac. So, but you know, mostly looking at, Visual Studio for Mac. Yeah. So that's been fun. I've been doing most of my dev work on, on Mac for the past several months, and, and, yeah.</p>



<p><strong>Kevin: </strong>[00:01:25] So for people who don't know, like what is, what is Visual Studio for Mac, like what, what's the kind of the backstory there.</p>



<p><strong>Jon: </strong>[00:01:33] Yeah. Well, so this is confusing, right? So there is Visual Studio for Windows that's been around since it was, I dunno, Interdev or whatever. They'll, you know what I mean? It's like early, late nineties, early two thousands, whatever. It's been around quite a long time. Then, there was. There was Mono, there was Mono Develop, and then Mono became Xamarin and they had Xamarin studio and it was really focused on building Xamarin products.</p>



<p>And then with the acquisition of, of Xamarin by Microsoft, and then they've kind of productized it into Visual Studio and some of the, you know, like over time. Mono develop Mono is change. Like, so originally it was this cross platform, it was all GTK. It was,</p>



<p>There's some tradeoffs to doing that, you know, like in being fully open source cross platform thing too.</p>



<p>Like there's not the same kind of quality stability kind of things that you can get out of Visual Studio for Windows. So that's been a lot of the focus. And then the other. Visual studio is Visual Studio Code. And that confuses people. Like, cause we've done things where we'll do like a customer interview and it's like, okay, we're talking to a team that works on Visual Studio for Mac.</p>



<p>And then we'll talk to them. And they're like, yeah, I'm on my Mac using Visual Studio Code and you know, and we're like, Oh, okay. Well, so, you know, and that's partly our fault. Like branding and naming is hard. but the idea is Visual Studio Code is like a lightweight editor. You know, it's quick startup.</p>



<p>It doesn't, it doesn't have a whole lot of bells and whistles. which is fine for a lot of people that just want to type code and that code really fast. And then there are a bunch of extensions for it. And it's cross platform and open source. And then the idea is, you know, Visual Studio for Windows and Visual Studio for Mac.</p>



<p>The idea is more of a. Integrated developer environment. So something where you're, you know, you're going to have more like project templates and scaffolding built in and, and you know, more debuggers and analyzers and, and, that kind of stuff. So, so that's kinda, you know, the difference between the two.</p>



<p><strong>Kevin: </strong>[00:03:43] Okay. So. Why don't you give us like the quick, you know, like what was the initial transition to being a, a, a real Mac user like for you? Like what were the, what were the, what was the pain points? What was frustrating?</p>



<p>What'd you love.</p>



<p><strong>Rob: </strong>[00:03:59] It was. It was joyous to watch this go down on Twitter, I have to say.</p>



<p><strong>Jon: </strong>[00:04:04] Okay. Well, so let me give him my full Apple back story. I learned to, I learned to program on an Apple ][ in high school for summary. We had somebody that was a previous Apple exec. Like was part of the board of my school or whatever. And so we had all these Macs. So I was actually like the high school Mac geek and I was, I was doing all this, like I was way into HyperCard and I just loved all the Mac stuff.</p>



<p>And then over time I went to college, I'm like, what's this Windows crap where you have to do Windows? And so whatever. I learned some Windows and you know, over time it's, it's, I've had like two brains to it because. There's undeniably like Apple hardware and most software is like the fit and finish is just beautiful and it all just works really well.</p>



<p>And there's all, it's like just this one kind of. There's only, you know, one of them. So like they, they test it and make sure it's perfect and it works. And then Windows is kinda, yeah, it's been different. There's, you know, registries and I don't know, there's all kinds of stuff, but I got used to it. Right.</p>



<p>So, and then kind of more recently I was looking at my Twitter history cause I was asking stuff about Homebrew and I was like, you know, I was, I would say at Microsoft when .NET Core first was becoming a thing. It was first K project K, and then it was DNX, and then it was, .NET Core, and now it's going back to just .NET.</p>



<p>but anyhow, that part of the thing with that was it was cross platform. And so I, I, for a while traveled with two laptops everywhere. You know, I had a Windows laptop and a Mac book air, and I would, you know, pop it out and say like, here's my quick little demo, see it runs.NET core. And then I would put the laptop back away and go back to Windows.</p>



<p>You know, I mean, we really like, it was air quotes worked on Mac, but it didn't, I don't know. We didn't really do much with it, you know, we just made sure it compiled and ran, but there was no like IDE for it or editor. And there wasn't much that you could really. You know, w the most, I would say most of Microsoft presenters when they said it runs on Mac, that's about all they do is like, okay, we're done.</p>



<p><strong>Rob: </strong>[00:06:19] yeah, the punchline, the forever punchline.</p>



<p><strong>Jon: </strong>[00:06:22] Right. And runs on a Mac. I did have one experience with that though. I was in Moscow speaking at a conference. I was actually doing a, I had like a little five minute, five or 10 minute thing in a keynote at a conference here, and I had my Windows machine and my Mac. And I spilled coffee. I was like sitting in my hotel room.</p>



<p>I'm like, I am so ready for this. I've got all these demos ready and everything. I spilled coffee on my Windows machine. And it got into the keyboard and like I could very quickly like turned it upside down, put towels on and everything, and I'm like, okay, it's working fine, it's working fine. Going through, I start typing and I'm like, huh, the letter N isn't actually responding on my keyboard.</p>



<p>And then slowly like there is liquid inside the keyboard. It's like slowly like other keys stop working, you know? And I am in full panic mode. Cause I actually had a tech check that afternoon in the keynote the next day and I'm in Moscow. Like, I don't know what to do, you know, and then I'm like, wait a minute, I bet I could do most of these demos on the Mac.</p>



<p>And then I, I, I was like, wait a minute, this is an Azure demo. I can do this. I can, I can totally spin it. This is Docker. I can do that, you know? And I was like, I can do this entire thing on Mac. So. Yeah. So that was that. so anyhow, more recently, I,</p>



<p><strong>Kevin: </strong>[00:07:44] Jon Jon, do you realize that it was your subconscious that made you spill that coffee? Right? It was.</p>



<p><strong>Jon: </strong>[00:07:51] you should have seen the panic though. I was like, Oh, no, what are we gonna do? So, yeah, so I, I got this MacBook in September and I did the standard stuff. I've always done like I, so the first one I got was a loner and it was previously an intern had it. And I went through and did all the, you know, I got my old scripts, my, my Homebrew, and I did all my stuff and I just, you know, and then,</p>



<p>and then I got the real nice one in January.</p>



<p>And that was actually where Rob and I started having a conversation. Cause I. was like, do I even need Homebrew and do I need, what's, what's like, I've just always been doing stuff the same way and maybe there's, I don't even, you know, I'm not like a week-in, week-out Mac dev user. So I guess some of some of the stuff that was interesting to me is kind of figuring out the best way to install things.</p>



<p>and I guess to answer your original question, what's the experience like? You know, honestly, it's, it's kind of weird, but I feel like operating systems have gotten a lot less different over time. Like, I don't really feel like I hopped back and forth between Windows and Mac regularly. I use my Windows machine every day to, I, I ran OBS on it and I use it for, for some, some conference calls and I try to keep up with Visual Studio for Windows and.</p>



<p>And,</p>



<p>I, you know, honestly, it's like, they both have like, you know, a quick launcher thing, you know, there's, there's, I use Alfred, but there's also whatever spotlight. And then on Windows you've got the Windows key to launch stuff, and they both have decent, like Windows now as a pretty good terminal.</p>



<p>But the terminal experience is pretty good. I mean,</p>



<p>there's little things like on the Mac, I miss. I missed the touch screen. I actually am one of the few people that uses touchscreen and my MacBook, I'm looking at it now, it has all these fingerprints on the screen from when I tried to touch it and move something.</p>



<p>but yeah, I, I don't know, it's actually been less, a little less crazy than I thought. I don't have to edit the registry, so there's that.</p>



<p><strong>Kevin: </strong>[00:10:00] what about from like an application perspective? Are there things that you. you, you know, you use on the Mac that you really love or things that from Windows that you really miss.</p>



<p><strong>Jon: </strong>[00:10:11] It's taken me actually like doing dedicated development on the Mac to really dig into using the touch pad. the, all the things, the three finger swipes, the four finger swipes, the eight finger swipes, all those swipes. and things I really never kind of learned before, and I kind of finally get it.</p>



<p>Like, that's, that's usable. That's nice. I like... What else do I like?</p>



<p>the, I would say generally it, you know, it's, it's most of the time better. As far as, battery life, like I don't have to worry about battery life. When it was fresh and new, it was amazing. Then over time I slowly, I had to install, you know, some of the work stuff and, you know, then I'm running Docker on it and I've got syncing programs and stuff and it's not a, you know, and that eats away at, at some, but for the most part it's pretty darn amazing.</p>



<p>I actually, I don't think I'm supposed to, but I like the touch bar. I'm in the fingerprint scanner thing. I like all that.</p>



<p>I, I kind of find that pretty handy. I mean,</p>



<p><strong>Kevin: </strong>[00:11:14] Jon, you're killing your tread here, you know.</p>



<p><strong>Jon: </strong>[00:11:18] Well, so let me see what's frustrating to me.</p>



<p>Some of the stuff is just muscle memory, like I don't know how to do something, and then I go look, Oh, you know, one thing is Windows I think is generally more stable.</p>



<p>Like they move the cheese less often. So like if I don't know how to do something, I'll look something up and then it'll be like, and here's how you do it on a Mac, but it works on like Lion or it works on, you know, whatever. Like, you know. Like an old version and then like, Oh crap, what do I got to do? And then I find some long script and it's basically some like Unix hackers making something go, but then I don't know what all this bash stuff is doing.</p>



<p>And then somebody else is like, just buy this app and it's $5 and so there's a little bit, whereas on Windows pretty much I can go and find some random StackOverflow question (marked as not a question) eight years ago, but it still has the answer and it still works.</p>



<p><strong>Rob: </strong>[00:12:16] You know, I think with Catalina and some of the latest OS updates, they have locked so much down in the name of security, I suppose. I mean, you know, I don't want to poo poo that, but at the same time, Whoa, you know what I was trying to use the other day is a Audacity and it's like, no, it was totally blocked.</p>



<p>And I go to the developer's website like, yeah, sorry, can't use it on Catalina. I'm like, what?</p>



<p><strong>Kevin: </strong>[00:12:38] Really, you can't use Audacity at all?</p>



<p><strong>Rob: </strong>[00:12:42] You couldn't up until a month or two ago, I guess it</p>



<p><strong>Kevin: </strong>[00:12:45] Oh wow.</p>



<p><strong>Rob: </strong>[00:12:46] but what, what, this is an interesting thing to me is what Apple's trying to do is, you know, lock down, lock everything down just a little tighter now.</p>



<p>And people</p>



<p><strong>Jon: </strong>[00:12:55] I mean, how is that different? Is that basically the Vista moment?</p>



<p><strong>Rob: </strong>[00:12:59] yeah, I know, right? That's what a lot of people have been saying. It's pretty funny.</p>



<p><strong>Jon: </strong>[00:13:04] Cause I mean that was, now, I don't know if they've done it better or worse, but part of the deal with Vista was like. It was a little heavy handed and it was, the UAC thing popped up all the time and it, and it was, yeah, and it didn't like remember things. I think that they over time, like with Windows 7, they got it better where it was like, don't elevate all the time.</p>



<p>Or, or, you know, like be smarter about when to elevate.</p>



<p><strong>Kevin: </strong>[00:13:29] I found that with Catalina, like when I first installed it, there was always this like flurry of new popups and approved this and that, but in the steady state, I don't really see that stuff very much.</p>



<p><strong>Jon: </strong>[00:13:40] Okay. So, so I think that's actually a really big deal there. The steady state on either Mac or Windows is a lot less bad than the kind of time to time usage. So like for instance, I've, you know, I know people say like, Hey, I just stepped on my Windows VM and it's installing 90 updates and this sucks. You know?</p>



<p>And, and actually I think that's gotten a lot better with Windows 10 but. I have the same thing. Like when I used to open up my Mac every two months and it would have a ton of updates and X codes updating and blah, blah, blah, you know, and, and, I've, I feel like UAC and the Catalina elevation stuff is the same where it's like, first install, this sucks.</p>



<p>I hate it. And then after a few days, you're right, you've got everything installed and you don't have to worry so much.</p>



<p>One thing we gotta dig into this Homebrew thing. Cause Rob really kind of pointed me to some of the big benefits I was thinking of. Homebrew is basically like, it's another Chocolatey. and Chocolatey's cool but it doesn't work quite as well for things that auto update. and you know what I mean?</p>



<p>They're not like kept in sync. And then I F I find like a lot of stuff when I would search for the installers on, on the Mac, it would, there would be like a big bootstrap blue download button and it would just download an installer, you know? And then I'm like, well, if, if everybody's got these big blue download buttons, why do I need Homebrew again?</p>



<p><strong>Rob: </strong>[00:15:10] Yeah. Well, it's, I mean, it's, Kevin I'm sure would agree with, well, I don't know, maybe not&nbsp;&nbsp; the thing with that is that there's often two or three ways to do something. you know, like if you go, wow, where does I, I was looking at something, I was gonna have an example ready at the top of my head, but like, if you go to any one of these sites.</p>



<p>Out there that make these development tools, for instance, you can download the source and compile it and build it your own self. You know? That's one way you can use Homebrew to install a package. And then yeah, you can also just download this gimme a DMG file and I'm going to just drag over the compiled binary.</p>



<p>And I think the interesting thing about that is. That that is a spectrum, right? That's a, like you start being a total neck beard. Like I'm going to read, I'm going to build my own source, which a lot of people like to do. they feel like they have more control over it. But then in the middle is Homebrew, which will download the source and then build it for you, which is pretty cool.</p>



<p>And also shove it into the cellar, which is what we talked about. So you know, it, you have execution rights and all these other things. It just kinda configures these things for you. And the DMG files is, you know, is the.app directories that you just drag over into your application folder. And I think the thing that's really fascinating to me, watching all this is the security model behind it all.</p>



<p>And that's one thing I really appreciate about, about Macs. Like you don't have the UAC, you know, you don't really elevate. You don't have to do pseudo, anything that's in your application directory will run, but it's only got certain privileges. You know what I mean? Like you can't touch what's called wheel inside of the Mac user paradigm.</p>



<p>There's things that are just, you cannot, even though you're an administrator and you're on your machine, it's, you can't blow that away because it won't let you, which is kind of funny.</p>



<p><strong>Jon: </strong>[00:16:54] well, it's, I think that was a huge thing that you pointed out to me because if it's just a check and scripted and you know, whatever, it's like, okay, fine, but I don't plan to rebuild this machine for a while. But then when you pointed out to me that no, it's actually installing, like, you're not having to elevate when you do the Homebrew.</p>



<p>Experience and it's, I don't know, doing magical sibling things or whatever, but it's, it's installing it differently. That's a big deal. And I think one big example of that is actually this, this past week with Zoom and there are all those things about Zoom, elevating privileges and tricking people and showing like, I, I skimmed it, but it looked like Zoom was showing like fake dialogues that were grabbing your password.</p>



<p>And. I don't know mining Bitcoins or something.</p>



<p><strong>Kevin: </strong>[00:17:43] Yeah. That was as bad scene dancing. It's like mimicking a operating system login dialogue.</p>



<p><strong>Jon: </strong>[00:17:50] Right, right. So, but if you install, I saw somebody tweet and they said from here on out, I'm not installing anything I can install with Homebrew cause I don't want to give it, I don't want to give away those elevated permissions to anybody.</p>



<p><strong>Rob: </strong>[00:18:01] yeah. Well, it's, it's one of those weird things where it's like, Dropbox is a good example of this. If you install it on a Mac, it will, it will prompt you and say, we need full disk access. Or whatever it is. I think it's full disk access. I said, you know, what the heck do you need that for?</p>



<p>You know, why do you need that?</p>



<p>Well, it turns out that if you want to integrated with your finder so you can see the little Dropbox icon and you can like move things around, that's all it wants to do. Well, so they say, but either way it's like, Oh, right. Well, I mean the finder has full disc access. So you know, Dropbox has to ask for it.</p>



<p>But the hard thing is. Is that they don't explain it very well. I mean, I'm not saying Zoom. I mean, I'm going to just kind of sidestep that argument</p>



<p>because I mean, it's one of those things that sometimes people just do something and who's got the quote, you know, don't ascribe to malice what you know is you could be ignorance, you know?</p>



<p>I mean, they, they just might say, Oh, we need to elevate because we need to have access to show the screen, you know,</p>



<p><strong>Jon: </strong>[00:19:00] Well, yeah, they probably had people freaking out where it's like, I can't run this on Catalina and my business is paid for all these licenses and you know, fix it now.</p>



<p><strong>Rob: </strong>[00:19:09] Yeah, and I don't, for the, you know, before you send me hate mail, I don't mean to defend any bad things that anybody's doing, but these are just some of the silly things that having a more strict operating system tends to force these application providers into, you know.</p>



<p><strong>Kevin: </strong>[00:19:26] So Jon, are you, are you, were you trying to install like applications with, with, with Homebrew?</p>



<p><strong>Jon: </strong>[00:19:31] Yeah. Yeah. , okay, so first I put on Visual Studio, Visual Studio Code, GitHub desktop, gosh, virtual box. you know, a bunch of, like, I installed the Windows office stuff. and all of those when I went and, and, you know, bangled it up.</p>



<p>It was always, just the download buttons, you know, and so. and they, they auto update and all that. And they, but then over time I started looking up things like, for instance, I found a shell script. I liked that, that, when I unplug, when I'm plugged into ethernet, disables the. Wifi cause I don't know, like it toggles, you know, I don't need to have both on.</p>



<p>And you know, some stuff like that. So then it's an, and like just different scripts along the way. And then it was like, Oh, you need to add it to path or you need to, you know? And so then I'm starting to like drop scripts all over on my machine and I'm starting to feel a little less in control of like, I don't really even know what's going on here.</p>



<p>You know? And then you're. You know, chmod-ing everything and you're like, you know what I mean? Right. So then after a while, then when Rob talked to me and he's like, look, you know, this is, this is organized as repeatable. It's, you can, you can remove stuff. You can. And I'm like, okay, I get it now cause I'm starting to feel like, you know, messy desktop syndrome from my, from my machine.</p>



<p><strong>Rob: </strong>[00:20:50] leave OSX alone.</p>



<p><strong>Jon: </strong>[00:20:54] the one, the one that I started</p>



<p><strong>Kevin: </strong>[00:20:56] say</p>



<p><strong>Jon: </strong>[00:21:00] it, you know, I can sidestep this now cause I can just call it Macko S and I'm safe. Right. I can't mess that up.</p>



<p><strong>Rob: </strong>[00:21:07] Oh, yeah, that's true. I guess I just did a dumb dumb.</p>



<p><strong>Kevin: </strong>[00:21:12] Windows is running his brain?</p>



<p><strong>Jon: </strong>[00:21:14] So the one that I ran into, the first one was, I didn't have Homebrew installed. I used to always have to use Homebrew, like right away because, the SSL implementation that was used in .NET like required Homebrew to install. So that was always first thing on the machine. But then this time around, I was like, I didn't actually hit anything that said, get it from Homebrew and, or you can only get it from Homebrew until I hit the GitHub CLI, the new, whatever, G H thing.</p>



<p>And then that one was like just "brew install" it, but they had a download button, but the download button was just a zip or tar. And then the tar was just, the X. And then I'm like, okay, do I drop it somewhere and then add it to the path and where's the best place to put it? You know? That's, that's another thing too, that's being newer to the system.</p>



<p>I'm not sure, like where's the right place to put it? Do I make a. You know, like just a folder called stuff or you know, like utils or something and, and add its path and, and, or is there, and there's all these different user directories and I'm not sure which is the right one. Oh, he is. And stuff. So,</p>



<p><strong>Rob: </strong>[00:22:28] that's a good question.</p>



<p><strong>Kevin: </strong>[00:22:29] but nobody's really sure which is the right user directory....</p>



<p><strong>Jon: </strong>[00:22:34] so that's part of why I like, okay, if Homebrew is doing it, I'm guessing somebody like some, some nerds with big beards of like. Fought back and forth about this</p>



<p><strong>Rob: </strong>[00:22:42] yeah. Well, I'll tell you what, you know, I usually, when I, when it comes to these things, you know that people are so creative. With, packaging things. Like for instance, Reddis you know, I, I realized, cause I have a newer machine, I didn't ever read Reddis on it. And so of course they start ticking off, you know, okay, do I, do I have to install it?</p>



<p>You know, do I use Homebrew? Do I just use Docker? I mean, there's like all these things, right? And then I'm thinking someone is probably bundled this in a.app file somewhere. And sure enough, you go and you look up reddis.app and they're like, yeah, just download it, run it, run it as a thing. The little icon shows up in your, in your icon bar.</p>



<p>Oh, that's cool. So I did that, you know, and it opens up the CLI for you and everything, and I'm like, okay, that's the best option. I'm doing that.</p>



<p><strong>Jon: </strong>[00:23:24] Yeah. So I will tell you too, like experiences that went against the whole Homebrew and one was I did, I've been doing these Project Tye. tutorials. So Project Tye is the sing, the dotnet team, David Fowler and some folks who are building that is like kind of a and orchestration layer on top of Kubernetes and Docker that kind of magically discovers stuff.</p>



<p>And then it creates some YAML files. And if you want to override stuff, you can, but it's got like some conventions and autodiscovery. But so I, one of the pre-recs was like Docker, so I did okay. "brew install" Docker, but I didn't actually, that installed. I didn't ha, it didn't actually run the Docker desktop thing and I didn't have the daemon and the client and everything going. And then the same thing.</p>



<p>I, so anyhow, then I started doing these tutorials and you know, it's like barking at me and there's weird Unix errors and I'm like scared and stuff. And then people on the Twitch stream are like. Type this go type that, you know, like delete your hard drive and stuff. So then, so finally I just did the Docker install and then it just worked, you know, so I don't know.</p>



<p><strong>Kevin: </strong>[00:24:39] I've kinda gotten back and forth on this over my Mac career, but the way I've kind of landed on it is. If I'm installing "programmery" things like, you know, like "programmery" tools. Then I use Homebrew. If it's like an application, if there's a.app that I don't use on brew. and that I, I found that to be, and I, I'll, you know, preface that by saying like, I don't generally like have a big giant script for rebuilding a machine from scratch.</p>



<p>If I want to do that. I haven't done that in years. So. That is what useful, you know, case for Homebrew. But I generally find for applications like does nicely packaged auto updating applications, it's not really worth it to use Homebrew.</p>



<p><strong>Jon: </strong>[00:25:21] Yeah. Okay. So. That is an interesting trade off is like you don't, like, Mac does such a good job carrying forward old, like you can reinstall the machine and just bring everything along and like don't have to rebuild or like, you don't have to rebuild your machine for one thing, right? You get a new machine and you can just carry your stuff along to it.</p>



<p>So I think on Windows, I, I did that more when I rebuilt my machine. I wanted to have. Scripts to like get it up and running and in a good state. And a lot of the time I actually wouldn't just execute the script. I'd like copy and paste and execute bit by bit because I wanted a little more control, but it like, at least was my checklist.</p>



<p>I'll tell you one thing that's interesting to me that's different in the Mac and Windows world is you've got these like. Okay. So you've got the, you know, the big official programs, you've got the program or any things where, you know, fine, you Homebrew it and stuff. And then you've got these like tiny little one off apps that are in the app store that are $3 or $7 or, or you know, $10 and they do one little thing and they're beautiful.</p>



<p>And they have, of course, they have like nice fonts and stuff, but it's like, do I want to pay $8 to the, you know, and it's like. And those things are not going to be on Homebrew, I don't think. And you know what I mean? So that, and we don't really have that whole</p>



<p>mini app thing on Windows so much. There's the Windows store, but that's the time you don't, I don't know.</p>



<p>I haven't bought anything off there for awhile.</p>



<p><strong>Rob: </strong>[00:26:54] You gotta you shell script son?</p>



<p><strong>Jon: </strong>[00:26:58] Right. But, okay, so like there's all these things, Alfred, right? Is it an example? Do you Homebrew Alfred.</p>



<p><strong>Rob: </strong>[00:27:05] Oh, no, I just, that would be an app that I would probably just go and get. Oh, I get what your question is. Yeah. I mean, just in general, the choice between Homebrew and, For me, the choice between Homebrew and going to the app store or a shell script literally is like Kevin said, you know, is this going to be a long running thing that I want?</p>



<p>You know, on my machine, Postgres is a fine example of this because they lately have been revving Postgres constantly and. You know, after a while, you know, you got to pay attention to what's on there and like the databases that are running, and it's not going to hurt my machine, but what has worked so much better for me is Postgres dot.</p>



<p>AF or you can Google that, but that's just an app that runs in your menu bar. And I love it because you can have multiple servers and they can have multiple versions and sometimes I want to bounce between the two, so that's really nice. but for something that's like UI ish, like, like GitHub desktop.</p>



<p>for instance, I would, you know, I would expect to go and grab like a DMG and just drag it over. and what else? You mentioned another one. Oh, Alfred too. Like Alfred. Nice. Give me an installer. I wouldn't want to deal with. Homebrew was at</p>



<p><strong>Jon: </strong>[00:28:09] That is one slight difference between like Homebrew and Chocolatey. Chocolatey is more like, it works just fine cause it, it's more like.</p>



<p>It'll just didn't launch an installer, with the silent options. So like on a Windows box, I can install, like for instance, he mentioned Audacity and the, you know, just tends to, I mean, I, you know, like Visual Studio for Windows, like with all the different, like workloads checked off, you can get that on Chocolatey and stuff, right?</p>



<p>So.</p>



<p><strong>Rob: </strong>[00:28:39] Yup.</p>



<p><strong>Jon: </strong>[00:28:40] So that is a difference where like it is a little nice to not have to remember like, Oh yeah, shoot, I don't have, you know, Postgres app install. I don't have this install it, you know, and like go get those all manually.</p>



<p><strong>Kevin: </strong>[00:28:55] Yeah. I think I'm, you know, I'm just looking over my, my brew list there and like just about everything is a command line tool that I've installed through&nbsp; Homebrew. I don't see just about anything that like actually has a GUI.</p>



<p><strong>Jon: </strong>[00:29:09] Yeah. Yeah.</p>



<p>Yeah. And it does. It is interesting. Then you get to overlap, like with the auto updating things and the like. I'm not actually even sure. Like if I home brew install something, like say I don't GitHub desktop and it auto updates</p>



<p>and then does</p>



<p><strong>Kevin: </strong>[00:29:29] Yeah. That with MacVim I installed back then through the Homebrew at one point, and then it's been auto updating and I have no idea. I think I have like three different versions of home Mac on my machine now because that.</p>



<p>You know, you mentioned migration assistant, and I just hold, it was going to mention the one thing that migration assistant does a terrible job of migrating is the Homebrew directory. Every time, every time I go through a migration, it's like, shit Homebrew's broken. you know, I have to like, you know, change ownership on a bunch of folders and, that, that is my biggest pain point actually with Homebrew is just the.</p>



<p>It's just breaks periodically and it's something that I use rarely enough to, like once every three months I'll go do something on it and it's probably broken and I have to brew doctor, you know, change, like some Matt update, change some files as to permission and I have to go re change the, you know, the folder permissions.</p>



<p>It's my biggest by far complained about Homebrew is that it just tends to break periodically.</p>



<p>&nbsp;Well, this isn't really the Homebrew show, so there's probably other</p>



<p><strong>Jon: </strong>[00:30:33] No. No. Okay. Talk to me. Talk to me about dot files. Cause like as I started customizing things and there's like, you know, Z shell and amazing, how do you pronounce it? Oh my Z. Oh my Z shell.</p>



<p><strong>Rob: </strong>[00:30:45] Hey, welcome to the question of</p>



<p><strong>Jon: </strong>[00:30:47] Yeah. Okay. So, but then I start like looking at that and customizing it, and I did the obligatory, like everyone has to do like get the power line, I'll just perfect and stuff.</p>



<p>And then I start looking around and everyone's like, check out my doc files here. And everyone's like out there, doc files out. Do you folks do that? Is that,</p>



<p>don't know.</p>



<p><strong>Rob: </strong>[00:31:08] I do. one of the things I love about, Oh, my Z shell, let's just call it that, is the custom directory and anything that you put inside of there, gets loaded into your shell. So like I have, let's see, I'm going to bring them up right now. So I have a bunch of little aliases that I use. Have you explored aliases at all?</p>



<p><strong>Jon: </strong>[00:31:26] I have. There's like a ton of, I need like a cheat sheet on the wall.</p>



<p><strong>Rob: </strong>[00:31:30] Yeah, well, I mean, you could just make whatever commands you want an alias. And so like, I'm looking at my, I'm looking at my, custom directory here and I've got, I got dot ZSH files for all kinds of things. I have one for Jekyll that will make a Jekyll post for me and stamp it with a date. I have another one that will go through a directory and resize all pings in and convert them using image magic to JPEG, you know, and an appropriate size.</p>



<p>Anyway, I've got a ton of this crazy stuff and I, you know, it's not like I'm a shell nerd, but like, if you find yourself doing things over and over and over, I mean, that's what, that's why I'm a, Dykstra made shell scripts for us and so we were just kidding. That's just a Gary Bernhardt and vacation right there anyway.</p>



<p>You can make a little function that gets loaded and, and you can just kick it off to a shell process. And it's a, it's really fun the way these things work.</p>



<p><strong>Jon: </strong>[00:32:22] I w</p>



<p><strong>Rob: </strong>[00:32:23] those are my dot files.</p>



<p><strong>Jon: </strong>[00:32:24] I started looking around at, at those plugins. And I would say there's actually an official.NET XE shell plugin and all that. I mean, it's just like short little commands for like the.NET SDK scripts and stuff. But I was like, wow. And yeah.</p>



<p><strong>Rob: </strong>[00:32:41] I think my favorite plugin for Oh My ZSH is, the dot N or dot E and V plugin. So if you have a N a dot, a dot. ENV file, in your project, it'll automatically get loaded whenever you CD into that directory. And it just makes life so nice. So if you imagine you're working on a projects in VS Code, like a node project and you're tired of running mocha, or you're tired of setting all these configurations, or you want to have like your.</p>



<p>you want to have something that happens in particular, whatever. And you could just load up your dot, ENV file. And inside that .env file, you can not only put, environment variables, but you can also set aliases. And so they can be aliases that are specific to your project. so for instance, right now I'm actually, I have a project open in front of me that I've been working on, and I have a binary that runs it's node.</p>



<p>And so I'm using commander. And so to run this like I could type, NPM, run, you know, blah, blah, blah. It would automatically load everything. And off we go. But I don't want to do that. You know, I want to, I want to be able to just type in what my users are going to type in when I pushed this module cause it's going to be a global executable.</p>



<p>So anyway, inside of my .env file, I have an alias. and it's an Azure thing. So I just alias to Azure to this node executable. And so now I can run it and execute it as if, you know, it's just a, if I'm just running it normally, I don't know. That's a long screed, but it's pretty, it's, these things are addictive and next thing you know, you're like scouring other people's things.</p>



<p>Like Ryan Bates of RailsCasts had the most amazing dot files for building servers back in the day when we had to do those things. And, Oh my God, it's, it's so, it's so fun.</p>



<p><strong>Kevin: </strong>[00:34:21] Jon, I was going to ask you, do you PowerShell on the Mac or do you do just, you know,</p>



<p><strong>Jon: </strong>[00:34:27] So I, I have it, but I've been trying to do Z shell mostly. so I, I have it installed and that's part of, part of why I'm playing more of terminal lately is the new, Visual Studio for Mac has integrated terminal and it's like, it's integrated pretty well with the, You know, with the macOS terminal.</p>



<p>So like, I can be running commands in the terminal and then switch over to, you know, the Visual Studio, terminal and up arrow and my command histories there and stuff. so like, so I have like different terminals open, you know, like tab terminals open. So some for PowerShell, honestly, I'm not. Great at PowerShell and I don't think I ever will be.</p>



<p>It's just, it's, it's like as a language just constructed as in something that I've got a bunch of PowerShell scripts saved out every few months. I'll like geek out on PowerShell and write a script I'm really proud of, and then I'll look at it three days later and go like, what, what, you know what I mean?</p>



<p>It's, it's just the, the, I dunno. Do you folks use PowerShell much?</p>



<p><strong>Kevin: </strong>[00:35:35] I don't, I'm, I'm glad to hear you say that. Cause sometimes I feel like I'm the only, well I've been X Windows guy now, but like, you know, even back in the day, I never took to PowerShell. And that's not a little bit of stuff in it, but it just didn't really fit my brain in a way. Wait, and it was, I dunno, it just didn't</p>



<p><strong>Jon: </strong>[00:35:51] I've, I've wanted to like it and I'll like, you know, for some people, I guess it's just not intuitive to me. So like, you know what I mean? I like 'em.</p>



<p>I spend a lot, I spend as much time as, I would just like looking up a bash script and there's, you know, for like Mac or whatever, there's going to be more like actual bash scripts doing what I want to do.</p>



<p>So,</p>



<p><strong>Kevin: </strong>[00:36:13] Yeah. Yeah. I mean, I, I, I, I admire the, some of the principles that they're trying to address. Like, you know, not just passing text around, but passing richer constructs, but just the way it actually worked. Okay. just never fit in my brain.</p>



<p><strong>Jon: </strong>[00:36:29] I've done some like PowerShell scripts that I was like, Whoa, this is incredible. You know, like connecting to services and, you know, pulling stuff down and like you're saying, work, working with things as objects. And it's nice to be able to use like.NET objects that I know and, and you know, so, I mean, it's definitely as powerful.</p>



<p>It's just, I've always felt a little bit like I'm writing a long regular expression that I'm not going to understand the next day. You know?</p>



<p><strong>Rob: </strong>[00:36:56] so true. Well, I'll tell you why. Here's a, here's a fun, you ever use the GI utility get ignore</p>



<p>That's a cool one. I think to me that, that really shows the power of what shell scripts can do. you know, cause when you start a projects, everyone needs to get ignore. And sometimes, you know, these binaries will create one for you specific like node might or&nbsp; whatever.</p>



<p>But anyway, these people created this, These utility called a GI. Anyway, it's a function and it uses curl, to go out and curl just goes and gets a remote, remote address using HTTP, whatever. Anyway, it just, it just goes out to the web and grabs the get ignore file for you. You just have to pass in the argument of what you want and it drops it in and you've just created your getting ignore file and you're good to go.</p>



<p><strong>Jon: </strong>[00:37:45] Oh yeah.</p>



<p><strong>Rob: </strong>[00:37:47] if you go to, and I did that a little bit. I was just playing around. So if you go to this website called AZX.ms that's, that's mine. And so what I did is I, I, I created the same kind of thing where I created this function that goes into your Z shell and it just curls out to this website if you need to create an Azure script, whatever.</p>



<p>And it just pulls it down, which is pretty fun. I mean, it's, it's pretty neat. It's just like this one line command utility that is not, I mean, and it goes out to a website, pulls down the source, which I think is kinda cool.</p>



<p><strong>Jon: </strong>[00:38:21] yeah, yup. For some of these things I've, I honestly, I would like, if I'm using it a lot, then I would remember it, but otherwise, I don't know. You know what I mean? Otherwise, yeah.</p>



<p><strong>Rob: </strong>[00:38:34] you got to look it up. I don't know anybody that knows these shells. Well, I do know a few people, but, I, I can never remember these things.</p>



<p><strong>Jon: </strong>[00:38:41] Well, so I'm, I'm curious, Rob, what your experience has been like, eh, you know, and I'm moving over to Windows, how that's gone.</p>



<p><strong>Rob: </strong>[00:38:51] it's been interesting. So internally, you know, a lot of the people in my group have Macs, I would say, I would say, I don't want to say the majority, I think maybe the majority do have Macs. So anyway, when we, our group is, is mostly focused on, reaching out, you know, beyond the microsoft.NET developer realm.</p>



<p>So that's why, you know, we all come from those areas. So anyway, having a Windows machine. Was considered the exception, but slowly, you know, our it departments and, and security people, you know, they're like, we need you to, we need you to make sure your machine is clean and a bunch of other things. So what did happening is, people were starting to just move over to Windows cause it was easier to connect.</p>



<p>And I'm not saying this in any bad way, it's just the nature of life, right? And so that's, and I finally, one day I was like, you know what? You know, I've been using this Mac forever. and WSL has come out. And I think I want to try, I want to try it out because the interesting thing to me is, you know, I always liked that part of Mac.</p>



<p>I like Unix. but it's not, it's, it's kind of a weird, contorted bit of Unix, you know, I don't own this machine. Like I, there's certain things I cannot do, even even if I wanted to, which is kinda good, but at the same time, it's sort of like Unix light, I guess. So anyway, going over to going over to the Windows machine and kicking up Ubuntu.</p>



<p>Was freaky and I mean freaky in a good way. Cause I mean, I, I've used Ubuntu, but I, I've never really like had it as a development machine. And I know that people that have jumped into Linux land, from, from Macs, they swear by it and they will not go back to the Mac. You know, for anything that has to do with development.</p>



<p>They like to Mack as a machine. But you know, operating system is, is interesting. I think it looks pretty, I think it looks the nicest out of any operating system I've ever used. But going over to Windows, I was pretty impressed. I mean that the graphics look good. I mean, there's a little bit of Nudgee things that, you know, for me visually, I can't stand.</p>



<p>I mean just the, just the spacing and the architectural layout of like, the of the, of the interface of some of these applications drives me absolutely crazy. Like a, what was the one I was using the other day PowerPoint and I was going through the menu bar and I'm like. Was this put together by five different groups of people that like some use metric and some use royalty.</p>



<p>I mean, this is weird, like maybe some use pixels and other use and I have no idea what people are doing, but there's like misshaped misalign font size differences, IUI, but whatever. I mean, that's just me being picky. But it's, it's funny because like, comparing the, the, our notes, right? You know, you're having a hard time with Homebrew and installing things and getting work done.</p>



<p>And I'm like, offended by the visuals,</p>



<p>which just I think really describes the communities, right?</p>



<p><strong>Jon: </strong>[00:41:45] Yeah, yeah.</p>



<p><strong>Rob: </strong>[00:41:47] No, but it was really fun. I remember, Hanselman helped me get, rolling on a WCL too, which required, you have to be on insiders and whatever. But. I remember kicking the thing up just being, I was blown away and I'm like, wait, where is this?</p>



<p>Is it a VM? What's happening? And, and like, the only answers you can find online or like, it's kind of a VM kind of not, don't worry about it. I'm like, but, but, but, but you know, I, what am I resources? And like, you know, being good Unix person, you can go and ask the machine what, you know, what's available to me.</p>



<p>And sure enough, you're, you have access to everything. You have full resource, full Ram, full everything. I couldn't believe it. And I just started like setting up this Unix box and using the Windows terminal, the new one. And I mean, I, I fell in love with it. I mean, I got it. I got Z shell set up. I, I have Dropbox, I have all my stuff in Dropbox, including my bin files, my dot files and whatever.</p>



<p>So once I had Dropbox set up on Windows. I was able to access Windows from inside the om, which blew my mind. But inside the, Unix bits. And so I just did my, like startup using this, you know, Z shell, right? And now I have it starting up the same on all my machines. I have all my aliases. They're all, they're all the same.</p>



<p><strong>Jon: </strong>[00:43:03] yeah. Okay.</p>



<p><strong>Rob: </strong>[00:43:05] Yeah. So Dropbox will sync everything. And that's what I mean. We talked a little bit about how do you move stuff? I've, I haven't moved anything using the utility, the Mac utility. I haven't. I did that once and I hated it cause it took like a whole night and I said, why am I doing this? I'll just pay Dropbox.</p>



<p>And it doesn't have to be, you could be anything you want, but for me like a sink utility like that, it's just been, it's been wonderful. So I don't have to think about these things. But anyway, I think the only, there's been a few wrinkles here and there, but I've always found a solution. So here's one. I was working in Windows terminal and I'm so used to, I'm so used to copy pasting little commands here and there and, or like, you know, I'll ask, I'll ask the shell to go do something and I'll just copy paste the result.</p>



<p>And you can't really do that through Windows terminal. You have to, it's weird cause you have to right click and do something else. And it was just that, that kind of got to me. But then I found, of course, if I just run the terminal, which you can inside of VS Code, it works. And, and I found that out because I was asking Scott again like, Hey, okay, so I, you know, I need to, I want to open this project, this node project now that I've downloaded from get what I do.</p>



<p>And he said, what would you normally do? And I'd say, I don't know, code dot. And he said, do it. And I did it and it worked. And I was like, that's voodoo. And that's when it,</p>



<p>that's when it hit me upside the head. Then what I actually, and seriously it was, it was one of those moments where, you know, people say, people say like, Oh, it was this, like the air went out of the room, or it was like this transcendent moment.</p>



<p>I mean, no, it truly was. I couldn't speak for a couple seconds. And I'm like, are you telling me I've got a Windows machine? Let's split brain and on one side is Unix. On the other side is like Excel and word and all these things that I kind of miss. Actually, I like outlook too. I know people don't even yell at me about that, but like it was, it was really, really bizarre.</p>



<p>And so yeah, VS Code opened up and it's just in that directory and it knows about WSL. I have the WCL extension running, but I was just like, you've got to be kidding me. And cause it looks beautiful. Right. And then I was then, so what I did is, and he said, open up the terminal inside, BS code. And I did. And there was my Z shell terminal, like everything.</p>



<p>I'm like, this is, this is crazy. And so of course, copy paste and everything works as I expect in there. And then I'm like, this is, this is it. This is a very Linuxy, unique sea experience where you, your shell is different than the CLI, which is different than, you know, or your terminal, excuse me. It's different than your shell.</p>



<p>And you can choose whatever terminal you want, make it look however you like. And I was like, Oh, wow. Oh wow. Oh wow. Oh wow. Oh wow. And it was, it was really fun. So I just started working in that. But here's actually the best part, and this is a totally, the geekiest dumbest thing. so I bought this, I bought this groovy laptop and I really like it.</p>



<p>it's not one of the touchscreens cause I don't, I don't know. I don't like fingerprints all over my screen. but I wanted something with horsepower cause I do a lot of video work. And so I got approval for that and I went and just, you know, it got white, small upgrade, not very big, but it was a, it's a gaming machine.</p>



<p>And so I went to best buy and they had an open box for this monitor that I bought for myself. And then I just went nuts. Wait, I've got, I've got a killer gaming machine here. Oh my God. I just like, it hit me all of a sudden, like I can now play games and like the PC, it's been so long. And so I bought this 37 inch monitor that was open box for 280 bucks.</p>



<p>I couldn't believe it. And then I was like, well, I'm going to get a cool keyboard too. So I got this mechanical keyboard and this gaming mouse and is sitting next to me is like, got all these cool colors and the keyboard is just tremendous. Wow. It's so cool.</p>



<p><strong>Jon: </strong>[00:46:54] Which, which keyboard.</p>



<p><strong>Rob: </strong>[00:46:57] I got the Corsair and I forgot the, it's the quiet key.</p>



<p>It's a newer one. Corsair, M, X, something like that. but yeah, like you want to hear it?</p>



<p><strong>Jon: </strong>[00:47:07] Very nice.</p>



<p><strong>Rob: </strong>[00:47:08] Yeah. Yeah. So I've been enjoying it. I, you know, it's one of those things where if I sit down, To do a particular thing. Sometimes I have to use my Mac, for instance. I record a lot of video and I am much faster at ScreenFlow than I am in Camtasia.</p>



<p>So I'll just, I have, I have two desks and I have one chair that swings between each, and I'll swing over here and I'll do my recording or whatever, a keynote. I'm also way better in keynote, so I figured, you know, I don't know, I'll just use these things. But then for work stuff. You know, a jump over to a jump over to my other&nbsp; to the Windows machine and I'll be there for most of the day.</p>



<p>Just plunking along and doing my thing and it's pretty fun. I think the one thing that I have to get used to. Is, I'm used to doing like thumb on the command key, like command Q or command w to close a window, you know, command a. So I use my thumb for that. But on the Windows machine I have to use my pinky for the control key.</p>



<p>So that's taken a bit of a Delian cause yes. Like for the first few weeks that I was doing it, I kept popping open the menu. I'm like, why is it keep,</p>



<p>Oh right.</p>



<p>Because that's where the Windows key is.</p>



<p><strong>Jon: </strong>[00:48:14] You know, it took me some time. Speaking of commands and controls and stuff, it took me a while and I still don't really have the, it seems still a little bit random. What is control on what's command on Mac and on on Windows? I feel like there's kind of a control and. Alt and Windows key, all kind of like conceptually do different things.</p>



<p>I can never remember. Control, command, shift, Q, a, you like, whatever. You know what I mean? It took me a while to remember like what all the screenshot keys are and stuff. so I feel like that's a little bit weird. I don't know.</p>



<p><strong>Rob: </strong>[00:48:51] Yeah,</p>



<p><strong>Jon: </strong>[00:48:53] On Windows lately I've been liking also, I don't know if you use this, but the Windows power toys, There's some cool stuff that they're adding in there that's like just all these cool shell features that it's like, Oh, I wish they had that a long time ago, but this is beautiful, you know?</p>



<p><strong>Rob: </strong>[00:49:07] only thing that I do in Windows proper is, open up edge, which I use. cause it, it, it has all the certificates and everything, so it just goes and accesses a corporate email. So I mean it's, it's seamless. And, outlook web is great. I can't use outlook web, for people who are wondering, the way our security is set up.</p>



<p>I can't use outlook web unless the machine is registered with the, with the company. So, yeah, I mean, other, I used to be able to do that, but not anymore. But anyway, that's the only thing I do inside of Windows. And maybe I'll play around, in outlook or some other too. Like I really like, Oh, what's the screen capture tool called?</p>



<p>Snagit. Yeah.</p>



<p><strong>Jon: </strong>[00:49:48] Yeah. But they have the built in. well, I, I'm sure it's negative does more, but they do have on Windows now, the wind shift as,</p>



<p><strong>Rob: </strong>[00:49:56] yeah, so I've been using that to Snagit. snap. I liked the way Snagit stories, everything in a library. and so I've been, yeah, I've been doing that, but yeah. You have to poke</p>



<p><strong>Kevin: </strong>[00:50:05] So wait, Robbie's, are you saying you mostly just live inside of WSL?</p>



<p><strong>Rob: </strong>[00:50:11] yeah. And</p>



<p><strong>Kevin: </strong>[00:50:12] So you're saying your favorite, your favorite feature of Windows is that the one that lets you pretend is not Windows? Is that.</p>



<p><strong>Rob: </strong>[00:50:17] Yeah. Well, and yeah, that sounds like that, huh? No, I use a word I use word a lot, like all those, you know, office apps. I mean, our whole team, we use a whole slew of them. I use teams of course. So all of those, corporate&nbsp; things I use, for sure. But yeah, for development stuff, I don't, I haven't gone in, I don't, I've haven't opened Visual Studio once.</p>



<p>I probably should, but he's don't do.NET stuff. And I, you know, for note and anything else VS Code is amazing. So I use, I use mostly that.</p>



<p><strong>Jon: </strong>[00:50:48] I think one nice thing that you kind of went through kinda quick as the, the hardware independence, right? You're able to pick all your stuff, right? And so that's still, partly I have, you know, the Mac book is great for like. All my office stuff I'm doing on there. Of course, any browser stuff, any dev, like the dev, I'm having a great time with that.</p>



<p>but then I like, if I want to play a game or something, you know, or like I'm recording this call on my, on my Windows machine. Cause like, I've got a huge hard drive and I've got a ton, you know, like tons of memory and lots of 48 CPUs or whatever. And it's just doing its thing, you know? So.</p>



<p><strong>Rob: </strong>[00:51:28] Yeah, no, that was one of the fun things is going to the Microsoft store. we have right here in our mall. It's right across, of course, from the Apple store.</p>



<p>but yeah, walking through there and I was texting Damien Edwards and like, alright man, help me out. What do I get? You know? And so of course everyone is pushing me towards the surface book, which, you know, is that what it's called?</p>



<p>The surface pro, whatever, and the beautiful machines, I mean, the keyboard is amazing and I love the idea of touchscreen, but again, I don't like touching the screen. I don't know why. I just couldn't see myself using that. And then I, that's when I realized I need horsepower. And so of course they had like six different models.</p>



<p>If all different kinds of machines and they're all so much cheaper than, you know, the high end Macs. If so, you know.</p>



<p><strong>Jon: </strong>[00:52:15] Well, so on both sides of this has been interesting with with the Mac book, I had to try. I installed steam and there's a decent, not a huge amount, but there were a decent amount of games in my library. Of course, a lot of them were the more kind of like boutique, you know, kind of more, like not the huge first person shooter kinds, but they're just kind of like cool story focused kind of games that actually did show up on the Mac book.</p>



<p>So that was cool. I think a lot of games are built in unity and so there, that'll work. Okay.</p>



<p><strong>Rob: </strong>[00:52:46] yeah. The days of the days of having isolated games, you know? I think that's kind of coming to an end. However, I will say that. Gosh, I can't even believe I'm admitting this out loud. I still jump into world of Warcraft just because that's me and I have, so I bought a new Mac book, the brand new 16 inch, cause I couldn't stop myself cause I, the one critique I've always had is that the graphics, the graphics look beautiful.</p>



<p>But if you try and do anything graphics intensive, the card is just not very good. You know what I mean? Whereas the Windows machine I have is just all the horsepower in the world. Well, anyway, the new Mac books have. Killer graphics cards. And so I couldn't stop myself. So I went and got one of those</p>



<p>So the funny thing is, is I was like, all right, I'm going to go see what world of Warcraft, cause that's my, that's my benchmark is like how high can I jump the settings on on the thing. So I logged into Warcraft. It was okay. It was pretty good. I would say it was about a 20% improvement over my old machine.</p>



<p>Yeah. You go on, you go on the Windows box, forget about it. I mean, Whoa, like even on this, I have a 34 inch, 37 inch monitor on my desk here, and it's a big one. And what I mean, I just ramped it all the way out. I have like, it is as smooth as butter. And so to me it's like, man, there's still difference is the graphics processing on Windows VR, like as far as some games go versus Mac is just, it's not there yet.</p>



<p><strong>Jon: </strong>[00:54:18] Hmm. One other interesting thing that they've done on Windows that they should have done a thousand years ago is there's an XBox app in Windows 10. And a decent amount of XBox games will run in there. so, and then</p>



<p><strong>Rob: </strong>[00:54:36] been wondering about that.</p>



<p><strong>Jon: </strong>[00:54:37] I wouldn't necessarily, myself, I'm very, very cheap. but I, I wouldn't necessarily like go out and spend on it, but they have the Xbox game pass that they had a really good deal for Microsoft employees.</p>



<p>So I got that. And then there's all these games on there and I'm like, Whoa, I could play it. So I mean, I already have steam games and. And stop. I mean, I've got more games than I'll ever play. Of course, cause they have the steam sales and you have to buy them all. Then you never play them. But, but it was neat looking at XBox and go like, huh, I could play all these games if I wanted.</p>



<p><strong>Rob: </strong>[00:55:09] Yeah.&nbsp; sitting on a meeting like mute yourself,</p>



<p>Jon. You're not muted. I can hear you clicking.</p>



<p><strong>Jon: </strong>[00:55:16] yeah. I actually have played Wolfenstein lately, but the new Wolfenstein where you're, it's like.</p>



<p>Alternate history if Germany had won,</p>



<p>and now it's modern day. Yeah. That's fun.</p>



<p><strong>Rob: </strong>[00:55:29] fun. I was on a meeting, I think it was. A few months ago and I mean, it was just like a really loose, loose, whatever internal team meeting. like someone had done that and they forgot to mute their, their microphone and like, you could hear him go bang, bang, bang, bang, bang.</p>



<p><strong>Jon: </strong>[00:55:46] that's amazing.</p>



<p><strong>Rob: </strong>[00:55:47] you'd think they'd have the headphones set what they did. And anyway, everyone was laughing. I mean, you know, no one cared at all. It was not a big deal.</p>



<p><strong>Jon: </strong>[00:55:55] I saw someone tweet recently about a Zoom meeting where it was, I think, medical professionals or something, and somebody thought they were muted and they wear it. They're like, this guy is an idiot, and they just said it out loud, and then that ended the meeting basically.</p>



<p><strong>Rob: </strong>[00:56:09] Oh no. You know, what was it? Maybe he was set up as a potato. I'm going to do that. I'm going to get my potato cam going. Have you read about this? Oh, someone couldn't figure out the, they changed themselves into a potato. for a meeting and the, and it was something to do with, I think it was snap cam is what they were using, but they thought it was the software.</p>



<p>I think it was Zoom in there like forever trying to figure out how to,</p>



<p>how to undo it, and they couldn't, so they just carried out the meeting as a potato.</p>



<p><strong>Jon: </strong>[00:56:40] And it was a cabinet meeting or something probably right.</p>



<p><strong>Rob: </strong>[00:56:43] God, exactly right.</p>



<p><strong>Jon: </strong>[00:56:48] Well, yeah, I mean I guess so kind of summarizing some of this stuff. It is weird like I'm able to use, like I went, I had a similar experience, Rob, where I like on the Mac set up all the stuff with Z shell and all the console stuff. And then I was like, I guess I should do this on my Windows machine cause I just never gotten around to doing it.</p>



<p>And it was like basically like copy of the stuff over and do the same thing. And, and. And then I, I am just finding so many of the things are like not that different. I mean, there's little, there's minor things about like, the finder doesn't do exactly the same thing that the Windows Explorer does and stuff, you know?</p>



<p>But for the most part it's like, dang, it's a, so many things now I've just kinda gotten a lot more simple.</p>



<p><strong>Rob: </strong>[00:57:35] Yeah, it's true. I think for me, the biggest, the biggest thing that I've finally did, I was resistant to Dropbox forever. And you know, I've tried all these like solutions. In fact, there was one that you could, what was it called? ownCloud, where you can set up a server on digital ocean, download the client, and then you have your on Dropbox and which is kinda cool.</p>



<p>But you know, it just, it would crash. I have a NAS, right. So I have a Synology I tried using that, but it would ramp up my CPU to 100% cause I'm like, nothing works as good as Dropbox. So if I always like, just pay, just pay for the damn thing. So now, yeah, what? I have two terabytes or something like that.</p>



<p>I store absolutely everything on there and I don't ever have to worry about it.</p>



<p>&nbsp;<strong>Kevin: </strong>[00:58:21] Okay. Well, I think we're about at about an hour, so probably time to wrap up this discussion. Thanks guys.</p>



<p><strong>Jon: </strong>[00:58:27] I have one. I had one revelation. Just as you're saying that,</p>



<p><strong>Kevin: </strong>[00:58:31] Go ahead.</p>



<p><strong>Jon: </strong>[00:58:32] a very funny thing is, you know, people joke about the year of Linux on the desktop, and part of what I think has made. Both of these Windows and Mac kind of, you know, similar is the whole Linux thing, which is kind of crazy. Right. You know, I mean, it's the Mac, you know, with the whole thing of moving to Darwin and, and the whole kind of Unix-y underpinnings and then Windows, like just as part of the whole open source development thing, like not just the terminal, but also just like the way that things work has gotten a lot more.</p>



<p>Unix-y. And so it's just kind of funny seeing that</p>



<p><strong>Kevin: </strong>[00:59:11] Yeah. I mean, I've, I've always thought that the reason why the Mac became so popular in. The development space was, had nothing to do with the, the UI. It was about the fact that it was Unix under the covers and so, and everybody was running Unix on their server. So it gave them like a Unix experience.</p>



<p>and, and now, now Windows is finally getting that.</p>



<p><strong>Rob: </strong>[00:59:32] I know, but it's interesting. It's like true Linux blows my mind. It just blows my mind.</p>



<p><strong>Jon: </strong>[00:59:39] if you know, it's funny to me too, how Windows has been like for a while I was always jealous of Mac getting more by doing less by just running on top of Unix stuff and using stuff like chromium and all this stuff. Right. And so it's like.</p>



<p>You know, taking advantage of code that they didn't have to write and things they didn't have to design.</p>



<p>and Windows is finally starting to do that. Like there's the WSL with the whole Linux experience, but also like, you know, Rob, you mentioned edge and edge is running on chromium. You know, and it's like, they don't have to, you don't have to write everything. You don't have to invent everything, you know. So it's more about like being the packager and, you know, support.</p>



<p>And. You know, updates and stuff.</p>



<p>All right, now I'll let you wrap up. Kevin.</p>



<p><strong>Kevin: </strong>[01:00:27] Finally. alright, thanks. tune in next time for another episode of Herding Code.</p>



<p>&nbsp;&nbsp;&nbsp; <strong>Rob: </strong>[01:00:35] Woo woo.</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0241-Freaky-Friday.mp3" length="58222450" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 240: Phil Haack on Working from Home</title>
    <link>https://herdingcode.com/herding-code-240-phil-haack-on-working-from-home/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-240-phil-haack-on-working-from-home/</guid>
    <pubDate>Wed, 25 Mar 2020 16:21:26 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 240: Phil Haack on Working from Home Jon, Kevin, and Rob t</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 240</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0240-Phil-Haack.mp3">Herding Code 240: Phil Haack on Working from Home</a></p>







<p>Jon, Kevin, and Rob talk to Phil Haack about working from home.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container">
<p>Links:</p>



<ul><li><a href="https://haacked.com/archive/2020/03/03/how-to-work-from-home/">How To Work From Home</a></li><li><a href="https://haacked.com/archive/2020/03/05/how-to-lead-from-home/">How to Lead From Home</a></li><li><a href="https://haacked.com/archive/2020/03/09/geographically-distributed-teams/">Geographically Distributed Teams </a></li><li><a href="https://haacked.com/archive/2020/03/09/geographically-distributed-teams/"></a><a href="https://haacked.com/archive/2020/03/11/when-remote-work-goes-wrong/">When Remote Work Goes Wrong</a></li><li><a href="https://twitter.com/herdingcode/status/1242531065694060544">Herding Code Podcast on Twitter: "We're going to be talking to @haacked today about working from home. Questions or comments for him?" / Twitter</a></li><li><a href="https://www.amazon.com/TRX-ALL-Suspension-Training-System/dp/B002YRB35I">Amazon.com : TRX ALL-IN-ONE Suspension Training: Bodyweight Resistance System | Full Body Workouts for Home, Travel, and Outdoors | Build Muscle, Burn Fat, Improve Cardio | Free Workouts Included : Home Gyms : Sports &amp; Outdoors</a></li><li><a href="https://blog.alicegoldfuss.com/work-in-the-time-of-corona/">Work in the Time of Corona – Alice Goldfuss</a></li><li><a href="https://medium.com/@nmsanchez/be-this-manager-now-3e11a96a9b12">Be This Manager Now - Nicole Sanchez - Medium</a></li><li><a href="https://herdingcode.com/herding-code-63-victory-in-software-development-with-k-scott-allen/">Herding Code 63: Victory in Software Development with K Scott Allen – Herding Code</a></li></ul>
</div></div>



<h3>Transcript:</h3>



<p></p>



<p><em>Note: We're new at this. Should we publish an SRT file? WEBVTT?</em></p>



<p>&nbsp;<strong>Jon: </strong>[00:00:00] Welcome to Herding Code. This episode is being recorded March 24 2020. This is Jon Galloway.</p>



<p><strong>Kevin: </strong>[00:00:16]
This is Kevin Dente.</p>



<p><strong>Rob: </strong>[00:00:17]
This is Rob Conery.</p>



<p><strong>Jon: </strong>[00:00:19] Hey, and today we're talking to Phil Haack working from home. So before we jump into that, Scott Allen, when one of our hosts passed away in January, and I, I'm sure most of our listeners have probably already seen that. But, you know, I don't even know what to say. K Scott was an amazing friend, and, we were just so lucky to have him on the show for so many years.</p>



<p>Some, some people recommended one of their favorite episodes was episode 63. Rob, I think you brought that one up. That was <a href="https://herdingcode.com/herding-code-63-victory-in-software-development-with-k-scott-allen/">Victory in Software Development</a>.</p>



<p><strong>Rob: </strong>[00:00:52] Oh
man that was amazing.</p>



<p><strong>Jon: </strong>[00:00:54]
And he was telling the story of the battle of Antietam and, man, I could listen
to that show over and over. </p>



<p>You know, yeah. </p>



<p><strong>Rob: </strong>[00:01:02] One thing I was trying to explain to my wife. Cause she, when I told her the news, she, she was like, Oh, right. You knew him. And I started to explain, what, what case Scott was, to me and to everyone. I mean, I've never known anyone with such an insane gift for telling a story.</p>



<p>And, and just being affable, and kind. Anyway, I started to tell her about just him and she's like, oh right. We, we met him and went hiking with him in Oslo, and I totally forgot, but it was so cool because it just, all of a sudden, the memory of, of hiking with him, this last June, NDC, Oslo, was just kind of the spur of the moment that he was running downstairs.</p>



<p>He and Richard Campbell were going on a hike and they're like, Hey, come with us. And I said, Oh, sure. And that was the last time I ever saw him. And. I can't say enough what a great person. he was, and I, I really, I think we're all the better for knowing him for sure as an industry, but also as people.</p>



<p><strong>Jon: </strong>[00:02:02] Yeah, I just, looking on Twitter, you know, I always of him as one of my best friends, and he always took time, you know, like when we're at, at a conference or whatever, he'd say like, Hey, Jon, let's, you know, let's go grab a bite and we're just whatever, and we'd just go hang out. And, It was </p>



<p><strong>Phil: </strong>[00:02:18]
Yeah </p>



<p><strong>Jon: </strong>[00:02:19]
seeing how he was very intentional about doing that with so many people, you
know, like just everyone kind of sharing their stories about, you know,
including people that were like, I him a question at a conference and it was
kind of a random question and he spent a lot of time just talking it through
with me and you know, like it just, yeah, just so thoughtful and kind. </p>



<p><strong>Phil: </strong>[00:02:40]
Okay Yeah. I really loved talking to him at conferences. I'd only see him in
places like London or, or, you know. Oslo or wherever at conferences. Jon, you
might remember that, you mean Atwood and, Barnett wrote a book with, Scott
Allen a long time ago</p>



<p><strong>Jon: </strong>[00:02:58]
Yeah. Yep. </p>



<p><strong>Phil: </strong>[00:02:59]
The ASP.NET 2.0 anthology And I don't mean the MVC I mean like </p>



<p><strong>Jon: </strong>[00:03:06]
2.0</p>



<p>Yup </p>



<p><strong>Phil: </strong>[00:03:11]
Yeah, that's right. </p>



<p><strong>Jon: </strong>[00:03:14] Oh
man. Yeah. I actually co-wrote several, cause I picked up that, the MVC book,
the five heads book, Rob, that you worked on. And then I, you know, K Scott
stayed on for several additions of that and I co-wrote with him. So, </p>



<p><strong>Phil: </strong>[00:03:26]
Okay </p>



<p><strong>Jon: </strong>[00:03:27]
and you know, it was always like I was, I for some reason signed myself up as
lead author and I was always chasing down other coauthors and K Scott is like,
I always knew that his was just going to be like.</p>



<p>You know, on time and perfect. And it's nothing to worry
about.</p>



<p><strong>Phil: </strong>[00:03:43]
Yup. </p>



<p><strong>Jon: </strong>[00:03:44]
Yeah. Oh, man. Well, so,</p>



<p><strong>Phil: </strong>[00:03:49]
On that note.</p>



<p><strong>Jon: </strong>[00:03:50]
yeah. Yeah. Well, so these are, these are times. We're all, we're all bunkered
down from, from this coronavirus and, You know, people have been talking about
working from home. you know, Microsoft has sent everybody home.</p>



<p>A lot of other large companies have. and then after that, a
lot, a lot of States have gone into and different countries to have gone into
some sort of lockdown as well. so we've got, all of us have worked remotely,
for a good chunk of our careers. And so </p>



<p><strong>Phil: </strong>[00:04:22]
Okay </p>



<p><strong>Jon: </strong>[00:04:23]
it's been interesting seeing people trying to adapt to it in different, different
companies and stuff.</p>



<p>So Phil, you wrote a series of blog posts about how to work
from home. so for people that don't know you, which is probably nobody, but for
people that don't know, what's kind of your background on, how did you
transition into working from home.</p>



<p><strong>Phil: </strong>[00:04:41]
Oh, that's a great question. So probably the first time I did a work from home
significantly with a long time ago when I started a company with a friend, and
Jon, you might remember this, called VelocIT that we hired, Jon was our first
employee. And we all work together using the state of the art of collaboration
software back then, groove, by Ray Ozzie.</p>



<p><strong>Jon: </strong>[00:05:05]
that's right.</p>



<p><strong>Phil: </strong>[00:05:07]
yeah. And, and then we would use a, I forget what the video conference software,
but like, we actually, you know, cobbled</p>



<p>together..</p>



<p><strong>Jon: </strong>[00:05:15]
amount</p>



<p><strong>Phil: </strong>[00:05:16]
Yeah, that's right. It's Skype was around. Then we use Skype and I think we use
subversion for the version control. And, you know, we made it work. We did a pretty
good job as a remote distributed company, but we were only like, you know,
three, four employees, you know, at the time.</p>



<p>And then I remember we hired a, Steve Harmon came on and,
and, so Simone, but anyways, and then, you know, I went after that, I joined.
Microsoft, and that was, you know, right back into being in the office all the
time. AI did have this one, coworker who was remote, Scott Hanselman, who, you
know, we would try to set up a computer in my office so that he could just dial
in at any time and be like a talking head there.</p>



<p><strong>Rob: </strong>[00:06:01]
Okay </p>



<p><strong>Phil: </strong>[00:06:02]
But it was really interesting to, you know, like when I think about those times
and how difficult. it must've been for him to be a remote employee in a company
that just really didn't get it. And you could tell they didn't get it because
their products didn't reflect, what it meant to be remote work.</p>



<p>so I left Microsoft after about four years and I joined
GitHub and the GitHub was, you know, just night and day, right? This is a company
that really. Started off as sort of a remote distributed company. It had it in
its DNA and its tools really reflected that as well. In fact, they were really
geared towards, you know, teams of open source developers who were all strewn
about all over the world, didn't know each other.</p>



<p>And I worked there for&nbsp;
just shy of seven years. I was started off as a developer. And then,
this is at a time when GitHub, didn't even have managers. And then later when
they introduced managers, I became a manager and then I became a director. So
I've had the, you know, I guess good fortune to kind of experience what it's
like to be in a remote and distributed company from a individual contributor,
perspective, from a management perspective and from a director perspective.</p>



<p><strong>Jon: </strong>[00:07:14]
Yeah. It's interesting you mentioned the, you know, Microsoft, and initially
when I started at Microsoft as well, you could really tell so many things
required VPN in and any, you know, you want to, would say like, Hey, you know.
You want to join our, dog, you know, you want to beta </p>



<p>our thing, you know, here's where to sign up.</p>



<p>And it would be an to an internal SharePoint and you
wouldn't have to join a security group. And you know, everything was file
shares and it was just not, and it's been interesting watching, you know, a
transition of that over time. It definitely, it's, it's still not perfect, but
it's changed a bit.</p>



<p>And I feel like some of that is due to the open source. </p>



<p>You know, the needs of open source, kind of pushing things.</p>



<p><strong>Kevin: </strong>[00:07:58]
. It was good. They had always seemed like </p>



<p>Okay </p>



<p>Hanselman made </p>



<p><strong>Phil: </strong>[00:08:00]
Yeah </p>



<p><strong>Kevin: </strong>[00:08:01]
through sort of force of will. Like he was able to like it and have, you know,
impose that onto the company through his own, just sheer, you know, energy. is
that, is that accurate and how has that changed over time?</p>



<p><strong>Jon: </strong>[00:08:15] . </p>



<p>It definitely, from my point of view, it definitely always
took some effort to kind of like, there'd be a meeting and then you'd say like,
Hey, can you add a team's invite? And you bug people enough? And they're like,
finally, like, sure, I'll get you off my back, you know? But, or like,</p>



<p>.</p>



<p><strong>Rob: </strong>[00:08:31] I
remember talking to Scott about this back in 2006 because that's when, that's
when I started. So </p>



<p>I remember right, Scott Scott started there. I was
contracting for awhile. Then Phil started and then I think I got full time like
right after, right after Phil got in there and yeah, cause Phil and I went to a
dude, we got to kneel together.</p>



<p><strong>Phil: </strong>[00:08:51] I
think, I don't remember if we went to near together, but I do remember that you
started not, not long after because you were working on, helper methods for
ASP.NET MVC.</p>



<p><strong>Rob: </strong>[00:08:59]
That's right. But I do I remember I remember Scott talking to me about, about
the importance of </p>



<p>you know, making sure that, you know, here's all the
checklists and things you have to do. Make sure they know you're there. in the
hallways when you're </p>



<p><strong>Phil: </strong>[00:09:14]
it was, I </p>



<p>Yeah </p>



<p><strong>Rob: </strong>[00:09:15] it
being a really big deal.</p>



<p>And, And every time I'd go back to, cause I would go back
every other month for about a week. time I </p>



<p>to Redmond, </p>



<p>I'd have the conversation with somebody, either my manager
or something like, so Rob, uh, you thinking about maybe moving to Redmond and
I, you know, I just kind of laugh it off and say, you know, we're not, </p>



<p>of good where we're living.</p>



<p>Cause at the time we were living in Hawaii and, So this,
this, finally, the conversation stopped one day because I was at a cafe. I
think it was building 53. I can't remember, but I was </p>



<p>sitting there&nbsp; and </p>



<p>my boss, came and sat kind of at this </p>



<p><strong>Phil: </strong>[00:09:51]
okay </p>



<p><strong>Rob: </strong>[00:09:51]
with me. </p>



<p><strong>Phil: </strong>[00:09:52]
Okay </p>



<p><strong>Rob: </strong>[00:09:52] then
next thing I know, here comes Brad Abrams, who is like a, I think he was a </p>



<p><strong>Phil: </strong>[00:09:56]
Okay </p>



<p><strong>Rob: </strong>[00:09:56] at
that time.</p>



<p>And then Scott goo came and sat right next to me</p>



<p>and he's sitting there looking at me. He's like, so, Whoa.
So Rob,</p>



<p>like, Oh boy.</p>



<p>Here we go,</p>



<p>here we</p>



<p><strong>Phil: </strong>[00:10:07]
That's a great impression. Yeah.</p>



<p><strong>Rob: </strong>[00:10:08]
feel, you know these, you know these meetings, right? Like</p>



<p><strong>Phil: </strong>[00:10:11]
Hey, Rob. </p>



<p><strong>Rob: </strong>[00:10:11] at
you like. There you go. So, yeah, you know, I was thinking, we could really use
you on campus here.</p>



<p>What do you think about, you know, maybe in the future, your
future here with the company? I'm like, Oh, the full press, you know? </p>



<p><strong>Jon: </strong>[00:10:23]
Whoa </p>



<p><strong>Rob: </strong>[00:10:23]
just kind of looked at him and I said, you do know where I live, right? And </p>



<p>kind of looked around the table. I'm like, you guys, come
on. Seriously,</p>



<p>I'm not, I'm not, I'm not moving here.</p>



<p>I'm sorry.</p>



<p><strong>Phil: </strong>[00:10:35]
Hard to balance those.</p>



<p><strong>Rob: </strong>[00:10:37]
Yeah. Anyway, </p>



<p><strong>Phil: </strong>[00:10:37]
Yeah </p>



<p><strong>Rob: </strong>[00:10:38]
laughed. It was pretty funny. But yeah, it's, it was kind of a big deal back
then because if you weren't in the </p>



<p>you pretty much weren't there. And like Scott would </p>



<p>is you have to demand that they put you on speaker or make
sure you're there and you have to speak up during the meeting and say, I'm
here, I'm still here.</p>



<p>You know?</p>



<p><strong>Phil: </strong>[00:10:55]
Yeah. I think the rise of it, there's two kind of big factors that I see both
one's cultural and one's technical on the technical side. if you know who Ben
Thompson is, he writes this newsletter called stratechery.com or strategery at
an, I pronounce it, but, he had a really great post and is really focused on
the way information is disseminated in the midst of the Corona pandemic and
like, how.</p>



<p>we're getting good information from social networks compared
to what, you know, the news is given out. But, by analogy, he went into this
whole digression about a zero trust information as an analogy to zero trust
networking and zero trust networking. You know, like back in the old day that
Microsoft, you had this sort of castle and the moat, right?</p>



<p>The castle was protected by the great firewall of Microsoft.
And then once you're in through a VPN, you had access to everything. and that's
a castle and moat model, right? You build a big S, Oh, excuse me, a big old
castle. Big old motor rounding</p>



<p><strong>Jon: </strong>[00:11:53] We
prefer the, the Queen's English a big arse.</p>



<p><strong>Phil: </strong>[00:11:56]
and arse. Yeah. So big arse castle and my, yeah. And then, you know, especially
we're talking about castles, but a, what we've moved to is, you know, sort of
zero trust networking, right. Where you secure. everything like, the, every
user has sort of the username and password for each service. And you might use
a single sign on to make that easier, but you know, you're validating
credentials at every point in the thing.</p>



<p>And so, that made it so that like, you don't need a VPN and
working. Style, such as working on GitHub is a really good example of that,
right? So like, you know, we can all work on out, we don't need a VPN in. And I
think that kind of points to the cultural change, which is, as Microsoft
started to embrace open source more.</p>



<p>and they started to have people actually work on open
source. And thus they're working with people who are outside their firewall.
And you can't tell these folks, Hey, you know, you need to, we need to find a
way to give you guests access to our VPN so that we can collaborate in a
software. No.</p>



<p>Microsoft was like, okay, well we're going to go to where
all the developers are. I mean, it took them a while to reach that conclusion,
but they eventually got to the point where like, okay, we'll just go to get up
and work on GitHub, because that's where all the open source developers live
and breathe every single day.</p>



<p>And I think that's a big cultural change because then, you
know, a group of you being in Redmond. isn't necessarily this big as big an
advantage. but there is a whole other cultural element of, that I think, you
know, Hanselman had to really fight against, which is. You know, if you have a
meeting, and I write about this in my blog series, if you have a meeting in
person, you're, you're, you're excluding the people who aren't there.</p>



<p>Right. And, if one of you is remote, you know, I recommend
for teams to protect, to behave like everyone's remote. And everyone calls in
to the zoom chat. which is actually a better experience. Like if you've ever
been in a meeting where a group of you're sitting in a room and one person is
on the screen, it's not a great experience even for the folks in the room, if
that, you know, when they're trying to hear that person on the screen.</p>



<p>That person on the screen is constantly, you know, trying
to, you know, get into the flow of the conversation. And then if you have lag
or anything, it's just a really bad experience. But if we're all battled in on
something like zoom, or if you're a Microsoft new teams, then you know, you're
all on a level playing field and the meeting can actually go more smoothly that
way.</p>



<p><strong>Jon: </strong>[00:14:23]
Hmm. Yeah. I mean, you pointed out the, the move to open source. I think
another thing too is Microsoft just, and it just happened for business reasons,
but to move to the cloud first, Azure and you know, Office online and you know,
like Microsoft selling all these cloud native products has kind of forced that
to like, you know, where it's like, Hey, people are there, there's business
internal reasons to move and it's just easier to move stuff instead of hosting
your own SharePoint, whatever weird thing to like, just put it up on, you know,
whatever.</p>



<p>Like spin up an Azure website or share something with, you
know, in one of the hosted cloud solutions. And like you said, then it's all
single sign on and it's just. You know,</p>



<p><strong>Phil: </strong>[00:15:10]
Yeah. Like the, the cloud services made, like required. what do you call it?
Required federated identity into be a priority at Microsoft. And then, like you
said, I think the, the move to cloud services is also related to the move to
open source. Because you know, once you're in the cloud, who cares what you,
who cares what anyone runs, you just want them to run on your cloud.</p>



<p>So like supporting open source makes a lot more sense for,
for the business model.</p>



<p><strong>Jon: </strong>[00:15:38]
Well. So I wanted to kind of go through some of the stuff, the recommendations
and stuff that you had in your blog posts.&nbsp;
you started off in your, like, how to work from home and, and there's
two things in here. One is you give, you have several things, you know, wear
pants, have ritual, set boundaries, set work hours, got your distractions,
focus, communicate, you know, like all the, all these things.</p>



<p>And, but at the end, then I think in kind of a counter thing
to a lot of that is be flexible. Like in other words, here's a bunch of things
to do. But like in other ways, it can also be a bit of a... I guess I'll step
back to when I started, a lot of these things were things that I had to learn.
Like I had a separate office.</p>



<p>I actually had my wife like chat me on the whatever, you
know, a chat app. Like instead of like coming in and saying like, Hey, know,
need you to, do something or whatever. Right. You know, pretend like I actually
was at work and we both liked it better that way. You know, I was at work for
the day. But then over time you like realize what you can be flexible. </p>



<p><strong>Phil: </strong>[00:16:53]
Okay Yeah. I think this is the classic path of the expert, right? you know,
when you're learning programming, you're, you learn these steps, like, Oh, take
these five steps every time you write a method. Oh, don't forget to write that
unit test before every single method. And then like, write one line of code
that makes, you know, go through the red, green, refactor. And then as you
become an expert, you know, like, it's good to ingrain those skills. Kind of
like, you know, in the original karate kid, wax on, wax off, right? But then
over time it, you, you start to learn, Oh wait, you know, I've got, I've
internalized these steps, but now I know. In what nuanced situations, I can
relax a step or two, like, Hey, this method, maybe I don't need to write a unit
test first, but for this one, let me just, you know, write that method because
it's relatively small or whatever.</p>



<p>And so that's kinda, you know, the be flexible part is
meant. I meant it as like, once you really internalize these and, once you've
seen what works for you. yeah, don't go like, don't go too hard down the road.
Like for example, you know, one concern I think a lot of people have right now
is with this pandemic, everyone or a lot of people going remote and then
they're not being as productive.</p>



<p>And so people are, you know, saying, Oh, this is a, an
indictment of remote, distributed work, and it's like, no, it's an indictment
of a global pandemic that is being completely mismanaged in our country at
least, and where it's affecting so many people's lives. And, a lot of people
may die from it. in that circumstance, I don't care where you work, it's going
to affect your productivity because you probably have more important things to
worry about.</p>



<p>And so, you know, one level in terms of being flexible, I
recommend like, you know, allowing yourself to realize that this is a really
unusual and difficult and challenging time. And if you need to take more
breaks, if you need to step away from the computer, a step away from social, I
was about to say social security, social networks, you know, do you, so there's
a really great, blog post, by Alice Goldfuss.</p>



<p>She's actually a former GitHub Employee, but I never really
personally worked with her. But, she has this great blog post work in the time
of Corona. And a lot of her advice really focuses on sort of how do you
preserve and maintain your mental health while adjusting to this new life, you
know, and it, you know, one of our first points is.</p>



<p>It's okay to feel bad and I'll send you the link later. But,
I think, you know, first and foremost right now, it's okay to be less
productive. It's okay to, you know, take care of your affairs at home and
relax. But you know, when you are ready to work, you know, when you are in the
right mindset. You know, I hope that the tips that I've wrote are good
guidelines for, you know, how to set yourself up for success.</p>



<p>because I've seen a lot of people who are like, you know, I
just can't focus at work right now because all of this going on. but
ironically, I've had kind of the opposite, reaction where I haven't been
working all year pretty much, cause I had been burnt out. and then, you know,
this happens and suddenly.</p>



<p>I'm a lot more focused that, working on a project. I mean, I
wouldn't, I'm not working full days, but I'm working on a project because it's
giving me something to distract me from all the bad news. And it's a project
that, hopefully is a boon and a benefit to people doing remote distributed
work.</p>



<p><strong>Jon: </strong>[00:20:25]
Yeah.</p>



<p><strong>Rob: </strong>[00:20:27]
You know, I wanted to echo what you said, Phil. Cause honestly, social media
and news, used to, my habit, you know, I'd wake up every morning and kinda give
myself a few minutes just to, to, to wake up. And then I had this habit of
grabbing my iPad and it just kind of. things cause I'm three hours behind the
West coast and like most of the day is already happening.</p>



<p>So I kind of feel like I have to catch up the minute I wake
up. But wow. I mean, this last few months I would get up and feel completely
drained because I was reading the news and listening to. </p>



<p>And I think it's important that people stay informed, but I
don't think you need to stay informed the first 10 minutes of your day.</p>



<p>I can't tell you, I cannot emphasize enough. How that has
changed everything for me. I don't read anything until noon figure, you know,
if something really bad happens, I'll find out about it somehow. Either through
work, chat on Slack or whatever. that's thing one. And the other thing that you
said, what was it?</p>



<p>You made two points. Darn it. I forgot the second one.</p>



<p><strong>Phil: </strong>[00:21:28]
It's okay to feel bad.</p>



<p><strong>Rob: </strong>[00:21:31]
Oh, you were talking about how you, how you're now feeling, you're feeling
enlivened. Because you're helping</p>



<p><strong>Phil: </strong>[00:21:38]
Yeah. Yeah.</p>



<p><strong>Rob: </strong>[00:21:39]
you're helping people. And I, and I was trying to explain that to my kids,
cause you know, they're down, you know everyone's down. Right. And, and you
know, and coworkers too. And I was like, if you can reach out and help someone
else in any way possible, it's a, it feeling of doing something as opposed to
sitting there doing nothing, which is the worst.</p>



<p>But yeah, I wanted to emphasize that too, because fell
that's a great point. Reach out and just help in any way you can. Even if it's
just to say hello on Slack. I mean, a lot of trying to figure out Slack right
now and in, you know, teams, if you're using this this weird kind of thing that
they won't, they, they have to like ask you, is it okay?</p>



<p>Do you have a second to chat? We'll screw it. Just just chat
away, you know, and say hello.</p>



<p>And a lot of times you'll find people really, really
appreciate you given the&nbsp; </p>



<p><strong>Phil: </strong>[00:22:26]
time.</p>



<p>Okay Oh, I totally agree with that. I find that a, a lot of
people have a sense of helplessness right now because they can't influence, you
know, a global or national policy and they're seeing how. Yeah. I'd only in
that the response has been, to this crisis and they feel like helpless. Right?
But there's always something that you can do within your sphere of influence,
you know, even if it's just helping one person and that, you know, not only
helps them, but it also helps you and.</p>



<p>the other day, you know, like, I since leaving GitHub, I've
been really enjoying going to the gym every day and it's become my main social
outlet, you know, going in, cause it's a regular class. So I see the same
people every time we work out together. Chat. And, you know, I really missed
that interaction cause I didn't really, you know, I wasn't working at a company
so I didn't have that social network.</p>



<p>but, so the other day I, you know, messaged a few of the
folks from the gym, I said, Hey, look, you know, I found this cool workout. I'm
going to try it on zoom. If you want to join me, call into this channel. And,
Let's do it. And so, yeah, three guys joined me and we did a, a workout and it
was a lot of fun and I had a really good time.</p>



<p>I've had, in fact, I've been telling people I'm probably a
lot more social now than I was before because, through zoom I've had several
like whiskey meetings or, you know, like hang out at happy hour meetings with
people. And there's a lot of cool benefits. One, I don't have to get dressed up
to, I don't have to drive anywhere.</p>



<p>Three, I don't have to call a Lyft to get home after I've
had too much to drink because I'm already home. When, when our, little hangout
is over and I was like, Oh, this is kinda, it's kind of a nice way to, you
know, hang out with your friends.</p>



<p><strong>Jon: </strong>[00:24:20]
Yeah. It's been interesting seeing a lot of different things moving online.
gotten into through a Tony Horton doing thse P90 things. And he started doing
these 3 days a week online, Facebook things. And it's pretty fun, you know, and
it's like a live thing and people are showing up and know, it's, it is, I mean,
we're adapting.</p>



<p>We are, you know, it is nice that we all have internet and
we all, you know, are able to, to connect in that way.</p>



<p><strong>Rob: </strong>[00:24:50]
well I was just really quickly going to interject and say that, I was talking
to a friend about this, cause we have a gym in the building I live in, which is
so lucky. And I, you know, you meet people, like you're saying, Phil, you meet
people and you talk to them and whatever. So they shut down the gym in the
building last night.</p>



<p>And, and I was talking to this person that I've seen down
there before and he's like, I need to go to the gym. He's really built because
I need to go to the gym at all, I'm going to do. And so I said, well, if you've
ever seen these, these things called TRX, TRX suspension bands. They're not
like the bendy kind, but they're like the military&nbsp; suspended from a doorframe or your ceiling.
The straps that you can adjust, they're amazing. You can get a full gym
workout. It's crazy. So anyway, put a link in our chat here, Jon, if you want
to add it on the show people that are at home and they don't have the equipment
and they can't get to the sporting goods store, Amazon will deliver these,
then, yeah, join Phil for a workout.</p>



<p>Why not?</p>



<p><strong>Phil: </strong>[00:25:45]
Right?</p>



<p><strong>Rob: </strong>[00:25:46]
You did</p>



<p><strong>Phil: </strong>[00:25:46]
Yeah. </p>



<p><strong>Rob: </strong>[00:25:47] I
mean what? I heard you say</p>



<p><strong>Phil: </strong>[00:25:50]
Sure I, I, I guess I am now.</p>



<p><strong>Rob: </strong>[00:25:52]
you should. You know what? You should do that. You should Twitch your workout
man, and we should all just join. Let's do it.</p>



<p><strong>Phil: </strong>[00:25:57]
That'd be fun. You know, and kind of relating back to working from home like
this, you know, . People are social beings. And you know, one of the things
that, was really challenging when I was at GitHub was the sense of isolation,
loneliness, even as a member of a team, especially the leader.</p>



<p>Because you know, a lot of times, like your colleagues, you
know, the people you're working with, they're not really your peers, right?
They're the people who report to you in this sort of a different relationship
there. but it would feel lonely at times. And you know, what we do to try to
ameliorate that, is to actually have hangout times with , my colleagues that
wasn't focused on, some work in particular. one thing we would do is we would
have, you know, Brown bags, once a week, and then, you know, anyone could call
in. I, I may have even blogged about this a while ago. I just can't find it
right now, but we'd have Brown bags once a week, and then we'd all call in and
do the, you know, with that zoom was nice as you can do the gallery view, which
gives you that whole Brady Bunch look, if you have nine people. Yeah. But we
would do these meetings and then, you know, kinda hang out and, and be
intentional about the social aspect of working. And I think that's really
important because, you know, when you're distributed and remote, it's really
easy to fall into the trap of like, Oh, like.</p>



<p>I'm all work all the time. And that's what it's all about.
But you know, you're working with human beings and it's really important to
establish that relationship with each other as human being. And that comes a
little more naturally when you're in person, because you know, you run into
each other in the hallway, Hey, let's go grab lunch.</p>



<p>Let's go grab a coffee. but you know, you're not running
into people when you're home, or at least I hope not. and, you know, you have
to be a little more intentional. Hey, let's do a hangout where we just hang
out.</p>



<p><strong>Jon: </strong>[00:27:50]
Yeah. I think the whole like intentional is a thing that like going through all
your posts as well. There's a lot of things where you just need to be
intentional ways where like. Going to work and being in a building and being in
meeting rooms with other people, like there's a lot of stuff that just that
when you're from home, you need to be intentional.</p>



<p>Like, need to intentionally, you know, communicate. I need
to, know, like, being productive and re removing distractions and, you know,
setting my work hours, you know, as opposed to like going into a business, you
know, office, your work hours are kind of set for you, you know? And that whole
thing about intentional communication, I think is so important.</p>



<p>And there's. W w one thing that I've seen with that like,
really important to intentional with, what am I doing with this communication?
For instance, if it's a meeting, let's get it done. Like I want an agenda, I
want to be, I want it to be productive, you know, I wanna, I wanna like focus
on that. If it's a...</p>



<p>But then, like you're also saying, if it's a social hangout,
Hey, be intentional about your social Hangouts as well. And, and you know,
like, not mixing the two. I think mixing the two can be frustrating. Like if
you want to have a stand up, it should be if it's a social thing, make it
social.</p>



<p>But if it's a stand up, boom, boom, boom, let's knock it out
and get to work. You know,&nbsp; always weird
when it's like not communicated. Are we hanging out or are we doing work or
what? You know?</p>



<p><strong>Phil: </strong>[00:29:26]
Yeah. Like when you're a manager, you learn one of the secrets to, you know,
good high functioning teams and good performance is. Having clear expectations
and accountability towards those expectations, right? yet at the same time,
you, when you go to a typical workplace, you see that that's not put in
practice all the time in all aspects of the company where it would really be a
big benefit.</p>



<p>For example, meetings are a really great example, right?
Like how often do you go to a meeting and the agendas and clear, and you have
no idea. Why are there or what, the goal of the meeting is, and you, and you
know, it all comes down to the, there are no clear expectations for that
meeting. And the meeting is expensive, right?</p>



<p>You know, you're, if you're, if it's an hour and you have
five people, you know, you take their hourly rate and that's a lot. And a lot
of times, you know, those meetings could easily be replaced with an email or a
discussion and, you know, some place. And so. Often better to try to replace
that, replace meetings with discussions.</p>



<p><strong>Jon: </strong>[00:30:30]
Yeah. that's something you called out the asynchronous workflow and the kind of
writing things down, and then, you know, a common pet peeve is the how people
use chat. Like I think. If you know, in a more office center culture, when you
chat people, the, the inclination is to just say, like, Hey, you there, like
you just want to get something, but a much better thing is, Hey, could you
clarify what you meant when you said we should close issue one 23 like that's
something that works well asynchronously and, and we don't have to waste the
time with, Oh, Hey, sorry, I missed you. I was getting coffee. Oh, Hey, blah,
blah, blah. You know, it's just like, ask your question.</p>



<p><strong>Phil: </strong>[00:31:10]
Right, right. Embrace the asynchronous nature of chat.</p>



<p><strong>Jon: </strong>[00:31:14]
and then that flows well over&nbsp;&nbsp; you know,
open source thing as well too. Like, like just like say your say your thing in
a way that that allows us to make a decision and move forward.</p>



<p><strong>Phil: </strong>[00:31:29]
Yeah. You mentioned making decisions and, I think one of the biggest challenges
that I saw, and this is an organizational thing, but it, it, I feel like it's
semi-related to, Distributed remote workforces. And one thing I want to be
clear before I get into it is, a big theme you'll see is like all these
practices I talk about are, I think equally good, if not more so for co located
teams.</p>



<p>So if you work in an office together. I think these are good
practices to have because you never know when someone had to take a sick day until
they missed out. but I think that they're compounded when you're remote and
distributed. If you don't do these things, the, the impact is far more, it's
far bad.</p>



<p>It's worse. Excuse me. My English is not working</p>



<p>anymore Far</p>



<p>batter. Yeah. Yeah, that's right. so. What was I going with
this?</p>



<p><strong>Jon: </strong>[00:32:26]
Well, you were saying that it's these, these are practices that are important
for co like located teams as well.</p>



<p><strong>Phil: </strong>[00:32:32]
Right. But we were talking about something right before that</p>



<p><strong>Jon: </strong>[00:32:35]
decision making.</p>



<p><strong>Phil: </strong>[00:32:36]
decision making. Yes. Okay, so what.</p>



<p>Yeah. This is one of the downsides to working alone. A
remote distributor for too long is like your ability to have conversations with
adults can start to decline. </p>



<p><strong>Rob: </strong>[00:32:50]
well </p>



<p><strong>Phil: </strong>[00:32:51]
that's why.</p>



<p><strong>Rob: </strong>[00:32:51]
Washington. It's legal in Washington, so we're okay. Phil, you're among
friends.</p>



<p><strong>Phil: </strong>[00:32:59]
So what was I saying? Oh,</p>



<p>anyway,</p>



<p>a lot of times decision making and remote distributed
companies can be really challenging because conversations can feel open-ended
if they're asynchronous, right? Like I posted this question and then I wait
like three days and the person didn't respond, and I'm like, well, do I go
ahead?</p>



<p>Or no, I guess I should wait for their response. Whereas if
you, you know, if you corral a group of decision makers into a room, you can
often, you know, say, Hey, we're not leaving this room until we come up with a
plan of action for X, Y, Z. Although, you know, I've seen a lot of companies
still can't make decisions even when they did that.</p>



<p>And so I do in my series, talk a lot about. How do you make
decisions as a remote distributed company? And again, it comes down to setting
clear expectations. Being very intentional. timeboxing is a really important
one, intentionally reaching out to people and making it clear who are the
decision makers and who are just being asked to weigh in and who are, is being
asked to observe.</p>



<p>Right. and I mentioned a couple of different frameworks for
doing that that are very popular, RACI and DACI. But I think, you know, making
sure that you have a clear path to making decisions is really important. And as
an illustration of that, you know, when that Friedman, took over as CEO of
GitHub, not long after there was sort of this, you know, the pace of get up
shipping features sort of, you know, really increased.&nbsp; And from the outward looking in, it seemed
like. Oh, wow. You know, Nat is really like rev the engine. but you know, from
my experience, a lot of that stuff that they were shipping was already being
worked on, but they were being blocked by, you know, indecision, like, Oh,
like, you know, this isn't good enough to ship, or who can make this call?</p>



<p>And that I think went in and just said, Hey, look, let me
make those decisions, ship it and iterate. And I think that really unblocked a
lot of stuff that had. Already been worked on for a good while. and sometimes
you just need that person to say, Hey, this, let's make decisions as make them
quickly, but let's make sure that we have resiliency in the process of that.</p>



<p>If we make any mistakes with those, we can fix them quickly.</p>



<p><strong>Jon: </strong>[00:35:18]
Hmm Yeah, yeah. I think focusing on that and as part of communications as well,
like very easy, you know. As you mentioned in different, all different kinds of
things like there've been email threads where people, when you see an email
thread you can respond with, here are some thoughts I have about it, but really
what's the point of the email thread?</p>



<p>Is it to make a decision? Is it to, you know, like, and if
it is, what are the next steps? So, you know, and, and those sorts of things
where, so of just saying, you know, kind of rambling, let's say like. I, I
propose this, this is a, you know, or if I don't hear back by this day, I will,
you know, delete all the files or whatever it </p>



<p>Right </p>



<p><strong>Phil: </strong>[00:36:01]
Right. Yeah. Time boxing is definitely an important component of that, saying,
this group is going to make a decision on this date. You know, you have until
then to provide your feedback.</p>



<p>But you know, making it clear, they are the ones who are
making the decision. Right.</p>



<p><strong>Jon: </strong>[00:36:19]
And often they're, if you have a, if people are not responding or not, then
usually the best thing is to propose a very bad idea with the time box. And
then people will jump out of the woodwork.</p>



<p>Gosh, how do you handle things like, you know, time zones.
you know, and that's something too where some people asked about that. How,
how. You know, how do you handle just the kind of distributed time zone part to
that?</p>



<p><strong>Phil: </strong>[00:36:46]
Yeah. You know, for a lot of companies right now who are quickly moving into
it, you know, they're often, they're moving into it because they're forced to
buy, like work, work from home decrees. And so they're already co located. So
they are fortunate that they don't have to deal with the distributed times on
things.</p>



<p>But when I was at GitHub, I had a team that had, you know.
Oh, almost everyone in a different time zone all across the world. And it, it's
more challenging because your throughput on a single th it's, it's a lot like a
asynchronous programming, right? Or a parallel programming. Your throughput on
any single thread at work will slow down.</p>



<p>if I write a piece of code and the person in New Zealand is
the one who's going to review that piece of code. They're probably sleeping
when I'm done. So, rather than just sit there and be blocked, you know, the
thing to do is for me to go on to the next piece of work. Right. and, and then,
you know, in the next day, hopefully when I get up, I'll have a nice code
review that I can look at and address.</p>



<p>And so that's the, you know, one of the main things with
being distributed across time zone is to embrace the fact that, you know, you.
You may slow down, throughput on any individual line of work, but just like
with computers, what you do is you just spin up more processes, right? You spin
up more threads of work, you, </p>



<p>you distribute, you, Cool. What is it you try to focus on
making sure that nobody is blocked at any time? You don't want to block
threads. Instead, you just move to the next thing. and then the other thing is,
you know, making sure that you give people time for feedback. You know, if you
propose something and then, you know, you wait an hour and they start going
through with it.</p>



<p>Well, the person in the other times and it didn't get a
chance to weigh in and they may, they might have some important, important
feedback. one thing we would often do, especially for really important poll
requests is we would keep them open roughly 24 hours that way before we immerse
them that way people could, You know, chime in who might be effected by the
pull request. Now for small things, we didn't do that for everything. Right?
Cause like again, be flexible, be smart. You know, like for something really
small, we might say, okay, you know, I got someone here to review it in my time
zone. We went ahead and merged it.</p>



<p>And if you see anything wrong with it, you know, we can
always do a revert. We can always address it after the fact. You want to look
at the cost benefit, right? Like what is the cost of getting this wrong versus
the cost of,&nbsp; all right, getting it
right. The first time versus the cost of getting it a little wrong and then
fixing it and sometimes getting it wrong and fixing it is actually cheaper
than, you know, holding something up to get it.</p>



<p>Absolutely right. It really depends on like how much damage
it would cause if you got it wrong the first time. but overall, like taking on.
Asynchronous workflows like that. And, and I think the analogy to asynchronous
programming is really apt because like, we've solved a lot of these things
where, you know, Oh, we're worried about Moore's law slowing down.</p>



<p>So we started to add more processors and we've had to come
up with new ways of programming and new way the distributing work across the,
and tasks across those processors. Well. It's not a perfect analogy, but that
actually kind of works when you consider people at a distributed across the
planet.</p>



<p><strong>Jon: </strong>[00:40:11]
Hmm. Yeah, it's interesting. Some of the things you're talking about, I've been
reading this book Accelerate, and it's like lean software and dev ops and
applying it to organizations. And, a, it's a, you know, some of the things like
small batch size and all the, you know, like focus on small, short turnaround
and those apply very well to the asynchronous work, and if I'm working on a
small thing. That's done. Pass it to the next person. Move on to something
else. Oh yeah we got a few questions over Twitter. so one, I think you kind of
answered already, but, Khalid says, how do you stay in shape when sweat pants
are so comfortable.</p>



<p><strong>Phil: </strong>[00:40:53]
Well, you, you, you put the sweat and sweat pants, and go, go exercise. But I
mean, I think there's a great question. I think, yeah, organize it with other
people. if, some people are really great at. Kind of following their own
schedule and being a solitary, you know, gym rat. And if you are, that's great,
on the kind of person that I sorta need that social pressure to motivate
myself.</p>



<p>So, you know, getting people to hold each other accountable
is a really great way to keep in shape.</p>



<p><strong>Jon: </strong>[00:41:28]
Cool. Cool. Yeah. I've seen people do this different ways. We have, there's a,
I mean, just kind of a, a team check-in thing, like they started this coffee or
a, they call it the breakfast club in dev dev, and it's, people just have, a 15
minute coffee and it's just a quick little chat. But, you know, a lot of the
people will be saying, checking in on, you know, I just got off my bell Peliton
or whatever it is, you know?</p>



<p><strong>Phil: </strong>[00:41:50]
Yeah. I started a little pandemic survival club.</p>



<p><strong>Jon: </strong>[00:41:53]
there you go.</p>



<p><strong>Phil: </strong>[00:41:54]
Yeah.</p>



<p><strong>Jon: </strong>[00:41:55]
Yup. And I know some friends that have a Twitter, just like a DM chat, and they
just check in every day and. their workout or whatever.</p>



<p>Cool. Andrea says, what's your go to brand of whiskey for
post remote meeting? Relaxed time.</p>



<p><strong>Phil: </strong>[00:42:10]
Oh wow. We could do a whole nother episode on that.</p>



<p>So lately I just got this bottle, a monkey shoulder, which
is a blend of three different scotches. It's, Glenfiddich Balvenie and, I, and
I don't know if I'm pronouncing right. And then another one that I blanking on,
I really like it. I'm a big fan of Yamazaki 12.</p>



<p>I like, Nika from the, barrel and Nika coffee mall.</p>



<p>and, I, I could go on, but, yeah, right now the monkey
shoulder has been, I've been a real fan of that one right now.</p>



<p><strong>Jon: </strong>[00:42:45]
Cool. All right. We've got one more question here. so Mathias with a, with a more
difficult question how has the HR done, effectively, efficiently, and
inclusively remotely, things like grief health support? Is there a good way?
And, also if there's a good way for someone to give their notice.</p>



<p><strong>Phil: </strong>[00:43:05]
Wow. Yeah, that's a great</p>



<p>question Yeah, so there's a blog post that I'll a post to
you called be this manager now. And it's by, Nicole Sanchez. she, worked at,
also worked at GoodHub for a little while and she, kind of implemented the
first, diversity and inclusion training at GitHub. And now she is a consultant
at via consulting.</p>



<p>she's amazing. If you, your company can. afford to hire her
for management training. I highly, highly recommend her. She's really great.
she has a great blog post about the type of manager you want to be in this
tumultuous time or in any tumultuous time. She talks about checking in with
everyone one-on-one privately, but, you know, remember like HIPAA, you know,
advocate for your employees.</p>



<p>Stay informed and take care of yourself, yada, yada. Really
good advice. I mean, yada, yada is in and so on and so on. Yada, yada can sound
dismissive. I didn't mean it that way. So, and, and so on. so going back to the
question, I mean, I think as a manager following these guidelines. Is really
helpful.</p>



<p>how do you be inclusive in review performance reviews? I
have a whole blog post about, my whole view on performance reviews that, I
think it's, yeah, I think it's worth reading. Of course I wrote it. but I talk
a lot about how, existing review systems aren't, equitable, even if you're in
person.</p>



<p>you can see how certain people, certain classes of people,
especially underrepresented folks tend to score lower, for the same work. So,
You know, one of the things you want to do is try to, as much as possible,
create objective measures of performance. So like set clear expectations,
measure people against those expectations in terms of giving someone notice
that I assume he means like firing someone as opposed</p>



<p>to selling </p>



<p><strong>Jon: </strong>[00:45:03]
else, Or if you want to quit as well. Right. Those are harder</p>



<p><strong>Phil: </strong>[00:45:06]
Oh </p>



<p><strong>Jon: </strong>[00:45:07]
discussions to have remotely like,</p>



<p>Yeah, I mean, you know, do it, do it on a, a video
conference, you know, don't do it over email. video conferences is about the
closest thing you're going to get to, you know, just being in person and having
a Frank conversation. Yeah. If you're giving notice, you know? Yeah. I would
just, have that conversation and then, you know.</p>



<p>Write a letter of resignation and then, and submit that as
well. if you're on the other end though, and you think you have to fire
someone, I mean, in this particular time, especially in our country where
health care is tied to our jobs and all these people are losing their jobs all
of a sudden, hopefully, you know, like more and more people recognize that, you
know, having our healthcare tied to employment is a really bad idea when
something like this comes along.</p>



<p>And, you know, I would like hook that companies would delay.
That sort of thing as much as possible. But I know that, you know, some
companies are in a position where they might just go out of business, which
leads to the same result for their employees. So I understand that. Like. Yeah.
It's easy to say, but if you're a company in a strong position and you can
afford not to fire people, you know, I hope that you try to do your best to
take the humane stance of not firing them until things have calmed down a bit.</p>



<p>You know? other, if you are fired, you know, like, make sure
you understand how COBRA works. C, O, B R A. It is a more expensive than what
you're probably paying as an employee. I did a COBRA when I left GitHub. I did
Cobra for a year. And, you know, that it wasn't pleasant on the pocket book,
but it was better than not having insurance.</p>



<p>And then I just recently, my family recently moved to
Washington, one of the Washington exchange, healthcare plans, which, you know,
they're cheaper, but not, not by much. but anyways, yeah. I hope that helped
answer that question.</p>



<p>Yeah. Yeah. Well, I think part of the thing, you know, we
were talking about the communications and how do you, You know, how do you have
difficult conversations? And one of the things you mentioned is just, you know,
like both as a manager and as a, as an employee is to communicate often and to
build the trust through regular communications.</p>



<p>So I think that is an important thing, like having regular,
know, discussion with, with your manager so that you comfortable. You... If you
feel comfortable and you built that trust, then difficult conversations are
hopefully easier too.</p>



<p><strong>Phil: </strong>[00:47:36]
Yeah. And I put a lot of the onus on that, on the manager. Although, like if
you're a nice individual contributor, IC,&nbsp;
a, you obviously don't have control over your manager, so what can you
do in that position? you know, ask or advocate for a regular weekly one on one.
All right? You know, there's this great podcast, the manager tools podcast, and
they had this episode.</p>



<p>And I think it's a two parter about why one-on-ones are so
important and how to do them well. And I was so impressed upon me so much the
value of it, that when I was at getup, I actually wrote our first guidelines to
one-on-one. So that became sort of the official internal documentation for, you
know, why we should do one on ones and how to do them.</p>



<p>And you know, the. One of their points is that your job,
your primary job as a manager is to, build a relationship with, your people as
individuals. And one of the best ways to do that is through one-on-one. You
need to build the relationship and build up that trust. And so one on ones
should not be like a status update or some sort of a work meeting.</p>



<p>It needs to really focus on what is it that. The employee
needs to talk about and get off their chest or what, what is it that they want?
And so they have a whole structure, you know, that they called 10, 10, 10 and
which I would sometimes just do 15, 15, but it's basically 10 minutes, whatever
the employee wants to talk about, 10 minutes, whatever the manager wants to
talk about.</p>



<p>And then 10 minutes. talking about the future, I found in
practice I couldn't talk about the future. Every single one-on-one, is just
wasn't, you know, we talked about last time and not, not a lot has changed in a
week, but I found that conducting weekly one-on-ones was immense in building
trust and, relationship.</p>



<p>And you'd basically, it's, it's&nbsp; impossible, or very difficult to have a
difficult conversation if you haven't built that foundation of trust. It just
doesn't go well. Like you can have a difficult conversation, but it's made more
difficult when you haven't established that basis of trust. But if you put in
the work to build up trust, then, you know, you come, you can have that
conversation where people are giving each other the benefit of the doubt and
I'm assuming good intent. And it's very difficult. And even then, you know, you
have to understand that when you're a manager, there's a power differential in
that conversation and you have to recognize that and, and do your best to. you
know, try to balance that as well as she can. And the power differential comes
from the fact that, you know, if you want that person fired your opinion, you
might not be able to outright do it, but your opinion weighs heavily.</p>



<p>You can, you know, you sort of hold their career in your
hand at that company. </p>



<p>And so, and that's always in the mind of the employee when
they're having that conversation with you, whether consciously or
subconsciously. And so it's really important to recognize those power dynamics
and try to, you know, work to, you know, build up trust so that you can have
this difficult conversation.</p>



<p>And when you do have those difficult conversations, you
know, there's a really, you know, there's a lot of good books out there. One of
my favorites is, difficult conversations, you know, apt title I, I know others
have recommended crucial conversations. but they go through a whole, you know,
they go through a lot of scenarios about how to have these conversations and
making sure, for example, that you really understand, the context and the
perspective of the other person that you're not just trying to win the
conversation, but that you're trying to understand their point, you know, as
well as they do, you know, if possible.</p>



<p>And then, you know, being honest, upright, and avoiding, you
know, some of the tripe things, like the, the shit. Sandwich approach, you
know, where you're like, Hey, I have some good news, bad news, good news.</p>



<p><strong>Jon: </strong>[00:51:29]
Yeah.</p>



<p><strong>Phil: </strong>[00:51:30]
Yeah. Like a lot of people feel like, Oh, that's a good way to soften the blow
of bad news. But what it does in practice is, anytime you come to someone with
good feedback, for example, they're waiting for the hammer to drop and, the
other practice, Oh, you can see, I get excited about this.</p>



<p>The other practice I highly recommend is make sure you're
constantly giving feedback. And give feedback early. That's positive. so for
example, a lot of times, you know, when the mentors like, Hey, I have some
feedback for you. What's your initial reaction when you just hear that phrase
like, Oh shit, what did I do?</p>



<p>Right? But, that's a problem. You know, it shouldn't be
like, Oh, I can't wait to hear this. You know, like, cause this is probably an
opportunity for me to get better or, or an opportunity to reinforce something
that I did good. Right? So if your manager is often saying, Hey, you know, I
have some feedback for you.</p>



<p>The way you handled that, that outage was phenomenal. I
really liked the writeup. Blah, blah, blah. you know, more of that. Thank you.
And then like, you know, once in a while when there's corrective feedback, you
know, you're in a much better position to take it because you're like, well,
you know this, this manager sees all the good things I'm doing.</p>



<p>They see me as an employee. So, you know, if they have
something that's going to help me improve, I want to hear that. But if the, if
the only time you come to feedback is negative feedback or corrective feedback,
then you sort of lose your credibility as someone who, is in a position to give
them feedback because they're like, well, you've never seen all the great
things I do.</p>



<p><strong>Jon: </strong>[00:53:00]
Right, right. Wow. a lot of good stuff. we've got a wrap up.&nbsp;&nbsp; Kevin, do you have any, anything else you
want to throw in.</p>



<p><strong>Kevin: </strong>[00:53:08]
Phil, you had mentioned earlier. You had, had experiences of a rote, employee,
both at the kind of individual contributor level, the manager level and the
director level. there, are there things that are kind of unique to each of
those levels that, people can think about from a </p>



<p><strong>Phil: </strong>[00:53:26] Uh
yeah I would say yeah. So like I sort of pattern my blog posts around that
theme. So the how to work from home, really focused on, individual
contributors. How to lead from home focused on managers. And then I would say
like all of it, like at the director level, there's a little more, focus on
setting high level goals and a high level objectives.</p>



<p>And how you, you create alignment with your team. And so I
think that I cover some of that in the geographically distributed teams posts.
and so, you know, at that level, you know, you're not, you know, a line
manager. You're not like looking at every check and what you're focused on is
how do I make sure that everyone's pointed in the right general direction, and
then you need to trust them.</p>



<p>To do the, you know, what you hired them to do. Like they're
probably the best developers or best product managers, breasts, quality
assurance folks that you could find and they know their job and they. They want
to do good work. You know, a lot of people ask me like, Hey, how do you make
sure everyone's working?</p>



<p>And I was like, you know, you, how do you, how do you know
anyone's working when you're in the office? People are really clever at getting
out of work. They don't want to, but if you have a, a clear, mission that motivates
people, you know, they're going to want, to do good work that, you know, people
aren't looking for excuses to get out of it for the most part.</p>



<p>If you connect, you know, meaning to the work that they're
doing. all, all they need from you is to help them connect meaning to the work
and to help them see like what the goal and the objective is. And they will,
you know, they will do good work. They will work hard to reach that vision. And
that's a, that's your role as a director and higher.</p>



<p><strong>Jon: </strong>[00:55:17]
Cool. Yeah. Everyone likes to finish a day at work and go like, yeah, I nailed
it. You know, I got something great done. Right. Like enabling people to get to
that is, you know, and then like you're saying, you don't have watch every step
of the way. You just need to help them get to that spot.</p>



<p><strong>Phil: </strong>[00:55:35]
Right. You don't need to tell them what to do. You just need to remove
obstacles so they can do the great work that they are really wishing that to
do.</p>



<p><strong>Jon: </strong>[00:55:44]
Cool. Well this has been great. but we gotta wrap up. So, maybe we should have
you back on some time soon and talk more about other managing stuff. Cause
there's a lot of good stuff here.</p>



<p><strong>Phil: </strong>[00:55:57]
Yeah. Anytime, anytime.</p>



<p><strong>Jon: </strong>[00:55:59]
All right, that's all the time we have quite literally this week. Thanks a
bunch for your time and we'll talk to you again soon.</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0240-Phil-Haack.mp3" length="53989359" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 239: Jerome Laban on Uno Platform</title>
    <link>https://herdingcode.com/herding-code-239-jerome-laban-on-uno-platform/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-239-jerome-laban-on-uno-platform/</guid>
    <pubDate>Tue, 10 Sep 2019 21:46:07 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 239: Jerome Laban on Uno Platform At Xamarin Developer S</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 239</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0239-Jerome-Laban.mp3">Herding Code 239: Jerome Laban on Uno Platform</a></p>







<p>At Xamarin Developer Summit, Jon talks with <a href="https://twitter.com/jlaban">Jerome Laban</a> about building applications that run everywhere using the Uno Platform. </p>



<ul><li>(00:20) Jerome explains that the Uno Platform is XAML and C# for iOS, Android and WebAssembly using WinUI XAML. On iOS and Android, it's running on Xamarin.</li><li>(01:25) Jerome tells the history of the platform, and how they've been working on the platform for six years. When the team at  nventive  saw WebAssembly support coming, they ported their existing framework to run there, too. </li><li>(02:55) The Uno Platform is free and open source; nventive is a service agency that offers development and support for the platform. Jon asks for more information about nventive. It started as a training and general development company, then did Windows Phone, Windows 8 and Windows 10 applications. When Windows Phone went away, they moved their focus to Xamarin development, predating Xamarin Forms. They believe the strucucture of Uno and UWP is often a better approach for them than Xamarin Forms.</li><li>(04:55) Jon asks for the relationship between Uno and Xamarin Forms. Jerome explains that they're generally at the same layer. However, since Uno implements the UWP contract, anything that targets the UWP contract can run on Uno. Xamarin Forms has a part that implements that contract to run on Windows. So... a Xamarin Forms can run on WebAssembly using Uno. You can run Uno components in a Xamarin app, since Uno components are actually Xamarin classic components. You can also run Xamarin components in an Uno application.</li><li>(07:00) Jon asks how the XAML front end is run in the browser. Jerome says that Uno renders the XAML as HTML elements. If you view source, it's mostly div's. HTML is treated as a subsystem that's abstracted away.</li><li>(08:37) Jon asks about the Calculator application. The Uno team took the Microsoft open source calculator application, written in C++ and XAML, and got it to run on Uno. Jon was very impressed to bring it up on his phone's browser. Jerome says that works on Android in the browser, and there are also Android and iOS applications.</li><li>(09:35) Jon asks how they ported Calc to Uno. Jerome said that the tricky part was to pinvoke into C and C++ from a WebAssembly module - Jerome had to add that support and submitted the pull request to Mono. There are three parts - a calculation that dates back to 1999 / Windows 3 that is all C and C++ code that they didn't change; the rest is C++ 11 code which they translated to C# using regular expressions. The XAML and resources are the same.</li><li>(12:20) The Calculator is in published in 65 languages, so they are getting bug reports in 65 languages. There's good accessibility support, so for instance you can enable voiceover in the mobile application.</li><li>(13:10) Jon asks how to build an application for Uno Platform. Jerome explains the File / New Project process using the extension.</li><li>(13:55) Jon asks about deployment. For iOS and Android, the output is the same as any Xamarin project; it's just a standard UWP application, and for WebAssembly it currently tags along with the Blazor tooling.</li><li>(15:00) Jon asks about other getting started information. Jerome runs through several, and points to the GitHub repo for more links.</li><li>(16:20) Jon wraps up with a callout to UnoConf on September 19-20, as well as plans for a 2020 UnoConf in the works.</li></ul>



<p>Links:</p>



<ul><li> <a href="https://platform.uno/">https://platform.uno/</a> </li><li> <a href="https://github.com/unoplatform/calculator">https://github.com/unoplatform/calculator</a> </li><li> <a href="https://unoconf.com/">https://unoconf.com/</a> </li></ul>



<p></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0239-Jerome-Laban.mp3" length="9113013" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 238: Martin Beeby on AWS for .NET Developers</title>
    <link>https://herdingcode.com/herding-code-238-martin-beeby-on-aws-for-net-developers/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-238-martin-beeby-on-aws-for-net-developers/</guid>
    <pubDate>Mon, 24 Jun 2019 18:00:13 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 238: Martin Beeby on AWS for .NET Developers At DevSum S</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 238</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0238-Martin-Beeby.mp3">Herding Code 238: Martin Beeby on AWS for .NET Developers</a></p>







<p>At DevSum Stockholm, Jon talks with <a href="https://twitter.com/thebeebs">Martin Beeby</a> about .NET development on AWS. </p>



<ul><li>(00:20) The guys reminisce about Martin’s awesome blog post, <a href="https://thebeebs.co.uk/client-requests-through-the-years/">Client Requests Through the Years</a>. </li><li>(03:30) Martin walks us through his career, which includes early adoption of .NET, stepping away for a bit to pursue Node and Java development, and returning to the .NET fold in his current role as a Developer Evangelist focused on .NET for AWS.</li><li>(08:00) Martin shares to how other developers are returning to .NET and the freshness in the community. .NET developers are progressive with AWS and large systems.</li><li>(10:40) Martin speaks to his evangelism roles with Microsoft, Oracle and now AWS. Spoiler alert. It’s not just standing at a booth, but real-world storytelling of customer use cases and encouraging platform adoption.</li><li>(13:15) Jon and Martin talk about the intersection of AWS and .NET development in which AWS is the original cloud hosting option so there are highly skilled, highly progressive .NET shops along with AWS experts that are new to .NET, and .NET developers who are completely new to AWS and cloud computing. </li><li>(16:35) Jon asks about the fastest way for a .NET developer to get up and running on AWS. Martin talks to the <a href="https://aws.amazon.com/sdk-for-net/">AWS SDK for .NET</a> and <a href="https://aws.amazon.com/visualstudio/">AWS Toolkit for Visual Studio</a>, which is an extension that features the AWS Explorer. </li><li>(18:40) Martin explores AWS deployment options including CLI scripting, <a href="https://aws.amazon.com/cloudformation/aws-cloudformation-templates/">AWS CloudFormation Templates</a>, <a href="https://docs.aws.amazon.com/cdk/latest/guide/home.html">Cloud Development Kit</a>, AWS extensions for CI/CD tools like Jenkins, AWS’s own suite of CI/CD tooling and even Powershell.</li><li>(20:35) Jon asks about <a href="https://aws.amazon.com/lambda/">AWS Lambda</a>. Martin touches upon other hosting options including <a href="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a> and containers and then digs into serverless.</li><li>(22:35) Martin shares how one can spin up a full-blown application which leverages serverless infrastructure using AWS Visual Studio Tools. It’s something along the lines of AWS Visual Studio Tools &nbsp;&gt; File &gt; New &gt; AWS Lambda and Sample Projects &gt; ASP.NET Core Project, which creates an MVC website with Lambda entry point and provisioned API Gateway, which provides complete MVC sample application hosted in AWS. </li><li>(25:40) Martin drives home the message that when AWS Lambda isn’t being used, you aren’t paying anything. You only pay for the compute time you consume. Jon speaks to massive scaling and “micro scaling” in the cloud.</li><li>(27:15) Martin talks further about low cost and low scale with functions as well as statically hosting websites which use serverless for auth and lambda processing. Martin walks through the specific use case of <a href="https://donation.comicrelief.com/">Comic Relief</a>, which benefited greatly (93% cost savings) from serverless hosting. &nbsp;&nbsp;</li><li>(29:50) Martin speaks to <a href="https://aws.amazon.com/amplify/">AWS Amplify</a> and there’s more discussion of scalability, burstability, and agility. </li><li>(31:00) Martin wraps up the chat sharing how functions allow developers to mix-and-match languages, which promotes using the right tool for the job. For example, audio manipulation using Python, when the rest of the application may be written in C#. </li><li>(33:00) <a href="https://aws.amazon.com/">Explore AWS</a> and .<a href="https://aws.amazon.com/developer/language/net/">NET on AWS</a>.</li><li>(33:30) <a href="https://thebeebs.co.uk">Read more from The Beebs</a>.  </li></ul>



<p><em>Thanks to Ben Griswold for writing up the show notes!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0238-Martin-Beeby.mp3" length="18691745" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 237: Tess Ferrandez on Three Real World Machine Learning Projects</title>
    <link>https://herdingcode.com/herding-code-237-tess-ferrandez-on-three-real-world-machine-learning-projects/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-237-tess-ferrandez-on-three-real-world-machine-learning-projects/</guid>
    <pubDate>Mon, 17 Jun 2019 20:28:41 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 237: Tess Ferrandez on Three Real World Machine Learning Projects</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 237</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0237-Tess-Ferrandez.mp3">Herding Code 237: Tess Ferrandez on Three Real World Machine Learning Projects</a></p>







<p>At DevSum Stockholm, Jon talks with <a href="https://twitter.com/TessFerrandez">Tess Ferrandez</a> about some machine learning applications she's worked on recently, from sports to shoplifting to cancer detection. Tess talks about the specific ethical considerations that come up when classifying and predicting behavior, and how they worked with them in these real-life examples.</p>



<p>Topics:</p>



<ul><li>(00:20) Tess has been working on some applied machine learning projects with large customers lately, all focused on computer vision. One project detects soccer goals using computer vision (saving money over hardware based solutions), another detects cancer in microscopy slides, and the third detects shoplifting patterns to minimize </li><li>(02:55) Tess has been doing this work in Python rather than .NET. Jon asks if it's possible to use ML.NET, but Tess says Python is necessary, both because the language is better suited and the community libraries are all in Python.</li><li>(04:35) Jon asks Tess about her experiences moving from .NET to Python, and Tess says it's a struggle since it's not strongly typed. You can use testing on the parts that handle data, but not on the machine learning parts.</li><li>(05:40) Jon asks how much of Tess' work is done using Jupyter Notebooks. For data exploration, Jypyter works great, but for the actual execution you'll want to use scripts so it's testable.</li><li>(07:00) Jon asks more about how you can detect shoplifting behavior, since it's an activity that happens over time. Tess says it's also difficult because the prediction may be biased against a demographic, e.g. 20-40 year old men.</li><li>(07:54) Tess say ethics and machine learning are close to causing the third machine winter, and goes on to describe the previous two machine winters. We now have the machines and the data, but often the data is so unfair that it could lead to severe ripple effects. This can cause bias in predicting behavior racially, biasing against things like medical analysis due to sample source, etc.</li><li>(11:30) Jon and Tess discuss the dangers of creating bad feedback loops. Tess talks about an example where Amazon created a system to review CV's which was biased against women because historically women have had fewer software engineering positions, so this system would have reinforced that by preventing women from getting software engineering positions in the future.</li><li>(13:35) There's also a danger of classifying people based on pictures, since we may assume the computer is unbiased even though the bias may have been introduced due to the sample data. Classifying based in pictures would imply that either people were born criminals or criminality changes their appearance, neither of which are acceptable assumptions.</li><li>(16:09) Going back to the shoplifting case, we need to make sure we're detecting the action of shoplifting rather than classifying the individual's appearance. For instance, detecting poses, whether the individual was alone. Pre-trained models for things like object and activities help. There are also subtle sources of bias, for instance if all the source videos are from Christmas, the model may be biased against Santa Claus, so you also need to use pre-trained models for background subtraction.</li><li>(18:13) Jon asks how important it is to be able to understand how the decisions were made. Tess says it depends based on the impact of the decision, and explains how in the case of cancer detection they determined that color differentiation could be used as a predictor, so the actual application didn't require machine learning. In the case of football goal detection, there was such a large amount of data (time, video, and sound), it was possible to get very good results.</li><li>(21:26) Jon asks how developers can learn more. Tess says that software engineers don't need to start with math - you can use pre-trained models and go from there. She recommends a book called <a href="https://www.amazon.com/Deep-Learning-Python-Francois-Chollet/dp/1617294438/ref=as_li_ss_tl?ie=UTF8&amp;linkCode=ll1&amp;tag=jongall-20&amp;linkId=d13eff4c214a223dc9b6b576f4e45ab4&amp;language=en_US">Deep Learning with Python by Francois Chollet</a> - it's very approachable. Tess also recommends the <a href="https://www.youtube.com/channel/UCXvHuBMbgJw67i5vrMBBobA">Machine Learning at Microsoft</a> YouTube channel.</li></ul>



<p></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0237-Tess-Ferrandez.mp3" length="12886486" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 236: Will Green on Going Serverless With AWS</title>
    <link>https://herdingcode.com/herding-code-236-will-green-on-going-serverless-with-aws/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-236-will-green-on-going-serverless-with-aws/</guid>
    <pubDate>Wed, 12 Jun 2019 15:30:40 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 236: Will Green on Going Serverless With AWS Kevin and Jon</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 236</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0236-Will-Green.mp3">Herding Code 236: Will Green on Going Serverless With AWS</a></p>







<p>Kevin and Jon talk with Will Green (<a href="https://twitter.com/hotgazpacho">@hotgazpacho</a>) about how his small team uses serverless development on the AWS platform to maximize their productivity.</p>



<p>Topics:</p>



<ul><li>(00:20) Will's team builds the <a href="https://fireeye.market/">FireEye Market</a>, which enables you to "discover apps, extensions, and add-ons that integrate with and extend your FireEye experience."</li><li>(02:51) FireEye is a relatively large company, but Will's team is just four people, and they're using serverless development to scale and get a lot done quickly. The FireEye Market is a greenfield development project. It's primarily a single page application that uses GraphQL. When new apps are published, an external provider pings webhooks that kick off background process that cache binaries, notify consumers, etc.</li><li>(07:05) Kevin asks about what pushed their team towards serverless technology. Will talks about how serverless lets them maximize the time they devote to delivering business value.</li><li>(08:30) Will talks about how they were able to successfully pitch the project internally. While there were some additional costs as they scaled up, they've also been able to take advantage of new AWS services that allow them to scale on demand, which has led to savings.</li><li>(11:10) Jon asks for more clarification of what <a href="https://www.apollographql.com/">Apollo GraphQL</a>'s role in their architecture.  </li><li>(12:38) Kevin asks about the learning curve. Will says a lot of it was pretty natural since the team already had a Node background, but learning things like cold start took some work.</li><li>(14:25) They used the <a href="https://serverless.com/">serverless</a> framework, which helped take care of setting up tedious infrastructure. If they were starting today, they'd seriously look at <a href="https://aws.amazon.com/amplify/">AWS Amplify</a>, which is a lot more feature rich and includes support for CI/CD.</li><li>(15:50) Jon asks how they handle failures, including both code errors and service outages.</li><li>(19:49) Kevin asks about concerns with vendor lock-in. Will explains why he prefers to just pick a cloud vendor and learn it.</li><li>(20:49) Kevin asks how they manage the complexity of many small services interacting; Will talks about the use of <a href="https://aws.amazon.com/step-functions/">AWS Step Functions</a> to manage state and workflow, and keeping updated diagrams really helps. </li><li>(22:40) Kevin asks about the local vs. cloud development experience. Will talks about some local development emulators from the community, but it's not quite the same as actually hitting the real service.</li><li>(24:00) Kevin asks about the testing strategy.</li><li>(25:15) Jon asks how things work with version control. Will explains how <a href="https://aws.amazon.com/codebuild/">AWS CodeBuild</a> handles git push build and deploy for them.</li><li>(26:00) Jon asks how Will keeps up with all the different AWS services, especially since many aren't intuitively named. Will defines all the different services they're using.</li><li>(28:48) Will describes his bias against containers: you still have to worry about the underlying operating system, whereas with serverless that's all abstracted away.</li><li>(30:00) Will explains how they designed the system, starting with diagrams on <a href="https://www.draw.io/">draw.io</a>, continuing to work through requirements, and evolving the system.</li><li>(31:52) Will explains what's different about working with <a href="https://aws.amazon.com/dynamodb/">DyanmoDB</a>. There's a lot, especially access patterns.</li><li>(36:03) Jon asks how they handle versioning multiple services and data changes; Will talks about using Step Functions and handling data failures.</li><li>(38:25) Jon asks for advice for people who are getting started with serverless on AWS, and Will highly recommends <a href="https://aws.amazon.com/amplify/">AWS Amplify</a>. There are lots of samples for serverless framework.</li><li>(40:39) Kevin asks if it's possible to migrate an existing application to a serverless architecture. Will says it's challenging, but you can use <a href="https://aws.amazon.com/cloudfront/">CloudFront</a> as a router to start distributing work to serverless services based on URL path segmentation. </li><li>(41:50) Kevin asks about the experience of moving from Ruby development to JavaScript development.</li><li>(42:40) Will's team is hiring right now, here's the job listing: <a href="https://jobs.smartrecruiters.com/FireEyeInc1/743999688840667-senior-developer-us-remote-prefer-eastern-time-zone-?trid=162ef3c2-cdcc-47a9-8327-c69d95269302">Senior Developer (US Remote - Prefer Eastern Time Zone)</a>.</li></ul>



<p></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0236-Will-Green.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 235: Matthew Renze on Data Science for Software Developers</title>
    <link>https://herdingcode.com/herding-code-235-matthew-renze-on-data-science-for-software-developers/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-235-matthew-renze-on-data-science-for-software-developers/</guid>
    <pubDate>Mon, 03 Jun 2019 22:46:08 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 235: Matthew Renze on Data Science for Software Developers</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 235</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0235-Matthew-Renze.mp3">Herding Code 235: Matthew Renze on Data Science for Software Developers </a></p>







<p>At DevSum Stockholm, Jon talks to <a href="https://www.matthewrenze.com/">Matthew Renze</a> (<a href="https://twitter.com/matthewrenze">@matthewrenze</a> ) about data science practices to improve both the products they are creating and their software development practices.</p>



<p>Topics:</p>



<ul><li>(00:20) Matthew explains how he's been speaking to software developers about applying data science practices to improve both the products they are creating and their software development practices.</li><li>(00:40) Data science can add intelligence to applications, machine learning to automate decision-making processes, and deep learning to modify the user interface using anticipatory design.</li><li>(03:57) The other side to this is using data science to help build software. The DevOps pipeline provides a lot of objective measures to help improve our software development processes and practices.</li><li>(05:51) Software telemetry data can help us prioritize the time we spend on features towards those that are actively used.</li><li>(07:12) Jon asks which terms he really needs to understand as a developer. Matthew defines data science, machine learning, deep learning, and reinforcement learning. They discuss how text suggestions and language understanding have progressed, and where generated text can and can't help.</li><li>(13:55) Machine learning can be used for good and for evil - for instance, it's now possible to forge video in a way that's really tough to detect. What do we do now? Matthew talks about what we can do as developers to educate those around us and apply ethics to the software we contribute to.</li><li>(19:50) How do we handle things like legal liability for machines that are making decisions, like self-driving cars? Matthew puts it in historical context and talks about how we'll need to adapt our society to accommodate.</li><li>(24:12) Jon asks where to get started applying data science today. Matthew gives some pointers on where to get started learning, and how to start with some quick wins like A/B testing and objective software quality metrics.</li></ul>



<p></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0235-Matthew-Renze.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 234: Dylan Beattie on Social Impacts of Technology and the Meaning of Developer Seniority</title>
    <link>https://herdingcode.com/herding-code-234-dylan-beattie-on-social-impacts-of-technology-and-the-meaning-of-developer-seniority/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-234-dylan-beattie-on-social-impacts-of-technology-and-the-meaning-of-developer-seniority/</guid>
    <pubDate>Tue, 28 May 2019 12:57:34 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 234: Dylan Beattie on Social Impacts of Technology and the Meaning of Developer Seniority</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 234</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0234-Dylan-Beattie.mp3">Herding Code 234: Dylan Beattie on Social Impacts of Technology and the Meaning of Developer Seniority</a></p>







<p>At DevSum Stockholm, Jon talks to <a href="https://www.dylanbeattie.net/">Dylan Beattie</a> (<a href="https://twitter.com/dylanbeattie">@dylanbeattie</a> ) about the impacts our technology choices have on our world, different kinds of seniority for software developers, and how to get started as a conference speaker.</p>



<p>Topics:<br></p>



<ul><li>(01:00) Dylan explains how he juggles writing and delivering several keynote presentations (and a bit about the Rockstar programming language). He talks about writing a presentation as an essay first, rather than starting with slides.</li><li>(06:52) Jon asks Dylan about the themes he's hoping to bring up in his presentations. Dylan talks about the difference between the things we're building software to do versus the actual important things we should be focusing on as humans. What is the cost of chasing the new and shiny things, and why can't we be satisfied with the technology we have?</li><li>(13:10) Jon asks Dylan about how to convince people to act in the long term interests of humanity. Dylan talks about YouTube's perfect user is someone who watches movies nonstop for the rest of their life. Jon and Dylan discuss the effectiveness and difficulties of legislating technology.</li><li>(17:05) So what can we do? Dylan says a good place is to explain things just one level deeper to our non-technical friends. And... heresy alert... you don't have to build software on the absolute newest technology, either. Jon and Dylan talk about how many of our modern application experiences are inferior to basic HTML.</li><li>(21:50) Jon asks how developers should advance their careers. Do we need to become managers? Dylan discusses the concept of a "senior developer" and describes four strands: management, leadership, expertise, and mentoring.</li><li>(24:55) Dylan talks about the example of how Linus Torvalds reacted when confronted over hostility on Linux mailing lists. One important thing is that Linus didn't put the responsibility of telling him how to fix his behavior on those who confronted him over it.</li><li>(27:15) Jon asks Dylan how we can apply this to our careers. Dylan discusses the tradeoff - growing in one area will likely cause others to suffer. He explains how to progress in each of these areas, and explains how impactful mentorship doesn't need to be a big time commitment.  </li><li>(31:00) Jon asks for advice for developers who are interested in getting started with public speaking.</li></ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0234-Dylan-Beattie.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 233: Dino Esposito on Blazor, ASP.NET Core, Writing Technical Books, and Machine Learning</title>
    <link>https://herdingcode.com/herding-code-233-dino-esposito-on-blazor-asp-net-core-writing-technical-books-and-machine-learning/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-233-dino-esposito-on-blazor-asp-net-core-writing-technical-books-and-machine-learning/</guid>
    <pubDate>Fri, 17 May 2019 06:03:35 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 233: Dino Esposito on Blazor, ASP.NET Core, Writing Technical Books, and Machine Learning</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 233</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0233-Dino-Esposito.mp3">Herding Code 233: Dino Esposito on Blazor, ASP.NET Core, Writing Technical Books, and Machine Learning</a></p>







<p>Jon talks to Dino Esposito at dotNext (Saint Petersburg, Russia) about Blazor, ASP.NET Core, Writing Technical Books, and Machine Learning.</p>



<p>Topics:<br></p>



<ul><li>(00:45) Blazor</li><li>(16:50) ASP.NET Core,  the ASP.NET Core pipeline and proliferation of available endpoints</li><li>(27:45: Writing technical books</li><li>(30:05) Machine Learning and ML.NET</li></ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0233-Dino-Esposito.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 232: Scott Koon on getting out of Tech, GitHub Package Registry, Build 2019 Recap</title>
    <link>https://herdingcode.com/herding-code-232-scott-koon-on-getting-out-of-tech-github-package-registry-build-2019-recap/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-232-scott-koon-on-getting-out-of-tech-github-package-registry-build-2019-recap/</guid>
    <pubDate>Sun, 12 May 2019 17:34:54 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 232: Scott Koon on getting out of Tech, GitHub Package Registry, Build 2019 Recap</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 232</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0232-Discussion.mp3">Herding Code 232: Scott Koon on getting out of Tech, GitHub Package Registry, Build 2019 Recap</a></p>







<p>Kevin, Scott K, and Jon talk about Scott Koon's bold adventure out of the tech industry, GitHub Package Registry, and a Build 2019 Recap.</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0232-Discussion.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 231: .NET Foundation Elections, WSL, MAX_PATH, calc.exe, Edge on Chromium, Firefox, and Rogue Thermostats</title>
    <link>https://herdingcode.com/herding-code-231-net-foundation-elections-wsl-max_path-calc-exe-edge-on-chromium-firefox-and-rogue-thermostats/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-231-net-foundation-elections-wsl-max_path-calc-exe-edge-on-chromium-firefox-and-rogue-thermostats/</guid>
    <pubDate>Mon, 25 Mar 2019 23:41:13 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 231: .NET Foundation Elections, WSL, MAX_PATH, calc.exe, Edge on Chromium, Firefox, and Rogue Thermostats</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 231</strong></p>
<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0231-Discussion.mp3">Herding Code 231: .NET Foundation Elections, WSL, MAX_PATH,  calc.exe, Edge on Chromium, Firefox, and Rogue Thermostats</a></p>







<p>Kevin, K Scott, and Jon talk about .NET Foundation Elections, WSL, MAX_PATH, calc.exe, Edge on Chromium, Firefox, and Rogue Thermostats.</p>



<p>Some links:</p>



<ul><li><a href="https://election.dotnetfoundation.org">.NET Foundation Elections</a></li><li><a href="https://jekyllrb.com/docs/installation/windows/#installation-via-bash-on-windows-10">Running Jekyll on Windows 10 / WSL</a></li><li><a href="https://github.com/Microsoft/calculator">https://github.com/Microsoft/calculator</a></li><li><a href="https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/">.NET 4.6.2 and long paths on Windows 10</a></li><li><a href="https://blogs.windows.com/windowsexperience/2018/12/06/microsoft-edge-making-the-web-better-through-more-open-source-collaboration/">Edge on Chromium</a></li></ul>



<p></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0231-Discussion.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 230: 2018 Year End Wrapup</title>
    <link>https://herdingcode.com/herding-code-230-2018-year-end-wrapup/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-230-2018-year-end-wrapup/</guid>
    <pubDate>Fri, 14 Dec 2018 23:02:28 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 230: 2018 Year End Wrapup Kevin, K Scott, Jon, and Rob Conery t</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 230</strong></p>
Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0230-2018-Wrapup.mp3">Herding Code 230: 2018 Year End Wrapup</a>



Kevin, K Scott, Jon, and Rob Conery talked about what they've been learning, programming languages vs. async patterns, message queues, blockchain, Claude Shannon, Mandarin, learning to play the drums, making perfect lattes, and more.

In the interest of getting this out there, this one going up the same day it was recorded, without detailed notes. Maybe we'll update the notes, maybe we won't.

Enjoy!
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0230-2018-Wrapup.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 229: Matt Warren on .NET Internals and Open Source Contributions</title>
    <link>https://herdingcode.com/herding-code-228-matt-warren-on-net-internals-and-open-source-contributions/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-228-matt-warren-on-net-internals-and-open-source-contributions/</guid>
    <pubDate>Fri, 09 Feb 2018 01:03:52 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 229: Matt Warren on .NET Internals and Open Source Contributions</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 229</strong></p>
Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0229-Matt-Warren.mp3">Herding Code 229: Matt Warren on .NET Internals and Open Source Contributions</a>



The guys talked to Matt Warren about his recent <a href="http://mattwarren.org/">blog posts</a> on .NET open source and open source contributions.
<ul>
 	<li>(00:20) How Matt goes about writing his in-depth blog posts</li>
 	<li>(03:15) <a href="http://mattwarren.org/2017/05/08/Arrays-and-the-CLR-a-Very-Special-Relationship/">Arrays and the CLR - a Very Special Relationship</a></li>
 	<li>(07:00) The <a href="https://github.com/dotnet/coreclr/blob/master/Documentation/botr/README.md">Book of the Runtime</a></li>
 	<li>(11:00) <a href="https://msdn.microsoft.com/en-us/magazine/mt814808.aspx">Span&lt;T&gt;</a> to allow high performance array and string manipulation</li>
 	<li>(16:07) <a href="http://mattwarren.org/2017/07/10/Memory-Usage-Inside-the-CLR/">Memory Usage Inside the CLR</a></li>
 	<li>(20:06) <a href="http://mattwarren.org/2017/08/02/A-look-at-the-internals-of-boxing-in-the-CLR/">A look at the internals of 'boxing' in the CLR</a></li>
 	<li>(24:40) <a href="https://github.com/dotnet/corefx/issues/22940">Intel hardware intrinsic functions</a> (SSE, AVX, POPCNT, etc.)</li>
 	<li>(25:50) <a href="http://mattwarren.org/2017/12/15/How-does-.NET-JIT-a-method-and-Tiered-Compilation/">A look at the internals of 'Tiered JIT Compilation' in .NET Core</a></li>
 	<li>(35:00) <a href="http://mattwarren.org/2017/11/08/A-DoS-Attack-against-the-C-Compiler/">A DoS Attack against the C# Compiler</a></li>
 	<li>(40:00) How much the cross-platform aspects of .NET are apparent in the .NET platform code</li>
 	<li>(43:40) <a href="http://mattwarren.org/2017/10/12/Analysing-C-code-on-GitHub-with-BigQuery/">Analysing C# code on GitHub with BigQuery</a></li>
 	<li>(51:35) <a href="http://mattwarren.org/2017/12/19/Open-Source-.Net-3-years-later">Open Source .NET – 3 years later</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0229-Matt-Warren.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 228: 2017 Wrap Up with Microservices, .NET Foundation, Mixed Reality, Bitcoin, Alexa</title>
    <link>https://herdingcode.com/herding-code-228-2017-wrap-up-with-microservices-net-foundation-mixed-reality-bitcoin-alexa/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-228-2017-wrap-up-with-microservices-net-foundation-mixed-reality-bitcoin-alexa/</guid>
    <pubDate>Sat, 30 Dec 2017 23:38:58 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 228: 2017 Wrap Up with Microservices, .NET Foundation, Mixed Reality, Bitcoin, Alexa</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 228</strong></p>
Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0228-2017-Wrapup.mp3">Herding Code 228: 2017 Wrap Up with Microservices, .NET Foundation, Mixed Reality, Bitcoin, Alexa</a>



The gang gets together to talk about what they’ve been up to, year end wrap-up, and some random odds and ends.

Topics:
<ul>
 	<li>K Scott’s been focused on cloud stuff – moving apps to the cloud. Kevin’s been working with rearchitecting an application to Node based microservices. They’re using Docker some in dev, but not in production. There’s a discussion about Docker based deployments.</li>
 	<li>Jon talks about what’s been going on with .NET Foundation: Meetup Pro, new projects joining, etc. Kevin makes Jon explain what the .NET Foundation actually is.</li>
 	<li>Mixed Reality – What can you actually do with it? The guys wonder if it’s neat but niche, comparing it to Kinect and the Segway.</li>
 	<li>Cryptocurrency!
<ul>
 	<li>Jon talks about how he accidentally ended up with $250ish in Bitcoin and $10 Dogecoin.</li>
 	<li>The Bitcoin Pizza, Scott Hanselman’s $3500 USB cable.</li>
 	<li>K Scott never bought any because he didn’t need to buy meth or pay off a hitman.</li>
 	<li>Jon wondered if he could make money mining Bitcoin with solar power, but the internet told him no.</li>
 	<li>K Scott’s OdeToCode.com website was mining Bitcoin, he claims it wasn’t him.</li>
</ul>
</li>
 	<li>Jon talks about how the Herding Code site was hacked.</li>
 	<li>Net Neutrality: Does public opinion matter? What will the result be? Jon and K Scott bemoan the fact that many consumers don’t really have much choice on internet providers.</li>
 	<li>iPhone discussions: Does the notch matter? Kevin misses the home button. The guys talk about how touch gestures are sometimes frustrating.</li>
 	<li>Alexa and voice based commands: what works, what doesn’t?</li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0228-2017-Wrapup.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 227: Rob Ashton on Better Coffee Through Science</title>
    <link>https://herdingcode.com/herding-code-227-rob-ashton-on-better-coffee-through-science/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-227-rob-ashton-on-better-coffee-through-science/</guid>
    <pubDate>Tue, 12 Dec 2017 00:05:02 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 227: Rob Ashton on on Better Coffee Through Science While at NDC</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 227</strong></p>
Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0227-Rob-Ashton.mp3">Herding Code 227: Rob Ashton on on Better Coffee Through Science</a>



While at NDC Oslo, Jon talked to Rob about how he and the <a href="http://tamebaristas.com/">Tame Baristas</a> crew make amazing coffee.

Topics:
<ul>
 	<li>What's the deal with Tame Baristas and making coffee at software conventions?</li>
 	<li>Ensuring consistency - precise weights, equipment</li>
 	<li>The imporance of a quality coffee grinder (he uses an <a href="http://www.mahlkoenig.com/en_products/EK-EKK-43.html">EK43</a>)</li>
 	<li>Freezing coffee - actually a good thing?!?</li>
 	<li>What's the deal with pour over coffee?</li>
 	<li>What's the best way to up your home coffee game on a budget?</li>
 	<li>What do you do when you're not making coffee? Spoiler: Elm and Erlang.</li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0227-Rob-Ashton.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 226: Jon Skeet on .NET at Google and Feminism for Geeks</title>
    <link>https://herdingcode.com/herding-code-226-jon-skeet-on-net-at-google-and-feminism-for-geeks/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-226-jon-skeet-on-net-at-google-and-feminism-for-geeks/</guid>
    <pubDate>Fri, 08 Dec 2017 00:16:38 GMT</pubDate>
    <description><![CDATA[<p>Herding Code 226: Jon Skeet on .NET at Google and Feminism for Geeks Show Note</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 226</strong></p>
<p><em>Download / Listen: </em><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0226-Jon-Skeet.mp3"><em>Herding Code 226: Jon Skeet on .NET at Google and Feminism for Geeks</em></a></p>
<p></p>
<p>Show Notes:</p>
<ul>
<li>.NET at Google
<ul>
<li>(00:17) Jon G asks Jon Skeet about what he does at Google and how it relates to .NET. Jon’s working to make the Google Cloud Platform great for .NET developers. This is two-fold: if you’re a .NET developer he’d like GCP to be a great place for you to host applications, and if you’re a GCP developer he’d like .NET to be an obvious choice for you to build your applications.</li>
<li>(01:50) Jon G asks about what languages GCP supports, and how .NET fits in. Jon Skeet says it’s an obvious fit on the server-side, and he also sees that .NET has a great cross-platform and device story for clients. .NET Core landed at a great time for them to embrace it.</li>
<li>(03:59) K Scott asks what came first: the decision to embrace .NET, or .NET going open-source / cross-platform.</li>
<li>(05:15) Jon G asks for a quick <em>Google Cloud Platform for Azure developers</em> overview.</li>
</ul>
</li>
<li>Feminism for Geeks
<ul>
<li>(08:22) K Scott asks about Jon Skeet’s “Code Like A Girl” shirt. Jon S talks about his recent interest in feminism. Jon Skeet talks about</li>
<li>(12:35) Jon G talks about worries about “doing the wrong thing” in trying to help. Jon Skeet talks about lessons he’s learned and gives some great advice.</li>
</ul>
</li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0226-Jon-Skeet.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 225: Glitch with Jenn Schiffer and Daniel X Moore</title>
    <link>https://herdingcode.com/herding-code-225-glitch-with-jenn-schiffer-and-daniel-x-moore/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-225-glitch-with-jenn-schiffer-and-daniel-x-moore/</guid>
    <pubDate>Tue, 21 Nov 2017 01:43:14 GMT</pubDate>
    <description><![CDATA[<p>Note: This was recorded several months ago. Our site was offline for a while, the dog ate our collective homework, etc. Sorry about that. The main thing that&rsquo;s changed since we</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 225</strong></p>
<em>Note: This was recorded several months ago. Our site was offline for a while, the dog ate our collective homework, etc. Sorry about that. The main thing that’s changed since we recorded was the addition of </em><a href="https://medium.com/glitch/your-own-little-space-on-glitch-865b5cfebb7f"><em>user profiles</em></a><em>.</em>

Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0225-Glitch.mp3">Herding Code 225: Glitch with Jenn Schiffer and Daniel X Moore</a>



Show Notes:
<ul>
 	<li>Hello. Who are you and what is Glitch?
<ul>
 	<li>(00:17) Kevin introduces the <a href="https://twitter.com/danielxmoore">Daniel X Moore</a> and <a href="https://twitter.com/jennschiffer">Jenn Schiffer</a> and asks what Glitch is. Daniel explains how Glitch is different: you can create or remix a web app instantly without needing to setup or configure anything.</li>
 	<li>(03:38) Jon likes the way that the getting started video references the whole view-source culture of the early web. Jenn talks about the value of removing the fear of breaking things when you're getting started.</li>
</ul>
</li>
 	<li>Why did you make Glitch, and why now?
<ul>
 	<li>(04:20) Kevin asks what led to the creation of Glitch. Daniel talks about how he’s been tinkering with pixel editors and online tools to make weird things for a long time, but finally the tools, browsers, and community have matured to a point where tools like Glitch are viable. Jenn points out that at least three members of the team that have made art editor apps and like to make weird stuff that you didn’t know you needed but you really do.</li>
</ul>
</li>
 	<li>User experience overview of building a new Glitch app
<ul>
 	<li>(06:40) Jon asks about the experience of creating a Glitch app. Daniel talks us through as he creates a Slack bot app live while we listen in a few seconds. He points out that you start with some working code rather than having to build up from nothing.</li>
</ul>
</li>
 	<li>GitHub integration
<ul>
 	<li>(09:10) Jenn says that there are apps like simple static site generators that are useful even if you don’t know anything about coding, don’t want to deal with deploying, etc.</li>
 	<li>(10:30) Daniel says you don’t need to set up an account and log in to get started. Jenn says that you can log in with GitHub or Facebook, and you can easily import from and export to GitHub so you’re not locked into anything. Daniel says anything that works well on Glitch should work on Heroku, AWS, etc.</li>
 	<li>(13:06) Kevin asks if the GitHub import is live, so changes to the repo will affect the live site.</li>
 	<li>(13:40) Kevin asks about the live update features. Daniel says that they’ve got things down to around 1 second latency to see your changes live, and how the development experience has changed as the latency improved.</li>
</ul>
</li>
 	<li>Nerdy tech stuff about how they actually built it
<ul>
 	<li>(15:10) Jon asks for more info about how recent browser technology changes have made it possible to build Glitch.</li>
 	<li>(16:32) Jon asks about the backend. Daniel explains how things are wired up using Docker containers, web socket connections and magic.</li>
 	<li>(19:30) Jon asks about how things are sandboxed so one app doesn’t affect others users.</li>
 	<li>(20:55) Kevin and Jon ask for information about how many apps have been built, how many are actively used, etc. Daniel gives some high level info and talks about some popular apps like a Twitch proxy.</li>
</ul>
</li>
 	<li>Glitch for teaching new users
<ul>
 	<li>(24:25) Jon asks if people use Glitch to teach coding at in-person classes. Jenn talks about some examples of courses, including online courses like <a href="https://aframe.io/">A-Frame</a>. Jenn says that she likes focusing on teaching one thing rather than complicating it with also teaching deployment. Daniel talks about the excitement of making a change, seeing the result, and having a positive feedback cycle quickly. Daniel and Jenn talk about how the simplicity of Glitch lets people build things that people would even build otherwise.</li>
 	<li>(29:22) Jon asks how Glitch fits in with tools like Codepen. Jenn talks about different ways people use Glitch for sketching and sharing app ideas.</li>
</ul>
</li>
 	<li>Nerdy stuff like licenses, rollback, secret storage, embedding
<ul>
 	<li>(30:55) Jon asks if there's a license for the code and how it works with remixing. Jenn says you can include a license file, but they don't want to complicate people early on.</li>
 	<li>(33:25) Kevin asks if there's support for rolling back in case you break a live app.</li>
 	<li>(35:30) Jon asks how things like API keys and passwords are handled so you're not accidentally checking them in to GitHub. Jenn and Daniel talk about Glitch features to integrate with APIs and services.</li>
 	<li>(40:20) Jon asks if it's possible to just iframe a Glitch app to build something like a Twitter app.</li>
</ul>
</li>
 	<li>The Glitch logo is friendly and approachable. They've put a lot of thought into being friendly to new users.
<ul>
 	<li>(41:20) Jon asks for more detail about the Glitch fish logo. Jenn and Daniel talk about it, then go on to explain how they've designed the Glitch interface to make it friendly and approachable. There's an interesting discussion of how that goes into tutorials, teaching. Daniel talks about how there's so much stuff out there that no one is an expert, and Jenn talks about she thrives on being overwhelmed and loves to be able to sketch and prototype in Glitch to experiment with new things.</li>
 	<li>(51:35) Jon says he'd like to be able to click on users names to see their profile information. Daniel and Jenn talk about things they're working on in that space. UPDATE: <a href="https://medium.com/glitch/your-own-little-space-on-glitch-865b5cfebb7f">User profiles on Glitch</a> have shipped since we talked.</li>
 	<li>(53:25) Jon says he really likes that their getting started tutorials have a lot of games, and he's seen that kids really like to learn with games. Jenn says that kids are natural storytellers, and gravitate to games and art focused apps.</li>
</ul>
</li>
 	<li>A JavaScript joke
<ul>
 	<li>(55:00) Jon asks if they have any JavaScript jokes.</li>
</ul>
</li>
 	<li>What's next and wrapup
<ul>
 	<li>(56:15) Jon asks what's next. Jenn is heading out on the road to talk to people and thinking about community things like making it easy to ask for help. Daniel is working on new features like versioning, rollbacks, branching, etc.</li>
 	<li>(58:20) Jon asks if there's something like Glitch Enterprise on the way that will result in features being turned off or something. Jenn references Anil's post on <a href="https://medium.com/glitch/how-we-wont-screw-up-glitch-9b46fe153157">How we won't screw up Glitch</a>. Daniel and Jenn talk about some potential additional features that people might want to pay a reasonable amount for, in the "pennies a month" range.</li>
 	<li>FIN</li>
</ul>
</li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0225-Glitch.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 224: Jeremy Miller on Marten, Postgres and Alba</title>
    <link>https://herdingcode.com/herding-code-224-jeremy-miller-on-marten-postgres-and-alba/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-224-jeremy-miller-on-marten-postgres-and-alba/</guid>
    <pubDate>Fri, 19 May 2017 21:11:49 GMT</pubDate>
    <description><![CDATA[<p>The gang talks to Jeremy Miller about some of his open source projects. Herding Code 224: Jeremy Miller on Marten, Postgres and Alba</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 224</strong></p>
<p>The gang talks to Jeremy Miller about some of his open source projects.<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0224-Jeremy-Miller.mp3">Herding Code 224: Jeremy Miller on Marten, Postgres and Alba</a><p><p>Show Notes:<ul><li><a href="http://jasperfx.github.io/marten/">Marten</a><ul><li>(01:20) Jeremy's shops really like using document databases because there's a lot less friction to develop and ship your applications. They were having trouble with their document databases in production, though, so when they saw Postgres has JSON support they decided to build a client library on top of it so they'd have the developer productivity of a document database, but with the stability and tools that come with Postgres.<li>(03:24) K Scott mentions Jeremy's recent blog post comparing the simplicity of building applications using a document database as opposed to using an ORM. Jeremy explains how document databases allow you to have a more evolutionary design that's able to handle changes.<li>(04:35) K Scott asks about their recent use of Marten as an event store. Jeremy says they're building up view projections that express the read side state of the application. The advantage of having them in Marten is that they're just documents, and you don't need additional infrastructure on top of your application document database.<li>(06:07) K Scott remarks on the great documentation and API design. Jeremy says that after years of abuse over his StructureMap documentation, he's decided to make documentation a much bigger emphasis for this project.<li>(06:45) K Scott asks about how the documents are stored in the database. Jeremy says each document type has an underlying table with some metadata columns, and the main document is in a single JSONB column. JSONB is a Postgres data type that's a binary representation of a JSON document that's much more efficient for searching and querying.<li>(08:12) Jon asks about differences between BSON, JSONB, etc.<li>(09:12) Jon asks what the main reasons for using Marten over just storing documents in JSONB. Jeremy says the LINQ provider is a lot more user friendly and productive than parsing through JSON yourself. There's also the unit of work which gives you transactional semantics, there's database migration tooling that handles things like foreign key changes. Strong expression typed support, calculated indexes, and working with the in-database JavaScript support to map data in the database.<li>(12:22) Jon asks if he'd looked at Entity Framework. Jeremy says that due to differences in data structures, it's a pretty different model. There's nothing that prevents you from using Marten for documents in a Postgres database alongside EF or Dapper for relational tables in the same database.<li>(13:51) K Scott asked where Marten falls in transactional support, since document databases take pretty different views on that. Jeremy says that Marten is ACID all the way down - you can query for a document as soon as it's committed, and you don't need to deal with eventual consistency unless you opt into it for event store.<li>(15:12) K Scott asks about the testing story. Jeremy talks about his shop's integration testing strategy, and that document databases are a lot easier to integration test than relational databases. From a unit testing perspective, they do some minimal mocking, but he recommends integration testing rather than unit testing in most places.<li>(17:42) Kevin asks about JSON patching support, since Postgres has support for that.<li>(18:48) K Scott asks about their use of <a href="http://sqitch.org">Sqitch</a>. Jeremy explains how it's a simple database migration system using SQL semantics.<li>(20:35) Kevin has a question about data migrations for updating existing documents. Jeremy recommends using their patching API for that; if you can't do that use JavaScript in the database.<li>(22:02) Jon asks about the release notes mention of lowering memory usage. Jeremy says the main work was in minimizing serializing to JSON strings and using object pooling.<li>(24:04) K Scott mentions the successful release and <a href="https://gitter.im/jasperfx/marten?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge">active Gitter channel</a>. Jeremy says this is the smoothest experience he's had with an open source release.<li>(25:05) Kevin asks if there are other libraries out there that are making it easier to work with Postgres, and asks if there's any hope of standardization across Postgres, Oracle, and SQL Server.<li>(27:22) Scott K asks about the main selling points of Marten on top of Postgres.<li>(28:22) Scott K asks if they've looked at cloud document databases as well, like DocumentDB. Jeremy explains that it's pretty tied to Postgres.<li>(29:40) Scott K asks about best practices on querying. Jeremy says they invested a lot of time in performance optimizations, and talks about calculated indexes, calculated fields for complex structures, and Marten's compiled queries in C# code (which bypass compiling LINQ queries). The npgsql library they run on top of also supports batching, which can give you big boosts in chatty applications. There's also support for including related fields in one database roundtrip.</li></ul><li><a href="http://jasperfx.github.io/alba/">Alba</a><ul><li>(34:04) K Scott asks about Alba. Jeremy talks about the need their shop has for unit tests that run the full HTTP request cycle without hitting a webserver. This allows you to test the full end to end output for cases where you have filters, caching, middleware, etc. It was originally inspired by the Play framework in Scala.<li>(38:33) Jon asks when it makes sense to move from the ASP.NET Core test host to use Alba. Jeremy says that it's mostly a matter of preference, but Alba does a good amount of legwork for you for things like routing.<li>(39:52) K Scott asks how Alba fits in with integration tests with Selenium. Jeremy says he'd really just want to use Selenium when there's some significant UI functionality, but for the most part he'd avoid it as much as possible and use Alba.<li>(41:00) Jon asks about Jeremy's experiences in porting to .NET Core. Jeremy says that the newer projects were straightforward, but his older projects that had a good amount of reflection were really hard. He's sorry to see project.json go, and he things the dotnet CLI is worth upgrading just about on its own since it makes automation almost trivial.</li></ul><li>Changes in the .NET Open Source world<ul><li>(43:47) K Scott circles back to ask about Jeremy's comments about Marten being the most positive experience he's had with .NET open source. Jeremy says the .NET open source ecosystem is a lot more positive and helpful. Marten fills a pretty good niche that many people found helpful. Jeremy says that he's seen the user community become a lot more collaborative compared to previously treating open source maintainers as product support. Jeremy says he also gets pull requests for documentation, which is something he'd never expect a few years ago. </li></ul><li>StructureMap<ul><li>(46:26) Kevin asks about Jeremy's thoughts on turning StructureMap over to someone else. Jeremy says it's been 14 years, people use it in ways he wouldn't expect, ASP.NET Core has a built-in IoC Container, and it's hard to make StructureMap work with the ASP.NET Core IoC requirements. The project is still viable and continuing, it's just going to be better for everyone under new ownership.</li></ul><li>Misc Questions<ul><li>(49:15) Frank asks on Twitter "Why so much hate for Scrum?" Jeremy talks about the ceremony and tracking in Scrum take all the joy out of Agile programming. Jeremy says Scrum is the Scrappy Doo of the Agile Programming world.<li>(51:22) Jon asks about Jeremy's recent post: <a href="https://jeremydmiller.com/2017/02/06/the-different-meanings-of-i-take-pull-requests/">The Different Meanings of “I take pull requests”</a>. Jeremy reviews them from the most positive to the most negative.<li>(54:05) K Scott asks about Jeremy's post: <a href="https://jeremydmiller.com/2017/02/09/thoughts-on-agile-database-development/">Thoughts on Agile Database Development</a>. Jeremy says that relational databases have long been the final frontier of agile development, and the database community has resisted agile development.<li>(56:42) K Scott asks what Jeremy's up to, and Jeremy talks about his next release in May: a human.</li></ul></li></ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0224-Jeremy-Miller.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 223: Keith Horwood on StdLib, Nodal, and Functions as a Service</title>
    <link>https://herdingcode.com/herding-code-223-keith-horwood-on-stdlib-nodal-and-function-as-a-service/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-223-keith-horwood-on-stdlib-nodal-and-function-as-a-service/</guid>
    <pubDate>Tue, 18 Apr 2017 02:14:42 GMT</pubDate>
    <description><![CDATA[<p>The gang talks to Keith Horwood about stdlib, nodal, and lots more! Herding Code 223: Keith Horwood on StdLib, Nodal, and Functions as a Service</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 223</strong></p>
The gang talks to Keith Horwood about stdlib, nodal, and lots more!

Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0223-Keith-Horwood.mp3">Herding Code 223: Keith Horwood on StdLib, Nodal, and Functions as a Service</a>



Show Notes:
<ul>
 	<li>Standard Lib (<a href="https://stdlib.com/">stdlib</a>)
<ul>
 	<li>(00:44) Standard Lib is a registry for serverless microservices. It's kind of like a mix between npm and heroku, so there is a central registry, but rather than just installing the services locally, they handle deployment for you. There are command line tools available via npm that make it easy to create (lib create) and deploy microservices (lib up).</li>
 	<li>(02:23) Jon says he's pretty impressed with the interactive experience on the website, where you can very quickly deploy a service. Keith explains how they set up a service that handles the tarball packaging to allow creating a service in the browser. They expect that developers will usually start with the cli tools, but the browser based onboarding experience is nice for new users to get familiar with the service.</li>
 	<li>(04:22) K Scott says that essentially he can just write a javascript function and have it running as a service. Keith agrees, but says it's also set up so you don't need to manage servers - it automatically scales and self-heals.</li>
 	<li>(05:34) K Scott asks about how the monitoring and exception handling works. Keith says they work with several monitoring systems. Currently the output is just a text dump, but they're working to improve that.</li>
 	<li>(06:15) K Scott asks about how you handle persistance. Keith says that currently they don't offer their own persistence layer, and he recommends just using compose or Dynamo or RDS. They're talking to some companies doing some neat stuff with GraphQL and gives a shoutout to <a href="https://graph.cool/">Graphcool</a> who runs a really cool GraphQL backend as a service.</li>
 	<li>(07:48) K Scott asks about their pricing model. Keith says they're going to be going with a Twilio-style system where you fill up a wallet and pay per compute, so you only pay for what you use.</li>
 	<li>(09:09) K Scott asks how they differentiate from AWS Lambda and Azure Functions. Keith explains how they're providing another layer of abstraction. The existing infrastructure and infinite scalability are great, but the workflows are too complex, so stdlib provides a nice layer on top of that.</li>
 	<li>(10:42) K Scott asks about their versioning system, in which development is mutable but releases are immutable. Keith explains that service immutability is a point of trust for API consumers. When you're developing, you're not supporting consumers, so you can continue to change your service, but once you deploy your service can't be changed.</li>
 	<li>(12:42) K Scott asks how clients will reference an API by version. Keith talks about the syntax for referencing a specific version and says if you don't specify a version number you'll just get the latest.</li>
 	<li>(13:55) Jon asks what to do if he deploys a package with a really bad error. Keith explains how you can use "lib down" on a package, and discusses the monitoring and notification systems they've got in place to communicate with consumers.</li>
 	<li>(15:17) Jon asks about the view templates. Keith says that they started building view templates for internal use as backends to single page applications, then realized they'd be very useful to other developers. They also have templates for Alexa apps including a Delores Abernathy (WestWorld) sample app.</li>
 	<li>(16:44) K Scott asks about what some of the biggest challenges they faced putting it together. Keith says that AWS Lambda can be a black box and talks about the process of finding the right developer abstraction.</li>
 	<li>(18:36) K Scott asks about Keith's blog post titled <a href="https://hackernoon.com/using-server-less-architecture-to-massively-parallelize-dna-sequence-alignment-via-stdlib-and-343dd2d5aebf">Using "Server-less" Architecture to Massively Parallelize DNA Sequence Alignment via StdLib and Node.js</a>. Keith explains what DNA sequence alignment is, and how you can use massive parallelization to go from an n-squared problem to operate with a time complexity of one.</li>
</ul>
</li>
 	<li><a href="https://github.com/keithwhor/NtSeq">NtSeq</a>
<ul>
 	<li>(21:35) Jon asks about Keith's <a href="https://github.com/keithwhor/NtSeq">NtSeq</a> library for DNA sequencing. Keith actually dropped out of grad school in bio chem, so he had the background and some code lying around.</li>
</ul>
</li>
 	<li>Collaboration, Dependencies, and Documentation
<ul>
 	<li>(22:50) Kevin says that a lot of function as a service samples are petty simple, but real solutions will require multiple collaborative services. Are there thoughts on how to assemble collaborating services effectively? Keith explains that these were some of the design goals for stdlib.</li>
 	<li>(25:22) Kevin asks if there are ways to track service dependencies. Keith talks about the static analysis opportunities, and mentions that all dependent services you've been calling will show up in your dashboard.</li>
 	<li>(26:15) Jon is pretty impressed with the service documentation and asks how it's created. Keith talks about the markdown and service json based documentation.</li>
</ul>
</li>
 	<li><a href="https://github.com/keithwhor/nodal">nodal</a>
<ul>
 	<li>(27:25) K Scott asks about what prompted Keith to create stdlib. Keith talks about the history, starting with the <a href="https://github.com/keithwhor/nodal">nodal</a> platform. nodal has been pretty popular as a platform, but many really liked the workflows for deployment and service management, but didn't necessarily want to learn a new platform, and many didn't have data persistence needs.</li>
 	<li>(29:40) K Scott says that he finds the Nodal sample very easy to read - ES2015 classes that extend a base controller. Keith talks about the unique time in JavaScript history when Nodal started. He'd made a bet on io.js during the Node / io.js split, and had leveraged ES2015 syntax. When io.js and Node merged back up, Nodal was the one of the first mature Rails-like frameworks.</li>
 	<li>(31:35) K Scott asks about the ORM. Keith talks about why he built the query composer. Nodal's ORM is called the composer, and it uses method chaining, then reduces everything down to one query. That gets around the n+1 issues you'll run into with ORMs like Active Record. There's a GraphQL example at graphql.nodal.com which can take a GraphQL query and translate it down to a single Postgres query. They're looking at breaking the composer out to allow use in other GraphQL applications. K Scott asks more about the join syntax and lazy / eager loading.</li>
 	<li> (35:21) K Scott asks about the extends keyword and object orientation. Keith says that the JavaScript community is growing so quickly that as long as developers can read the code easily, they're just happy that it's there. A lot of these newer developers aren't that opinionated, and developers are happy to work with opinionated frameworks.</li>
</ul>
</li>
 	<li>What do you do for fun, music apps, what's next?
<ul>
 	<li>(36:35) K Scott asks Keith what he does when he's not working on stdlib and nodal. Keith says it's the majority of his time now. Keith says he used to run.</li>
 	<li>(37:28) Jon noticed Keith's audiosynth.js lib on GitHub. Keith says that audiosynth was done before webaudio and webmidi, and he stumbled on someone who was generating simple sine wave audio files in JavaScript, and he extended it to use some more interesting string synthesis algorithms to make some more advanced tones. There are some more advanced audio APIs available now. Keith says that the most interesting outcome of that work was the connection he made to the first engineer they hired at stdlib.</li>
 	<li>(40:22) K Scott asks what's coming up. Keith talks about the authentication and authorization layers as well as multi-language SDKs and support that are coming out soon. K Scott asks about the current auth story, and Keith says that currently you code it all yourself.</li>
</ul>
</li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0223-Keith-Horwood.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 222: Ben Hall on using Windows Containers for ASP.NET Applications</title>
    <link>https://herdingcode.com/herding-code-222-ben-hall-on-using-windows-containers-for-asp-net-applications/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-222-ben-hall-on-using-windows-containers-for-asp-net-applications/</guid>
    <pubDate>Fri, 03 Mar 2017 21:38:17 GMT</pubDate>
    <description><![CDATA[<p>At NDC London, Jon chatted with Ben Hall about his presentation about deploying ASP.NET applications to Windows Containers with Docker, including demos with Nerd Dinner and MVC</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 222</strong></p>
At NDC London, Jon chatted with Ben Hall about his presentation about deploying ASP.NET applications to Windows Containers with Docker, including demos with Nerd Dinner and MVC Music Store!

Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0222-Ben-Hall.mp3">Herding Code 222: Ben Hall on using Windows Containers for ASP.NET Applications</a>



Show Notes:
<ul>
 	<li>Deploying ASP.NET applications to Windows Containers with Docker
<ul>
 	<li>(00:30) Ben Hall gave a talk at NDC London in which he deployed Nerd Dinner and MVC Music Store 2.0 to Docker using Windows Containers.</li>
 	<li>(00:52) Jon says that Docker has been primarily Linux focused and asks how Windows fits in here. Ben explains the history of Docker and Windows Docker support on Windows Server.</li>
 	<li>(01:40) Jon asks how this works if you're not developing on Windows Server.</li>
 	<li>(02:23) Jon asks why anyone would want to deploy Windows based applications using Docker. Ben talks about some advantages, including automation, tooling, and a standard approach to packaging and deploying applications - including applications that weren't built with any thought of containers or automated deployment.</li>
 	<li>(04:30) Jon says that all the hype he's seen related to ASP.NET on Docker are talking about ASP.NET Core. Ben talks about why non-Core apps on Docker are relevant.</li>
 	<li>(05:29) Jon asks how this compares to the traditional approach to just deploying using Hyper-V and full virtual machines. Ben describes some of the inefficiencies and just general heaviness around deploying an entire VM for an application, vs. lightweight container. Ben and Jon talk about some of the benefits, including deployment documentation as executable source code. Ben talks about the advantages of automating deployment of a set of resources using Docker Compose, as well.</li>
 	<li>(09:32) Jon asks about the different choices he's got, including Windows Server Core and Windows Nano Server. Ben sorts him out.</li>
 	<li>(11:20) Jon asks how Hyper-V containers fit in. Ben talks about the security and isolation advantages due to having a separate kernel, especially when you're dealing with a multi-tenant scenario.</li>
</ul>
</li>
 	<li>Katacoda
<ul>
 	<li>(13:20) Jon asks about Ben's recent experience with this due to deploying Katacoda. Ben describes how Katacoda, an online interactive learning platform for software developers. It leverages Docker to allow you to give you a terminal in a web page to let you start hacking and learning quickly.</li>
 	<li>(14:14) Jon asks about the business model for Katacoda. Ben explains that their main model is working with vendors, making it easier for their customers or potential customers to try out products with no install. They're also working on versions for training, which eliminates the time and uncertainty of getting everyone's machine configured.</li>
 	<li>(15:18) Jon asks what's next, and Ben says the next big thing is Azure Container service - using Kubernetes to configure clusters across operating systems, optimizing for cost, etc.</li>
</ul>
</li>
 	<li>What do you do for fun?
<ul>
 	<li>(16:20) Jon asks what Ben does for fun, and Ben reminds him that he runs a startup.</li>
</ul>
</li>
</ul>
Links:
<ul>
 	<li><a href="http://ndc-london.com/talk/deploying-windows-containers/">Talk: Deploying Applications to Windows Containers and Windows Server 2016</a></li>
 	<li><a href="https://www.katacoda.com/">Katacoda</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0222-Ben-Hall.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 221: Rob Conery on How Complexity Theory Can Save Your Job</title>
    <link>https://herdingcode.com/herding-code-221-rob-conery-on-how-complexity-theory-can-save-your-job/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-221-rob-conery-on-how-complexity-theory-can-save-your-job/</guid>
    <pubDate>Fri, 24 Feb 2017 23:25:20 GMT</pubDate>
    <description><![CDATA[<p>At NDC London, Jon chatted with Rob Conery about his presentation on how Rob got fired for misunderstanding complexity theory, what you need to know, lambda calculus, and The Im</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 221</strong></p>
At NDC London, Jon chatted with Rob Conery about his presentation on how Rob got fired for misunderstanding complexity theory, what you need to know, lambda calculus, and The Impostor’s Handbook.

Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0221-Rob-Conery.mp3">Herding Code 221: Rob Conery on How Complexity Theory Can Save Your Job</a>


<h3>Show Notes:</h3>
<ul>
 	<li>(00:30) Jon asks Rob about his presentation at NDC London. Rob’s talk started by describing how he got fired from a job by trying to do something that was NP-Hard. This past year he dug into understand complexity theory, mostly from the point of view of just recognizing the pitfalls. He once wrote a co-occurrence query for just two products (two products that are bought together frequently), and that worked just fine. However, trying to write a co-occurrence query for three or four products doesn’t work because it’s exponentially hard.</li>
 	<li>(02:23) Jon asks about the different classes of problems. Rob explains the terms, starting with polynomial time (P) problems, then talking about exponential and factorial complexity.</li>
 	<li>(04:10) Jon talks about how Rob’s co-occurrence query was exponentially hard, but for just two products it worked fine. Rob continues with his example from his talk about finding the best place for a group of people to go – that’s NP-Hard. But if there are only two people, you can handle it. You can get into solving some harder problems using concurrency and throwing machines at the problem, but you should understand it.</li>
 	<li>(5:10) Rob explains how ideas like page rank fit in, by using authority as a heuristic. Heuristics can be use used for other problems, like the travelling salesman – they won’t give you the provably best solution, but they will reliably give you a very good answer.</li>
 	<li>(7:45) Jon asks about the difference between decisions and optimizations. Rob explains that decision problems are NP-Complete problems – if you can represent a problem as a long boolean statement, it’s a boolean satisfiability problem. He describes how optimization problems</li>
 	<li>(10:12) Jon asks about Rob’s recent book, The Impostor’s Handbook. Rob explains why he wrote it, and the current audio / video updates he’s making for it.</li>
 	<li>(11:40) Jon mentions how there’s a lot more to the book than complexity theory, and Rob explains how it’s all related – complexity theory, foundations of computing, lambda calculus, etc. Jon asks Rob why he likes lambda calculus so much, and Rob talks about a presentation he really liked by Jim Weirich in which he built a y combinator, and he talks about some examples from his book using a y combinator in ES6 to do things like fibbonaci series.</li>
 	<li>(14:00) Rob’s book, The Impostor’s Handbook, is available at bigmachine.io.</li>
</ul>
Links:
<ul>
 	<li>[video]

<a href="https://vimeo.com/205452478">How Complexity Theory Can Save Your Job - Rob Conery</a></li>
 	<li>[video]

<a href="https://www.youtube.com/watch?v=FITJMJjASUs">Y Not- Adventures in Functional Programming by Jim Weirich</a></li>
 	<li><a href="https://bigmachine.io/products/the-imposters-handbook/">The Imposter’s Handbook</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0221-Rob-Conery.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 220: Richard Campbell on Humanitarian Toolbox</title>
    <link>https://herdingcode.com/herding-code-220-richard-campbell-on-humanitarian-toolbox/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-220-richard-campbell-on-humanitarian-toolbox/</guid>
    <pubDate>Fri, 17 Feb 2017 06:53:23 GMT</pubDate>
    <description><![CDATA[<p>At NDC London, Jon and K Scott talk to Richard Campbell about the Humanitarian Toolbox project. Herding Code 220: Richard Campbell on Humanitarian Toolbox [au</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 220</strong></p>
At NDC London, Jon and K Scott talk to Richard Campbell about the Humanitarian Toolbox project.

Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0220-Richard-Campbell.mp3">Herding Code 220: Richard Campbell on Humanitarian Toolbox</a>


<h3>Show Notes:</h3>
<ul>
 	<li>Humanitarian Toolbox
<ul>
 	<li>(01:00) Richard was the <a href="https://vimeo.com/204070784">keynote speaker at NDC London</a>, giving an update on what’s going on with <a href="http://htbox.org">Humanitarian Toolbox</a>. There was a 2 day pre-conference hackathon, including Steve Gordon who’s been contributing for a while.</li>
 	<li>(02:00) Jon comments on the star power among the contributors to HT. Richard calls out Shawn Wildermuth’s contributions and how he’s been applying his version update experience from his coursework to the project. HT got its start as the example project for the Visual Studio 2015 launch.</li>
 	<li>(04:04) Jon remembers to ask Richard to explain what HT is: open source software for disaster relief organizations. Richard was motivated by the realization that it’s hard for software developers to donate their skills to charity because software comes with an ongoing maintenance cost.</li>
 	<li>(05:35) Scott asks for a description of what the software does. Richard says Humanitarian Toolbox is a collection of projects, and they’re initially focused on the <a href="https://github.com/HTBox/allReady">allReady</a> project. allReady started to help the Red Cross organize and coordinate smoke detector installation efforts to prevent home fire disasters. Software can help through things like mapping, mobile apps, and Twilio based notifications. Just the simple addition of reminder notifications before going out to install smoke detectors has raised their install rate from about 30% to about 80%.</li>
 	<li>(09:00) AllReady is an ASP.NET Core web application using some default Bootstrap theming, and could definitely use some designer help. They work with the Red Cross to provide domain expertise. They’ve had some field trials, but are just now rolling it out broadly to the field now.</li>
 	<li>(11:35) Scott says that it sounds like HT is a little different from the drive by pull request model that’s common in the open source world. Richard says that pull requests really should start as an issue and a discussion before the pull request. They’ve consciously grouped issues so they can be managed at hackathons as well as milestones for releases.</li>
 	<li>(13:12) Jon notes that many open source projects evolve a pull request at a time and often don’t have a clear high level architecture. Richard says they’ve put some effort into architecture and hosting, with the realization that they’ll probably be hosting and maintaining the applications. He says that it’s great to be able to work directly with folks like Dominick Baier for <a href="https://identityserver.io/">IdentityServer</a>, Jon Skeet for <a href="http://nodatime.org/">NodaTime</a>, etc.</li>
 	<li>(14:55) Scott asks about a point Richard had made in his keynote about all the IoT devices we’ve got, but not enough software to go around. Richard says he doesn’t want the disaster relief heroes spending money on software. They don’t understand the impact mobile and cloud can have on their work, and we can help them. He talks about the possibilities for crisis check-in and citizen disaster evaluation using things like social media for things like bridge damage evaluation. There’s so much to be done, the job requires prioritization and building things in a sustainable way.</li>
 	<li>(18:32) Scott asks about how people can get involved; Richard points to htbox.org.</li>
 	<li>(19:12) Jon doubles back to the interaction pattern Richard talked about earlier with issues leading to discussion, then pull requests. Richard also refers to the weekly hangouts, where discussion and collaboration also happen.</li>
 	<li>(20:39) Scott asks what kind of help they could use. Richard says they’ve got a lot of people working on the ASP.NET Core side of things, but need more mobile development help.</li>
</ul>
</li>
 	<li>Gadgets and Idle Chatter
<ul>
 	<li>(22:00) Scott asks Richard what his latest gadgets are. Richard talks about his new <a href="http://amzn.to/2kw3LjI">Dell 43 inch 4K</a> monitor.</li>
 	<li>(23:30) Jon asks about Richard’s office remodel project, including LED lighting.</li>
 	<li>(25:30) Scott asks Richard what he’s doing when he’s not working. Aside from running a charity, he likes to get off the grid an hike in the Himalayas.</li>
</ul>
</li>
</ul>
Links:
<ul>
 	<li>[video]

<a href="https://vimeo.com/204070784">NDC London 2017 Keynote: Saving the World One App at a Time – The Humanitarian Toolbox - Richard Campbell</a></li>
 	<li><a href="http://www.htbox.org/">Humanitarian Toolbox website</a></li>
 	<li><a href="https://github.com/HTBox/allReady">allReady project on GitHub</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0220-Richard-Campbell.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 219: Cake with Gary Park and Mattias Karlsson</title>
    <link>https://herdingcode.com/herding-code-219-cake-with-gary-park-and-mattias-karlsson/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-219-cake-with-gary-park-and-mattias-karlsson/</guid>
    <pubDate>Mon, 17 Oct 2016 16:41:49 GMT</pubDate>
    <description><![CDATA[<p>Jon and Kevin talk to Gary Ewan Park and Mattias Karlsson about Cake , a cross platform build automation system with a C# DSL to do things like compiling code, copy files/folder</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 219</strong></p>
<p>Jon and Kevin talk to <a href="https://twitter.com/gep13">Gary Ewan Park</a> and <a href="https://twitter.com/devlead">Mattias Karlsson</a> about <a href="http://cakebuild.net/">Cake</a>, a cross platform build automation system with a C# DSL to do things like compiling code, copy files/folders, running unit tests, compress files and build NuGet packages.</p> <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0219-Cake.mp3">Herding Code 219: Cake with Gary Park and Mattias Karlsson</a></p> <p></p> <h3>Show Notes:</h3> <ul> <li>Hello and Intro to Cake </li> <ul> <li>(00:35) Gary and Mattias introduce themselves and explain what Cake is. Cake is a cross-platform build system that uses the Roslyn compiler and C# – like Grunt or Gulp, but using C# instead of JavaScript.  <li>(01:48) Jon asks about the integrations and CI support. Gary says that’s a key feature: the build you run on your development machine is going to be as close as possible, if not identical to, the build you’re going to run on your CI server. Right now, Cake is set up with at least 10 online CI servers, which has the added benefit of providing them with a ton of badges for their GitHub readme.  <li>(03:15) Jon says that he cloned the getting started repo and ran a script and some magic happened… but what exactly was that magic doing? Mattias explains that the bootstrapper (either build.ps1 or build.sh) fetches Cake from NuGet, then it launches the build.cake file.  <li>(04:07) Jon asks if PowerShell on Linux will have an impact on Cake, or if the build.sh is simple enough that they’ll just stay with that. Gary says that the bootstrappers are very lightweight and normally don’t need to be changed (although you can if you want), so there’s no real advantage to moving to PowerShell since people who are building on Mac and Linux will probably prefer to just run a shell script.  <li>(05:17) Kevin flips it around and asks if it matters for Bash on Windows. Gary says they’ve got this one covered, too, as they’ve already tested out Cake on Bash on Windows. Mattias says the hard part is the platform specific dependencies, and Gary agrees, saying that Cake is just a wrapper around the tools – there’s an expectation that the tools are either installed or available as a NuGet package.  <li>(06:55) Jon asks if tools are well segmented per-project. Mattias confirms that everything is project specific – you can share if you want, but the default is that you can just clone a repository and build without thinking about dependencies. </li></ul> <li>Docker</li> <ul> <li>(07:50) Jon asks how Cake works with Docker. Mattias talks about the preconfigured Docker images for Cake, which make it easy to easily test builds, handle integration tests, etc. He’s currently testing against Nano Server. Nano Server is very stripped down requires you to install a lot of prerequisites for Cake, so it’s nice to have a preconfigured Docker image for testing. Mattias talks about how versioning with tagged containers help them with integration testing. Gary talk about how they’re using Docker with <a href="https://bitbucket.org/product/features/pipelines">Bitbucket Pipelines</a> to really speed up their Travis build tests. </li></ul> <li>Cake Script</li> <ul> <li>(10:25) Jon asks what a Cake script is – is it just C# code? Gary describes some of the additional build DSL features they’ve added, but other than that it’s just standard C# code.  <li>(11:23) Jon muses about how there are build systems available in just about any programming language out there, but as a C# dev, it’s a lot easier to read a build script in C# code. Gary says that he’s a longtime user of <a href="https://github.com/psake/psake">PSake</a> (a PowerShell based build system. The problem with that is that often his team members aren’t as familiar with PowerShell, so they don’t want to touch the build script. It’s a mental switch to go from coding in C# all day to switch to PowerShell to work on the build script. For the same reason it’s more comfortable to use a JavaScript based build script like Grunt or Gulp when you’re working on an Angular application and use <a href="http://fsharp.github.io/FAKE/">FAKE</a> when building an F# application, it’s just easier to work with a C# based build script when working on a C# project.  <li>(13:30) Jon said that he opened the Cake file in Visual Studio code and saw there was an extension for syntax highlighting, and asks if there’s additional tools for IntelliSense. Gary talks about the current status of OmniSharp when running against Cake. Note that since this podcast was recorded, this has improved as explained in this blog post: <a href="http://cakebuild.net/blog/2016/09/debug-cake-vscode">How to debug a Cake file using Visual Studio Code</a>.  <li>(15:28) Jon asks about debugging a Cake script. Mattias says they’ve added a debug switch to the Cake exe, which waits for you to attach so you can debug. Jon says it sounds great to have debugging support for a build script. Mattias says it’s nice, but since your build scripts are often running on build server it’s also important to have good logging support. </li></ul> <li>Logging</li> <ul> <li>(17:02) Jon asks what the logging support is. Mattias says there’s a built-in abstraction for logging as well as an exception handler, so to break the build you can just throw an exception. Gary say that the default is just to log to the build server like <a href="https://www.appveyor.com/">AppVeyor</a>, but if you want to log to something like <a href="tps://www.elastic.co/products/logstash">logstash</a> you can. Mattias says that they log to standard output and standard error, and every build system integrates well with that. </li></ul> <li>.NET Core support, DI and Modules, Cross-platform Support</li> <ul> <li>(18:06) Jon asks more about the .NET Core port. Mattias says they’re just about done, just working with integration tests. For the most part it’s pretty straightforward, but you can run into things like differences between kernel versions on Linux. The biggest issue has been waiting for dependencies to be available on .NET Core. In the past they’ve relied on Mono for Linux and Mac, and there are slight differences compared to the .NET Framework, so it will be good to be on Core CLR everywhere. (note: the <a href="http://cakebuild.net/blog/2016/09/cake-v0-16-0-released">port to .NET Core has since been completed</a>).&nbsp;&nbsp; <li>(19:52) Jon says he notices they’re using Autofac. Mattias says they use it for dependency injection throughout the codebase, but they’ve replaced it in some places for things like their module system.  <li>(20:33) Jon asks how the module system works. Mattias says you just add a module folder in your tools and implement some attributes on your interfaces that indicate what your module should replace. (22:17) Jon asks about any issues they ran into with the .NET Core cross-platform port. Mattias says there are a lot of dependencies you don’t think about – for instance nuget.exe isn’t available cross-platform or on Nano Server, since it only has the Core CLR. Gary says they made a conscious decision not to implement .NET Core early, so they avoided some of the early adopter pain that some other projects ran into.  <li>(23:47) Jon asks if they’re doing anything specific to handle platform differences. Mattias says that there are a few IFDEFs, but for the most part issues are around tools support, in which case it just won’t launch at all. Gary talks about platform specific criteria you can use in your build scripts to make platform specific decisions. </li></ul> <li>Cake Tasks, Parallel Tasks, Build System Integration, Unit Tests</li> <ul> <li>(26:36) Jon asks how task names are used in a script. Mattias says that those labels are used to determine task dependencies. Gary says you can also use the labels as entry points which are specific to the build server.  <li>(28:22) Jon asks if tasks are run in parallel. Mattias says it’s not currently multithreaded because logs would be difficult to follow. When you define a task, it’s just added to the graph, and nothing’s actually executed until you call RunTarget. Gary said there is an open issue to <a href="https://github.com/cake-build/cake/issues/156">allow parallel execution of tasks</a>, but they’re still working on a good story around debugging and logging. Mattias says it’s standard C# so there’s noting stopping you from running async tasks using the standard C# async methods.  <li>(31:46) Jon says he sees support for several build systems and asks about how you integrate with them. Mattias explains how CI systems can call commandline options, and Gary says that all build systems have provisions for environment variables, and Cake provides a typed wrapper around that, so you get a strongly typed object from the build-specific provider to make informed decisions. For instance, when running on AppVeyor their script pushes the NuGet packages to the prerelease MyGet feed from the development branch and the official NuGet feed when running on release.  <li>(34:09) Jon asks about assembly info patching and versions. Cake can update based on version info. It’s got file hash support, which is important for pushing to Homebrew.  <li>(34:55) Jon asks about unit test integration. Gary says they have method aliases for calling common unit test frameworks, and you can easily extend for other frameworks. Unit test harnesses have published return values, so you can make informed decisions based on specific unit test results. </li></ul> <li>Publishing, Installers, Release Notes</li> <ul> <li>(36:46) Jon asks about&nbsp; publishing options. Cake can build the nuspec for you, you can use your own if you want, or on Core CLR you can use dotnet pack. Jon asks about some of the different ways NuGet is used as a deployment package. (38:42) Jon asks about other installers like <a href="http://wixtoolset.org/">WiX</a>, <a href="http://nsis.sourceforge.net/Main_Page">NSIS</a>, etc. Gary says that Cake is really just wrapping tools with strongly typed classes, which makes it easier to pass in property values to tools. There’s no real magic, it’s just bringing it up an abstraction layer, so you don’t have to remember the command semantics of each tool. Jon asks if, in addition to simplifying how you interact with tools, the abstraction makes it a little easier to switch between tools. Gary says that’s true, and describes how this works in practice. <li>(41:44) Jon asks about the release note parsing feature. Gary says there’s an included release notes parser, which can extract version numbers and bulleted release features from a markdown file assuming it’s in a known format. This allows you to stamp your assembly with the version number, and use the bulleted release notes in your NuGet or Chocolatey release notes. There are also Git Release Notes and Git Release Manager which can be used to generate release notes from issues in a milestone based release on GitHub. Gary says they use this with Cake releases, so just tagging a release gives them an end to end publish process which sets version numbers and writes release notes for all their release endpoints (NuGet, Chocolatey, GitHub release, etc.).</li></ul> <li>Addins</li> <ul> <li>(44:54) Jon asks about the social network support. Gary and Mattias explain how the different addins can announce builds to Twitter, Slack, Gitter, Hipchat, etc. They describe how things like this that are useful but not essential are available as addins. <li>(46:28) Kevin asks if there are any addins that they see as missing. Gary says there aren’t at the moment. He’s got a generic build script for all of his addins, so adding to the script rolls out to all of his addins.&nbsp;&nbsp;&nbsp; <li>(48:08) Jon asks about the discussion in their repo: <a href="https://github.com/cake-build/cake/issues/1136">How do we prevent Addin's becoming stale?</a> Gary talks about the problem (a community member creates a useful addin, then stops maintaining the addin). Their plan is to set up a cake-contrib organization which can help with long-term ownership and support for community addins, allowing them to push NuGet updates as required if the original creator is no longer available or involved. The plan is to ask users to move their addins into the new cake-contrib organization and make the cake contrib user a co-maintainer. Note: Since this was recorded, they’ve set up this organization, as discussed in the wrap-up after the show.</li></ul> <li>Open Source Project Case Studies: NancyFx and IdentityServer</li> <ul> <li>(53:14) Jon asks about some of the open source project build conversions to Cake, starting with NancyFx. Mattias explains some of the challenges, as well as the clear payoff: build script pull requests very soon after the conversion. Jon asks some nitpicky details about why the NancyFx build script script is spawning a process instead of using a Cake wrapper. Mattias explains the process by which build scripts are refined, and Gary points out the advantage of always being able to spawn a process if you need to do something Cake doesn’t yet support. <li>(57:43) Jon asks about the IdentityServer migration. Gary said the IdentityServer team had already done the .NET Core port running under PSake and just wanted to migrate to Cake to get cross-platform builds going. It’s also a lot simple of a build process because it’s doing less.</li></ul> <li>Assembly Merging</li> <ul> <li>(58:50) Jon asks about <a href="http://cakebuild.net/dsl/ilmerge">ilmerge suport</a>. Mattias says it’s pretty popular for tools, to allow you to distribute the tool as a single exe. Gary says he uses <a href="https://github.com/Fody/Costura/">Fody Costura</a> instead to handle assembly merging. Jon says he doesn’t think any assembly merging support is available yet for .NET Core. Gary agrees, and Mattias says that .NET Native support will be helpful when it arrives.</li></ul> <li>Future Plans and Getting In Touch</li> <ul> <li>(1:00:08) Jon asks about future milestones and what’s on the horizon after the .NET Core release. Gary hints at some upcoming releases, which are covered in the post-show wrap-up. <li>(1:01:20) Gary talks about some upcoming speaking engagements, and Mattias mentions the Gitter chat, Twitter and GitHub issues as ways for users to ask any questions.</li></ul> <li>Post-Show Update </li> <ul> <li>(1:03:10) <a href="http://cakebuild.net/blog/2016/08/cake-contribution-organization">Cake Contributions organization</a> <br>The Cake Contributions organization (<a href="https://github.com/cake-contrib/">cake-contrib</a> on GitHub) is now in full motion. It's a common place where people can put their Cake addins &amp; modules, if they want. They still maintain and for all purposes “own” the code, but they get access to resources like CI services, common build scripts, better exposure and the Cake core team can assist with merging pull requests, fixing issues and pushing to NuGet if addin grows stale or the author just too busy with life in general. It’s been well received and quite a few projects has moved over.  <li>(1:03:52) <a href="http://cakebuild.net/blog/2016/09/cake-v0-16-0-released">0.16 Release with .NET Core support</a> <br>So in addition to full .net Framework support, Cake now supports .NET Core (netstandard 1.6). There have been a few patch releases following this, so as of Oct 11 they're up to 0.16.2. Also, due to adding .NET Core support, it's now possible to debug a Cake file with Visual Studio Code. That's cool, because there's now cross platform debugging support for Cake. <a href="http://cakebuild.net/blog/2016/09/debug-cake-vscode">There's a blog post showing how to do that</a>.  <li>(1:04:25) <a href="https://github.com/cake-build/frosting">Frosting</a><br>Frosting is a stand-alone .NET Core runner and host for cake. Cake uses the Roslyn scripting API and provides a DSL for fetching dependencies like tools and addins. Frosting uses the .NET core SDK to handle dependencies, and your cake build script is really just a .NET Core console app. Both are running against the same Cake.Core and Cake.Common packages, they're just being hosted differently. This gives you some advantages - you've got full Visual Studio IntelliSense and tooling support, use the standard methods to package your build as a NuGet package, etc. Frosting also includes a dotnet CLI tool, so you can call dotnet cake.  <li>(1:05:46) <a href="http://cakebuild.net/blog/2016/09/cake-for-yeoman">Cake for Yeoman support</a><br>This adds a cake generator which makes it easy to bootstrap Cake, including a build script, bootstrapper scripts and config files in the current directory just by typing yo cake. There's also scaffolding support to create a new .NET Core project using Frosting with yeoman.  <li>(1:06:18) <a href="http://cakebuild.net/blog/2016/09/cake-for-visual-studio">Cake for Visual Studio</a><br>This is the first release of the Cake for Visual Studio extension. It includes syntax highlighting, Task Runner Explorer integration, bootstrapper commands in the Build menu, project templates for Cake addins, Cake Addin unit test projects, and Cake Modules</li></ul></ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0219-Cake.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 218: React Native for Windows with Matt Podwysocki and Eric Rozell</title>
    <link>https://herdingcode.com/herding-code-218-react-native-for-windows-with-matt-podwysocki-and-eric-rozell/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-218-react-native-for-windows-with-matt-podwysocki-and-eric-rozell/</guid>
    <pubDate>Fri, 23 Sep 2016 19:16:21 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Matt Podwysocki and Eric Rozell about React Native for Windows . Herding Code 218: React Native for Windows with Matt Podwysocki and Eric Roz</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 218</strong></p>
<p>The guys talk to <a href="https://twitter.com/mattpodwysocki">Matt Podwysocki</a> and <a href="https://twitter.com/ericrozell">Eric Rozell</a> about <a href="https://blogs.windows.com/buildingapps/2016/04/13/react-native-on-the-universal-windows-platform/">React Native for Windows</a>.</p> <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0218-React-Native.mp3">Herding Code 218: React Native for Windows with Matt Podwysocki and Eric Rozell</a></p> <p></p> <h3>Show Notes:</h3> <ul> <li>Hello and Quick Update on Reactive Extensions  <ul> <li>(00:15) Matt Podwysocki and Eric Rozell both talk about their work on the Microsoft Partner Catalyst Team.  <li>(01:00) Jon asks Matt what’s new with <a href="https://github.com/Reactive-Extensions/RxJS">Reactive Extensions for JavaScript (RxJS)</a>. Matt talks about how RxJS took on a life of it’s own, as it’s being used by Netflix and Google with Angular 2. Matt’s still a core team member but there are plenty of other people contributing, which is nice. On <a href="https://github.com/Reactive-Extensions/Rx.NET">Reactive Extensions for .NET (RX.NET)</a>, they’re working towards the <a href="https://www.dotnetfoundation.org/">.NET Foundation</a> so it’ll get increased community support. Reactive Extensions are used a lot at Github and Facebook uses it for it’s <a href="https://nuclide.io/">Nuclide IDE</a>. </li></ul> <li>React and React Native Overview  <ul> <li>(02:55) Jon asks Matt to overview <a href="https://facebook.github.io/react/">React</a>. Matt explains how React handles views, components, and unidirectional databinding. Matt says it’s nice that it moves us towards the component model in the HTML world – moving away from the jQuery direct DOM manipulation approach to a more holistic approach.  <li>(05:40) Jon says that he thinks that components introduce some problems of their own and asks Matt how React avoids that complexity. Matt says that’s why <a href="http://facebook.github.io/flux/docs/overview.html">Flux</a> and Redux were introduced.  <li>(06:35) Jon asks what React Native is. Eric explains that <a href="https://facebook.github.io/react-native/">React Native</a> allows you to take the same concepts and tool used for building React web applications and use them to build native applications. It started at Facebook and has picked up a lot open source momentum. </li></ul> <li>How React Native compares to Cordova, Xamarin, etc.</li> <ul> <li>(07:33) Jon says there’s always heated discussion when you talk about building native applications using web technology. What’s the overhead? Is this similar to <a href="http://cordova.apache.org/">Cordova</a>? Eric explains the differences.  <li>(08:50) Kevin asks you’d build a native application with React when there are lots of great native development tools out there. Eric talks about some of the advantages of building your application’s UI in JavaScript. Also, shipping updates as JavaScript files using <a href="http://microsoft.github.io/code-push/">CodePush</a> can be a lot simpler than shipping a new binary for every update. Matt says you can also focus your development team on building the same application for all platforms using React skills rather than separate focus and development skills for each platform.  <li>(11:22) Jon asks where React Native fits in on the scale from Cordova to more native tools like Xamarin. </li></ul> <li>Technical Implementation: How React Native creates Windows UWP applications</li> <ul> <li>(13:35) Jon asks how UWP fits into React Native and how they implemented it technically. Eric says they took a look at how React Android was built and used that as a guide. He discusses how they handled the runtime, and how the application JavaScript is handled by <a href="https://github.com/microsoft/ChakraCore">Chakra</a>.  <li>(15:50) Jon asks about the application is hosted. Eric explains that they first create and navigate to a XAML page, then there’s an initial call to start the JavaScript engine with the application name, then sends back over the bridge a bunch of operations against the UI Manager. The UI Manager will then create subviews and construct the UI tree. In the React view, you have a virtual DOM that represents your UI; that gets translated to operations that are sent over the bridge to create a native UI tree.  <li>(17:30) Jon asks about how elements are styled, since from his experience that’s all done using CSS styles. Eric says they use a subset of CSS called <a href="https://facebook.github.io/react-native/docs/flexbox.html">Flexbox</a> using a library by a developer from Facebook. Matt says <a href="https://ericroz.wordpress.com/2016/04/11/f8-app-on-windows-10-mobile/">when they ported over the F8 app to Windows</a>, they leveraged the same styles and platform specific style pattern that had been used for iOS and Android.  <li>(19:23) Jon asks what was most difficult in moving the F8 application to Windows. Eric says the styling part was pretty easy. The hardest part was in handling platform specific support. Matt describes an issue with linear gradient support. </li></ul> <li>Nuts and bolts: Data, Extensibility, X-Plat Dev, Building and Publishing, Scaffolding, Tools, Testing, etc.</li> <ul> <li>(21:00) Jon asks how they handle data flow. Eric says they use <a href="https://facebook.github.io/relay/">Relay</a>, which runs on top of <a href="http://graphql.org/">GraphQL</a>. It all just moved directly over. Matt says that’s the beauty of this – if there’s something written directly in JavaScript it just works.  <li>(21:55) Jon asks about any other platform specific issues. Eric says that it’s conceptually similar to Xamarin in that are you need to keep in mind that you’re writing to a native front end experience. He explains that it’s a happy medium between web front-end (Cordova) and native in that the simple UI components like text are easily shared, but you can target more platform specific controls as needed. He talks about some differences in things like menus, split views and carousels.  <li>(23:50) Jon asks about the cross-platform development experience? Do you use a lot of emulators? Eric says he mostly works on Windows using the <a href="https://www.visualstudio.com/en-us/features/msft-android-emulator-vs.aspx">Visual Studio Android Emulator</a>. He says when he’s adding a new feature to React Native for Windows, he’ll pop open the Android emulator and use the UI explorer. Matt says he also uses Android Studio and Xcode.  <li>(25:44) Jon asks if there’s a long build step, or if there’s a quick feedback cycle. Eric says that React is built to make the developer experience really fast, and explains how <a href="https://facebook.github.io/react-native/blog/2016/03/24/introducing-hot-reloading.html">hot module reloading</a> makes it possible to see application code changes without reloading or even losing current running state. Matt says that you also get the full Chrome debugging experience.  <li>(27:15) Jon asks how you package your application for publishing. Matt talks about the publishing steps. </li></ul> <ul> <li>(28:10) Jon asks about the <a href="https://github.com/rnpm/rnpm">rnpm (React Native Package Manager)</a> command-line tool. Eric explains how rnpm helps you include dependencies in your React Native applications. It’s extensible, so Eric and Matt used that to implement the Windows scaffolding experience.  <li>(29:52) Jon says that in the scaffolded application he got when he ran rnpm, there are OS specific files for each view and asks if it’s possible to use a consolidated view for all platforms when appropriate. Eric says you’ll generally need a platform-specific entry point for each OS, but once you get past that you can do quite a bit with the core React Native elements.  <li>(31:15) Jon asks if it’s possible to create additional platform-specific controls. Matt talks about support for <a href="https://github.com/ReactWindows/react-native-windows/blob/master/docs/NativeModulesWindows.md">native modules</a> (e.g. dialogs) and&nbsp; <a href="https://github.com/ReactWindows/react-native-windows/blob/master/docs/NativeComponentsWindows.md">native components</a> (e.g. ImageView).  <li>(33:20) Jon asks how he actually runs the application as he’s developing it. Matt says they just read in from the command-line to start the packager and build and run the application using Visual Studio. <a href="https://github.com/ReactWindows/react-native-windows#running-the-examples">The docs currently say Visual Studio is required</a>, although that isn’t necessarily the case if you kick off your build using msbuild.  <li>(34:30) Jon asks if it could be possible to create a React Native Windows application on Mac or Linux, or if you’ll always need Windows due to the SDK. Matt says you’ll always need the SDKs, but Eric points out that there is a web-based React Native Playground (<a href="https://www.rnplay.org/">rnplay.org</a>), and they’d like to reach out to them to get Windows support added.  <li>(35:33) Jon asks if anyone is using it beyond the F8 application. Matt says not yet, they’re still working on the dev experience before they start heavily onboarding people. Jon asks who’s using React Native in general and Matt points out the <a href="http://facebook.github.io/react-native/showcase.html">React Native Showcase</a>.  <li>(36:50) Since part of the idea of UWP is that it runs on multiple Windows platforms, Jon asks if they’ve done anything with that. Eric talks about how part of their F8 demonstration included showing the application on Xbox, mobile devices with Continuum and desktop. They’re interested in looking into HoloLens and IoT as well.  <li>(38:00) Jon asks if it’d be possible to leverage React web code in a React Native application. Eric says that at F8 he saw a talk on the possibility of bringing React Native to web. There are definite sharing points in code between web applications and React Native apps, although you should expect to write native views, and points out that there is work going on to bring <a href="https://www.tizen.org/blogs/srsaul/2016/samsung-committed-bringing-react-native-tizen">React Native to Tizen</a> and <a href="https://github.com/ptmt/react-native-macos">macOS</a>.  <li>(39:35) Jon asks if React Native for Windows is a science project or an ongoing project. Eric and Matt say they’ll be watching for community interest. They expect to keep up with React Native releases, and are hoping for community contributions. Eric says there are hundreds of React Native community modules, and they can’t scale to supporting all of them without some community involvement.&nbsp; <li>(41:15) Jon asks about Visual Studio Code support. Matt says that they’re working closely with the VS Code Team. They’ve already got <a href="https://marketplace.visualstudio.com/items?itemName=vsmobile.vscode-react-native">a plugin for React Native that supports deployment to iOS and Android</a>, and Matt’s hoping to <a href="https://github.com/Microsoft/vscode-react-native/issues/278">get UWP deployment added to that list</a>. Eric points out that you can also set VS Code as your remote debugger, so you can set breakpoints, step through your running code, view stack traces, etc.  <li>(42:18) Kevin asks about the testing story – can you write unit tests and integration tests for React Native? Eric says it’s similar to building large cross-stack applications with tests for services and clients - where you write integration tests between your JavaScript libraries and native code, unit tests for native modules, and tools like <a href="https://facebook.github.io/jest/">Jest</a> for your pure JavaScript components. </li></ul> <li>Getting Started</li> <ul> <li>(43:44) Jon asks for other resources for people getting started. Eric points to the excellent documentation for <a href="https://facebook.github.io/react/docs/getting-started.html">React</a> and <a href="https://facebook.github.io/react-native/docs/getting-started.html">React Native</a>. For React Native for Windows specific docs, there’s <a href="https://github.com/ReactWindows/react-native-windows#documentation">additional documentation in that repo</a>. Matt recommends following the <a href="https://twitter.com/reactwindows">@reactwindows</a> Twitter account.</li></ul></ul> <p>Top Links:</p> <ul> <li>Announcement: <a title="https://blogs.windows.com/buildingapps/2016/04/13/react-native-on-the-universal-windows-platform/#RFMOq7rexGHSgkxz.97" href="https://blogs.windows.com/buildingapps/2016/04/13/react-native-on-the-universal-windows-platform/">React Native on the Universal Windows Platform</a></li> <li>Repo: <a title="https://github.com/ReactWindows/react-native-windows" href="https://github.com/ReactWindows/react-native-windows">https://github.com/ReactWindows/react-native-windows</a></li></ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0218-React-Native.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 217: Nick Craver on Stack Overflow Engineering</title>
    <link>https://herdingcode.com/herding-code-217-nick-craver-on-stack-overflow-engineering/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-217-nick-craver-on-stack-overflow-engineering/</guid>
    <pubDate>Wed, 15 Jun 2016 21:01:13 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Nick Craver about all the magic behind the scenes at StackExchange global headquarters. Herding Code 217: Nick Craver on Stack Overflow Engin</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 217</strong></p>
The guys talk to Nick Craver about all the magic behind the scenes at StackExchange global headquarters.

Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0217-Nick-Craver.mp3">Herding Code 217: Nick Craver on Stack Overflow Engineering</a>


<h3>Show Notes:</h3>
<ul>
 	<li>Hello
<ul>
 	<li>(00:15) <a href="https://twitter.com/nick_Craver">Nick</a> explains his job: software development, sysadmin (site reliablity engineer), and sometime DBA. Just not devops.</li>
 	<li>(01:30) Jon introduces Nick's recent blog post series and the Trello board where people can recommend and vote on new topics:
<ul>
 	<li><a href="https://nickcraver.com/blog/2016/02/03/stack-overflow-a-technical-deconstruction/">Stack Overflow: A Technical Deconstruction</a></li>
 	<li>#1: <a href="https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/">Stack Overflow: The Architecture - 2016 Edition</a></li>
 	<li>#2: <a href="https://nickcraver.com/blog/2016/03/29/stack-overflow-the-hardware-2016-edition/">Stack Overflow: The Hardware - 2016 Edition</a></li>
 	<li>#3: <a href="https://nickcraver.com/blog/2016/05/03/stack-overflow-how-we-do-deployment-2016-edition/">Stack Overflow: How We Do Deployment - 2016 Edition</a></li>
 	<li>Trello board: <a href="https://trello.com/b/0zgQjktX/blog-post-queue-for-stack-overflow-topics">Blog post queue for Stack Overflow topics</a></li>
</ul>
</li>
</ul>
</li>
 	<li>Architecture / Network
<ul>
 	<li>(01:58) Jon notes that they're using Windows and CentOS and asks why CentOS as opposed to other Linux flavors. Nick says they tried Ubuntu first, but it's more tuned for clients. CentOS is a variant of Red Hat Enterprise Linux, so all the packages work.</li>
 	<li>(02:53) Nick says that they use whatever's the best tool for each job - factoring in the costs of each new tool (training, migrating, supporting, vendor overhead, etc.). They run Elastic Search, Redis, HAProxy and Logstash.</li>
 	<li>(03:50) Jon asks about how they're using <a href="https://github.com/mgravell/protobuf-net">protobuf</a> to serialize the information they're persisting Redis. Nick talks about some specifics, including the different levels of caching that they're doing. They're using pub / sub with Redis via websockets. They're not clustering, partly because there's one Redis cache per SE site. He and Jon discuss how multitenant scenarios often require custom implementations.</li>
 	<li>(07:20) Jon asks about how they're using websockets. Nick says that they're used in a lot of places for optional updates. Their problems come from running on very few servers - they end up with huge connection tables per server.</li>
 	<li>(08:23) Jon asks about one of their Redis instances that's <a href="http://jasonpunyon.com/blog/2015/02/10/providence-architecture-and-performance/">handling machine learning with Providence</a>. Nick says they log some metadata and performance information about about every single request. Providence is a system their data team wrote that analyzes the data, figures out locations, suggested user tags, etc. As a user, you have control over the personalization and can <a href="http://stackoverflow.com/users/prediction-data">download the data or disable recommendations if you want</a>. There's also a mobile feed, for mobile apps as well. There are 40k ops/sec all day long against Redis. Scott K asks if he can manipulate his feed.</li>
 	<li>(11:51) Scott K asks about the L1 and L2 cache that Nick's talked about. Nick clarifies that he's been referring to HTTP caching on the web server and Redis caching.</li>
</ul>
</li>
 	<li>Tag Engine
<ul>
 	<li>(12:36) Nick talks about the tag engine and explains how it's <a href="http://mattwarren.org/2015/08/19/the-stack-overflow-tag-engine-part-2/">a lot more complex than people think since it handles some complex queries, needs to sort the results, has minimum question score filters, etc</a>. Every two minutes, the tag engine refreshes all the deltas based on row versions in the SQL Server database.  Their previous implementations were saturating the CPU L3 cache. They wrote some affinity code to split things out so Providence and Stack Server run on different processors. <a href="http://blog.marcgravell.com/2016/05/cudagetting-started-in-net.html">Marc Gravell is now working on getting the tag engine working on GPU's</a> (<a href="https://github.com/mgravell/SimpleCUDAExample/tree/master/Demo/Demo">demo code</a>). Nick said that the difference between a $500 to a $5000 card is only about a 40% improvement. They're really excited about upcoming graphics cards with 8GB memory, since that will allow them to fit the entire tag engine in memory on the graphics card; with two cards they'll be able to run active-active and active-passive configurations (for live upgrades) for only about $600 per card. Jon says he saw <a href="https://news.ycombinator.com/item?id=11660777">a question on Hacker News asking if it could just be handled by a bitmap index</a>, but Nick explains how more complicated queries and sorting make that not a good solution. Jon asks about the GPGPU split between C# and C++ code. Nick explains how it's almost all handled via C# code, but it's missing a few newer CUDA commands.</li>
 	<li>(19:48) Jon asks about the Elastic Search implementation. Elastic Search doesn't really support types, it has field groupings, which makes the upgrade more difficult. Nick explains that things are pretty vanilla now, but they'd like to make some customizations to support nested search results when time permits.</li>
</ul>
</li>
 	<li>Data and SQL Server
<ul>
 	<li>(21:03) Jon asks about their SQL Server implementation. Nick talks about the clustering setup.</li>
 	<li>(21:49) Jon asks what version of SQL Server they're using. Nick says they're currently running the latest version of SQL Server 2014 and will move to SQL Server 2016 as soon as it releases. [Note: SQL Server 2016 has since released and they've upgraded.]</li>
 	<li>(22:11) Nick talks about some of the top reasons they're looking forward to SQL Server 2016: <a href="http://sqlperformance.com/2016/03/sql-server-2016/string-split">string_split</a> and <a href="https://msdn.microsoft.com/en-us/library/dn921885.aspx">JSON parsing</a>. These are both useful for queries that take a list as a parameter. Jon reminisces about a time long ago when he used XML to pass lists to SQL queries.</li>
 	<li>(23:32) Kevin asks if they're able to do a piecemeal migration without downtime. Nick explains how they do upgrades using replicas. They can test on other replicas, then fail over to them, or roll back to the previous master. They hate Windows clustering, and Windows Server 2016 and SQL Server 2016 should soon support distributed affinity groups which would allow them to do simple affinity group based upgrades.</li>
 	<li>(26:15) Jon asks about SQL Server on Linux. Nick says he can't really talk about it.</li>
 	<li>(26:35) Jon asks if they use <a href="https://blogs.technet.microsoft.com/dataplatforminsider/2012/11/08/breakthrough-performance-with-in-memory-technologies/">SQL Server Hekaton / In-Memory OLTP</a>. Nick says they don't, they run enough memory in their database servers that it's not needed. Nick says it's more for high-frequency no-lock access.</li>
 	<li>(27:27) Jon is a little horrified that <a href="https://twitter.com/Nick_Craver/status/700458444831199234">they don't use stored procedures</a> and <a href="https://twitter.com/Nick_Craver/status/727440905750347776">do all database queries using inline SQL</a>. Nick explains that it's much simpler to modify queries and app code that consumes the query together rather than managing separate deployments. There's no performance benefit to using stored procedures over inline queries.</li>
 	<li>(29:27) Jon asks about how they handle migrations. Nick explains how changing tables is handled via a migration file and a ten line bot.</li>
</ul>
</li>
 	<li>Source Control, Localization, Build
<ul>
 	<li>(30:47) Jon asks about their use of <a href="https://about.gitlab.com/">GitLab</a>. Nick says it works okay, but they're testing GitHub Enterprise internally due to performance. GitHub is significantly faster, search works a lot better (due to using Postgres search rather than Elastic Search), and there are some nice new features in GitHub like squashing commits.</li>
 	<li>(32:23) Jon asks about the localization features and is educated about the ja, ru, pt and es versions of stackoverflow. Nick explains some of the different localization issues that you run into in localization. Most localization solution work by string replacement, which requires string allocations. That doesn't work at scale. They've written a system called <a href="http://meta.stackexchange.com/questions/25527/searching-with-an-accented-character-does-not-work/25529#25529">Moonspeak</a> which uses Roslyn to precompile view. This allows a direct response.write of the localized string via switch statements, which is a lot more efficient. They haven't had time to open source it yet, but would like to.</li>
 	<li>(36:36) Jon asks about their build process using MSBuild. They use it mostly because it's what the tooling uses. They could customize it more with PowerShell, but that would tie them more to TeamCity and Nick's not sure there's a benefit to making that move. Nick's waiting to see where csproj is going - he's got some big doubts it'll be as terse as project.json, but he's interested to see. Nick says historically MSBuild has been optimized for three-way merge generation; Jon says that was technically Visual Studio's fault since MSBuild actually has had glob support for a while.</li>
</ul>
</li>
 	<li>Upcoming Technologies, Visual Studio
<ul>
 	<li>(40:35) Nick complains about how slow Visual Studio is to reload projects. Their developers have scripts that just kill and restart Visual Studio, because that's faster than handling project reloads.</li>
 	<li>(41:16) Jon asks if Nick's played with Visual Studio "15". Nick wonders about the technology used in the installer. He says it's generally good, but they're running into some issues with solution files changing when moving between versions.</li>
 	<li>(42:33) Nick says that they generally don't ever use File / New, they copy an existing project and rename things. There's a discussion about whether it's possible to customize project templates. Jon says you can <a href="https://msdn.microsoft.com/en-us/library/xkh1wxd8.aspx">export a project as a solution template</a>; K Scott mentions that <a href="http://sidewaffle.com/">SideWaffle</a> has some capabilities there, too, but there was some "wonkiness". And what's the deal with GUIDs in project and solution files?</li>
 	<li>(46:09) Scott K mentions a command line base project generator that he started on years ago called <a href="https://github.com/skoon/ProjectStarter">ProjectStarter</a>. He wishes that it was possible to configure Visual Studio to define a custom build tool rather than assuming everything's in csproj. He gets that Visual Studio features like IntelliSense depend on controlling the build, but doesn't like that Visual Studio has to "know everything about everything".</li>
 	<li>(48:55) Jon says he sees two ways that cross-platform can work: either make the frameworks able to work without the tools knowing and controlling everything, or updating Visual Studio Code so it's able to know and control everything. He hopes it's the first way.</li>
 	<li>(49:50) Nick complains about how sometimes in-memory builds don't reflect changes, or csproj doesn't save before a build. He'd like everything to save before builds. Scott K calls out the <a href="https://visualstudiogallery.msdn.microsoft.com/ee676c7f-83e8-4ef8-87ab-22a95ae8f1d4">Save All The Time</a> extension for Visual Studio that Paul Betts made.</li>
 	<li>(50:40) Jon asks Nick if they've looked at ASP.NET Core. Nick says that they'll mostly be starting with their internal tools. They have several libs that they'll need to port, and they've got some difficult problems with libraries like <a href="http://miniprofiler.com/">MiniProfiler</a> that need to support both .NET 4.x and .NET Core because the underlying APIs have some significant differences. You can't just multi-target code that targets things like HttpContext. Other libraries like dapper and <a href="https://github.com/StackExchange/StackExchange.Redis">stackexchange-redis</a> haven't been as bad, and they've been working on them because lots of other developers are depending on them.</li>
 	<li>(55:03) Jon calls out some of Nick's recent C# 6 tweets. Nick says he likes null coalescing and ternaries - they see more terse code as a lot more readable, but it of course varies by team. Roslyn has been really big for them, things like Moonspeak rely on it.</li>
</ul>
</li>
 	<li>Questions from Twitter
<ul>
 	<li>(56:23) Matt Warren asks "What performance issues have you had the most fun finding and fixing." Nick mentions the tag engine and a fun debugging issue they ran into where the TimeSpan int constructor uses Ticks rather than seconds or milliseconds, so their cache code was only caching values for tiny fractions of a second rather than thirty seconds. They find out so many issues using MiniProfiler; he wishes more developers would use MiniProfiler (or another tool like <a href="http://getglimpse.com/">Glimpse</a>) in their applications. They run MiniProfiler for every single request on StackOverflow and the overhead is minimal - if they can do it, you can do it.</li>
 	<li>(58:17) Matt Warren asks "What the craziest thing they've done to increase performance." Nick talks about the IL related work they've done - sometimes instead of conditional code, it's faster to just swap out the method body. They're pragmatic, they only do this for extreme cases like things that run for every request and have real performance implications. What's the trick for StackOverflow? Keep it simple.</li>
</ul>
</li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0217-Nick-Craver.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 216: Bash on Windows, Angular 2, Surface Book, Kindle Oasis, Windows Phone</title>
    <link>https://herdingcode.com/herding-code-216-bash-on-windows-angular-2-surface-book-kindle-oasis-windows-phone/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-216-bash-on-windows-angular-2-surface-book-kindle-oasis-windows-phone/</guid>
    <pubDate>Tue, 03 May 2016 20:46:35 GMT</pubDate>
    <description><![CDATA[<p>Kevin, K Scott and Jon talk about Bash on Windows, Angular 2, React, new tech devices, and whether Windows Phone is alive, dead, or undead. Herding Code 216:</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 216</strong></p>
<p>Kevin, K Scott and Jon talk about Bash on Windows, Angular 2, React, new tech devices, and whether Windows Phone is alive, dead, or undead.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0216-Discussion.mp3">Herding Code 216: Bash on Windows, Angular 2, Surface Book, Kindle Oasis, Windows Phone</a></p>  <p></p>  <h3>Show Notes:</h3>  <ul>   <ul>     <li>Bash on Windows and Windows Insider stuff        <ul>         <li>(00:44) Jon mentions the Bash on Windows announcement at Build and asks if Kevin or K Scott have played with it. This devolves into a discussion of Windows Insider previews. Jon likes it and talks about the steps for enabling Windows Insider preview builds. K Scott has been scared to try it, but it sounds like he's convinced. Kevin is put off by the Insider term - Windows Insider, Visual Studio Code Insider previews, etc. K Scott adds "Windows Insider" it to his e-mail signature. </li>          <li>(05:15) Jon talks about the steps for enabling Bash on Windows. or <em>Windows Subsystem for Linux (Beta)</em>, to use the official terminology. </li>          <li>(07:08) Feel the excitement of listening to someone type commands into a console window as Kevin asks questions about what's installed and Jon tries to apt-get it all. K Scott and Kevin wonder about how things like filesystem and processes work, and Jon tries to make up answers. </li>          <li>(09:50) Kevin says it feels like an admission of defeat to add *nix support to Windows. Jon says it feels practical to him - developers are building for multiple operating systems (especially including mobile), so it's nice to have it supported. </li>          <li>(11:19) Kevin's ready for Cygwin to die in a fire, and Jon's excited about ssh working less horribly on Windows. Kevin says the race is on to get Wine working on Bash on Windows. </li>       </ul>     </li>      <li>Angular 2 and React        <ul>         <li>(12:55) Jon worked on a hands on lab for Build that had master-details using Angular 2 and ASP.NET Core. He said Angular 2 seemed a lot simpler than Angular 1 now. K Scott said the component model is simpler, but he's seeing some resistance to the ECMAScript / TypeScript updates, new binding syntax, etc. The Angular 1.5 release also includes a component model that's a much easier programming model. It almost feels like some older Microsoft component-based programming frameworks going back to Visual Basic 6: you're working with components that have simple properties and events. The guys speculate on how soon someone will build the big visual editor for Angular 2. </li>          <li>(16:21) Kevin says TypeScript seems like a barrier. K Scott says it's not strictly required. He rejected TypeScript for a while, but when he was working with Angular 2 and tools and editors supported it he decided he liked it. Jon and K Scott talk about how a lot of things that throw people off about TypeScript are really just modern JavaScript syntax. </li>          <li>(18:50) The guys discuss how Angular 2 and React mindshare will play out. Jon likes React as long as he never views source. Jon thinks the unidirectional flow is really simple, and Kevin agrees - after years of lower level Backbone, the simpler flow in React saves some mental energy. </li>          <li>(20:29) Jon mentions that React Native recently came to Windows, too. </li>       </ul>     </li>      <li>Devices: Surface Book, Kindle and big batteries        <ul>         <li>(20:56) K Scott got a new Surface Book (after waiting to make sure nothing new was coming out at Build). He says it's the best piece of PC hardware he's bought in years - the build quality is good, the keyboard is good, he gives the trackpad of 9 out of 10. He says that the detachable tablet is a bit large as a tablet, so he's using an older Surface for reading. </li>          <li>(23:58) Jon jokes that K Scott's not likely to buy a Kindle and says he gradually stopped using his Kindle when he moved to Audiobooks, and kind of associates reading with work now. Kevin says that's sad. They talk about Kindles for kids' books. </li>          <li>(27:07) Kevin says the two big things he picked up for the new Kindle are physical page buttons and a three month battery. He says the main thing he likes about Kindle for both him and his kids (as opposed to a tablet) is that it forces you to read instead of getting distracted. The guys decide that tripling the life of an already one month battery isn't a huge win. </li>       </ul>        <ul>         <li>(29:20) Jon says he recently bought a portable battery that can recharge his laptop, which is handy for long flights. (note: he said it was iPad size, it's a lot smaller but is 1.2 pounds) </li>          <li>(31:15) Jon asks Kevin about new Apple hardware. Kevin says the iPad Pro screen is apparently astounding - he's expecting them to be amazing in a few generations. Same for Apple Watch - he doesn't have one yet, he's waiting for version two. Jon says the improvement from Microsoft Band 1 to Band 2 was pretty nice, especially in the industrial design. </li>       </ul>     </li>      <li>Lightning Round: Will Windows Phone be dead in one year?        <ul>         <li>(33:40) K Scott asks if Windows Phone will be dead in a year. Jon hopes not, as he just bought a Lumia 950 XL. He'd had a budget Blu Windows Phone since September, and the Windows 10 Insider builds were nice, but the camera wasn't very good. He really likes Windows 10 as a phone operating system and thinks it's sad that so few people will actually see it. </li>       </ul>        <ul>         <li>(35:55) K Scott got a Lumia 950 XL in January (when he dropped something on his previous phone). He got the docking station, too, and said it worked surprisingly well. The guys discuss how useful docking a phone is; Jon postulates that it could be useful for someone who does everything on their phone and occasionally needs to write a long email or edit their resume - especially if it can be hooked up to a TV. </li>          <li>(38:30) Kevin says that Windows Phone isn't dead. it's undead. It will linger on in a zombie-like state indefinitely. </li>       </ul>     </li>      <li>Scott Koon sends us out with a request for further information by e-mail. </li>   </ul> </ul>  <p>Links:</p>  <ul>   <li><a href="https://insider.windows.com/">Windows Insider site</a> </li>    <li><a title="https://msdn.microsoft.com/en-us/commandline/wsl/install_guide" href="https://msdn.microsoft.com/en-us/commandline/wsl/install_guide">How to install Bash on Windows support</a> </li>    <li><a href="https://github.com/Microsoft-Build-2016/CodeLabs-WebDev/tree/master/Module4-FrontEndDev">Build 2016 Angular 2 / ASP.NET Core Code Lab</a> </li>    <li><a href="https://medium.com/google-developer-experts/angular-new-features-in-angularjs-1-5-24f9b503af15#.66vtwfi9k">Angular 1.5 overview, including component support</a> </li>    <li><a href="https://blogs.windows.com/buildingapps/2016/04/13/react-native-on-the-universal-windows-platform/">React Native on the Universal Windows Platform</a> </li>    <li><a href="https://github.com/ReactWindows/react-native">React Windows on GitHub</a> </li>    <li>The portable battery Jon got: <a title="http://www.amazon.com/RAVPower-23000mAh-Portable-Charger-External/dp/B00HFMUBYG/ref=as_li_ss_tl?s=photo&amp;ie=UTF8&amp;qid=1462236479&amp;sr=1-1&amp;&amp;linkCode=ll1&amp;tag=jongall-20&amp;linkId=17e1fe3d9aa20356ab86cba78ad19fdb" href="http://www.amazon.com/RAVPower-23000mAh-Portable-Charger-External/dp/B00HFMUBYG/ref=as_li_ss_tl?s=photo&amp;ie=UTF8&amp;qid=1462236479&amp;sr=1-1&amp;&amp;linkCode=ll1&amp;tag=jongall-20&amp;linkId=17e1fe3d9aa20356ab86cba78ad19fdb">RAVPower 23000mAh Portable Charger Power Bank External Battery Pack</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0216-Discussion.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 215: Jon McCoy on .NET Security and Defensive Patterns</title>
    <link>https://herdingcode.com/herding-code-215-jon-mccoy-on-net-security-and-defensive-patterns/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-215-jon-mccoy-on-net-security-and-defensive-patterns/</guid>
    <pubDate>Thu, 07 Jan 2016 06:32:39 GMT</pubDate>
    <description><![CDATA[<p>At NDC Oslo, Jon talked to Jon McCoy about .NET security and defensive patterns for building enterprise applications. Herding Code 215: Jon McCoy on .NET Secu</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 215</strong></p>
<p>At NDC Oslo, Jon talked to <a href="https://twitter.com/toddhgardner">Jon</a> McCoy about .NET security and defensive patterns for building enterprise applications.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0215-Jon-McCoy.mp3">Herding Code 215: Jon McCoy on .NET Security and Defensive Patterns</a></p>  <p></p>  <h3>Show Notes:</h3>  <ul>   <ul>     <li>Security Patterns </li>      <ul>       <li>(0:15) Jon Galloway (henceforth in this post JG) mentions <a href="https://herdingcode.com/herding-code-176-jon-mccoy-on-hacking-net/">the last time Jon McCoy was on the show</a> and asks him about his talks this time around. This time, he and Topher Timzen did a hands on attack class followed by talks on defensive patterns for enterprise applications (video: <a href="https://vimeo.com/131637368">Hacking .NET(C#) Application: Building and Breaking Layered Defense</a>). </li>        <li>(00:54) JG asks Jon if he showed off any scary hacks. Jon describes an attack in which they made an executable editable both on disk and in memory, then edited both the IL and assembly code to do things like inject direct database attacks (bypassing . He describes how that could be defended using enterprise defensible architecture by talking to databases through services which can implement security layers. The goal is to prevent an attack at one layer from moving through the rest of the enterprise. </li>        <li>(1:59) JG says that often hears that major hacks occur by web application attacks that are then escalated to database attacks, often through password reuse. Jon says that's true, since web applications are often deployed to the same server as a database or authentication server. He recommends using a service that's locked to a single port, with security unit tests. </li>        <li>(2:43) JG asks which patterns he's describing are unique to .NET development. Jon says that he's emphasizing patterns that are easy on .NET - for example,&#160; REST services are easy to implement on .NET as compared to C++. He's advocating architectural changes that are relatively easy to implement in .NET applications provided you start with them early on (rather than trying to retrofit security later). </li>     </ul>      <li>A specific example: Protecting a medical record</li>      <ul>       <li>(3:33) JG asks for some specific examples. Jon says they talked about security unit tests and user stories and gives and example from his talk about a medical record that's being sent through an enterprise securely. To do that, you'd need to encrypt it on an edge node, so the web server and database don't have decrypted data or decryption keys. Instead, you use a key server on a segmented network. Because of this, at no point could a sysadmin have gotten access to the record because it was encrypted at all steps. </li>     </ul>      <li>&quot;Above Admin&quot;</li>      <ul>       <li>(4:49) JG points out that Jon is talking about preventing access to sensitive data by sysadmins. Jon says that you should consider your attackers to have more power than a sysadmin - they refer to attacker privileges as &quot;above admin&quot; because they've taken over your AD infrastructure, passwords on routers, dropping new firmware, etc. </li>        <li>(5:50) JG refers to <a href="https://vimeo.com/album/3479981/video/135347162">James Mickens' keynote from the previous night</a> (<a href="https://herdingcode.com/herding-code-211-james-mickens-on-the-state-of-computer-security-and-bitcoin-and-thomas-jefferson-and-internet-of-terrible-things-and-prawns-and-oslos-terrible-secret/">Herding Code interview here</a>) and asks if there's any hope. Jon says you need to plan, you need to minimize pivot points to prevent an attacker from moving between servers. He discusses potentially using static HTML that calls into secured REST services rather than web applications with direct database access, because building security around a REST service is much easier than securing a web application and web server. </li>     </ul>      <li>Mobile and desktop application security</li>      <ul>       <li>(9:03) JG asks about mobile application security, since he frequently hears about mobile apps that are supported by unsecured (or very poorly secured) backend services. Jon refers to Amazon and Twitter as examples of companies with published patterns for secured backend services. </li>        <li>(9:52) JG asks if for some tips on how different systems on the network should be secured, referring to desktop applications. Jon says that each system should defend itself from the other systems, so in this case the other systems should assume that the desktops could be compromised, the desktop applications should assumed the database can be compromised, there needs to be thought about defending the outgoing APIs, etc. There needs to be a plan for how to take things down and respond. </li>     </ul>      <li>What do you wish you'd done?</li>      <ul>       <li>(10:35) As a thought exercise, assume that your database or web server has been compromised: what do you wish you'd have done? Do that for different pieces of your application architecture. Jon says that you can make it a fun exercise, pit dev teams against each other, etc. Security should be fun and easy if you're doing it right. </li>     </ul>      <li>Wave 3D: A 3D operating system front end</li>      <ul>       <li>(12:07) JG asks Jon about the 3D operating system he'd mentioned before the call. Jon describes Wave 3D, a cross platform front-end to multiple operating systems (Windows, Mac, Linux, Android) that gives the same exact experience for all backend systems. It can be connected to Amazon, Google and Dropbox document storage. </li>        <li>(12:56) Jon says it's running on Mono and Unity and says it compares pretty well with 3D operating systems in the movies, and they're looking at launching it via Kickstarter. It provides a simple, install-free environment with a document viewer, movie player and more on every platform instantly. </li>     </ul>   </ul> </ul>

<p>Note: This is our last podcast from NDC 2015.</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0215-Jon-McCoy.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 214: Todd Gardner on Tracking JavaScript Errors with {Track:js}</title>
    <link>https://herdingcode.com/herding-code-214-todd-gardner-on-tracking-javascript-errors-with-trackjs/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-214-todd-gardner-on-tracking-javascript-errors-with-trackjs/</guid>
    <pubDate>Sat, 28 Nov 2015 01:39:12 GMT</pubDate>
    <description><![CDATA[<p>At NDC Oslo, Jon talked to Todd Gardner about {Track:js} and some of the difficulties in diagnosing JavaScript errors. Herding Code 214: Todd Gardner on Track</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 214</strong></p>
<p>At NDC Oslo, Jon talked to <a href="https://twitter.com/toddhgardner">Todd Gardner</a> about <a href="https://trackjs.com/">{Track:js}</a> and some of the difficulties in diagnosing JavaScript errors.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0214-Todd-Gardner.mp3">Herding Code 214: Todd Gardner on Tracking JavaScript Errors with {Track:js}</a></p>  <p></p>  <h3>Show Notes:</h3>  <ul>   <ul>     <li>What's TrackJS? </li>      <ul>       <li>(0:20) Jon asks Todd to explain <a href="https://trackjs.com/">TrackJS</a>. Todd said it's something he built to help with difficult JavaScript debugging issues a few years ago. JavaScript applications were difficult to debug because it was hard to define the different failure states of his applications. Over time, they worked to add in diagnostic state (e.g. shopping, checkout, etc.). Over time, they added in network state and user state. Over time they came up with telemetry, which defines states and state changes, which can be a lot more helpful than a stacktrace in diagnosing and fixing an error. </li>     </ul>      <li>Why context is more important than stack traces</li>      <ul>       <li>(2:34) Jon agrees, saying that it's really frustrating to try to reproduce an error as a developer, and context is really important. Todd says that stack traces are limited because applications are so asynchronous in nature now - an error may be from a timeout which was a response to an Ajax event which was a response to a user click.</li>        <li>(3:44) Todd says they also track a lot of general information like browser, operating system, and things like date and time information. He once spent a really long time on an error one user was experiencing on a calendaring application because they were stuck in the '70's (literally).</li>     </ul>      <li>How TrackJS gathers and exposes data</li>      <ul>       <li>(4:34) Jon asks how developers integrate TrackJS into their applications. Todd says it's a simple JavaScript include.</li>        <li>(4:56) Jon ask more about how he gets access to the reported information when he's troubleshooting an error. Todd says there are three problems to solve. </li>        <ul>         <li>The first problem to solve is alerting: you get daily rollups on top errors and trends. </li>          <li>Second, when you log in, you need to see which errors are which important (filtering out background noise like unsupported useragents, strange Chrome extensions that modify the DOM, etc.). You need to know which errors impact the most people, which cause users to leave, and which are top browser-specific errors.</li>          <li>Third, you need to need to be able to dig into and diagnose a specific error.</li>       </ul>        <li>(6:45) Jon asks more about how he'd diagnose a specific error. Todd describes the contextual information TrackJS provides for an error (including things like browser, screen size, user information). For example, one issue they diagnosed recently only occurred at a specific screen size due to a responsive design which modified the page so certain elements were only displayed in a range of screen widths.</li>     </ul>      <li>Common problem: Partial Load Failure</li>      <ul>       <li>(8:14) Jon asks Todd what running the service has shown him are common problems that developers aren't considering in building JavaScript apps. Todd says it's partial loading failure - cases where most of the JavaScript assets on a page load, but just one fails. In one instance, they saw everything on a page but the Stripe library load, which caused payment data to be insecurely posted.</li>        <li>(10:35) Jon asks about the best way to test for and handle partial load failures. </li>     </ul>      <li>Common problem: Same Origin Policy</li>      <ul>       <li>(11:36) Todd explains same origin policy restrictions in loading loading libraries from other domains, and using cross-origin headers to handle that.</li>     </ul>      <li>Business model and subscription overview</li>      <ul>       <li>(12:30) Jon asks about the business model for TrackJS. Todd explains that they offer free service to charitable and open source projects. For paid accounts, they bill based on page views rather than error count because he feels billing based on errors creates counter-incentives for users.</li>     </ul>   </ul> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0214-Todd-Gardner.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 213: Sean Trelford on Composing 3D Objects with F# and OpenGL</title>
    <link>https://herdingcode.com/herding-code-213-sean-trelford-on-composing-3d-objects-with-f-and-opengl/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-213-sean-trelford-on-composing-3d-objects-with-f-and-opengl/</guid>
    <pubDate>Sat, 21 Nov 2015 01:06:29 GMT</pubDate>
    <description><![CDATA[<p>At NDC Oslo, Sean Trelford did a lightning talk on composing 3D objects using F# and OpenGL. Oh, and he&apos;s 8 years old. Sean (and his dad, Phil) talk to Jon about learning coding</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 213</strong></p>
<p>At NDC Oslo, Sean Trelford did a lightning talk on composing 3D objects using F# and OpenGL. Oh, and he's 8 years old. Sean (and his dad, Phil) talk to Jon about learning coding with Small Basic and F#, and how it's fun to learn coding by building video games.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0213-Sean-Trelford.mp3">Herding Code 213: Sean Trelford on Composing 3D Objects with F# and OpenGL</a></p>  <p></p>  <h3>Show Notes:</h3>  <ul>   <ul>     <li>Hello        <ul>         <li>(0:34) Sean is eight years old, but that didn't keep him from giving an <a href="https://vimeo.com/131637102">NDC talk on composing 3D Objects with F# and OpenGL</a>. </li>       </ul>     </li>      <li>Sean's Talk        <ul>         <li>(1:13) Jon asks Sean whether he showed slides or did live coding. </li>          <li>(1:39) Sean made an army from one 3D man model. </li>          <li>(2:09) Jon asks how difficult it is to call OpenGL from F#. Sean's dad, Phil, explains how Sean used a domain specific language - about 50 lines of code. You can use it to create shapes like cubes and spheres, color them, transform them, etc. </li>          <li>(3:30) Phil explains how Sean used the F# REPL to create and modify 3D objects interactively, then used functional composition to put the parts (head, arms, legs) together to build the army man, the used functional composition and aggregation to create the army. </li>       </ul>     </li>      <li>Learning Small Basic and F#        <ul>         <li>(4:37) Jon asks Sean if F# is his first computer language; Sean says he started with <a href="http://smallbasic.com/">Small Basic</a>. Jon asks if he found it difficult to move from Small Basic to F#, Sean and Phil explain how F# is actually a pretty natural step from Small Basic. Small Basic has no functions with parameters, so when they had a project that ran into that limitation they just moved the code from Small Basic to F# and used the Small Basic library to construct 2D shapes (leveraging WPF). </li>       </ul>     </li>      <li>Fun Basic        <ul>         <li>(7:02) Phil said that last year he and Sean rewrote Small Basic as <a href="https://www.microsoft.com/en-US/store/apps/Fun-Basic/9NBLGGH168N7">Fun Basic (available free in the Windows Store)</a>. It's an IDE with IntelliSense, code completion, etc. It's got backward compatibility with Small Basic, but includes function with arguments, pattern matching, etc. </li>       </ul>     </li>      <li>Learning programming with video games </li>      <ul>       <li>(8:02) Jon asks about what next for Sean. Recently they went to a game jam and made a platform game. Phil says the REPL environment is huge for game building. </li>        <li>(9:04) Jon mentions the IoT lab at NDC and asks Sean if he's done anything with IoT; Sean says no. Jon says it seems like people try to get kids interested in coding with IoT, but maybe games are more fun to get started. Phil says that Sean's got a <a href="https://www.youtube.com/watch?v=5TK3WRDnVkk">Minecraft channel</a> on YouTube. Jon asks Sean about making videos about making games. </li>        <li>(10:38) Phil says he got started on computers with games - he made his first game when he was 11, but his first commercial game was when he was 14 - <a href="http://trelford.com/blog/post/gday.aspx">Flint Eastwood</a>. </li>        <li>(11:44) Jon asks Sean if this is his first time in Olso, and his first conference. It's his first time in Oslo, and his first &quot;speaking&quot; oriented conference. </li>        <li>11:28 Jon asks if they've got any last messages, maybe to encourage kids to get started with coding. Phil recommends the Hour of Code, as well as other resources online. Phil says his older son got into programming by adding levels to games, then writing scripts for AI's, etc. Phil says that's how he got started - looking at other peoples' code and going from there. Don't necessarily get hung up on fancy coding concepts, just script something and have fun!</li>     </ul>   </ul> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0213-Sean-Trelford.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 212: Steve Sanderson on Web Development in 2020</title>
    <link>https://herdingcode.com/herding-code-212-steve-sanderson-on-web-development-in-2020/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-212-steve-sanderson-on-web-development-in-2020/</guid>
    <pubDate>Tue, 22 Sep 2015 21:22:54 GMT</pubDate>
    <description><![CDATA[<p>While at NDC Oslo, Jon talked Steve Sanderson about Web Development in 2020 - future JavaScript features, adventurous optimizations, and constraint-based styling. This week we&apos;v</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 212</strong></p>
<p>While at NDC Oslo, Jon talked Steve Sanderson about Web Development in 2020 - future JavaScript features, adventurous optimizations, and constraint-based styling. </p>  <p>This week we've also got a full transcript (thanks to Damian Guard!).</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0212-Steve-Sanderson.mp3">Herding Code 212: Steve Sanderson on Web Development in 2020</a></p>  <p></p>  <h3>Show Notes:</h3>  <ul>   <ul>     <li>Hello        <ul>         <li>(0:34) Steve summarizes his <a href="https://vimeo.com/131637102">NDC talk on the future of Javascript</a> </li>       </ul>     </li>      <li>ES 2015 &amp; 2016        <ul>         <li>(0:52) Jon asks if <a href="http://www.ecma-international.org/ecma-262/6.0/">ES 2015</a> and 2016 is the new name for ES 6 and 7 </li>          <li>Steve explains how the standard body are going with yearly updates </li>          <li>(1:25) Jon asks what some of the new features are </li>          <li>Steve talks about how it looks so different and how the import and class features help </li>       </ul>     </li>      <li>Polyfils &amp; transpilers        <ul>         <li>(2:14) Jon asks if he can use those features today </li>          <li>Steve explains the polyfills and transpiler options </li>          <li>(2:46) Steve talks about the <a href="https://babeljs.io/">Babel</a> transpiler open source project and why people should write ES 2015 code today </li>       </ul>     </li>      <li>What about <a href="http://www.typescriptlang.org/">Typescript</a>?         <ul>         <li>(3:19) Jon asks if Typescript is still an option </li>          <li>Steve explains how Typescript is a transpiler and provides some similar features as well as strong typing </li>       </ul>     </li>      <li>Web Components        <ul>         <li>(4:05) Steve talks about web components, how they're not implemented in browsers today and the <a href="https://www.polymer-project.org/1.0/">polymer.js</a> project that can bridge that gap </li>          <li>Steve talks about scoping, the <a href="https://w3c.github.io/webcomponents/spec/shadow/">Shadow DOM</a> and how components are encapsulated from the rest of the page </li>       </ul>     </li>      <li>Async &amp; await        <ul>         <li>(06:04) Steve talks about his interest in the upcoming async/await support and how it goes further than promises in order to clarify the flow of success and errors </li>          <li>Steve mentions that Babel can polyfill async/await support today </li>       </ul>     </li>      <li>Generators        <ul>         <li>(7:30) Jon asks for an explanation of generators </li>          <li>Steve compares generators with the yield function of C# and explains how the function is marked with an asterisk to signal it is a generator </li>          <li>(8:08) Jon asks if this is the end of promises </li>          <li>Steve explains that generators are built on top of promises and how they can chain waiting for multiple ones sequentially </li>       </ul>     </li>      <li>Emscripten        <ul>         <li>(8:53) Jon asks about <a href="https://github.com/kripken/emscripten">Emscripten</a> </li>          <li>Steve talks about the Emscripten bytecode format and how it can make Javascript faster as well as providing the foundation for new web languages </li>          <li>Steve talks about the LLVM bytecode converter and how it only really works with languages like C and C++ that don't have a runtime like Swift, Rust, Go etc. </li>          <li>(12:06) Jon asks about the demo compiling SQLite </li>          <li>Seve talks about why SQLite works when others don't. </li>       </ul>     </li>      <li>Shared Array Buffer        <ul>         <li>(12:48) Jon asks about the Shared Array Buffer </li>          <li>Steve talks about how Javascript took an isolated approach to parallelism and how Shared Array Buffer allows the breaking of this boundary to enable some high-performance parallelism </li>          <li>(14:05) Jon mentions how the <a href="http://asp.net/">ASP.NET</a> 5 team are doing similar things for performance </li>       </ul>     </li>      <li><a href="https://gridstylesheets.org/">Grid Style Sheets</a>         <ul>         <li>(15:00) Jon asks about Grid Style Sheets </li>          <li>Steve points out the &quot;Grid&quot; in Grid Style Sheets refers to the company behind it and not the approach which is a rule, constraint and solver layout system like <a href="https://developer.apple.com/library/ios/recipes/xcode_help-IB_auto_layout/chapters/UnderstandingAutolayout.html#//apple_ref/doc/uid/TP40014226-CH22-SW1">Auto Layout in iOS</a> </li>          <li>(17:14) Jon points out it's Javascript and so people can use it today </li>          <li>Steve talks about where it might go and explains how variables are much different to typical variables </li>          <li>(18:34) Jon asks about the animations in the demo and Steve reveals it's a CSS transition </li>          <li>Jon and Steve discuss how GSS and CSS might not mix well together </li>          <li>Steve warns GSS is really cutting-edge </li>          <li>Jon asks about debugging constraint rules and Steve agrees this is a challenge right now </li>       </ul>     </li>      <li>Goodbye        <ul>         <li>(20:30) Jon says goodbye as Steve heads off for his plane. </li>       </ul>     </li>   </ul> </ul>  <p>&#160;</p>  <h3>Transcript</h3>  <p>[00:00:17] </p>  <p>Jon: Hello and welcome to Herding Code. I am sitting here at NDC speaking with Steven Sanderson or Steve Sanderson, sor ry.</p>  <p>Steve: Either's fine with me.</p>  <p>Jon: Either's fine, great. I caught the tail end of your talk yesterday. It was fascinating, you were <a href="https://vimeo.com/131637102">talking about future Javascript features or browsers features</a>.</p>  <p>Steve: That is right - I was trying to predict the future of client-side web application development. I don't know how accurate my predictions will be but some of them are fairly safe bets like we're going to start using <a href="http://www.ecma-international.org/ecma-262/6.0/">ES 2015</a>/2016 stuff pretty soon and then there's a whole raft of other features coming towards us.</p>  <p>[00:00:52] </p>  <p>Jon: Ok. So that was actually the first time I've seen ES 2015 and 2016. I think I've heard in the past ES 6 and 7.</p>  <p>Steve: Yeah, it's just a bit of new marketing really. The folks behind the standards there have basically committed to bringing out a new update every year. So we've got this annual cycle rather than up until know it's been every five years or every ten years in one case. So given that it's going to be annual it it sort of makes sense to give the name a year.</p>  <p>Jon: Right, yeah, definitely. Kind of like Visual Studio has done.</p>  <p>Steve: Exactly.</p>  <p>[00:01:25] </p>  <p>Jon: So what are some great features there in 2015/2016?</p>  <p>Steve: Yeah OK so ES 2015 was previously known as ES 6 has got to be the biggest set of changes that have come in Javascript since it was first introduced. If you look at something that's written with ES 2015 syntax - if you've never seen that syntax before you would probably not even guess it was Javascript. It looks really different. So you've got <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import">import statements</a> - which give you a clean alternative to having loads of script tags. You've got <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/class">actual classes</a> which are the same at runtime as regular Javascript prototypical inheritance but gives you a nice syntax for declaring that you can remember.</p>  <p>Jon: We're finally taking advantage - class has been a reserved word in Javascript forever, right?</p>  <p>Steve: Oh, yeah, I think that might have been the case.</p>  <p>[00:02:14] </p>  <p>Jon: Can I start using those features? I know there's some poly-fills and transpilers or whatever.</p>  <p>Steve: Yeah, I'd say if you want to start using ES 2015 today it's really not as difficult as you might think. Assuming you want to target all browsers since, let's say IE 9, then you can basically use almost all of the ES 2015 features. You just need to use a transpiler. </p>  <p>The one that everybody seems to be most into at the moment is called <a href="https://babeljs.io/">Babel</a> (BAY-bel) or some people call it Babel (BAB-bel). I don't know what the right pronunciation is. </p>  <p>Anyway it's an open source project that will take your ES 2015 code and produce an ES 5 equivalent of it. It's really fast, easy-to-setup and to be honest with you I can't think of any good reason not to be doing that. If you're not doing that you're sort of just keeping yourself in the past really because this thing is a fully ratified standard now. We know this thing is definitely landing - all the browser makers are committed to bring this in. There isn't really a good reason to not be using this today.</p>  <p>[00:03:19] </p>  <p>Jon: I've looked at using <a href="http://www.typescriptlang.org/">Typescript</a> for that kind of class support in the past. Is there any kind of downside to continuing with that or are they similar?</p>  <p>Steve: No there's certainly no downside to that. If you're getting benefit out of Typescript then absolutely use it. Typescript in a way is a transpiler because it is taking some syntax that is a lot like ES 2015 - it just adds some additional features on top of that to do with strong typing. So if you're getting some benefit out of that strong typing then yeah definitely use Typescript. On the other hand if you don't want to use the strong typing then you'll find that something like Babel will do the compilation, like an order of magnitude, faster.</p>  <p>[00:03:54] </p>  <p>Jon: So that's kind of a no-brainer as far as a future to dig into. What else did you talk about that's more forward looking?</p>  <p>Steve: I was also looking at web components which is sort of all tied up with ES 2015. It's kind of a part of this package of things arriving at the moment but unlike that making that work across all browsers is not quite as guaranteed today. So the best known polyfill for web components is <a href="https://www.polymer-project.org/1.0/">polymer.js</a> but in terms of IE that's only IE 11 onwards. But it's a really good feature. Web components is a way of combining together a bunch of scripts and markup and styles to make a reusable package of UI features that you can put in your application and you can assign them to a custom element name so you can have something like sales-chart as an element and when that goes into your application your custom sales chart appears and it has all the behaviors your want. And it can be, to some extend, encapsulated from the rest of your page as well. So this is a feature called <a href="https://w3c.github.io/webcomponents/spec/shadow/">Shadow DOM</a> and it's a way of telling the browser that a certain element should be abstracted away as far the page that contains it is concerned. Code running outside it won't see the elements inside. If, for example, you were using <a href="https://jquery.com/">jQuery</a> and you were using a selector and it happened to match something inside that component it won't actually match it because it's considered to be like a separate document. So you don't get accidental leakages of behavior into your component or out of it - it just makes reuse easier.</p>  <p>Jon: And the same for stylesheets as well?</p>  <p>Steve: Yeah, that's right. If you bring a stylesheet into your web component and it's certainly going to apply inside that Shadow DOM root it won't apply outside it.</p>  <p>[00:05:31] </p>  <p>Jon: And I believe you mentioned polymer.js is the polyfill for that?</p>  <p>Steve: Yeah, it's the best known polyfill but Polymer is only the way of doing something like web components. If you're going to use something like <a href="https://facebook.github.io/react/">React</a> or <a href="http://knockoutjs.com/">Knockout</a> or <a href="https://angularjs.org/">Angular</a> any of those kinds of things they've all got their own kind of concept of reusable components with custom elements so if you're using any of those things you probably can pretty much do this anyway in a fairly cross-browser way. </p>  <p>[00:05:56] </p>  <p>Jon: Right. Ok. So then what other features did you cover? </p>  <p>Steve: I was interested in the upcoming await/async support.&#160; </p>  <p>Jon: That's always been kind of a challenge in Javascript.</p>  <p>Steve: It so is isn't it. Yeah. So Javascript for the long time was plagued by this everyone's got a slightly different way of doing callbacks thing which is quite troublesome and then it all got formalized around <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-promise-constructor">promises</a>. Promises is a fantastically elegant concept that gives you a really clear way of working with callbacks and chaining them and combining them and so on. So promises are brilliant and they're now a native browser feature but there's still a lot of opportunity to get confused with promises because there's so many way you can chain them together and not necessarily even understand how success and error values are flowing through that chain that you can still get things wrong by mistake. I find this happens all the time in my work. Not me, of course, but other programmers get very confused.</p>  <p>Jon: Right.</p>  <p>[00:06:55] </p>  <p>Steve: I might do sometimes. Whereas as any C# programmer knows with await and async keywords you can write your code as if it was synchronous.</p>  <p>Jon: It's so obvious what's going to happen.</p>  <p>Steve: You can't get that wrong really. That's part of the ES 2016 proposal and if you want to do that today you can either use Babel which will transpile async/await just directly or you can use the generators feature which is in ES 2015. Slightly different syntax but it gives you the ability to do something almost exactly the same.</p>  <p>[00:07:30] </p>  <p>Jon: Can you explain generators a bit?</p>  <p>Steve: A generator for a C# programmer is exactly like the yield keyword that came in with C# 2. So you can have a function that returns an infinite number of values. Like every time that you ask it for the next value it will give you the next thing and it will never stop doing that. That's yield in C# and generators in ES 2015 do the same thing. So you can have a function and you put a little asterisk after the keyword function to say that it's a generator and then inside there you can have yield, return, whatever. You can do that inside a while(true) loop or something like that and then the thing that calls it will receive each of these values.&#160; </p>  <p>[00:08:08] </p>  <p>Jon: Do I just throw away promises now?</p>  <p>Steve: No, you still need to use promises. The way you can use this to make promises feel synchronous is by having some other that invokes your generator that gets back the sequence of values. Each time it gets back a value it will say &quot;well what kind of thing is this? If it's a promise then I'm going wait for that promise to complete before I ask you for the next value.&quot; And so, if you are yielding a series of promises in effect it's like your promises are being called sequentially one after the other. Which is why your code ends up looking synchronous. It's not very easy to understand verbally but when you see it written down it's quite straight-forward and nice.</p>  <p>[00:08:53] </p>  <p>Jon: So then there was <a href="http://kripken.github.io/emscripten-site/">Emscripten</a>?</p>  <p>Steve: Yeah, that's right. So just yesterday or the day before depending on timezones there was an announcement from <a href="https://brendaneich.com/">Brendan Eich</a> that there's going to be a new bytecode format coming to the web. So instead of Javascript just being expressed in plain text as it always has been it will be possible to describe your code in a binary format. The idea with that really is just to take all of the good work that's been done with Emscripten which compiles native code to Javascript and Asm.js which is a special subset of Javascript that can be optimized very well and say &quot;Okay, we don't need to write out Asm.js as legal Javascript any more we can just write it out as binary code and that saves the browser a lot of work in terms of parsing.&quot; Asm.js is very fast at runtime but it still imposes a high parsing cost on the browser and that's particularly noticeable on mobiles where people complain that say a large game might take multiple seconds to start during which the browser CPU is just 100% parsing so it would be nice to eliminate that cost altogether. Also, you get smaller use of network traffic because it's very compact and also even though the semantics of web assembly are the same as asm.js initially they are open to adding additional web assembly only features in the future. So it might be possible to have new types of parallelism for example that's only possible in web assembly. If they decide that it would be inappropriate to have it in Javascript it might still be appropriate for there to be a low-level feature that other languages can compile down to.</p>  <p>Jon: Ok.</p>  <p>[00:10:39] </p>  <p>Steve: So yeah, that's all about performance really. And you can kind of do it today you know. We've got Emscripten today, you can compile pretty much arbitrary C code. You can get your asm.js - it will be very very fast in Firefox - the only browser that supports it today but other browser makers have committed to implementing that to. I know IE certainly has, I don't know about all of them. I'm pretty sure they don't really have a lot of choice these days.</p>  <p>[00:11:04] </p>  <p>Jon: Yeah.</p>  <p>Steve: That's useful for a lot of things but one thing that you can't really do very well with that today, but it's kind of promised in the future, is compile some other language, that's not C or C++, into Javascript. So theoretically you could do it because Emscripten takes <a href="http://llvm.org/docs/BitCodeFormat.html">LLVM bytecode</a> and turns that into Javascript. So in theory anything that compiles to LLVM bytecode can be translated into Javascript but in practice it's much more complicated than that. So if you take a <a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/">Swift</a> application for instance, and that uses the whole LLVM toolchain, it will produce LLVM bytecode and you might be able to get Emscripten to produce Javascript but it's not going to run because you don't have the Swift runtime there in Javascript. And it's the same with <a href="https://golang.org/">Go</a> and <a href="https://www.rust-lang.org/">Rust</a> and so-on and in certain cases people have managed to get little bits of experimental code working but really it's not a realistic option today but in the future it's quite likely with web assembly that they'll be a strong reason for the makers of these other compilers to want to support web assembly.</p>  <p>[00:12:06] </p>  <p>Jon: Ok. I believe you had tons of great demos during your talk - this was one where you said it basically very difficult to get a demo working for it. Was it that one?</p>  <p>Steve: I gave a demo of compiling <a href="https://www.sqlite.org/">SQLLite</a> - the embedded database - down into Javascript which is absolutely trivial. It works flawlessly and you need to do nothing clever at all. But SQLite is just written with C so it's kind of the best case - a very easy thing to get working. The thing I struggled with was - yeah I did try and compile some Swift and some Go and some Rust and none of them would work. I checked all the mailing lists and nobody else can do it either.</p>  <p>[00:12:48] </p>  <p>Jon: Okay. Wow. So next there was shared array buffer.</p>  <p>Steve: Yeah. Shared array buffer. So one of the limitations that Emscripten faces today is that it can only use the features that are available to Javascript. Obviously. Because it's running on a Javascript virtual machine. And that means that there are certain types of parallelism that you can't do because Javascript has always worked hard to be single threaded. Now we've got web workers with Javascript but they are deliberately limited. With the web worker each of your workers is only allowed to access it's own private memory space and when you wan't to communicate between your application and those workers you have to post these serialized messages to say what you want them to do and they post a message back saying what they did. And that's cool but they can't really approximate the performance of native code that will spin up multiple threads that all just mutate the same memory simultaneously without any complicated message passing. So shared array buffer provides a way to pass a reference to a block of memory where you're effectively saying &quot;I opt in to having no control over timings here. I accept the fact that anybody can mutate my memory at any time with no guarantees.&quot; And when you opt into that for your shared array buffer then you can get much higher performance in certain cases. </p>  <p>[00:14:05] </p>  <p>Jon: It's interesting we were talking to <a href="https://twitter.com/DamianEdwards">Damian Edwards</a> yesterday about some of the server work that they're doing optimizing serving <a href="http://asp.net/">ASP.NET</a> 5 and that was something they ran into on the server side was this kind of shared buffer and passing and minimizing the transitions and all that kind of stuff.</p>  <p>Steve: It's funny isn't it. On one side of the industry we've got the move towards functional programming and no shared state and at the other end you've got this need for exploiting all the core of many core processors with as little amount of overhead as possible where you do need to mutate shared state. So we're kind of straddling these two competing goals there and for certain applications like, for example, high performance games or something like that the shared state parallelism is clearly winning and other things like certain types of business applications functional programming seems to deliver much higher benefits than that. </p>  <p>[00:15:00] </p>  <p>Jon: Okay. I remember one of the other ones that I was actually really excited about because I'd looked at before and meant to play with and hadn't yet was <a href="https://gridstylesheets.org/">Grid Style Sheets</a>.</p>  <p>Steve: Oh yeah, yeah. So that's funny. The first thing to know about Grid Style Sheets is that it's got nothing whatsoever to do with grids. It's a company called <a href="https://thegrid.io/">TheGrid</a> which, you know, is a cool name for a company but it's a little confusing when you make a product called Grid Style Sheets. Anyway the idea with Grid Style Sheets is to kind of break free from all the layout limitations of regular CSS. Any web developer in the world has struggled with making things get vertically centered or shrink-wrapping to their content. You know, that kind of thing. It's embarrassingly difficult for us, even when we consult on some of the hardest problems in the world, we can't make something centered inside something else.</p>  <p>[00:15:47]</p>  <p>Jon: And it's funny because you feel like I can describe the problem. I want this to be here and this to always be here but never bigger than the parent. Or whatever, right?</p>  <p>Steve: And that's exactly what Grid Style Sheets does. It's an example of a constraints-based layout engine and with a constraints layout engine you don't necessarily care so much about hierarchy and padding and things like that you just make a rule that says something like &quot;My popup menu needs to be left aligned with some other element and it needs to be vertically centered in a certain area and it needs to be big enough for it's content&quot; - that kind of thing. So it's just a few constraints you give and then the constraints solver will choose the appropriate position for it. And it's the same technique that's used in some modern iOS applications. They've got a technology called <a href="https://developer.apple.com/library/ios/recipes/xcode_help-IB_auto_layout/chapters/UnderstandingAutolayout.html#//apple_ref/doc/uid/TP40014226-CH22-SW1">Auto Layout</a> and that allows iOS to have things like - you'll see they've announced the Windows 8 style sidebar thing in iOS 9 I think. Well don't Apple a good original idea that one. And the way applications can fit into arbitrary sized screens is by using technologies like Auto Layout where the developer just specifies a set of constraints and the operating system positions things. And Grid Style Sheets allows you to do precisely the same thing but on the web. It's a cool, very cool technology. It's a bit experimental at this stage, I don't know of too many people really using it. </p>  <p>Jon: And it's just Javascript right? So I mean I can start using it today?</p>  <p>Steve: Absolutely. I think that the people building that would aspire to it one day maybe even being a native feature. So you have your style type equals text/gss instead of css and then you have this alternate syntax for defining layout. Which is a heck of a lot more expressive and straight forward than regular CSS in certain cases. It's also got some really cool powerful features that have got no equivalent in CSS. For example, well a simple example is that it has variables. Now of course if you're using <a href="http://sass-lang.com/">SASS</a> or <a href="http://lesscss.org/">LESS</a> you know about variables but these are cool variables. They don't just have a specific value they have a value where you can define some rules. Like you can say this variable is positive, this variable is less than 250 but you don't say what actual value it is. The constraints optimizer will choose the value in order to satisfy all the other constraints. Also, it supports if/else conditions so you can say something like &quot;if this element is bigger than a certain size then I want this layout otherwise some other layout which is like <a href="http://www.w3.org/TR/css3-mediaqueries/">media queries</a> but, you know media queries are limited to querying just the window width or some other basic thing like that. Whereas with GSS you can query absolutely arbitrary things and it's evaluated at run-time so if you mutate the DOM over time then it will update its layout accordingly.</p>  <p>[00:18:34]</p>  <p>Jon: One really nice feature I liked about it too is that it animated between. And so, I watched as you resized the window and not only would it apply the constraints but it would like really nicely smoothly move to it.</p>  <p>Steve: Yeah, so that's not actually a natively GSS feature. I just put a CSS transition rule in. So like transition * 1 second or something. </p>  <p>Jon: Smart, I like that!</p>  <p>Steve: So in an application when everything to just instantly snap to the correct position you wouldn't have that rule but it's quite sweet as you say to see things so of fluidly slide into their correct position. Which is dead easy because GSS internally is using position: absolute or something for everything so all your animations just work. </p>  <p>Jon: Now, because of things like that it might be difficult to use some GSS and some traditional CSS together.</p>  <p>Steve: Yeah, I'm sure that's probably true. Yeah. I think there's a lot of reasons why if you are adopting this you should expect to be in for a slightly bumpy ride. You will definitely be one of the first adopters in the world if you pick this up today. You'll be the one that's actually figuring out what the best practices are, what stuff does and doesn't work that well so yeah I wasn't standing up there trying to advocate that everyone should take this on today but if you've got an interesting little side project and you want to try out some really cutting-edge possible future thing then yeah it's a really fun thing to play with.</p>  <p>[00:19:53]</p>  <p>Jon: And one thing too I was all excited about it and kind of sold on it and you explained too that it can be difficult to debug. If something's not working it's like actually solving a constraint and you don't get that clear understanding of what I did wrong.</p>  <p>Steve: I could imagine some future tooling that shows you visually how things have been anchored and laid out. But at the moment it's a bit like if you give it not quite enough information it will just make some decision that might completely bizare like it chooses to position an element off the screen or something like that and it may not be obvious until you really think very carefully why it's done that.</p>  <p>[00:20:30]</p>  <p>Jon: Great, well this is fascinating. I'm looking forward to watching the video again and digging into some of this stuff. I understand you've got to run off and catch a plane.</p>  <p>Steve: Yes, that is true.</p>  <p>Jon: So thank-you very much for your time and was great talking to you.</p>  <p>Steve: Cheers.</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0212-Steve-Sanderson.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 211: James Mickens on The State of Computer Security and Bitcoin and Thomas Jefferson and Internet of Terrible Things and Prawns and Oslo&#x27;s Terrible Secret</title>
    <link>https://herdingcode.com/herding-code-211-james-mickens-on-the-state-of-computer-security-and-bitcoin-and-thomas-jefferson-and-internet-of-terrible-things-and-prawns-and-oslos-terrible-secret/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-211-james-mickens-on-the-state-of-computer-security-and-bitcoin-and-thomas-jefferson-and-internet-of-terrible-things-and-prawns-and-oslos-terrible-secret/</guid>
    <pubDate>Fri, 04 Sep 2015 22:18:31 GMT</pubDate>
    <description><![CDATA[<p>While at NDC, Jon talks to James Mickens about his terrifying computer security keynote presentation. TLDR you are doomed. Herding Code 211: James Mickens on</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 211</strong></p>
<p>While at NDC, Jon talks to James Mickens about his terrifying computer security keynote presentation. </p>

<p>TLDR you are doomed.</p>

<p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0211-James-Mickens.mp3">Herding Code 211: James Mickens on The State of Computer Security and Bitcoin and Thomas Jefferson and Internet of Terrible Things and Prawns Oslo's Terrible Secret</a></p>

<p></p>

<p>Show Notes:</p>

<ul>
  <li>Hello</li>

  <ul>
    <li>(00:24) All is lost. Listen to Danzig.</li>
  </ul>

  <li>Stop putting your money in Bitcoin</li>

  <ul>
    <li>(01:00) James says it's not a good place to put all your money unless you want to be poor.</li>

    <li>(01:42) Bitcoin is a commodity, not a currency. Investing in commodities is hard. It's not a stable place to put money. When it's going up, the smart people are taking money out.</li>
  </ul>

  <li>The legal system - and specifically Thomas Jefferson - won't help you</li>

  <ul>
    <li> (03:56) Judges and lawyers are very far removed from modern technology. Analogies to older forms of communications doesn't work.</li>

    <li>(04:44) Emojis are not telegrams. They're incredibly terrible, though.</li>

    <li>(06:30) Thomas Jefferson wouldn't help with issues relating to iPhones. If your phone broke, would you take it to a really old person for help? Because Thomas Jefferson is a really, really old person.</li>
  </ul>

  <li>The Internet of Terror</li>

  <ul>
    <li>(08:10) The internet of things is the new cool buzzword, but nobody wants to reboot their house.</li>

    <li>(09:17) The security story for the internet of things world is cartoonish. When your refrigerator starts sending spam, James will laugh at you.</li>

    <li>(11:52) The first several generations of IoT houses will be terrible. Things will get better on a relative scale, but will always be terrible on an absolute scale.</li>
  </ul>

  <li>Node.js</li>

  <ul>
    <li>(13:32) James knows he's in danger for dissing Node.js, but he can't help himself.</li>

    <li>(15:08) We'll see the rise of the JavaScript Full Stack Developer, which could be powerful, but it's also what Sauron wants.</li>
  </ul>

  <li> Oslo</li>

  <ul>
    <li>(16:10) Oslo is a wonderful city. It never gets dark, which makes you feel safe but if James was a criminal he would be all over the extended working hours.</li>

    <li>(16:54) Shrimps are prawns, and unlike American shrimp they have legs and heads.</li>

    <li>(18:06) French fries cost approximately one mortgage payment.</li>

    <li>(19:42) James speculates on whether Oslo harbors some terrible secret. The condos look like lairs for James Bond villains.</li>

    <li>(21:11) Jon saw a building with a big sign that said Edderkoppen, which he had recently learned means The Spider. Perhaps that is Oslo's terrible secret?</li>
  </ul>
</ul>

<p>Show Links:</p>

<ul>
  <li>[video + slides] <a href="https://vimeo.com/135347162">Not Even Close: The State of Computer Security</a></li>

  <li>[video] <a href="https://vimeo.com/111122950">LIFE IS TERRIBLE: LET'S TALK ABOUT THE WEB</a> - from Øredev Conference</li>

  <li>James Mickens profile: <a href="http://news.microsoft.com/stories/people/james-mickens.html">All hail the Galactic Viceroy of Research Excellence</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0211-James-Mickens.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 210: Ian Cooper on Microservices and the Brighter library</title>
    <link>https://herdingcode.com/herding-code-210-ian-cooper-on-microservices-and-the-brighter-library/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-210-ian-cooper-on-microservices-and-the-brighter-library/</guid>
    <pubDate>Wed, 02 Sep 2015 19:53:16 GMT</pubDate>
    <description><![CDATA[<p>While at NDC Oslo, K Scott and Jon talked to Ian Cooper about Microservices and using the Brighter library for Command Dispatcher / Command Processor patterns.</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 210</strong></p>
<p>While at NDC Oslo, K Scott and Jon talked to Ian Cooper about Microservices and using the Brighter library for Command Dispatcher / Command Processor patterns.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0210-Ian-Cooper.mp3">Herding Code 210: Ian Cooper on Microservices and the Brighter library</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Why Microservices?      <ul>       <li>(0:48) Ian explains that &quot;micro&quot; doesn't imply number of lines of code but &quot;A bounded concept/business capability within your Domain&quot; (put forth by <a href="http://www.martinfowler.com">Martin Fowler</a> and <a href="http://bovon.org">James Lewis</a>) </li>        <li>(1:20) Ian talks about breaking the domain problem down further and further for simpler testing, better fault tolerance and incremental releases. </li>        <li>(2:20) &quot;If you can't QA everything you need to be able to monitor and respond to issues rapidly.&quot; </li>        <li>(2:42) Scott Allen asks if Devops is a driver for Microservices rather than physical deployment or team size. </li>        <li>(3:00) Ian talks about the scale limits of developers and teams and how component based architectures. </li>     </ul>   </li>    <li>Have we been here before?      <ul>       <li>(4:00) Ian talks about how Microservices is the next generation of component-based architectures after <a href="https://technet.microsoft.com/en-us/library/Cc958799.aspx">DCOM</a>, <a href="http://corba.org">CORBA</a>, <a href="https://en.wikipedia.org/wiki/Service-oriented_architecture">SOA</a> and the importance of understanding what worked, what didn't and why. </li>        <li>(4:49) Asking a component for a cup of tea vs telling something how to make tea highlighting the difference between Microservices vs RPC. RPC was very coupled to behavior which lead to fragile APIs. </li>     </ul>   </li>    <li>Finding the &quot;micro&quot; sweet spot      <ul>       <li>(5:50) Jon asks how you manage the complexity of orchestrating many smaller pieces. </li>        <li>(6:15) Ian advises against going too small - Nanoservices - where the overhead of a service overshadows the utility value of it. </li>        <li>(6:30) &quot;It's really hard to get a feel in a new domain of where those points are that you can slice effectively&quot; - one solution is to start exploring the domain in a traditional monolithic way and to break the parts apart at the seems to get the tradeoff right. </li>     </ul>   </li>    <li>Tooling and support      <ul>       <li>(7:06) Jon asks what a good way to manage these services including profiling and monitoring. </li>        <li>(7:20) Ian recommends some tools to help:          <ul>           <li><a href="http://newrelic.com">New Relic</a> for introspective monitoring and diagnostics. </li>            <li><a href="https://www.elastic.co/products/logstash">Logstash</a> or <a href="http://www.splunk.com">Splunk</a> for log analysis and the usefulness of adding a GUID to a request that flows through messages and logs to correlate the activity. </li>            <li><a href="https://zookeeper.apache.org">Zookeeper</a> or <a href="https://www.consul.io">Consul</a> for service registration and discovery. </li>         </ul>       </li>        <li>(8:28) Scott Allen and Ian talk about how Microservices take forward SOA principles such as autonomous services, not sharing types and stable interfaces. </li>        <li>(9:00) Scott Allen asks what options for communications between the services are and Ian compares HTTP, Sockets and message queues like <a href="https://www.rabbitmq.com">RabbitMQ</a>. </li>     </ul>   </li>    <li>Ian's <a href="https://github.com/iancooper/Paramore">Brighter</a> .NET lightweight Microservices project       <ul>       <li>(10:20) Basic two parts of Brighter are:          <ul>           <li>Command Dispatcher/Processor - Maps a command to a processor with a pipeline where you can insert orthogonal operations like logging and monitoring </li>            <li>Task Queue - Allows some commands will be handled asynchronously elsewhere </li>         </ul>       </li>        <li>Very simple for the developer - just write a command and a handler. </li>        <li>Easy to embed in your existing Windows service if using something like <a href="http://topshelf-project.com">Topshelf</a>. </li>        <li>Provides timeouts, retries and a <a href="http://martinfowler.com/bliki/CircuitBreaker.html">circuit breaker</a> inspired by <a href="https://github.com/Netflix/Hystrix/wiki/How-it-Works">Netflix's Hystrix</a> in a declarative manner. </li>        <li>(12:45) Scott Allen clarifies how easy it is to get two services talking to each other using this via RabbitMQ. </li>        <li>(13:00) Ian talks about future support for <a href="http://azure.microsoft.com/en-gb/services/service-bus/">Azure Service Bus</a> and the possibility of producing one for <a href="http://redis.io">Redis</a> - RabbitMQ and <a href="https://aws.amazon.com/sqs/">Amazon SQS</a> are already supported. </li>        <li>(13:30) Scott Allen asks if this is used in production and Ian explains how <a href="https://www.huddle.com">Huddle</a> started with using RX on the server and had difficulties managing subscriptions. </li>        <li>(14:20) Brighter is on <a href="http://www.thoughtworks.com/radar/tools/brighter">ThoughtWorks Technology Radar</a> and evangelized by ex-Huddlers at their new roles. </li>        <li>(14:40) Ian talks about the importance of <a href="http://iancooper.github.io/Paramore/Brighter.html">good documentation and welcomes feedback on theirs</a>. </li>        <li>(15:10) Ian mentions they facilitate hexagonal architecture. </li>        <li>Scott Allen asks if you can use in-process and Ian explains the subtleties </li>     </ul>   </li>    <li>Wrap-up      <ul>       <li>(16:00) Ian's time is sucked up by being a a new dad, congratulations! </li>        <li>(16:30) The one job of a parent is keeping children alive. </li>        <li>(16:40) Thank-you and goodbye. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://martinfowler.com/articles/microservices.html">Fowler &amp; Lewis on Microservices</a> </li>    <li><a href="https://docs.newrelic.com/docs/agents/net-agent/getting-started/new-relic-net">New Relic for .NET documentation</a> </li>    <li><a href="https://vimeo.com/113621145">Decoupling from ASP.NET - Hexagonal Architecture with Ian Cooper at NDC 2014</a> </li>    <li><a href="http://fideloper.com/hexagonal-architecture">Chris Fidao on Hexagonal Architecture</a> </li> </ul>  <p><em>These show notes were contributed by </em><a href="http://damieng.com/"><em>Damien Guard</em></a><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0210-Ian-Cooper.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 209: Robert Friberg on In-memory Databases and OrigoDB</title>
    <link>https://herdingcode.com/herding-code-209-robert-friberg-on-in-memory-databases-and-origodb/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-209-robert-friberg-on-in-memory-databases-and-origodb/</guid>
    <pubDate>Thu, 27 Aug 2015 19:50:49 GMT</pubDate>
    <description><![CDATA[<p>While at NDC Oslo, Jon talked to Robert Friberg about in-memory databases in general. They discussed OrigoDB, Robert&apos;s open source in-memory database, as well as Redis and SQL S</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 209</strong></p>
<p>While at NDC Oslo, Jon talked to Robert Friberg about in-memory databases in general. They discussed OrigoDB, Robert's open source in-memory database, as well as Redis and SQL Server Hekaton.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0209-Robert-Friberg.mp3">Herding Code 209: Robert Friberg on In-memory Databases and OrigoDB</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello      <ul>       <li>(00:18) Jon asks Robert what his presentation was about. Robert describes his talk covering in-memory databases, comparing OrigoDB, Redis and Heketon. </li>     </ul>   </li>    <li>OrigoDB and working with in-memory databases  <ul>       <li>(00:40) OrigoDB is Robert's open source project. Jon asks why Robert decided to write his own in-memory database when there others available. Robert says that OrigoDB is unique, and that they've been working on it for a long time and there was nothing available when they started on it. </li>        <li>(01:18) Jon asks how it compares to relational databases. Robert says that when you move to in-memory, you're no longer constrained by the need to structure your data in a way that can be easily stored on disk. You can take advantage of the random access nature of memory, and thing more graph oriented than stream oriented. </li>        <li>(02:07) Jon asks if the data is persisted and follows ACID principles. Robert says that the data is in memory in any form you like, and you log transactions when you make changes - writing the events to disk or a database. </li>        <li>(02:48) Jon asks how data is loaded when an application starts up. Robert says it loads the most recent snapshot and then replays all events that occurred after the snapshot. You can choose the serialization format - JSON, binary and Protocol Buffers (protobuf) are supported. Protocol Buffers fast, compact and interoperable. </li>     </ul>   </li>    <ul>     <li>(03:45) Jon asks what kinds of applications work best with OrigoDB. Robert describes the problem it solves: data access and databases are too slow, so we need to use caching to compensate for that. Traditional relational databases were a good fit when memory was scarce, but now your entire application's data can fit in memory. Also, historically, relational databases reflected the entity model and allowing business users to run queries; now we're mapping back and forth between models which don't match. If you keep all the data in memory, everything's in one place and the data access is incredibly fast. That allows you to do everything single-threaded, really quickly - on Robert's laptop he can do 50,000 ACID transactions per second. </li>      <li>(07:35) Jon asks what the difference is between using OrigoDB and just using his own in-memory structures. Robert explains that's how OrigoDB works - you use your own in-memory structures and do LINQ queries against them. OrigoDB adds in snapshotting, persistence, etc. </li>   </ul>    <li>OrigoDB support for clustering</li>    <ul>     <li>(08:22 ) Robert says that in addition to the embedded engine, they also have an out-of-process server product that supports clustering with replication, load balancing, and off-site backup. </li>      <li>(09:12) Jon asks how the clusters communicate. Robert says that it's via TCP, inspired by SQL Server clustering. </li>      <li>(09:50) Jon asks what happens when the master goes offline. Robert says that there's no automatic failover, but you can do manual failover using the web-based UI. </li>   </ul>    <li>Other OrigoDB features: Web UI, cross-platform, cached queries</li>    <ul>     <li>(10:29) Jon asks about the web UI. Robert says there's a web-based UI that runs in the engine using Nancy. It supports some nice features, including ad-hoc queries using Razor syntax </li>      <li>(11:33) OrigoDB's bindings for JavaScript and Protocol Buffers support cross-platform applications. </li>      <li>(12:35) You work with OrigoDB using commands and queries. You can also send in LINQ commands as text and they'll be compiled, parameterized and cached. </li>   </ul>    <li>How Much Memory?</li>    <ul>     <li>(13:17) Jon asks how much memory it will take. Robert says over the past twenty years, the transactional workloads for the projects he's worked on have all been under 200GB. You can offload your reporting data to a relational database if needed. </li>   </ul>    <li>Business Model</li>    <ul>     <li>(14:18) Jon asks if the server product is commercial software. Robert said they've tried the revenue model but haven't had any sales. In the next release, they're pivoting to everything free and open source and trying to build a support business. </li>   </ul>    <li>Case Study</li>    <ul>     <li>(15:15) Jon asks what kinds of projects he's built with OrigoDB. Robert talks about a consulting job for a large healthcare company in Sweden. The customer was having really bad performance problems - each service would create business components, which would then create data components. Due to the business requirements, the data transactions were complex, and many were written using cursors. Robert said he traced some database use and found that a single transaction could make thousands of database round-trips. Robert did a proof of concept using simple C# collections in-memory and found they could do tens of thousands of transactions per second. Robert says that transactions in SQL Server require logging pages of data to disk, whereas logging an OrigoDB transaction is often just a few bytes since it's just logging the command. </li>   </ul>    <li>Snapshots</li>    <ul>     <li>(18:18) Jon asks how many snapshots are maintained. Robert says he tries to avoid snapshots since they require a read lock. You can also use an immutable model (using multi-version cursor control). </li>      <li>(19:21) You can truncate events when you snapshot, but then you're losing information. Robert and Jon discuss how this relates to event sourcing.</li>   </ul>    <li>Other In-Memory Databases: SQL Server Hekaton, Redis, VoltDB</li>    <ul>     <li>(20:02) Jon asks what Robert showed off in his talk. Robert says he normally does workshops that are a few days long, so squeezing everything into an hour is difficult. He does demonstrations showing OrigoDB, Redis and Hekaton, but his main message is that your application's data probably fits in memory and memory is cheap. </li>      <li>(21:03) Jon asks about Hekaton. Robert explains how Hekaton works, pointing out that it supports a hybrid model in which only certain tables are in-memory. The advantage is that you can use your existing SQL Server tools, ecosystem and code. </li>      <li>(23:20) Robert mentions VoltDB, a startup that offers an in-memory, distributed relational database engine. </li>      <li>Redis is a key-value store. Most people use it as a cache, but the values in themselves are structures, so a value can be a hashtable, list, queue, sorted set, etc. There are predefined commands that kind of look like assembler. </li>      <li>(24:45) Jon says he remembers running into some objects that were difficult to serialize. Robert says that the default formatter for OrigoDB is the binary formatter, and you have to mark your objects as serializable. If you use Protocol Buffers require you to define a mapping. </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Robert Friberg (<a title="https://about.me/robertfriberg" href="https://about.me/robertfriberg">https://about.me/robertfriberg</a>, <a href="https://twitter.com/robertfriberg">@RobertFriberg</a>) </li>    <li><a href="http://dev.origodb.com/">OrigoDB</a> </li>    <li>Video: <a href="https://vimeo.com/131196774">IMDB showdown - comparing OrigoDB, Redis and SQL Server Hekaton</a> </li>    <li><a href="https://developers.google.com/protocol-buffers/">Protocol Buffers</a> </li>    <li><a href="https://msdn.microsoft.com/en-us/library/dn133186(v=sql.120).aspx">SQL Server In-Memory OLTB (Hekaton)</a> </li>    <li><a href="http://redis.io/">Redis</a> </li>    <li><a href="http://voltdb.com/">VoltDB</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0209-Robert-Friberg.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 208: Chris Klug on SOLID principles and migrating from Silverlight to Angular and TypeScript</title>
    <link>https://herdingcode.com/herding-code-208-chris-klug-on-solid-principles-and-migrating-from-silverlight-to-angular-and-typescript/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-208-chris-klug-on-solid-principles-and-migrating-from-silverlight-to-angular-and-typescript/</guid>
    <pubDate>Fri, 21 Aug 2015 21:07:15 GMT</pubDate>
    <description><![CDATA[<p>While at NDC Oslo, K Scott and Jon talked to Chris Klug about pragmatically applying SOLID principles and on moving from Silverlight to HTML5. Herding Code 20</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 208</strong></p>
<p>While at NDC Oslo, K Scott and Jon talked to Chris Klug about pragmatically applying SOLID principles and on moving from Silverlight to HTML5.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0208-Chris-Klug.mp3">Herding Code 208: Chris Klug on SOLID principles and migrating from Silverlight to Angular and TypeScript</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello There      <ul>       <li>(00:18) Jon says hi to Chris Klug and mispronounces his name and feels bad about it but Chris is understanding and lets it go. </li>     </ul>   </li>    <li>SOLID principles and Pragmatism      <ul>       <li>(00:27) Chris has been doing SOLID talks for a while, but this time he spoke about when to use SOLID principles and when not to. However, open-closed and Liskov substitution principle are both examples that might not fit into all scenarios. Chris says if you go full-SOLID you might never ship anything... and shipping is a good feature, too. </li>        <li>(01:28) Jon asks Chris if he gets some pushback. Chris says he does, from both sides. </li>        <li>(02:20) K Scott asks Chris about how he applies the Single Responsibility Principle. </li>     </ul>   </li>    <li>Migrating from Silverlight to Angular and TypeScript      <ul>       <li>(03:35) K Scott asks Chris about the kind of projects he's building lately. Chris mentions one project moving from Silverlight to Angular, another moving form WPF to Angular. He's found that patterns he used in Silverlight development - MVVM, dependency injection, data services - translate really well to Angular. The only downside is moving from C# to JavaScript, so he's using TypeScript a lot now. He recommends starting with JavaScript so you learn the platform, then move to TypeScript. </li>        <li>(05:44) K Scott asks Chris if he'd always use TypeScript. Chris says maybe not for simple projects, since TypeScript makes things a little more complicated due to the transpiler step. But the type safety's really nice for any larger project. </li>        <li>(06:28) Jon says he thinks that Silverlight was a good bridge to HTML5 since it let you get started with things like video on the web long before HTML5 supported them. Chris kind of agrees, but points out that HTML5 video still doesn't support DRM, and he still prefers XAML to HTML and CSS. </li>        <li>(08:22) Jon asks what Chris would recommend to developers who are starting on the transition from XAML to HTML5. Chris says just jump in and get started - probably using Angular and TypeScript. It's really not that hard once you get started. </li>     </ul>   </li>    <li>Kite surfing and being a rock star      <ul>       <li>(09:00) Jon asks Chris what he does for fun in his free time. Chris says he's a kite boarder, which is a little tricky because he lives in Stockholm. </li>        <li>(09:42) Jon asks Chris about his picture from the NDC speakers page, and Chris tells the story. </li>        <li>(10:24) K Scott asks Chris about the best spots he's been kite boarding, and Chris mentions a few in South Africa.&#160; </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Chris Klug (<a title="http://chris.59north.com/" href="http://chris.59north.com/">http://chris.59north.com/</a>, <a href="https://twitter.com/ZeroKoll">@ZeroKoll</a>) </li>    <li>Video: <a href="https://vimeo.com/131631485">Applying S.O.L.I.D. Principles in .NET/C# - Chris Klug</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0208-Chris-Klug.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 207: Damian Edwards on ASP.NET 5, DNX everywhere, and experimental servers on Windows</title>
    <link>https://herdingcode.com/herding-code-207-damian-edwards-on-asp-net-5-dnx-everywhere-and-experimental-servers-on-windows/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-207-damian-edwards-on-asp-net-5-dnx-everywhere-and-experimental-servers-on-windows/</guid>
    <pubDate>Mon, 10 Aug 2015 19:50:46 GMT</pubDate>
    <description><![CDATA[<p>While at NDC Oslo, K Scott and Jon talked to Damian about ASP.NET 5, running DNX cross-platform (including Raspberry Pi), the exploratory work he and the team are doing to make</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 207</strong></p>
<p>While at NDC Oslo, K Scott and Jon talked to Damian about ASP.NET 5, running DNX cross-platform (including Raspberry Pi), the exploratory work he and the team are doing to make ASP.NET 5 run really fast, TagHelpers, and his favorite Redmond craft beers.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0207-Damian-Edwards.mp3">Herding Code 207: Damian Edwards on ASP.NET 5, DNX everywhere, and experimental servers on Windows</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello</li>    <ul>     <li>(00:18) K Scott asks about the general status of ASP.NET 5 and what Damian's been up to. Damian mentions the work the team's been up to and the two talks and two days of workshops he and Jon just completed. </li>   </ul>    <li>ASP.NET 5 - portability and cross-platform</li>    <ul>     <li>(01:16) K Scott asks about the advantages of running ASP.NET 5 on the Core CLR. Damian says the big advantages are portability (bundle the runtime with your app) and cross-platform - anything beyond that is secondary. It is lighter, more compact, etc., but that's not the main goal. </li>      <li>(03:04) Jon talks about how he went through a depressing smackdown trying to talk managers into letting him upgrade corporate apps to ASP.NET 2.0 (when it first came out) and the &quot;one framework per server&quot; monster shut him down. Damian points out that you do lose some things in translations - there are some Windows abstractions and API's that will only be available in the full CLR. So if you have a requirement for Windows-specific functionality (COM, directory services, etc.), you'll need to run your application on the full .NET Framework. </li>      <li>(03:59) K Scott asks about the experience of bundling the runtime with your application. Damian describes how he demonstrated this during his presentation, bundling multiple runtimes (e.g. Linux, Mono, Mac, Windows) with an application. </li>      <li>(04:38) K Scott asks hosting on Linux. Damian describes Kestrel, the web host for ASP.NET 5 that runs on libuv (used by Node and other servers). </li>   </ul>    <li>ASP.NET 5 HTTP Performance, Pipelining and HTTP 2</li>    <ul>     <li>(05:50) K Scott asks how Damian expects ASP.NET 5 to perform relative to Node.js. Damian describes the performance testing testing he an his team have started looking at using the TechEmpower benchmarks. He lists several abstractions and implementations they've looked at, starting with the simplest benchmark that just tests plaintext response. </li>      <li>(10:15) Damian explains how pipelining works. K Scott asks about how HTTP 2 fits it. Damian talks about how both enable higher HTTP throughput. </li>      <li>(12:17) Jon asks if the useful the HTTP plaintext test is and Damian talks about this test focuses on efficiency in speaking HTTP, there are a lot of other tests and features they'll need to look at as they move up the stack. </li>      <li>(12:55) K Scott asks why the ASP.NET 5 stack is nearly twice as fast as ASP.NET 4.x for plaintext responses. Damian talks about how legacy compatibility in ASP.NET 4.x extends all the way back to classic ASP, whereas ASP.NET 5 only pulls in specific features as needed by the application. </li>      <li>(14:44) Damian says they'll also be looking at massive concurrency (important for realtime applications) and asynchronous background work. </li>      <li>(15:32) Jon incorrectly guesses that async background work will be important for pipeline scenarios.&#160; Damian says that since pipelining only works over the same connection, so this is more relevant for HTTP 2. </li>   </ul>    <li>Minimizing Kernel / User Mode Transitions</li>    <ul>     <li>(16:56) Jon asks about the importance of switching between kernel and user mode. Damian explains why that transition is necessary and the performance impact it has. He talks about how some of the memory management techniques they're looking at. </li>      <li>(21:12) Jon asks about some newer APIs Damian had previously mentioned to him. Damian talks about Registered IO (RIO) in Windows 8 and Windows Server 2012 R2. K Scott asks about HTTP.SYS kernel mode caching. </li>      <li>(24:07) Jon asks if there are some performance impacts he should pay attention to as a web developer. Damian talks about the process ASP.NET MVC pipeline and how content could be double or triple buffered in some cases as it moved through the pipeline. That's an issue when you're looking at client-side optimization, because bytes aren't flushed to the client as early as possible. In ASP.NET MVC 6, it's now possible to explicitly flush content, and the double and triple buffering has been removed. </li>      <li>(27:14) K Scott asks about the baseline KB allocated per request. Damian said that previously it was 15-40 KB per request before your application code did anything; now it's under a KB. There are some other buffers they can probably pool as well. </li>   </ul>    <li>TagHelpers</li>    <ul>     <li>(28:22) Jon asks TagHelpers. Damian explains some of the problems with HTML Helpers, especially when you need to control the HTML that's being output. TagHelpers allow you to call HTML Helpers using an HTML-like syntax (tags and attributes) so you get all of the benefits of working in the HTML editor. </li>   </ul>    <li>What do you do for fun?</li>    <ul>     <li>(30:33) K Scott asks Damian what he does for fun. Damian talks about craft beers in Redmond and his new espresso machine. K Scott asks Damian about some of his favorite craft breweries; Damian talks about Kilty MacSporran and Hogus Maximus from Postdoc Brewing and Black Raven Brewing Co.&#160;&#160; </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Damian Edwards (<a href="https://twitter.com/damianedwards">@DamianEdwards</a>) </li>    <li>Video: <a href="http://ndcoslo.oktaset.com/t-30321">ASP.NET 5 &amp; DNX: It's a X-Platform Party!</a>&#160; </li>    <li>Video: <a href="http://ndcoslo.oktaset.com/t-30322">What's new in ASP.NET 5 and MVC 6</a> </li>    <li>TechEmpower tests - <a href="http://www.techempower.com/benchmarks/#requirements-plaintext">Plaintext requirement</a> </li>    <li><a href="http://postdocbrewing.com/">Postdoc Brewing</a> </li>    <li><a href="http://blackravenbrewing.com/">Black Raven Brewing Co.</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0207-Damian-Edwards.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 206: Rachel Appel on Accessibility and Unit Testing</title>
    <link>https://herdingcode.com/herding-code-206-rachel-appel-on-accessibility-and-unit-testing/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-206-rachel-appel-on-accessibility-and-unit-testing/</guid>
    <pubDate>Thu, 23 Jul 2015 22:15:31 GMT</pubDate>
    <description><![CDATA[<p>While at NDC Oslo, K Scott and Jon talked to Rachel about accessibility (web and otherwise) and testing. Herding Code 206: Rachel Appel on Accessibility and U</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 206</strong></p>
<p>While at NDC Oslo, K Scott and Jon talked to Rachel about accessibility (web and otherwise) and testing.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0206-Rachel-Appel.mp3">Herding Code 206: Rachel Appel on Accessibility and Unit Testing</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Accessibility </li>    <ul>     <li>(00:18) Jon starts by asking Rachel what aspects of accessibility she addressed in her talk. Rachel overviews some aspects: visual, auditory, motor and cognitive needs.</li>      <li>(02:20) Rachel describes how increasing font size on a page is a really quick change that helps a lot of people, pointing out that eyeglasses are an accessibility technology.</li>      <li>(02:50) Using HTML semantic tags and ARIA attributes help people who are using screen readers to navigate your site - otherwise screen readers have to read through ads, page headers, etc. for every single page.</li>      <li>(03:45) There are 1.4 billion people with some kind of accessible needs.</li>      <li>(04:06) K Scott asks how well modern screen readers handle things like semantic HTML markup. Rachel says yes, and also mentions alt tags for images. Jon and Rachel discuss how easy it is to just rename divs to semantic tags like header and nav. </li>      <li>(05:13) Jon asks what ARIA is. Rachel says it stands for Accessible Rich Internet Applications and describes how ARIA attributes can give hints to screen readers for things like required fields and validation errors.</li>      <li>(06:44) Rachel recommends that listeners download a screen reader like NVDA or WebAnywhere, blindfold yourself and take some time navigating their sites to understand the experience.</li>      <li>(07:28) K Scott asks about building SPA sites with technologies like React, Angular, Ember. Rachel says that ARIA elements still work, and there are ARIA and semantic elements that indicate to screen readers that navigation is occurring. K Scott asks if navigation within a SPA causes the screen reader to start over; Rachel says that it does and recommends using skip links. Rachel recommends visiting the accessibility site webaim.org, which shows a good example of using skip links.</li>      <li>(09:25) Jon asks how Rachel got interested in accessibility. She's worked on a lot of government sites which require accessibility standards, but she's just personally interested in making sites that are easy to use. She describes some of the frustrations in browsing websites with ads and modals, then points out that it's even worse for users with accessible needs. Users with accessible needs make up 20% of the population, so you can easily justify any extra work as worthwhile just in expanding your user base by 20%.</li>      <li>(12:30) K Scott asks if Rachel has any other resource recommendations. She recommends using the WAVE scanner on the WebAIM site, which indicates a number of issues including contrast.</li>      <li>Jon asks about color blindness considerations. Rachel says that it's also important - Facebook is blue because Mark Zuckerberg is colorblind. She recommends using a tool called the Color Oracle. Rachel and K Scott discuss a number of considerations to make sure your sites and applications make sense to users with color blindness issues.</li>   </ul>    <li>Testing</li>    <ul>     <li>(15:55) Rachel gave another talk about testing with ASP.NET MVC. She covered xUnit for testing application code, qUnit for front-end testing, and UI automation testing. She recommends starting with unit testing, then adding in front-end and automation testing.</li>      <li>(16:50) Rachel thinks UI automation testing is kind of a hidden gem - Visual Studio has coded UI tests, which can emulate user actions, which just records your UI interactions so that it can play them back later. K Scott asks about timing issues and Jon asks about use with single page application. Rachel says just consider coded UI tests as a user - you can even have a QA or actual users click through the site and record their actions. K Scott asks what versions of Visual Studio support it. (ed. note: the <a href="https://www.visualstudio.com/en-us/products/compare-visual-studio-2015-products-vs">recorder is only in Visual Studio Enterprise</a>).</li>      <li>(18:50) K Scott asks what Rachel does to relax when she's not testing and calling people out for accessibility issues, and Rachel tells us her upcoming travel plans. </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Rachel Appel (<a title="www.UdiDahan.com" href="http://www.rachelappel.com">www.rachelappel.com</a>, <a href="https://twitter.com/rachelappel">@RachelAppel</a>) </li>    <li>Video: <a title="https://vimeo.com/131631491" href="https://vimeo.com/131631491">Designing and Programming Accessible Website and App UIs</a></li>    <li>Video: <a href="https://vimeo.com/131409650">All Your Tests Are Belong To Us</a></li>    <li><a href="http://www.nvaccess.org/">NVDA</a></li>    <li><a href="http://webanywhere.cs.washington.edu/">WebAnywhere</a></li>    <li><a href="http://webaim.org/">WebAIM</a></li>    <li><a href="http://www.colororacle.org/">Color Oracle</a></li>    <li><a href="https://msdn.microsoft.com/en-us/library/dd286726.aspx">Visual Studio Coded UI Tests</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0206-Rachel-Appel.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 205: Udi Dahan on Starting a Company Based on an Open Source Project</title>
    <link>https://herdingcode.com/herding-code-205-udi-dahan-on-starting-a-company-based-on-an-open-source-project/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-205-udi-dahan-on-starting-a-company-based-on-an-open-source-project/</guid>
    <pubDate>Thu, 02 Jul 2015 23:56:13 GMT</pubDate>
    <description><![CDATA[<p>While at NDC Oslo, K Scott and Jon caught up with Udi Dahan to discuss his experiences in building a distributed company (Particular Software) to offer support and services for</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 205</strong></p>
<p>While at NDC Oslo, K Scott and Jon caught up with Udi Dahan to discuss his experiences in building a distributed company (Particular Software) to offer support and services for NServiceBus and related technologies.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0205-Udi-Dahan.mp3">Herding Code 205: Udi Dahan on Starting a Company Based on an Open Source Project</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello There      <ul>       <li>(00:18) K Scott introduces Udi Dahan, whom we last spoke to in 2010. </li>     </ul>   </li>    <li>Growing from an open source project to commercial product: how and why      <ul>       <li>(00:41) Udi describes why he started a company to better support the NServiceBus community. On his own, he wasn't able to both support himself doing NServiceBus training and the NServiceBus project. He decided he was doing his users a disservice by continuing the free open source model, but he wasn't sure it would work since there weren't really precedents for taking an open source project commercial in the .NET world. </li>        <li>(03:17) K Scott asks Udi about the global reach of his distributed company. </li>     </ul>   </li>    <li>Commercial Software and Licensing Are Hard      <ul>       <li>(04:10) Udi describes the learning curve to start selling a commercial product - complications with contracts, legal issues, etc. Pricing is complicated, too, because companies are structured so differently. </li>        <li>(06:43) K Scott asks if each customer requires a separate license. </li>        <li>(07:11) Jon asks what commercial model they settled on. Udi explains that the &quot;call for a quote&quot; model is common for large customers, but for &quot;normal&quot; customers it's generally $25 per month for a developer machine. </li>        <li>(08:15) Jon asks what changed with respect to the license and code availability. Udi explains that the code is still on GitHub, the license just changed for cases where it's being used commercially and developers don't want to release their code. The code is now under the RPL - the Reciprocal Public License. </li>        <li>(09:12) Jon asks about the difference between the RPL and the AGPL licenses. Udi explains that AGPL explains that AGPL only requires releasing your code to your users in order to use the code for free, so there's a loophole for cases like large intranet deployments. RPL requires releasing your code to the world for free use, not just to your users. </li>        <li>(10:37) Jon says he's happy to see open source as a thriving business model. Udi clarifies a bit - the common approach is a service based open source model, but this it really pushes you towards working with a few very large customers. The problems with this approach is that you're both subject to large risk if you lose your giant customers, and you're competing with enterprise vendors who have deep pockets. </li>     </ul>   </li>    <li>Running a Distributed Company      <ul>       <li>(13:44) K Scott asks Udi how he manages a growing, distributed company. Udi says that it's good that the growth doesn't happen all at once. </li>        <li>(15:15) Jon asks how they handle communications. Udi says it's important to write everything down and to make use of lots of web conferencing. All web conference meetings are recorded so people can catch up later. Jon says says he thinks that writing everything down makes things easier for your company over time. Udi says he wouldn't say it's easier, it's more of a maturity forcing function - if you're able to get through it, you're able to do a lot more and get new employees up to speed a lot faster. </li>     </ul>   </li>    <li>Surprise Lightning Round!      <ul>       <li>(18:43) K Scott springs a surprise Lighting Round on Udi! </li>        <li>(18:56) Microservices </li>        <li>(20:27) CQR </li>        <li>(22:03) Event Sourcing </li>     </ul>   </li>    <li>(26:43) K Scott asks what Udi does to relax in his spare time. Udi says he's got four kids, which isn't necessarily relaxing but definitely occupies his free time. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Udi Dahan (<a title="www.UdiDahan.com" href="http://t.co/lnCw5Dou9p">www.UdiDahan.com</a>, <a href="https://twitter.com/udidahan">@UdiDahan</a>) </li>    <li><a href="http://particular.net/">Particular Software</a> </li>    <li><a href="https://github.com/Particular">Particular Software on GitHub</a> </li>    <li><a href="http://opensource.org/licenses/rpl1.5.txt">Reciprocal Public License</a> </li>    <li><a href="https://herdingcode.com/herding-code-67-udi-dahan-on-scalability/">Herding Code 67: Udi Dahan on Scalability</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0205-Udi-Dahan.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 204: Sara J. Chipps and George Stocker on Jewelbots</title>
    <link>https://herdingcode.com/herding-code-204-sara-j-chipps-and-george-stocker-on-jewelbots/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-204-sara-j-chipps-and-george-stocker-on-jewelbots/</guid>
    <pubDate>Mon, 01 Jun 2015 23:13:02 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Sara J. Chipps and Geroge Stocker about Jewelbots: smart jewelry for a smarter generation. Note : They were called Jewliebots when the podcast was recorded, but</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 204</strong></p>
<p>The guys talk to Sara J. Chipps and Geroge Stocker about Jewelbots: smart jewelry for a smarter generation.</p>  <p><strong>Note</strong>: They were called Jewliebots when the podcast was recorded, but were since <a href="http://jewelbots.tumblr.com/post/117102099229/jewliebots-is-now-jewelbots">renamed to Jewelbots</a>.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0204-Jewelbots.mp3">Herding Code 204: Sara Chipps and George Stocker on Jewelbots</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello There </li>    <ul>     <li>(00:55) Sara and George introduce themselves and how they got involved in Jewelbots.</li>   </ul>    <li>Jewelbot Features and Platform</li>    <ul>     <li>(02:12) K Scott asks what Jewelbots is all about.&#160; Jewelbots are programable wearables for teenage girls. They're friendship bracelets that help them learn how to code. K Scott remarks that they're not just wearables that track the number of steps taken each day, and Sara says from their interviews, teenage girls couldn't care less about that. Out of the box, they have communication and friendship features, but they're open source so they can be extended to do things like let them know when they have a new Instagram follower or when their mom is on the way. There will be code snippets available to allow them to get started by copy / paste, then to share code they've writing. There will be a repository on GitHub for sharing and collaboration.</li>      <li>(05:06) K Scott asks how they decided on this platform. Sara talks about how they were inspired by Minecraft, and how they saw young people learning Java so they could write their own mods. They talked to over 100 girls, and learned that some of their initial assumptions were horribly wrong. </li>      <li>(05:55) Jon asks what was horribly wrong about their assumptions, and Sara says that just having jewelry change color to match their clothes wasn't that exciting to them - they're really interested in their friends and friend groups. You configure them to react to your friends and friend groups.</li>   </ul>    <li>Hardware Specifics</li>    <ul>     <li>(08:00) Kevin asks what it's like from a coding perspective. Sara says it's based on Arduino, so you can use the Arduino library on the bracelet to control the Bluetooth, microprocessor, LEDs and motor. George says the code for the predefined APIs will be available so girls can consult the existing code to see how things were built.</li>      <li>(08:50) K Scott asks if Bluetooth is used to detect nearby friends. Sara explains that it's a mesh Bluetooth network (something they've patented) that allows the bracelets to work without requiring their phones with them.&#160; </li>      <li>(09:15) Scott asks why they didn't use RFID instead of Bluetooth. Sara explains that RFID only works for a few inches, whereas Bluetooth gives them 30 to 50 feed.</li>      <li>(10:10) Jon asks if it's possible to extend the software, or to connect other devices via Bluetooth.</li>      <li>(11:22) Sara explains that the actual hardware is in a small disk, so it is possible that it could be applied to other use cases.</li>      <li>(12:25) K Scott asks what was the hardest part about developing it. Sara explains that hardware is so much more difficult than software, and how it's so much harder to change things later.</li>      <li>(13:28) Jon asks about the power and battery life. Sara explains the bracelet stand that can charge via USB charger and says they're still figuring out the battery life. </li>      <li>(14:32) Scott says they should build in kinetic charging and and asks about adding in sensors. Sara says that for size and cost constraints they decided to leave out sensors.</li>      <li>(15:35) Scott asks if they're 3D printing them themselves, or working with sweatshops in New Jersey. Sara says they're working with PCH and will be manufacturing in China for production, but they're currently working with local manufacturers for small runs.</li>      <li>(16:54) Jon asks what hardware is onboard. Sara runs down the list: a microprocessor / Bluetooth unit that's 4mm square, a motor, 4 LEDs, and a button and a battery. George says that the button can be used for a lot of things, including morse code or other codes they come up with. </li>   </ul>    <li>Cost, Funding and Kickstarter</li>    <ul>     <li>(18:59) Jon asks how much they'll cost. Sara says they're shooting for $60 but it will vary based on a lot of factors. They targeted $60 as it's the cost of a video game.</li>      <li>(19:58) Scott has another product suggestion: a backpack locator that shows hot / cold on the LEDs.</li>      <li>(20:19) Kevin asks about how they got started from a funding perspective. Sara talks about the funding history and hardware projects are more costly.</li>      <li>(21:26) Jon says Jewelbots sounds like something he'd see on Kickstarter. Sara says that they're planning to launch a Kickstarter soon, but they want to get the Jewelbot cost figured out first. There's the obligatory discussion of Kickstarter successes and failures. Scott says that the companies that already have their production pipeline figured out before launching are a lot more successful than vague &quot;I have a dream&quot; Kickstarters. Sara says they've also heard that you really need to have your costs figured out before launching a Kickstarter.</li>   </ul>    <li>The First Rule of Introducing Girls To Coding: Don't Call It Coding</li>    <ul>     <li>(24:50) Kevin asks if there are concerns that the Arduino IDE may be too low level, and if they might make an easier onramp. Sara says they don't think they'll convert every young girl into a coder, but they'll help a lot of them to look at code in a way they haven't before. One important thing they've learned is not to call it coding as that scares a lot of people off. Sara says that the opposite of maker is not girly - they want to make being a maker accessible. So if a small percentage actually become coders but the rest just become more comfortable with the idea of coding and engineering, they'll have accomplished their goal. Sara talks about Super Awesome Sylvia - a 13 year old girl who does all kinds of cool things with Arduinos.</li>   </ul>    <li>Getting Started With Hardware... And Just How Hard Is Hardware, Anyway?</li>    <ul>     <li>(27:22) Kevin asks how Sara made the jump from software to hardware. Sara talks about her introduction by Emily Rose (@nexxylove) at Node Dublin 2012 with a bullfighting drone and an out of control fog machine, and she was hooked on the spot. She started with getting LEDs to light up - the hardware equivalent of Hello World - and went from there.</li>      <li>(29:30) Scott talks about how much more you have to think about with hardware as compared to software, and how it's probably a good exercise for software developers to think differently about how they write their code. George talks about how he's new to hardware, and how power drain and battery life concerns made them think about things like haptic motor startup and different power consumption for different color LEDs.</li>   </ul>    <li>Important Questions In Random Order, e.g. Charging, Release Date, the Phone App, and Piglets</li>    <ul>     <li>(31:43) Jon asks for more info on the charging connection. Sara explains the 4 touchpoints on the charger which are used to both charge the bracelet and upload code to the device. Scott asks if they considered using Bluetooth; Sara says that they had and the Bluetooth chip allows for that, but since many of their target users use desktops they didn't want to require Bluetooth for data transfer.</li>      <li>(32:40) Jon asks if they're continuing to do user testing. Sara says that they're doing that constantly, and it's been really important.</li>      <li>(33:45) Kevin asks how soon they'll be shipping, and Sara says hoping to ship by late 2015 / early 2016.</li>      <li>(34:24) Jon asks if they're experimenting different charm designs with 3D printing. Sara says they're using injeciton molding for the charms, and that Jewelbots will ship with a default charm and band but they're interchangeable so they're expecting and encouraging people to make them their own. </li>      <li>(35:35) George talks about the phone app which allows for more of an if-this-then-that style of programming, which will be simpler.</li>      <li>(36:32) There's a question on twitter about Sara's thoughts on piglets.</li>      <li>(37:27) Jon asks for more details about the phone app. George says it's an Android and iOS app that allows you to add new friends and set up how your Jewelbot should react if you're around different friend groups. He explains a bit more about how things are stored on the bracelet, the phone app, and a central web server.</li>      <li>(39:14) K Scott asks how devices are identified so you can select your friends. George says you'll identify yourself when you set up the device and standard Bluetooth pairing handles connections. He talks about how some of the Bluetooth things they're doing use new parts of the BLE spec that nobody's done yet, so they're figuring things out.</li>      <li>(40:18) Jon asks if it's possible to do firmware updates. Sara says that the Bluetooth chip they're using allows for over the air updates, so they can distribute firmware updates to all devices from Jewelbot Central. George talks about the complications in the hardware world you don't think about in the software world - for instance, someone can decide not to take a firmware update, so you have to make sure things still work even if they don't take firmware updates.</li>      <li>(41:20) Sara says that Jewelbots will not help parents find their daughters. You'll need to manage that yourself.</li>   </ul>    <li>Important Things You Should Click On</li>    <ul>     <li>(41:43) Sara talks about the upcoming Kickstarter as well as the (now available) Quire campaign so you can be part of their growth and part of their company. </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Jewelbots (<a href="http://www.jewelbots.com/">jewelbots.com</a>, <a href="https://twitter.com/jewelbots">@jewelbots</a>)</li>    <li>Jewelbots campaign on Quire: <a title="https://quire.com/c/jewelbots" href="https://quire.com/c/jewelbots">https://quire.com/c/jewelbots</a></li>    <li>Sara J. Chipps (<a href="http://sarajchipps.com">sarajchipps.com</a>, <a href="https://twitter.com/SaraJChipps">@sarajchipps</a>)</li>    <li>George Stocker (<a title="http://georgestocker.com/" href="http://georgestocker.com/">georgestocker.com</a>, <a title="https://twitter.com/gortok" href="https://twitter.com/gortok">@gortok</a>)</li>    <li>Super Awesome Sylvia (<a href="http://sylviashow.com">sylviashow.com</a>) </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0204-Jewelbots.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 203: Rob Eisenberg on Aurelia</title>
    <link>https://herdingcode.com/herding-code-203-rob-eisenberg-on-aurelia/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-203-rob-eisenberg-on-aurelia/</guid>
    <pubDate>Wed, 08 Apr 2015 23:59:27 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Rob Eisenberg about Aurelia. Herding Code 203: Rob Eisenberg on Aurelia</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 203</strong></p>
<p>The guys talk to Rob Eisenberg about Aurelia.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0203-Rob-Eisenberg.mp3">Herding Code 203: Rob Eisenberg on Aurelia</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>[Sponsor Message]      <ul>       <li>(00:17) This episode is brought to you by the App Quality Bundle at <a href="http://buildbetter.software">http://buildbetter.software</a> </li>     </ul>   </li>    <li>Hello There      <ul>       <li>(01:15) Kevin introduces Rob. </li>        <li>(02:05) Kevin asks Rob about his Xaml platform work with Caliburn.Micro. Rob says he's transferred that work to Nigel Sampson, and it's alive and well. </li>     </ul>   </li>    <li>Comparing Aurelia with Angular      <ul>       <li>(03:22) Kevin mentions Rob's history on the Angular team and asks what's different about Aurelia. Rob says that he's focused on vanilla Javascript code and minimizing configuration and metadata. Rob says that's unique compared to most common frameworks, not just Angular. </li>        <li>(05:25) Rob also wanted to target transpiled languages so it worked well with ES6, ES5, TypeScript and Coffeescript. By comparison, Angular was pretty focused on Dart and AtScript. </li>        <li>(06:12) Jon references Rob's post comparing Angular and Aurelia code and asks about conventions. Rob describes how conventions work, how you can create your own conventions, and how you can override conventions by providing metadata (but only for overrides, not all the time). </li>        <li>(08:56) Rob describes how binding and the templating syntax work. Aurelia minimizes additional markup for binding, whereas he sees Angular syntax focused on theoretical tooling experiences that could be built, but nobody's committed to. Also, while Angular's syntax is technically valid, it doesn't work with cases like SVG. There's a secondary binding syntax to work around that, but having two syntax doesn't seem like a clean solution. </li>        <li>(12:31) Kevin asks for examples of conventions in Aurelia. Rob explains how custom elements work with EcmaScript 6 modules and exports. No metadata is required, as compared to Angular which requires specifying metadata in all cases even if you're not using them. Rob also explains custom attributes (again using a simple exported class). Naming conventions set up the mappings so no metadata is required. Value converters are yet another example - the naming convention assumes that any class ending in ValueConverter is automatically registered and configured. </li>        <li>(16:24) Jon asks if Angular's metadata requirements and verbosity are all for tooling support. Rob says yes for the HTML side, he doesn't see a reason for it on the JavaScript side. </li>        <li>(16:43) Rob says that in Angular you need to declare all directives you're using in your view models. That really bugs Rob because the implementation details in the view shouldn't be reflected in the viewmodel. That was required for lazy loading, but he sees it as a design problem and a maintenance problem. Rob says that Aurelia uses an import in the view and doesn't touch the viewmodel, using the EcmaScript 6 loader. Rob says that this design makes some conventions impossible. </li>     </ul>   </li>    <li>The Aurelia Pitch      <ul>       <li>(21:08) Scott K says he likes the class-based design in Aurelia and asks Rob for a quick pitch for Aurelia to sell it to a team. Rob talks about the clean, standards based design that allows decomposing complex screens without requiring extra configuration. It's easy to build, extend and maintain. Rob also talks about the binding syntax, and the ability to plug in other binding strategies by dropping in an adapter. The binding strategy system has been tested out with Breeze.js and Knockout, allowing you to use your existing models without requiring unnecessary dirty checks. </li>        <li>(26:42) Scott K asks how object.observe works with tranpilers. Rob says there's a polyfill that generates getter / setter pairs if object.observe isn't available. Rob explains how this works with the micro task queue, and how it allows for queued tasks to handle queued work efficiently. Rob talks about the task-queue in Aurelia, and how it can be used outside of Aurelia as well. Rather than directly observing DOM elements, the task queue allows for batching changes for efficiency. </li>     </ul>   </li>    <li>Persistance      <ul>       <li>(35:15) Kevin asks if Aurelia handles a persistence layer. Rob says that rather than building that, they've worked to make it easy to plug popular persistence libraries in. He also discusses the validation system they're working on. </li>        <li>(38:22) Jon asks if Rob's looked at PouchDb and references Herding Code 181, in which Max Thayer explained PouchDb. </li>     </ul>   </li>    <li>Why not write my own framework?      <ul>       <li>(39:40) Jon says he frequently hears people who are tired of JavaScript frameworks and decide to just write their own. Rob describes how it's easy to get started but quickly falls apart. He describes some of the gotchas he's run into in building Aurelia, with examples from aria, svg, data- attributes. Rather than writing your own framework, Rob says you should just contribute to Aurelia. </li>     </ul>   </li>    <li>SVG use      <ul>       <li>(44:40) Jon asks if Rob thinks people will use SVG. Rob says it's more about building a production-quality framework, then gives some possible usecases like graphs, mapping and custom elements. Rob says that people do all kinds of things you might not expect when they use a framework, and building a real framework requires it. Kevin says at his last job they'd started converting image sprites to SVG, and it was a pretty good use-case. </li>     </ul>   </li>    <li>React      <ul>       <li>(49:05) Kevin asks about Rob's thoughts on React. He says it's a good renderer, but it's not a framework. He and Scott K agree that React is a library, not a framework. Rob says he wrote a blog post in which a custom Aurelia element uses React as a custom renderer. The Babel transpiler allows mixing JSX with ES6 code, and this allows continuing to use Aurelia binding. In general, Rob says really smart, but if you need a framework you'll end up cobbling a bunch of things together to use it. Instead, he'd recommend using a framework like Aurelia and just pulling in React when it's required. </li>        <li>(53:22) Kevin asks if Rob's considered adding a virtual DOM to Aurelia. Rob says it's not clear that there would be an advantage in most cases. </li>     </ul>   </li>    <li>Isomorphic rendering      <ul>       <li>(54:17) Kevin brings up the other JavaScript buzzword of the day: Isomorphic rendering. Rob says Aurelia doesn't support this, he doesn't see this sticking around. Jon says he still sees a pretty clear distinction between websites and web apps, and Rob agrees, saying he wouldn't use Aurelia for websites. </li>     </ul>   </li>    <li>Questions from Twitter      <ul>       <li>(57:25) Question from Twitter (@cecilphillip): &quot;What's the rendering perf like compared to ReactJS?&quot; Rob says that React is going to be a lot faster for initial render time, whereas Aurelia is probably going to be faster for updates. It's hard to give an accurate comparison; Rob says they're mostly focused on being fast enough rather than the fastest. He says Aurelia's not slow now, but they're focusing on some upcoming performance enhancements that he's expecting big results from. </li>        <li>(1:02:09) Question from Twitter (@csharpfritz): &quot;can you talk about what lead to the choice of architecture with JSPM?&quot; Rob explains how JSPM integrates package management with module loading. Aurelia isn't directly dependent on JSPM, so you can use other package managers and loaders if you want. Jon says the one thing he wants JSPM to integrate rate limiting so he doesn't hit the GitHub rate limit; Rob says this is being addressed in a future release since most cases don't require the hitting the rate limited API. </li>     </ul>   </li>    <li>Scott K's Packaging Rant(tm)      <ul>       <li>(1:08:11) Scott K has a &quot;short rant&quot; about NPM, JSPM and all package managers in general: they all use existing config files (like gitconfig) and should be tested behind corporate firewalls and proxies. And then there's the nested package thing, which doesn't work well on Windows due to path length limits. Jon says he uses the flatten-packages package. There's a short group rant about the file path length limit on Windows. </li>     </ul>   </li>    <li>Final questions and wrapup      <ul>       <li>(1:13:40) Jon asks if there are any patterns or thoughts on server-side development for Aurelia. Rob says there are starter kits on the way, and people are using Aurelia with lots of back ends (.NET, node, MEAN, etc.). He talks about samples on the way, including a Todo app (even though he thinks Todo apps aren't useful for application frameworks). </li>        <li>(1:17:15) Kevin asks where Aurelia's at in a release cycle. Rob says it's currently in preview / alpha phase but targeting a beta around June or later. Don't go to production with it now, but get ready for the release after that. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Rob Eisenberg (<a href="http://devlicio.us/blogs/rob_eisenberg/">blog</a>, <a href="https://twitter.com/eisenbergeffect">@eisenbergeffect</a>) </li>    <li><a href="http://aurelia.io/">Aurelia.io</a> </li>    <li>Rob's post: <a href="http://eisenbergeffect.bluespire.com/aurelia-and-angular-2-code-side-by-side/#">Aurelia &amp; Angular 2.0 Code Side by Side</a> </li>    <li><a href="https://herdingcode.com/herding-code-181-couchdb-cloudant-mycouch-and-sisodb-with-max-thayer-and-daniel-wertheim/">Herding Code 181: CouchDb, Cloudant, MyCouch and SisoDb with Max Thayer and Daniel Wertheim</a> (PouchDb) </li>    <li><a href="https://herdingcode.com/herding-code-182-durandal-kickstarter-with-rob-eisenberg/">Herding Code 182: Durandal Kickstarter with Rob Eisenberg</a> </li>    <li><a href="https://herdingcode.com/herding-code-151-rob-eisenberg-on-rpgwithme-durandal-and-xaml-vs-html5-development/">Herding Code 151: Rob Eisenberg on RPGWithMe, Durandal, and XAML vs. HTML5 development</a> </li>    <li><a href="https://herdingcode.com/herding-code-104-rob-eisenberg-on-caliburn-micro/">Herding Code 104: Rob Eisenberg on Caliburn Micro</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0203-Rob-Eisenberg.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 202: Ahmet Alp Balkan on Docker</title>
    <link>https://herdingcode.com/herding-code-202-ahmet-alp-balkan-on-docker/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-202-ahmet-alp-balkan-on-docker/</guid>
    <pubDate>Wed, 11 Mar 2015 23:47:31 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Ahmet Alp Balkan about Docker, containers, building an ASP.NET 5 image for Docker, and working on the Azure Linux team at Microsoft. Herding</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 202</strong></p>
<p>The guys talk to Ahmet Alp Balkan about Docker, containers, building an ASP.NET 5 image for Docker, and working on the Azure Linux team at Microsoft.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0202-Ahmet-Alp-Balkan.mp3">Herding Code 202: Ahmet Alp Balkan on Docker</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Working on the Azure Linux team at Microsoft      <ul>       <li>(00:17) Jon introduces Ahmet and asks what it's like being on the Azure Linux team at Microsoft. Ahmet explains what his team does. Ahmet's mostly a Unix stack developer, he doesn't use Windows on a daily basis. </li>        <li>(02:20) Jon asks Ahmet if it's strange working on open source and Linux and Microsoft, and if there are a lot of legal requirements. </li>     </ul>   </li>    <li>Intro to Docker      <ul>       <li>(03:48) Jon asks Ahmet to describe how Docker works, and how it compares to traditional virtual machines. </li>        <li>(05:54) Jon asks about how the Docker works with the Linux filesystem approach. Ahmet explains namespaces in Linux and describes how namespaces provide separation between instances. One benefit is that each instance is really lightweight, so you can have hundreds of instances on one physical machine. </li>        <li>(09:47) K. Scott asks about a specific example deploying a Ruby on Rails application. Ahmet describes two options for creating a creating an image - either doing it manually or using a dockerfile. K Scott and Ahmet discuss inheritance chains for containers. </li>        <li>(13:35) Kevin asks about how inheritance works when you've got an application that relies on services in different parent containers - is there communication between them? Ahmet describes how the application files are based on diffs from each container level. Rather than modifying a running container, you should instead define and deploy a new instance. </li>        <li>(17:07) K. Scott asks how different configuration between machines is handled. </li>     </ul>   </li>    <li>Docker on Windows      <ul>       <li>(18:13) K. Scott wonders how containers will work on Windows due to the registry. Ahmet talks about how it's more difficult on Windows, since on Unix everything is a file; Jon remembers the previous interview with Kenji at Spoon about how they're virtualizing the registry with their container system. </li>        <li>(20:40) Jon points out that since Docker images run on top of a host, they're not portable between different hosts on different operating systems. </li>     </ul>   </li>    <li>ASP.NET 5 Docker image and User Mode sandboxing questions      <ul>       <li>(21:21) Jon asks Ahmet about his work on creating an ASP.NET 5 Docker image. </li>     </ul>      <ul>       <li>(23:10) Scott K. asks about the difference between Docker images and running in user mode. Ahmet explains that Docker does run in user mode, so things are kept separate due to user mode sandboxing. </li>        <li>(25:14) Kevin asks if the host operating system has visibility to the running containers. </li>        <li>(26:12) K. Scott asks if there were any technical hurdles in creating the ASP.NET 5 Docker image. Ahmet talks about how the image was built and the general process of developing with Docker instances. </li>     </ul>   </li>    <li>Getting started with Docker on Windows      <ul>       <li>(30:15) Jon asks about different ways of getting started with Docker - Boot2Docker (running on top of VirtualBox), spinning up a Docker instance on Azure, etc. </li>        <li>(31:54) Jon asks about Ahmet's work on getting the Docker client on Windows. Ahmet talks about some of the differences in Windows operating system API's, including Go language differences. </li>        <li>(36:00) Scott K. says he's excited about Docker because it sounds a lot simpler than some of the deployment issues he deals with. </li>     </ul>   </li>    <li>Docker in production and container orchestration      <ul>       <li>(37:17) Kevin says he's heard that running Docker in production is more difficult than running it in development. Ahmet talks about some of the orchestration efforts that are underway, and talks about container linking and the datacenter operating system approach. </li>        <li>(43:14) Jon asks about Mesos. Ahmet describes what Mesosphere is doing and how it relates to orchestration. </li>        <li>(44:50) Jon asks if Azure orchestration will be similar. Ahmet says they want to play really well with the other schedulers out there. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Ahmet Alp Balkan (<a href="https://twitter.com/ahmetalpbalkan">@ahmetalpbalkan</a>, <a title="https://ahmetalpbalkan.com/" href="https://ahmetalpbalkan.com/">https://ahmetalpbalkan.com/</a>) </li>    <li><a href="https://www.docker.com/">Docker</a> </li>    <li><a href="https://msopentech.com/blog/2014/11/07/creating-asp-net-vnext-docker-container-using-mono-2/">Creating an ASP.NET vNext Docker Container using Mono</a> </li>    <li><a href="https://registry.hub.docker.com/u/microsoft/aspnet/">ASP.NET 5 Preview Docker Image</a> </li>    <li><a href="http://azure.microsoft.com/blog/2014/11/18/docker-cli-for-windows-clients/">Docker CLI for Windows Clients</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0202-Ahmet-Alp-Balkan.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 201: Kenji Obata on Spoon, application virtualization, containers, and flying little airplanes</title>
    <link>https://herdingcode.com/herding-code-201-kenji-obata-on-spoon-application-virtualization-containers-and-flying-little-airplanes/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-201-kenji-obata-on-spoon-application-virtualization-containers-and-flying-little-airplanes/</guid>
    <pubDate>Tue, 23 Dec 2014 22:30:53 GMT</pubDate>
    <description><![CDATA[<p>Jon meets Kenji and Trevor at a small airfield in San Diego to talk about Spoon, an application containierization and streaming platform for Windows. They discuss different virt</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 201</strong></p>
<p>Jon meets Kenji and Trevor at a small airfield in San Diego to talk about Spoon, an application containierization and streaming platform for Windows. They discuss different virtual machine approaches, Spoon's features, the container movement, and flying airplanes.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0201-Kenji-Obata.mp3">Herding Code 201: Kenji Obata on Spoon, application virtualization, containers, and flying little airplanes</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Application virtualization and Xenocode's origins </li>    <ul>     <li>(00:17) Jon says hi to Kenji and describes his first interaction with Kenji - a blog post he wrote in 2007 titled &quot;We should be virtualizing Applications, not Machines&quot; and Kenji's response saying that's exactly what they were doing at Xenocode. Kenji describes application virtualization and lists some of the vendors working in that space. </li>      <li>(1:51) Jon asks about the spectrum of virtualization - starting with virtualizing the entire machine and file system and dialing back. Kenji describes how Xenocode started with a solution that would allow for deploying .NET applications without requiring a separate .NET framework installation. This had minimal virtualization - just enough to virtualize the .NET framework. </li>      <li>(06:07) Kenji describes the work to move from virtualizing the .NET framework to supporting application virtualization for any arbitrary Windows application, culminating with virtualizing Office. </li>   </ul>    <li>Moving from application virtualization to application streaming</li>    <ul>     <li>(08:24) After solving virtualization for any Windows application, Xenocode moved on to tackling application delivery - solving long downloads, installation, and application conflicts. They also wanted to do this all over the web, which was the genesis of Spoon. This had a lot of appeal to business users rather than just coders, so they rebranded from Xenocode to Spoon. </li>      <li>(11:15) Jon asks about application streaming with the example of Office Click-to-Run. Kenji discusses Click Once and how that relates to MSI installers. While some application streaming solutions solve the problem of &quot;click button, run application&quot; they are still installing on the computer so you hit problems with conflicts between applications. </li>      <li>(13:20) Spoon applications are portable because they're not installed on the local machine. Kenji and Jon discuss how installing an using an application start changing the state of the machine in many places outside of the application directory - registry, user profile, etc. </li>      <li>(14:30) Kenji describes how many of their enterprise customers have complex legacy applications which blend several technologies and don't always follow best practices. </li>   </ul>    <li>Docker and containers</li>    <ul>     <li>(15:35) Kenji talks about how they've grown from looking at the smaller, targeted problem of virtualizing and deploying a single application to a holistic view of containers as a fundamental part of the development and deployment process. </li>      <li>(16:30) Kenji says that the excitement around Docker has got the community thinking more about application virtualization. Jon asks Kenji to explain how Docker-style virtualization is different from traditional virtual machine virtualization. Kenji explains how Docker was originally built on Linux lxc in which the kernel can segregate itself into several namespaces. Jon asks how it relates to file system virtualization, and Kenji says that since in Linux there's an &quot;everything is a file&quot; philosophy, it's easier to segregate things this way. </li>      <li>(18:10) Kenji says that there's really no virtualization engine in Docker, it's more of a set of scripting languages around Linux features. Kenji says that perhaps Docker's biggest contribution is the term &quot;container&quot; since it's more consumer-friendly and makes it more obvious that containerized applications are portable. </li>      <li>(19:55) Jon says that his experience with Spoon is that it felt like git for virtual machines. Kenji says that Docker actually uses git for storage. He explains how the storage needs of application virtualization lend themselves to git-like storage. </li>      <li>(21:44) Kenji says that containers on Windows are more difficult because there isn't an lxc feature in the kernel. Fortunately, Spoon already has a vm engine that can provide that. </li>   </ul>    <li>Advantages to running in user mode</li>    <ul>     <li>(22:12) Kenji mentions that Spoon is running in user mode rather than kernel mode, and explains why it's important to segregate and run child systems in user mode without any need for kernel access. Users don't need any special privileges to install Spoon applications, and even if there are security issue in the virtualized applications, they're always just running as an unprivileged user the host operating system. </li>   </ul>    <li>Getting started with Spoon</li>    <ul>     <li>(24:10) Jon talks about the user experience on Spoon.net - quick install with no permission prompts, and a console window pops up. </li>      <li>(25:24) Kenji points out that because Spoon started with virtualizing desktop applications, the Spoon container approach works well with any Windows application, including GUI applications. </li>   </ul>    <li>Virtual networking features</li>    <ul>     <li>(26:12) Jon asks how he can add add to a Spoon VM once he's created it. Kenji points out one approach by spinning up another VM and connecting them using Spoon's virtualized network feature. He talks about how you can use the virtual network features to point your application with multiple VM's all using virtualized networking and the virtual DNS service. </li>      <li>(29:20) Jon talks about how virtual networking on other systems like Hyper-V can be problematic because it's messing with the host operating system's network adapters and networking configuration. </li>   </ul>    <li>Spinning up multi-VM environments</li>    <ul>     <li>(30:28) Jon says that all of these features sound really useful for testing, because he can spin up an entire environment, test it all, and delete it, all from a script. Kenji says they've put a lot of focus into those scenarios, and since Spoon VM's are so lightweight that you can spin up 20 or 30 VM's on a dev machine. He talks about a customer that has about 20 servers in their test environment and spins them all up for tests on a single host. </li>   </ul>    <li>Selenium support and legacy Windows features</li>    <ul>     <li>(32:42) Kenji says they have first class Selenium test grid support, allowing web developers to run automated web tests against a wide variety of operating systems and browsers. Jon asks how this works IE versions are tied to versions of Windows. Kenji talks about the Windows version support they've built into Spoon, allowing a Spoon host on Windows 8 to run every IE version back to IE6. </li>      <li>(34:37) Kenji talks about Windows version support and stacks and conditional layer support in Spoon to allow wiring in complex emulation behavior so you can deliver one image that will run on a variety of Windows hosts. </li>   </ul>    <li>Working with images and state</li>    <ul>     <li>(35:44) Jon asks about how the &quot;spoon run dotnet,jdk,node,nginx&quot; support works, and Kenji says you can use that to compose an arbitrary number of base images. </li>      <li>(36:36) Kenji says that they heard a lot of customers were bringing in git support to build a project that's hosted in git, but they didn't really want it in the image. They added another &quot;using&quot; primitive to allow you to use support from an image without adding it to the base VM. </li>      <li>(37:53) Jon asks how to add features to the Spoon VM after it's been created, in the case that he really does want them there. Kenji says that I can just save the container's state as an image, then build another container on top of that image. Images are static, containers are not. </li>      <li>(39:01) Kenji talks about the state abstraction, allowing you to continue from any saved state id. These move between different computers, which is helpful for testing and parallelization. </li>   </ul>    <li>The Spoon.net hub and what you can do for free</li>    <ul>     <li>(41:00) Kenji mentions the Spoon.net hub, which is free to use for public use - similar to GitHub. Jon asks about what's available for free use, and Kenji says Spoon.net use is unlimited (within reason). </li>      <li>(42:01) Kenji explains how their previous version required their Spoon Studio tool to configure applications, similar to App-V sequencing. Things are simplified now with Spoon - you just grab a clean image, install software on it using the standard installers, and commit the image and you're done. </li>      <li>(44:04) Kenji highlights the advantage of having the clean image readily available, so you can easily get a clean Windows install to try or test software - just by typing &quot;spoon run clean&quot;. </li>   </ul>    <li>Trying things with &quot;spoon try&quot;</li>    <ul>     <li>(45:13) Jon says he likes to use VM's to get a clean machine state, and also to be&#160; try installing some software without risk. Kenji talks about the &quot;spoon try&quot; command, and explains how try automatically wipes all your state when you're done (whereas spoon run maintains state). </li>   </ul>    <li>Deployment options</li>    <ul>     <li>(47:38) Jon asks how IT managers roll out Spoon solutions to their users. Kenji says they provide a set of tools to integrate with existing deployment models, including support for desktop icon registration, scripting, and the web interface to allow launching from intranets. </li>   </ul>    <li>Size and performance impact</li>    <ul>     <li>(49:00) Jon asks about the size of a Spoon VM. Kenji says it's essentially just the size of the installed software and the state, so it's pretty minimal. Storage is delta-based, so it's small. The Spoon database includes de-duplication to allow for frequently saving state without bloat. </li>      <li>(51:01) Jon asks about the performance impact due to virtualizing everything. Kenji says that since the VM's are so lightweight, it's very minimal. He gives examples of high-performance users, including AutoCAD and video game developers. </li>   </ul>    <li>Azure RemoteApp support</li>    <ul>     <li>(52:29) Jon asks Kenji about something he saw on the site mentioning that Azure support was coming soon. Kenji gives us an exclusive scoop on the upcoming RemoteApp support. This allows you to create a single base VHD on Azure with just Spoon installed on it, then use Spoon's support to host any application via RemoteApp. He says it's great to be able to use RemoteApp support when he's on his Mac to run any Windows applications he needs. </li>      <li>(56:53) Jon recommends for listeners to go to Spoon.net and try it in a few seconds for free. </li>   </ul>    <li>Flying little airplanes</li>    <ul>     <li>(57:21) Jon notes that they're recording the podcast at an airfield and asks Kenji and Trevor about how they got into flying. Jon notes how high-tech the plane controls are and asks how it compares to Microsoft Flight Simulator. Kenji talks about the excitement and terror of his first takeoff. </li>      <li>(1:01:29) Kenji says that an easy way to give flying a try is to contact a flight school at your local airfield and set up an introductory flight for about $100 - $150 to give it a try. </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li><a href="https://spoon.net/">Spoon.net</a> (<a href="https://twitter.com/spoonapps">@spoonapps</a>) </li>    <li>Kenji Obata (<a href="http://kenj.io">http://kenj.io</a>, <a href="https://twitter.com/virtualkenji/">@virtualkenji</a>) </li>    <li>Jon's post: <a href="http://weblogs.asp.net/jongalloway/we-should-be-virtualizing-applications-not-machines">We should be virtualizing Applications, not Machines</a> </li>    <li>Joel Spolsky: <a href="http://www.joelonsoftware.com/articles/PleaseLinker.html">Please Sir May I Have a Linker</a> </li>    <li><a href="http://blog.spoon.net/bring-apps-to-azure-remoteapps-with-containers/">Ship Your Apps to Azure RemoteApp with Containers</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0201-Kenji-Obata.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 200: io.js, Angular angst, K Scott&#x27;s new Band, Kickstarters, Containers and Old School Elite Women Coders</title>
    <link>https://herdingcode.com/herding-code-200-io-js-angular-angst-k-scotts-new-band-kickstarters-containers-and-old-school-elite-women-coders/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-200-io-js-angular-angst-k-scotts-new-band-kickstarters-containers-and-old-school-elite-women-coders/</guid>
    <pubDate>Sat, 20 Dec 2014 00:58:16 GMT</pubDate>
    <description><![CDATA[<p>The guys talk about the Node / iojs fork, Angular 2, K Scott&apos;s new Microsoft Band and other wearables, Kickstarter successes and failures, container technologies like Docker, an</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 200</strong></p>
<p>The guys talk about the Node / iojs fork, Angular 2, K Scott's new Microsoft Band and other wearables, Kickstarter successes and failures, container technologies like Docker, and some recent articles about women heroes of coding.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0200-Discussion.mp3">Herding Code 200: io.js, Angular angst, K Scott's new Band, Kickstarters, Containers and Old School Elite Women Coders</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>The Node / io.js fork      <ul>       <li>(00:41) Jon asks Kevin what's going on with the io.js fork. Kevin says the fork is due to the Node team's slow release cycle. Jon asks what technical things people are looking for, and whether io.js code is supposed to be compatible with Node code. Scott K lists some of the features planned for Node 0.12. There's some general discussion about what this means long-term and whether this will be a temporary or permanent fork. </li>     </ul>   </li>    <li>Angular angst      <ul>       <li>(06:21) Jon asks K Scott what is going on in the Angular world. K Scott summarizes why people were bent out of shape over the Angular 2 announcements. </li>        <li>(07:30) Jon asks what this all means from Angular developers - what's actually changed? K Scott discusses how the team isn't worrying about migration from Angular 1.x. He mentions AtScript and the guys discuss how it relates to TypeScript. Kevin asks if Google is the new Microsoft, in that everything has to be their way. K Scott says it's feeling like MEF composition. </li>        <li>(12:09) Scott K says he thinks the radical changes are to support components and dart. K Scott says he also sees that runtime introspection looks like an important goal. </li>        <li>(13:30) Scott K talks about the migration plans and the announcements that 1.x won't be getting any new features. Kevin says this puts Angular developers in a tough spot, because 2.0 isn't going to be out for a while and 1.3 is the final release in that branch. Scott K says he's stopped paying much attention to it for now while waiting for things to shake out. There's a discussion of Durandal now that Rob's left the Angular project. </li>     </ul>   </li>    <li>Wearables and the Microsoft Band      <ul>       <li>(17:30) Jon asks K Scott about his new Microsoft Band. K Scott says he likes the notifications and sleep notifications. Jon asks if the sleep notifications are actionable or just telling you things you already know; K Scott says he's notices that poor sleep for three nights in a row affect his communication skills. </li>        <li>(20:25) Jon says he hasn't been able to pull the trigger on Pebble, even on super sale, but the Band looks really interesting. The voice input for Cortana looks neat, too. </li>     </ul>   </li>    <li>Windows Phone interlude      <ul>       <li>(21:55) K Scott says he helped a friend pick out a Windows Phone and was impressed by the inexpensive models from Blu. Jon talks about how all the new Windows Phone models are nice inexpensive phones rather than flagship models. Jon mentions the app coverage and says that all the big apps seem to be available, the only ones he misses is an app from his bank to deposit checks. </li>        <li>(24:30) Kevin says it seems like Windows Phone is swimming upstream on apps, mentioning recent articles from Tom Warren and Ed Bott. </li>     </ul>   </li>    <li>Wrap up on wearables      <ul>       <li>(25:55) Jon asks Kevin what he's thinking on the Apple Watch. He says he's intrigued and wants to play with one to see. </li>        <li>(26:55) Scott K says there's not much you can really do on a tiny screen, so consuming content on a watch is silly. Jon says that he sees room for things like two-way communication and remotely controlling the desktop. Scott K says his Pebble is kind of like a second screen for his phone. He says there isn't enough horsepower on a watch for voice recognition, but the other guys all jump in to say that the watches use Bluetooth to work with the voice recognition on their phones and it all works pretty well. </li>     </ul>   </li>    <li>Kickstarter      <ul>       <li>(32:15) Jon says he's backed ten projects, but only three of them really turned out well: gourmet marshmallows, a web-based font creation program called Prototypo, and a file manager called OneCommander. Scott's had good success because he does some due diligence on the shipping background for the creators. </li>        <li>(35:15) Scott says he avoids tech projects on Kickstarter because he knows geeks, and he knows the overestimate what they can do: they all think they're physicists, nutritionists, lawyers... they think they know everything, and they don't anticipate the cost and effort to go from prototype to shipping product. Jon says he's seen two software projects that were flawlessly executed - BitCommander (since renamed to OneCommander) and Prototypo. In both cases the creators were very communicative throughout the project. </li>        <li>(39:55) Kevin's never Kickstarted anything because he doesn't want more things. Jon says he usually backs things because he wants to support someone doing something cool, not because he wants a project. He says he frequently sees popular new technology Kickstarters that are recreating something he can find already shipping on Amazon for a lot less. Kevin says he finds the whole Kickstarter thing is completely fascinating, and he's amazed that it seems to work. Scott K talks about how many game manufacturers use it to figure out how many to produce rather than to start figuring out how to produce a project. Jon mentions a Sony epaper watch that was Kickstarted just to gage interest and says that the goal of Kickstarter is to actually graduate to shipping product and lists a few; Kevin talks about the Veronica Mars movie. </li>     </ul>   </li>    <li>Containers      <ul>       <li>(47:20) Jon talks about Docker and Rocket and asks if the guys are using them yet. Kevin says that poor OSX support (requiring VirtualBox Boot2Docker) has cooled the interest in Docker in his shop. </li>        <li>(48:55) Jon says he thinks the container approach seems like a nice middle ground between running a native process and a full virtual machine. He says that he'd like to talk to the Spoon team soon to hear about their Windows native container system. </li>        <li>(51:15) Scott K talks about the Mesos system - a distributed systems kernel. Jon searches around and finds it's an Apache project. The idea is that you can move your Linux applications over to it, then scale across commodity hardware. Jon worries about the latency but figures eventually you overcome latency with processing power if it's distributed right. </li>     </ul>   </li>    <li>Women In Computers, Old      <ul>       <li>(55:05) Scott mentions an article about Margaret Hamilton, the software engineer who wrote the code for the Apollo Eleven and came up with the term hardware engineer. Scott says that the Apollo source code is up on Google Code. </li>        <li>(56:45 )Jon talks about an article he saw about the programmers who wrote code for the Colossus in World War Two, and they were all women. Kevin says he saw an article about how until the early '80's the distribution was even until there was an advertising campaign that was geared to boys, and things changes after that. </li>        <li>(58:20) Scott talks about an article he read about The Sotry of Mel, who was working so close to the metal that he optimized for where the memory would be located on the physical memory drum. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="https://github.com/iojs/io.js">io.js</a> </li>    <li>Rob Eisenberg: <a href="http://eisenbergeffect.bluespire.com/leaving-angular/">Leaving Angular</a> </li>    <li><a href="https://www.kickstarter.com/projects/599698621/prototypo-streamlining-font-creation">Prototypo</a> </li>    <li><a href="http://onecommander.com/">OneCommander</a> </li>    <li>Tom Warren: <a href="http://www.theverge.com/2014/12/11/7377021/ive-given-up-on-windows-phone">I've given up on Windows Phone</a> </li>    <li><a href="https://spoon.net/">Spoon</a> </li>    <li><a href="http://mesos.apache.org/">Mesos</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)">Margaret Hamilton</a> </li>    <li><a href="http://www.ibiblio.org/apollo/links.html">Apollo source code</a> </li>    <li><a href="http://www.npr.org/blogs/money/2014/10/21/357629765/when-women-stopped-coding">When Women Stopped Coding</a> </li>    <li><a href="http://www.catb.org/jargon/html/story-of-mel.html">The Story of Mel</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0200-Discussion.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 199: Rob Reynolds on the Chocolatey Kickstarter, Chocolatey growth and OneGet</title>
    <link>https://herdingcode.com/herding-code-199-rob-reynolds-on-the-chocolatey-kickstarter-chocolatey-growth-and-oneget/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-199-rob-reynolds-on-the-chocolatey-kickstarter-chocolatey-growth-and-oneget/</guid>
    <pubDate>Sat, 08 Nov 2014 00:59:14 GMT</pubDate>
    <description><![CDATA[<p>Jon talks to Rob Reynolds about how Chocolatey has grown over the past few years, how OneGet fits in, and the Chocolatey Kickstarter. Herding Code 199: Rob Re</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 199</strong></p>
<p>Jon talks to Rob Reynolds about how Chocolatey has grown over the past few years, how OneGet fits in, and the Chocolatey Kickstarter.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0199-Rob-Reynolds.mp3">Herding Code 199: Rob Reynolds on the Chocolatey Kickstarter, Chocolatey growth and OneGet</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>The state of the Chocolatey      <ul>       <li>(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. </li>        <li>(02:10) Rob talks about how Chocolatey has grown in the past 3 1/2 years. </li>     </ul>   </li>    <li>Package Moderation      <ul>       <li>(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. </li>        <li>(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. </li>        <li>(07:25) Rob talks about the checksumming features they've added. </li>     </ul>   </li>    <li>Chocolatey Pro      <ul>       <li>(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. </li>        <li>(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. </li>        <li>(14:50) Rob explains how the pro version includes additional virus checking via Virus Total. </li>        <li>(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. </li>     </ul>   </li>    <li>OneGet      <ul>       <li>(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. </li>        <li>(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. </li>     </ul>   </li>    <li>Windows Store      <ul>       <li>(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. </li>     </ul>   </li>    <li>Kickstarter Benefits      <ul>       <li>(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 for business accounts, so by backing the Kickstarter you're locking in the price. </li>        <li>(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. </li>     </ul>   </li>    <li>Wrap-up      <ul>       <li>(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. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <ul>     <li><a href="http://chocolatey.org/">Chocolatey.org</a> </li>      <li><a href="http://ferventcoder.com/">Rob Reynolds </a><a href="http://twitter.com/#!/ferventcoder">@ferventcoder</a> </li>      <li><a title="http://bit.ly/chocolateykickstarter" href="http://bit.ly/chocolateykickstarter">http://bit.ly/chocolateykickstarter</a> </li>   </ul> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0199-Rob-Reynolds.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 198: Damian Edwards on ASP.NET vNext, Tag Helpers and SignalR</title>
    <link>https://herdingcode.com/herding-code-198-damian-edwards-on-asp-net-vnext-tag-helpers-and-signalr/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-198-damian-edwards-on-asp-net-vnext-tag-helpers-and-signalr/</guid>
    <pubDate>Tue, 14 Oct 2014 21:26:13 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to ASP.NET team member Damian Edwards about ASP.NET vNext (the next version of ASP.NET), Tag Helpers, and what&apos;s new with SignalR. Herding Code</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 198</strong></p>
<p>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.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0198-Damian-Edwards.mp3">Herding Code 198: Damian Edwards on ASP.NET vNext, Tag Helpers and SignalR</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello. What is ASP.NET vNext? </li>    <ul>     <li>(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. </li>      <li>(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. </li>   </ul>    <li>Cross platform</li>    <ul>     <li>(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. </li>   </ul>    <li>Core CLR</li>    <ul>     <li>(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. </li>      <li>(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 &quot;cloud optimized&quot; 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. </li>      <li>(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. </li>      <li>(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. </li>      <li>(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. </li>   </ul>    <li>How does this affect existing apps? What changes?</li>    <ul>     <li>(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. </li>   </ul>    <li>Development experience</li>    <ul>     <li>(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). </li>      <li>(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. </li>   </ul>    <li>Questions from Twitter</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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. </li>      <li>(28:55) Steen R. asks when we'll see cross-platform Visual Studio. Damian says there are no plans he's privy to. </li>      <li>(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. </li>      <li>(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. </li>   </ul>    <li>Portable areas?</li>    <ul>     <li>(33:49) K Scott asks about portable areas. Damian says he's not aware of something like that for ASP.NET MVC. </li>   </ul>    <li>Tag Helpers</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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. </li>   </ul>    <li>SignalR</li>    <ul>     <li>(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. </li>      <li>(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. </li>   </ul>    <li>Wrap Up     <ul>       <li>(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. </li>        <li>(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. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Damian Edwards (<a href="http://damianedwards.wordpress.com/">blog</a> <a href="https://twitter.com/damianedwards">@damianedwards</a>)</li>    <li><a href="http://www.asp.net/vnext">ASP.NET vNext</a></li>    <li><a href="http://aka.ms/aspnet-vnext-standup">ASP.NET vNext Weekly Community Standup</a></li>    <li><a href="https://github.com/aspnet/home">ASP.NET vNext on GitHub</a></li>    <li><a href="https://github.com/aspnet/mvc/tree/TagHelpersFeature">Tag Helpers feature branch</a></li>    <li><a href="http://www.asp.net/signalr">ASP.NET SignalR</a></li>    <li><a href="https://github.com/SignalR/SignalR">SignalR on GitHub</a></li>    <li><a href="https://github.com/SignalR/SignalR/releases">SignalR release notes</a></li>    <li><a href="https://herdingcode.com/herding-code-145-ndc-cage-match-with-rob-conery-node-jssocket-io-and-damian-edwards-signalr/">Herding Code 145 - NDC Cage Match with Rob Conery (node.js/socket.io) and Damian Edwards (SignalR)</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0198-Damian-Edwards.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 197: Summer Stories, C# 6, Vim and Atom, Terrible Keyboards, Poorly Aged Hipster Code, React and the Apple Watch</title>
    <link>https://herdingcode.com/herding-code-197-summer-stories-c-6-vim-and-atom-terrible-keyboards-poorly-aged-hipster-code-react-and-the-apple-watch/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-197-summer-stories-c-6-vim-and-atom-terrible-keyboards-poorly-aged-hipster-code-react-and-the-apple-watch/</guid>
    <pubDate>Mon, 29 Sep 2014 23:11:52 GMT</pubDate>
    <description><![CDATA[<p>It&apos;s time for a discussion show! Herding Code 197 - Summer Stories, C# 6, Vim and Atom, Terrible Keyboards, Poorly Aged Hipster Code, React and the Apple Watc</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 197</strong></p>
<p>It's time for a discussion show!</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0197-Discussion.mp3">Herding Code 197 - Summer Stories, C# 6, Vim and Atom, Terrible Keyboards, Poorly Aged Hipster Code, React and the Apple Watch</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>(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.</li>    <li>(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 </li>    <li>(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. </li>    <li>(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 &quot;using static&quot; feature to invoke static members without needing to use the type name. </li>    <li>(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. </li>    <li>(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. </li>    <li>(12:27) K Scott asks what software Kevin is using: OSX and MacVim. </li>    <li>(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. </li>    <li>(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. </li>    <li>(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. </li>    <li>(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. </li>    <li>(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 &quot;craftstmanned up&quot; 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 </li>    <li>(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. </li>    <li>Lightning round </li>    <li>(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. </li>    <li>(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.</li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="https://github.com/google/traceur-compiler/blob/master/README.md">Traceur compiler</a> </li>    <li><a href="http://odetocode.com/blogs/scott/archive/2014/08/04/c-6-0-features-part-i-property-initializers.aspx">C# 6.0 Features Part I : Property Initializers</a></li>    <li><a href="http://odetocode.com/blogs/scott/archive/2014/08/14/c-6-0-features-part-ii-primary-constructors.aspx">C# 6.0 Features Part II : Primary Constructors</a></li>    <li><a href="http://odetocode.com/blogs/scott/archive/2014/09/15/c-6-0-features-part-3-declaration-expressions.aspx">C# 6.0 Features Part 3: Declaration Expressions</a></li>    <li><a title="http://odetocode.com/blogs/scott/archive/2014/07/31/the-features-of-es6-part-1-let.aspx" href="http://odetocode.com/blogs/scott/archive/2014/07/31/the-features-of-es6-part-1-let.aspx">The Features of ES6 Part 1: Let</a></li>    <li>     <div align="left"><a href="http://weblogs.asp.net/jongalloway/two-free-video-courses-intro-to-asp-net-mvc-and-responsive-ui-with-bootstrap">Two free video courses: Intro to ASP.NET MVC and Responsive UI with Bootstrap</a></div>   </li>    <li><a href="http://code.google.com/p/touchfreeze/">touchfreeze</a> </li>    <li><a title="http://www.castleproject.org/projects/monorail/" href="http://www.castleproject.org/projects/monorail/">MonoRail</a> </li>    <li><a href="http://facebook.github.io/react/">React</a> </li> </ul>  <p>Sponsor</p>  <p>This show is brought to you by Runscope - find out more at <a href="http://runscope.com/herdingcode">http://runscope.com/herdingcode</a> </p>  <p><a href="http://runscope.com/herdingcode"><img style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; border-bottom-width: 0px; border-top-width: 0px" src="https://www.runscope.com/static/img/press/logo-runscope-wordmark-white.png" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0197-Discussion.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 196: Matias Niemela on ngAnimate</title>
    <link>https://herdingcode.com/herding-code-196-matias-niemela-on-nganimate/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-196-matias-niemela-on-nganimate/</guid>
    <pubDate>Fri, 12 Sep 2014 19:05:56 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to AngularJS committer Matias Niemela about AngularJS and Angular animations with ngAnimate. Herding Code 196: Matias Niemela on ngAnimate [audi</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 196</strong></p>
<p>The guys talk to AngularJS committer Matias Niemela about AngularJS and Angular animations with ngAnimate.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0196-Matias-Niemela.mp3">Herding Code 196: Matias Niemela on ngAnimate</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello. How'd you get started with AngularJS and ngAnimate?      <ul>       <li>(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. </li>     </ul>   </li>    <li>Dart and Google Material Design      <ul>       <li>(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. </li>        <li>(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. </li>     </ul>   </li>    <li>Animation internals</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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. </li>   </ul>    <li>Testing in JavaScript</li>    <ul>     <li>(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. </li>      <li>(14:38) Jon asks if Matias uses Javascript libraries to deal with asynchronous code. Matias says that's all handled by Angular itself. </li>   </ul>    <li>ECMAScript 6</li>    <ul>     <li>(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. </li>   </ul>    <li>Getting Started, Form Validation</li>    <ul>     <li>(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. </li>      <li>(17:38) K Scott asks about form validation. Matias talks about the work they've been doing with forms in 1.3. </li>   </ul>    <li>ECMAScript 6 and JavaScript Development</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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. </li>   </ul>    <li>More Testing</li>    <ul>     <li>(23:50) K Scott asks Matias when he became passionate about testing. He talks about how valuable tests have been to him. </li>      <li>(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. </li>   </ul>    <li>Inspiration and Design</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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). </li>   </ul>    <li>Wrap up</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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. </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Matias Niemela (<a title="http://mahemoff.com/" href="http://yearofmoo.com/">http://yearofmoo.com/</a>,&#160; <a title="https://twitter.com/mahemoff" href="https://twitter.com/yearofmoo">@yearofmoo</a>) </li>    <li><a href="https://material.angularjs.org/">Angular Material Design examples</a> </li>    <li><a href="https://github.com/google/traceur-compiler/blob/master/README.md">Traceur compiler</a> </li>    <li><a href="http://www.yearofmoo.com/2013/04/animation-in-angularjs.html">ngAnimations post series</a> (currently covers ngAnimate 1.2) </li>    <li><a href="http://www.sitepoint.com/adding-css-animations-angularjs-applications/">Adding CSS Animations to AngularJS Applications</a> (SitePoint) </li>    <li><a href="http://ngeurope.org/">ng-europe</a> (October 22-23, Paris) </li> </ul>  <p>Sponsor</p>  <p>This show is brought to you by Runscope - find out more at <a href="http://runscope.com/herdingcode">http://runscope.com/herdingcode</a> </p>  <p><a href="http://runscope.com/herdingcode"><img style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; border-bottom-width: 0px; border-top-width: 0px" src="https://www.runscope.com/static/img/press/logo-runscope-wordmark-white.png" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0196-Matias-Niemela.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 195: Michael Mahemoff on Player FM</title>
    <link>https://herdingcode.com/herding-code-195-michael-mahemoff-on-player-fm/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-195-michael-mahemoff-on-player-fm/</guid>
    <pubDate>Fri, 15 Aug 2014 20:46:15 GMT</pubDate>
    <description><![CDATA[<p>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 a</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 195</strong></p>
<p>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.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0195-Michael-Mahemoff.mp3">Herding Code 195: Michael Mahemoff on Player FM</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello. What is Player FM? </li>    <ul>     <li>(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. </li>      <li>(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. </li>   </ul>    <li>Player FM API</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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. </li>      <li>(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. </li>   </ul>    <li>Native clients for Android and iOS</li>    <ul>     <li>(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. </li>      <li>(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. </li>   </ul>    <li>Advanced podcast support with Podlove</li>    <ul>     <li>(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. </li>      <li>(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. </li>   </ul>    <li>Misc: Business plan, mobile web support and Google I/O</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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. </li>   </ul>    <li>User Experience</li>    <ul>     <li>(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. </li>      <li>(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.</li>   </ul>    <li>API Optimization</li>    <ul>     <li>(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. </li>      <li>(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. </li>      <li>(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. </li>      <li>(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. </li>   </ul>    <li>Search and Discovery</li>    <ul>     <li>(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. </li>      <li>(42:30) K Scott says he's looking forward to the recommendation features and Mike describes some of the things they're including. </li>      <li>(43:30) Mike talks about Player FM support for full text search using Elastic Search to allow for easier discovery. </li>      <li>(44:25) Kevin asks if transcripts could be included in the full text search. Mike talks about some of the standards support. </li>   </ul>    <li>Wrap Up</li>    <ul>     <li>(45:49) K Scott asks what Mike does when he's not working on Player FM. </li>      <li>(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). </li>      <li>(48:20) K Scott asks for any last words; Mike says he's happy for any questions at <a href="mailto:mike@playerfm.com">mike@playerfm.com</a>. </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Michael Mahemoff (<a title="http://mahemoff.com/" href="http://mahemoff.com/">http://mahemoff.com/</a>,&#160; <a title="https://twitter.com/mahemoff" href="https://twitter.com/mahemoff">@mahemoff</a>) </li>    <li><a href="https://player.fm/">Player FM</a> </li>    <li><a href="http://blog.player.fm/design-develop-and-distribute-player-fm-at-google-io-2014/">Design, Develop And Distribute: Player FM At Google IO Developer Sandbox</a> </li>    <li><a title="http://podlove.org/projects/" href="http://podlove.org/projects/">Podlove Projects</a> </li>    <li><a href="https://code.google.com/p/pubsubhubbub/">PubSubHubbub</a> </li>    <li><a title="http://json-ld.org/" href="http://json-ld.org/">JSON-LD</a> (JSON for Linking Data) </li>    <li><a title="http://ui-patterns.com/" href="http://ui-patterns.com/">UI Patterns</a> </li> </ul>  <p>Sponsor</p>  <p>This show is brought to you by Runscope - find out more at <a href="http://runscope.com/herdingcode">http://runscope.com/herdingcode</a> </p>  <p><a href="http://runscope.com/herdingcode"><img style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; border-bottom-width: 0px; border-top-width: 0px" src="https://www.runscope.com/static/img/press/logo-runscope-wordmark-white.png" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0195-Michael-Mahemoff.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 194: Hadi Hariri on Kotlin, Nitra, and Developing In A Decade</title>
    <link>https://herdingcode.com/herding-code-194-hadi-hariri-on-kotlin-nitra-and-developing-in-a-decade/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-194-hadi-hariri-on-kotlin-nitra-and-developing-in-a-decade/</guid>
    <pubDate>Fri, 25 Jul 2014 15:39:05 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Hadi Hariri about Kotlin, Nitra, and his NDC talk, Developing In A Decade. Herding Code 194: Hadi Hariri on Kotlin</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 194</strong></p>
<p>The guys talk to Hadi Hariri about Kotlin, Nitra, and his NDC talk, Developing In A Decade.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0194-Hadi-Hariri.mp3">Herding Code 194: Hadi Hariri on Kotlin</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello. What is Kotlin?      <ul>       <li>(01:00) K Scott asks what Kotlin is. Hadi explains it's a statically type programming language that targets the JVM and JavaScript, and that it was designed to serve the needs of the JetBrains development team: Let's create a language that a language that we can use ourselves... and if other people want to use it then, awesome. </li>        <li>(03:07) K. Scott asks about the source code. It's on Github and it's under Apache 2 license. He asks who in their right mind these days would design a closed source language *cough* Swift *cough*. </li>        <li>(03:48) Jon asks about comparisons with the Swift language. Hadi comments and says both Kotlin and Swift are kind of similar to Groovy. Jon asks why not just use Groovy then, and Hadi says that they wanted a statically typed language. </li>        <li>(05:32) K. Scott asks about the comparisons with Scala and Java. Hadi says that Kotlin is more restrictive than Scala in some cases, which they see as a benefit. They strive for 100% interoperability with Java, since they have 14 years of existing Java source code to work with. </li>        <li>(08:15) K. Scott asks about the JavaScript story. Hadi says it was bound to happen eventually, so they just did it from the source. The benefit is that you can share source code between server and client. </li>        <li>(11:44) K. Scott asks about .NET support in the roadmap. Hadi says it's not likely soon. He says there's a ton of activity on the JVM lately, and it runs everywhere, albeit with the Ask toolbar. </li>        <li>(13:31) Jon asks about running Java code on Mono and .NET using IKVM. Hadi says he's tried it on some prototypes and it works, but Scott K complains that it's really slow. </li>        <li>(14:33) Scott K. Asks about the use of inference. Hadi says one of the goals of Kotlin is to be very concise, so you very rarely need to declare types. </li>        <li>(17:43) K Scott asks if there are any libraries that JetBrains has for Kotlin. Hadi describes Kara, a web framework which makes use of strongly-typed HTML and CSS builders. Spec is a specification framework that Hadi's written. Kotlin is pretty popular for Android development, so there are a lot of Android helpers available. </li>        <li>(21:31) Jon asks about best places to get started with Kotlin. Hadi says it's very easy to get started with just the compiler, available from on the Kotlin site. For an IDE-centric experience, use IntelliJ (either the free OSS Community Edition Version or IntelliJ IDEA Ultimate). You can also use the browser-based Kotlin demo without downloading anything. </li>     </ul>   </li>    <li>Java      <ul>       <li>(23:06) Jon mentions installing Java JDK via Chocolatey, so as not to get the Ask toolbar. Hadi agrees and says that the Ask toolbar was from back in the Sun days, it's not an Oracle thing. Jon also asks about the Java browser plugin. There's a silly discussion about Java applets. </li>        <li>(26:44) Jon asks about Nitra. Hadi explains the difference between Nitra, Kotlin and MPS. MPS (Meta Programming System) is a language workbench to create new languages or extend existing ones running on the JVM. Kotlin is a separate language, but it's written in a way that makes it possible to easily create DSL's. Nitra is an open source tool built by the Nemerle team, who were hired by JetBrains. Nitra is similar to Roslyn - it's a generic tool that allows you to create a compiler for any language with support for tooling. </li>     </ul>   </li>    <li>Nitra      <ul>       <li>(30:36) Jon asks how Nitra is being used. Hadi says it's mostly used internally by JetBrains, and it's still really under development. </li>        <li>(32:45) Jon asks about the Nitra samples and Visual Studio extensions on GitHub. Hadi says you can start using them already, and that it does include Nemerle so you can start extending the with it now, but it won't provide tooling for the language you're building. </li>     </ul>   </li>    <li>Developing In A Decade      <ul>       <li>(33:38) K Scott asks about Hadi's talk at NDC called Developing in a Decade, looking ahead at technology and trends ten years from now. Hadi says he's not so much looking at how or what we'll be doing, but why we'll be doing it. He says that he sees an overemphasis on how many rounds of VC money a company gets as opposed to what they're actually doing. He's interested in things people are doing for social good, and he's concerned that we're being destructive without thinking about the effects. </li>        <li>(39:02) K Scott says that until recently when he called tech support, when he finally got to a person they could help him. Lately he's been finding that when he reaches a person, they're powerless to help him because the computers are in control. Hadi talks about how emerging technology like self driving cars will eliminate jobs. </li>        <li>(41:26) Jon ask Hadi if trends towards automation will have positive effects, such as creating content that wouldn't have previously been available or giving us more time to produce things we wouldn't have before. Hadi references Brave New World and Amusing Ourselves To Death, and says that the huge explosion of content has a negative effect. Scott K and Hadi talk about the numbing effect of news as entertainment. </li>     </ul>   </li>    <li>Parting Shot      <ul>       <li>(48:25) Hadi says &quot;I told you so&quot; about the coming unification of Web API and MVC controllers. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Hadi Hariri (<a href="http://hadihariri.com/">blog</a>, <a href="https://twitter.com/#!/hhariri">@hhariri</a>) </li>    <li><a href="http://kotlinlang.org/">Project Kotlin</a> </li>    <li><a title="http://hadihariri.com/2014/04/17/getting-started-with-kotlin-oss-project/" href="http://hadihariri.com/2014/04/17/getting-started-with-kotlin-oss-project/">Blog post: Getting Started with a Kotlin OSS Project</a> </li>    <li><a href="http://confluence.jetbrains.com/display/Kotlin/Type-safe+Groovy-style+builders">Type-safe Groovy-style builders</a> </li>    <li><a title="http://blog.jetbrains.com/blog/2014/05/27/nitra-goes-open-source/" href="http://blog.jetbrains.com/blog/2014/05/27/nitra-goes-open-source/">Blog: Nitra goes open source</a> </li>    <li><a href="http://karaframework.com/">Kara Web Framework</a> </li>    <li>NDC video: <a href="http://vimeo.com/97315946">Developing In A Decade</a> </li>    <li>Hadi's post about MVC and Web API controllers: <a href="http://hadihariri.com/2012/04/06/with-http-your-application-is-your-api/">With HTTP, your application is your API</a> </li> </ul>  <p>Sponsor</p>  <p>This show is brought to you by Runscope - find out more at <a href="http://runscope.com/herdingcode">http://runscope.com/herdingcode</a> </p>  <p><a href="http://runscope.com/herdingcode"><img style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; border-bottom-width: 0px; border-top-width: 0px" src="https://www.runscope.com/static/img/press/logo-runscope-wordmark-white.png" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0194-Hadi-Hariri.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 193: Mark Rendle on Zudio, developing with Angular and Typescript, The History of Programming, and Simple.Data</title>
    <link>https://herdingcode.com/herding-code-193-mark-rendle-on-zudio-developing-with-angular-and-typescript-the-history-of-programming-and-simple-data/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-193-mark-rendle-on-zudio-developing-with-angular-and-typescript-the-history-of-programming-and-simple-data/</guid>
    <pubDate>Mon, 07 Jul 2014 21:50:19 GMT</pubDate>
    <description><![CDATA[<p>At Techorama 2014 (Belgium), Jon corners Mark Rendle for a few minutes to talk about his new startup, Zudio, &quot;the Azure Cloud storage toolkit,&quot; his keynote on the Hist</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 193</strong></p>
<p>At Techorama 2014 (Belgium), Jon corners Mark Rendle for a few minutes to talk about his new startup, Zudio, &quot;the Azure Cloud storage toolkit,&quot; his keynote on the History of Programming, and other minutia. </p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0193-Mark-Rendle.mp3">Herding Code 193: Mark Rendle on Zudio, developing with Angular and Typescript, The History of Programming, and Simple.Data</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>History of Programming      <ul>       <li>(00:54) Jon asks Mark what the talk was about, and some of his personal favorite periods. </li>        <li>(01:53) Jon remarks that some of the joke terrible languages weren't much worse than the unintentionally terrible languages. Mark mentions Intercal, brainf*** and Malbolge as joke programming languages and IBM Cobol as the most unintentionally hilarious programming language. </li>     </ul>   </li>    <li>Zudio: The Azure Cloud Storage Toolkit      <ul>       <li>(02:55) Mark talks about how Zudio got started and where it's at. Zudio is a web based tool for managing Azure storage. It's great for a lot of users, especially PHP / Node / Java developers and in the enterprise. It's built with AngularJS and Typescript. </li>        <li>(04:37) Jon said he assumed it was just a simple table grid, but there are seem to be a lot more advanced features. Mark talks about the new enterprise model, which lets you control your user list through Azure Active Directory (which can be synchronized to on premises Active Directory), and you can assign different access rights to users and groups. There's also auditing and logging to track usage. </li>        <li>(05:29) Jon asks if he's specifically focused on storage. Mark talks about upcoming support for SQL databases, including Azure SQL, SQL VM's, ClearDB running MySQL, Oracle VM's, Postgres via VM, etc. that will show run queries and show results in a grid, list tables and views, etc. Jon compares it to phpMyAdmin, but Mark says it's for any database and deployed in the same datacenters, without you needing to spin up a web server. His stretch goal is to handle data migrations between different database systems. </li>     </ul>   </li>    <li>Angular and Typescript      <ul>       <li>(07:19) Jon says that Mark's been a fan of Angular and Typescript for a while and asks why he likes the combination so much. Mark says it feels like the data binding framework Microsoft's been trying to build since VB3. </li>        <li>(08:30) Jon asks why Typescript instead of just writing in JavaScript. Mark talks about the benefits of compile-time checking. Jon asks for some specific answers and Mark gives an example with services passed as parameters. Oh, and IntelliSense is handy, too. Mark uses DefinitelyTyped and some Bower packages that he maintains. </li>        <li>(10:24) Mark says that unlike most frameworks he's worked with, he's gotten to the end of a project using Angular and doesn't want to throw it out, so that's saying something. </li>     </ul>   </li>    <li>Simple.Web and Simple.Data      <ul>       <li>(11:33) Jon asks Mark what's going on with Simple.Web (a simple .NET web framework with attribute routing and dependency injection). Mark says that everything that had driven him to create Simple.Web has been added into ASP.NET vNext, so Simple.Web is pretty much done. </li>        <li>(14:50) Simple.Data is Mark's simple data access layer that leverages dynamic types and can work without any code changes against a lot of different databases. </li>        <li>(15:52) Jon asks why someone would use Simple.Data instead of Entity Framework. Mark explains how Simple.Data works really well in lightweight web frameworks; it's so simple you can code to it without IntelliSense. </li>        <li>(16:47) Mark is focused on updates to Simple.Data for use in Zudio, and will we working on more metadata, performance, and async support. He's looking at moving to async only and is interested in listener input on that. </li>     </ul>   </li>    <li>Wrap up      <ul>       <li>(18:13) Mark likes all the new stuff and thinks it's a good time to be a programmer. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Mark Rendle (<a href="http://blog.markrendle.net/">blog</a>, <a href="http://twitter.com/markrendle">@MarkRendle</a>) </li>    <li>Zudio </li>    <li><a title="//herdingcode.com/herding-code-106-mark-rendle-on-simple-data/" href="https://herdingcode.com/herding-code-106-mark-rendle-on-simple-data/">Herding Code 106: Mark Rendle on Simple.Data</a> </li>    <li><a href="http://vimeo.com/97541186">History of Programming (NDC recording)</a>&#160; </li>    <li>Programming languages      <ul>       <li><a title="http://esolangs.org/wiki/Malbolge" href="http://esolangs.org/wiki/Malbolge">Malbolge</a> </li>        <li><a title="http://esolangs.org/wiki/Intercal" href="http://esolangs.org/wiki/Intercal">INTERCAL</a> </li>        <li><a href="http://esolangs.org/wiki/Brainfuck">brainf***</a> </li>        <li><a href="http://en.wikipedia.org/wiki/COBOL">COBOL</a> </li>     </ul>   </li>    <li><a href="https://github.com/markrendle/Simple.Web">Simple.Web</a> </li>    <li><a href="https://github.com/markrendle/Simple.Data">Simple.Data</a> </li> </ul>  <p>Sponsor</p>  <p>This show is brought to you by Runscope - find out more at <a href="http://runscope.com/herdingcode">http://runscope.com/herdingcode</a> </p>  <p><a href="http://runscope.com/herdingcode"><img style="max-width: 100%; border: 0px; background-color:white;" src="https://herdingcode.com/wp-content/uploads/ads/logo-runscope-wordmark-white.png" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0193-Mark-Rendle.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 192: Jackson Harper on the CodeReview iOS app</title>
    <link>https://herdingcode.com/herding-code-192-jackson-harper-on-the-codereview-ios-app/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-192-jackson-harper-on-the-codereview-ios-app/</guid>
    <pubDate>Mon, 16 Jun 2014 23:15:46 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Jackson Harper about CodeReview, his iPad application for reviewing GitHub pull requests. As Jackson describes the episode on Twitter: &quot;...hear me talk abo</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 192</strong></p>
<p>The guys talk to Jackson Harper about CodeReview, his iPad application for reviewing GitHub pull requests. As Jackson describes the episode on Twitter: &quot;...hear me talk about: <a href="https://twitter.com/johnsheehan"><s>@</s><b>johnsheehan</b></a>, <a href="https://twitter.com/codereviewapp"><s>@</s><b>codereviewapp</b></a>, and my one weird trick for writing better code.&quot;</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0192-Jackson-Harper.mp3">Herding Code 192: Jackson Harper on the CodeReview iOS app</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Hello. What is CodeReview?      <ul>       <li>(00:18) Kevin introduces Jackson and asks about CodeReview. Jackson talks about how he missed </li>        <li>(01:25) Kevin asks about some of the specific features in CodeReview. </li>        <li>(02:05) Jon asks what the CodeReview app adds to the mobile web experience on GitHub. One of the big features is that CodeReview allows for completely working completely disconnected. </li>     </ul>   </li>    <li>Nerdy Implementation Details      <ul>       <li>(04:10) Kevin asks if Jackson's working against the GitHub API's. Jackson says he debated working using Git directly, but so far he's been using the GitHub API. Internally the code is abstracted so in theory it could work against other source code hosts like CodePlex. There's a brief discussion of Google Glass </li>        <li>(05:45) Jon asks about Jackson's development stack. Jackson says he's working directly in Objective-C and some C as well for the Markdown parser. There's some discussion of the joy of writing parsers in C. Jackson talks about how some old formats like diff are so much simpler to parse than even newer formats like XML and JSON. </li>        <li>(08:15) Jon asks why Jackson didn't use Mono for this application. Jackson says he's writing Objective-C for his day job, so it's good for him to write as much Objective-C as possible. Kevin said it seemed like working with Mono would require learning Objective-C to read the documentation. Jackson agrees, but says that learning the iOS APIs using Mono made the transition a lot easier for him. </li>        <li>(10:46) Jon asks about the BetterFetch feature. Jackson talks about he'd originally modeled the application more like a Twitter stream, so he'd been using the stream API. Over time, it became obvious that an e-mail client was a better application model, so he's moved off the steam API. </li>     </ul>   </li>    <li>Business Model and Pricing      <ul>       <li>(12:47) Jon asks about the business model and pricing. Jackson said he and JB originally thought that they'd use a freemium model, but they figured out that it really was more applicable for business users who can't as easily do in-app purchasing. He's switched to a flat rate to allow for group purchases and generally work better for business scenarios. Kevin says $20 is pretty steep for an app, but Jon says it says it seems completely reasonable for the right application with one of his favorite Android applications which cost $20. Jackson says it's a perpetual license, iPad apps often sell for a little more, and since it offers a lot of value to businesses he thinks it's worth it. They'd originally looked at $4.99, but that's hard to make any money off. Jon says he thinks that the price sensitivity between $4.99 and $19.99 is probably a lot less than between free and 99 cents. Jackson says he wants to sell and support a quality application that's sustainable. </li>     </ul>   </li>    <li>Services? Nope, just more repos.      <ul>       <li>(18:03) Kevin asks if it's all run off GitHub or if there are some hosted background services. Jackson says it's all running off GitHub. He supports storing additional profile data in an optional GitHub repository. Since he knows you'll have a GitHub application, he can include support for retina quality profile images (and potentially other information) stored in GitHub. </li>     </ul>   </li>    <li>Design issues      <ul>       <li>(20:54) Kevin asks if he's been working with a designer or doing it himself. Jackson talks about how he's worked with a few designers and it's really helped. </li>        <li>(22:50) Kevin asks if the application's design reflects GitHub's design. Jackson says it's similar, but explains some important differences between the application and the website. </li>        <li>(24:27) Jon asks about the full screen experience. Jackson explains how it both frees up screen real estate and allows you to focus. </li>     </ul>   </li>    <li>Code Reviews and Separating the Creative and Editorial Process      <ul>       <li>(25:24) Twitter question from Elijah Manor: &quot;Do you use the CodeReview app to review code for the app itself?&quot; Jackson says yes and explains how a bit inspiration for the application was Stephen King's writing workflow: bang out a bunch of pages in the morning, edit in the evening. Separating the creation and refining steps allow for a lot more productivity. Jon's very interested and asks Jackson for tips on how to do that. Jackson talks about setting small goals and working in a coffeeshop without bringing his power adapter, so he's constrained on time and internet use. K. Scott says that the iPad form factor probably helps for this, and Jackson agrees - he sees it as really good for focus. </li>        <li>(30:41) Jon asks if there are other features he could add by gathering intelligence about my codebase and workflow. Jackson mentions some ideas like hotspots and detecting patch impact. He's been watching GitHub's career page hoping to see that they'll be hiring data scientists to start providing this kind of information.&#160; Jon agrees that it'd be great for GitHub to start investing in data science. Jackson says that you could get a pretty good start on patch impact just by manually flagging a few files as important. Kevin says this would have been useful in the case of OpenSSL. </li>     </ul>   </li>    <li>Code Reviews and Git Workflows      <ul>       <li>(34:29) Jon asks about workflow support for larger teams and team hierarchy. Jackson talks about some of the different Git workflow methodologies. He says he might eventually add support for code review tools like Gerrit, although he feels that some of these tools give code review a bad name because they force you to look for minutia as opposed to the big picture. </li>     </ul>   </li>    <li>When Does it Ship      <ul>       <li>(37:56) Jon asks how close he is to shipping. Jackson talks about the beta and some of the challenges of running a beta. [Note: the application is now up on the app store] </li>     </ul>   </li>    <li>Metrics, Tracking and API Profiling      <ul>       <li>(37:35) Jon asks if he's tracking metrics or tracking. Jackson says he's gathering crash reports and doing some very basic analytics using localytics because he doesn't want users to be concerned. Jon says he likes applications give checkboxes to allow for extended tracking. Jackson talks about how he's using Runscope and would like to allow users to optionally turn Runscope on. Jackson and Jon rave about Runscope; Jackson talks about how a few hours of API profiling helped him significantly improve the application performance. Jon talks about how we don't think about server interactions, and there's all kinds of crazy, scary things going on behind the scenes. Jackson tells a horror story about how the Mono site used to return the logo image when you tried to download, and they didn't find it out until they looked at the server logs. Jon talks about a case where someone requesting the Herding Code RSS feed several times a second. </li>     </ul>   </li>    <li>What's Next?      <ul>       <li>(48:39) Jon asks what's next for the app. Jackson talks about the difficulty in cutting off the features and shipping a version. </li>        <li>(49:29) Kevin asks if he's got big vision for more than code review. Jackson says he just wants to ship it and will probably start looking at other features eventually. Kevin talks about a polititian who's put all of his information on GitHub. Jackson says he's worked with a lawyer in setting up the company and wished they he could work in Markdown. Jon talks about how it would be nice if Markdown had review and change tracking that were similar to Word's. Jon says that the recent hosted Sharepoint releases are getting close. Kevin, Jackson and Jon talk about how foreign the idea of versioning and change tracking is to most professions. </li>     </ul>   </li>    <li>Random questions      <ul>       <li>(55:35) &quot;Who is the best canadian you know&quot; (Wayne Gretzky) </li>        <li>(55:55) &quot;What type of dog is your favorite&quot; Labrador </li>        <li>(55:57) &quot;When will you stop lying about your tweets&quot; There's a short discussion about deleting tweets and Jackson's feature request for Tweet focus testing. Jackson talks about a time when Twitter asked users to stop deleting tweets for performance reaons </li>     </ul>   </li>    <li>Epilogue      <ul>       <li>(59:20) The app is now live on the app store! You can find out about it at CodeReview.io. </li>        <li>(1:00:32) Jon asks for some promo codes, Jackson gives away ten free promo codes (below)! </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Jackson Harper (<a href="http:// jacksonh.org">jacksonh.org</a>,&#160; <a href="https://twitter.com/jacksonh">@jacksonh</a>) </li>    <li><a href="http://codereview.io/">CodeReview.io</a> </li>    <li><a href="http://code.google.com/p/gerrit/">Gerrit code review tool</a> </li>    <li><a href="https://herdingcode.com/herding-code-168-john-sheehan-on-runscope/">Herding Code 168: John Sheehan on Runscope</a> </li>    <li><a href="http://www.localytics.com/">Localytics</a> </li> </ul>  <p>Promo Codes for show listeners (please just take one, leave a comment when they're all gone):</p>  <ul>   <li><a href="http://tokn.co/gcmy5zs7">http://tokn.co/gcmy5zs7</a> </li>    <li><a href="http://tokn.co/5qdrawcy">http://tokn.co/5qdrawcy</a> </li>    <li><a href="http://tokn.co/unftsayg">http://tokn.co/unftsayg</a> </li>    <li><a href="http://tokn.co/6z5xcs8r">http://tokn.co/6z5xcs8r</a> </li>    <li><a href="http://tokn.co/9p243ttq">http://tokn.co/9p243ttq</a> </li>    <li><a href="http://tokn.co/y49p9z7m">http://tokn.co/y49p9z7m</a> </li>    <li><a href="http://tokn.co/cxvjme4d">http://tokn.co/cxvjme4d</a> </li>    <li><a href="http://tokn.co/pmpnja6f">http://tokn.co/pmpnja6f</a> </li>    <li><a href="http://tokn.co/rakqesz5">http://tokn.co/rakqesz5</a> </li>    <li><a href="http://tokn.co/e7jdrd2e">http://tokn.co/e7jdrd2e</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0192-Jackson-Harper.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 191: Derick Bailey on SignalLeaf and Getting Started Podcasting</title>
    <link>https://herdingcode.com/herding-code-191-derick-bailey-on-signalleaf-and-getting-started-podcasting/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-191-derick-bailey-on-signalleaf-and-getting-started-podcasting/</guid>
    <pubDate>Tue, 03 Jun 2014 23:24:46 GMT</pubDate>
    <description><![CDATA[<p>The guys (joined by guest host Rob Conery) talk to Derick Bailey about his new podcast audio hosting venture, SignalLeaf. Herding Code 191: Derick Bailey on S</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 191</strong></p>
<p>The guys (joined by guest host Rob Conery) talk to Derick Bailey about his new podcast audio hosting venture, SignalLeaf.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0191-Derick-Bailey.mp3">Herding Code 191: Derick Bailey on SignalLeaf and Getting Started Podcasting</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>What is SignalLeaf?      <ul>       <li>(00:18) Kevin introduces the show and warns listeners that Rob Conery is present. </li>        <li>(01:00) Kevin asks Derick what SignalLeaf is. Derick explains that SignalLeaf is a podcast audio hosting service. He explains how his service compares to big players like Libsyn. </li>        <li>(02:05) There's a discussion of Libsyn. Jon confesses that Herding Code still runs off Wordpress on an &quot;unlimited hosting&quot; account. </li>     </ul>   </li>    <li>Bandwidth costs      <ul>       <li>(02:52) Jon asks Derick if the main cost is bandwidth. Derick explains that SignalLeaf runs on Heroku, but all the storage goes directly to Amazon S3 storage. He agrees that bandwidth is the main cost, and is planning to just make sure the overall subscribers balance out some of the more expensive bandwidth costs. </li>        <li>(04:52) Jon asks Derick what else he provides outside of audio hosting. Derick says he provides audio hosting, an RSS feed and stats, but he limits it at that. He also provides a blog with a lot of good information. The goal isn't a big all-in-one service, just keeping it simple for people who want to get started. </li>        <li>(06:31) Rob gives the example of the rapid takeoff of This Developer's Life and asks how Derick's planning to handle pricing for unpredictable bandwidth. Derick says the model's focused on unlimited uploads, but limited in how many releases a podcaster makes in a month. He's relying on the law of average to pay for the popular podcasts. </li>        <li>(09:18) Rob talks about the huge streaming bills he was getting from Amazon for TekPub, which he almost eliminated by switching to Vimeo. He asks Derick if he's looked into services like that. Derick says the backend is abstracted so he can move to other services if needed. </li>     </ul>   </li>    <li>What does SignalLeaf run on? (Part 1)      <ul>       <li>(11:10) Jon asks about what SignalLeaf runs on. Derick mentions MongoDb (running on MongoLab), Keen.io&#160; for analytics and CloudAMQP.com for RabbitMQ. </li>     </ul>   </li>    <li>What services does SignalLeaf provide?      <ul>       <li>(13:25) Kevin asks more about the services SignalLeaf offers. Derick mentions storage, bandwidth, storage and analytics. Something he offers beyond what many other similar services provide is - if you use his RSS feed and embedable audio player - he can tell you where your listeners are coming from. </li>        <li>(14:50) Derick mentions his blog post showing that about 50% of listeners don't listen via RSS. Jon said he's seen the same thing with the Herding Code site. </li>     </ul>   </li>    <li>Stats and advertising services      <ul>       <li>(17:25) Jon says advertisers are always asking for stats, and the kind of stats that advertisers want are hard to find. Derick mentions a service (blubrry) that inserts audio ads, but doesn't think that sounds like a good idea. He mentions a business podcast running on a free service which had some off-color ads included as an example. </li>     </ul>   </li>    <li>Getting started in podcasting: What equipment and software do you need?      <ul>       <li>(20:40) Rob asks how a developer should get started with creating a podcast. Derick says just hit record and get started. Don't buy equipment, just record something and upload it and get started. He talks about professional podcasters who put artificial barriers up by focusing on radio quality recording; he disagrees. </li>        <li>(23:56) Jon mentions Derick's recent post on getting started. He agrees with Derick and says don't start by buying equipment, get started and buy equipment as you need it. </li>        <li>(26:11) Jon says he doesn't use his high end condenser microphone because it picks up lots of noise and sounds strange compared to guests and other hosts. Rob asks Derick what people getting started should buy to start with. Derick recommends starting with a $26 Logitech headset, then looking at a $50 Audio Technica ATR 2100, a $90 Blue Yeti, $220 Rode podcaster mic etc. </li>        <li>(30:15) Rob asks about recording software. Derick mentions Garageband, Skype Call Recorder and Audacity. Jon uses a free Skype call recorder from scribie.com, Audacity and Reaper.fm. Jon and Derick both love the noise removal feature in Audacity. </li>        <li>(33:26) Jon says another thing to figure out at the beginning is how much you want to edit. Jon tries to focus on removing ums and repeated words and things, but leave it sounding natural. Both Jon and Derick say that Rob's the easiest guest to edit. </li>        <li>(35:40) Jon asks K. Scott what he uses for recording. He uses Audacity and Camtasia. Jon tells a story about how how he spliced in audio from a previous call when one of the hosts couldn't make a show. It didn't make sense, but no one seemed to notice. </li>        <li>(36:50) K. Scott asks what kind of formats don't work on a podcast. Derick says that visual features and visual cues obviously don't translate. </li>     </ul>   </li>    <li>What does SignalLeaf run on? (Part 2)      <ul>       <li>(38:21) Rob asks everyone to guess about the technology Derick's running on. Turns out it's all Node.js. Derick talks about how he got started with Node.js. Jon asks about what other libraries he's using. Derick mentions Express, S3 restful API's for upload and host, raygun.io for exceptions, keen.io for analytics, stripe.com for billing, MongoDb for data, Mandrill App for SMTP. Derick talks about how little it takes to build up a service now - he's able to stitch a lot of services together to build what he needs. (45:30) K. Scott asks what text editor he uses. Derick's a big VIM fan, having started with a Visual Studio VIM extension a while ago. </li>        <li>(47:20) Kevin asks about JavaScript libraries and testing. Derick talks up Backbone, Q and RSVP for promises, Underscore for utilities, and moment.js for date / time math. </li>        <li>(50:07) K. Scott asks whether Derick uses Grunt or Gulp. Derick says he's thought about looking at Gulp, but Grunt works for him, although he doesn't like . </li>     </ul>   </li>    <li>Discussion about managing small, application specific Node modules      <ul>       <li>(50:55) Derick says he doesn't like the way NPM wants you to have a separate git repository for each module - he wants to have all of his modules in one repo. He works around that by using different repositories for development and deployment. Kevin says that his company uses softlinks to work around that, but Derick's not happy with that. Rob thinks you can do file references, but Derick and Kevin disagrees. Jon asks if submodules would work. Rob and Derick discuss cases where it does and doesn't make sense to use different repos for different small modules which are specific to a project. Rob talks about using grunt to run an npm install command, or npm init or start scripts (set in package.json), or npm init. </li>     </ul>   </li>    <li>Fin      <ul>       <li>(1:01:55) Kevin asks Derick if there's anything else he wants to mention. Derick starts to mention WatchMeCode.com but the calls keep dropping and the show spontaneously combusts. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Derick Bailey (<a href="http://derickbailey.com/">derickbailey.com</a>,&#160; former <a href="http://lostechies.com/derickbailey/">Los Techies blog</a>, <a href="https://twitter.com/derickbailey">@derickbailey</a>) </li>    <li><a href="http://signalleaf.com/">SignalLeaf</a> </li>    <li><a href="http://blog.signalleaf.com/">SignalLeaf blog</a>       <ul>       <li><a href="http://blog.signalleaf.com/blog/2014/02/06/4-of-the-worst-things-to-do-when-starting-a-podcast/">4 of the Worst Things to Do When Starting a Podcast</a> </li>        <li><a href="http://blog.signalleaf.com/equipment/">Recommended equipment</a> </li>     </ul>   </li>    <li><a href="http://watchmecode.net/">WatchMeCode.net</a> </li>    <li><a href="http://lostechies.com/derickbailey/2014/02/27/using-a-single-git-repository-for-multiple-heroku-projects/">Using A Single Git Repository for Multiple Heroku Projects</a> </li>    <li>Equipment (headsets / microphones)</li>    <ul>     <li><a href="http://www.amazon.com/gp/product/B000UXZQ42/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000UXZQ42&amp;linkCode=as2&amp;tag=jongall-20&amp;linkId=FSUIP6N4BWZYFAWR">Logitech ClearChat Comfort/USB Headset H390 (Black)</a><img style="border-top-style: none !important; border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-left-style: none !important" border="0" alt="" src="http://ir-na.amazon-adsystem.com/e/ir?t=jongall-20&amp;l=as2&amp;o=1&amp;a=B000UXZQ42" width="1" height="1" /></li>      <li><a href="http://www.amazon.com/gp/product/B00906E03I/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00906E03I&amp;linkCode=as2&amp;tag=jongall-20&amp;linkId=M6AZCQWQEKW54UOS">Microsoft LifeChat LX-3000 Headset (JUG-00013)</a><img style="border-top-style: none !important; border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-left-style: none !important" border="0" alt="" src="http://ir-na.amazon-adsystem.com/e/ir?t=jongall-20&amp;l=as2&amp;o=1&amp;a=B00906E03I" width="1" height="1" /> </li>      <li><a href="http://www.amazon.com/gp/product/B00465UNYI/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B00465UNYI&amp;linkCode=as2&amp;tag=jongall-20&amp;linkId=A2HTA2EUSJVI75V3">Microsoft LifeChat LX-6000 for Business</a><img style="border-top-style: none !important; border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-left-style: none !important" border="0" alt="" src="http://ir-na.amazon-adsystem.com/e/ir?t=jongall-20&amp;l=as2&amp;o=1&amp;a=B00465UNYI" width="1" height="1" /> </li>      <li><a href="http://www.amazon.com/gp/product/B004QJOZS4/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B004QJOZS4&amp;linkCode=as2&amp;tag=jongall-20&amp;linkId=KWZIEKLYX6R3Q67X">Audio-Technica ATR2100-USB Cardioid Dynamic USB/XLR Microphone</a><img style="border-top-style: none !important; border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-left-style: none !important" border="0" alt="" src="http://ir-na.amazon-adsystem.com/e/ir?t=jongall-20&amp;l=as2&amp;o=1&amp;a=B004QJOZS4" width="1" height="1" /> </li>      <li><a href="http://www.amazon.com/gp/product/B004L9KLT6/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B004L9KLT6&amp;linkCode=as2&amp;tag=jongall-20&amp;linkId=EPTBG76MFSBVC4UQ">Blue Microphones Yeti Pro USB Condenser Microphone, Multipattern</a><img style="border-top-style: none !important; border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-left-style: none !important" border="0" alt="" src="http://ir-na.amazon-adsystem.com/e/ir?t=jongall-20&amp;l=as2&amp;o=1&amp;a=B004L9KLT6" width="1" height="1" /> </li>   </ul> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0191-Derick-Bailey.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 190: Rob Ashton on NodeJS vs C#, Clojure and Cooking Constraints</title>
    <link>https://herdingcode.com/herding-code-190-rob-ashton-on-nodejs-vs-c-clojure-and-cooking-constraints/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-190-rob-ashton-on-nodejs-vs-c-clojure-and-cooking-constraints/</guid>
    <pubDate>Wed, 30 Apr 2014 23:04:27 GMT</pubDate>
    <description><![CDATA[<p>In our final interview from NDC London, Jon and K. Scott talk to Rob Ashton his cage match with Jeremy Miller on NodeJS vs. C#, some functional languages he&apos;s been learning, and</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 190</strong></p>
<p>In our final interview from NDC London, Jon and K. Scott talk to Rob Ashton his cage match with Jeremy Miller on NodeJS vs. C#, some functional languages he's been learning, and cooking just enough curry.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0190-Rob-Ashton.mp3">Herding Code 190: Rob Ashton on NodeJS vs C#, Clojure and Cooking Constraints</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>The NDC Cage Match: Testing! NodeJS vs. C#</li>    <ul>     <li>(00:18) K Scott asks Rob about the cage match he just had with Jeremy Miller comparing testing in NodeJS and C#. Rob's got a lot of good things to say about what Jeremy showed, but is pretty sure he won. </li>      <li>(02:40) K Scott asks Rob to explain why he doesn't like monkey patching. Rob mentions how QuickCheck helps, then talks about how code structure obviates the need for monkey patching. </li>      <li>(05:16) Jon asks how he bootstraps his application to inject dependencies and explains how he avoids deep dependency chains. </li>   </ul>    <li>Clojure?</li>    <ul>     <li>(06:40) K Scott asks what led him to Clojure. </li>      <li>(07:39) Jon asks Rob what he likes about Clojure. Rob says a better question is what he likes about functional programming languagues, then explains. </li>      <li>(09:25) K Scott asks about some of the learning project Rob's been working with to learn Clojure. Rob talks about some of the games he started with, then the RavenDb reimplementation he's been building with Clojure called Craven. </li>   </ul>    <li>What do you do in your free time?</li>    <ul>     <li>(12:56) K Scott asks Rob what he does in his free time. Rob starts by talking about Clojure, then talks about some of the complicated cooking things he's been working on. He talks about some of the similarities between cooking and coding, and some of the constraint he deals with in ambitions cooking projects.</li>   </ul>    <li>The future</li>    <ul>     <li>(14:58) K Scott asks Rob about some of his plans for early 2014.&#160; Erlang away! </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Rob Ashton (<a href="http://codeofrob.com/">blog</a>, <a href="https://twitter.com/robashton">@robashton</a>) </li>    <li><a href="http://vimeo.com/84677180">NDC Cage Match between Rob Ashton and Jeremy Miller: Testing! NodeJS vs. C#</a> </li>    <li><a href="http://en.wikipedia.org/wiki/QuickCheck">QuickCheck</a> </li>    <li><a href="http://clojure.org/">Clojure</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0190-Rob-Ashton.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 189: Gary Bernhardt on The Birth and Death of JavaScript</title>
    <link>https://herdingcode.com/herding-code-189-gary-bernhardt-on-the-birth-and-death-of-javascript/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-189-gary-bernhardt-on-the-birth-and-death-of-javascript/</guid>
    <pubDate>Fri, 18 Apr 2014 00:41:34 GMT</pubDate>
    <description><![CDATA[<p>At NDC London, Jon and K Scott talk to Gary Bernhardt about his talk, The Birth and Death of JavaScript. Herding Code 189: Gary Bernhardt on The Birth and Dea</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 189</strong></p>
<p>At NDC London, Jon and K Scott talk to Gary Bernhardt about his talk, The Birth and Death of JavaScript. </p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0189-Gary-Bernhardt.mp3">Herding Code 189: Gary Bernhardt on The Birth and Death of JavaScript</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>(00:15) The talk occurs in the year 2035. JavaScript is now pronounced differently, and there has been another world war. </li>    <li>(01:20) Jon ran over to the talk when he heard (via Twitter) that Gary was (or will be, it's all so confusing) mentioning Singularity. </li>    <li>(02:20) Jon asks about Gary's references to the performance improvements gained by turning off hardware protection. Gary and Jon discuss how Singularity and the (yet to be developed) Asm language offer high performance due to this approach. </li>    <li>(04:10) Jon asks why JavaScript has died, since Asm is universal. Gary mentions some of the problems - many historical - with JavaScript. And Gary should know, he's famous for the &quot;wat&quot; talk showing several JavaScript insanities. </li>    <li>(05:37) Jon asks for some reasons why JavaScript had to die. Gary explains how it's really just running on inertia now, and that it'd be preferable to use a better designed language like Clojure. </li>    <li>(06:30) Jon asks what we're writing our code in, now that it's compiling to Asm. Gary doesn't specify that - it's not really necessary to pick one, and he doesn't need to alienate anyone unnecessarily. </li>    <li>(07:45) Jon asks if Asm is a binary format. Gary clarifies that it's the JavaScript subset that was proposed in 2012. </li>    <li>(08:54) Jon asks if Asm is perfect, or just good enough. Gary talks about how both Asm and the HTML DOM (which also has become universal in 2035) are full of flaws, but they're better than fragmentation. Jon and Gary talk abouthow </li>    <li>(10:45) K Scott says this all sounds plausible, all that's needed is time. So, why 2035? Gary talks about his reasoning... it could happen faster. He talks about some core services moving into operating system kernels, and Jon and K Scott agree. </li>    <li>(12:55) Jon applauds Gary's 25-30 minute talk length. </li>    <li>(13:15) Jon mentions some of the interesting audience questions at the end of the talk. Gary talks about some of the most interesting. All of them were pretty easy except for the question of parallel execution. </li>    <li>(15:20) There's a discussion about the limitations of x86 architecture and parallelism. </li>    <li>(16:10) Jon asks about some of the other things Gary's up to - there are the Destroy All Software screencasts and a consumer product Gary's working on but isn't ready to announce yet. </li>    <li>(16:40) K Scott asks Gary about relaxation and recreation. Gary says that he'd become really preoccupied with things that were bad in software, and it was stressing him out. He's made three changes: intentional social interactions, crossfit and playing guitar. All three have helped him be less angry about the state of software... which is all hacks on x86, when we get down to it. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Gary Bernhardt&#160; on Twitter - <a href="https://twitter.com/garybernhardt">@garybernhardt</a> </li>    <li>Video of <a href="https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript">The Birth And Death Of JavaScript</a> talk at PyCon 2014</li>    <li><a href="https://www.destroyallsoftware.com/talks/wat">WAT</a> (lightning talk from CodeMash 2012) </li>    <li><a href="https://www.destroyallsoftware.com/screencasts">Destroy All Software screencasts</a> </li>    <li><a href="http://asmjs.org/">asm.js</a> </li>    <li><a href="http://research.microsoft.com/en-us/projects/singularity/">Microsoft Singularity project</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0189-Gary-Bernhardt.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 188: Pete Smith on Superscribe</title>
    <link>https://herdingcode.com/herding-code-188-pete-smith-on-superscribe/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-188-pete-smith-on-superscribe/</guid>
    <pubDate>Fri, 07 Mar 2014 00:10:20 GMT</pubDate>
    <description><![CDATA[<p>At NDC London, Jon talks to Pete Smith about Superscribe, a library which brings graph based routing to ASP.NET, Web API and OWIN. Herding Code 188: Pete Smit</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 188</strong></p>
<p>At NDC London, Jon talks to Pete Smith about Superscribe, a library which brings graph based routing to ASP.NET, Web API and OWIN. </p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0188-Pete-Smith.mp3">Herding Code 188: Pete Smith on Superscribe</a></p>  <p></p>  <p><em>Note: There's a little bit of background noise due to the conference recording.</em></p>  <p>Show Notes:</p>  <ul>   <li>Intro to Superscribe</li>    <ul>     <li>(00:20) Jon asks Pete to explain what Superscribe's graph-based routing means. Pete explains how traditional routing needs to check each route for a match, one at a time. Graph-based routing stores using a structure, so there are some performance gains due to only matching routes with a matching structure rather than using string matching. </li>      <li>(02:17) Pete explains that graph based routing is language agnostic, so there's also a JavaScript implementation. </li>   </ul>    <li>Extensibility due to strongly typed route nodes</li>    <ul>     <li>(02:37) Each node in the graph is a strongly typed entity, so you can use an activation function for each node in the graph to determine if it's a match rather than just using a simple regex match. You can write custom activation functions for any node. For parameter matching, Superscribe uses TryParse rather than regex matches. </li>      <li>(04:22) There are three guiding principles behind Superscribe: composability, efficiency and extensibility. </li>   </ul>    <li>The OWIN connection</li>    <ul>     <li>(05:22) Jon asks where Superscribe can be used. Pete says it's currently usable in Web API and OWIN, with NancyFx and possibly MVC on the way. </li>      <li>(06:02) In addition to activation functions, you can also define an action function which says what should happen when a node is matched. This allows running different OWIN middleware based on route matches. This means you can hook up authentication middleware using an action function which will only operate on a specific node. </li>   </ul>    <li>Graphs vs. Trees</li>    <ul>     <li>(08:16) You can hook up optional nodes, which would allow things like an optional /debug/ route prefix which would hook up tracing middleware. Pete says this is something that wouldn't be possible with tree-based routing (available in NancyFx). </li>      <li>(09:00) Jon asks what the difference is between tree-based routing and graph-based routing. Both are connected nodes, and trees are a type of graph in which the node connections branch out and ever reconnect, whereas in a graph any node may connect to any other node. </li>   </ul>    <li>API options: Different ways to define route graphs</li>    <ul>     <li>(09:53) Jon asks how developers will define nodes in Superscribe. Pete talks about the difference between economy and expressivity: economic design has fewer options but is easy to learn, while expressive design offers many options but a steeper learning curve. Superscribe is currently more expressive, using a domain specific language using operator overloads. It overloads the / symbol to add segments and the | operator to allow defining multiple routes (or the entire graph) in a single line. </li>      <li>(12:28) Jon says that you can always add an economic API layer over an expressive one. Pete agrees and says that since everything's strongly typed underneath, you can configure it explicitly or fluently&#160; as well (if you don't like the DSL). </li>      <li>(13:14) Jon asks about how to hook in action functions or activator functions. Pete says they're currently not available in the DSL, so you'd need to build those notes out by hand at this point. </li>   </ul>    <li>Miscellaneous questions and pretend ending</li>    <ul>     <li>(15:08) Jon asks about using routes for localization. Pete talks about some options for doing that. </li>      <li>(16:28) Jon asks what's next on the list. Pete lists some features: syntax improvements and OWIN middleware ideas. </li>      <li>(19:12) Jon asks how people can learn more and keep up, Pete talks about Superscribe.org. </li>      <li>(20:12) Jon asks about the use case for Superscript in JavaScript. Pete talks about how activation functions are really useful in single page applications and how he's using this in a production application. He's working on packaging this up as Superscribe.js. </li>   </ul>    <li>Update on the 0.4 release (follow-up phone call)</li>    <ul>     <li>(22:11) Jon asks what's new in the 0.4 release. Pete starts by describing some improvements to the routing syntax. </li>      <li>(23:02) You can now combine Web API replacement routing, traditional routing, Attribute Routing and Superscribe in the same application, so you can pick and choose. </li>      <li>(23:24) You can wire it up with an IOC container, so you can compose different components based on routes. You can also use route information in OWIN middleware. </li>      <li>(23:56) Everything about the new release is up on the Superscribe.org site. </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Pete Smith (<a href="http://roysvork.wordpress.com/">blog</a>, <a href="https://twitter.com/roysvork">@roysvork</a>) </li>    <li><a href="http://superscribe.org">Superscribe</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0188-Pete-Smith.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 187: Brock Allen on ASP.NET Security and Identity</title>
    <link>https://herdingcode.com/herding-code-187-brock-allen-on-asp-net-security-and-identity/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-187-brock-allen-on-asp-net-security-and-identity/</guid>
    <pubDate>Wed, 12 Feb 2014 22:27:25 GMT</pubDate>
    <description><![CDATA[<p>At NDC London, Jon and K. Scott talk to Paul Betts about several of his recent open source libraries designed to simplify cross platform development on C#. He</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 187</strong></p>
<p>At NDC London, Jon and K. Scott talk to Paul Betts about several of his recent open source libraries designed to simplify cross platform development on C#.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0187-Brock-Allen.mp3">Herding Code 187: Brock Allen on ASP.NET Security and Identity</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Intro      <ul>       <li>(00:18) Brock gave two presentations on security at NDC, as well as a two day pre-conference workshop with Dominick Baier (also on security). </li>     </ul>   </li>    <li>Brock's contribution of CORS support to ASP.NET Web API      <ul>       <li>(00:35) Jon asks Brock about the CORS support he recently contributed to ASP.NET Web API. Brock tells the history of how he built a CORS implementation at Thinktecture and how he went about contributing it. </li>        <li>(01:21) Jon asks Brock about what was involved in his CORS implementation. Brock describes the limitations browsers place on cross-origin requests and how CORS solves that. It's defined in the HTML5 specs and is supported by all modern browsers. </li>        <li>(02:12) Jon asks what's required on the server for CORS to work. Brock explains how servers respond to browsers to tell them they support CORS and which other servers they want to allow communications with. </li>        <li>(02:45) The most common form of browser communications for CORS is via an OPTIONS request from the browser, to which the server responds using predefined headers. </li>        <li>(03:14) K. Scott asks about the process of getting his CORS implementation added to the ASP.NET Web API codebase. Brock explains the process, including his big pull request and the month of work he and Yao put in to getting the code &quot;Microsoftified.&quot; Brock's implementation was pretty broad, the shipping version was targeted just at Web API. </li>     </ul>   </li>    <li>Thinktecture Identity Model      <ul>       <li>(04:59) Jon asks if there's any reason to use the Thinktecture Identity Model version now. Brock explains the other areas that Identity Model supports, and that many of the features of Thinktecture Identity Model have been removed as ASP.NET Web API has added a lot of these features to the core. </li>     </ul>   </li>    <li>ASP.NET Identity and Membership Reboot      <ul>       <li>(06:09) K. Scott asks how the identity features in Thinktecture Identity Model compare to the new features shipped in the new ASP.NET Identity system. Brock describes the problems that the ASP.NET Identity system was designed to solve. </li>        <li>(07:02) Brock describes the membership system he wrote as an alternative to the ASP.NET provider model system, called Membership Reboot. His Membership Reboot system includes things like password resets and e-mail account verification which are not in the initial version of ASP.NET Identity, but he thinks that the new system is well architected to add these in, since it's just a NuGet package. </li>        <li>(07:42) Jon asks Brock about the other features Membership Reboot covers. Brock says that was the subject of one of his talks - how he implemented features like password reset, e-mail verification and two factor authentication without opening up attack vectors. </li>     </ul>   </li>    <li>ASP.NET Security      <ul>       <li>(08:27) K. Scott asks about the other talks Brock did at NDC London. His other talk was on ASP.NET Core Security - he focused on teasing apart the membership and forms authentication parts so they're understood as separate components. </li>        <li>(09:20) Jon asks Brock how he got interested in security. Brock talks about his background in programming, and how he thinks it's interesting to see how the different parts work together. </li>        <li>(09:48) Jon talks about cases he sees where developers decide they want to write their own security implementations for speed or other reasons. Brock says that was one of the key points of his talk: you don't want to implement those things yourself. </li>        <li>(10:19) Jon asks about common security issues that developers commonly forget to consider. Brock lists several: proper implementation of SSL, password management, etc. </li>     </ul>   </li>    <li>What's Next For Brock?      <ul>       <li>(11:09) Jon asks what's next for Brock. He'll be busy: he's got a lot of course rework for recent updates, Identity Server v3 (with OpenID Connect). </li>        <li>(11:46) Jon asks how OpenID Connect affects him as a developer. </li>        <li>(13:15) K. Scott asks what Brock does to relax. Brock does Tai Chi and Kung Fu. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Paul Betts (<a href="http://brockallen.com/">blog</a>, <a href="https://twitter.com/BrockLAllen">@BrockLAllen</a>, <a href="https://github.com/brockallen">github</a>) </li>    <li><a href="https://github.com/thinktecture/Thinktecture.IdentityModel">Thinktecture Identity Model</a> </li>    <li><a href="http://brockallen.com/category/membershipreboot/">Membership Reboot</a></li>    <li><a href="http://brockallen.com/2014/02/11/introducing-identityreboot/">Identity Reboot</a>&#160;</li>    <li><a href="http://www.asp.net/identity">ASP.NET Identity</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0187-Brock-Allen.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 186: Paul Betts on three cross-platform libraries: splat, ModernHttpClient and punchclock</title>
    <link>https://herdingcode.com/herding-code-186-paul-betts-on-three-cross-platform-libraries-splat-modernhttpclient-and-punchclock/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-186-paul-betts-on-three-cross-platform-libraries-splat-modernhttpclient-and-punchclock/</guid>
    <pubDate>Thu, 06 Feb 2014 21:17:12 GMT</pubDate>
    <description><![CDATA[<p>At NDC London, Jon and K. Scott talk to Paul Betts about several of his recent open source libraries designed to simplify cross platform development on C#. He</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 186</strong></p>
<p>At NDC London, Jon and K. Scott talk to Paul Betts about several of his recent open source libraries designed to simplify cross platform development on C#.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0186-Paul-Betts.mp3">Herding Code 186: Paul Betts on three cross-platform libraries: splat, ModernHttpClient and punchclock</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Intro      <ul>       <li>(00:18) Jon welcomes Paul back - he's been on a few times before, talking about GitHub for Windows and Reactive UI. </li>        <li>(00:28) Paul has a dream: he'd like to write applications in C# and have them run everywhere: iOS, Android, Windows Phone maybe even WinRT. He's not interested in sharing everything (views or designer code), but there's plenty of other code that developers shouldn't need to rewrite for every platform. </li>        <li>(01:16) Jon asks if Xamarin doesn't help with this. Paul says that Xamarin's intention is to give you direct access to the native platform, which is good when developing for a specific platform, but not when you're working on cross-platform applications. </li>        <li>01:32 Paul's been on a crusade, writing a lot of small, cross-platform libraries. </li>     </ul>   </li>    <li>splat      <ul>       <li>(01:48) splat is a library that lets you share certain things in cross-platform viewmodels, the biggest one being images. It allows for the simple load-and-display scenario. Each platform hast its own image types; splat gives you a common abstract image type that you can then cast to a native image. This allows you to write cross-platform viewmodels and just have native views. splat also gives you System.Drawing on platforms that don't have it, e.g. WinRT by providing common types for primitives like colors and rectangles. </li>        <li>(04:08) Jon asks if portable class libraries will help with this. Paul explains the PCL operations for splat. </li>        <li>(04:45) Jon asks about support for high-DPI / Retina images. Paul talks about how the different platforms handle high DPI images. </li>     </ul>   </li>    <li>ModernHttpClient      <ul>       <li>(05:44) Paul says that HttpClient is implemented on Xamarin using HttpWebRequest. This has some problems: it doesn't use 3G on iOS, and it's a blocking call. That means if you make several web requests, you end up with a bunch of waiting threads and the app slows down. </li>        <li>(06:45) There are better APIs available on each platform, so Paul's taken the most popular HTTP libraries on each platform and made them HttpClient compatible. HttpClient allows you to specify an HttpMessageHandler, so in your portable library you can just drop in the handlers provided by ModernHttpClient . </li>        <li>(08:33) In the latest version, Paul's done work to make sure you can cancel requests. This lets you cancel a request based on headers (e.g. status codes or ETags) which can make a big difference on mobile network usage. </li>        <li>(09:23) Jon asks how it works in the Windows platforms. Paul says that on WinRT it's already built in, and on Windows Phone there's no way to do anything better than HttpWebRequest. </li>        <li>Jon asks a bit more about how you use it. Paul explains how platform-specific factory methods can provide the different handlers. </li>     </ul>   </li>    <li>punchclock</li>    <ul>     <li>(11:00) punchclock lets you make multiple web requests; it queues them up and makes the requests for you so there are a maximum of four web requests at a time. It's based on an Android library called Volley. </li>      <li>(12:20) punchclock is a priority based scheduler. You can then make things like analytics low priority and user initiated requests high priority. </li>      <li>(13:12) It's not just specific to network requests, you can use it for anything that's awaitable. </li>   </ul>    <li>What's Paul using these on?      <ul>       <li>(13:35) Jon asks Paul what kind of mobile applications he's building that are pushing him to build these libraries. Paul says he's been working on some internal applications at GitHub. One example is a support application called Halp. It lets customer support people use @mention style messages to developers, allowing developers to respond quickly from mobile devices. </li>     </ul>   </li>    <li>Reactive UI documentation      <ul>       <li>(15:10) Jon asks Paul what he's been doing when he's not writing cool code. Paul says he's been working on documentation for Reactive UI by writing one big article per day. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Paul Betts (<a href="http://log.paulbetts.org/">blog</a>, <a href="http://twitter.com/paulcbetts">@paulcbetts</a>, <a href="https://github.com/paulcbetts">github</a>) </li>    <li><a href="https://github.com/paulcbetts/splat">splat</a> </li>    <li><a href="https://github.com/paulcbetts/ModernHttpClient">ModernHttpClient</a> </li>    <li><a href="https://github.com/paulcbetts/punchclock">punchclock</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0186-Paul-Betts.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 185: Glenn Block on Splunk</title>
    <link>https://herdingcode.com/herding-code-185-glenn-block-on-splunk/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-185-glenn-block-on-splunk/</guid>
    <pubDate>Thu, 30 Jan 2014 22:03:06 GMT</pubDate>
    <description><![CDATA[<p>At NDC Jon and K. Scott talk to Glenn Block about Splunk. Herding Code 185: Glenn Block on Splunk</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 185</strong></p>
<p>At NDC Jon and K. Scott talk to Glenn Block about Splunk.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0185-Glenn-Block.mp3">Herding Code 185: Glenn Block on Splunk</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Intro</li>    <ul>     <li>(00:18) Glenn got a new job at Splunk.</li>   </ul>    <li>What is Splunk?</li>    <ul>     <li>(00:40) Jon asks Glenn what Splunk does. Splunk has a product that gathers operational intelligence. It's got a data analytics platform which understands a lot of log formats. It can handle streaming logs and has a bunch of API's. It can index in realtime, handles unstructured data, and has some advanced pattern matching features.</li>      <li>(02:12) Glenn talks about some common uses. GitHub and Target both use Splunk. It's especially liked by IT Admins who can query across multiple servers by timeslice in realtime. There's a customizable dashboard to surface the information.</li>      <li>(03:24) Glenn says that since Splunk has a powerful API, you can push data into it. You can push data in using HTTP or TCP.</li>      <li>(04:01) You can teach Splunk to fetch data from a source using their app platform. Glenn talks about an Azure app he built for Windows Azure Web Sites diagnostics.</li>      <li>(05:39) Splunk is available in the cloud, but it's often run on premises. It's cross-platform. It doesn't store the data, it just indexes it.</li>   </ul>    <li>Pricing, free versions, cloud hosted versions</li>    <ul>     <li>(06:44) Glenn says the pricing is based on data throughput. They have a free license that gives you 500MB/day, a developer license that gives you 10GB/day for a limited time, a free cloud product called Splunk Storm which gives you 20GB/application for a 30 days, and a new enterprise product called Splunk Cloud running in AWS. The enterprise cloud product is especially useful for AWS hosted apps.</li>      <li>(08:20) Jon asks if there's a planned cloud hosted offering for Windows Azure. Glenn says he's pushing for it, but in the meantime it's pretty easy to install it yourself.</li>      <li>(08:58) K. Scott asks about what he'd see if he used Glenn's Azure app on a Windows Azure Web Site. Glenn lists some of the data and sources.</li>   </ul>    <li>Developing Splunk apps and language support</li>    <ul>     <li>(10:03) K. Scott asks about the process of writing a Splunk app. Glenn talks about all the language specific SDK's they support and describes the process.</li>      <li>(11:20) K. Scott asks how they support so many languages in Splunk. Glenn says it's pretty Unixy in that it works with streams, so all the language specific SDK's work with that.</li>   </ul>    <li>Using Splunk for evented data, not just logs</li>    <ul>     <li>(12:25) Jon asks about some&#160; real world examples of things people are monitoring. Glenn talks about a recent DSL-like feature called data models, which allows business analysts to search through the data, and graphically pivot on it. One of the places people use that is for monitoring the entire dev lifecycle. Security auditing is a huge use case. 50% of the Fortune 100 uses Splunk. Glenn gives an example of how one of his co-workers wrote a Node app using Firebase's bus feed to show a realtime map with bus location.</li>      <li>(16:00) Jon says this seems to blur the lines between logs and event sourcing. Glenn says it's not just a log platform, and works really well with evented data.</li>   </ul>    <li>Technology stack</li>    <ul>     <li>(16:44) Jon asks what technologies it runs on, and if it's using Hadoop. Glenn says Hadoop's great, but not for realtime. They do have a product called Hunk which can access Hadoop HDFS information, though. It's mostly C++ and Python (Django). They've recently rolled out an app frameowrk which makes it easy to customize Splunk using Django. There's no database, since Splunk really just maintains indexes to data from other sources.</li>   </ul>    <li>Glenn's new book: Designing Evolvable Web APIs with ASP.NET</li>    <ul>     <li>(19:25) Jon asks Glenn what he does in his free time. Glenn talks about the book he (and friends) are just finishing, called Designing Evolvable Web APIs with ASP.NET. It focuses on building a real system using hypermedia using ASP.NET Web API.</li>      <li>(20:35) Jon asks about versioning: are they using headers, URLs, etc.? Glenn says their argument is based on using additional media types and hypermedia. Hypermedia makes it easier to evolve your API because your clients are following links, not using hardcode URLs.</li>      <li>(22:15) Jon says hypermedia sounds great, but developers often want to follow defined links. Glenn says he doesn't think it as a magical automaton, but both developers and code can look for new links as they're added.</li>      <li>(23:40) Jon says it's harder to evolve APIs if you're thinking RPC style, but once you're focused on resouces it's easier. Glenn says this pattern has worked great for the web - clients just ignore things they don't understand. Jon and Glenn say this is similar also to the move from relational databases to document databases.</li>      <li>(24:30) Glenn says it's exciting to finally see some hypermedia APIs coming out: PayPal, GitHub, Amazon's streaming APIs, and NPR's recent API updates based on hypermedia.</li>      <li>(25:30) Glenn says the book doesn't try to convince you that this is the only way, just shows the benefits. K. Scott says this sounds really useful to move from the theoretical to some concrete examples.</li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Glenn Block (<a href="http://codebetter.com/glennblock">blog</a>, <a href="http://twitter.com/gblock">@gblock</a>)</li>    <li>&#160;<a href="http://splunk.com">Splunk</a></li>    <li><a href="http://dev.splunk.com/">Splunk developer information</a></li>    <li>Book: <a title="http://www.amazon.com/gp/product/1449337716/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1449337716&amp;linkCode=as2&amp;tag=jongall-20" href="http://www.amazon.com/gp/product/1449337716/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1449337716&amp;linkCode=as2&amp;tag=jongall-20">Designing Evolvable Web APIs with ASP.NET</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0185-Glenn-Block.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 184: Scott Guthrie on Windows Azure</title>
    <link>https://herdingcode.com/herding-code-184-scott-guthrie-on-windows-azure/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-184-scott-guthrie-on-windows-azure/</guid>
    <pubDate>Thu, 23 Jan 2014 00:32:48 GMT</pubDate>
    <description><![CDATA[<p>At NDC Jon and K. Scott talk to Scott Guthrie about his talk Building Real World Apps with Windows Azure, what&apos;s new in Windows Azure, the advantage of provisioning and scaling</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 184</strong></p>
<p>At NDC Jon and K. Scott talk to Scott Guthrie about his talk Building Real World Apps with Windows Azure, what's new in Windows Azure, the advantage of provisioning and scaling up and down instantly, and more.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0184-Scott-Guthrie.mp3">Herding Code 184: Scott Guthrie on Windows Azure</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Scott talk: Building Real World Apps with Windows Azure      <ul>       <li>(00:18) Scott's talk covered twelve patterns for building cloud apps using things like continuous delivery, transient fault handling, long term failures, etc. </li>     </ul>   </li>    <li>What's new in Windows Azure      <ul>       <li>(01:02) Jon asks Scott to overview the highlights of what's new in Windows Azure over the past year </li>        <li>(01:25) Scott says they generally ship a major release every three weeks </li>        <li>(01:40) Scott talks about how they're using agile approaches to development, and some services update as often as ten times a day </li>        <li>(02:19) Scott overviews some of the main things that shipped over the past year          <ul>           <li>Virtual Machine and Virtual Networking </li>            <li>Windows Azure Web Sites </li>            <li>Auto-Scale support </li>            <li>Hadoop </li>            <li>Mobile Services </li>            <li>Push Notification </li>            <li>Media Services </li>         </ul>       </li>     </ul>   </li>    <li>(06:37) K. Scott asks how Auto-Scale came to be. Scott Guthrie tells the story about how it came from an acquisition of an Azure startup incubation project. The team joined at the end of March and the feature shipped in June. </li>    <li>(08:42) Scott talks about how Azure and Cloud Development help you move faster with illustrations of how quickly you can create and integrate services and infrastructure and support multiple regions. </li>    <li>(10:22) Scott talks about the advantages of being able to quickly scale both up and down. He talks about how Troy Hunt was able to scale up Azure instances to crunch through databases of breached passwords to make it easy to see if your password has been compromised, then scaled right back down and spent less than a dollar. </li>    <li>(14:09) K. Scott asks about Node.js support. Scott talks about how they've been supporting Node for a long time, and how cloud development lets you easily choose between tools for different applications. </li>    <li>(15:09)Jon asks Scott what books he's been reading lately.      <ul>       <li>(15:45) He's been reading a lot of work related books on things like supply chain management </li>        <li>(16:35) Scott mentions the new Web API book by Glenn Block and friends </li>        <li>(16:46) He went to Australia and read a book called Fatal Shore, a book about the founding of Australia </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Scott Guthrie (<a href="http://weblogs.asp.net/scottgu/">blog</a>, <a href="http://twitter.com/scottgu">@scottgu</a>) </li>    <li><a href="http://windowsazure.com">Windows Azure</a> </li>    <li>Video from Scott's talk: <a href="http://http://vimeo.com/84676531">Build Real World Cloud Apps using Windows Azure Part I</a> and <a href="http://vimeo.com/84676530">Build Real World Cloud Apps using Windows Azure Part II</a> </li>    <li>E-Book version of Scott's talk: <a href="http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/building-real-world-cloud-apps-with-windows-azure/introduction">Building Real-World Cloud Apps with Windows Azure</a> </li>    <li>Troy Hunt: <a href="http://www.troyhunt.com/2013/11/using-high-spec-azure-sql-server-for.html">Using high-spec Azure SQL Server for short term intensive data processing</a> </li>    <li>Book: <a title="http://www.amazon.com/gp/product/1449337716/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1449337716&amp;linkCode=as2&amp;tag=jongall-20" href="http://www.amazon.com/gp/product/1449337716/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1449337716&amp;linkCode=as2&amp;tag=jongall-20">Designing Evolvable Web APIs with ASP.NET</a> </li>    <li>Book: <a href="http://www.amazon.com/gp/product/B006NKL884/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B006NKL884&amp;linkCode=as2&amp;tag=jongall-20">The Fatal Shore</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0184-Scott-Guthrie.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 183: Semantic Merge with Pablo Santos</title>
    <link>https://herdingcode.com/herding-code-183-semantic-merge-with-pablo-santos/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-183-semantic-merge-with-pablo-santos/</guid>
    <pubDate>Mon, 06 Jan 2014 21:41:20 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Pablo Santos about Semantic Merge, a merge tool that understands your code. Herding Code 183: Semantic Merge with Pablo Santos</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 183</strong></p>
<p>The guys talk to Pablo Santos about Semantic Merge, a merge tool that understands your code.</p>  <p>Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0183-Semantic-Merge.mp3">Herding Code 183: Semantic Merge with Pablo Santos</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Intro</li>    <ul>     <li>(00:18) Semantic Merge is a diff tool with a semantic understanding of your code. </li>   </ul>    <li>Language support</li>    <ul>     <li>(01:01) Jon asks about what languages Semantic Merge supports. It currently supports C#, Visual Basic.NET and Java, and they're currently working on adding support for C, then C++. </li>      <li>(02:00) Jon noticed that they're using Roslyn and asks about that. Pablo says that it worked really well, handling the parsing to allow them to focus on the important things like diff calculation and semantic merge calculation </li>      <li>(03:02) Jon asks about support for JavaScript. Pablo says it's still under development and there's a lot of demand for it. Since JavaScript isn't so tightly structured, they're still working on figuring out how to come up with something really useful there. </li>      <li>(04:08) Jon asks about how they handle parsing outside of Roslyn and .NET. Pablo lists the different parsers they use for different languages. They've opened up the way that languages plug in, which allowed for a community contributed Delphi parser. </li>      <li>(5:33 Scott K. asks about support for Typescript, since it's more strongly typed. Pablo says that'll be easier, but they're working through the language support list in order of demand. </li>   </ul>    <li>What kind of semantics can Semantic Merge understand?</li>    <ul>     <li>(06:28) K. Scott talks about what Semantic Merge does at a high level and asks about the different refactorings Semantic Merge can and can't understand. Pablo explains a common scenario in which you'd be afraid to refactor code while adding or changing functionality if you know someone else is also working on it. Semantic Merge understands the refactorings so it's easy to merge the actual changes. What Semantic Merge currently doesn't handle is multi-file semantic merges, e.g. with code being refactored into another file. They've got a working prototype for that, but it's harder to plug into different source control systems since they handle multi-file merges differently. </li>      <li>(08:52) Pablo points out that, while it's called Semantic Merge, the diff functionality is really useful on its own. </li>   </ul>    <li>The importance of graphical representation of merge issues</li>    <ul>     <li>(09:17) Jon talks about how good the graphical representation is - both really easy to read and just generally nice looking. Pablo says they've put a lot of work into that and explains why they've designed it as they have. </li>      <li>(10:41) Scott K. says that developers are often stuck in a textual viewpoint for diff and merge, but a good graphical representation can be really useful. Pablo says that we've seen a recent revolution in source control tools, but we're still using tools and technologies from twenty years ago. Jon says that the older ways of displaying diff and merge results with plus and minus lines was based on working with the old source control systems and mostly doing two-way merges. </li>      <li>(13:25) Pablo says it's something that you really miss when it's not there - big merges with lots of files look scary, but when you see that the actual changes are minimal it's not such a big deal. Scott K. mentions a joke he saw on twitter about how a ten line code review finds ten issues, but a thousand line review passes easily. </li>      <li>(15:17) Jon asks how Semantic Merge has changed the way their team develops code, for instance by making them more ready to refactor code. Pablo gives an example with working on a year-old branch in which traditional diff gave him tons of merge conflicts but Semantic Merge only gave him one. </li>      <li>(17:19) Jon noticed that many of the samples were able to automatically merge everything and asks how Semantic Merge detects merge conflicts. Pablo explains how Semantic Merge not only is able to detect when changes don't cause conflicts, but can also detect merge conflicts that other tools won't find. </li>   </ul>    <li>Version control integration</li>    <ul>     <li>(19:36) Jon asks about which version control systems Semantic Merge integrates with. Pablo lists Git, Mercurial, TFS, Perforce, Sourcetree and Subversion and says that it'll plug into just about anything because just about all version control systems use common conventions for diff / merge tool integration. </li>   </ul>    <li>Platform support</li>    <ul>     <li>(20:51) Jon asks about their recent Linux support and asks if that's done using Xamarin and Mono. They use Mono for common backend code, but wrote native front-end code for Linux using Gtk#. They're currently working on an OSX version using MonoMac, which gives it a true native front-end with a standard Mac look and feel. </li>   </ul>    <li>Pricing model and free licenses</li>    <ul>     <li>(22:52) Jon asks about the pricing model. There's a 15 day free trial and a monthly subscription for $4/month. They wanted to experiment with pricing to make it so inexpensive that pricing wasn't an issue. Jon asks if the subscription checking is complex. Pablo says it give you a lot of leeway so it won't block you if you're coding on a plane or something. They don't obsess over security since it's such an inexpensive application to begin with. </li>      <li>(25:36) Jon asks about their free licenses for open source developers. Pablo says they use Mono extensively and have been offering open source licenses for Plastic SCM for a while. Pablo mentions some of the open source projects using Semantic Merge, including F-Spot and a lot of other Mono projects. </li>   </ul>    <li>Semantic based insights</li>    <ul>     <li>(26:57) Jon asks they could use their information about semantic changes to source code over time to offer other insights to developers. Pablo says that this is something they've been doing with Plastic SCM with features like semantic method history, so you can track changes to a method over time across renames, refactoring to other files, etc. They also can offer richer metrics, so you don't just see lines of code changed but can understand methods changed, refactorings, etc. Their goal for a long time has been to transform version control from a delivery mechanism to a productivity tool for developers. </li>   </ul>    <li>Plastic SCM</li>    <ul>     <li>(29:04) Jon asks how Plastic SCM compares to other version control systems. Pablo recommends going to PlasticSCM.com and look at the branch explorer. It's as powerful as Git but very easy to use. It's fully decentralized. It's very graphical, and you can do almost everything from the branch explorer. It integrates well with enterprise security with support for things like ACL's. It (of course) offers support for a lot advanced merge scenarios. It's been under development since 2005, they're in version 5 right now. It's free for every team under 15 developers. </li>      <li>(31:25) Jon asks if there's a way to test-drive Plastic SCM against an existing Git repository. Pablo explains how to do that without changing version control systems, since Plastic SCM can natively use the Git API. </li>      <li>(34:25) K. Scot asks about an old blog post about a small Windows Git application client; Pablo says that's no longer required as it's built into Plastic SCM. </li>   </ul>    <li>Wrap up</li>    <ul>     <li>(34:55) Jon asks about where listeners can find out more about Semantic Merge and Plastic SCM. </li>      <li>(35:50) Jon mentions that he really likes the team page on the Plastic SCM site - all the faces follow the mouse cursor as you move it around. He's easily amused. </li>   </ul> </ul>  <p>&#160;</p>  <p>Show Links:</p>  <ul>   <li><a href="http://www.semanticmerge.com/">Semantic Merge</a> (<a href="http://twitter.com/semanticmerge">@semanticmerge</a>) </li>    <li><a href="http://www.plasticscm.com">Plastic SCM</a> (<a title="https://twitter.com/plasticscm" href="https://twitter.com/plasticscm">@plasticscm</a>) </li>    <li><a href="http://codicesoftware.blogspot.com/">Plastic SCM blog</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0183-Semantic-Merge.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 182: Durandal Kickstarter with Rob Eisenberg</title>
    <link>https://herdingcode.com/herding-code-182-durandal-kickstarter-with-rob-eisenberg/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-182-durandal-kickstarter-with-rob-eisenberg/</guid>
    <pubDate>Tue, 24 Dec 2013 23:55:39 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Rob Eisenberg about the Durandal Kickstarter. This Kickstater ends on January 10, 2014, so go back it now! Herding Code 182: Durandal Kicksta</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 182</strong></p>
<p>The guys talk to Rob Eisenberg about the Durandal Kickstarter. <a href="http://www.kickstarter.com/projects/eisenbergeffect/durandal-2014">This Kickstater ends on January 10, 2014, so go back it now!</a></p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0182-Durandal-Kickstarter.mp3">Herding Code 182: Durandal Kickstarter with Rob Eisenberg</a>
</p>  <p>Show Notes:</p>  <ul>   <li>Durandal overview      <ul>       <li>Quick overview of what Durandal is </li>        <li>How Durandal compares to other SPA frameworks </li>        <li>Durandal updates to date </li>     </ul>   </li>    <li>Durandal Kickstarter      <ul>       <li>Timeframe </li>        <li>Contribution amounts and benefits </li>        <li>List of Kickstarter goals </li>        <li>How Kickstarter benefits relate to OSS release </li>     </ul>   </li>    <li>Release goal </li>    <li>Tooling goal </li>    <li>Training goal </li>    <li>NextGen      <ul>       <li>Flexible modules </li>        <li>Web Components </li>        <li>Object.observe </li>        <li>Dependencies </li>        <li>Polyfills </li>     </ul>   </li>    <li>Backer benefits </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://devlicio.us/blogs/rob_eisenberg/default.aspx">Rob Eisenberg</a> - <a href="http://twitter.com/eisenbergeffect">@EisenbergEffect</a> </li>    <li><a title="http://www.kickstarter.com/projects/eisenbergeffect/durandal-2014" href="http://www.kickstarter.com/projects/eisenbergeffect/durandal-2014">Durandal 2014 Kickstarter</a> </li><li><a href="http://durandaljs.com">DurandalJS.com</a> </li><li><a title="https://wiki.mozilla.org/Apps/x-tag" href="https://wiki.mozilla.org/Apps/x-tag">Mozilla x-tag</a> </li>    <li><a title="http://addyosmani.com/blog/the-future-of-data-binding-is-object-observe/" href="http://addyosmani.com/blog/the-future-of-data-binding-is-object-observe/">Addy Osmani - The future of data binding is object.observe</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0182-Durandal-Kickstarter.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 181: CouchDb, Cloudant, MyCouch and SisoDb with Max Thayer and Daniel Wertheim</title>
    <link>https://herdingcode.com/herding-code-181-couchdb-cloudant-mycouch-and-sisodb-with-max-thayer-and-daniel-wertheim/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-181-couchdb-cloudant-mycouch-and-sisodb-with-max-thayer-and-daniel-wertheim/</guid>
    <pubDate>Thu, 19 Dec 2013 21:18:12 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Max Thayer and Daniel Wertheim about document databases, especially focusing on CouchDb and Cloudant&apos;s cloud-hosted CouchDb offering. Herding</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 181</strong></p>
<p>The guys talk to Max Thayer and Daniel Wertheim about document databases, especially focusing on CouchDb and Cloudant's cloud-hosted CouchDb offering.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0181-CouchDb.mp3">Herding Code 181: CouchDb, Cloudant, MyCouch and SisoDb with Max Thayer and Daniel Wertheim</a></p>  <p>Show Notes:</p>  <ul>   <li>Intro      <ul>       <li>(00:40) Jon says he heard about Daniel because of SisoDb, a document database running on top of SQL Server. Jon and Daniel talk about what SisoDb does and why it could be useful in a &quot;SQL Server only&quot; shop. </li>        <li>(01:55) Daniel introduced Jon to Max, who works as a developer evangelist at Cloudant and hacks on Node.js and CouchDb. </li>     </ul>   </li>    <li>CouchDb and Cloudant basics, multi-master replication possibilities      <ul>       <li>(02:30) Jon asks Max what Cloudant does. Max says that Cloudant is a database as a service - a hosted, managed document database based on CouchDb. </li>        <li>(02:58) Max talks about multi-master replication and some of the implications, including PouchDb (which treats your browser as a CouchDb instance), and even running a node on your phone that you can replicate against. Jon's mind is blown. </li>        <li>(04:30) Jon asks about the latency involved in using an HTTP database as a service. Max says that local caching helps, as well as having your database service physically close to your users (or app/web servers). Queries are always done against precomputed indexes, so query time is always logarithmic. Daniel says you can use replication to bring data as close as possible, and emphasizes the importance of in-application caching. </li>        <li>(06:38) Kevin says that there have been a lot of attempts at replication based systems over the years and asks what CouchDb does differently. Max says that the big difference is in the way CouchDb handles multi-version concurrency control by keeping revision trees. This lets them run a lockless system and investigate changes later. Daniel says that consistent hashing helps with this and explains the terms. Max talks about the use of revision numbers and conflict handling. </li>        <li>(09:08) Daniel says he likes that Cloudant adds clustering support, and he's excited that Cloudant is contributing this back to CouchDb. Max says that they've also added a new administrative interface called Photon, which they'll be contributing back. </li>        <li>(10:19) Daniel asks if this means that Big Couch is being deprecated. Max says yes, and Kevin asks for more information on what Big Couch is. </li>     </ul>   </li>    <li>Migrating to CouchDb      <ul>       <li>(10:57) Jon asks about the migration path for applications using traditional RDBMSs to Cloudant or CouchDb. Max explains two options: the do it yourself option (uploading data as CSV's or similar) or using the WEAVE@cloud service from CloudBees. </li>        <li>(14:13) Daniel asks about task of moving from traditional queries to map - reduce queries. Max talks about some of the migrations he's been a part of, and talks about the use of Lucene queries as a bridge. Daniel says that in moving to document databases you really need to think differently about how you'll consume the data, e.g. . Max talks about design documents, which store indexes, list functions. </li>        <li>(16:06) Jon says that when he started looking at document databases, he found that it was also helpful to store additional data in a way that it's easy to query. Max gives an example using medical data in which you can normalize data as part of the map reduce process, so you rarely have to worry about schema. Daniel says that it's the result of the map that's being indexed. Max says that unlike some other systems like Hadoop that do the mapping in a batch, CouchDb updates indexes incrementally. </li>        <li>(18:42) Jon asks how CouchDb compares to Mongo. Max says he found Mongo to be a good transitional system from relational databases because the querying was similar, but it broke down at scale. </li>        <li>(19:50) Jon puts K Scott on the spot and asks how this strikes him due to his recent work with medical data on Mongo. K Scott says it's good to know CouchDb is an option if they hit scaling issues. </li>        <li>(20:43) Jon asks about the process of migrating from Mongo to CouchDb. Max says he's written a script that dumps data from JSON in Mongo to be imported into CouchDb. He says that on the surface, Mongo and CouchDb store data similarly so migrating data isn't that hard - the real differences are in querying and locking. </li>     </ul>   </li>    <li>Cloudant - features, pricing model, free account setup      <ul>       <li>(22:21) Jon asks how Cloudant compares to other database as a service offerings. Max lists some, and Daniel mentions Iris Couch. Daniel talks about how easy it is to get started with CouchDb on Windows, then migrate to Cloudant. </li>        <li>(24:12) Max talks about some of the features they've added recently, like Lucene queries and geographic querying. Max says that they contribute a lot to CouchDb. </li>        <li>(25:30) Jon asks how Cloudant integrates with the hosting providers they've got listed. Max says that they work to host Cloudant servers in the same datacenters as their hosting partners. </li>        <li>(27:05) Kevin asks how Cloudant charges. Max says that for dedicated clusters, it's per-node and dependant on the hosting provider since they all charge differently. For multi-tenancy, it's on a per-request and per-storage. Migrating between dedicated and multi-tenant is handled using the standard replication mechanism. </li>        <li>(27:39) Jon asks about the process of getting started with the free level. Max explains how it works and says they'll only charge you if you exceed $5 per month, which is a good amount of use. Daniel says it takes less than 5 minutes to get started. </li>     </ul>   </li>    <li>Client libraries and MyCouch      <ul>       <li>(29:03) Kevin asks if there are client libraries for most libraries. Max says there are, but most are just adapted from the CouchDb libraries. </li>        <li>(29:43) Daniel built MyCouch as a purely async library that doesn't hide the domain knowledge of CouchDb. Jon asks about the overall flow of using the MyCouch NuGet package to get started. Daniel says he's use Portable Class Library support to cover the different the different platforms. </li>        <li>(31:53) Jon asks about the Query.Configure interface to build a query. </li>        <li>(32:44) Jon asks about the history of Daniel's interest in CouchDb and MyCouch. </li>     </ul>   </li>    <li>Migrating from Cloudant to in-house CouchDb      <ul>       <li>(33:20) Kevin asks if Cloudant is a hosted version of CouchDb or a fork. Max says that currently it's a fork, but they contribute a lot back. </li>        <li>(33:43) Kevin then asks about what would be required in bringing a Cloudant-hosted application back in-house to run under vanilla CouchDb. Max say that in addition to losing the managed / hosted value, you'd lose Lucene querying and (soon) the geo-indexing features. Daniel also points out Cloudant's clustering support. </li>     </ul>   </li>    <li>Questions from Twitter      <ul>       <li>(34:55) Rob Sullivan asks Daniel how working with SisoDb and CouchDb affect the way he views document databases and RDBMSs. Daniel says that he doesn't want to see an ORM anymore and he's noticed that a lot of people are creating hierarchical document structures in SQL Server when a document database would be a better fit. He says that there's a little less safety in distributed document databases, and you just have to get used to working with that. Kevin asks about some of the application strategies people use to deal with that. Max says that CouchDb provides ACIDity at the document level, so as long as you wrap your transactions into a single document you're fine. This leads to event sourcing, in which all your transactions are handled as separate documents. </li>        <li>(39:23) Steve Strong asks about the offline story to synchronize change changes to a web client. Max talks about PouchDb and how it works in web clients with intermittent data access. </li>        <li>(41:31) Jon asks if PouchDb and CouchDb could be used in peer-to-peer systems. Max says this is something he's profoundly interested in. He's done some conference talks about it and has a project called Quilter which is aimed at feature parity with Dropbox but with full user control, security and privacy by eliminating centralized network infrastructure. Daniel asks if it's NSA-safe, and Max talks about how you can protect things using HTTPS and friend / reputation systems </li>     </ul>   </li>    <li>Erlang      <ul>       <li>(46:13) Kevin asks what it's like working with CouchDb's code, since a lot of it's written in Erlang. Max says that it's built around building effective distributed systems since it incorporates fault handling. Daniel talks about the low memory footprint and Max talks about the ability to pass native Erlang messages over arbitrary protocols including HTTP. </li>        <li>(49:02) Jon asks where to learn more about Erlang. Max points out the book (available online) called Learn You Some Erlang For Great Good. </li>        <li>(49:44) Jon asks about what it's like to integrate Erlang into parts of an application. </li>     </ul>   </li>    <li>CouchDb vs. Mongo      <ul>       <li>(50:51) Kevin asks why Mongo gets more press than CouchDb. Max says that Mongo has a similar interface to traditional RDBMSs, but a lot of it's just been a marketing victory. He talks about some unappreciated CouchDb advantages, like the fact that it's got a built-in REST interface. He also says that CouchDb scales better than Mongo due to technical differences such as multi-version concurrency control.&#160; </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Max Thayer (<a href="http://www.maxthayer.org/">blog</a>, <a href="https://github.com/garbados/">github</a>, <a href="https://twitter.com/garbados">twitter</a>) </li>    <li>Daniel Wertheim (<a href="http://danielwertheim.se/">blog</a>, <a href="https://github.com/danielwertheim">github</a>, <a href="https://twitter.com/danielwertheim">twitter</a>) </li>    <li><a href="https://cloudant.com/">Cloudant</a> </li>    <li><a href="http://pouchdb.com/">PouchDb</a> </li>    <li><a href="https://github.com/danielwertheim/mycouch">MyCouch on GitHub</a> / <a href="https://www.nuget.org/packages/MyCouch/">MyCouch on NuGet</a> </li>    <li><a href="http://www.cloudbees.com/platform/services/integrate">WEAVE@cloud</a> migration solution from CloudBees </li>    <li><a href="http://www.iriscouch.com/">Iris Couch</a> </li>    <li><a href="https://github.com/garbados/quilter">Quilter</a>&#160; </li>    <li><a href="http://sisodb.com/">SisoDb</a> </li>    <li><a href="http://learnyousomeerlang.com/">Learn You Some Erlang For Great Good</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0181-CouchDb.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 180: Visual Studio 2013 Web Tools, Web Essentials and Side Waffle with Mads Kristensen</title>
    <link>https://herdingcode.com/herding-code-180-visual-studio-2013-web-tools-web-essentials-and-side-waffle-with-mads-kristensen/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-180-visual-studio-2013-web-tools-web-essentials-and-side-waffle-with-mads-kristensen/</guid>
    <pubDate>Wed, 06 Nov 2013 23:04:33 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Mads Kristensen about all the new web tools in Visual 2013, Web Essentials, Side Waffle and Web Dev Checklist. Herding Code 180: Visual Studi</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 180</strong></p>
The guys talk to Mads Kristensen about all the new web tools in Visual 2013, Web Essentials, Side Waffle and Web Dev Checklist.

Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0180-Mads-Kristensen.mp3">Herding Code 180: Visual Studio 2013 Web Tools, Web Essentials and Side Waffle with Mads Kristensen</a>

Show Notes:
<ul>
	<li>Intro
<ul>
	<li>(00:34) Mads works on the ASP.NET team building tools for everything that has to do with web development. He's also done a lot of open source development - BlogEngine.NET, Web Essentials and some other Visual Studio extensions.</li>
	<li>(01:25) Jon asks Mads to overview what's new in Visual Studio. Visual Studio 2012 included a new JavaScript and CSS Editor, Visual Studio 2013 added Browser Link.</li>
	<li>(02:48) Visual Studio 2013 has Browser Link, which allows you to connect any browser with Visual Studio. Any extension in the browser or Visual Studio can talk to each other via a web socket connection. The refresh browser feature in Visual Studio 2013 is just a proof of concept, the real feature is the communications channel.</li>
	<li>(04:07) Scott K Asks about the Page Inspector feature and whether that would be integrated with Browser Link. Mads says that Page Inspector was introduced with Visual Studio 2012. It includes browser tools and source mapping which allow you to trace the markup back to what generated it, including C# code and server controls. Mads took over the Page Inspector team almost a year ago, and they're using the same underlying engine. Right now you don't get live updates in Page Inspector with Visual Studio 2013, but with the Web Essentials extension you will.</li>
	<li>(07:19 Jon asks about how the source mapping works. Mads explains that the ASP.NET runtime injects a script tag at the end of your page, and Visual Studio is listening for it to connect on a localhost endpoint. Mads explains that the Browser Link connection is only made under specific conditions - running locally, in debug, etc.</li>
	<li>(09:10) Jon asks about some of the recent extensions Mads has demonstrated, especially the example which tracks unused CSS class names. Mads says this has been a long requested feature, but it's only possible to do this right from inside the browser. They're now able to add smart tags into the CSS editor to show unused CSS classes. It's available now using Visual Studio 2013 and Web Essentials.</li>
	<li>(12:24) Scott K asks if it's possible to see which classes are overriding others. Mads said it's not there yet, but on the way.</li>
	<li>(13:08) Jon asks about the process for creating an extension, and what parts are open source. Mads says that the project and item templates are open sourced. He explains the steps to create a Browser Link extension. The project template contains a C# file and a JavaScript file which are able to talk to each other. The Browser Link JavaScript contains an isolated copy of jQuery. In both the C# and JavaScript, you can call directly into the other side using simple Call methods.</li>
	<li>(17:23) Scott K asks if they can hook up the model binder to allow deserializing more complex types. Mads says it's not available yet, but on the way.</li>
	<li>(18:00) Scott K asks if they've done any prototyping for unit testing automation, to allow running JavaScript testing frameworks like Jasmine with Visual Studio integration. Mads says it was part of his initial pitch for the Browser Link feature, but it hasn't been implemented yet.</li>
	<li>(19:04) Jon says they could also test performance using testing automation, and Mads says that they could do quite a bit more with performance and browser testing by working with browser extensions - Page Speed, SEO, accessibility, etc. They can call off to any service anywhere on the internet.</li>
	<li>(21:10) Jon asks about some of the extensions and prototypes he's worked on. Mads says he's wrote an extension for LESS and CSS editors which updates the page as you type - without even requiring you to save the CSS document.</li>
	<li>(23:50) Mads talks about the inspect mode extension. When you hit ctrl-alt-I in the browser, you can hover over any DOM element and see the source in Visual Studio (including controls, views, Master Pages, partials, etc.).</li>
	<li>(25:35) Mad talks about design mode (ctrl-alt-d) which turns any DOM element into a content editable field, which allows you to type in the browser and change the server-side code. He talks about some complexities due to changing the server-side code which throws off the source mapping, and how when they make some future changes to allow updating source maps on the fly they'll be able to allow pretty complex browser-based design and editing.</li>
	<li>(29:35) Scott K asks if they could use the shadow DOM to allow updating the source maps. Mads says that wouldn't work with older browsers, and there's some discussion of legacy browser support.</li>
	<li>(31:17) Scott K talks about a feature he liked in Brackets, which allowed viewing styles applied to a code fragment when editing HTML. He asks if he could get something like Visual Studio 2013 Code Lens to view the styles and navigate to the CSS. Mads talks about some of the complexities there, explaining how they inject ID's into all elements and include the mapping in a JSON blob. Given an element ID, your JavaScript can look up the source file and range that corresponds to it on the server.</li>
</ul>
</li>
	<li>Web Essentials
<ul>
	<li>(36:12) Mads talks about the history of Web Essentials. It started out in 2010, but the old Visual Studio HTML and CSS editors limited what he could do. He used Web Essentials as the test project to make sure that Visual Studio 2012 supported the extensibility API's, then released a new version to correspond with Visual Studio 2013. He open sourced it at BUILD 2013 in June.</li>
	<li>(37:36) Jon asks about how Mads migrates features from Web Essentials to Visual Studio. Mads says that he does this on every Visual Studio release (including updates) which allows him to delete a lot of code. There are some features which don't get migrated - niche features, features for which they're still testing out the user experience. He talks about some neat features in Web Essentials that he likes, but he doesn't think enough people use to justify migrating.</li>
	<li>(39:57) Jon asks about the language Web Essentials supports. Mads lists Markdown, LESS and Coffeescript. Mads talks about how they were able to include LESS and Coffeescript support from Web Essentials while waiting on the Visual Studio 2012.2 release, then removed it when that update shipped. He talks about the problems they hit due to the editor overlap. Mads said that situation caused him to change his philosophy on features to add in Web Essentials - he'll no longer include features in Web Essentials which could cause a conflict with Visual Studio, especially compiler related features; that's why he removed TypeScript support from Web Essentials.</li>
	<li>(44:14) Jon mentions robots.txt support in Web Essentials. Mads explains that this is a great example of how his personal web development frustrations turn into Web Essentials features. He's hoping that open sourcing Web Essentials will lead other developers to contribute as well.</li>
</ul>
</li>
	<li>Web Dev Checklist
<ul>
	<li>(46:35) Jon asks about Web Dev Checklist. Mads and Sayed were both working on building out some sites last year, and they came up with a list of important checks for any website - performance, accessibility, SEO, etc. They got on Hacker News and were happy that their site held up well under the traffic.</li>
</ul>
</li>
	<li>Side Waffle
<ul>
	<li>(49:16) Side Waffle is a Visual Studio extension which gives you a lot of templates so you can add things to your projects which were written the write way, by experts. They've got Angular controllers, Durandel, robots.txt, etc. They're hoping for other developers to add new templates.</li>
	<li>(51:36) Mads says that the teams at Visual Studio can't create and maintain all the templates over time. Jon says he's seen this again and again - new things get released but don't always get maintained over the years. Mads says this makes it easy for developers to add and update templates.</li>
	<li>(53:28) Mads says Sayed came up with the name from ordering a side order of waffles in a restaurant.</li>
	<li>(54:24) Mads explains some of the technical complexities that he and Sayed had to deal with to allow adding new item templates to Visual Studio. Due to the strange ways they worked with MSBuild, Side Waffle isn't allowed into the Visual Studio Gallery. They register Side Waffle as a Visual Studio gallery provider so when new templates are added, it will show up in the Visual Studio updates list. Jon's confused, and Mads explains more about what's going on.</li>
</ul>
</li>
	<li>Lightning Round questions from Twitter
<ul>
	<li>(58:31) Barry Dorrans asks why Mads is pushing the #region agenda on unsuspecting HTML files.</li>
	<li>(59:08) Warren Buckly asks "There is support for LESS, will there ever be support for SASS?"</li>
	<li>(59:34) Jonas Eriksson asks Is it possible to extend the new HTML editor IntelliSense?"</li>
	<li>(51:52) Jonas Eriksson asks if it's possible to start a Grunt task and monitor its output.</li>
	<li>(1:00:09) Saul asks how to create a static website in Visual Studio.</li>
	<li>(1:01:07) Bret Ferrier asks about getting Angular IntelliSense with TypeScript.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Mads Kristensen (<a href="http://madskristensen.net/">blog</a>, <a href="https://twitter.com/mkristensen">@mkristensen</a>)</li>
	<li><a href="http://VSWebEssentials.com">VSWebEssentials.com</a></li>
	<li><a href="http://SideWaffle.com">SideWaffle.com</a></li>
	<li><a href="http://webdevchecklist.com/">Web Dev Checklist</a></li>
	<li><a href="http://madskristensen.net/post/angularjs-intellisense-in-visual-studio-2012">AngularJS Intellisense in Visual Studio 2012</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0180-Mads-Kristensen.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 179: xSockets with Uffe Bjorklund and Magnus Thor</title>
    <link>https://herdingcode.com/herding-code-179-xsockets-with-uffe-bjorklund-and-magnus-thor/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-179-xsockets-with-uffe-bjorklund-and-magnus-thor/</guid>
    <pubDate>Tue, 15 Oct 2013 23:55:10 GMT</pubDate>
    <description><![CDATA[<p>K Scott and and Jon talk to about Uffe Bjorklund and Magnus Thor about xSockets, a free framework for Web Socket and WebRTC communications. Herding Code</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 179</strong></p>
<p>K Scott and and Jon talk to&#160; about Uffe Bjorklund and Magnus Thor about xSockets, a free framework for Web Socket and WebRTC communications.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0179-xSockets.mp3">Herding Code 179: xSockets with Uffe Bjorklund and Magnus Thor</a></p>  <p>Show Notes:</p>  <ul>   <li>Intro      <ul>       <li>(00:30) Uffe and Magnus introduce themselves. </li>        <li>(00:50) K Scott asks about how xSockets got started, and what problem it solves. </li>        <li>(02:05) Jon asks if xSockets is a business or a project. Magnus says it's now a full-time business - they've been working on xSockets for four years, but they've gone full-time earlier this year. Uffe points out that while it's supported by a full time business, xSockets is free to use. </li>     </ul>   </li>    <li>xSockets compared to SignalR, unique xSockets features      <ul>       <li>(02:57) K Scott asks how xSockets compares with SignalR. Magnus says they've been working on this for 4 years and mentions some differences. Uffe compliments the SignalR project and community, then points out that one important difference is that xSockets is stateful, whereas SignalR isn't. </li>        <li>(04:54) Jon talks about the different approaches towards stateful controllers, and that it seems that stateful controllers could simplify things. Uffe describes some advantages, like filtering where you send messages dynamically with lambda expressions (a lot more control than groups in SignalR). </li>        <li>(06:10) Magnus talks about the JavaScript proxy in the xSockets which also is able to interact with state on the server. </li>        <li>(07:09) K Scott asks about other differences. Uffe says that xSockets is very portable - running on IIS, OWIN, Azure, Amazon, a Raspberry Pi, even your cellphone if you want. It runs on anything that runs .NET 4 or Mono, and they've had reports on it running a wide variety of hardware. </li>        <li>(07:52) Jon says he's heard of people using local servers for desktop applications. Uffe says they have people in Russia doing that with xSockets. </li>        <li>(08:20) Magnus says that they have support for long-running controllers. </li>        <li>(08:50) Uffe says they've got a plugin framework. It was originally built on MEF, but they've recently rewritten it to remove the MEF dependency. You can drop an assembly in the xSockets&#160; folder and it will be picked up. Jon says it looks pretty similar to MEF; Uffe says he loves MEF and kept it pretty similar. </li>        <li>(09:55) K Scott says it feels very similar to ASP.NET MVC, in that there's a controller base class that you extend. </li>        <li>(11:00) K Scott asks if there's a routing mechanism. Uffe describes the extension methods that allow sending messages as well as using the routing system. </li>        <li>11:52 Jon says he noticed the generic controller which works as a message dispatcher. Uffe describes how it works as a smart dispatcher, which will only dispatch messages to people who are subscribed. This is useful to people who are familiar with JavaScript; they can do pretty advanced stuff without needing to write any server-side code. </li>        <li>(12:56) Magnus describes the channel system, which allows for some complex, private communications without requiring server-side code. </li>     </ul>   </li>    <li>Web Sockets protocol      <ul>       <li>(14:02) K Scott remarks that the Web Sockets protocol has changed quite a bit over the years. Magnus says that it was very difficult earlier, but has stablilized. </li>        <li>(15:02) K Scott asks if there's a test suite for Web Sockets available. Uffe says there are some, but all have problems. The xSockets team uses their own testing system. </li>        <li>(16:00) Jon asks if the Web Sockets API is difficult to use. Magnus says the two first versions were pretty easy, but the RFC introduced some more difficult concepts like control frames and continuous frames.&#160; There are a lot of solutions on GitHub and CodePlex for dealing with protocol stuff. </li>     </ul>   </li>    <li>Web RTC      <ul>       <li>(16:40) Jon asks about Web RTC support. Magnus says Web RTC enables realtime communications in the browser using peer-to-peer communication without requiring a server or middleman once the communications are established. </li>        <li>(18:47) K Scott asks if the Web RTC communications are TCP or UDP. Magnus says it's UDP so it can be unreliable. There's a NuGet package with a full sample showing how it works. </li>        <li>(20:00) K Scott asks about the processing pipeline. Uffe describes the Rewritable attribute - you can use that to override anything in the pipeline. </li>     </ul>   </li>    <li>Fallback and pipeline      <ul>       <li>(21:05) Jon asks about fallback support for older browsers. Magnus says there's long-polling support based on MVC; they're going to replace that with a Web API based solution. Uffe says it's easy to implement; just add a JavaScript reference. He also says there's no MVC dependency in xSockets, so you can use it without MVC if you want. </li>     </ul>   </li>    <li>External API      <ul>       <li>(22:25) K Scott asks about the external API. Uffe says it should probably called something clearer - it's a client that can be used in any C# code, as well as PowerShell and even compiled stored procedures in SQL Server. Uffe describes some of the ways he's seen it used. </li>     </ul>   </li>    <li>Crazy things people have been doing with xSockets      <ul>       <li>(24:24) K Scott asks if there's anything crazy they've seen people do with xSockets. Magnus talks about a microscope control system used in Jamaica. Uffe talks about a realtime water monitoring system in Dubai running in C# 2.0 on Windows CE. They're now able to control the water system via a web page, which replaced the need for an entire water monitoring facility. </li>        <li>(27:32) Magnus talks about a Fruit Ninja like game using xSockets, HTML5 canvas and Kinect. That lead to a job building a virtual lobby, which they completed in 10 days. </li>        <li>(28:18) K Scott asks about authentication and authorization with xSockets. </li>     </ul>   </li>    <li>Final questions, Samples and Videos      <ul>       <li>(29:08) K Scott takes a question from Twitter about what they think about OWIN. Magnus says they support it and it seems like a good idea, but he can't </li>        <li>(29:42) K Scott asks about the While You Were Gone example. Uffe says this is a queue system that handles offline messages, so if you're disconnected for a period of time it will deliver the messages when you reconnect. </li>        <li>(31:12) K Scott asks if there's anything that may have been missed. Uffe talks about clustered servers - they're all siblings which communicate peer-to-peer. </li>        <li>(32:48) Uffe talks about some upcoming travel they've got later this year for Desert Code Camp in November and possibly NDC London in December. </li>        <li>(33:22) Jon talks about the best way for people to get started. Magnus recommends the videos on xSockets.net. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://twitter.com/dathor">Magnus Thor</a> &amp; <a href="http://twitter.com/ulfbjo">Uffe Bjorklund</a> on Twitter </li>    <li><a href="https://twitter.com/xsockets">xSockets</a> on Twitter </li>    <li>Paul Stack (<a href="http://paulstack.co.uk/blog/">blog</a>, <a href="https://twitter.com/#!/stack72">@stack72</a>) </li>    <li><a href="https://groups.google.com/forum/?hl=en#!forum/xsocketsgroup">xSockets Developer Forum</a> </li>    <li><a href="http://xsockets.net/xsockets-vs-signalr">Comparison of xSockets and SignalR</a> </li>    <li><a href="http://xsockets.net/video-tutorials">xSockets video tutorials</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0179-xSockets.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 178: Async, C# Syntax, AngularJS, Document Databases, Podcast Hosting, A New Job and Summer Vacations</title>
    <link>https://herdingcode.com/herding-code-178-async-c-syntax-angularjs-document-databases-podcast-hosting-a-new-job-and-summer-vacations/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-178-async-c-syntax-angularjs-document-databases-podcast-hosting-a-new-job-and-summer-vacations/</guid>
    <pubDate>Mon, 09 Sep 2013 23:49:49 GMT</pubDate>
    <description><![CDATA[<p>The guys chat about Async, . Herding Code 178: Async, C# Syntax, AngularJS, Document Databases, Podcast Hosting, A New Job and Summer Vacations</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 178</strong></p>
<p>The guys chat about Async, .</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0178-Discussion.mp3">Herding Code 178: Async, C# Syntax, AngularJS, Document Databases, Podcast Hosting, A New Job and Summer Vacations</a></p>  <p></p>  <p>Show Notes:</p>  <ul>   <li>Async: Our Generation's Goto Statement?</li>    <ul>     <li>(00:19) Jon introduces a listener question referring to . </li>      <li>(00:52) Kevin says he thinks the Callback Hell problem is overblown. In the Node world, there are flow control libraries like Async and good practices. </li>      <li>(01:51) Scott K agrees - using named rather than anonymous functions solves a lot of problems he sees. He asks if things would be better if everything was Async by default. Jon says he thinks Async-creep and Async by default push you down a better path most of the time. Kevin says since Node's always forced that pattern it's been simpler.</li>      <li>(04:40) Kevin says he Async / Await only address simple cases where you want a series of steps. Flow control libraries allow for more complex flow, parallel operations, etc. Jon talks about how multiple async operations can get complex pretty quickly - dealing with error conditions, timeouts, etc. and Scott K points out the difference between parallel processing and async.</li>   </ul>    <li>C# Syntax and Xamarin Speculation</li>    <ul>     <li>(07:42) Jon says there's room for a lot more syntactic sugar in C# - not just async, but dynamics, chained null checking, etc. Jon and Scott K talk about the benefits and limitations of the null coalescing operator (??).</li>      <li>(10:50) Scott K says async may be the next TDD in terms of driving good design.</li>      <li>(11:47) Kevin wonders when Xamarin will cut the cord and begin innovating on C# separately from Microsoft. The guys discuss some of the things they've been doing - repl, SIMD support, etc., but Jon points out that it's all innovation at the compiler level, not on the language. Scott K talks about how our recent interview with Jon McCoy talked about modifying IL, and wonders if Xamarin will get into doing that kind of thing. Kevin asks what benefit Xamarin gets from keeping compatibility with Microsoft. Jon doesn't buy it.</li>      <li>(15:01) Scott K wonders if the C# spec or compiler were open enough that people could innovate on it. Jon thinks Roslyn could do that, but he's just making stuff up.</li>   </ul>    <li>AngularJS - K Scott's impressions</li>    <ul>     <li>(16:36) Jon asks K Scott about his recent experiences with Angular. K Scott says that most things are easy, but hard things get complex, so he's been reading the source code. He says the source code is mind bending. There are a lot of different ways to accomplish something - binding, watching, raising events, etc. - and it's hard to know what's going to work.</li>      <li>(18:33) Jon refers to the Ember / Angular Cage Match at NDC and how Angular worked great until it was time for a directive, and that got trickier. K Scott says there's room for some polish on the Angular API. For instance, there are 3 or 4 ways to register a service. </li>      <li>(19:40) Jon asks K Scott if he's used Ember and how he'd compare them. K Scott says he's invested Angular and hasn't had time to dig into Ember. He says Ember seems to provide more of a path for users, whereas Angular seems more tacked together.</li>      <li>(21:02) Kevin asks how much people become locked into a front end framework. K Scott say</li>      <li>(22:00) Scott K says most of the complaints about Angular are around changes to the API and documentation over time. </li>      <li>(22:48) Scott K says it seems like Ember examples generally require more code. The guys discuss the balance of declarative code vs. magic that sometimes goes off the rails. </li>      <li>K Scott says he sometimes gets flashbacks to ASP.NET Web Forms controls. Kevin mentions HTCs in Internet Explorer and Jon says it seems like things are coming back around to that kind of thing with web components. K Scott says there are pretty good separation of concerns to directives, but directives can be really hard to extend - you want to tweak one thing and pretty soon you're reimplementing a lot more than you wanted to. </li>   </ul>    <li>Document Databases</li>    <ul>     <li>(26:36) Jon says he got to use Redis on a project and talks about his experiences. K Scott's been using Mongo for a hospital system. Kevin says he hears people complain about Mongo, K Scott says performance and diagnostics can be frustrating. </li>      <li>(28:53) Kevin's used it for Greater Than Parts and at his new job. He says the biggest mind shift is in how you model things. Jon says that was the biggest thing he learned - it's not just a pile of documents, you still need to model things. K Scott says migrations and configuration management are important.</li>      <li>(31:39) Kevin asks K Scott how they're working with lack of transactional integrity. K Scott says fortunately not, everything's bulk loaded in this application.</li>   </ul>    <li>Kevin's new job at Brandcast</li>    <ul>     <li>(32:26) Jon asks Kevin about the new job. Kevin's working at Brandcast. Their mission is to make it really easy for people to set up a web presence that works well on multiple devices without any technical background. It's a small shop running Node and Backbone. Kevin's gone from being the young guy at his old company to the old guy at the new job.</li>      <li>(33:47) Jon asks Kevin about the process and structure there. Kevin says there's a test server, but they're pretty aggressive with continuous deployment.</li>      <li>(34:39) Jon asks if they're using frameworks on top of Backbone. Kevin's used Marionette, They're using Backbone Layout Manager and Supermodel.</li>   </ul>    <li>HerdingCode.com Operations Report</li>    <ul>     <li>(35:36) Jon gives an update on the Herding Code website and hosting setup. We've been running for over five years on an el cheapo WordPress account.</li>      <li>(37:00) Jon's been using CloudFlare to do some front-end caching and security blocking.</li>      <li>(37:50) Jon talks about some of the security things he's set up, including a plugin to lockout IPs after incorrect logins, long password and OpenID login.</li>      <li>(38:33) The new release of WordPress uses MediaElement.js to use HTML5 audio with Flash / Silverlight fallback, and Jon extended that using some JavaScirpt to show a play indicator in the browser tab when audio elements are playing.</li>      <li>(39:51) There's a WordPress plugin to show a mobile friendly theme.</li>      <li>(40:50) Kevin says the times we've run into trouble have been CPU related. Jon talks about the different layers of caching - Cloudflare on the front end, W3 Total Cache on the backend.</li>      <li>(44:12) Scott K asks about what kind of value adds a podcast app could add, beyond just an audio player.</li>      <li>(45:58) Jon says that the only thing that does change on the site is comments, so he's outsourced that to Disqus. Scott K and Kevin talk about how Disqus has been heading downhill by inserting stupid ads, or &quot;climbing douchebag mountain&quot; in Kevin's words.</li>   </ul>    <li>Summer Report</li>    <ul>     <li>(49:30) Kevin asks what everyone's done with their summers.</li>      <li>(49:37) Scott K had to update a Monorails site using the Brails engine. The biggest frustration was that in the latest rewrite, they pulled all the documentation and source for old versions - even the NuGet packages. Kevin says that's why he's not a fan of including package managers in deployment - things can disappear from the feed and you're screwed. Jon tells an old story about a stored procedure that called a COM object to split comma delimited strings.</li>      <li>(53:42) Kevin got a new job and travelled to Paris and Switzerland and San Diego.</li>      <li>(54:02) Jon went to NDC, then worked on Scott Hanselman's keynote demo at BUILD, then went on some family vacation time in New Jersey.</li>      <li>(55:21) K Scott worked a lot but says he'll have exciting stories later. The guys congratulate him on all the press about his Pluralsight courses.</li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://tirania.org/blog/archive/2013/Aug-15.html">Callbacks as our Generations' Go To Statement</a> (Miguel de Icaza)</li>    <li><a href="https://github.com/caolan/async">Async.js</a></li>    <li><a href="https://herdingcode.com/herding-code-169-tom-dale-and-rob-conery-on-the-emberjs-angularjs-cage-match-at-ndc/">Herding Code 169: Tom Dale and Rob Conery on the Ember.js / AngularJS Cage Match at NDC</a></li>    <li><a href="http://brandcast.com/">Brandcast</a></li>    <li><a href="http://www.site5.com/in.php?id=56754">Site5 hosting</a></li>  <li><a href="http://weblogs.asp.net/jgalloway/archive/2013/08/22/adding-an-audio-play-indicator-to-your-page-s-tab-with-a-few-lines-of-javascript.aspx">Adding an audio play indicator to your page's tab with a few lines of Javascript</a></li>  <li><a href="https://www.cloudflare.com/">CloudFlare</a></li>    <li>WordPress plugin: <a href="http://wordpress.org/plugins/limit-login-attempts/">Limit Login Attempts</a></li>    <li>WordPress plugin: <a href="http://wordpress.org/plugins/w3-total-cache/">W3 Total Cache</a></li>    <li><a href="http://disqus.com/">Disqus</a></li>    <li><a href="http://blog.pluralsight.com/2013/07/09/online-educations-millionaire-teacher/">Online Education's Millionaire Teacher</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0178-Discussion.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 177: Anthony vander Hoorn on Glimpse Internals</title>
    <link>https://herdingcode.com/herding-code-177-anthony-vander-hoorn-on-glimpse-internals/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-177-anthony-vander-hoorn-on-glimpse-internals/</guid>
    <pubDate>Wed, 21 Aug 2013 22:40:19 GMT</pubDate>
    <description><![CDATA[<p>At NDC, K Scott and and Jon talked to Anthony vander Hoorn about the how he and Nik built Glimpse and how it&apos;s evolved over time. Herding Code 177: Anthony va</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 177</strong></p>
At NDC, K Scott and and Jon talked to Anthony vander Hoorn about the how he and Nik built Glimpse and how it's evolved over time.

Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0177-NDC-Anthony-VDH.mp3">Herding Code 177: Anthony vander Hoorn on Glimpse Internals</a>



Show Notes:
<ul>
	<li>Glimpse internals
<ul>
	<li>(00:50) Jon asks Anthony about the JavaScript work they've done to enable Glimpse. Anthony starts with their initial implementation - just injecting a div into a page. He then talks about some of the issues they ran into over time with a large JavaScript download and a complex codebase to maintain.</li>
	<li>(02:39) Jon asks if it's still jQuery based. Anthony says it is, though they've thought of removing that dependency. It's mostly used for click event handling. They include a scoped, local copy of jQuery to prevent any conflicts with the host page's use of jQuery.</li>
	<li>(03:50) K Scott asks about some of the impacts of injecting their Glimpse content into the DOM. Anthony discusses issues with CSS, since the host page's resets and selectors can affect Glimpse's display. Glimpse includes a custom CSS reset and they scope their CSS rules.</li>
	<li>(05:50) K Scott asks if the shadow DOM and HTML5 specifications for widgets would help. Anthony says yes and talks about how people are doing things now using iframes and how things would be improved. Anthony compares it to the XAML concepts of the visual and logical trees.</li>
	<li>(07:45) Jon asks how things have changed from just injecting a div. Anthony explains how they use another div to reserve space at the bottom of the page and introduced a message bus to allow publishing and subscribing rather than handling events and callbacks.</li>
	<li>(10:33) K Scott asks about patterns used to allow for extensibility and plugins. Anthony talks about how they've refactored, first to separate files and then to modules.</li>
	<li>(12:40) Jon asks if they've looked at using some common single page application frameworks or other JavaScript frameworks. Anthony says they looked at require.js, but it didn't really buy them anything. They also looked at backbone, but again it wasn't worth the tradeoff of download size and complexity.</li>
	<li>(15:39) K Scott asks what unit testing frameworks they use. Anthony says they've just got a test harness at this point, but a lot of the testing is manual. They're looking at using TestSwarm and BrowserStack to do browser testing.</li>
	<li>(18:06) Jon asks about mobile browsers. Anthony explains the current mobile support that's been in Glimpse for a while. He discusses some other features they've looked at in the future.</li>
</ul>
</li>
	<li>Hobbies
<ul>
	<li>(20:30) K Scott asks Anthony about his hobbies. Anthony talks about his new interest in growing his own food and a renewed interest in woodworking.</li>
	<li>(21:55) K Scott asks Anthony about what he's got coming up. Anthony talks about his summer conference schedule and that he's moving to New York to keep a closer eye on Nik.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Anthony vander Hoorn (<a href="http://blog.anthonyvanderhoorn.com/">blog</a>, <a href="https://twitter.com/anthony_vdh">@anthony_vdh</a>)</li>
	<li>NDC Session video: <a href="http://vimeo.com/68383351">Web diagnostics with a Glimpse in ASP.NET</a></li>
	<li><a title="http://getglimpse.com/" href="http://getglimpse.com/">Glimpse</a></li>
	<li><a href="https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html">Shadow DOM spec</a></li>
	<li><a href="https://github.com/jquery/testswarm">TestSwarm</a></li>
	<li><a href="http://www.browserstack.com/">BrowserStack</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0177-NDC-Anthony-VDH.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 176: Jon McCoy on Hacking .NET</title>
    <link>https://herdingcode.com/herding-code-176-jon-mccoy-on-hacking-net/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-176-jon-mccoy-on-hacking-net/</guid>
    <pubDate>Wed, 07 Aug 2013 20:40:44 GMT</pubDate>
    <description><![CDATA[<p>At NDC, Jon and K Scott talked to Jon McCoy about hacking .NET and .NET developer security. Download: Herding Code 176: Jon McCoy on Hacking .NET</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 176</strong></p>
At NDC, Jon and K Scott talked to Jon  McCoy about hacking .NET and .NET developer security.

Download: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0176-NDC-Jon-McCoy.mp3">Herding Code 176: Jon McCoy on Hacking .NET</a>



Show Notes:
<ul>
	<li>Intro and NDC talks
<ul>
	<li>(00:30) Jon McCoy overviews his NDC talks, explaining how he got into security and some of the amazing things he's found out about .NET about along the way, like using Java JARs inside .NET applications.</li>
	<li>(02:55) Jon McCoy says that understanding IL and how the JIT works allows him to directly use assembly code and C++ from within .NET applications.</li>
	<li>(03:45) K Scott asks Jon McCoy about some of the tools he showed during his talks. Gray Dragon is a memory injection program which allows injecting code and remapping while an application's running. Gray Wolf allows editing an application's IL code. In his talk, he demonstrates extracting his admin password from biometrics password with six clicks.</li>
</ul>
</li>
	<li>Developer security practices: obfuscation, unit tests, monitoring
<ul>
	<li>(05:20) Jon G asks if obfuscation helps hide his code. Jon McCoy says it's always reversible and there's about a three month lag between obfuscator releases and workarounds. Just about anything that can be automated can be reversed.</li>
	<li>(06:44) Jon McCoy recommends security unit tests for practices like SQL cleaning and throwing security exceptions. Monitoring for security exceptions will let you know someone's attacking you - if someone has two years to attack you without you knowing, they're going to get in.</li>
	<li>(07:42) Attackers can target update mechanisms in desktop programs to target users throughout your enterprise. Also, the nature of .NET code makes it very difficult for antivirus software to detect when it's doing something bad.</li>
	<li>(08:30) Jon McCoy says there's a security issue with Visual Studio in that it executes constructor code for controls as they're loaded in the designer, so a malicious user can run code which runs under your user permissions.</li>
</ul>
</li>
	<li>Securing information on your computer: crypto and passwords
<ul>
	<li>(09:40) Jon McCoy talks about some of the security practices he recommends: full disk crypto with TrueCrypt, using a hardware solution like YubiKey for long passwords, and using encrypted VMs as secure containers.</li>
	<li>(11:12) Jon G asks Jon McCoy what he thinks of solutions like Keepass and LastPass. K Scott asks whether OpenID and OAuth help. Jon G laments that CardSpace never took off.</li>
	<li>(12:47) Jon G asks if signed code helps secure code at all. Jon McCoy says it doesn't really, since it's not validated.</li>
</ul>
</li>
	<li>Businesses and security
<ul>
	<li>(13:27) Jon G asks if Jon McCoy gets involved with forensics. Jon McCoy says he mostly works with small businesses who are being attacked or want to fix security issues.</li>
	<li>(14:31) K Scott asks Jon McCoy if he deals with mobile device security. Jon McCoy discusses the security blind spots desktop and mobile developers have.</li>
	<li>(15:23) Jon G asks what Jon McCoy thinks about two factor auth.</li>
	<li>(16:22) Jon McCoy explains how his background as a developer helps him understand issues in a way that IT focused security experts don't.</li>
</ul>
</li>
	<li>Defending against cracks
<ul>
	<li>(17:20) Jon asks about defense against cracks. Jon McCoy says the motivation behind cracks and malware shifts - sometimes the bad guys are just after a proxy network, password cracking machines, or even free cloud storage. Malware distributors can really strike it rich by owning a computer that happens to be inside a big company; they can sell that access for a lot of money. Part of fighting an attack is understanding what's motivating the attacker.</li>
	<li>(19:07) Jon G talks about targeted attacks against employees using fake, infected PDF business documents - send to enough people and a few will open it. Jon McCoy says that's why he advocates using a hardened VM for browsing the internet as well as using different e-mail addresses so you know unsolicited e-mails to an admin e-mail can't be valid.</li>
</ul>
</li>
	<li>Resources: tools and papers
<ul>
	<li>(20:13) Jon G asks for a little more information about the security tools Jon McCoy distributes on his site.</li>
	<li>(20:47) Jon G asks about how Jon McCoy's security disclosure policies. Jon McCoy says he generally keeps things secret long enough to give his clients a security advantage. He talks about a technique he used which phones home when obfuscated code is decompiled.</li>
	<li>(21:51) Jon G asks Jon McCoy how he keeps up with things. Jon McCoy says things are pretty lonely, he's off on his own most of the time. Jon G says it's easy to forget that a lot of .NET runs on top of Win32 and COM.</li>
	<li>(23:10) Jon G asks Jon McCoy for some reference for developers who are interested in learning more. Jon McCoy lists a few (referenced in the show links).</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Jon McCoy (<a title="http://digitalbodyguard.com/" href="http://digitalbodyguard.com/">http://digitalbodyguard.com/</a>)</li>
	<li>NDC Session video: <a href="http://ndcoslo.oktaset.com/t-8059">Hacking .NET(C#) Application: An Unfriendly Territory</a></li>
	<li>NDC Session video: <a href="http://ndcoslo.oktaset.com/t-8058">Hacking .NET(C#) Application: Code of the Hacker</a></li>
	<li><a href="http://www.yubico.com/products/yubikey-hardware/">YubiKey</a></li>
	<li>Jon McCoy's <a href="http://digitalbodyguard.com/papers.html">white papers</a>: Attack .NET at Runtime and Reflection's Hidden Power</li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0176-NDC-Jon-McCoy.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 175: Dominick Baier on Securing ASP.NET Web APIs and HTTP Services</title>
    <link>https://herdingcode.com/herding-code-175-dominick-baier-on-securing-asp-net-web-apis-and-http-services/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-175-dominick-baier-on-securing-asp-net-web-apis-and-http-services/</guid>
    <pubDate>Mon, 29 Jul 2013 20:38:21 GMT</pubDate>
    <description><![CDATA[<p>At NDC, Jon, K Scott and Rob Conery talked to Dominick Baier about HTTP API security: CORS, token based authentication and more. Download: Herding Code 175: Dominick Baier on Se</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 175</strong></p>
At NDC, Jon, K Scott and Rob Conery talked to Dominick Baier about HTTP API security: CORS, token based authentication and more.

Download: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0175-NDC-Dominick-Baier.mp3">Herding Code 175: Dominick Baier on Securing ASP.NET Web APIs and HTTP Services</a>



Show Notes:
<ul>
	<li>Overview of CORS and Token Based Authentication
<ul>
	<li>(00:17) K Scott asks Dominick about the subject of his talk at NDC. Dominick runs through the upcoming changes in Web API authentication, including an overview of CORS and token based authentication.</li>
	<li>(03:49) Dominick explains the ability to support a separate token server in Web API and announces Authentication Server, his new open source project which provides</li>
	<li>(05:13) Rob describes how he's seen people breaking their sites and services across multiple domains and subdomains. He explains a problem he's currently running into with older releases of Internet Explorer. Dominick explains more about how CORS works and talks about options for working with older browsers - either sticking with JSONP or putting services in the same domain.</li>
</ul>
</li>
	<li>OAuth
<ul>
	<li>(08:15) Jon asks how security token service relates to more well-known terms like OpenID and OAuth. Dominick explains some of the history and challenges OAuth has encountered. As a result, the OAuth spec is really just a collection of patterns rather than a strict specification.</li>
	<li>(11:19) Jon asks Dominick how he implemented the OAuth spec in his Authentication Server implementation. Dominick gives examples of how the spec is very open - for instance, there are 69 occurrences of the word MAY in the spec. He says he's been advocating for a minimum profile.</li>
	<li>(12:56) K Scott asks what sort of authentication should be used with Dominick's security token server, since OAuth isn't an authentication mechanism. Dominick explains the interaction with security tokens.</li>
</ul>
</li>
	<li>Token based security and JWT
<ul>
	<li>(14:49) Jon comments on the difference in security implications between a compromised token vs. a compromised account password. Dominick says that a token binds five things together: the client, a human, an application, permissions and time. He mentions that with token based authentication you can outsource the security mechanism - passwords, certificates, etc. - and talks about the newly released JSON Web Token (JWT) handler.</li>
	<li>(15:50) K Scott asks for some specifics about the JWT handler.</li>
	<li>(16:27) K Scott asks for more information about Dominick's talk.</li>
</ul>
</li>
	<li>Roles vs. Claims
<ul>
	<li>(17:14) Jon asks about the difference between roles and claims. Dominick explains that a role is just a very simple claim: are you in a role or not? Claims move from a simple boolean to more of a name / value pair</li>
	<li>(18:31) Jon asks what the average developer needs to know about Windows Identity Foundation.</li>
</ul>
</li>
	<li>Photography and wrap-up
<ul>
	<li>(19:02) K Scott asks Dominick about the photos section on his site and comments on how they're just about all black and white. Dominick</li>
	<li>(20:52) K Scott asks Dominick what he's got coming up. Dominick says he's been heads down on the Authentication Server release.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Dominick Baier (<a title="http://leastprivilege.com/" href="http://leastprivilege.com/">http://leastprivilege.com/</a>, <a title="https://twitter.com/leastprivilege" href="https://twitter.com/leastprivilege">@leastprivilege</a>)</li>
	<li>NDC Session video: <a href="http://ndcoslo.oktaset.com/t-8057">Securing ASP.NET Web APIs and HTTP Services</a></li>
	<li><a href="http://thinktecture.github.io/">Thinktecture IdentityServer</a></li>
	<li>Eran Hammer: <a href="http://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/">OAuth 2.0 and the Road to Hell</a></li>
	<li>Dominick's photo blog: <a title="http://photos.leastprivilege.com/" href="http://photos.leastprivilege.com/">http://photos.leastprivilege.com/</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0175-NDC-Dominick-Baier.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 174: Paul Stack on automating Windows configuration management with Puppet and PowerShell</title>
    <link>https://herdingcode.com/herding-code-174-paul-stack-on-automating-windows-configuration-management-with-puppet-and-powershell/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-174-paul-stack-on-automating-windows-configuration-management-with-puppet-and-powershell/</guid>
    <pubDate>Wed, 24 Jul 2013 19:20:42 GMT</pubDate>
    <description><![CDATA[<p>At NDC, K Scott and and Jon talked to Paul Stack about automating server configuration management with Puppet and PowerShell. Download: Herding Code 174: Paul Stack on automatin</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 174</strong></p>
At NDC, K Scott and and Jon talked to Paul Stack about automating server configuration management with Puppet and PowerShell.

Download: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0174-NDC-Paul-Stack.mp3">Herding Code 174: Paul Stack on automating Windows configuration managment with Puppet and PowerShell</a>



Show Notes:
<ul>
	<li>Intro
<ul>
	<li>(00:32) Paul gave a talk on Windows infrastructure management with Puppet and PowerShell. Puppet is a configuration management tool. It allows you to define a configuration management level, and Puppet will bring it to that level and keep it there.</li>
	<li>(01:05) K Scott asks Paul how this relates to his continuous deployment emphasis. Paul explains how this has been part of the maturity model they've been using at his employer, Open Table.</li>
	<li>(01:50) Paul explains how they started using Puppet in their pre-production environment of 19 VMs. Their production environment is four times that large.</li>
</ul>
</li>
	<li>Some more questions about Puppet
<ul>
	<li>(03:00) Jon asks how Vagrant and Chef fit in. Paul explains how Puppet, Chef and CFEngine relate.</li>
	<li>(04:07) K Scott asks if it's worthwhile to look at Puppet in a small environment with 2-3 servers. Paul says there's an investment, so you really start seeing the rewards as things start getting more complex.</li>
	<li>(05:01) K Scott asks how you define a state.</li>
	<li>(06:30) K Scott asks about the client running on the target servers.</li>
	<li>(06:51) Jon asks how the verification works.</li>
	<li>(07:32) Jon asks if it's possible to use Puppet in cloud environments.</li>
	<li>(07:56) K Scot asks if you can use Puppet to configure developer workstations. Paul talks about GitHub's Boxen system. Jon talks about his experiences looking at Boxen before settling on sprout-wrap.</li>
	<li>(09:21) Paul mentions that Open Table just open sourced their Puppet IIS implementations.</li>
</ul>
</li>
	<li>How Puppet relates to PowerShell and Chocolatey
<ul>
	<li>(09:36) Jon asks what the PowerShell tie-in is, since Puppet is all Ruby based. Paul talks about the PowerShell scripts they exec from Puppet and how they use them to do things like turn Windows features on and off.</li>
	<li>(11:01) K Scott asks if you could use Chocolatey with Puppet, and Paul says they're using Chocolatey via PowerShell. Jon says that sounds useful since Chocolatey can now integrate with the Web Platform Installer, and Paul says they're doing just that to install .NET 4 on their servers.</li>
</ul>
</li>
	<li>More questions about Puppet
<ul>
	<li>(11:47) Paul talks about how traditional infrastructure management runs on documentation, and how they can replace all of that using Puppet.</li>
	<li>(12:58) K Scott asks if this is also useful for deployments. Paul says a deployment is just a different configuration state, so Puppet can handle that just fine.</li>
	<li>(14:09) Jon asks if Puppet can handle database state.</li>
	<li>(14:50) Jon asks how you handle licenses with Puppets.</li>
	<li>(15:20) Jon asks how Puppet relates to Windows configuration management options. Paul says that at Open Table they've moved to using multiple platforms, so they need infrastructure management options that can work across all of those environments.</li>
	<li>(16:30) K Scott asks what is was about Puppet that caused him to lose some hair. Paul says it's scary to be able to write a module that makes changes to 90 servers.</li>
</ul>
</li>
	<li>And some more Puppet stuff
<ul>
	<li>(17:30) Jon asks if it's possible to do automated testing with Puppet configuration and modules.</li>
	<li>(18:27) K Scott asks if there's any kind of rollback plan for Puppet.</li>
	<li>(18:40) K Scott tries to ask Paul about what he does in his free time, but Paul says in his free time he writes code and changes the subject back to Puppet.</li>
	<li>(19:21) Paul says he's going to be speaking at Puppet Conf, so he'll be speaking at a Linux administrator's conference.</li>
	<li>(20:00) K Scott asks if there's political fallout from systems administrators who are concerned he's trying to replace their jobs. Paul says he's trying to free them up from repetitive tasks in their jobs so they can get more done.</li>
	<li>(20:56) K Scott asks Paul about upcoming conferences he's going to be speaking at.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Paul Stack (<a href="http://paulstack.co.uk/blog/">blog</a>, <a href="https://twitter.com/#!/stack72">@stack72</a>)</li>
	<li>NDC Session video: <a title="http://ndcoslo.oktaset.com/t-8007" href="http://ndcoslo.oktaset.com/t-8007">Windows - Having its ass kicked by Puppet and PowerShell since 2012</a></li>
	<li><a href="https://puppetlabs.com/">Puppet Labs</a></li>
	<li><a href="http://boxen.github.com/">GitHub's Boxen</a></li>
	<li><a href="https://github.com/opentable/puppet-iis">Puppet-IIS</a></li>
	<li><a href="https://herdingcode.com/herding-code-143-paul-stack-on-continuous-delivery/">Herding Code 143 - Paul Stack on Continuous Delivery</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0174-NDC-Paul-Stack.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 173: Laurent Bugnion on sharing code with MVVM Light in Windows 8 and Windows Phone</title>
    <link>https://herdingcode.com/herding-code-173-laurent-bugnion-on-sharing-code-with-mvvm-light-in-windows-8-and-windows-phone/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-173-laurent-bugnion-on-sharing-code-with-mvvm-light-in-windows-8-and-windows-phone/</guid>
    <pubDate>Mon, 22 Jul 2013 20:16:07 GMT</pubDate>
    <description><![CDATA[<p>At NDC, Jon, K Scott and and Rob Conery talked to Laurent Bugnion about XAML development, sharing code between Windows 8 and Windows Phone, and modern design.</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 173</strong></p>
At NDC, Jon, K Scott and and Rob Conery talked to Laurent Bugnion about XAML development, sharing code between Windows 8 and Windows Phone, and modern design.

Download / Listen: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0173-NDC-Laurent-Bugnion.mp3">Herding Code 173: Laurent Bugnion on sharing code with MVVM Light in Windows 8 and Windows Phone</a>



Show Notes:
<ul>
	<li>XAML vs. HTML for Windows Store development
<ul>
	<li>(00:40) Rob asks Laurent how often customers ask for HTML/JS based Windows Store application rather than XAML based. Laurent lists a few of the cases where people ask for HTML based work, but says the cases are very rare. Generally they're much more productive with XAML and C#.</li>
	<li>(02:49) Rob asks Laurent if he thinks this will change over time. Laurent says IDE support may affect things a little, but generally he thinks web developers don't do desktop development because they don't want to do desktop development - they went into web development because they wanted to develop for the web.</li>
	<li>(04:09) Jon asks if Laurent sees things changing over time in XAML based development. Laurent says he sees some big changes in performance - you can get good performance out of the native controls with full designer support now. In terms of Windows 8, he's hoping for more controls to cover some Windows 8 UI elements so they don't require custom controls. In terms of design, he sees some cases where people are breaking some of the general Windows Store design guidelines in cases where they aren't as user friendly. Jon says he's seen one example of this - adding a print app bar button to applications where printing is a regular activity, even though technically the print is supposed to be accessed via the share charm. Laurent says he also sees this in search-heavy apps.</li>
</ul>
</li>
	<li>Cross-platform code sharing and Portable Class Libraries
<ul>
	<li>(07:46) Jon asks about Laurent's talk on sharing code between platforms - does it work? Laurent says he's focusing on portable class libraries - writing logic that works on Windows Phone and Windows Store, then building a UI on top of those libraries. That's working well for him and he's using it in production. It's still XAML and C#, so you can also share code, too.</li>
	<li>(09:26) K Scott asks about MVVM Light - is that working with Portable Class Libraries? Laurent says someone at Microsoft use a PCL port of MVVM Light as a test case, and it's working very well. They still maintain platform specific versions of MVVM Light for people who only work on a specific platform.</li>
	<li>(10:38) K Scott asks for a quick summary of what MVVM Light does.</li>
	<li>(12:45) K Scott asks about some of the challenges in converting MVVM Light to a PCL. Laurent talks about some UI and platform differences.</li>
</ul>
</li>
	<li>Metro and modern design
<ul>
	<li>(14:21) Rob asks how you make different design decisions around "Metro" design or other alternatives. Laurent discusses the design process.</li>
	<li>(16:29) Rob asks about some of the design considerations, and how you'd decide on platforms. Laurent says a default XAML application uses themes which will fit in with the host platform and operating systems, but might look at bit boring, which is why you work with a designer.</li>
	<li>(18:25) Jon says the Windows Store design principles don't prescribe a boring look, referencing the "alive with color" thing and Kelly Sommers' post about how Metro Doesn't Have To Be Boring. Laurent says he doesn't like the "flat design" term, preferring modern - and modern came from Bauhaus in the 1920's, Swiss design in the 1950's, etc. He says it's important to go the design principles, then use your skill as a designer to apply that. There are enough apps on the Windows Phone store that getting noticed takes a good design.</li>
</ul>
</li>
	<li>Hobbies
<ul>
	<li>(22:09) Rob asks Laurent what he does for hobbies. Laurent lists some things that keep him busy, then talks about his fish pond. Rob tells probably the worst newt joke of all time.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Laruent Bugnion (<a href="http://galasoft.ch">http://galasoft.ch</a>, <a title="https://twitter.com/nikmd23" href="https://twitter.com/lbugnion">@lbugnion</a>)</li>
	<li>NDC Session video: <a href="http://ndcoslo.oktaset.com/t-8158">Sharing code with MVVM Light in Windows and and Windows Phone</a></li>
	<li><a href="http://mvvmlight.codeplex.com/">MVVM Light Toolkit</a></li>
	<li><a href="http://msdn.microsoft.com/en-US/library/windows/apps/hh781237">Microsoft Design Principles</a></li>
	<li>Kelly Sommers: <a href="http://kellabyte.com/2011/12/19/when-metro-design-falls-off-the-tracks/">When Metro Design Falls Off The Tracks</a></li>
	<li><a href="https://herdingcode.com/episode-26-laurent-bugnion-on-wpf-and-silverlight/">Herding Code 26: Laurent Bugnion on WPF and Silverlight</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0173-NDC-Laurent-Bugnion.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 172: Nik Molnar on Running an Open Source Project</title>
    <link>https://herdingcode.com/herding-code-172-nik-molnar-on-running-an-open-source-project/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-172-nik-molnar-on-running-an-open-source-project/</guid>
    <pubDate>Wed, 17 Jul 2013 23:58:13 GMT</pubDate>
    <description><![CDATA[<p>At NDC, Jon and K Scott talked to Nik Molnar about what he&apos;s learned about running an open source project from his experiences with Glimpse. Download: Herding Code 172: Nik Moln</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 172</strong></p>
At NDC, Jon and K Scott talked to Nik Molnar about what he's learned about running an open source project from his experiences with Glimpse.

Download: <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0172-NDC-Nik-Molnar-on-running-an-open-source-project-and-cooking.mp3">Herding Code 172: Nik Molnar on Running an Open Source Project</a>



Show Notes:
<ul>
	<li>Running an open source project
<ul>
	<li>(00:35) Nik says he's writing the guide he wishes he'd had a few years ago.</li>
	<li>(01:06) K Scott asks him for one big thing he's learned. Nik talks about the importance of public communication.</li>
	<li>(01:36) Jon mentions the difference between open source code and open source projects, and Nik mentions some of the different documented governance models for open source projects, citing OSS Watch and YUI. This helps</li>
	<li>(03:15) K Scott asks if Glimpse presents unique challenges because there's a plugin ecosystem. Nik says they used to just see code contributors and plugin authors, but now he sees contributors with a much broader perspective, citing Peter Hahndorf's documentation contributions.</li>
	<li>(4:54) Jon asks Nik how he defines success for an open source project. Nik says it depends on the project founder's goals. He says project popularity isn't important to him personally, it's helping users.</li>
	<li>(5:50) K Scott asks Nik about his slide that says Avoid Bikeshedding. Nik explains Parkinson's law of triviality and how it affects open source.</li>
	<li>(08:58) Jon asks Nik if he thinks roadmaps are important. Nik says this an important part of the public communication he mentioned earlier. Jon says he's found that involving people in decisions that will affect them early really important for any kind of project, open source or not. Nik explains how this is handled in the meritocratic model.</li>
</ul>
</li>
	<li>Cooking's like programming
<ul>
	<li>(11:12) K Scott asks Nik about the latest big dish he's prepared.</li>
	<li>(12:45) Nik talks about the parallels between programming and cooking - both have rules that must be followed, but a lot of room for creativity.</li>
	<li>(13:35) Jon talks about a professional chef textbook he got from the library (Nik tells him it's from the Culinary Institute of America). Jon says he saw some parallels between things like food sanitation and source control - you need to start with fundamentals, but then you can apply them in creative ways. Nik describes some further parallels: cooking math and resourcing, the kitchen brigade system and project management.</li>
	<li>(15:12) Nik talks about the ALT.NET of cooking and the focus on basic, classic skills.</li>
</ul>
</li>
	<li>What's next
<ul>
	<li>(16:08) K Scott asks Nik about what's next for him. Nik talks about their latest release and the Heads Up Display. He talks about how simplified web publishing has led to a big increase in documentation contributions. K Scott raves about the UI design.</li>
	<li>(18:45) Jon asks what's new with semantic versioning since they last talked.</li>
	<li>(19:18) Jon asks what's next for Glimpse. Nik says it'll be decided by the community, but he's expecting they'll want Web API support.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Nik Molnar (<a href="http://nikcodes.com/">nikcodes.com</a>, <a title="https://twitter.com/nikmd23" href="https://twitter.com/nikmd23">nikmd23</a><a href="https://twitter.com/nikmd23">@nikmd23</a>)</li>
	<li>NDC Session video: <a href="http://vimeo.com/68390481">Running OSS Projects: From Zero to Sixty</a></li>
	<li><a href="http://getglimpse.com/">Glimpse</a></li>
	<li><a href="http://www.oss-watch.ac.uk/resources/governanceModels">OSS Watch Governance Models</a></li>
	<li><a href="http://www.oss-watch.ac.uk/resources/meritocraticGovernanceModel">Meritocratic Governance Model</a></li>
	<li><a href="https://github.com/yui/yui3/wiki/Contributor-Model">YUI Contributor Model</a></li>
	<li><a href="https://github.com/hahndorf/GlimpseDocs2">Peter Hahndorf's Glimpse document contributions</a></li>
	<li><a href="http://en.wikipedia.org/wiki/Parkinson%27s_Law_of_Triviality">Parkinson's law of triviality (bikeshedding)</a></li>
	<li><a href="http://bikeshed.com/">Bikeshed.com</a></li>
	<li><a href="http://www.amazon.com/gp/product/0470421355?ie=UTF8&amp;camp=213733&amp;creative=393185&amp;creativeASIN=0470421355&amp;linkCode=shr&amp;tag=jongall-20&amp;=books&amp;qid=1374104548&amp;sr=1-1">The Professional Chef</a> (Culinary Institute)</li>
	<li><a href="https://herdingcode.com/herding-code-160-glimpse-1-0-release-and-semantic-release-notes-with-nik-molnar-and-anthony-vander-hoorn/">Herding Code 160: Glimpse 1.0 release and Semantic Release Notes</a><a href="https://herdingcode.com/herding-code-160-glimpse-1-0-release-and-semantic-release-notes-with-nik-molnar-and-anthony-vander-hoorn/">Herding Code 160: Glimpse 1.0 release and Semantic Release <b>...</b></a></li>
	<li><a href="https://herdingcode.com/herding-code-124-anthony-van-der-hoorn-and-nik-molnar-on-glimpse/">Herding Code 124: Anthony van der Hoorn and Nik Molnar on Glimpse</a><b></b></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0172-NDC-Nik-Molnar-on-running-an-open-source-project-and-cooking.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 171: Magnus Martensson talks Continuous Delivery on Windows Azure and the Global Windows Azure Bootcamp</title>
    <link>https://herdingcode.com/herding-code-171-magnus-martensson-talks-continuous-delivery-on-windows-azure-and-the-global-windows-azure-bootcamp/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-171-magnus-martensson-talks-continuous-delivery-on-windows-azure-and-the-global-windows-azure-bootcamp/</guid>
    <pubDate>Mon, 08 Jul 2013 23:14:15 GMT</pubDate>
    <description><![CDATA[<p>At NDC, Jon and K Scott talked to Magnus Martensson about continuous delivery on the Windows Azure platform and the Global Windows Azure Bootcamp he helped run. Download / Liste</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 171</strong></p>
<p>At NDC, Jon and K Scott talked to Magnus Martensson about continuous delivery on the Windows Azure platform and the Global Windows Azure Bootcamp he helped run.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0171-NDC-Magnus-Martensson-on-Azure.mp3">Herding Code 171: Magnus Martensson talks Continuous Deliverery on Windows Azure and the Global Windows Azure Bootcamp</a> </p>  <p>Show Notes:</p>  <ul>   <li>Continuous Delivery on Windows Azure      <ul>       <li>(00:20) Jon asks Magnus about what he'll be speaking about at NDC. </li>     </ul>      <ul>       <li>(00:45) Jon asks about the difference between continuous integration and continuous delivery. Magnus says continuous integration just runs tests and builds, but it doesn't go anywhere; continuous delivery actually deploys the code to an environment - staging, possibly production. </li>        <li>(02:06) K Scott asks about Azure support for continuous delivery. Magnus says you can do it with cloud services, but there's a delay; with Windows Azure Web Sites the deployment is extremely fast and easy. </li>        <li>(03:00) K Scott asks about the steps of setting up continuous delivery for a web application for deployment including non-git source control. Magnus talks about the setup, new offerings for dev / test scenarios, and asks why anyone wouldn't integrate this into their development process. </li>        <li>(05:02) Jon asks what recent Azure changes were announced. Magnus discusses both pricing and policy changes for MDSN subscriptions. </li>        <li>(05:47) Jon asks what some of Magnus' demos include. Magnus talks about using your own TFS service, other git repos, etc. He talks about a his secret demo - the non-Microsoft demo that uses TeamCity, NUnit, and GitHub. </li>        <li>(07:45) K Scott mentions all the new Azure SDK language support. </li>     </ul>   </li>    <li>Migrating to the cloud and surprise business transformations      <ul>       <li>(07:54) Jon asks how this relates to Magnus' work. Magnus works at Active Solution, which employs both of Sweden's Azure MVP's. Cloud development is really a hot field in Sweden right now. </li>        <li>(08:45) Jon asks about some common challenges. Magnus says the biggest thing is learning the platforms - there are a lot of architectural and strategic things they haven't even considered. </li>        <li>(10:23) K Scott asks if businesses think they can't move to the cloud because they have custom processes or protocols. </li>        <li>(10:59) Jon asks if they often do hybrid solutions. Magnus says that multitenant solutions are common, and the process allows companies to transform themselves from product to service companies. </li>     </ul>   </li>    <li>Global Windows Azure Bootcamp      <ul>       <li>12:21 Jon asks about the Global Windows Azure Bootcamp that Magnus helped organize. Magnus tells the story of how they started talking to a few MVPs and things spiraled out of control. In the end they had all timezones, 92 locations, over 5000 attendees. They had some big turnout in some unexpected locations: Nepal, Brazil, Africa. </li>        <li>14:08 Jon asks what happened at the event. Magnus talks about the content in the Windows Azure Training Kit and a shared demo with nearly 5000 coordinated worker roles in a giant render farm passed the rendering power of some Pixar films. </li>        <li>(16:13) Jon asks about the relationship with Microsoft for the event. It was community run, but Microsoft helped out with things like attendee giveaways. </li>        <li>(16:52) Jon asks if they'll do this again. Magnus says yes and talks about some of the scaling challenges. He calls out the sponsors, who gave away $18 million in license giveaways. It scales because each location is independent, so each location just needs to run one event.&#160; </li>        <li>(18:36) Jon says this reminds him of Corey Haines' Global Day of Code Retreat. </li>        <li>(18:52) Jon asks what Magnus is up to next. Magnus says he's moving and calls out the upcoming CloudBurst conference - in Sweden and live streamed. </li>     </ul>   </li> </ul>  <p>Show Links: </p>  <ul>   <li>Magnus Martensson (<a href="http://magnusmartensson.com/">http:??magnusmartensson.com?</a>, <a href="https://twitter.com/noopman">@noopman</a>) </li>    <li>NDC Session video: <a href="http://ndcoslo.oktaset.com/t-8167">Continuous Delivery Zen on Windows Azure</a> </li>    <li><a href="http://activesolution.se/">Active Solution</a> </li>    <li><a href="http://globalwindowsazure.azurewebsites.net/">Global Windows Azure Bootcamp</a></li>    <li><a href="http://geekswithblogs.net/asmith/archive/2012/10/22/151043.aspx">256 Worker Role 3D Rendering Demo is now a Lab on my Azure Course</a> </li>    <li><a href="http://globalday.coderetreat.org/">Global Day of Coderetreat</a> </li>    <li><a href="http://www.azureug.se/CloudBurst2013">CloudBurst 2013</a> </li>    <li><a href="https://herdingcode.com/herding-code-128-corey-haines-on-global-day-of-coderetreat-december-3/">Herding Code 128 - Corey Haines on Global Day of Coderetreat</a> </li>    <li><a href="https://herdingcode.com/herding-code-143-paul-stack-on-continuous-delivery/">Herding Code 143 - Paul Stack on Continuous Delivery</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0171-NDC-Magnus-Martensson-on-Azure.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 170: NDC Geekout with Richard Campbell and Rob Conery</title>
    <link>https://herdingcode.com/herding-code-170-ndc-geekout-with-richard-campbell-and-rob-conery/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-170-ndc-geekout-with-richard-campbell-and-rob-conery/</guid>
    <pubDate>Fri, 21 Jun 2013 21:19:23 GMT</pubDate>
    <description><![CDATA[<p>At NDC, Jon and Rob Conery quizzed Richard Campbell about books, nanotech, graphene, cooking, travel, explosions and more. Herding Code 170: NDC Geekout with</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 170</strong></p>
<p>At NDC, Jon and Rob Conery quizzed Richard Campbell about books, nanotech, graphene, cooking, travel, explosions and more.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0170-NDC-Geekout-with-Richard-Campbell.mp3">Herding Code 170: NDC Geekout with Richard Campbell and Rob Conery</a> </p>  <p>Show Notes:</p>  <ul>   <li>Cryptonomicon and other Neal Stephenson books      <ul>       <li>(00:55) Rob Conery says he's been rereading Cryptonomicon. Richard, Jon and Rob talk about their favorite Neal Stephenson books. </li>     </ul>   </li>    <li>Nanotech      <ul>       <li>(02:26) Richard mentions nanotech in the context of Diamond Age. Jon asks Richard what's going on with nanotech. </li>        <li>(03:31) Richard describes graphene - what it is, how it's made, and what we can do with it. </li>     </ul>   </li>    <li>BBQ!      <ul>       <li>(07:38) Jon asks Richard what he uses to barbecue things. No surprise, he's got three different BBQ devices, electrical modifications and Excel spreadsheets. Intense food chemistry discussions ensue. </li>     </ul>   </li>    <li>Turing and Electromechanical computing      <ul>       <li>(11:32) Rob talks about the Enigma machine discussion in Cryptonomicon. Jon and Richard talk about how the Enigma code was broken. </li>     </ul>   </li>    <li>Quantum computing      <ul>       <li>(14:37) Jon asks Richard about quantum encryption and computing. Richard explains&#160; quantum effects with the two slit experiment. </li>     </ul>   </li>    <li>My Drunk Kitchen      <ul>       <li>(18:10) Jon asks Richard how it came to pass that he hosted an episode of My Drunk Kitchen. Richard tells the history of My Drunk Kitchen and how french toast turned into some kind of sourdough frittata. </li>     </ul>   </li>    <li>Home brewing and stills      <ul>       <li>(22:37) Jon asks Richard if he's done any home brewing. Richard owns a still but has not used it in anger yet. Richard lists the dangers of moonshining and one-upmanship contests with Carl Franklin.&#160; </li>     </ul>   </li>    <li>The geekiest house ever      <ul>       <li>(25:38) Jon asks how Richard handles his intensely instrumented house and Rob asks for more details about Richard's house. Richard says he's only been raided as a suspected drug grow-op house once and talks about all the server infrastructure he's got at his house. </li>        <li>(29:50) Rob asks about Richard's generator setup. </li>     </ul>   </li>    <li>Modern media management      <ul>       <li>(31:23) Jon asks Richard how he handles the hardest problem in modern life: managing media. Richard talks about his media shares, networking, media center, and how he gets all the good stuff. </li>     </ul>   </li>    <li>Favorite books      <ul>       <li>(34:28) Jon asks Richard for five book recommendations. Richard recommends Existence, Daemon and Freedom. Jon and Richard discuss the believability of Daemon and Richard talks about how some authors are good story tellers, others are good universe builders, and authors who do both are incredibly rare. Richard also recommends Lean Startup and The Phoenix Project. Rob recommends Ender's Game and talks about Arthur C. Clarke; Jon says he liked The Fiction Author's Guide To Time Travel and that got him into Heinlein. Rob and Richard liked Dan Simmons - especially Hyperion. Rob and Richard discuss the difficulty of ending a story well and Richard says Harry Potter put The Matrix to shame in that regard. </li>     </ul>   </li>    <li>Travel tips      <ul>       <li>(41:45) Jon asks Richard for some travel tips. Richard starts with recommending local SIM cards and knowing your power plugs. </li>        <li>(42:33) Richard recommends beating jet lag using light and timing your meals. Rob has been pretty happy with some homeopathic jetlag whatsihoosie and likes baking soda too. </li>        <li>(45:08) Jon likes compression bags and big batteries with USB outputs. Jon and Richard discuss the frustration of the VGA to HDMI conversion. </li>        <li>(47:33) Rob always maps out the nearest Apple store before travelling. </li>        <li>(47:57) Jon has USB video adapters for both VGA and HDMI and figures he's covered. </li>        <li>(48:15) Richard mentions wireless video in Windows 8.1. Rob mentions AirPlay and Jon talks about Windows PlayTo, but they're all too fiddly for now. </li>     </ul>   </li>    <li>Pretend ending      <ul>       <li>If you don't like background noise, this is the end. Bye! </li>     </ul>   </li>    <li>More stuff in the outtake      <ul>       <li>We had some more discussion that's pretty hard to hear because of background noise, but we're throwing it in just in case you want to listen through it. </li>        <li>(50:44) Rob talks about Benford's Law. Rob talks about the application in detecting voter fraud, Rob talks about the application in counterespionage in Cryptonomicon. </li>        <li>(52:14) Rob wants to talk about submarines. Jon talks about some of the complexities of torpedo seek patterns. Rob talks about Russian supercavitation and mine hunting. Jon talks about old Russian wing-in-ground effect vehicles and ski-ramp carriers. </li>        <li>(55:30) Richard talks about rail guns, which reminds Jon of fuel air explosives. Jon and Richard tell FAE stories. </li>        <li>(58:47) Rob tells a story about big explosions at a YMCA camp on Catalina Island. </li>     </ul>   </li> </ul>  <p>Show Links: </p>  <ul>   <li>Richard Campbell (<a href="https://twitter.com/richcampbell">@richcampbell</a>) </li>    <li>Rob Conery (<a href="http://twitter.com/robconery">@robconery</a>, <a href="http://wekeroad.com">http://wekeroad.com</a>) </li>    <li><a href="http://www.ndcoslo.com/">Norwegian Developers Conference (NDC)</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Graphene">Graphene</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Enigma_machine">Enigma machine</a>&#160; </li>    <li><a href="http://www.youtube.com/watch?v=uSXQNred3is">My Drunk Kitchen: Vancouver...&quot;French Toast&quot;?</a> (contains drinking and cursing and a little cooking) </li>    <li>Books      <ul>       <li><a href="http://www.amazon.com/gp/product/B000FC11A6?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B000FC11A6&amp;linkCode=shr&amp;tag=jongall-20&amp;=books&amp;qid=1371791692&amp;sr=1-1">Cryptonomicon</a> by <a href="http://www.amazon.com/Neal-Stephenson/e/B000APS8L8/?_encoding=UTF8&amp;camp=213733&amp;creative=393193&amp;linkCode=shr&amp;tag=jongall-20&amp;id=1371791692&amp;sr=1-2-ent">Neal Stephenson</a> </li>        <li><a href="http://www.amazon.com/gp/product/B004IK8PLE?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B004IK8PLE&amp;linkCode=shr&amp;tag=jongall-20">The Code Book: The Science of Secrecy</a> by Simon Singh </li>        <li><a href="http://www.amazon.com/gp/product/B0079XPMQS?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B0079XPMQS&amp;linkCode=shr&amp;tag=jongall-20">Existence</a> by David Brin </li>        <li><a href="http://www.amazon.com/gp/product/B003QP4NPE?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B003QP4NPE&amp;linkCode=shr&amp;tag=jongall-20&amp;=digital-text&amp;qid=1371847361&amp;sr=1-1&amp;keywords=daemon">Daemon</a> and <a href="http://www.amazon.com/gp/product/B002VUFKDY/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B002VUFKDY&amp;linkCode=as2&amp;tag=jongall-20">Freedom</a> by Daniel Suarez </li>        <li><a href="http://www.amazon.com/gp/product/B004J4XGN6/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B004J4XGN6&amp;linkCode=as2&amp;tag=jongall-20">Lean Startup</a> by Eric Ries </li>        <li><a href="http://www.amazon.com/gp/product/B00AZRBLHO?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B00AZRBLHO&amp;linkCode=shr&amp;tag=jongall-20&amp;=digital-text&amp;qid=1371847601&amp;sr=1-1&amp;keywords=the+phoenix+project">The Phoenix Project</a> by Gene Kim, Kevin Behr, George Spafford </li>        <li><a href="http://www.amazon.com/gp/product/1421400820?ie=UTF8&amp;camp=213733&amp;creative=393185&amp;creativeASIN=1421400820&amp;linkCode=shr&amp;tag=jongall-20&amp;=aps&amp;qid=1371847713&amp;sr=1-1-catcorr">Time Travel: A Writer's Guide to the Real Science of Plausible Time Travel</a> by Paul Nahin </li>        <li><a href="http://www.amazon.com/gp/product/0345330129?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=0345330129&amp;linkCode=shr&amp;tag=jongall-20&amp;=books&amp;qid=1371847798&amp;sr=1-6">The Door Into Summer</a> by Robert Heinlein </li>        <li><a href="http://www.amazon.com/gp/product/B003G4W49C?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B003G4W49C&amp;linkCode=shr&amp;tag=jongall-20&amp;=books&amp;qid=1371847856&amp;sr=1-1">Ender's Game</a> by Orson Scott Card </li>        <li><a href="http://www.amazon.com/gp/product/B004G60EHS?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B004G60EHS&amp;linkCode=shr&amp;tag=jongall-20&amp;=books&amp;qid=1371847905&amp;sr=1-1">Hyperion</a> by Dan Simmons </li>     </ul>   </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0170-NDC-Geekout-with-Richard-Campbell.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 169: Tom Dale and Rob Conery on the EmberJS / AngularJS Cage Match at NDC</title>
    <link>https://herdingcode.com/herding-code-169-tom-dale-and-rob-conery-on-the-emberjs-angularjs-cage-match-at-ndc/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-169-tom-dale-and-rob-conery-on-the-emberjs-angularjs-cage-match-at-ndc/</guid>
    <pubDate>Tue, 18 Jun 2013 00:47:04 GMT</pubDate>
    <description><![CDATA[<p>At NDC, Jon and K Scott sat down with Tom Dale (co-founder of Ember.js) and Rob Conery to recap their cage match battle, compare Ember.js and AngularJS, and hear from Tom about</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 169</strong></p>
<p>At NDC, Jon and K Scott sat down with Tom Dale (co-founder of Ember.js) and Rob Conery to recap their cage match battle, compare Ember.js and AngularJS, and hear from Tom about where Ember.js is headed.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0169-NDC-Ember-Angular-Cage-Match.mp3">Herding Code 169: Tom Dale and Rob Conery on the Ember.js / AngularJS Cage Match at NDC</a> </p>  <p>Show Notes:</p>  <ul>   <li>Intro </li>    <ul>     <li>(00:18) K Scott and Rob asks Tom and Rob to introduce themselves and recap the Cage Match. </li>      <li>(01:22) Tom describes the challenge and thanks Peter Cooper for moderating. Rob describes the scenario - start with installation and creating a new project, then move to routing and navigation between views. </li>   </ul>    <li>Demo vs. Reality</li>    <ul>     <li>(02:28) Rob says it's fun to do a demo with Angular, but once you need to do more structured things you have to start over and reimplement with modules, etc. </li>      <li>(02:43) Tom says that seeing the TekPub screencast about AngularJS informed a lot of their design for Ember.js. The result is a framework that gives you the same simplicity in getting started, but also grows with your application pretty easily. </li>   </ul>    <li>You Just Don't Do That</li>    <ul>     <li>(03:22) K Scott asks if they pretty much match up if you're looking at a feature checklist, and if it's more about how you implement things. Rob says AngularJS is much more component based and talks about some things that came up during the cage match which were tricky in Angular, because &quot;you just don't do that&quot;. </li>      <li>(04:18) Jon asks if there's an overall effect to how you build your application because it's just not how the framework works. Tom says it's unacceptable when your designer comes to you with a user interaction design for you to tell them it's just too hard to do in your framework, so you won't do it. As framework developers, they spend a lot of effort on composability. Rob says that he sees Ember.js as more prescriptive, while AngularJS provides more building blocks. Rob says it seems like Rails to him, in that it just goes a lot better for you if you give in and go with the framework's opinions. </li>      <li>(06:13) Jon asks about how customization works in Ember.js, compared with Angular's use of directives and filters. Tom says that's done via helpers, referencing an example from the cage match. </li>   </ul>    <li>Client-side MVC implementation and The Importance of URLs</li>    <ul>     <li>(06:34) Rob asks Tom if it makes sense to say that &quot;if you can think of it in a server-side framework like ASP.NET MVC or Rails, you can think of it in Ember.js&quot;. Tom says it's not the same, because server-side MVC requests are short-lived compared to client-side applications. The real challenge is how you manage that state over time. </li>      <li>(07:17) Tom says that they think URLs are really important. Their challenge has been how to marry the concepts of desktop MVC with the fact that they have a URL, and he thinks they've nailed it. Jon asks how that compares to Angular; Rob says that it's not a primary concern in AngularJS or Backbone. </li>      <li>(08:37) Tom says he considers your web application broken if he hits refresh and doesn't see the same thing he saw before. Everyone screws this up, not because they're idiots but because it's hard, and if you don't have this built into the framework you're using you'll mess it up. (09:06) K Scott asks what kinds of applications are the sweet spot for Ember.js. Tom says his first real professional programming gig was working on MobileMe / iCloud apps. They were big apps written in SproutCore. He says it's important to be able to add features without breaking old features. Functional reactive programming and strong conventions help support this. </li>   </ul>    <li>State and Scope</li>    <ul>     <li>(10:38) Jon asks about the difference in maintaining state between Ember.js and AngularJS. Tom talks about how the Ember.js controller is similar to Cocoa and explains how the the controller presents the model to the template. Rob describes the $scope in AngularJS and compares the way AngularJS handles things more explicitly, whereas Ember.js is more conventional. </li>      <li>(12:19) Tom says that he thinks the way AngularJS leverages JavaScript's prototypal inheritance is really elegant, but it breaks down when you have very deeply nested UI's pushing you into directives and more complex decisions. Rob says that you can share scope between AngularJS controllers, but the isolated scope situation is one of the things you struggle with in Angular. </li>   </ul>    <li>Testing, testing</li>    <ul>     <li>(13:54) Jon asks Tom about his comment on testability. Tom says that Angular's Karma test support is really nice, and they're working on catching up in Ember. Rob says that in AngularJS you're just working with basic objects, which is really nice when you're testing. </li>      <li>(16:08) Tom says Ember.js requires you to do things correctly from the beginning; they won't give you any foot guns to make things easier. Helpers help. </li>      <li>(16:42) K Scott asks how change detection works. Tom explains the differences - AngularJS uses dirty checking against the DOM, while Ember.js uses accessors (like Backbone). Tom says that the performance is better in Ember.js. Angular's situation will improve when they get object.observe, which ironically will happen at the same time Ember's situation improves due to support for object proxies. </li>      <li>(18:37) K Scott says he'd like to be able to conventionally wire up events. Tom talks about event delegation in Ember.js. </li>   </ul>    <li>The SEO Elephant in the Room</li>    <ul>     <li>(19:53) Tom says the biggest issue with JavaScript client-side applications today is SEO and describes why he's not happy with the SEO solutions the other frameworks provide. They're working on a solution that uses leverages the fact that they use Handlebars for templating to run a server-side process to generate SEO friendly content without any PhantomJS dependency. </li>   </ul>    <li>Using Ember.js When You're Not Tom</li>    <ul>     <li>(22:28) Jon says that one issue with highly conventional frameworks is that it can be hard when you're getting started and don't know the conventions. Tom agrees and says that you'll be frustrated if you experience learning difficulty before you feel the power and says the solution is documentation and good tooling. He mentions a coming Chrome extension that will show you what controller and model are backing content on the screen when you hover over it. K Scott says he's pretty impressed with the Ember.js documentation. </li>   </ul>    <li>What's Next? How about some Prollyfills?</li>    <ul>     <li>(24:45) K Scott asks about what's coming out next. Tom talks about Polymer and Web Components. Jon asks if this was related to something he saw on Twitter the other day and Tom says it's #extendthewebforward. The idea is that browsers should express primitives so browser vendors can innovate at the JavaScript level - rather than building speculative features into the browser, shipping a JS library that works cross-browser and can function as a polyfill (or &quot;prolly&quot;fill) if the feature doesn't ship. </li>   </ul>    <li>So who won? Any missed opportunites?</li>    <ul>     <li>(29:45) K Scott asks who won the cage match and Rob admits to having been destroyed. K Scott asks why Rob keeps challenging framework authors to cage matches. </li>      <li>(30:52) Jon asks Tom about the curveball that he threw at Rob during the cage match. Rob and Tom agree that coding a directive on the fly is not easy. </li>      <li>(31:42) Jon asks Tom if there's something that Rob could have asked Tom that would be hard in Ember. Tom says that they just added a competitor to filters using bound helpers, but if Rob had thrown list sorting at him he'd have had a hard time. </li>      <li>(32:54) Jon asks about a viewer question on the emphasis on getting started vs. maintainability. Rob says that they'd first focused on composability, but nobody wanted to use it until it was easy to get started. Framework libraries don't get the luxury of forcing a difficult learning experience on developers - if he can't show value in 5 - 10 minutes, you'll leave. </li>   </ul>    <li>Wrap?</li>    <ul>     <li>(34:42) K Scott asks Rob and Tom what else they've got going on. Rob plugs some TekPub videos (listed below) and Tom plugs some upcoming classes he and Yehuda will be offering (also listed below). </li>   </ul> </ul>  <p>Show Links: </p>  <ul>   <li>Tom Dale (<a href="https://twitter.com/tomdale">@tomdale</a>, <a title="http://tomdale.net/" href="http://tomdale.net/">http://tomdale.net/</a>) </li>    <li>Rob Conery (<a href="http://twitter.com/robconery">@robconery</a>, <a href="http://wekeroad.com">http://wekeroad.com</a>) </li>    <li><a href="http://www.ndcoslo.com/">Norwegian Developers Conference (NDC)</a> </li>    <li><a href="http://emberjs.com/">Ember.js</a> </li>    <li><a href="http://angularjs.org/">AngularJS</a> </li>    <li><a href="http://ember101.com/">Ember101.com</a> </li>    <li><a href="http://sproutcore.com/">SproutCore</a> </li>    <li><a href="http://karma-runner.github.io/0.8/index.html">Karma test runner for JavaScript</a> </li>    <li><a title="http://yehudakatz.com/2013/05/21/extend-the-web-forward/" href="http://yehudakatz.com/2013/05/21/extend-the-web-forward/">Yehuda Katz - Extend the Web Forward</a> </li>    <li><a href="http://www.polymer-project.org/">Polymer</a> </li>    <li><a href="http://prollyfill.org/">Extensible Web Community Group</a> </li>    <li><a href="http://tekpub.com/blogs/video-releases/8050203-get-involved">TekPub: Get Involved!</a> with Scott Hanselman </li>    <li>Upcoming Ember.js courses from <a href="http://www.tilde.io/training/">Tilde</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0169-NDC-Ember-Angular-Cage-Match.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 168: John Sheehan on Runscope</title>
    <link>https://herdingcode.com/herding-code-168-john-sheehan-on-runscope/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-168-john-sheehan-on-runscope/</guid>
    <pubDate>Fri, 07 Jun 2013 20:06:26 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk to John Sheehan about the recent launch of his new API developer tools company, Runscope. Herding Code 168: John Shee</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 168</strong></p>
<p>This week on Herding Code, the guys talk to John Sheehan about the recent launch of his new API developer tools company, Runscope.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0168-Runscope.mp3">Herding Code 168: John Sheehan on Runscope</a> </p>  <p>Show Notes:</p>  <ul>   <li>Intro      <ul>       <li>(00:30) &quot;What is Runscope and why should I care?&quot; </li>        <li>(00:55) Runscope is the ultimate API integrator developer's toolbox. It helps you solve the problems you encounter in dealing with API's from a consumption standpoint. It takes invisible API traffic and makes it visible, then helping you do all sorts of things with it: debugging, sharing, retry a request from the website, testing features like response playback without hitting the API, webhook debugging, etc. When you rely on an API, you're not just taking on a service dependency - it's code code that's running on someone else's service, and you should treat it like it's code that's under your control. You should apply the same testing rigor and should have the same debugging facilities. </li>        <li>(03:25) Jon asks about the launch. Anyone can try it out now at runscope.com. John talks about the internal preview (shoutout to Kevin Dente, the first beta tester) and the launch at GlueCon and press at TechCrunch and TheNextWeb. </li>     </ul>   </li>    <li>(04:35) Overview of <a href="https://www.runscope.com/#features">features</a>:       <ul>       <li>Traffic Inspector          <ul>           <li>(04:55) In your code, instead of calling an API directly, you create a Runscope URL by including a Runscope bucket key and replacing dots with dashes. Essentially you're pointing your API calls at Runscope, which then extracts the hostname and makes the API request for you. A lot of other tools require you to change your API calls by modifying your authentication, adding parameters, etc. Runscope doesn't require any changes outside of the hostname, and all of your original headers and request parameters stay intact. This means you can just flip it on by changing your hostname and turn it off when done. You can then view all your requests in the Runscope website, filter to only show errors, All your requests show up in </li>            <li>(07:45) Scott says this is essentially a reverse proxy. John agrees that's technically correct, but they avoid the term because they're doing a lot more. </li>            <li>(08:13) Scott asks if Runscope adds headers to allow filtering or other things. John says the only modification they make is to add a Runscope message id header to allow lookup. They're thinking of some things in the future like caching credentials to apply to a lot of requests and other features that benefit performance, security, etc. </li>            <li>(09:27) Jon asks about the security concerns, as Runscope is kind of like a man in the middle. John says they're very concerned with security, and points to <a title="https://www.runscope.com/docs/security" href="https://www.runscope.com/docs/security">https://www.runscope.com/docs/security</a> for a lot more information about their security practices. They're looking at future things like encrypted storage, and currently if you make an SSL request to Runscope they will forward it over SSL to the API provider. </li>            <li>(11:45) Jon asks about cases like multi-legged auth. John says everything just flows through Runscope, with one exception - if a response comes back with a location header then Runscope will modify the location to a Runscope url so if the client follows it it'll be captured. </li>            <li>(12:40) Scott asks about how geolocation works, since Runscope is making the request from a different location. John says that currently they're making requests from US East Coast, but in the future they want to allow requests from specific geographic areas. </li>            <li>(14:10) Scott asks about a current app he's working on which requires a custom certificate to connect to an API and asks if that would be supported. John says that they're looking at both support for custom certificates as well as on -premises installations to support those scenarios. </li>            <li>(15:35) Scott asks about support for non-standard ports. John says they support that using a Runscope request port header. </li>         </ul>       </li>        <li>Request Editor          <ul>           <li>(16:09) Jon asks about the Request Editor. John explains that they really wanted to make it possible to edit and create requests as easily as any other code. Their original inspiration was the hurl.it site. Jon interjects that he loves using hurl.it to see where shortened or dodgy urls will take him before clicking on them. John says they've taken the idea of hurl.it and really filled it out to include storage, advanced editing, etc. They also built in some helpers for basic auth, digest authentication, OAuth 1, OAuth 2 token generators, etc. </li>            <li>(19:45) Scott asks if they've looked at integrating OWASP tests to run some automated security inspection for things like SQL injection, XSS, redirect attacks, etc. John says he'd like to let people create collections and share them with others. </li>         </ul>       </li>        <li>Shared Requests          <ul>           <li>(21:11) Jon says that when he was testing during the beta and hit a question, John just had him share the request with him. John says that he really wanted that feature when he was at Twilio, and they currently use it all the time internally. </li>            <li>(22:39) Jon asks if there's a way to download or otherwise privately share a request. John says the best way to do that now is use team account, which allows for privately share requests within the team. They're also looking at allowing redacting some fields in shared requests, so you can share a request without revealing your password or other sensitive information. </li>         </ul>       </li>        <li>Passageway          <ul>           <li>(22:48) Passageway was based on the localtunnel project. It installs an agent on your local machine which forwards requests to a specific port to Runscope, and Runscope then creates a public URL. You can use Passageway to show off code running on your local machine, but you can also use it for debugging webhooks and testing API's used in a mobile application (by pointing it at the public Runscope URL). Scott says he sees this as being useful in a continuous integration environment, and John says that a current customer is already doing this. </li>            <li>(27:33) Jon asks about the installation via pip, and John explains how pip relates to other package managers. They plan to provider other installers, and later the agent will do more than just Passageway - right now it also supports automatically creating Runscope urls for requests. </li>            <li>(29:27) Jon says that Passageway is the first place on the site where he sees something about paid accounts and asks John how they're going to get rich. John says there are three reasons (access to passageway, team sharing and volume) to upgrade from a free account to a starter or team account. Jon asks about the naming of the starter account, and John says that naming and pricing are really hard. Scott offers some advice on enterprise friendly pricing. </li>         </ul>       </li>     </ul>   </li>    <li>Starting a business      <ul>       <li>(32:47) Jon asks about the experience of moving from being a developer to founding a company. John says he's started several small companies, and writing software has always been a way to solve problems for businesses. He tells his recent job history at Twilio and IFFT and how he and his co-founder Frank got really fed up with the lack of good API developer tools and how they got started, funded, and launched. Getting funded was both a finish line and a starting line. </li>        <li>(41:33) Scott and Jon talk about positive response they saw to the GlueCon launch: John spent the majority of the time describing the problem, then unveiled the solution. Scott compares John to Steve Jobs. </li>     </ul>   </li>    <li>What's next      <ul>       <li>(43:05) Jon asks what's next. John says they're first focusing on dev-time troubleshooting. Next they'll be focused on production use, especially high volume use cases. Long term they're thinking about mitigating problems - handling or proactively monitoring for problems. </li>     </ul>   </li>    <li>Python      <ul>       <li>(45:14) Jon asks about John's experiences building Runscope in Python and how he compares it to .NET. John says he's really come around to significant whitespace and standard </li>        <li>(46:59) Scott asks if John's noticed that there are fewer ways to solve a problem, as opposed to C# or JavaScript. John says that's true for the most part. He comments on how he likes the small libraries and ecosystem. </li>     </ul>   </li>    <li>Runscope vs. other network tools like Fiddler and Wireshark      <ul>       <li>(49:19) Scott asks why you'd use Runscope rather than use things like Fiddler, Wireshark, etc. John explains proxies and applications modify the way the application works and doesn't work well on servers - it's cloud-native. It's also social - sharing is built in. Thirdly, it's not a desktop application. </li>        <li>(52:30) John says he'd like to write a Fiddler plugin to make the two work well together. Scott says that there's one advantage to desktop applications - it can interact directly with the network stack. John agrees that developers need tools that work at all layers of the stack. Scott recounts a harrowing tale in which Fiddler had to be installed on a server for an application to work. </li>        <li>(55:20) Jon says he was wondering about integrating with Glimpse but that would require an API - does Runscope have an API? John says one's on the way soon. </li>     </ul>   </li>    <li>Lightning Round inspired by John's Traffic and Weather podcast (with Steve Marx)      <ul>       <li>(57:00) Jon says he's really been enjoying the Traffic and Weather podcast, and the John and Steve have convinced him that API's really can be interesting. </li>        <li>(57:50) JSON API - what is it, and is it good? </li>        <li>(59:34) What are webhooks, and why have you been talking about them? </li>        <li>(1:01:52) Should we stop writing REST SDK clients? </li>        <li>(1:04:29) Where is API security going? Is it OAuth 2 from here on out? </li>        <li>(1:05:21) Eric Williams (@motowilliams) asks &quot;Ping Pong or Foosball? #gooooooaaaaaallll&quot; </li>        <li>(1:06:17) Where are you speaking next (answer: API Days and API World, both in San Francisco) </li>        <li>(1:07:32) Do you support the HTTP 418 teapot response? </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>John Sheehan (<a href="https://twitter.com/johnsheehan">@johnsheehan</a>, <a title="http://john-sheehan.com/" href="http://john-sheehan.com/">http://john-sheehan.com/</a>) </li>    <li><a href="https://www.runscope.com/">Runscope</a> </li>    <li><a href="http://techcrunch.com/2013/05/22/runscope-lands-1-1m-from-true-ventures-and-andreessen-horowitz-for-tools-that-address-the-broken-api-plague/">TechCrunch: Runscope Lands $1.1M From True Ventures And Andreessen Horowitz For Tools That Address The Broken API Plague</a> </li>    <li><a href="http://thenextweb.com/insider/2013/05/22/runscope-raises-1-1m-to-help-developers-that-rely-on-3rd-party-apis/">TheNextWeb: Runscope raises $1.1m to help developers that rely on 3rd-party APIs</a></li>    <li><a href="http://progrium.com/localtunnel/">localtunnel</a> </li>    <li><a href="http://hurl.it">hurl.it</a> </li>    <li><a href="http://trafficandweather.io/">Traffic and Weather</a> podcast </li>    <li><a href="http://jsonapi.org/">JSON API</a> </li>    <li><a href="https://zapier.com/">Zapier</a> (REST hooks discussion on <a href="http://trafficandweather.io/posts/2013/5/12/episode-11-">Traffic and Weather ep 11</a>) </li>    <li><a href="http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol">Hyper Text Coffee Pot Control Protocol and the HTTP 418 (I'm a teapot) response</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0168-Runscope.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 167: Glenn Block on scriptcs</title>
    <link>https://herdingcode.com/herding-code-167-glenn-block-on-scriptcs/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-167-glenn-block-on-scriptcs/</guid>
    <pubDate>Fri, 24 May 2013 23:09:39 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk to Glenn Block about scriptcs. Herding Code 167: Glenn Block on scriptcs</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 167</strong></p>
<p>This week on Herding Code, the guys talk to Glenn Block about scriptcs.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0167-ScriptCS.mp3">Herding Code 167: Glenn Block on scriptcs</a> </p>  <p>Show Notes:</p>  <ul>   <li>Intro      <ul>       <li>(00:10) K Scott asks Glenn if he's still working with Node at Microsoft. Glenn says he's moved from command-line tools for node and is focused on Azure Mobile Services, but he still owns the Node SDK and the Node story for Azure. </li>        <li>(01:56) K Scott scriptcs is another way to write C# code outside of the IDE as script files. It's inspired by Glenn's work with Node.js. It leverages Roslyn, NuGet, and some conventions to simplify scripting, such as automatically pulling in NuGet packages. </li>        <li>(03:58) K Scott comments on the ability to reference assemblies using the #r directive. Glenn says it's even easier than that - you can use #r to reference GAC'd assemblies, but assemblies in the local bin folder are automatically referenced. K Scott asks about the hooks to support that, and Glenn explains how Roslyn supports a lot of scenarios; since it ships it as NuGet packages it can be used outside of Visual Studios. Roslyn allows for code to exist outside of a class. </li>        <li>(06:33) Jon talks about his initial experiences, and how the REPL made it really easy to get started. Glenn explains how that works and explains how, using Chocolatey you can quickly install scriptcs and a NuGet package like MongoDb and then just start writing code in the REPL. </li>     </ul>   </li>    <li>Dependence on Roslyn      <ul>       <li>(09:35) Kevin points out that Roslyn is still in CTP and asks how that impacts scriptcs. Glenn says that since it's a CTP Roslyn you can't ship the binaries, but that's not a problem for scriptcs since it pulls in the public NuGet packages. Roslyn is still evolving, it doesn't yet support async / await or dynamic, for instance. </li>        <li>(11:13) scriptcs no longer takes a dependency on Roslyn. It uses a pluggable script executor which can use Roslyn but can potentially also use other script engines. </li>     </ul>   </li>    <li>Example uses of scriptcs      <ul>       <li>(12:33) K Scott asks for some common use cases. Glenn says that it's possible to build apps because you can have one script that includes other scripts, then talks about the WPF calculator sample in the scriptcs-samples repo. </li>        <li>(14:18) Glenn says another use he's seeing is automation - basically as a replacement for PowerShell. He talks about the Fluent Automation sample which uses script-cs to automate Selenium tests. </li>        <li>(15:18) Glenn talks about a real world example at a large trucking company who is using scriptcs to automate data processing jobs. </li>        <li>(16:05) Octopus Deploy has added support for scriptcs. He used a loader script that passes configuration to user-written scripts. </li>        <li>(17:42) Glenn says it's useful to tinker and play with libraries or services and give an example of interacting with Azure Mobile Services in the REPL. </li>        <li>(18:38) One other example is extensibility - creating hooks and allowing end users to just drop in a scriptcs script to extend behavior. </li>        <li>(19:03) Kevin says that in the past people have used JavaScript engines to support extensibility. Glenn says that touches on a common question - why scriptcs as opposed to a lot of other options such as F#, Ruby, node, etc.? He gives two reasons: you get to stay in a language you're familiar with, and there's a &quot;grow up&quot; story to migrate from scriptcs to a Visual Studio project using the same libraries, same code, etc. </li>        <li>(20:03) Jon says that the PowerShell syntax is different enough that he can't remember it. He talks about the idea of using scriptcs for installation and initialization scripts in NuGet rather than PowerShell. Glenn says there are kind of ways to use C# with PowerShell, but it's not the same. He mentions a sample from @beefarino which lets you talk to scriptcs from PowerShell. </li>        <li>(23:01) Kevin asks what the migration process is to move from scriptcs to a C# project. Glenn says it depends on how much you take advantage of scriptcs features like Script Packs. Script Packs bring a node-like require module syntax into scriptcs. Glenn talks about the Web API script pack which adds in proper usings and gives you an API that's very easy to use in script, without IntelliSense. They've talked about creating a project exporter which could set up a project and bring in your Script Packs, etc. </li>        <li>(26:25) Kevin asks if the Script Pack / Require experience could be brought into standard C#. Glenn says the general concept could work because it's just a DLL, although there are some incompatible things like import statements. They've looked at writing Script Packs as script, which could make this more useful. </li>        <li>(28:40) Kevin talks about how the Node module system handles conflicting dependencies and asks if scriptcs handles that. Glenn says not yet, but .NET is now able to handle that so it could be added in. The general idea of script modules depending on other script modules makes sense, but conflicting dependencies might not be very useful. They're thinking of NuGet packages with no assemblies, just does as content, and talks about some implications. </li>        <li>(31:32) Jon talks about how Glenn had told him that a lot of his bizarre feature requests wouldn't fit in the core but could be useful as extensions, then asks about the extensibility points. Glenn runs through what you can do: change the engine, use Script Packs, bring in NuGet packages, possible later REPL extensions via global NuGet packages. He says they're following the Node team's principles of keeping a small tight core and pushing features towards extensions. </li>     </ul>   </li>    <li>Questions from Twitter      <ul>       <li>(34:14) Jeff Schumacher (@codereflection) asks Glenn to compare scriptcs performance vs. compiled code. Glenn says that there can be a short startup impact and potentiall </li>        <li>(35:58) Akim Boyko (@AkimBoyko) asks if it's possible to run scriptcs without Roslyn, async/await support and in sandbox mode. Glenn talks about the Mono impact of running without requiring Roslyn support. Roslyn will be getting async/await support at some point, but it could also be added via CodeDom if people implement that. However, CodeDom doesn't support the classless system that Roslyn does. </li>        <li>(38:04) Simon Cropp (@SimonCropp)&#160; asks if scriptcs support plugging into the build pipeline? Eg if I wanted to plug in Fody (<a href="https://github.com/Fody/Fody/">https://github.com/Fody/Fody/</a>). </li>        <li>(39:41) Several questions on how scriptcs compares to Snippet Compiler, LinqPad and csscript. </li>        <li>(41:12) Dan Vanderboom (@danvanderboom) asks if scriptcs let us run a .cs code file by itself anywhere in the file system? Glenn says no and explains why he's not sure that would be useful. </li>        <li>(42:55) Tomasz Janczuk (@tjanczuk) asks When will integration of scriptcs and edgejs be done? ;) Glenn talks about how the projects have both grown up together and how the two would be useful together. </li>     </ul>   </li>    <li>Debugging and IntelliSense      <ul>       <li>(45:29) Jon talks about how he messed something up in the samples and debugged it and asks about debugging support. Glenn points out that you can directly debug an EXE in Visual Studio and explains how to debug scriptcs code in Visual Studio. He also talks about MDbg which Glenn (and apparently everyone else) didn't know existed. He also mentions a Script Pack for debugging. </li>        <li>(48:15) Jon says the REPL is great, and yet he'd sometimes like IntelliSense. Glenn talks about a lightweight WPF editor that's in progress, but says if you get to a point where things are getting complex it's probably time to move to move from scriptcs to a project. Jon says that for the most part Script Packs seem to really simplify the code to the point where you don't really need IntelliSense, and Glenn agrees. </li>     </ul>   </li>    <li>Shoutouts      <ul>       <li>(50:45) Glenn calls out the two other coordinators on the project, Filip Wojcieszyn (@filip_woj) and Justin Rusbatch (@jrusbatch) as well as some other top contributors. </li>     </ul>   </li>    <li>Shell capabilities, TSR scenarios      <ul>       <li>(52:03) Kevin asks if there are possible changes to make it more shell-like with things like piping. Glenn says they currently have a poor story for arguments, but it's coming. You can currently pipe text, but he's not sure about piping objects. </li>        <li>(54:30) Jon says he's got some AutoHotKey scripts and asks if scriptcs could handle that kind of thing. </li>     </ul>   </li>    <li>Future plans      <ul>       <li>(56:10) K Scott asks where things are going in the future. Glenn mentions scriptcs modules, aliases, a better Visual Studio experience, export project, and saving DLLs. </li>        <li>(1:04:25) Glenn talks about some interesting ideas on GitHub, like a command to break execution into the REPL. They've got 20 active contributors, so things are moving fast. </li>        <li>(59:54) Glenn says he's got a personal interest in seeing some adoption in Microsoft - such as adding scriptcs scripting to other projects. </li>        <li>(1:00:25) Glenn talks about one question that comes up: should the Roslyn team have tackled the scriptcs scenario? </li>     </ul>   </li>    <li>Wrap up      <ul>       <li>(1:01:10) K Scott asks about Glenn's upcoming plans, speaking engagements, etc. </li>        <li>(1:02:27) Jon makes a last minute sales pitch to try it out - you can install in seconds from Chocolatey and just start playing at the REPL. Glenn points one gotcha - scripts which run servers need to be run as admin. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Glenn Block (<a href="https://twitter.com/gblock">@gblock</a>, <a href="http://codebetter.com/glennblock/author/glennblock/">CodeBetter blog</a>,&#160; <a href="http://blogs.msdn.com/b/gblock/">MSDN blog</a>) </li>    <li><a href="http://codebetter.com/glennblock/2013/02/28/scriptcs-living-on-the-edge-in-c-without-a-project-on-the-wings-of-roslyn-and-nuget/">scriptcs - Living on the edge in C# without a project on the wings of Roslyn and Nuget</a> - Glenn's post explaining scriptcs and why the project started</li>    <li><a href="http://codebetter.com/glennblock/2013/05/14/scripting-ease-with-script-packs/">Scripting ease with Script Packs</a>&#160;</li>    <li><a href="http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx">Roslyn CTP</a> </li>    <li><a href="https://github.com/scriptcs/scriptcs-samples">scriptcs samples repository</a>&#160; </li>    <li><a href="https://github.com/scriptcs/scriptcs-samples/tree/master/fluentautomation">Fluent Automation sample</a> </li>    <li><a href="http://www.beefycode.com/post/ScriptCS-or-PowerShell-part-1.aspx">ScriptCS or PowerShell</a> post by @beefariono </li>    <li><a href="http://www.dotnetrocks.com/default.aspx?showNum=853">scriptcs on Dot Net Rocks</a></li>    <li><a href="http://www.hanselman.com/blog/ProjectlessScriptedCWithScriptCSAndRoslyn.aspx">Project-less scripted C# with ScriptCS and Roslyn</a> (Scott Hanselman)</li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0167-ScriptCS.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 166: Tomasz Janczuk on Edge.js</title>
    <link>https://herdingcode.com/herding-code-166-tomasz-janczuk-on-edge-js/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-166-tomasz-janczuk-on-edge-js/</guid>
    <pubDate>Thu, 16 May 2013 20:13:49 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk to Tomasz Janczuk about running .NET code in Node.js using Edge.js. Herding Code 166: Tomasz Janczuk on Edge.js [audi</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 166</strong></p>
<p>This week on Herding Code, the guys talk to Tomasz Janczuk about running .NET code in Node.js using Edge.js.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0166-EdgeJS.mp3">Herding Code 166: Tomasz Janczuk on Edge.js</a> </p>  <p>Show Notes:</p>  <ul>   <li>Intro and background on Edge.js</li>    <ul>     <li>(00:40) Tomasz has been focusing on Node.js at Microsoft for the past 3 years. He's been working on making Node.js run well on Windows. He's also worked on hosting Node.js on Windows Azure with IISNode. </li>      <li>(02:08) Jon asks about Edge.js's original name, Owin. Tomasz explains how that made sense with the original scope - connect middleware and express handlers - but it's grown since then so it needed a more generic name. </li>      <li>(02:45) Edge.js lets you run Node.js and .NET code in one process and provides interop mechanisms between the two. </li>      <li>(03:05) Jon asks why that's useful. Tomasz says you can do pretty much anything in either Node.js or .NET, but some things work a lot better on one platform. He gives examples like using ADO.NET to connect to SQL Server and running CPU bound computations as multi-threaded .NET code from the single-threaded Node.js event loop. There are two classes of scenarios: things that work better on one platform, or writing native extensions to Node.js without having to drop all the way down to raw C and native OS mechanisms. </li>      <li>(06:11) Jon brings up two questions from Twitter about Mono support (Jason Denizac @_jden &quot;when's mono support coming?&quot; and Kevin Swiber &quot;Mono support? Can we do legit Node modules in C#? Are grilled hotdogs really better than boiled?&quot; Tomasz says not yet, but it's high on the list. There are some complications to implement that support since Edge.js uses C++ CLI, which isn't available on Mono. </li>   </ul>    <li>Getting started and samples</li>    <ul>     <li>(07:57) Jon asks what's involved in setting it up. He says he ran npm install edge, then npm install edge-cs. Tomasz explains why he didn't need to install edge-cs - C# support is built in, other language support plugs in. </li>      <li>(08:43) Jon asks about the samples. Tomasz explains the different ways of integrating CLR code into Node.js and talks about how the samples show these approaches. </li>      <li>(10:36) Jon says he liked how the samples progressed from very basic to pretty complex. Tomasz says you can do just about anything in Edge.js, but there's a specific interface you need to follow in order to work smoothly between the Node.js async model and many synchronous operations in .NET. Every function in Edge.js uses an async function delegate, so you end up using small wrapper functions in some cases. </li>   </ul>    <li>Marshalling and interop</li>    <ul>     <li>(13:08) Kevin says this reminds him of COM / .NET interop and issues with object lifetime, garbage collection, etc. Tomasz says that that the async function delegate solves the threading models. Object lifetimes are controlled because everything is marshalled by value. </li>      <li>(16:22) Kevin asks if the marshal by value prevents working directly with the CLR object. Tomasz says that you can handle this using function proxies to create closures over CLR states. </li>      <li>(17:45) Scott K. asks if structs eliminate the serialiazation issues. Tomasz clarifies that the marshalling process is reflecting over the objects in .NET and recreating a synonymous JavaScript. Scott says this sounds like thunking from days of old. </li>      <li>(19:27) Jon says that he saw one sample that allows for debugging inline .NET code in a JavaScript file. Tomasz explains that this is done using the codedom compiler to create an in-memory assembly with debugging information, which can be attached to from Visual Studio. </li>      <li>(21:25) Jon says he thinks this sounds useful for using a NuGet package in a Node.js application and asks if there's support for pulling in a NuGet package. Tomasz says that at this point it's up to you how you'd get the assembly downloaded and set up, but that there's an open issue to get script-cs integration going and that would handle this. </li>   </ul>    <li>Overhead and performance</li>    <ul>     <li>(23:06) Jon asks about the overhead of running two virtual machines and marshalling. Tomasz says there is some overhead, but it's better than running two different processes. Edge.js is built for solving some specific scenarios, and it's fast in those </li>      <li>(24:55) Kevin asks if there's a delay when Edge.js spins up. Tomasz says that happens when you require Edge, but it's not really noticeable. </li>   </ul>    <li>Misc questions</li>    <ul>     <li>(25:55) Jon asks what was the hardest part of implementing Edge.js. Tomasz says the function proxies to handle lifetimes and reconciling threading models. </li>      <li>(27:45) Scott says this sounds useful for authentication or using a legacy .NET library. Tomasz lists several more. </li>      <li>(29:20) Kevin asks how exceptions are handled. Tomasz explains how the exceptions are marshalled and thrown across VM boundaries. </li>      <li>(30:15) Kevin asks if it's tied to specific Node.js versions. Tomasz says it works on all current stable versions. </li>      <li>(31:30) Question from Twitter: @jeremydmiller &quot;I've seen a lot of samples of hosting . Net in node, but how about running node in a .net process?&quot; Tomasz talks about an open issue, Mission Double Edge which would handle that. He explains that the challenge is that Node.js doesn't have a hosting model. </li>      <li>(33:20) Jon says he saw several of the samples had the C# script named with .CSX extension and asks about that. Tomasz says that this is partly done to follow Roslyn conventions, including specifying assemblies as references in code using #r. </li>   </ul>    <li>Future plans and next steps for listeners</li>    <ul>     <li>(34:25) Jon asks what's planned going forward. Tomasz talks about Mono support and adding support for additional languages, including F# (note: this has been added <a title="http://tjanczuk.github.io/edge/#/3" href="http://tjanczuk.github.io/edge/#/3">http://tjanczuk.github.io/edge/#/3</a>) . Jon asks what's involved in adding language support. </li>      <li>(36:30) Jon asks about the relationship with OWIN. Tomasz says there's a separate module which allows you to plug any OWIN compatible .NET application and plug it into an Express.js pipeline. Jon says this reminds him of the Edge name and Tomasz explains that the idea is that mathematically an edge connects two nodes, so Edge.js connects differe. </li>      <li>(38:25) Jon asks about next steps for people to get started. </li>      <li>(38:55) Jon asks if this is a Microsoft project. Tomasz says it's his own separate open source project that's inspired by his day job, and this allows him some more flexibility to work with the community. He lists some of the community contributions they've seen so far. </li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Tomasz Janczuk (<a href="https://twitter.com/tjanczuk">@tjanczuk</a>, <a href="http://tomasz.janczuk.org/">blog</a>) </li>    <li>Official Edge.js site: <a title="http://tjanczuk.github.io/edge/#/" href="http://tjanczuk.github.io/edge/#/">http://tjanczuk.github.io/edge/#/</a> </li>    <li>Edge.js on GitHub: <a title="https://github.com/tjanczuk/edge" href="https://github.com/tjanczuk/edge">https://github.com/tjanczuk/edge</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0166-EdgeJS.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 165: Mark Seemann on AutoFixture and Unit Testing</title>
    <link>https://herdingcode.com/herding-code-165-mark-seemann-on-autofixture-and-unit-testing/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-165-mark-seemann-on-autofixture-and-unit-testing/</guid>
    <pubDate>Tue, 30 Apr 2013 18:52:30 GMT</pubDate>
    <description><![CDATA[<p>While at the Danish Developer Conference in Copenhagen, Jon sat down with Mark Seemann to talk about AutoFixture and Unit Testing. Herding Code 165: Mark Seem</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 165</strong></p>
<p>While at the Danish Developer Conference in Copenhagen, Jon sat down with Mark Seemann to talk about AutoFixture and Unit Testing.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0165-Mark-Seemann-on-AutoFixture-and-Unit-Testing.mp3">Herding Code 165: Mark Seemann on AutoFixture and Unit Testing</a> </p>  <p>Show Notes:</p>  <ul>   <li>AutoFixture</li>    <ul>     <li>(00:44) AutoFixture is an open source library that simplifies the &quot;Arrange&quot; part of the standard Arrange / Act / Assert steps in unit tests.</li>      <li>(01:20) Jon asks about anonymous variables. Mark says he got that terminology from Gerard Meszaros' book, xUnit Test Patterns. Anonymous methods and variables are necessary for a test, but their implementation doesn't matter. </li>      <li>(02:23) Mark describes the test data builder pattern, from the book Growing Object-Oriented Software. The pattern works well, but it gets to be repetitive and mechanical to write and maintain, so he wanted to automate it. AutoFixture uses reflection to create the needed instances.</li>      <li>(04:00) Jon asks about the usage pattern for AutoFixture.(04:16) Jon asks about the different values returned for strings, ints, etc. Mark explains how that's changed over time - numbers no longer just return sequential values, they now return random small numbers.</li>      <li>(05:20) Mark explains equivalence classes. Jon says &quot;Okay&quot; a lot. You can use AutoFixture in cases where you don't care about the value; in cases where you do, you can configure what you want to. Mark explains some of the different ways you can use the AutoFixture API to set specific values when needed.</li>      <li>(09:15) Jon asks how AutoFixture works with mocking. Mark says there are NuGet packages which will interface with Moq, Rhino Mocks, FakeItEasy and NSubstitute.</li>      <li>(10:25) Jon asks Mark what his talk said about equivalence. Mark explains identity and value objects with an example with overriding the equals operator on a money value object. The more you can model your domain as value objects, the easier your tests become. Jon asks if this is an example of TDD driving a good design. Mark says that he tried letting tests completely drive his design a few years ago, but he found that it alone didn't drive a very good overall design.</li>   </ul>    <li>Testing philosophy, Testing Trivial Methods</li>    <ul>     <li>(15:56) Jon asks Mark about his recent post advocating testing trivial methods. Mark says that his post was in response to Robert C. Martin's post, The Pragmatics of TDD. Mark makes a case for testing getters and setters - if you decide to use a property rather than a field, that decision probably warrants a test to verify the property is maintaining the behavior that drove the original decision.</li>      <li>(20:38) Jon asks how this applies to the example of testing ASP.NET MVC controller code. Mark says he's in the habit of testing everything, and has written a lot of tools to make writing the tests easy enough that it's not a concern. The question is, how much does it cost you if a unit of code doesn't function as designed? Mark explains how a controller action models the data flow in an MVC application, and decomposing the flow allows you to write smaller, simpler, more targeted tests.</li>      <li>(25:03) Jon asks how this relates to outside-in testing using tools like Selenium. Mark says that testing at the external boundary is fine if you can, but most applications become complex enough that boundary testing would require an impractical number of test cases.</li>   </ul>    <li>Wrap up</li>    <ul>     <li>(26:04) Mark says that many of these concepts are covered in more detail in Mark's Pluralsight course.</li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Mark Seeman (<a href="https://twitter.com/ploeh">@ploeh</a>, <a href="http://blog.ploeh.dk/">blog</a>) </li>    <li><a href="https://github.com/AutoFixture/AutoFixture">AutoFixture</a></li>    <li>Book: <a href="http://amazon.com/gp/product/B004X1D36K?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B004X1D36K&amp;linkCode=shr&amp;tag=jongall-20&amp;qid=1367272060&amp;sr=1-1">xUnit Test Patterns: Refactoring Test Code</a></li>    <li>Book: <a href="http://www.amazon.com/gp/product/B002TIOYVW?ie=UTF8&amp;camp=213733&amp;creative=393177&amp;creativeASIN=B002TIOYVW&amp;linkCode=shr&amp;tag=jongall-20&amp;qid=1367277246&amp;sr=8-1">Growing Object-Oriented Software, Guided by Tests</a></li>    <li>Blog post: <a href="http://blog.ploeh.dk/2013/03/08/test-trivial-code">Test trivial code</a></li>    <li>Blog post by Uncle Bob Martin: <a title="http://blog.8thlight.com/uncle-bob/2013/03/06/ThePragmaticsOfTDD.html" href="http://blog.8thlight.com/uncle-bob/2013/03/06/ThePragmaticsOfTDD.html">The Pragmatics of TDD</a></li>    <li>Pluralsight announcement: <a href="http://blog.pluralsight.com/2013/04/15/new-course-advanced-unit-testing/">New course: Advanced Unit Testing</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0165-Mark-Seemann-on-AutoFixture-and-Unit-Testing.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 164: OWIN and Katana with Louis DeJardin</title>
    <link>https://herdingcode.com/herding-code-164-owin-and-katana-with-louis-dejardin/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-164-owin-and-katana-with-louis-dejardin/</guid>
    <pubDate>Mon, 22 Apr 2013 19:35:36 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk to Louis DeJardin about OWIN - the Open Web Interface for .NET - and Katana, an open source OWIN implementation for ASP.NET and IIS. Dow</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 164</strong></p>
<p>This week on Herding Code, the guys talk to Louis DeJardin about OWIN - the Open Web Interface for .NET - and Katana, an open source OWIN implementation for ASP.NET and IIS.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0164-OWIN.mp3">Herding Code 164: OWIN and Katana with Louis DeJardin</a> </p>  <p>Show Notes:</p>  <ul>   <li>Intro </li>    <ul>     <li>(00:44) Scott and Louis explain what OWIN is. </li>      <li>(01:33) Louis explains the difference between OWIN (the community standard) and Katana (actual bits - an implementation of the OWIN standard for ASP.NET). </li>      <li>(03:18) Jon asks if this is similar to the distinction between HTTP / HTML standards and browser implementations. Louis explains what's required for an implementer to participate in a request. Each request calls a simple func with an IDictionary&lt;string&gt; which returns a task. </li>   </ul>    <li>The killer app: middleware</li>    <ul>     <li>(04:54) Scott talks about how the pipeline might not sound like much, but it can support a lot of really useful middleware scenarios like static caching and domain splitting - especially in a way that's common across frameworks. </li>      <li>(06:05) Louis talks about the challenge they've had in describing the benefit of OWIN in non-academic terms, and that it's not until you want to apply cross-framework concerns like authentication that OWIN really shines. </li>      <li>(07:52) Scott says that previously these kinds of concerns - logging, etc. - were wrapped up in System.Web, and they had performance implications regardless of whether you used them. The pipeline model lets you avoid those hits unless you explicitly want the features. </li>      <li>(10:03) Scott mentions some of the frameworks which have implemented OWIN, including NancyFx, Fubu, ServiceStack.</li>      <li>(10:50) Kevin says that the current implementation examples are full web frameworks rather than middleware. Louis says that probably because ASP.NET and IIS already had pipeline implementations so there's less of a forcing function than there was with Node and Ruby. Scott says that since the current implementations already have full stacks, there's less need to plug in modular solutions. Jon says he thinks that the late arrival of NuGet and other open modular systems like this mean it'll take a while to get traction. </li>      <li>(14:40) Louis says we'll need a killer app, and HttpListener hosting alone isn't that. Jon asks if you'd host Katana under IIS to manage the process. Louis says yes, and until there are other hosts than IIS he doesn't see the hosting as a big draw - he thinks auth is probably it.</li>      <li>1640 Scott says he could see auth frameworks and scaling middleware. Louis says that David Fowler updated JabbR to run on OWIN, and was able to move some of the scale pieces into OWIN middleware.</li>      <li>(18:25) Jon asks if he can take an existing ASP.NET application to start taking advantage of middleware without rewriting the application. Louis says that if you add the Microsoft.Owin.Host.SystemWeb NuGet package, you can put an OWIN pipeline on the route table. You can also use an IHttpHandler to plug in middleware. They're looking at third option - an integrated pipeline module which will delegate to the application if an OWIN handler doesn't pick it up.</li>      <li>(22:22) Jon asks Louis has some other ideas for middleware, and Louis lists several (static file handlers, authentication, etc.) and points to Rack and Node as examples. He lists another example - anti-bot&#160; protection that returns an HTTP 200 for a URL pattern. </li>   </ul>    <ul>     <li>(23:50) Jon asks if it's possible to plug things in at runtime. Louis talks about the Startup class - it's a POCO class so you can easily work with it via IoC, plug things in whenever - it's just code. </li>      <li>(25:05) Scott says he looked at implementing URL rewriting in middleware. Louis explains how this works perfectly with the pipeline and describes how you could also use this to monitor 404s. </li>      <li>(26:45) Scott says hosters could implement middleware to set ETAGS, enforce things, etc. </li>      <li>(27:40) Louis explains why it's really powerful to have middleware that's not coupled to a specific implementation like ASP.NET MVC. </li>      <li>(28:35) Jon asks if it's possible that some of this middleware could run on hardware. Louis says it is, and gives an example with a reverse proxy. </li>      <li>(29:57) Scott talks about breaking middleware into application and networking uses and talks of some optimizations that could be done in middleware.</li>   </ul>    <li>Next </li>    <ul>     <li>(31:48) Scott asks where we go from here - are done? What's the next goal? Louis says the current 1.0 version of Katana has IIS hosting; the 1.1 version will add production grade HttpListener and self host story, and after that it's about supporting emerging standards and looking for synergies. Louis says documentation would be nice, but Scott says that the model is so simple that there's not a lot to document.</li>      <li>(34:50) Scott and Louis talk about how this will affect the ecosystem in general, with an example of how smoothly the SignalR implementation worked. </li>      <li>(35:25) Jon asks about the future for hosters like Azure, AppHarbor, etc. Louis talks about an example for&#160; supporting zip file based deployment, Mono hosting. </li>   </ul>    <li>Getting involved </li>    <ul>     <li>(37:05) Louis talks about what's available in the Katana Project, including sample code and pre-release packages. The Google Group - net-http-abstractions - is the best place to discus OWIN. </li>      <li>(38:15) Jon asks if the Katana project takes pull requests. Louis says it's run under the MS Open Tech organization and is clear to take pull requests from developers who have signed a contributor license agreement. Jon asks for areas where they'd like help. Scott says he'd like to see lots of middleware; Louis he'd love to see an OWIN Contrib project emerge. </li>   </ul>    <li>Questions from Twitter      <ul>       <li>(41:05) Sean Massa (@endangeredmassa): Is it possible to use the DLR? </li>        <li>(41:45) Eric Hexter (@ehexter): what do MVC and Web Forms look like on OWIN. Louis says there are two exciting things there - you can have an Owin pipeline running in front of your application, or you can use self hosting to put an application inside of your own process (not supported but fun!). </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Louis DeJardin (<a href="https://twitter.com/loudej">@loudej</a>, <a href="http://whereslou.com/">blog</a>) </li>    <li><a href="http://owin.org/">OWIN - Open Web Interface for .NET</a> </li>    <li><a href="http://katanaproject.codeplex.com/">Katana Project on CodePlex</a> </li>    <li>Google Group: <a href="http://groups.google.com/group/net-http-abstractions">.NET HTTP Abstractions</a></li>    <li>NuGet package: <a href="https://nuget.org/packages/Microsoft.Owin.Host.SystemWeb">Microsoft.Owin.Host.SystemWeb</a></li>    <li>GitHub: <a title="https://github.com/ServiceStack/ServiceStack.Owin" href="https://github.com/ServiceStack/ServiceStack.Owin">ServiceStack.Owin</a></li>    <li>NuGet: <a title="https://nuget.org/packages/Nancy.Hosting.Owin/" href="https://nuget.org/packages/Nancy.Hosting.Owin/">Nancy.Hosting.Owin</a></li>    <li>NuGet: <a title="https://nuget.org/packages/FubuMVC.Katana/" href="https://nuget.org/packages/FubuMVC.Katana/">FubuMVC.Katana</a></li>    <li><a href="https://herdingcode.com/">Herding Code 60: Spark View Engine with Louis DeJardin</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0164-OWIN.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 163: Sticker Tales and Building Windows Store apps with Damien Guard and Robert Sweeney</title>
    <link>https://herdingcode.com/herding-code-163-sticker-tales-and-building-windows-store-apps/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-163-sticker-tales-and-building-windows-store-apps/</guid>
    <pubDate>Wed, 10 Apr 2013 19:53:59 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk to Damien Guard and Robert Sweeney about Sticker Tales (a Windows Store application for kids), some challenges in building touch applica</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 163</strong></p>
<p>This week on Herding Code, the guys talk to Damien Guard and Robert Sweeney about Sticker Tales (a Windows Store application for kids), some challenges in building touch applications for kids, their CSharpAnalytics open source library, and a companion app they built for Western Digital.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0163-Sticker-Tales-and-Building-Windows-Store-apps.mp3">Herding Code 163: Sticker Tales and Building Windows Store apps</a> </p>  <p>Show Notes:</p>  <ul>   <li>Introductions </li>    <ul>     <li>(00:39) Damien describes what he's been up to since we last talked to him. </li>      <li>(01:25) Robert worked on the Windows user interface, then XBox.com, then several apps for NetFlix. </li>      <li>(02:57) Jon asked about the experience of building high scale customer facing applications at XBox and NetFlix. Damian tells about how they ran the XBox store on two servers. </li>   </ul>    <li>Building Sticker Tales</li>    <ul>     <li>(03:38) Jon asks how they decided to build a sticker book app. Robert explains how they got started. </li>      <li>(04:45) Robert describes how they decided to spend some money on professional illustration. </li>      <li>(05:40) Jon describes how Sticker Tales works and how he loves watching what his five year old daughter comes up with, especially how she plays with scale. Robert says he sees the same as his daughter </li>      <li>(6:57) Damien describes some of the surprises they saw in user testing. </li>      <li>(8:30) Scott K asks if their experiences in watching how kids interact with touch gestures will influence their design in general. </li>      <li>(9:18) Damien talks about some of the changes the kids inspired, especially using direction of motion to flip things. Jon says he wants this flip gesture everywhere, and Scott K says he thinks kids should be interaction testing all touch interfaces. </li>      <li>(10:44) Damien gives another example with how pinch / zoom didn't work well for kids, and they added a handle instead. </li>      <li>(11:26) Jon asks about how they were interacting with the illustrators. Robert describes the interaction and how they handled different image sizes, exporting, etc. </li>   </ul>    <li>In-app purchases</li>    <ul>     <li>(13:37) Jon asks about the &quot;free app + in app purchase&quot; model. Robert explains why they chose that model.</li>      <li>(14:48) Jon asks if the in-app purchases were difficult to set up. Damien says yes and explains how it was set up. Robert says the purchasing is easy, but the delivery is up to you as the developer. </li>   </ul>    <li>Google Analytics and the CSharpAnalytics library</li>    <ul>     <li>(17:00) K Scott asks about what kind of analytics they were using. Damien explains how they used Google Analytics and explains they published that library as CSharpAnalytics on GitHub. Damien likes tracking usage patterns, Robert says he loves the real-time and geographic views. </li>      <li>(18:19) Robert says they track initiated vs. completed purchases, and they see it's only about 10%. Jon speculates that's because kids start the purchase and the parents veto it. </li>      <li>(19:08) K Scott asks if it's only available for Windows 8. Damien says that's all that's documented, but he's set it up to work with Windows Phone as well. </li>      <li>(19:30) Jon asks about how auto-analytics work. </li>   </ul>    <li>Platform targeting - iPad future, Windows 8 implementation</li>    <ul>     <li>(20:40) Kevin asks if they're looking at porting this to iPad. Robert says they're looking at using Xamarin for that. </li>      <li>(21:24) Jon asks about what Windows 8 integration points they're using. Robert discusses live tiles, sharing, search, and background download API support. </li>      <li>(22:58) Jon asks if they used C# / XAML or HTML. Damien says they went with C# / XAML partly because the touch API support seemed better early on. </li>   </ul>    <li>SharpDX and performance</li>    <ul>     <li>(23:30) Damien explains that they're using SharpDX to be able to take screenshots for live tiles, sharing, etc. Jon gets confused and thinks they're using SharpDX everywhere, but Robert explains it's only for saving screenshots - everything else is using image controls. </li>      <li>(26:54) Jon asks if they ran into any performance issues. Robert explains some of the guidelines they'd learned at NetFlix and says that everything's worked really well in StickerTales. Damien says they've seen great performance on Surface / ARM as well. Jon says he's seen Audacity recompiled for ARM and it worked great on Surface, too. </li>   </ul>    <li>Data storage and MVVM perspective</li>    <ul>     <li>(28:34) Jon asks what they're using for data storage; Damien says using XML.</li>      <li>(28:46) Robert says they're not using MVVM because it just doesn't work with the Microsoft tools and isn't worth it for the kinds of thin clients they've been building, even at NetFlix.</li>   </ul>    <li>Western Digital companion application</li>    <ul>     <li>(30:07) Jon asks how about their next project, a companion application for Western Digital. Damien describes how Western Digital wanted an application that would present an all-up aggregate view of media on external media.</li>      <li>(30:42) Damien says they using SQLite for that project and explains the challenges they ran into with hierarchical data storage in a relational database engine.</li>   </ul>    <li>Unit Testing Windows Store application code</li>    <ul>     <li>(32:52) Kevin asks about the testing story. Damien says they used MSTest and it all worked fine, with the exception of determining code coverage. Jon asks some questions about testing frameworks and test focus for Windows Store applications.</li>      <li>(35:20) Robert says the WinRT platform wasn't written in a very testable manner - there are lots of static classes and a generally test resistant API.</li>   </ul>    <li>Business Challenges and Opportunity for Windows Store Developers</li>    <ul>     <li>(36:38) Jon asks about the challenges of building and running a company that's building Windows 8 applications. Robert describes some of the perception and education issues they face in selling the potential to customers.</li>      <li>(38:20) Scott K compares the current Windows Store opportunity to the pre-iOS Mac development market - a nice place to create a niche product and make a good living. Damien says it is nice to be featured in the store, and that's difficult on other platforms. Robert says that ease of developing Windows Store applications means that you still need to market your applications.</li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>Damien Guard (<a href="https://twitter.com/damienguard">@damienguard</a>, <a href="http://damieng.com/">blog</a>)</li>    <li>Robert Sweeney (<a href="http://www.linkedin.com/in/rsweeney21">LinkedIn</a>)</li>    <li><a href="http://stickertales.com/">Sticker Tales</a></li>    <li><a title="http://attackpattern.com/" href="http://attackpattern.com/">Attack Pattern</a></li>    <li><a href="https://github.com/AttackPattern/CSharpAnalytics">CSharpAnalytics</a></li>    <li><a href="http://sharpdx.org/">SharpDX</a> </li>    <li><a href="http://attackpattern.com/portfolio/wd-companion-app/">WD Companion App</a> </li>    <li><a href="https://herdingcode.com/">Herding Code 50: Damien Guard on LINQ to SQL, Entity Framework, and Fontography</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0163-Sticker-Tales-and-Building-Windows-Store-apps.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 162: Whacha doin, Goodbye Google Reader, scriptcs and Lightning Round!</title>
    <link>https://herdingcode.com/herding-code-162-whacha-doin-goodbye-google-reader-scriptcs-and-lightning-round/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-162-whacha-doin-goodbye-google-reader-scriptcs-and-lightning-round/</guid>
    <pubDate>Mon, 25 Mar 2013 18:01:55 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk about what they&apos;ve been up to lately (including Kevin&apos;s new Greater Than Parts site), lament the passing of Google Reader, talk about sc</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 162</strong></p>
<p>This week on Herding Code, the guys talk about what they've been up to lately (including Kevin's new Greater Than Parts site), lament the passing of Google Reader, talk about scriptcs, and even fit in a lightning round!</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0162-Discussion.mp3">Herding Code 162: Whacha doin, Goodbye Google Reader, scriptcs and Lightning Round!</a> </p>  <p>Show Notes:</p>  <ul>   <li>What are you up to?      <ul>       <li>(00:29) Scott K is doing MVC with a lot of JavaScript.          <ul>           <li>He laments the quality of the code he's working with. </li>            <li>There's a discussion of how bad code happens and how to clean it up. </li>         </ul>       </li>        <li>(07:58) Kevin's been working on his GreaterThanParts site.          <ul>           <li>He soft launched it on twitter and got more response than he expected, but it's been holding up. </li>            <li>It's a full JavaScript stack - Node, Backbone, Mongo. </li>            <li>Kevin was surprised how resistant developers were to trying out the site via Google / Facebook login, so he set up an anonymous (cookie based) login. </li>            <li>Scott K has some specific feature requests. </li>            <li>Jon asks if the design feedback was coherent or contradictory. Kevin says some was really good, a lot wasn't </li>         </ul>       </li>        <li>(15:40) Jon talks about the ASP.NET Jump Start event he did in February and some upcoming Web Camp he's doing - Denmark, Istanbul, Sunnyvale, San Diego. In his spare time he's working on a book about programming Windows 8.          <ul>           <li>Scott K mentions a blog post he read about a developer who was frustrated he couldn't store password protected zip files or preview office docs. Jon says it's an app model and it's different than building desktop apps. Kevin wonders about how the updates will work for Windows Store apps. </li>            <li>Scott K says he read about limitations in displaying help files. Jon says that some things are easier to do using the HTML dev model, and he's seeing some people writing business logic in C# and using it in an HTML app. </li>            <li>K Scott talks about the current campaign to pay developers for apps. Jon says he thinks that may be driven by the fact that all the tech columnists just write about the number of apps in the store, but he agrees that fewer quality apps is better. The Windows Store has a try / buy model, which effectively halves the number of apps required compared to Android and iOS. Jon talks about how he's been using the Surface RT. </li>         </ul>       </li>        <li>(25:49) Google Reader          <ul>           <li>K Scott asks if anyone's upset. Kevin is. </li>            <li>Scott K hasn't used it in a while because he just uses Twitter and an RSS reader he likes. </li>            <li>Jon says he used to read tons of feed, but he now gets most of his info off Twitter, Hacker News, and TheCadmus.com </li>            <li>Scott K says he's going to need to replace Reader because he follows some feeds he cares about that will never make their way onto Hacker News. </li>            <li>Jon says he used to use Reader more when it had Google Gears support. He talks about how he tried to write his own RSS reader which never materialized, but he learned a lot along the way. </li>            <li>Kevin says the bigger problem is that so many apps use Google Reader as an RSS sync backend. </li>            <li>Jon says he's happy that the whole RSS system isn't dependent on Google Reader, and that it's a good thing that major parts of the web stayed open. </li>         </ul>       </li>        <li>(34:45) scriptcs          <ul>           <li>K Scott overviews the idea. </li>            <li>Scott K says he thinks it's interesting - a natural use of Roslyn. He's been wanting something that would output assemblies so it could create projects. </li>            <li>Jon talks about some of the samples they've got, including WPF, Mono, etc. He says he'd prefer it to PowerShell since it could be more portable and the syntax is better. </li>            <li>Kevin says many of these ideas came from the Node community. He's really enjoying the low overhead of working in vim. Scott agrees. Jon says he doesn't see Visual Studio delays, maybe because he's not using heavy add-ins. A border skirmish erupts. Kevin says that he thinks that .NET programming kind of requires Visual Studio. Jon like the new web tools stuff. </li>         </ul>       </li>        <li>(44:27) Lightning Round!          <ul>           <li>K Scott asks if anyone cares about the S4 release. Nobody does. We're all kind of tired of smartphone releases. </li>            <li>K Scott asks what we'd recommend for teaching someone to program. Scott K, Kevin, and Jon all agree that they'd start with the web and JavaScript and talk about some of their favorite tools. </li>            <li>K Scott asks what everyone thinks about the new Rearden.js library with the Rearden Metal templating system. </li>         </ul>       </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://www.greaterthanparts.com/">Greater Than Parts</a> - Kevin's new &quot;simple shopping for complex projects&quot; site</li>    <li><a href="http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start">ASP.NET Jump Start</a> </li>    <li><a href="http://weblogs.asp.net/jgalloway/archive/2013/03/15/announcing-web-camps-spring-tour-2013.aspx">Web Camps tour</a> - Jon's post announcing the Spring 2013 tour<!--EndFragment--></li>    <li><a title="http://blog.kulman.sk/why-are-there-no-great-windows-8-apps-because-of-winrt-a-developers-view/" href="http://blog.kulman.sk/why-are-there-no-great-windows-8-apps-because-of-winrt-a-developers-view/">Blog post: Why are there no great Windows 8 apps? Because of WinRT. A developer's view</a> </li>    <li><a title="http://en.wikipedia.org/wiki/Gears_(software)" href="http://en.wikipedia.org/wiki/Gears_(software)">Google Gears</a> </li>    <li><a title="http://treesurgeon.codeplex.com/" href="http://treesurgeon.codeplex.com/">Tree Surgeon</a> </li>    <li><a href="http://googlereader.blogspot.com/2013/03/powering-down-google-reader.html">Powering Down Google Reader</a> </li>    <li><a href="http://thecadmus.com/">TheCadmus</a> </li>    <li><a href="http://codebetter.com/glennblock/2013/02/28/scriptcs-living-on-the-edge-in-c-without-a-project-on-the-wings-of-roslyn-and-nuget/">scriptcs - Living on the edge in C# without a project on the wings of Roslyn and Nuget</a> </li>    <li><a title="http://scriptcs.net/" href="http://scriptcs.net/">http://scriptcs.net/</a> </li>    <li><a href="http://livereload.com/">LiveReload</a> </li>    <li><a title="http://www.codecademy.com/#!/exercises/0" href="http://www.codecademy.com/">Codecademy</a> </li>    <li><a href="http://jsbin.com">JS Bin</a> </li>    <li><a href="http://repl.it">repl.it</a> </li>    <li><a href="https://github.com/reardenjs/reardenjs">ReardenJS</a> </li>    <li><a href="https://github.com/madrobby/vapor.js">Vapor.js</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0162-Discussion.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 161: Single Page Applications with John Papa and Ward Bell</title>
    <link>https://herdingcode.com/herding-code-161-single-page-applications-with-john-papa-and-ward-bell/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-161-single-page-applications-with-john-papa-and-ward-bell/</guid>
    <pubDate>Thu, 14 Mar 2013 22:56:10 GMT</pubDate>
    <description><![CDATA[<p>While at MVP Summit, Jon and the Scotts talk to John Papa and Ward Bell about Single Page Applications, the new ASP.NET and Web Tools 2012.2 SPA templates, and John and Ward&apos;s n</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 161</strong></p>
<p>While at MVP Summit, Jon and the Scotts talk to John Papa and Ward Bell about Single Page Applications, the new ASP.NET and Web Tools 2012.2 SPA templates, and John and Ward's new Hot Towel SPA template (you need a hot towel at a spa, get it?).</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0161-Single-Page-Applications.mp3">Herding Code 161: Single Page Applications with John Papa and Ward Bell</a> </p>  <p>Show Notes:</p>  <ul>   <li><strong>Intro</strong>       <ul>       <li>(01:10) K Scott asks John Papa about to overview what's just been released. </li>        <li>(01:24) Jon explains how he remembers the ASP.NET and Web Tools 2012 release, comparing it to a video game &quot;map pack&quot;. </li>        <li>(02:04) John says that one of the new features in this release is that you can create new File / New / Project templates for ASP.NET MVC using VSIX. </li>        <li>(03:18) Scott K says you can find all the new goodies at <a href="http://asp.net/vnext">http://asp.net/vnext</a>. </li>     </ul>   </li>    <li><strong>Hot Towel overview</strong>       <ul>       <li>(03:37) K Scott asks what happens when you create a new Hot Towel project. </li>        <li>(04:30) K Scott asks what's included:          <ul>           <li>Durandal </li>            <li>Knockout </li>            <li>Breeze </li>            <li>Some other nice things: jQuery, Bootstrap, Moment </li>            <li>The useful parts of the ASP.NET stack </li>         </ul>       </li>     </ul>   </li>    <li><strong>Durandal and getting the various libraries to play well together</strong>       <ul>       <li>(06:00) Jon asks if everything in the Hot Towel parts fit together well, and if it was hard to get them to play well together. </li>        <li>(07:14) Durandal uses Require.js for AMD for script dependency resolution. Hot Towel is still using ASP.NET Bundling and Minification system, although when you deploy you can use Durandal's compilation system. </li>        <li>(09:03) Ward talks about what he likes about Durandal.          <ul>           <li>You can bring any thing you know from Caliburn.Micro in, including convention based view composition. </li>            <li>It includes a lot of useful debugging and tracing information in the console. That includes intercepting problems with Sammy.js (which would otherwise just report &quot;Error&quot; without any context), binding failures, etc. </li>         </ul>       </li>        <li>(10:24) Hot Towel also includes Toaster, which is really useful for debugging. </li>        <li>(11:15) Hot Towel has really been carefully assembled and and configured so it all really works well together. </li>        <li>(12:06) John says Hot Towel solves a common problem people experience when getting started with SPA development - it's hard to figure out which libraries to use and how to hook them together. </li>     </ul>   </li>    <li><strong>What's the sweet spot? Line of business apps? Websites?</strong>       <ul>       <li>(13:20) K Scott asks if the sweet spot for Hot Towel is for for line of business applications. John says that's what it's been used for. It's great for data intensive applications, but he says it's not a good fit if you're just building a website. </li>        <li>(13:53) Jon asks about the SEO story. John says there really isn't a great solution for it, but says that for most SPA stories - e.g. line of business CRUD apps - you probably don't need or want search engines to be able to read it. For some cases, like a store scenario, you might want a hybrid solution. The store would be a standard website that's SEO friendly, but when you shift to buying something you enter a SPA experience. </li>     </ul>   </li>    <li><strong>Organize all the scripts!</strong>       <ul>       <li>(15:45) K Scott asks how John organizes code for a SPA. John says he likes to put all the application specific scripts into a separate /scripts/app folder. Jon says he noticed that in the RTM version of the SPA template, and Ward and John confess to having been the driving forces behind that change. </li>        <li>(17:37) John talks about the two crowds who are using these scripts - there are people who have been using JavaScript for a while, and developers who are used to C# and are starting to do more JavaScript development. Simple things like pascal casing vs. camel casing make a big difference in how experienced JavaScript developers perceive and enjoy the shipped JavaScript code. </li>     </ul>   </li>    <li><strong>Bringing grownup architecture into client side coding</strong>       <ul>       <li>(18:19) Ward talks about other problems in earlier versions, like lumping the viewmodel and data access, etc. He says he understands the effort to make things easy for beginners to figure out, and Scott talks about some of the sloppy, oversimplified JavaScript in some other Microsoft releases. John says that the new script organization in the release turned out both better and easier to understand. </li>        <li>(20:48) Scott talks about his thoughts on client-side MVC: HTML is the model, CSS is the view, JavaScript is the controller. </li>        <li>(22:04) John says we've been figuring out of the past few years that it's not okay to just throw JavaScript code up there until it works. He says he often surveys developers and asks how many of them have read a book on JavaScript with dismaying results. Scott says it's not just a problem with disorganized code, you end up with resource management issues. Scott, John and Ward commiserate on the problems they've seen with sloppy code in long running JavaScript applications. </li>        <li>(24:31) Ward talks about the importance of good coding principles, especially the single responsibility principle. John says SRP is incredibly useful just about everywhere. Scott says he sees the same thing with testable JavaScript code. </li>     </ul>   </li>    <li><strong>Hello World and Hello World scenarios</strong>       <ul>       <li>(26:37) K Scott asks if there's a hello world style application when you create a new Hot Towel application. John says there is, but it's absolutely minimal so that it's actually useable as a starting point for an application. There's no database. Ward says Hot Towel has two simple pages with just enough code to get you started; use the other SPA templates to learn about the frameworks, then build your real app with Hot Towel - if you're going with a Knockout-based UI. </li>        <li>(28:37) Scott K says he sees Knockout and Angular cluttering your HTML in ways that violate some of the principles discussed earlier. Ward that you can do both without declarative HTML binding if you want. There's a discussion of convention based bindings; K Scott asks if the Caliburn.Micro convention based bindings are used in Hot Towel, Ward explains why it's not done. </li>        <li>(31:40) John talks about some poor practices he sees in Knockout demos which just throw in some JavaScript code after the bindings rather than just using a click binding or using delegation. </li>        <li>(33:32) Scott asks if we'd have imagined 10 years ago that we'd be writing JavaScript code. </li>        <li>(33:54) Ward says the thing that blows his mind is that we're talking about a ToDo list like it's rocket science. There's a description of the canonical sample scenarios. Jon proposes the Contoso SPA, Scott talks about how everyone was writing blog samples a few years ago. </li>        <li>(35:43) John explains that he wrote Hot Towel so that you could use it without having to rip out a bunch of demo code; Ward says it also completes the stack, providing IoC, screen management, etc. The price tag of restructuring around composed JavaScript libraries is a lot of small files, figuring out AMD, etc. John and Ward praise Durandal some more. </li>        <li>(38:52) Scott K says there's still a tooling problem with lots of injected JavaScript files. Ward and John say they don't see that as long as they keep things organized. </li>     </ul>   </li>    <li><strong>Getting started with SPA development</strong>       <ul>       <li>(40:27) K Scott asks for two things developers should do before getting started with SPAs. John says the first thing is to remember that you can apply your current good coding practices, the second is that you should treat the code as a real language and take advantage of patterns, especially the module pattern. Ward says use your intuition - if something smells bad, stop doing it and ask for help. </li>        <li>(43:03) John says don't worry too much about which framework is the best, just pick one that feels natural. There's a discussion of how the different frameworks have different feels, and you can just pick one and get started. </li>     </ul>   </li>    <li><strong>Did Silverlight development experience help?</strong>       <ul>       <li>(45:15) Jon says he first encountered a lot of these issues in Silverlight development. John says yes, and explains how his skills applied. Ward says he can't comment on how it'd have been for him if he hadn't used Silverlight, but that if you do have Silverlight experiences they'll definitely apply. John talks about his experiences with Code Camper. </li>     </ul>   </li>    <li><strong>Can mere mortals create VSIX MVC templates?</strong>       <ul>       <li>(50:18) K Scott asks how difficult it was to create a VSIX based MVC template and if listeners could start with it. John says he waited for Ward to figure it and he copied Ward's work, which wasn't too bad. Ward explains what was difficult - mostly it comes down to poor documentation and duplicate references to files. He says he also hit issues with pulling in NuGet packages from multiple sources. Hot Towel is available as a NuGet package as well. </li>     </ul>   </li>    <li>Randomness      <ul>       <li>(58:11) The customary discussion of Ward's wardrobe occurs. </li>        <li>(1:00:00) John talks about his upcoming PluralSight courses. Ward says he's excited that BreezeJS was selected as part of the SPA story for ASP.NET and that he and IdeaBlade are focused on helping people as they're getting started with Single Page Application development.&#160; </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Ward Bell (<a href="http://www.neverindoubtnet.blogspot.com/">blog</a>, <a href="https://twitter.com/wardbell">@wardbell</a>, <a href="http://twitter.com/wardbellsoutfit">@wardbellsoutfit</a>) </li>    <li>John Papa (<a href="http://johnpapa.net/">blog</a>, <a href="http://twitter.com/john_papa">@john_papa</a>) </li>    <li><a title="http://www.asp.net/single-page-application/overview/templates/hottowel-template" href="http://www.asp.net/single-page-application/overview/templates/hottowel-template">Hot Towel template</a> documentation on the ASP.NET site </li>    <li><a href="http://jpapa.me/spajsps">John Papa's new Single Page Apps JumpStart course</a> on Pluralsight </li>    <li><a href="http://www.breezejs.com/">Breeze</a> - Build rich web apps in JavaScript with techniques you know </li>    <li><a href="https://herdingcode.com/">Herding Code 111 - John Papa on the Open Source Fest at MIX11</a> </li>    <li><a href="https://herdingcode.com/">Herding Code 155 - Ward Bell on Single Page Applications and Breeze</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0161-Single-Page-Applications.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 160: Glimpse 1.0 release and Semantic Release Notes with Nik Molnar and Anthony vander Hoorn</title>
    <link>https://herdingcode.com/herding-code-160-glimpse-1-0-release-and-semantic-release-notes-with-nik-molnar-and-anthony-vander-hoorn/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-160-glimpse-1-0-release-and-semantic-release-notes-with-nik-molnar-and-anthony-vander-hoorn/</guid>
    <pubDate>Fri, 08 Mar 2013 21:34:39 GMT</pubDate>
    <description><![CDATA[<p>While at MVP Summit, Jon and the Scotts talk to Nik and Anthony about the Glimpse 1.0 release, Semantic Release Notes and NuGet versioning. Herding Code 160:</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 160</strong></p>
<p>While at MVP Summit, Jon and the Scotts talk to Nik and Anthony about the Glimpse 1.0 release, Semantic Release Notes and NuGet versioning.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0160-Glimpse.mp3">Herding Code 160: Glimpse 1.0 release and Semantic Release Notes with Nik Molnar and Anthony vander Hoorn</a> </p>  <p>Show Notes:</p>  <ul>   <li><strong>Intro</strong></li>    <ul>     <li>(00:38) Nik and Anthony remind us of what Glimpse does. </li>   </ul>    <li><strong>High level: What have they been up to? </strong>      <ul>       <li>(01:27) Nik explains how they're now sponsored by RedGate software, but it Glimpse continues to be an open source project under Apache 2 license. The end result is that they're both able to work 40 hours a week on it. </li>        <li>Anthony talks about the change to remove the dependency on System.Web.dll, allowing for compatibility with ASP.NET Web API and OWIN. </li>     </ul>   </li>    <li><strong>New features in Glimpse 1.0 </strong>      <ul>       <li>(03:24) Jon asks about new features. Nik says they're mostly at feature parity with the previous release, with a lot of key refactoring. Some new features include:          <ul>           <li>Support for SignalR </li>            <li>Routes are available in Web Forms </li>            <li>They can determine and surface route constraints </li>         </ul>       </li>        <li>They're working on MVC 4 support, System.Web.Optimizations, and Web API. </li>        <li>Anthony says the big goal of refactoring is to allow for fortnightly releases, which meant they needed to rework the core into something they could build on quickly. </li>        <li>(05:42) Jon asks about MVC 4 support. Nik says that everything in the MVC 3 package works, with the exception of Task based async support and newly added features like System.Web.Optimizations and Web API. Synchronous controllers and AsyncControllers work. </li>     </ul>   </li>    <li><strong>Notifications, Semantic Release Notes </strong>      <ul>       <li>(06:25) Anthony talks about support they've added to work better with more frequent updates, including update notifications. </li>        <li>That got them thinking - can they also show more information about what's in the update? What about plugin updates? </li>        <li>Nik talks about what they're doing to pull information from NuGet about installed packages. </li>        <li>(11:08) Nik explains how the extensibility model uses an attribute which indicates that the plugin came from a NuGet package and indicates which version of the package it came from. </li>        <li>(12:12) They want to give you information about what's changed between releases, which led them to Semantic Release Notes. </li>        <li>Semantic Release Notes are written in Markdown format, but include typed information (inspired by Todo.txt) which allows them to determine what's changed between any two releases. </li>        <li>(15:45) Jon and Scott K ask about why they picked Markdown as opposed to some other formats. Nik explains a lot of reasons, including compatibility with any text based release notes system. </li>        <li>(17:20) This allows them to present &quot;The Sports Center of Release Notes&quot; which showcases the relevant highlights. </li>        <li>(17:40) Anthony says NuGet release notes are virtually unused because they don't offer any value. They've been talking to developers who say they'd be happy to include release notes if they were actually useful. </li>        <li>(19:33) Nik says that another benefit of a text-based format is that it could be extracted from commit messages. </li>        <li>(20:20) Nik says that NuGet has raised the water level the experience of installing release notes, understanding what an update does, configuration, overall experience. </li>        <li>(21:28) Nik says that Semantic Release Notes could also inform developers of Semantic Versioning problems - e.g. if you've got a breaking change, you should be bumping the major version number. </li>     </ul>   </li>    <li><strong>Problems with NuGet packages targeting product versions </strong>      <ul>       <li>(22:15) Anthony says they've run into some issues they've run into with NuGet. One issue they've run into is that developers often unwittingly install the Glimpse core package rather than the Glimpse.MVC package, which pulls in the core. They're thinking about instead they could look at packages already installed in the project, determine that it's an MVC project (for instance), and recommend installing the correct package (Glimpse.MVC in this case). </li>        <li>(26:00) There's a discussion about problems to be considered with dependency scanning, notifying users, etc. </li>        <li>(27:55) Scott K asks about how this would work with locally hosted NuGet servers, MyGet, etc. Nik says they've seen a lot of cases of custom Glimpse plugins for things like e-commerce and internal information. </li>        <li>(28:55) There's a MyGet feed with the nightly release, as well as a community feed for plugins. </li>        <li>(29:38) Scott K asks about how it works with local packages specifically. </li>        <li>(30:10) Nik talks about the problem with package explosion. NuGet allows you to target a specific .NET framework version, but not product versions. Jon asks why not just install Glimpse.MVC2, Glimpse.MVC3, etc. Anthony says this is a problem for any project that tries to factor things into a core with version specific dependant packages. </li>        <li>(34:28) Jon says they're working hard to solve this problem, but would like to not have to. Anthony agrees: this is something he'd like see handled by NuGet itself. </li>        <li>(25:28) Nik says this is a growing problem, with examples from Windows 8 development. Jon talks about how he sees this problem in MVC 4. Anthony says he sees things moving in a good direction and that these are growing pains. </li>        <li>(37:25) Scott K asks if this is a problem that they're seeing just because they have an ecosystem. </li>        <li>(38:40) Jon says he sees some people using VSIX instead of NuGet in cases where NuGet is limited. Nik says he's frustrated that you can't package up tooling - you can create a custom Web Platform Installer package at the high level, you can create a package.config at the project level, but there's no solution for the installed tooling. </li>     </ul>   </li>    <li><strong>Miscellaneous jibber jabber and future possible features </strong>      <ul>       <li>(40:55) Anthony talks about the problems they've run into with XML documents and Sandcastle. </li>        <li>(42:48) Jon asks about possible future features. Scott K he'd like to see a plugin for Fiddler. Anthony talks about how they're in a unique position with insight into the entire request pipeline, from browser through server and back to the browser. </li>        <li>(45:30) Scott K talks about how OWIN support allows access to a lot of other web stacks, too. </li>        <li>(45:55) Nik says that they include the Glimpse request ID as a header now, so you can trace the request in Fiddler or other network tools. </li>        <li>(47:00) Anthony says they're realizing that they can do a lot more than just surface troubleshooting information for people who are learning, talking about the potential for an extensible mini-dashboard which can show really intelligent information - e.g. inform me if a request makes more than three database calls. </li>        <li>(50:14) Jon asks if there are any plugins which analyze security. There's a discussion about automated OWASP analysis. </li>        <li>(52:10) Anthony says they're talking to Brendan Forster about displaying decision trees visually. </li>        <li>(54:54) Jon asks what they're looking at doing long term. Nik says they're looking at doing some monthly conversations for developers. </li>        <li>(56:14) Jon asks how people can get involved. Answer: go to GetGlimpse.com. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://getglimpse.com/">GetGlimpse.com</a> </li>    <li><a href="http://www.semanticreleasenotes.org/">Semantic Release Notes</a> proposal</li>    <li><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0124-Anthony-van-der-Hoorn-and-Nik-Molnar-on-Glimpse.mp3">Herding Code 124: Anthony van der Hoorn and Nik Molnar on Glimpse</a> </li>    <li><a href="http://www.blog.anthonyvanderhoorn.com/">Anthony van der Hoorn</a> (<a href="http://twitter.com/anthony_vdh">@anthony_vdh</a>) </li>    <li>Nik Molnar (<a href="http://twitter.com/#!/nikmd23">@nikmd23</a>) </li>    <li><a href="http://shfb.codeplex.com/">Sandcastle Help File Builder</a> </li>    <li><a href="http://owin.org/">OWIN: Open Web Interface for .NET</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0160-Glimpse.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 159: Catching up with Oren Eini on RavenDB</title>
    <link>https://herdingcode.com/herding-code-159-catching-up-with-oren-eini-on-ravendb/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-159-catching-up-with-oren-eini-on-ravendb/</guid>
    <pubDate>Tue, 05 Mar 2013 08:45:56 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk with Oren Eini (a.k.a. Ayende Rahien) about what&apos;s new with RavenDB. Herding Code 159: Catching up with Oren Eini on</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 159</strong></p>
<p>This week on Herding Code, the guys talk with Oren Eini (a.k.a. Ayende Rahien) about what's new with RavenDB.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0159-RavenDB.mp3">Herding Code 159: Catching up with Oren Eini on RavenDB</a> </p>  <p>Show Notes:</p>  <ul>   <li>(00:47) Introduction and review of document databases and RavenDB      <ul>       <li>Oren gives us a quick overview of document databases and RavenDB </li>        <li>Relational databases work for the kind of applications we were building in the early '90's. We can kind of make them work in our current applications but it takes too much work. </li>        <li>RavenDB is a document database which stores JSON documents. </li>        <li>JSON documents can store arbitrarily complex data very easily. </li>     </ul>   </li>    <li>(04:35) Comparing accuracy and data consistency between document databases and relational databases      <ul>       <li>Jon asks about Oren's comments on a recent .NET Rocks podcast in which he said that document databases allow us to be more correct than relational databases. </li>        <li>Oren gives a real life example of how an update to a customer's financial information caused a change to her historical record, which caused some real problems. </li>        <li>Jon talks about some of the hoops we jump through in an attempt to maintain historical data in a relational database, e.g. soft deletes. </li>     </ul>   </li>    <li>(08:42) Disk space concerns      <ul>       <li>Scott K says he hears DBA's worry about disk space due to data repetition between documents and asks what other concerns people bring up. </li>        <li>Oren says there can be more computation and indexing, but on the other hand temporal data is orders of magnitude easier. </li>        <li>Data design principles were established back when space was expensive, that's all changed now. </li>        <li>Oren says he hears people say that space isn't cheap in the enterprise, but runs some numbers and concludes they're either very inefficient or someone's got their hand in the till. Scott K says that enterprises data storage is often expensive because they're not tiering their data correctly to put low priority data on cheaper storage. </li>        <li>Oren says enterprises drive up storage costs by due to foolish backup strategies. </li>     </ul>   </li>    <li>(14:42) Query and performance benefits      <ul>       <li>Scott K says that people often view document databases as a giant blob of text rather than structured data which can be searched, indexed, etc. </li>        <li>Oren says that you get full text search for free in RavenDB. </li>     </ul>      <ul>       <li>In relational databases, you're always working with the very latest data, so you have locks, readers waiting for writers, etc. </li>        <li>RavenDB does a lot of precomputation in the background, so it can give you aggregate information immediately. </li>     </ul>   </li>    <li>(17:27) RavenDB 2.0 release overview      <ul>       <li>Big improvements to performance on some key codepaths, in some cases over 1000%. </li>        <li>Support for JavaScript scripts on the server, which allows for scenarios like mass migrations and batching support on the server. </li>        <li>Management UI improvement, better management API coverage, performance counters, etc. </li>        <li>Dev improvements - sharding support, full support for async. </li>     </ul>   </li>    <li>(19:40) 2.01 release overview      <ul>       <li>Files some rough spots in the 2.0 release - things that beta testers didn't mind, but can be a little smoother. </li>        <li>They added a new feature - improves support for replicating to a relational database. </li>     </ul>   </li>    <li>(22:05) Sharding improvements and migrations      <ul>       <li>Sharding's been around since the beginning, but required you to specify a lot of things - lots of options, too much complexity, too many important decisions early in the development process. </li>        <li>Sharding support has been revamped - provide the endpoints, defaults take care of the rest. </li>        <li>Oren gives an example with sharding customer data. By default, documents are sharded together based on transaction id. You can specify a shard when you save based on a user specified id. </li>        <li>Some people have problems with the default approach because the document id includes the shard id. That's necessary to prevent having to query all shards. </li>        <li>Jon asks how this works over time if you need to add shards, migrate data, etc. Oren says you can rebalance by biasing new data towards a newly added shard. </li>        <li>If you need to move data to a new server - for instance, a customer becomes large enough that you want to put all of their documents on a new shard, you've got two options for handling the id's. Oren says some users migrate data, rewriting id's during the process, but he doesn't recommend that. Instead, he recommends using a sharding function which allows remapping document id's to a new shard without changing id's. </li>        <li>Jon obviously doesn't get it and asks the same question again, also asking how you handle data modifications over time. Oren explains that you can just write a JavaScript function to update your existing documents if needed. </li>        <li>Kevin asks how long data a data migration takes. Oren types one up on the fly and explains the parsing and execution time. </li>     </ul>   </li>    <li>(34:43) Time for some random questions!      <ul>       <li>Scott K notes that there's a client that runs on Mono and asks if there are plans to get the server running on Mono. Oren talks about the general plan to handle that, but says it's not high on the priority list. </li>        <li>(35:48) Scott K asks about compact scenarios, including clients that run on mobile and embedded instances that run locally. Oren notes that&#160; clients are easy, because anything that can make a REST call can be a client. They had an embedded version that had very little interest. </li>        <li>(38:03) In disconnect scenarios, it's usually simpler to cache JSON documents locally. </li>        <li>(39:10) Jon asks about merge support for occasionally connected scenarios. Oren says that's intentionally not included. </li>        <li>(41:25) Jeremy Miller (@jeremydmiller) asks when Oren is going to fix Lucene.net's flow control via exception madness. Oren says it's not planned, and that Jeremy should ignore those exceptions. </li>        <li>(42:25) Philip (@autosnak) asks why RavenDB doesn't do more for startups and small biz pricing-wise. Oren explains the offers they make available - open source is free, RavenDB basic edition is $5 / month, they donate a lot of license for a lot of other cases, and even the full versions are incredibly cheap compared with any other database. Shoot him an e-mail. </li>        <li>(44:44) Chris Whellams (@chriswillems) asks how to sell NoSQL and RavenDB to IT management and bosses that are addicted to SQL Sever. Oren outlines a strategy - start with a persistent viewmodel cache on a slow page to get a quick win, then use it for simple storage of ancillary application data (e.g. preferences), then use it in a spike on a new project. This is exactly what the MSNBC team did - they started with a non-operating RavenDB node in production, then slowly moved some things in without taking on any unnecessary risk. </li>        <li>(42:50) Jon asks for any closing thoughts. Oren says they're starting on some weekly webinars for RavenDB users - or just if you're curious about it. There's a RavenDB course in the US in May. </li>        <li>FIN! </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="https://herdingcode.com/">Herding Code 83: Ayende Rahien on RavenDB</a> </li>    <li><a href="http://ayende.com/blog/">Ayende's Blog</a> </li>    <li><a href="http://ravendb.net/">RavenDB</a>&#160; </li>    <li>.NET Rocks 819 - <a href="http://www.dotnetrocks.com/default.aspx?showNum=819">Oren Eini Does NoSQL First</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0159-RavenDB.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 158: Nat Friedman and Joseph Hill announce Xamarin 2.0</title>
    <link>https://herdingcode.com/herding-code-158-nat-friedman-and-joseph-hill-announce-xamarin-2-0/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-158-nat-friedman-and-joseph-hill-announce-xamarin-2-0/</guid>
    <pubDate>Tue, 26 Feb 2013 22:18:32 GMT</pubDate>
    <description><![CDATA[<p>Nat Friedman and Joseph Hill from Xamarin join us for several big announcements: Xamarin Studio, Xamarin Component Store, iOS development in Visual Studio, and a new free Starte</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 158</strong></p>
<p>Nat Friedman and Joseph Hill from Xamarin join us for several big announcements: Xamarin Studio, Xamarin Component Store, iOS development in Visual Studio, and a new free Starter edition.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0158-Xamarin-2.mp3">Herding Code 158: Nat Friedman and Joseph Hill announce Xamarin 2.0</a> </p>  <p>Show Notes:</p>  <ul>   <li>(00:45) Nat begins by catching us up on Xamarin's first eighteen months.      <ul>       <li>Xamarin's focus is on helping developers build mobile apps across multiple platforms. </li>        <li>They have 230,000 developers in their community, adding 700-800 per day, with over 12,000 paying customers. </li>        <li>They've had top iPad (Bastion), music apps (Rdio) and some large mission critical line of business apps. </li>        <li>What's special about their platform is that you can target iOS, Android, and Windows Phone, share C# code across&#160; all those platforms, and still deliver a native experience. </li>        <li>Nat say's they're the overnight success that took ten years to prepare, referencing the ten years they took to build Mono. </li>     </ul>   </li>    <li>(03:20) Xamarin's value proposition and customer base      <ul>       <li>Kevin asks which of their value propositions (.NET based development, cross-platform development) resonates more with users. </li>        <li>Nat says that many developers are initially attracted by C# development, although that's not always the case (referencing an internal app at GitHub written by Objective-C developers who just liked sharing code between platforms). </li>        <li>Nat says there's no real way to be a mobile developer now without having a cross-platform strategy - iOS might have looked like the only platform that mattered a few years ago, but now Android is more popular and Windows Phone is growing in popularity. </li>     </ul>   </li>    <li>(04:47) Code reuse strategy      <ul>       <li>Kevin asks how the code reuse happens, since these are true native applications. </li>        <li>Nat talks about different cross-platform strategies and says that they don't believe in write once, run anywhere. </li>        <li>With Xamarin, you separate the backend and UI code and write specific UI code for each platform, although you still write it in C#. </li>        <li>Rdio has over 150,000 lines of code which are shared between iOS, Android and Windows which covers networking, caching, authentication, etc. </li>     </ul>   </li>    <li>(07:55) First big announcement: Joseph Hill announces support for building for iOS applications in Visual Studio.      <ul>       <li>Nat says that you can have one Visual Studio solution targeting iOS, Android and Windows Phone, and step through the code with the full debugging support you're used to. </li>        <li>How does the Mac support work?          <ul>           <li>Scott K asks if this means that you have to run Visual Studio on a Mac. Nat says that's not necessary, you just need to pair your Visual Studio instance with a Mac - it just needs to be on the network somewhere. That's required both to be able to sign releases and to meet Apple's license terms. </li>            <li>Jon asks if this would work with a Mac Mini, and Nat says that's a popular option. </li>            <li>Scott K asks about a &quot;Mac in the cloud&quot; option; Nat says they're not planning that. </li>            <li>Kevin asks if several developers could share one Mac. Nat says that Apple's requirement is that each developer is supposed to have a license, and Joseph says that the Apple toolchain is build for single user rather than server support. </li>            <li>Jon ask if he can start playing with iOS support without having a Mac, Joseph explains that you can install and look around a bit, but you can't build or deploy. </li>            <li>Kevin asks about the Interface Builder interaction. </li>            <li>Kevin asks if it was incredibly painful to set up this support for Visual Studio. </li>         </ul>       </li>     </ul>   </li>    <li>(16:14) Second big announcement: Nat announces the release of Xamarin Studio.      <ul>       <li>Xamarin Studio runs on OSX, Windows, and Linux. </li>        <li>It's based on Mono Develop, but it's a completely new user interface with a lot of great new features. </li>        <li>Visual Studio Express users can't install extensions so Xamarin Studio allows them to do Xamarin development, also it's what all Mac users will be using. </li>        <li>Kevin asks if it's a fork of Mono Develop. </li>        <li>Kevin asks if Xamarin Studio is open source. </li>        <li>Jon asks how it was developed. Joseph says it's still C# Mono code using GTK. Developers write Xamarin Studio in Xamarin Studio. </li>        <li>K. Scott asks if you can target non-mobile scenarios. Joseph says you can still target ASP.NET, console, class libraries, etc. </li>        <li>Kevin asks what happens to Mono Develop. Nat says it continues as an open source project, and they'll contribute back to it as they develop Xamarin Studio. </li>     </ul>   </li>    <li>(22:35) Xamarin as a Mono producer and consumer      <ul>       <li>Jon says it's interesting watching the evolution of the Mono / Xamarin efforts as they've moved from supplying the Mono framework to being both building Mono and building a business on Mono. </li>        <li>Nat says it's great working for a customer base rather than an opinionated crowd. &quot;A really good signal that we're doing good work is that people give us money for it.&quot; </li>        <li>Joseph talks about their model, explaining how their Xamarin business works well with their role as stewards of the Mono project. </li>     </ul>   </li>    <li>(25:28) Third big announcement: Nat announces the Xamarin Component Store      <ul>       <li>Nat says they see developers solving the same problems over and over again, giving an example of a common requirement for a signature capture control. </li>        <li>The Xamarin Component Store is a library of pre-built components. Nat gives an example of an Azure Mobile Service component. </li>        <li>It works in both Visual Studio and Xamarin Studio. </li>        <li>Components include documentation, screenshots, and sample projects. Nat says it's conceptually similar to NuGet, but gives you a lot better experience and makes it easier to get started. </li>        <li>There are a lot of component vendors who are contributing both free and paid components, and Xamarin has also contributed several based on their experience in supporting Xamarin developers. </li>        <li>Jon asks how they handle cross platform, native user interface with components. </li>        <li>Kevin asks how people can submit components to the store. </li>        <li>Nat says he thinks this will really be a compelling feature of their platform, since developers won't have to build everything from scratch. </li>        <li>Kevin asks they handle purchases and vender payments. </li>        <li>Kevin asks if the components are curated. </li>        <li>Jon asks about component support for Android and Windows Phone. </li>        <li>Kevin asks if it's possible to create Xamarin components using native Objective-C components. Nat says they support both Objective-C and Java code reuse. </li>        <li>Jon says the design on the Xamarin Component store website looks great and asks about Xamarin's approach to design. Nat says that they're selling a good design experience and design is an important part of that. </li>        <li>Kevin says he like hover screenshots, Nat says he really likes the hover menu control. </li>     </ul>   </li>    <li>(39:35) Fourth big announcement: Nat announces the free Xamarin Studio Starter Edition      <ul>       <li>You can use Starter Edition to get started, build, and deploy applications. </li>        <li>Starter Edition is limited to 32KB of IL code. </li>        <li>Jon loves the idea of limiting the free edition based on compiled code size. </li>        <li>Kevin asks what kind of app will fit in 32KB. Nat says that using a lot of DLL's will put you over the limit quickly, but images aren't content. About 20% of the apps in the store would fit under the limit. </li>        <li>Joseph says they didn't want to limit based on features. Jon talks about the frustration people see in Visual Studio version based feature limitations. Nat says pricing is hard; ultimately they want to get a lot of people using Xamarin and they think this is a good way to do that. </li>     </ul>   </li>    <li>(44:53) Jon asks about support for languages other than C#.      <ul>       <li>Nat says they see people using F# and Java (using IKVM). </li>        <li>Joseph says that C# is their main focus - all the documentation is in C# - but they're happy to see people using other languages. </li>        <li>Kevin asks for JavaScript support. Nat says they think it's hard to build large scale apps in JavaScript. </li>     </ul>   </li>    <li>(47:35) Nat talks about their upcoming developer conference.      <ul>       <li>The first two days are focused completely on training. </li>        <li>The second two days feature some great talks by community leaders, user interface designers, and more. The entire team will be on hand to answer questions. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Nat Friedman (<a href="http://nat.org/">site</a>, <a href="https://twitter.com/natfriedman">@NatFriedman</a>) </li>    <li>Joseph Hill (<a href="http://beyondfocus.com/">blog</a>, <a href="https://twitter.com/JosephHill">@JosephHill</a>) </li>    <li><a title="http://amirrajan.github.com/Oak/" href="http://xamarin.com/">Xamarin</a> </li>    <li><a href="http://blog.xamarin.com/announcing-xamarin-2.0/">Announcing Xamarin 2.0 </a>(Xamarin blog)</li>    <li><a href="http://xamarin.com/evolve">Xamarin Evolve</a> - April 14-17, Austin, TX</li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0158-Xamarin-2.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 157: Amir Rajan on dynamic web development with Oak and Gemini</title>
    <link>https://herdingcode.com/herding-code-157-amir-rajan-on-dynamic-web-development-with-oak-and-gemini/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-157-amir-rajan-on-dynamic-web-development-with-oak-and-gemini/</guid>
    <pubDate>Thu, 14 Feb 2013 17:39:39 GMT</pubDate>
    <description><![CDATA[<p>On this episode of Herding Code, the guys talk to Amir Rajan about his Oak and Gemini projects, which bring Rails-inspired dynamic programming to ASP.NET MVC.</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 157</strong></p>
<p>On this episode of Herding Code, the guys talk to Amir Rajan about his Oak and Gemini projects, which bring Rails-inspired dynamic programming to ASP.NET MVC.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0157-Oak.mp3">Herding Code 157 - Amir Rajan on dynamic web development with Oak and Gemini</a> </p>  <p>Show Notes:</p>  <ul>   <li>Overview - Developing with Oak      <ul>       <li>Oak is an approach to building single page applications that are heavy on JavaScript that takes a lot of inspiration from the Ruby community's development approach. </li>        <li>Jon asks Amir to explain his development workflow, including SpecWatcher, NSpec, and Growl. </li>        <li>Jon asks about the File / New Project experience. Amir describes how that's not even required - Oak works with WarmuP to build out a new project. </li>        <li>The next step is using Rake - Amir explains how Rake works. Running Rake builds the application and deploys, then sets up IIS against that instance. </li>     </ul>   </li>    <li>Dynamic programming and Gemini      <ul>       <li>Oak leverages the dynamic keyword. Amir explains how it just augments what's already there in ASP.NET MVC. </li>        <li>Amir explains how Oak works with Gemini, separate library he's built to enable building dynamic objects. It allows you to attach properties and methods through mixins. He gives an example of using Gemini to extend a dynamic object with validation methods. </li>        <li>Amir describes how Oak leverages Gemini to take advantage of these decorated dynamic model objects throughout the different layers. </li>        <li>Scott K asks where the composition happens - is this a pipeline process? </li>        <li>Jon says it sounds like this is a more fleshed out version of some dynamic features that were started in ASP.NET MVC, like dynamic views and ViewBag. He explains how Gemini goes beyond Expando, because it also includes support for method missing. </li>        <li>Jon says Gemini reminds him of the Clay dynamic objects used in Orchard. </li>     </ul>   </li>    <li>Data access and Cambium      <ul>       <li>Jon asks Amir about Cambium, the data layer. Amir says he customized Rob Conery's Massive library to work with his Gemini objects, and points out that the resulting library uses remarkably little code. </li>        <li>Scott K asks Amir if he's looked at Breeze. Amir says so far he's just worked with standard ASP.NET MVC controllers, but he's interested in looking at Breeze, Dapper, and NoSQL ORMs. </li>     </ul>   </li>    <li>But why?      <ul>       <li>Kevin asks the silly question: why bother bringing Rails idioms to ASP.NET MVC - why not work in Rails? </li>        <li>Jon says the thing he sees Amir's done is eliminate the shift between development and runtime modes in Visual Studio based development. </li>        <li>Jon asks about change tracking support in Cambium. </li>     </ul>   </li>    <li>More about data - migrations      <ul>       <li>Amir explains migrations and schema generation in Oak and Cambium. </li>        <li>Amir says that SQL based migrations are important in many development environments. </li>     </ul>   </li>    <li>Single page and Ajax      <ul>       <li>Jon asks Amir about the Single Page Application story in Oak. Amir explains some of the points of friction that exist in ASP.NET SPAs and explains how Oak is able to round-trip dynamic types. </li>        <li>Scott K. asks why it's so hard to migrate schemas in .NET. Amir says that it's due to our fixation on trying to define our models using code first in .NET types rather than in the database. </li>        <li>Jon asks how the first deployment and upgrade scenarios work in Oak. </li>        <li>Jon asks how Ajax interactions work. Amir explains how this works using the TaskRabbit sample to explain. </li>        <li>Amir explains how he's relying on client-side rendering and templating more and more. He asks if we're seeing that movement as well, and Scott K. agrees with him. They agree that focusing on serving JSON and rendering on the client solves a lot of problems. </li>        <li>Jon asks Amir if he's using one controller to serve HTML and JSON, or if they're split out. Amir says he's got one controller to serve the HTML, then does everything else via a separate controller that serves JSON. He says he's noticed that the ORMs have very little need for state with this approach. </li>        <li>Jon says he's seeing the shift from a little Ajax interaction in mostly HTML focused servers to servers that are almost completely focused on serving JSON. </li>     </ul>   </li>    <li>Some misc. questions      <ul>       <li>Jon asks about Canopy. Amir describes how Canopy is a stabilization layer on top of Selinium, and talks about why Canopy is built on top of F#. </li>        <li>Scott K. asks if Amir has looked at OWIN yet. </li>        <li>Jon asks about Async support in Oak. </li>        <li>Twitter question from Bobby Johnson: What do you do to limit the viral nature of dynamic in your code? Amir and Jon talk about how a lot of the assumed safety of static code is an illusion when you think about all the moving parts you've got no control over. </li>        <li>K. Scott and Scott K. think this is a fascinating project and like the code. </li>        <li>Scott K. and Jon joke about variants. Amir mentions that the dynamic nature of Gemini means that all the dynamic properties and methods are case insensitive. </li>     </ul>   </li>    <li>Wrap up and getting started with Oak      <ul>       <li>Amir talks about how to get started with Oak. </li>        <li>Jon says the sample apps, documentation and screencasts are really nice. </li>        <li>Jon asks what's next. Amir lists a better SPA story, better file uploads, adding dynamic to ServiceStack and Nancy, and growing the number of Gemini modules. </li>        <li>Kevin asks about the performance impact of this dynamic focus. Amir that he's got an included test, and he's found that dynamic is actually faster in a lot of cases which need to use reflection, such as ORMs, JSON serialization, and model binding. </li>        <li>Amir calls out the NSpec project and references their interview on Hanselminutes. </li>     </ul>   </li> </ul>  <p>Show Links:</p>  <ul>   <li>Amir Rajan (<a href="http://www.amirrajan.net/">blog</a>, <a href="https://twitter.com/amirrajan">@amirrajan</a>) </li>    <li><a title="http://amirrajan.github.com/Oak/" href="http://amirrajan.github.com/Oak/">Oak: Frictionless development for ASP.NET MVC single page web apps. Prototypical and dynamic capabilities brought to C#.</a> </li>    <li><a title="https://github.com/amirrajan/oak/wiki" href="https://github.com/amirrajan/oak/wiki">Oak project on GitHub</a> </li>    <li><a href="http://www.amirrajan.net/Blog/dynamic-c-sharp">Blog post introducing Gemini</a> </li>    <li><a title="http://weblogs.asp.net/bleroy/archive/2010/08/16/clay-malleable-c-dynamic-objects-part-1-why-we-need-it.aspx" href="http://weblogs.asp.net/bleroy/archive/2010/08/16/clay-malleable-c-dynamic-objects-part-1-why-we-need-it.aspx">Clay: Malleable C# dynamic objects</a> </li>    <li><a href="http://nspec.org/continuoustesting/">SpecWatchr</a> </li>    <li><a href="http://www.continuoustests.com/">Mighty Moose</a> </li>    <li><a href="http://www.ncrunch.net/">NCrunch</a> </li>    <li><a href="https://github.com/chucknorris/warmup">WarmuP</a> </li>    <li><a href="http://rake.rubyforge.org/">Rake - Ruby Make</a> </li>    <li><a href="http://lefthandedgoat.github.com/canopy/">canopy: f# web testing framework</a> </li>    <li><a href="http://www.hanselminutes.com/294/understanding-bdd-and-nspec-with-matt-florence-and-amir-rajan">Hanselminutes: Understanding BDD and NSpec with Matt Florence and Amir Rajan</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0157-Oak.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 156: Catching up with Andreas H&#xE5;kansson and Steven Robbins on NancyFx</title>
    <link>https://herdingcode.com/herding-code-156-catching-up-with-andreas-hakansson-and-steven-robbins-on-nancyfx/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-156-catching-up-with-andreas-hakansson-and-steven-robbins-on-nancyfx/</guid>
    <pubDate>Fri, 18 Jan 2013 22:32:07 GMT</pubDate>
    <description><![CDATA[<p>The guys catch up with Andreas and Steve on what&apos;s new in NancyFx (a web framework for .NET that was originally inspired by Sinatra). Herding Code 156 - Catch</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 156</strong></p>
<p>The guys catch up with Andreas and Steve on what's new in NancyFx (a web framework for .NET that was originally inspired by Sinatra).</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0156-NancyFx.mp3">Herding Code 156 - Catching up with Andreas Håkansson and Steven Robbins on NancyFx</a> </p>  <p>Show Notes:</p>  <ul>   <li>Jon asks for a quick overview of NancyFx. Steve and Andreas both say you can write the same app on any number of web frameworks, so what really distinguishes them is the syntax and feel. Andreas says that the web only has a small set of things you really can do - there are only a few HTTP methods - but an infinite number of ways you can build applications; Nancy is one of them.</li>    <li>Diagnostics</li>    <ul>     <li>Andreas says Diagnostics is a website built into Nancy itself. It covers things like request tracing and interactive diagnostics.</li>      <li>Steve explains how the interactive diagnostics lets you find out what routes were hit and why, poke at live code, etc.</li>      <li>Andreas says this works using companion classes for metadata which is then rendered via JavaScript templates, so you can customize it as much as you want.</li>      <li>Jon says the code for Diagnostics seems like pretty good sample code for getting an idea of how Nancy code works.</li>      <li>Jon asks about how authentication is handled to restrict access.</li>      <li>Steve says they're using Handlebars for JavaScript templates with Backbone and Nancy on the back end.</li>   </ul>    <li>Content Negotiation</li>    <ul>     <li>Andreas explains how routes just return models, and the formatting is handled by response processors. There's a syntax to allow for more control at the route level if needed.</li>      <li>Steve says the response processors are allowed to participate in the selection by specifying how applicable they are for both content types and model types. The content negotiation can also allow you to select different models based on the request, avoiding unnecessary code from executing and weighing the model down unnecessarily.</li>   </ul>    <li>Serializers and dependencies</li>    <ul>     <li>Jon asks about the JSON serializers they're using, and why they're not using something like ServiceStack or JSON.NET. Andreas explains that because the Nancy core ships without dependencies, they used Mono code.</li>      <li>Jon asks about where Nancy can be be embedded, outside of standard web hosting scenarios.</li>      <li>Steve says that because Nancy doesn't have other dependencies and is strictly focused on returning a response for a request, it's extremely easy to test.</li>      <li>Andreas points out that you can use other serializers very easily via a NuGet package.</li>      <li>Jon asks about how packages work in Nancy. Andreas explains how Nancy scans for classes that implement ISerializer.</li>      <li>Kevin asks about implementing a processor for generating hyperlinks between models.</li>      <li>Jon asks if people are sharing processors. Steve says that they're so trivial to write that there's no real point in sharing them.</li>   </ul>    <li>Localization</li>    <ul>     <li>Andreas says this was a community contribution. There are several conventions (including querystring values, URL segments) which can be used to set the culture for the context. There's a helper on the Razor base class that returns a dynamic object which can return localized values from a resource. Assembly resources are used by default, but you can add others.</li>      <li>Steve says that you can also use localized views based on filename.</li>      <li>Jon asks for more information on how you'd set up a custom resource location.</li>   </ul>    <li>Architecture, pipelines, and IoC</li>    <ul>     <li>Jon says that he spoke with Jeremy Miller at Codemash, and Jeremy said that it took a while to get the processor architecture set up, but now it's very easy to add in features. It seems like that's also paid off for Nancy. Andreas agrees, the pipeline system and dependency injection really simplify adding in new features.</li>      <li>Jon asks about how Nancy uses TinyIoC and how you could use TinyIoC in other applications.</li>      <li>Kevin and Jon ask about how Steve wrote TinyIoC to run on multiple platforms. Steve describes some issues they've worked around and how assembly scanning can get tricky due to test frameworks injecting things into the app domain.</li>   </ul>    <li>Non-standard uses of Nancy</li>    <ul>     <li>Jon asks for some examples. Steve says they seen people embed it into WPF applications for an interface, to provide mobile support, and even on Raspberry Pi. They'd love to hear more about what people are doing with it.</li>   </ul>    <li>Questions from Twitter / Misc. Questions</li>    <ul>     <li>Jim Liddell (@liddellj) asks about the roadmap. Steve talks about work they're doing for OWIN and Async support.</li>      <li>Filip W (@filip_woj) asks &quot;Why tuples instead of classes and structs?&quot;</li>      <li>Kristof Claes (@kristofclaes) asks &quot;How do they determine when something is &quot;too much ceremony&quot;? Gut feeling? Set of defined rules? Talk? Compare to other FX?&quot;</li>      <li>Ian Battersby (@Cranialstrain) asks &quot;Why dynamic? And don't say fluency ;)&quot;</li>      <li>Tobi Tobsen (@t0bit0bsen) asks &quot;Is there a NancyFx tutorial for devs w/o a background in web development or should they look elsewhere?&quot;</li>      <li>Jim Liddell (@liddellj) asks &quot;How do you view Nancy in relation to similar frameworks, such as OpenRasta?&quot;</li>      <li>Kevin asks about asset management for Nancy. Steve says that's probably better handled by external</li>      <li>Kevin asks about web socket support. Steve says just use SignalR.</li>      <li>There's a Nancy store now.</li>      <li>Daniel Lee (@danlimerick) asks &quot;How many hours a week do you spend on Nancy? What's ratio of reviewing PR's vs writing new features?&quot;</li>      <li>Jon asks what Steve and Andreas are finding fun and interesting lately. Steve and Andreas both like Mongo.</li>      <li>Scott K. asks if they'll add time zone localization support. They tell him to submit a pull request.</li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://www.nancyfx.org/">NancyFX</a> <a href="htttps://github.com/NancyFx">git repo</a>, <a href="http://nuget.org/List/Search?packageType=Packages&amp;searchCategory=All+Categories&amp;searchTerm=nancy&amp;sortOrder=package-download-count&amp;pageSize=25">NuGet package</a>, <a href="https://groups.google.com/forum/#!forum/nancy-web-framework">Google Group</a>, <a href="http://twitter.com/#!/NancyFx">@NancyFx</a> </li>    <li><a href="http://thecodejunkie.com/">Andreas Håkansson </a>(<a href="http://twitter.com/#!/TheCodeJunkie">@TheCodeJunkie</a>) </li>    <li><a href="http://www.grumpydev.com/">Steven Robbins</a> (<a href="http://twitter.com/#!/Grumpydev">@Grumpydev</a>) </li>    <li><a href="https://herdingcode.com/">Herding Code 123: Andreas Hakansson and Steven Robbins on NancyFx</a> </li>    <li><a href="https://github.com/grumpydev/TinyIoC/">TinyIoC</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0156-NancyFx.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 155 - Ward Bell on Single Page Applications and Breeze</title>
    <link>https://herdingcode.com/herding-code-155-ward-bell-on-single-page-applications-and-breeze/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-155-ward-bell-on-single-page-applications-and-breeze/</guid>
    <pubDate>Tue, 08 Jan 2013 21:11:40 GMT</pubDate>
    <description><![CDATA[<p>On this episode of Herding Code, the guys talk to Ward Bell about single page applications and the Breeze project. Herding Code 155 - Ward Bell on Single Page</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 155</strong></p>
On this episode of Herding Code, the guys talk to Ward Bell about single page applications and the Breeze project.

Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0155-Ward-Bell.mp3">Herding Code 155 - Ward Bell on Single Page Applications and Breeze</a> 

Show Notes:
<ul>
	<li>General SPA discussion
<ul>
	<li>Ward talks about how IdeaBlade has been building tools for working with data in rich clients for a while, and after seeing the move towards desktop experiences in the browser they started the Breeze project, which is open source and free.</li>
	<li>Jon asks Ward to define single page applications (SPAs) a bit, and Ward says he sees SPA as a funny term since it just describes one attribute of the experience - it's like calling a car a "horseless carriage." Ward says the goal is to give the user a rich experience and not rely on the server to deliver that rich experience. A lot of the value comes from maintaining data and state on the client.</li>
	<li>There's a discussion about the value and best applications of SPAs.</li>
	<li>Kevin says there are a few aspects of SPAs - there can be a lot of individual, interactive pages which are separately delivered by the server, or you can have a more full application which handles screen transitions on the client. Ward talks about the tradeoffs of the two approaches. The whole SPA application approach is especially important in newer scenarios like mobile or Window Store applications built in HTML/JS.</li>
	<li>Scott K asks about the different approaches to data loading - do you preload some of the data, or does the first page request just deliver an HTML client which requests all the data.</li>
	<li>Scott K asks how often Ward sees offline manifests and local data. Ward says he sees things going that way, but it's still early. Scott K and Ward talk about the difficulty of synchronizing offline changes when you're reconnected.</li>
	<li>Scott K and Ward talk about the use of Web Sockets and / or SignalR to handle locks to allow for multiple users.</li>
</ul>
</li>
	<li>Breeze
<ul>
	<li>Jon asks Ward how Breeze helps</li>
	<li>Ward says that they're not trying to solve solved problems - they're focused on solving the data problem.</li>
</ul>
</li>
	<li>Breeze, Upshot, and the ASP.NET SPA template
<ul>
	<li>Jon asks how this fits in with the former ASP.NET SPA template and Upshot. There's a discussion the history and state of Upshot and RIA Services.</li>
	<li>Scott K asks about whether Upshot will be released as open source... or the unreleased ASP.NET MVC Recipes source. Jon starts crying.</li>
	<li>Jon and Ward talk about how one of the big features of Upshot was that there were both client and server side parts to it.</li>
	<li>Ward said they'd learned from the Upshot, so they made Breeze very extensible while making for an easy path when using ASP.NET Web API and Entity Framework.</li>
	<li>Ward says the current ASP.NET MVC SPA app is too simplistic, because it's just one simple screen.</li>
</ul>
</li>
	<li>Working with Breeze - client state, server-side interaction
<ul>
	<li>Jon asks Ward about how Breeze handles local state. Ward describes how the server can send down metadata (likely from an Entity Framework model) to the Breeze client code so it can understand the models, relationships, validation rules, etc. You can extend things if you need to, but you don't need to bother with the tedium of creating client models that match your server-side models.</li>
	<li>The generated client-side models are ready to be hooked up to Knockout so they're easily bound to the UI.</li>
	<li>Jon asks how things are different on the server. Ward says that standard ASP.NET Web API controllers are very repetitive - each controller has GET, PUT, POST, DELETE methods that are just boilerplate. Pretty soon you end up with thirty API Controllers which just contain a lot of boilerplate code. Breeze can just expose things as Queryables so you really just need one controller unless you want to customize things. Scott K says it sounds like it's basically Repository&lt;T&gt;. Scott K says he'd like to see it go further - at Cascadia there were some talks about big data where queries were created on the client and sent to the server.</li>
	<li>Jon and Ward talk about the difficulties of complex repetitive APIs with too many entry points.</li>
</ul>
</li>
	<li>How Breeze fits in with other frameworks like Ember, Angular, Backbone, etc.
<ul>
	<li>Jon asks how Breeze fits in with Ember, Angular, and other SPA frameworks. Ward talks about different framework philosophies and how Ember and Angular both more of top to bottom stacks. Kevin mentions how Backbone differs - it's more of a library vs. a framework.</li>
	<li>Ward says that Breeze really targets the data scenario. Jon asks how close its vision is to Upshot's. Ward explains how, other than Ember Data, nobody's looking at solving the data scenarios - they don't worry about caching, object graphs, change tracking, etc. Scott K says the other frameworks are really MVC focused, so they don't consider data.</li>
	<li>Scott K asks what happened to Batman.js. Nobody knows.</li>
	<li>Jon asks if the happy path for Ember is Rails focused and Breeze is ASP.NET / Entity Framework focused. Ward says yes, with a clarification that we're really talking about Ember Data.</li>
</ul>
</li>
	<li>Getting Started
<ul>
	<li>Jon asks if it's difficult to get started with Breeze.</li>
	<li>Ward talks about the NuGet package that gets a sample project set up quickly.</li>
	<li>Ward talks about the live tutorial that lets you play with Breeze in a browser.</li>
	<li>Ward talks about the automated tests they've got for Breeze training. Jon compares it to Ruby Koans.</li>
</ul>
</li>
	<li>Jon, Ward, Kevin and Scott K talk about automated JavaScript testing options - Chutzpah, QUnit, Jasmine, Mocha.
<ul>
	<li>Chutzpah is an automated JavaScript test runner that can run inside of Visual Studio.</li>
	<li>QUnit is pretty simple - tests are functions that take true or false.</li>
	<li>Jasmine is more BDD style.</li>
	<li>Mocha is a test framework that supports different front ends, so you can use BDD, standard unit testing, etc. It's also got great async support.</li>
</ul>
</li>
	<li>Ward brings up TypeScript and Scott Koon starts cursing.</li>
	<li>Wrap up small talk
<ul>
	<li>Jon says that the talk about mocha reminds him of coffee, and he asks Ward about his new espresso machine. Jon and Ward both get their coffee beans from Sweet Maria's.</li>
	<li>Jon says he's still roasting his coffee on his barbeque.</li>
</ul>
</li>
	<li>Scott K asks what dependencies Breeze has. Ward says they write to EcmaScript 5 and have gotten rid of all dependencies other than one called Q.</li>
	<li>It's time for Pimp Yo Stuff, and Jon takes the occasion to praise Ward's sartorial skill. Scott K says they'd like to
<ul>
	<li>Ward pimps the DevForce and and Cocktail combination. Cocktail is DevForce + Caliburn.Micro.</li>
	<li>Jon asks about the license for Breeze. Ward clarifies that it's all free and open source, and they make their money on support and professional services.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Ward Bell (<a href="http://www.neverindoubtnet.blogspot.com/">blog</a>, <a href="https://twitter.com/wardbell">@wardbell</a>)</li>
	<li><a href="http://www.breezejs.com">Breeze</a> - Build rich web apps in JavaScript with techniques you know</li>
	<li>Ward's post: <a href="http://www.neverindoubtnet.blogspot.com/2012/09/the-spa-as-horseless-carriage.html">The SPA as a Horseless Carriage</a></li>
	<li><a href="http://backbonejs.org/">Backbone.js</a></li>
	<li><a href="https://github.com/NYTimes/backbone.stickit">backbone.stickit</a> - yet another model-view binding plugin for Backbone</li>
	<li><a href="http://angularjs.org/">AngularJS</a> - "what HTML would have been, had it been designed for building web-apps"</li>
	<li><a href="http://www.johnpapa.net/building-single-page-apps-with-knockout-jquery-and-web-api-ndash-the-story-begins/">John Papa's Code Camper tutorial</a></li>
	<li><a href="http://www.rubykoans.com/">Ruby Koans</a></li>
	<li><a href="http://chutzpah.codeplex.com/">Chutzpah</a> - A JavaScript Test Runner</li>
	<li><a href="http://qunitjs.com/">QUnit</a> - JavaScript Unit Testing framework</li>
	<li><a href="http://pivotal.github.com/jasmine/">Jasmine</a> - a behavior-driven development</li>
	<li><a href="http://visionmedia.github.com/mocha/">Mocha</a> - a feature-rich JavaScript test framework running on <a href="http://nodejs.org/">node</a> and the browser, making asynchronous testing simple and fun</li>
	<li><a href="http://www.sweetmarias.com/">Sweet Maria's</a> - Home coffee roasting supplies</li>
	<li><a href="http://documentup.com/kriskowal/q/">q</a> - A tool for making and composing asynchronous promises in JavaScript</li>
	<li><a href="http://caliburnmicro.codeplex.com/">Caliburn.Micro</a></li>
	<li><a href="http://www.ideablade.com/products/products.aspx">DevForce</a></li>
	<li><a href="http://cocktail.ideablade.com/">Cocktail</a></li>
	<li><a href="http://leroymenswear.com/">Leroy's Menswear</a></li>
	<li><a href="https://herdingcode.com/">Herding Code 104: Rob Eisenber on Caliburn.Micro</a></li>
	<li><a href="https://herdingcode.com/">Herding Code 57: Presentation Patterns with Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (Part 1)</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0155-Ward-Bell.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 154 - Aaron Stannard on MarkedUp, founding a startup, and Windows 8 development</title>
    <link>https://herdingcode.com/herding-code-154-aaron-stannard-on-markedup-founding-a-startup-and-windows-8-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-154-aaron-stannard-on-markedup-founding-a-startup-and-windows-8-development/</guid>
    <pubDate>Fri, 16 Nov 2012 00:48:43 GMT</pubDate>
    <description><![CDATA[<p>While at the //build/ conference, Jon talks to Aaron Stannard about how he left Microsoft to start up a new company focused on analytics for Windows 8 applications. They discuss</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 154</strong></p>
While at the //build/ conference, Jon talks to Aaron Stannard about how he left Microsoft to start up a new company focused on analytics for Windows 8 applications. They discuss Windows 8 development and the Window Store ecosystem and the technology stack Aaron and team settled on for their analytics platform. They end up by discussing the process of going from an employed software developer to running a software startup.

<em>Note: The audio is a bit crackly in a few parts, but just for a few seconds.</em>

Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0154-Aaron-Stannard.mp3">Herding Code 154 - Aaron Stannard on MarkedUp, founding a startup, and Windows 8 development</a> 

Show Notes:
<ul>
	<li>Jon starts by asking Aaron about what led him to founding a startup. Aaron explains how his first startup failed and his blog post about Why .NET Adoption Lags Among Startups got him a job as a startup evangelist at Microsoft</li>
	<li>Opportunities: Windows 8 development and MarkedUp
<ul>
	<li>Aaron explains how he saw a key opportunity around the Windows app ecosystem and why the teaming seemed right to really dive into this now. Jon agrees that this is a really interesting time in the Windows developer landscape.</li>
	<li>Aaron explains that MarkedUp delivers in-app analytics for WinRT and eventually Windows 8, answering questions like how many people use your app every day, how much time they spend using it, which features they use, and what in-app purchases they make.</li>
	<li>Jon mentions a key difference in the Windows Store which allows you to have one app which can be upgraded from free to paid, whereas other platforms have duplicate applications for free and paid.</li>
	<li>Aaron talks about his recent blog post comparing iOS economics vs. Windows 8 economics titled <a href="http://blog.markedup.com/2012/10/win8-developers-dont-make-the-terrible-mistake-of-treating-the-windows-store-like-the-ios-app-store/">Win8 Developers: Don't Make the Terrible Mistake of Treating the Windows Store like the iOS App Store</a>. He explains that there's an opportunity for Windows 8 applications to do quite a bit more than simple little hit driven apps, and Windows 8 applications can and should do quite a bit more.</li>
	<li>Aaron talks about the pricing model - free now, there will always be a free model, and it's intended to be pretty reasonable for developers with successful applications.</li>
</ul>
</li>
	<li>Tech talk about WinRT development and how MarkedUp integrates therewith
<ul>
	<li>Aaron begins explaining the technology stack, but Jon interrupts him to ask him to explain what a .winmd file is. Aaron discusses some of the key similarities and differences between WinRT and .NET development.</li>
	<li>Aaron talks about how they've cleaned up a lot of the information that's exposed so it's useful.</li>
	<li>There's NuGet package you add to your Windows 8 application which brings in the .winmd dependency.</li>
	<li>There's a managed singleton approach which handles a lot of things automatically, like application startup and shutdown. You can also log additional events through the managed singleton.</li>
	<li>There's a JavaScript wrapper that sits on top of the .winmd file for WinJS applications which flattens some of the hierarchies and namespaces for logging.</li>
	<li>Aaron says he's seen this as a common pattern for Windows 8 development - write some .NET code, ship it as a .winmd file, and provide a JavaScript wrapper for WinJS.</li>
	<li>Aaron mentions that he likes this pattern for application development, too: write business logic in C# and expose it through .winmd put a JavaScript wrapper on top of it to write the interface in HTML and CSS. He like the flexbox and grid system for layout, and thinks the CSS3 media selector based layout orientation systems is a lot simpler than trying to do that in XAML.</li>
	<li>Aaron explains that as an analytics component, they will never degrade the user experience, so they'll always swallow internal exceptions.</li>
	<li>The communications system is also designed to prevent impacting the user, so they cache locally and only send a single message at a time.</li>
</ul>
</li>
	<li>RavenDB and how it compares with other document databases like MongoDB
<ul>
	<li>Data is stored in RavenDB. They evaluated both RavenDB and MongoDB but decided RavenDB worked better for them at this point. He describes some differences between RavenDB and MongoDB.
<ul>
	<li>RavenDB projections make it easier to do server-side transforms.</li>
	<li>RavenDB has some nice batch loading features.</li>
	<li>RavenDB lets you express map-reduce as a pre-computed index.</li>
	<li>Aaron doesn't like the way sharded RavenDB clusters work.</li>
	<li>They're probably going to go to Cassandra or HBase eventually.</li>
	<li>Aaron talks about a solution (Hircine) they came up with to precompute RavenDB indexes at build time rather than startup.</li>
	<li>RavenDB is great for unit testing</li>
</ul>
</li>
	<li>Aaron talks about their build system using Albacore and talks about their build and deployment system.</li>
	<li>Jon asks about why they're planning to move from RavenDB to Cassandra or HBase. Aaron says he doesn't like the scale-out / sharding system in RavenDB and doesn't think it will work for them as they scale. Aaron talks about their plans to handle complex analytics at scale.</li>
</ul>
</li>
	<li>Jon shifts gears to ask about starting a company. How do you get started?
<ul>
	<li>Aaron talks about the history of how they got started - with a mission.</li>
	<li>Next questions: Am I the right person to execute this? Is this a problem worth solving? Is this economically viable?</li>
	<li>Build a minimum viable product and show it to people you trust. Aaron gives examples from the history of starting MarkedUp, with an application that let you annotate and upload screenshots from iOS. Jon and Aaron discuss how Aaron was able to do most of the minimum viable product development without quitting his job.</li>
	<li>First step in actually starting the company: talk to a lawyer to get your structure and ownership figured out.</li>
	<li>How do you make the decision to go fulltime?</li>
	<li>Figuring out how to pay the bills: can you monetize quickly, or do you raise money?</li>
	<li>Aaron talks about the process of getting funded and networking with potentials investors.</li>
	<li>It's an emotional rollercoaster - be ready to change tactics, but don't quit.</li>
	<li>Jon and Aaron talk about the benefits of doing this all incrementally - at least until you go full time.</li>
</ul>
</li>
	<li>There's a registration URL for Herding Code listeners (<a href="https://markedup.com/account/register/?utm_campaign=herdingcode">https://markedup.com/account/register/?utm_campaign=herdingcode</a>) - or you can just go through registration and enter the code <strong>HERDINGCODE</strong> into the registration code field on the form.</li>
	<li>Aaron says he'd be happy to talk with other developers who are interested in the startup process.</li>
</ul>
Show Links:
<ul>
	<li>Aaron Stannard (<a href="http://www.aaronstannard.com/">blog</a>, <a href="https://twitter.com/aaronontheweb">@aaronontheweb</a>)</li>
	<li><a href="https://markedup.com/">MarkedUp</a>  (<a href="https://twitter.com/markedupmobi">@MarkedUpMobi</a>)</li>
	<li><a href="http://www.aaronstannard.com/post/2010/07/03/NET-Culture-Shock-Why-NET-Adoption-Lags-Among-Startups.aspx">.NET Culture Shock: Why .NET Adoption Lags Among Startups</a></li>
	<li><a href="http://blog.markedup.com/2012/10/win8-developers-dont-make-the-terrible-mistake-of-treating-the-windows-store-like-the-ios-app-store/">Win8 Developers: Don't Make the Terrible Mistake of Treating the Windows Store like the iOS App Store</a></li>
	<li><a href="http://apps.microsoft.com/webpdp/en-US/app/router-cocpit/75370ce9-5ed4-4b7b-b23d-4938dbf5ec12">Router .CoCPit</a> application</li>
	<li><a href="http://ravendb.net/">RavenDB</a> (<a href="https://herdingcode.com/">Herding Code 83: Ayende Rahien on RavenDB</a>)</li>
	<li><a href="http://cassandra.apache.org/">Cassandra</a></li>
	<li><a href="http://hbase.apache.org/">HBase</a></li>
	<li>Hircine: <a href="https://github.com/markedup-mobi/hircine">Stand-alone RavenDB index builder, used in CI systems and automated deployments</a></li>
	<li><a href="https://markedup.com/account/register/?utm_campaign=herdingcode">MarkedUp registration link for Herding Code listeners</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0154-Aaron-Stannard.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 153 - Matt Wrock on RequestReduce, Chocolatey and BoxStarter</title>
    <link>https://herdingcode.com/herding-code-153-matt-wrock-on-requestreduce-chocolatey-and-boxstarter/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-153-matt-wrock-on-requestreduce-chocolatey-and-boxstarter/</guid>
    <pubDate>Mon, 15 Oct 2012 23:04:59 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Matt Wrock about Matt&apos;s RequestReduce web optimization framework and his work to automate building and configuring Windows developer machines with the Chocolate</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 153</strong></p>
The guys talk to Matt Wrock about Matt's RequestReduce web optimization framework and his work to automate building and configuring Windows developer machines with the Chocolatey and BoxStarter projects.

Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0153-Matt-Wrock.mp3">Herding Code 153 - Matt Wrock on RequestReduce, Chocolatey and BoxStarter</a> 

Show Notes:
<ul>
	<li>RequestReduce
<ul>
	<li>Matt explains how he got started with RequestReduce - a site optimization system that's been designed as a plug-and-play system that can work well with legacy sites without any code changes.</li>
	<li>Matt explains how RequestReduce fits in with other systems like the ASP.NET Web Optimization system and Casette.</li>
	<li>K. Scott asks Matt how it works and how a user would configure it. Matt explains how it can be installed via NuGet, and how it uses a Response Filter to process the output.</li>
	<li>Matt explains how everything's handled via a queue on a background thread, so there's no performance impact on initial requests.</li>
	<li>RequestReduce pulls in CSS, images and JavaScript so it can work with remote content and CDNs.</li>
	<li>Matt gives a shoutout to AjaxMin and the speed at which he and Ron Logan have been able to turn around fixes and improvements.</li>
	<li>Matt explains the complications involved in creating image sprites, and why he only sprites images with a defined width.</li>
	<li>Matt explains how both quantization and compression can dramatically affect image size.</li>
	<li>Matt explains why he doesn't sprite images when he can't determine the image width.</li>
	<li>Scott K talks about his previous job and how they'd looked at converting all images to Base64. Matt says that he's looked at that, but decided it's not something you'd necessarily want to apply to all images.</li>
	<li>Jon asks Matt to explain CSS spriting in more detail. Jon says they use sprites on the ASP.NET site, and Matt says the ASP.NET site is one of his test case sites.</li>
	<li>K. Scott asks Matt why the code is calculating CSS specificity scores.</li>
	<li>K. Scott asks about what the results have been. Matt says it varies by site, but on one large site they've seen a 33% improvement.</li>
	<li>Jon mentions that RequestReduce also handles Less and CoffeeScript. Matt says he's making use of SassAndCoffee.</li>
</ul>
</li>
	<li>BoxStarter and Chocolatey
<ul>
	<li>Matt talks about how he got started with BoxStarter - he was tired of wasting time building development boxes, and he didn't think VMs were a good solution.</li>
	<li>Matt thought Chocolatey solved some of the program installation issues, but didn't handle common customization scenarios like Windows settings, file associations, taskbar links, path, etc.</li>
	<li>Chocolatey handled some of the things Matt wanted, but not everything. He started by customizing and wrapping Chocolatey, but decided it would be better to contribute directly to Chocolatey.</li>
	<li>BuildStarter can work with either a local BuildPackages folder or a custom MyGet feed.</li>
	<li>Matt says he might like to use ClickOnce in the future.</li>
	<li>Matt talks about how he'd like to have a web based shopping list approach, where you could just click off all the things you wanted and it would set up a package for you - kind of like like Ninite, but a lot more comprehensive.</li>
	<li>Jon says he was happy to see a recent Chocolatey commit that can turn Windows features on and off.</li>
	<li>Matt explains how he's been coordinating with Rob Reynolds to decide what he should contribute directly to Chocolatey and what should be separate Chocolatey packages.</li>
	<li>Jon says he didn't get Chocolatey right away, but what sold him on it was the dependency management. Matt explains how this has come in handy in his work in the TFS dev team.</li>
</ul>
</li>
	<li>TFS
<ul>
	<li>Jon asks Matt about his work on new role on the TFS team. Matt says he's working on the REST API for work item tracking and would love any feedback on work item tracking.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Matt Wrock (<a href="http://www.mattwrock.com/">blog</a>, <a href="https://twitter.com/mwrockx">@mwrockx</a>)</li>
	<li><a href="http://requestreduce.org/">RequestReduce</a></li>
	<li><a href="http://getcasette.net">Casette</a></li>
	<li><a href="http://nuget.org/packages/SassAndCoffee">SassAndCoffee</a></li>
	<li><a href="http://boxstarter.codeplex.com/">BoxStarter</a></li>
	<li><a href="http://chocolatey.org/">Chocolatey</a></li>
	<li>Rob Reynolds (<a href="https://twitter.com/ferventcoder">@ferventcoder</a>)</li>
	<li><a href="https://herdingcode.com/">Herding Code 128: Rob Reynolds on Chocolatey and the Chuck Norris Frameworks</a></li>
	<li><a href="https://herdingcode.com/">Herding Code 118: Paul Betts on SassAndCoffee</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0153-Matt-Wrock.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 152 - Josh Twist on Azure Mobile Services</title>
    <link>https://herdingcode.com/herding-code-152-josh-twist-on-azure-mobile-services/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-152-josh-twist-on-azure-mobile-services/</guid>
    <pubDate>Mon, 24 Sep 2012 20:08:53 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Josh Twist about the newly released Azure Mobile Services. Herding Code 152 - Josh Twist on Azure Mobile Services</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 152</strong></p>
The guys talk to Josh Twist about the newly released Azure Mobile Services.

Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0152-Josh-Twist.mp3">Herding Code 152 - Josh Twist on Azure Mobile Services</a> 

Show Notes:
<ul>
	<li>How Azure Mobile Services got started
<ul>
	<li>Jon asks Josh how he got involved with Azure Mobile Services.</li>
	<li>Jon asks Josh about the Zumo code name - ZU from Azure, MO from Mobile.</li>
	<li>Josh explains how things got off the ground with a real startup feel.</li>
	<li>Steve Sanderson was a dev on the team, working on the interactive portal experience.</li>
	<li>Jon asks about platform support. Josh says that Windows 8 was the platform that was initially announced at launch, but other platforms are on the way very soon.</li>
</ul>
</li>
	<li>The three personas the Azure Mobile Services
<ul>
	<li>The hobbiest app developer who have very limited time and wants to spend the time on their mobile clients, not the backend services. Jon talks about the experiences he had on The Full Stack project with Jesse Liberty.</li>
	<li>The client focused developer is working full time on a mobile application, but still wants to focus on the application rather than the backend - and wants to make sure that it's going to scale when needed.</li>
	<li>The veteran backend developer, who is very comfortable with building services. Josh says these folks are already pretty well served with existing Azure services.</li>
	<li>Josh says that Azure is primarily focused at the first two personas - developers who want to focus on the client applications and have the back end just work.</li>
</ul>
</li>
	<li>Jon asks about an example - a social game where he can invite friend to play a game, track high scores, etc.
<ul>
	<li>Josh lists out some of the features  Jon would probably want - authentication, structured storage, push notifications, etc.</li>
	<li>Josh describes some of the challenges Jon might run into and how Azure Mobile Services handles extensibility by allowing for server-side scripts, written in JavaScript.</li>
	<li>Jon asks Josh about the identity provider story.</li>
	<li>Jon asks if the server-side JavaScript scripts use Node.js.</li>
</ul>
</li>
	<li>Josh talks through a to do list sample application.</li>
	<li>Jon asks about how the client libraries will likely look on other platforms like iOS and Android.</li>
	<li>Data
<ul>
	<li>Jon and Josh talk about the data story.</li>
	<li>Josh explains the dynamic schema system.</li>
	<li>Jon asks handling hierarchies in data. Josh says not yet, although you can use scripts to handle that.</li>
</ul>
</li>
	<li>Lots of random questions time!
<ul>
	<li>Jon talks about a blog post on accessing the Azure Mobile Services via the REST services. Josh says that's great, encouraged, and you can use that approach to use Azure Mobile Services from all kinds of frameworks and platforms, mentioning several examples.</li>
	<li>Kevin asks about handling the scripts as production code - can it be under version control? Josh says that's in the works. They're also thinking about the packaging story, to allow for exporting services and moving them between environments.</li>
	<li>Kevin asks if there's a migration path if you hit limits in Azure Mobile Services. Josh says that you'd handle this through composition with other services, but they're looking for feedback for things they can add via service and script support.</li>
	<li>Kevin asks how the billing works. Josh says you pay for what you use, so you pay for the underlying services you use. You can get 10 free instances, but can pay to scale up if you want.</li>
	<li>Kevin asks about their experiences in building with Node.js. Josh explains how the runtime runs on Node, but the service management uses ASP.NET Web API. They mainly picked Node.js to allow for server-side scripting using JavaScript.</li>
	<li>Jon asks if there's a way to run locally for testing. Josh says not yet, but definitely something they're think about.</li>
	<li>Jon asks about concurrency support.</li>
	<li>Kevin asks about monitoring and troubleshooting support. Josh lists out some of the realtime dashboard features.</li>
	<li>Jon asks about other configuration options in the Azure portal. Josh lists a few - authentication, data, etc. - but says the goal is to keep things simple.</li>
</ul>
</li>
	<li>Relationship of Azure Mobile Services with Azure Web Sites and Azure in general.
<ul>
	<li>Jon asks about the relationship to Azure Web Sites. Josh explains how they worked with the Azure Web Sites team to get sandboxing. They're running on a special version of the Azure Web Sites system that's specially tuned for their services.</li>
	<li>Jon asks about scaling with Azure Mobile Services. Josh educates Jon on some Azure basics he really should know.</li>
</ul>
</li>
	<li>Jon asks Josh about how listeners can get started.
<ul>
	<li>Josh list the link: <a title="http://aka.ms/mobileservices" href="http://aka.ms/mobileservices">http://aka.ms/mobileservices</a></li>
	<li>Josh and Jon joke about the todo list quickstart challenge. Josh says new users should be able to have an application running in under 5 minutes, and Jon says he was impressed with Josh's performance on Cloud Cover: 2:03 despite heckling.</li>
</ul>
</li>
</ul>
Show Links:
<ul>
	<li>Josh Twist (<a href="http://www.thejoyofcode.com/">blog</a>, <a href="https://twitter.com/joshtwist">@joshtwist</a>)</li>
	<li><a title="Azure Mobile Services - free trial" href="http://aka.ms/azuremobile-hc">Azure Mobile Services - free trial</a></li>
	<li><a href="http://blog.stevensanderson.com/">Steve Sanderson</a></li>
	<li><a href="http://channel9.msdn.com/Shows/Cloud+Cover/Episode-89-Windows-Azure-Mobile-Services">Cloud Cover Episode 89 - Windows Azure Mobile Services</a></li>
	<li>Blog post by Filip W. (StrathWeb): <a href="http://www.strathweb.com/2012/09/using-azure-mobile-services-in-your-web-apps-through-asp-net-web-api/">Using Azure Mobile Services in your web apps through ASP.NET Web API</a></li>
	<li>Web Camps TV interview: <a href="http://channel9.msdn.com/Shows/Web+Camps+TV/What-Mobile-Services-Mean-to-the-Web-Developer">What Mobile Services Mean To The Web Developer</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0152-Josh-Twist.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 151 - Rob Eisenberg on RPGWithMe, Durandal, and XAML vs. HTML5 development</title>
    <link>https://herdingcode.com/herding-code-151-rob-eisenberg-on-rpgwithme-durandal-and-xaml-vs-html5-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-151-rob-eisenberg-on-rpgwithme-durandal-and-xaml-vs-html5-development/</guid>
    <pubDate>Mon, 17 Sep 2012 21:33:36 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Rob Eisenberg about RPGWithMe (his new web-based platform centered around tabletop RPGs), Durandal (the essence of Caliburn.Micro re-imagined for HTML and Javas</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 151</strong></p>
<p>The guys talk to Rob Eisenberg about RPGWithMe (his new web-based platform centered around tabletop RPGs), Durandal (the essence of Caliburn.Micro re-imagined for HTML and Javascript) and his thoughts on the current state of XAML development.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0151-Rob-Eisenberg.mp3">Herding Code 151 - Rob Eisenberg on RPGWithMe, Durandal, and XAML vs. HTML5 development</a> </p>  <p>Show Notes:</p>  <ul>   <li>RPGWithMe and Durandal      <ul>       <li>K Scott asks Rob to discribe RPGWithMe. RPGWithMe is a subscription based web product for playing tabletop RPGs. </li>        <li>K Scott asks how he found HTML5&#160; compared to XAML development, and whether he used any frameworks to develop it. Rob explains how he built a new framework, Duandel, to bring Caliburn.Micro style development to HTML5 development. </li>        <li>Rob explains how Durandal uses&#160; RequireJS to modularize things - viewmodels are mapped to modules, and modules are mapped to HTML files. Knockout is used to compose things at runtime, and RequireJS packages things up into a single file. </li>        <li>Jon asks it it's possible to use this with WinRT. Rob says he hasn't tried it, but thinks it should work since it's just a JavaScript file. </li>        <li>K Scott asks if the same conventions in Caliburn.Micro apply. Rob says he's just using Knockout at this point, but would eventually like to phase out Knockout for a custom databinding system. Knockout's fine, but he doesn't like the syntax for databinding and the intrusiveness into viewmodels. </li>        <li>K Scott, Rob and Kevin talk about the intrusiveness of Javascript frameworks which convert properties to functions to allow for observability, and how newer browsers can wrap getters and setters to imporove the code readability and debugging experience. </li>        <li>K Scott asks whats on the server side. Rob's using ASP.NET MVC 3 running on AppHarbor with cloud hosted RavenDB with IronMQ and some Amazon services. </li>        <li>K Scott asks how all the realtime stuff is working in the browser. Rob's using PubNub for communications and Canvas and CSS 3 for rendering. He explains that it's really tricky to get high performance, high quality graphics rendering working on different devices with an interesting example form an issue he hit with larger images on iPads. </li>        <li>Jon asks if there's work he'd do in the future to support Retina / high dpi displays. He says he's moving away from images to CSS 3 where possible. </li>        <li>Jon asks about the creation / editing environment. Rob explains how the system is built around user generated content. Jon asks if there are ways </li>        <li>K Scott asks what games Rob's played in the past. Rob says he's played Dungeons and Dragons 4th Edition and Savage Worlds and explains some of the background of tabletop role playing games. He supports three gaming systems, but doesn't enforce rules - this allows for a lot more flexibility and matches the way people play in the real world. </li>        <li>K Scott asks about how players would communicate while playing (e.g. to yell <a href="http://www.youtube.com/watch?v=uVZ50qAQrpc">Leroy Jenkins</a>!). </li>        <li>Jon asks more about rules and enforcement, and Rob lists a lot of reasons why he doesn't think it's a good idea to get into rule enforcement. </li>        <li>K Scott asks about how the metadata is handled. Rob describes how he's got an abstract model that allows for supporting - and importing from - three gaming systems, and how he wants to make it more extensible in the future. </li>        <li>Kevin asks if there's a mobile version. Rob talks about platform support - works on iPad, Windows 8, and Android although Android performance is the worst. </li>        <li>K Scott asks about the Durandal project out on GitHub. </li>     </ul>   </li>    <li>Caliburn and Caliburn.Micro      <ul>       <li>K Scott asks Rob what's going on with Caliburn and Caliburn.Micro. Caliburn.Micro is adding full support for WinRT and considering how to add support for additional WinRT features. He said he was worried about porting to WinRT but it wasn't too bad - most of the work was around changes to the reflection API and lack of behaviors. He's hopeful that this means it'll port to Windows Phone 8. </li>     </ul>   </li>    <li>XAML and HTML5 development      <ul>       <li>Kevin asks about Rob's frustration on building tools for XAML development due to the differences between the platforms. Rob says he's been moving to HTML5 more due to all the headaches. </li>        <li>Jon wonders if some of this may be transitional with things moving to WinRT as a standard XAML platform. Rob agrees, but he's got from fatigue from all the times he's had to port his code in the past. </li>        <li>Jon says that it's nice that in the HTML5 world you can use tools like jQuery to abstract differences between browsers, whereas you can't really do that when working about different XAML platforms. Rob talks about how people are trying to abstract things in the XAML world, but it's not really possible to abstract platform differences. </li>        <li>Jon, Kevin and Rob discuss the differences between styling in XAML and HTML5 development. </li>        <li>Jon asks Rob about the developer decision between HTML5 and XAML for WinRT development. Rob's happy with the choice, and thinks it's funny that Microsoft did this rather than Google. </li>     </ul>   </li>    <li>K Scott asks Rob if there's any new big things going on he wants people to know about, and Rob mentions the Kickstarter effort to add interactive character sheets. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Rob Eisenberg (<a href="http://devlicio.us/blogs/rob_eisenberg/">blog</a>, <a href="https://twitter.com/eisenbergeffect">@eisenbergeffect</a>) </li>    <li>Blog post: <a href="http://devlicio.us/blogs/rob_eisenberg/archive/2012/08/02/today-all-your-wildest-dreams-come-true.aspx">Today..All Your Wildest Dreams Come True</a> </li>    <li><a title="https://github.com/EisenbergEffect/Durandal" href="https://github.com/EisenbergEffect/Durandal">https://github.com/EisenbergEffect/Durandal</a> </li>    <li><a href="http://www.pubnub.com/">PubNub</a> </li>    <li><a href="https://appharbor.com/">AppHarbor</a> </li>    <li><a href="http://knockoutjs.com/">Knockout</a> </li>    <li><a href="http://caliburnmicro.codeplex.com/SourceControl/list/changesets">Caliburn.Micro changeset adding WinRT support</a> </li>    <li>Kickstarter: <a href="http://www.kickstarter.com/projects/eisenbergeffect/rpgwithme-create-characters-for-your-tabletop-rpg">RPGWithMe: Create Characters for Your Tabletop RPG</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0151-Rob-Eisenberg.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 150 - David Starr on the People, Practices, and Tools of Development</title>
    <link>https://herdingcode.com/herding-code-150-david-starr-on-the-people-practices-and-tools-of-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-150-david-starr-on-the-people-practices-and-tools-of-development/</guid>
    <pubDate>Fri, 07 Sep 2012 17:46:44 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to David Starr about how people, practices and tools factor into software development. Can developer tooling be part of the solution rather than part of the proble</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 150</strong></p>
The guys talk to David Starr about how people, practices and tools factor into software development. Can developer tooling be part of the solution rather than part of the problem? What's the state of Scrum? How does Nascar fit in?

Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0150-David-Starr.mp3">Herding Code 150 - David Starr on the People, Practices, and Tools of Development</a> 

Show Notes:
<ul>
	<li>From Nascar to Scrum.org to Microsoft
<ul>
	<li>K Scott outs David as a developer of the original NASCAR site.</li>
	<li>David's been working with Scrum.org but just took a job at Microsoft in the Visual Studio team as a senior PM based on his interest in executable specifications.</li>
	<li>K Scott asks David about his thoughts based on working with Scrum.org. David sees Scrum as nearly ubiquitous, but most just use it as a way to manage daily checklists rather than effect broader change.</li>
</ul>
</li>
	<li>SubSpec and executable specifications
<ul>
	<li>K Scott asks David about his recent post on SubSpec and how it compares to SpecFlow.</li>
</ul>
</li>
	<li>Software code of ethics
<ul>
	<li>K Scott asks David about his post thinking about a professional code of ethics for software development.</li>
	<li>David thinks it would be nice if we had a profession.</li>
	<li>Jon asks if this kind of approach is even relevant to a lot of most software developers.</li>
	<li>Scott K mentions a discussion on the show a few years ago about board certification but wonders who would run it.</li>
	<li>David says that any certification offered by a tool vendor or methodology proponent is worthless.</li>
	<li>Scott K asks if there's any overarching certifiable skills that bridge Ruby, Scala, Java, .NET, architecture, development, etc. David says that in other trades it's unions that push things, but doesn't want that in the software world.</li>
	<li>Jon says that he sees so much disagreement on values between languages and methodologies that he wonders if our profession could agree on anything at all.</li>
	<li>Scott K asks if software really is a craft, as he doesn't  see beauty in code. David says he doesn't see code as words but as shapes. Scott K, David and Jon discuss where the beauty really is - perhaps not the code, but the result.</li>
</ul>
</li>
	<li>Jon asks how these discussions and values tie into Visual Studio tooling.
<ul>
	<li>David says that tooling is a great way to take the kinds of things bleeding edge developers are excited about and turn them into things that are accepted and used by the broader community - as long as the hierarchy of people over process and process over tools is respected, it's a great idea to make better tools.</li>
	<li>Scott K asks what he sees are the most important things to fix in the tooling. David says he'd like to see development teams modeled as teams rather than differing roles. He'd like to improve the experience for the "specializing generalist."</li>
	<li>David says that he sees the tools making the rules in the real world, and if the tools are counter to our value systems we should change that.</li>
	<li>Scott K says people might just be fooling lights to green and David says that's a fireable offence. Jon asks if it's possible to automate that by integrating TFS with Microsoft CRM.</li>
</ul>
</li>
	<li><a href="https://twitter.com/codereflection">Jeff Schumacher</a> asks if he still has the awesome fire shoes.</li>
	<li><a href="https://twitter.com/thecodejunkie">The Code Junkie</a> asks why someone should pick TFS over the other options when doing agile / scrum.</li>
	<li><a href="https://twitter.com/brianlagunas">Brian Lagunas</a> asks  what are the downsides of TDD.</li>
	<li>There is a frightening discussion of a theoretical XamlSpec testing framework.</li>
	<li>Scrum effectiveness
<ul>
	<li><a href="https://twitter.com/stack72">Paul Stack</a> whether scrum has become a make believe methodology companies use to pretend they're agile.</li>
	<li>David says methodologies are always abused. He likes to tell people to try scrum by the book for a few months before making changes or compromises. Jon says every company wants to believe they're different, and that's rarely something to cling to.</li>
	<li>Scott K says he sees people focusing on tooling and this leads to "scrumbut" - the practice of doing scrum, but... David says he really tries to avoid that term - scrum is a tool.</li>
	<li>Kevin says he sees Scrum as a project management methodology as opposed to XP which also focuses on the engineering side. David says that you can't be successful separating Scrum from good technical practices.</li>
</ul>
</li>
	<li>David talks about his last user group presentation before moving, says he's not going to be travelling as much in the near future, and conversation drifts back to XamlSpec as the most useful result of this discussion.</li>
</ul>
Show Links:
<ul>
	<li>David Starr (<a href="http://elegantcode.com/author/dstarr/">blog</a>, <a href="https://twitter.com/elegantcoder">@elegantcoder</a>)</li>
	<li><a href="http://web.archive.org/web/19961111213031/http://www.nascar.com/">Nascar.com</a> in the internet archive</li>
	<li><a href="http://scrum.org/">Scrum.org</a></li>
	<li><a href="http://elegantcode.com/2012/06/03/subspec/">SubSpec</a></li>
	<li><a href="http://www.specflow.org/specflownew/">SpecFlow</a></li>
	<li><a href="http://en.wikipedia.org/wiki/Redwood_City,_California#Largest_employers">Redwood City, CA</a></li>
	<li>David's blog post: <a href="http://elegantcode.com/2012/06/03/subspec/">SubSpec</a></li>
	<li>David's blog post: <a href="http://elegantcode.com/2012/04/18/software-professional-code-of-ethics/">Software Professional Code of Ethics</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0150-David-Starr.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 149 - What I Did With My Summer Vacation</title>
    <link>https://herdingcode.com/herding-code-149-what-i-did-with-my-summer-vacation/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-149-what-i-did-with-my-summer-vacation/</guid>
    <pubDate>Thu, 30 Aug 2012 22:03:29 GMT</pubDate>
    <description><![CDATA[<p>The guys check in after a summer hiatus with a discussion covering travel, books, e-book readers, two factor authentication, Windows 8, OSX Mountain Lion, and hover cranes. Down</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 149</strong></p>
<p>The guys check in after a summer hiatus with a discussion covering travel, books, e-book readers, two factor authentication, Windows 8, OSX Mountain Lion, and hover cranes.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0149-What-I-did-with-my-summer-vacation.mp3">Herding Code 149 - What I Did With My Summer Vacation</a> </p>  <p>Show Notes:</p>  <ul>   <li>Travel</li>    <ul>     <li>Jon asks starts by asking where everyone's been travelling to over the summer. </li>      <li>K. Scott's basically a European at this point.</li>      <li>Jon went to Oslo, Buenos Aires, Sao Paulo, Redmond, and rural New Jersey, and Kevin survived a road trip with kids thanks to iPads. Jon really liked Buenos Aires. He talks about his Web Camps presentations in South America, including a Windows Azure Web Sites talk where he builds and deploys a classic ASP app via FTP, ASP.NET / SignalR app via Visual Studio Web Deploy, a Node.js app via git publish, and a WordPress site via WebMatrix deploy in one hour. He's amazed by how translators can listen to obscure technical jargon and speak in another language at the same time, including prompts about when the audience should politely laugh at a failed joke.</li>      <li>Kevin survived a road trip with kids thanks to iPads. </li>   </ul>    <li>e-book reading devices</li>    <ul>     <li>Scott K has been running the CyanogenMod Android ROM on his Nook Color.</li>      <li>There's some discussion on the benefit of a 7&quot; form factor device and rumors about a 7-ish iDevice on the way.</li>      <li>Jon and Kevin love their Kindles, and Scott K talks about what he likes about the Nook Color.</li>      <li>Scott K mentions O'Reilly's Bookworm site, which was sadly closed down as of March 31.</li>      <li>Jon has stayed with the Kindle eInk devices for the read aloud support, which is sadly missing on all the other top ebook devices. Kevin like the long battery life.</li>   </ul>    <li>Book Reports</li>    <ul>     <li>Jon kicks off book report time mentioning <a href="http://www.amazon.com/gp/product/B0051QNLWW/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0051QNLWW&amp;linkCode=as2&amp;tag=jongall-20">The Door into Summer</a> and <a href="http://www.amazon.com/gp/product/0385495323/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385495323&amp;linkCode=as2&amp;tag=jongall-20">The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography</a></li>      <li>Scott K has been reading <a href="http://www.amazon.com/gp/product/B007978NU6/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B007978NU6&amp;linkCode=as2&amp;tag=jongall-20">The Hobbit: 75th Anniversary Edition</a> and <a href="http://www.amazon.com/gp/product/B004WEQVDK/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B004WEQVDK&amp;linkCode=as2&amp;tag=jongall-20">The Geeks Shall Inherit the Earth: Popularity, Quirk Theory, and Why Outsiders Thrive After High School</a>.</li>      <li>Kevin read <a href="http://www.amazon.com/gp/product/B000FBJCJE/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000FBJCJE&amp;linkCode=as2&amp;tag=jongall-20">Snow Crash</a> and <a href="https://www.amazon.com/dp/B003G4W49C/ref=as_li_ss_til?tag=jongall-20&amp;camp=0&amp;creative=0&amp;linkCode=as4&amp;creativeASIN=B003G4W49C&amp;adid=1R1DPNQN44H34EC6BWPJ&amp;">Ender's Game</a></li>      <li>Jon kind of liked <a href="http://www.amazon.com/gp/product/B004XVN0WW/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B004XVN0WW&amp;linkCode=as2&amp;tag=jongall-20">Reamde: A Novel</a> but doesn't like it as much as <a href="http://www.amazon.com/gp/product/B000FC11A6/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000FC11A6&amp;linkCode=as2&amp;tag=jongall-20">Cryptonomicon</a>.</li>   </ul>    <li>Geek Travel Tips</li>    <ul>     <li>Jon and K. Scott use a checklist to make sure they don't forget important things like chargers and adapters.</li>      <li>K. Scott doesn't assume anything and keeps a small bit of foreign cash handy.</li>      <li>Jon and K. Scott both really like TripIt.</li>      <li>Jon talks about how he handled a cancelled flight to Buenos Aires by calling in (rather than waiting in line) and being nice.</li>      <li>Jon and K. Scott both avoid checking bags when possible.</li>   </ul>    <li>Two factor authentication. </li>    <ul>     <li>Jon tells the story about how Mat Honan's account was hacked.</li>      <li>The guys talk about how Google Two Factor Auth works for them.</li>      <li>Jon saw an interesting tip: use a separate e-mail account for password recovery.</li>      <li>Everyone complains about two factor auth's usability and hopes it gets easier.</li>   </ul>    <li>K. Scott talks about how Internet Explorer 10 will have Do Not Track on by default. The guys talk about their thoughts on targeted ads and tracking: a little is good, too much gets creepy.</li>    <li>Jon's using Windows 8 RTM. </li>    <ul>     <li>The guys discuss the user interface and discoverability. Scott K worries that nobody will be able to shut their computers off.</li>      <li>Jon likes the fast install and lock screen. Scott K talks about problems with face recognition login, but it looks like that was removed before RTM.</li>   </ul>    <li>OSX Mountain Lion</li>    <ul>     <li>Jon asks what the guys think about the change OSX so that Save As also saves over the original file. Kevin talks about some of the things he like in Mountain Lion.</li>      <li>Jon and Kevin discuss the different ways the Windows and Mac communities react to changes.</li>      <li>Jon asks about AirPlay and complains that it's difficult to stream audio from one device to another.</li>      <li>Kevin talks about the notification system.</li>      <li>Jon asks about updates to connectors.</li>   </ul>    <li>Gold Medal or Martian Hover Crane?</li>    <ul>     <li>Unanimous love for the hover crane</li>      <li>This reminds the guys of a few more books: <a href="http://www.amazon.com/gp/product/0226458083/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0226458083&amp;linkCode=as2&amp;tag=jongall-20">The Structure of Scientific Revolutions</a> and <a href="http://www.amazon.com/gp/product/0385530803/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385530803&amp;linkCode=as2&amp;tag=jongall-20">Physics of the Future: How Science Will Shape Human Destiny and Our Daily Lives by the Year 2100</a></li>   </ul> </ul>  <p>Show Links:</p>  <ul>   <li>&#160;<a href="http://bookworm.oreilly.com/">http://bookworm.oreilly.com/</a></li>    <li>Books</li>    <ul>     <li><a href="http://www.amazon.com/gp/product/B0051QNLWW/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0051QNLWW&amp;linkCode=as2&amp;tag=jongall-20">The Door into Summer</a></li>      <li><a href="http://www.amazon.com/gp/product/0385495323/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385495323&amp;linkCode=as2&amp;tag=jongall-20">The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography</a></li>      <li><a href="http://www.amazon.com/gp/product/B007978NU6/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B007978NU6&amp;linkCode=as2&amp;tag=jongall-20">The Hobbit: 75th Anniversary Edition</a> </li>      <li><a href="http://www.amazon.com/gp/product/B004WEQVDK/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B004WEQVDK&amp;linkCode=as2&amp;tag=jongall-20">The Geeks Shall Inherit the Earth: Popularity, Quirk Theory, and Why Outsiders Thrive After High School</a></li>      <li><a href="http://www.amazon.com/gp/product/B000FBJCJE/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000FBJCJE&amp;linkCode=as2&amp;tag=jongall-20">Snow Crash</a> </li>      <li><a href="https://www.amazon.com/dp/B003G4W49C/ref=as_li_ss_til?tag=jongall-20&amp;camp=0&amp;creative=0&amp;linkCode=as4&amp;creativeASIN=B003G4W49C&amp;adid=1R1DPNQN44H34EC6BWPJ&amp;">Ender's Game</a> </li>      <li><a href="http://www.amazon.com/gp/product/B004XVN0WW/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B004XVN0WW&amp;linkCode=as2&amp;tag=jongall-20">Reamde: A Novel</a> </li>      <li><a href="http://www.amazon.com/gp/product/B000FC11A6/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000FC11A6&amp;linkCode=as2&amp;tag=jongall-20">Cryptonomicon</a></li>      <li><!--EndFragment--><a href="http://www.amazon.com/gp/product/0226458083/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0226458083&amp;linkCode=as2&amp;tag=jongall-20">The Structure of Scientific Revolutions</a>&#160;</li>      <li><a href="http://www.amazon.com/gp/product/0385530803/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385530803&amp;linkCode=as2&amp;tag=jongall-20">Physics of the Future: How Science Will Shape Human Destiny and Our Daily Lives by the Year 2100</a></li>   </ul>    <li>Mat Honan's post: <a href="http://www.emptyage.com/post/28679875595/yes-i-was-hacked-hard">Yes, I was hacked. Hard.</a></li>    <li>Matt Cutts: <a href="http://www.mattcutts.com/blog/google-two-step-authentication/">Please turn on two-factor authentication</a></li>    <li>IE 10 Do Not Track post: <a href="http://www.zdnet.com/blog/btl/microsoft-to-advertisers-drop-dead/78811">Microsoft to advertisers: Drop dead</a></li>    <li><a href="http://nbergus.com/2012/02/how-i-became-amazons-pitchman-for-a-55-gallon-drum-of-personal-lubricant-on-facebook/">How I became Amazon's pitchman for a 55-gallon drum of personal lubricant on Facebook</a></li>    <li><a href="http://macperformanceguide.com/MountainLion-SaveAs-data-destruction.html">OS X Mountain Lion: Data Loss via 'Save As'</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0149-What-I-did-with-my-summer-vacation.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 148 - Chris Hardy on Xamarin, MonoTouch and Mono For Android</title>
    <link>https://herdingcode.com/herding-code-148-chris-hardy-on-xamarin-monotouch-and-mono-for-android/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-148-chris-hardy-on-xamarin-monotouch-and-mono-for-android/</guid>
    <pubDate>Fri, 24 Aug 2012 00:04:29 GMT</pubDate>
    <description><![CDATA[<p>Here&apos;s the last of K. Scott and Jon&apos;s interviews from NDC Oslo 2012: a conversation with Chris Hardy about Xamarin, MonoTouch, Mono For Android, and mobile development. Download</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 148</strong></p>
<p>Here's the last of K. Scott and Jon's interviews from NDC Oslo 2012: a conversation with Chris Hardy about Xamarin, MonoTouch, Mono For Android, and mobile development.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0148-Chris-Hardy.mp3">Herding Code 148 - Chris Hardy on Xamarin, MonoTouch and Mono For Android</a> </p>  <p>Show Notes:</p>  <ul>   <li>Jon asks Chris what he does at Xamarin. </li>    <li>Jon asks about how the development experience works when building an application using Xamarin products and targeting multiple platforms (e.g. iOS and Android) </li>    <li>Chris talks about how developers create the user interface layers - either using XCode, or just building the UI in code. He mentions PaintCode as a generator for user interface code. </li>    <li>K. Scott asks about the process of sharing logic and service code between platforms. </li>    <li>K. Scott asks how iOS and Android can call back into Mono code. </li>    <li>Jon asks about the installation experience for setting up all of the Android development dependencies. </li>    <li>Chris mentions that MonoDevelop supports Android UI design. </li>    <li>K. Scott asks about interesting things people have built with Xamarin. Chris mentions rdio and iCircuit. </li>    <li>Jon asks how developers handle platform specific issues while developing. Chris mentions several options for sharing code between platforms. </li>    <li>Jon asks how things are working under the hood - is IL being deployed? Is anything being JITted? </li>    <li>Jon asks about his opinion as a developer who works on all the main mobile platforms. Chris says he loves his iOS devices, but is interested in Windows 8. </li>    <li>Jon asks about Chris' thoughts on the publishing process between platforms. </li>    <li>Jon asks about the debugging experience - are you using emulators? How do they work? Do you get realtime debugging? </li> </ul>  <p>Show Links:</p>  <ul>   <li>Chris Hardy (<a href="http://weblogs.asp.net/chrishardy/">blog</a>, <a href="https://twitter.com/chrisntr">@ChrisNTR</a>) </li>    <li><a href="http://xamarin.com/">Xamarin</a> </li>    <li><a href="http://xamarin.com/monotouch/">MonoTouch</a> </li>    <li><a href="http://xamarin.com/monoforandroid">Mono For Android</a> </li>    <li><a href="http://www.paintcodeapp.com/">PaintCode</a>&#160; </li>    <li><a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx">Portable Class Libraries in .NET</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0148-Chris-Hardy.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 147 - Jakob Bradford on Organizing NDC Oslo</title>
    <link>https://herdingcode.com/herding-code-147-jakob-bradford-on-organizing-ndc-oslo/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-147-jakob-bradford-on-organizing-ndc-oslo/</guid>
    <pubDate>Tue, 21 Aug 2012 23:56:41 GMT</pubDate>
    <description><![CDATA[<p>While at NDC 2012 in Oslo, Jon and K. Scott talked to Jakob Bradford about how the event was organized. Herding Code 147 - Jakob Bradford on Organizing NDC Os</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 147</strong></p>
<p>While at NDC 2012 in Oslo, Jon and K. Scott talked to Jakob Bradford about how the event was organized.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0147-Jakob-Bradford.mp3">Herding Code 147 - Jakob Bradford on Organizing NDC Oslo</a> </p>  <p>Show Notes:</p>  <ul>   <li>Jon asks how NDC got started and how it's grown. </li>    <li>K. Scott says that other conferences feel like they're organized to solve organizers' problems, while NDC is organized around the attendee experience. Jakob says that's very intentional. </li>    <li>Jon asks how they balance a big conference feel (as NDC continues to grow) while maintaining a personal feel. </li>    <li>K. Scott asks for an inside scoop - what were the biggest disasters, or almost disasters? Answer: volcanoes!</li>    <li>Jon talks about how much he likes the Overflow (a.k.a. ADD room) and asks how that got started. Jakob said that's how conferences are done in Norway. </li>    <li>K. Scott asks about Aral's keynote, which began with a musical number. </li>    <li>Jon asks about how they select speakers and content. </li>    <li>Jon asks about the pre-conference workshops (in the tallest building in Norway!) </li>    <li>The entire conference is recorded, available on Vimeo. Jakob says that's how they get most of their attendees - &quot;Watch the videos a couple years... you will come!&quot; </li> </ul>  <p>Show Links:</p>  <ul>   <li>Jakob Bradford <a href="http://twitter.com/jakbradf">@jakbradf</a> </li>    <li><a href="http://ndcoslo.com/">NDC Oslo</a> </li>    <li><a href="http://www.programutvikling.no/">ProgramUtvikling</a> </li>    <li><a href="http://vimeo.com/ndcoslo/videos">NDC Oslo sessions on Vimeo</a> </li>    <li><a href="http://www.photosynth.net/view.aspx?cid=c7c77b32-62d7-4e29-b8e9-e8c2f42ea6da">Photosynth showing the NDC Overflow Room</a></li>    <li><a href="http://ndcoslo.oktaset.com/p-371">K. Scott Allen's NDC sessions</a></li>    <li><a href="http://ndcoslo.oktaset.com/p-2778">Jon Galloway's NDC sessions</a></li> </ul>  <p>The NDC Overflow room:</p>  <p>&#160;<iframe height="300" src="http://www.photosynth.net/embed.aspx?cid=c7c77b32-62d7-4e29-b8e9-e8c2f42ea6da&amp;delayLoad=true&amp;slideShowPlaying=false" frameborder="0" width="500"></iframe></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0147-Jakob-Bradford.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 146 - Shay Friedman on Roslyn, IronRuby and the DLR</title>
    <link>https://herdingcode.com/herding-code-146-shay-friedman-on-roslyn-ironruby-and-the-dlr/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-146-shay-friedman-on-roslyn-ironruby-and-the-dlr/</guid>
    <pubDate>Fri, 03 Aug 2012 07:25:22 GMT</pubDate>
    <description><![CDATA[<p>While at NDC 2012 in Oslo, Jon and K. Scott talked to Shay Friedman about Roslyn, IronRuby, and the DLR. Herding Code 146 - Shay Friedman on Roslyn, IronRuby,</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 146</strong></p>
<p>While at NDC 2012 in Oslo, Jon and K. Scott talked to Shay Friedman about Roslyn, IronRuby, and the DLR.</p>  <p>Download / Listen:</p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0146-Shay-Friedman.mp3">Herding Code 146 - Shay Friedman on Roslyn, IronRuby, and the DLR</a> </p>  <p>Show Notes:</p>  <ul>   <li>K. Scott asks Shay about the what he covered in his &quot;What? C# Could Do That?&quot; talk. Shay mentions dynamic capabilities, the DLR, and Roslyn.</li>    <li>K. Scott asks Shay to explain Roslyn. Shay explains how Roslyn works as a very configurable compiler and talks about how his demonstration showed creating a new language keyword.</li>    <li>Jon asks if it's possible to build out significant parts of a language with Roslyn. Shay says you'd really use it to extend C# - but there's more to it than that. He talks about CSX (scripting with C#), C# REPL, and changes to the IDE experience that are now available due to having a much better compiler.</li>    <li> K. Scott asks if it's shipping in Visual Studio 2012. Shay says that it's a CTP, but it's avialable for both Visual Studio 2010 and 2012.</li>    <li>Jon asks for Shay to talk more about metaprogramming. Shay explains more about what could be done with this - for instance, an ORM could could add in specialized language support.</li>    <li>K. Scott asks about the state of IronRuby. Shay says that it's still active, it's ignored by the Ruby community, but it has a lot of great applications - for instance, allowing users to write simple business rules in Ruby, and loading Ruby Gems in .NET applications.</li>    <li>Jon asks if Shay uses the DLR separately from IronRuby and IronPython. Shay mentions some examples like IronJS, Scheme, LUA and LOLCODE. The DLR is built into .NET framework, so it's not going anywhere.</li>    <li>Jon asks about how dynamic objects function differently than other C# objects. Shay explains it's basically an object, but it's all executed at runtime.</li> </ul>  <p>Show Links:</p>  <ul>   <li>Shay Friedman <a href="http://ironshay.com/">blog</a>&#160;<a href="http://twitter.com/ironshay">@ironshay</a> </li>    <li><a href="http://vimeo.com/43676959">NDC 2012 &quot;What? C# Could Do That???&quot; - video</a></li>    <li><a href="http://vimeo.com/43536444">NDC 2012 &quot;Roslyn hmmmmm WHAT?&quot; - video</a>&#160;</li>    <li><a href="http://ironshay.com/post/Sample-Code-from-my-e2809cWhat!-C-Could-Do-That!e2809d-Session.aspx">Sample code from Shay's talk</a></li>    <li><a href="http://msdn.microsoft.com/en-us/vstudio/hh543936">Roslyn on MSDN</a></li>    <li><a href="http://www.ironruby.net/">IronRuby</a></li>    <li><a href="https://github.com/fholm/IronJS">IronJS</a></li>    <li><a href="http://lolcode.com/">LOLCODE</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0146-Shay-Friedman.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 145 - NDC Cage Match with Rob Conery (node.js/socket.io) and Damian Edwards (SignalR)</title>
    <link>https://herdingcode.com/herding-code-145-ndc-cage-match-with-rob-conery-node-jssocket-io-and-damian-edwards-signalr/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-145-ndc-cage-match-with-rob-conery-node-jssocket-io-and-damian-edwards-signalr/</guid>
    <pubDate>Thu, 28 Jun 2012 14:22:52 GMT</pubDate>
    <description><![CDATA[<p>While at NDC 2012 in Oslo, Jon MC&apos;d a Cage Match between Rob Conery (Node.js and socket.io) and Damian Edwards (ASP.NET and SignalR). Immediately after the cage match ended, Jon</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 145</strong></p>
<p>While at NDC 2012 in Oslo, Jon MC'd a Cage Match between Rob Conery (Node.js and socket.io) and Damian Edwards (ASP.NET and SignalR). Immediately after the cage match ended, Jon and K. Scott caught up with them to talk about the similarities and differences between these development stacks.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0145-NDC-Cage-Match-with-Rob-Conery-and-Damian-Edwards-update.mp3">Herding Code 145 - NDC Cage Match with Rob Conery (node.js/socket.io) and Damian Edwards (SignalR)</a>    <p>Show Notes:</p>  <ul>   <li>Jon asks Damian how he'd summarize the distinguishing features. Damian says they're very similar feature-wise, and it comes down to how you want to develop. Rob says the main difference for him is that node+socket.io is all Javascript, which has pros and cons. </li>    <li>Jon recalls a part in the cage match where Rob talked about invoking Javascript methods on the client and asks Damian if SignalR can do something similar. Damian talks about how SignalR's hubs can also invoke dynamic client methods. </li>    <li>Jon asks Rob about WebSocket support and fallback to older alternatives. Rob and Damian both discuss the fallback methods. </li>    <li>Rob asks Damian about confirmation and callback support in SignalR. Damian explains how that works with jQuery promises in the Javascript client. Rob asks for more info about how SignalR pushes content to the client, and Damian talks about the use of JSON. </li>    <li>Jon asks about the differences in development stacks. </li>    <li>K. Scott asks about what was actually built during the presentation. Rob and Damian talk about what they built in the time available. Rob was wanting to use Backbone if time permitted. Damian says he generally uses simple HTML for many cases. </li>    <li>Damian calls out a future feature they're working on for SignalR that adds something like an Update Panel for Web Forms using SignalR. </li>    <li>Rob talks about the synchronization feature Backbone uses with SignalR and tells Damian they should add something similar to </li>    <li>Jon asks if Rob and Damian are &quot;web scale.&quot; Rob talks about how he load tested using NodeLoad. Damian talks about how he tested using Flywheel and WCAT. Damian says they've been able to get great throughput out of SignalR and how they're moving to some custom data structures to possibly double or triple capacity in SignalR 0.6. </li>    <li>Rob thinks it's interesting the SignalR can run outside of ASP.NET, and Damian talks about the hosting models for SignalR. </li>    <li>Jon asks about some of the differences in development. Rob talks about the Node module ecosystem, Damian calls out some of the advantages of using .NET on the server. </li>    <li>SignalR runs on Mono. </li>    <li>K. Scott asks what the future holds for SignalR. Damian talks about 0.6, calling out future performance enhancements in the in-memory message store and standardizing on OWIN as the hosting layer. In version 1, they're looking at the client story, low level transport, cross-domain support, and more. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Rob Conery <a href="http://wekeroad.com/">blog</a> <a href="https://twitter.com/#!/robconery">Twitter</a> </li>    <li>Damian Edwards <a href="http://damianedwards.wordpress.com/">blog</a> <a href="https://twitter.com/#!/damianedwards">Twitter</a> </li>    <li><a href="http://ndcoslo.oktaset.com/t-7919">NDC 2012 Cage Match - video</a></li>    <li><a href="http://nodejs.org/">Node.js</a> </li>    <li><a href="http://socket.io">socket.io</a> </li>    <li><a href="http://signalr.net">SignalR</a> </li>    <li><a href="http://api.jquery.com/promise/">jQuery promise interface</a> </li>    <li><a href="https://github.com/SignalR/flywheel">flywheel</a> </li>    <li><a href="https://github.com/benschmaus/nodeload#readme">nodeload</a> </li>    <li><a href="http://www.iis.net/community/default.aspx?tabid=34&amp;g=6&amp;i=1466">Web Capacity Analysis Tool (WCat)</a> </li>    <li><a href="http://www.hanselman.com/blog/SolvingTheShakespeareMillionMonkeysProblemInRealtimeWithParallelismAndSignalR.aspx">Scott Hanselman's Million Monkeys in SignalR</a> </li>    <li><a href="http://owin.org/">Open Web Interface for .NET (OWIN)</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0145-NDC-Cage-Match-with-Rob-Conery-and-Damian-Edwards-update.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 144 - GitHub for Windows with Tim Clem, Paul Betts and Phil Haack</title>
    <link>https://herdingcode.com/herding-code-144-github-for-windows-with-tim-clem-paul-betts-and-phil-haack/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-144-github-for-windows-with-tim-clem-paul-betts-and-phil-haack/</guid>
    <pubDate>Fri, 15 Jun 2012 15:06:24 GMT</pubDate>
    <description><![CDATA[<p>In this episode, the guys talk to Tim Clem, Paul Betts and Phil Haack about GitHub for Windows. Herding Code 144 - GitHub for Windows with Tim Clem, Paul Bett</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 144</strong></p>
<p>In this episode, the guys talk to Tim Clem, Paul Betts and Phil Haack about GitHub for Windows. </p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0144-GitHub-for-Windows.mp3">Herding Code 144 - GitHub for Windows with Tim Clem, Paul Betts and Phil Haack</a>    <p>Show Notes:</p>  <ul>   <li>The guys start off talking about why there is a need for GitHub for Windows. </li>    <li>Kevin asks if GitHub for Windows can be used as a client for other Git hosts. </li>    <li>Kevin asks for an overview of GitHub for Windows and if it is similar to GitHub for Mac. </li>    <li>Jon asks what they did to make the install process so smooth. </li>    <li>K. Scott asks what technologies were used to build it. </li>    <li>Scott asks about the features that GitHub has that are missing from GitHub for Windows. </li>    <li>The guys discuss the decision to use WPF, which leads into a discussion about developer and designer interaction. </li>    <li>The guys talk about Metro UI. </li>    <li>Jon asks about the install and update process. </li>    <li>Kevin asks Phil about his transition from web development to desktop development. </li>    <li>Jon asks about the different OSS libraries and frameworks used to build it. </li>    <li>Kevin asks about unit and integration testing. </li>    <li>Kevin asks if they dogfooded GitHub for Windows. </li>    <li>The guys talk about line endings. </li>    <li>Kevin asks about Linus Torvalds' recent comments about GitHub. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Phil Haack<a href="http://haacked.com/"> blog</a> <a href="https://twitter.com/#!/haacked">Twitter</a> </li>    <li>Paul Betts<a href="http://blog.paulbetts.org/"> blog</a> <a href="https://twitter.com/#!/xpaulbettsx">Twitter</a> </li>    <li>Tim Clem<a href="http://timclem.wordpress.com/"> blog</a> <a href="https://twitter.com/#!/timothyclem">Twitter</a> </li>    <li><a href="http://windows.github.com/">GitHub for Windows</a> </li>    <li><a href="http://msysgit.github.com/">msysgit</a> </li>    <li><a href="https://github.com/github/gitpad">GitPad</a> </li>    <li><a href="http://mac.github.com/">GitHub for Mac</a> </li>    <li><a href="https://github.com/dahlbyk/posh-git">posh-git</a> </li>    <li><a href="http://libgit2.github.com/">libgit2</a> </li>    <li><a href="https://github.com/libgit2/libgit2sharp">libgit2sharp</a> </li>    <li><a href="http://www.reactiveui.net/">ReactiveUI</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/data/gg577609.aspx">Reactive Extensions</a> </li>    <li><a href="https://github.com/github/Akavache">Akavache</a> </li>    <li><a href="https://twitter.com/#!/cameronmcefee">Cameron McEfee</a> </li>    <li><a href="https://github.com/xpaulbettsx/NSync">NSync</a> </li>    <li><a href="http://caliburnmicro.codeplex.com/">Caliburn.Micro</a> </li>    <li><a href="https://github.com/chillitom/CefSharp">Cef Sharp</a> </li>    <li><a href="https://github.com/jdiamond/Nustache">Nustache</a> </li>    <li><a href="https://github.com/torvalds/linux/pull/17#issuecomment-5654674">Linus Torvalds comments about GitHub Pull Requests</a>       <ul>       <p><em>Show notes by </em><a href="http://twitter.com/rossfuhrman"><em>@rossfuhrman</em></a><em> - thanks!</em></p>     </ul>   </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0144-GitHub-for-Windows.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 143 - Paul Stack on Continuous Delivery</title>
    <link>https://herdingcode.com/herding-code-143-paul-stack-on-continuous-delivery/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-143-paul-stack-on-continuous-delivery/</guid>
    <pubDate>Fri, 11 May 2012 19:42:07 GMT</pubDate>
    <description><![CDATA[<p>The guys talk to Paul Stack about Continuous Deployment. Herding Code 143 - Paul Stack on Continuous Delivery</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 143</strong></p>
<p>The guys talk to Paul Stack about Continuous Deployment.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0143-Paul-Stack-on-Continuous-Delivery.mp3">Herding Code 143 - Paul Stack on Continuous Delivery</a>    <ul>   <li>K. Scott asks Paul for a description of what Continuous Delivery is. </li>    <li>Paul talks about the differences between Continuous Testing, Continuous Integration, Continuous Delivery and Continuous Deployment. </li>    <li>Scott brings up the difficulties that databases bring about as it relates to deployments. </li>    <li>Paul talks about how a distributed cache layer has helped alleviate those deployment problems for him. </li>    <li>Jon asks how these processes lead software to have a better architecture. </li>    <li>K. Scott asks how source control plays into the process. </li>    <li>Paul talks about feature switching, which can be used to turn features on and off. </li>    <li>Paul talks about the benefits of rapid feedback. </li>    <li>There is a question from Twitter about databases and data warehousing and PowerShell equivalents of Chef and Puppet. </li>    <li>Another question from related to the processes related to deploying with TFS. </li>    <li>Scott talks about his experience prototyping Octopus Deploy. </li>    <li>Kevin brings up the topic of rollbacks. </li>    <li>Paul talks about A/B testing and canary testing. </li>    <li>K. Scott asks about pushback on Continuous Delivery. </li>    <li>Jon asks if it is possible to incrementally work towards Continuous Delivery. </li>    <li>K. Scott asks about the pitfalls of Continuous Delivery. </li>    <li>Jon asks if there are teams or situations that Continuous Delivery would not work. </li>    <li>K. Scott asks about benchmarking of deployments. </li>    <li>Another question from twitter related to Continuous Deployment of desktop software. </li>    <li>Paul gives examples of technology making Continuous Delivery easier. </li>    <li>Kevin asks if decisions made at the beginning of a project make it harder to implement Continuous Delivery. </li> </ul> Show Links:   <ul>   <li><a href="http://paulstack.co.uk/blog/">Paul Stack blog</a> </li>    <li><a href="https://twitter.com/#!/stack72">@stack72</a>&#160;</li>    <li><a href="http://www.red-gate.com/products/sql-development/sql-compare/">SQL Compare</a> </li>    <li><a href="http://www.jetbrains.com/teamcity/">Team City</a> </li>    <li><a href="https://github.com/benaston/NFeature">Feature switch library - NFeature</a> </li>    <li><a href="http://code.flickr.com/blog/2009/12/02/flipping-out/">Flickr feature toggles</a> </li>    <li><a href="http://wiki.opscode.com/display/chef/Home">Chef</a> </li>    <li><a href="http://puppetlabs.com/">Puppet</a> </li>    <li><a href="http://www.octopusdeploy.com/">Octopus deploy</a> </li> </ul>  <p><em>Show notes by </em><a href="http://twitter.com/rossfuhrman"><em>@rossfuhrman</em></a><em> - thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0143-Paul-Stack-on-Continuous-Delivery.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 142 - Scott Guthrie on the ASP.NET MVC, Web API, and Razor Open Source Announcement</title>
    <link>https://herdingcode.com/herding-code-142-scott-guthrie-on-the-asp-net-mvc-web-api-and-razor-open-source-announcement/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-142-scott-guthrie-on-the-asp-net-mvc-web-api-and-razor-open-source-announcement/</guid>
    <pubDate>Mon, 23 Apr 2012 23:00:48 GMT</pubDate>
    <description><![CDATA[<p>The gang talks to Scott Guthrie about the recent announcement that ASP.NET MVC, Web API, and Razor are being developed in public, open source repositories using git and will acc</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 142</strong></p>
<p>The gang talks to Scott Guthrie about the recent announcement that ASP.NET MVC, Web API, and Razor are being developed in public, open source repositories using git and will accept external code contributions. It's an action packed show, jam packed with information and guys named Scott.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0142-Scott-Guthrie-on-ASP.NET-Web-API-Razor-Open-Source-Announcement.mp3">Herding Code 142 - Scott Guthrie on the ASP.NET MVC, Web API, and Razor Open Source Announcement</a>    <p>Show Notes:</p>  <ul>   <li>K Scott asks Scott Guthrie about the recent open source announcements about ASP.NET MVC, Web API, and Razor. Scott G. details what's changed, highlighting both the new transparency due to working in public repositories and the changes to accept external code submissions.</li>    <li>Scott G. explains that these are still supported products with dedicated Microsoft engineering investment.</li>    <li>K Scott mentions a question from twitter - How far will this go? Will we see other products and projects following a similar model?</li>    <li>Some more questions from twitter - What kind of feedback is Scott G. hoping to see? How will feedback be handled?</li>    <li>Scott G. talks about how pull requests will be implemented. Developers will have to fill out a form and after they're on record pulls will reviewed for various factors and then be integrated. </li>    <li>Scott K. asks a <user question>about ownership of the code contributed to the project. Is OuterCurve involved?</li>    <li>Jon asks a question from twitter: Was this the goal from the beginning? What was the biggest hurdle - legal or logistics. Scott G. mentions the community response to including jQuery in the ASP.NET MVC Project Template.</li>    <li>Kevin asks Scott about patch contributing that has some performance issues and is the patch rejected or are the issues fixed. Scott G. thinks that minor issues in code might still be accepted or just asked to be fixed. A patch that does noting but &quot;Format C Drive&quot; will be rejected outright, other than that the process is pretty flexible.</li>    <li>ASP.NET MVC 4 is not taking new features on as it's currently in a Release Candidate mode. </li>    <li>K Scott asks how Microsoft chose git as it's source control. Microsoft sure has made a lot of OSS developers happy using git. </li>    <li>Kevin points out that the Windows Azure SDK's are on GitHub and asks why the ASP.NET components weren't put there as well. Are there plans to move those projects from GitHub to CodePlex now? Scott G. says that CodePlex didn't support git when the Azure SDK's were released. With the announcement of git on CodePlex they've made decisions based on where they fit best, and ASP.NET content had historically been on CodePlex. There aren't any plans to move from one to the other, and the beauty of DVCS is that they can be worked on in either place.. </li>    <li>Scott K. talks about how the team received feedback from blogs and mailing lists and now CodePlex discussions and asks about whether feature/roadmap discussions will be public or not. </li>    <li>Jon asks about how release versions vs. nightly code builds will be supported from Microsoft. Scott G. explains that support will still attempt to help, but of course a released version is recommended for production scenarios.&#160; He also reminds that product support will help with any .NET support scenario, including ASP.NET open source code.</li>    <li>Jon asked a <user question>about how this will affect the Mono project, and Scott G. hopes that it does. </li>    <li>Scott K. asks about how the release schedule might change now that the projects are open source. </li>    <li>Scott G. talks about how, by going open source, customer feedback can be potentially received in real time which hopefully increases product quality. </li>    <li>Kevin asks about community contributions of major new features. Scott G. says it'll be a learning process, but they're hoping to see some great ideas from the community. He discusses how Microsoft's been incorporating open source libraries for a while, including JSON.NET, jQuery, Modernizr, etc., so now there's flexibility to incorporate features both as core code and as external libraries.</li>    <li>K Scott says Microsoft has been doing a great job incorporating community projects into their products rather than reinventing the wheel each time. </li>    <li>Scott K. asks how Microsoft decides to create new projects or use existing solutions from the OSS community. Scott G. says it's important to keep the MVC core concepts simple while allowing for advanced scenarios, and he and Scott K. discuss the balance between keeping concept count and clutter low while including support for popular scenarios.</li>    <li>Scott G. mentions that he hopes the new open source view gets Microsoft feedback sooner so that changes can be made faster to final releases which will translate to better products. </li>    <li>K Scott asks about what's new in the world of Windows Azure. Scott G. clarifies that his new role includes ASP.NET and the web stack as well, and says there's a lot of exciting stuff in the works for Azure. Scott G. says he'd like to come back on Herding Code to talk about it when it's released. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://weblogs.asp.net/scottgu/">Scott Guthrie</a> - <a href="https://twitter.com/#!/scottgu">@scottgu</a> </li>    <li>Scott's blog post: <a href="http://weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx">ASP.NET MVC, Web API, Razor and Open Source</a> </li> </ul>  <p><em>Show notes by </em><a href="http://twitter.com/buildstarted"><em>@buildstarted</em></a><em> - thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0142-Scott-Guthrie-on-ASP.NET-Web-API-Razor-Open-Source-Announcement.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 141 - Lightning Round with Hadi Hariri</title>
    <link>https://herdingcode.com/herding-code-141-lightning-round-with-hadi-hariri/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-141-lightning-round-with-hadi-hariri/</guid>
    <pubDate>Wed, 11 Apr 2012 23:12:07 GMT</pubDate>
    <description><![CDATA[<p>K Scott wraps up his series of lightning round interviews from Sofware Passion Summit by interviewing Hadi Hariri. Herding Code 140 - Lightning Round with Had</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 141</strong></p>
<p>K Scott wraps up his series of lightning round interviews from Sofware Passion Summit by interviewing Hadi Hariri.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0141-Hadi-Hariri.mp3">Herding Code 140 - Lightning Round with Hadi Hariri</a>    <p>Show Notes:</p>  <ul>   <li>K Scott asks Hadi about EasyHttp. </li>    <ul>     <li>Hadi explains some of the problems and annoyances EasyHttp solves. </li>      <ul>       <li>Configuring the web request was a pain</li>        <li>It was annoying to change the data structure of the classes to work with dynamic JSON</li>     </ul>      <li>EasyHttp supports all HTTP verbs (including PATCH and OPTIONS)</li>      <li>It works really smoothly with dynamics</li>      <li>Hadi talks about a library he used called JsonFx, which he prefers to JSON.NET</li>   </ul>    <li>Hadi says he decided to build out EasyHttp due to his work on YouTrackSharp</li>    <li>That's it! Scott runs off to tackle some more lightning round interviews. </li>    <li>K Scott asks about EasyMVC</li>    <ul>     <li>Hadi talks why he created EasyMVC, explaining how the convention based routing works.</li>      <li>EasyMVC also includes some filters which use conventions to handle content negotiation.</li>      <li>K Scott asks what Hadi thinks about ASP.NET Web API. Hadi says he dislikes it, as it pushes developers towards having separate controllers for HTML and services.</li>   </ul>    <li>K Scott wraps up by asking Hadi about Kotlin.</li>    <ul>     <li>Kotlin is a new language in the JetBrains early access program.</li>      <li>Kotlin attempts to improve on some of the shortcoming that JetBrains has seen working with Java.</li>      <li>Kotlin is perhaps conceptually similar to Scala, but a lot easy to learn</li>      <li>Object oriented with nullable types.</li>      <li>Kotlin targets both the JVM and JavaScript</li>      <li>It's open source, and in early alpha phase.</li>   </ul>    <li>That's it! Hope you liked K Scott's lightning round interviews!</li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://hadihariri.com/">Hadi Hariri</a> - <a href="https://twitter.com/#!/hhariri">@hhariri</a></li>    <li><a href="https://github.com/hhariri/EasyHttp">EasyHttp</a> project</li>    <li><a href="https://github.com/jsonfx/jsonfx">JsonFx</a> project</li>    <li><a title="https://github.com/JetBrains/YouTrackSharp" href="https://github.com/JetBrains/YouTrackSharp">YouTrackSharp</a> project</li>    <li><a href="https://github.com/hhariri/EasyMVC">EasyMVC</a> project</li>    <li>Blog post: <a href="http://hadihariri.com/2012/04/06/with-http-your-application-is-your-api/">With HTTP, your application is your API</a></li>    <li>Blog post: <a href="http://hadihariri.com/2012/02/17/the-kotlin-journey-part-i-getting-things-set-up/">The Kotlin Journey Part I : Getting things set up</a></li>    <li><a href="https://github.com/JetBrains/kotlin">Kotlin</a> project</li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0141-Hadi-Hariri.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 140 - Lightning Round with Morten Kromberg on APL</title>
    <link>https://herdingcode.com/herding-code-140-lightning-round-with-morten-kromberg-on-apl/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-140-lightning-round-with-morten-kromberg-on-apl/</guid>
    <pubDate>Wed, 11 Apr 2012 22:46:05 GMT</pubDate>
    <description><![CDATA[<p>While at Software Passion Summit, K Scott continues a series of lightning round interviews with Morten Kromberg, discussing APL. Herding Code 140 - Lightning</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 140</strong></p>
<p>While at Software Passion Summit, K Scott continues a series of lightning round interviews with Morten Kromberg, discussing APL.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0140-Morten-Kromberg.mp3">Herding Code 140 - Lightning Round with Morten Kromberg</a>    <p>Show Notes:</p>  <ul>   <li>Morten describes the history and purpose of APL.      <ul>       <li>Did you know that APL stands for &quot;A Programming Language&quot;? </li>        <li>The first book about APL was written in 1962. It's as old as COBOL and FORTRAN. </li>        <li>APL was first written as a mathematical notation, and was used in teaching for 4 years before an interpreter was even written. </li>     </ul>   </li>    <li>It's a dynamic, interpreted language, and it encourages a functional style. Dyalog APL, which branched off about 30 years ago, is even more functional. </li>    <li>People are still developing with APL, especially within the financial sector. </li>    <li>Morten's company makes APL interpreters. </li>    <li>K Scott asks about the ability to work with APL from .NET. Morten says that, while it's not a managed language, they have full interop so you can both create .NET classes in APL and consume them. You can use the GUI features in Dyalog APL, or you can interop with Windows / .NET GUI's, and it can even be used as an ASP.NET scripting language. </li>    <li>K Scott asks why such an interesting language that's been around for so long isn't well known. Morten speculates on some reasons and talks about why he thinks it's seeing a resurgence. </li>    <li>Morten and K Scott talk about some of the examples which really show off the language, such as a one line implementation of Conway's Game Of Life. </li>    <li>Morten talks about how APL sees matrices as a fundamental concept, expressing them at a level higher than objects. </li>    <li>APL is a very agile language, as it encourages direct interaction from domain experts. </li>    <li>Morten recommends <a href="http://tryapl.org">http://tryapl.org</a>, an interactive website where you can learn more about APL. </li>    <li>That's it! Scott runs off to tackle some more lightning round interviews. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Morten Kromberg - <a href="https://twitter.com/#!/mkromberg">@mkromberg</a></li>    <li><a href="http://www.dyalog.com/">Dyalog APL</a></li>    <li><a href="http://en.wikipedia.org/wiki/APL_(programming_language)">APL on Wikipedia</a></li>    <li><a href="http://en.wikipedia.org/wiki/APL_(programming_language)#Conway.27s_.28very_concise.29_Life">Conway's (very concise) Life</a></li>    <li><a href="http://tryapl.org/">TryAPL</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0140-Morten-Kromberg.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 139 - Lightning Round with Roy Osherove on his new book, Notes to a software team leader</title>
    <link>https://herdingcode.com/herding-code-139-lightning-round-with-roy-osherove-on-his-new-book-notes-to-a-software-team-leader/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-139-lightning-round-with-roy-osherove-on-his-new-book-notes-to-a-software-team-leader/</guid>
    <pubDate>Wed, 11 Apr 2012 22:39:12 GMT</pubDate>
    <description><![CDATA[<p>While at Software Passion Summit, K Scott continues a series of lightning round interviews with Roy Osherove discussing Roy&apos;s new book, Notes to a software team leader. Download</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 139</strong></p>
<p>While at Software Passion Summit, K Scott continues a series of lightning round interviews with Roy Osherove discussing Roy's new book, Notes to a software team leader.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0139-Roy-Osherove.mp3">Herding Code 139 - Lightning Round with Roy Osherove</a>    <p>Show Notes:</p>  <ul>   <li>K Scott asks Roy about his new book. </li>    <li>Roy talks about the LeanPub approach. </li>    <li>Roy describes the two parts of the book - elastic leadership and community contributions featuring notes from team leaders. </li>    <li>K Scott says that our industry often throws developers into leadership positions, and the transition can be difficult. Roy agrees, and says these are the notes he'd wished he had when he was a new leader. Back then he thought he was doing a good job, and was having fun, but wasn't really doing his job. </li>    <li>Roy talks about how he got started, explaining how his passion is at the crossroads of where people and software meet. This book is coming out because it needs to come out - it's a missing book. </li>    <li>Different team phases require different leadership types, describing his elastic leadership approach that deals with the three phases he's observed:      <ul>       <li>Chaos phase </li>        <li>Learning phase </li>        <li>Self organizing team </li>     </ul>   </li>    <li>What are some common mistakes?      <ul>       <li>Not recognizing which phase your team is in </li>        <li>Being afraid of talking to people about difficult things </li>        <li>Not understanding how to influence behavior </li>     </ul>   </li>    <li>That's it! Scott runs off to tackle some more lightning round interviews. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Roy Osherove - <a href="https://twitter.com/#!/royosherove">@royosherove</a></li>    <li><a href="http://5whys.com/">5whys</a> blog </li>    <li><a href="http://leanpub.com/teamleader">http://leanpub.com/teamleader</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0139-Roy-Osherove.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 138 - Lightning Round with Douglas Crockford</title>
    <link>https://herdingcode.com/herding-code-138-lightning-round-with-douglas-crockford/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-138-lightning-round-with-douglas-crockford/</guid>
    <pubDate>Wed, 11 Apr 2012 22:36:39 GMT</pubDate>
    <description><![CDATA[<p>While at Software Passion Summit, K Scott did a series of four Lightning Round interviews, starting with Douglas Crockford. Herding Code 138 - Douglas Crockfo</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 138</strong></p>
<p>While at Software Passion Summit, K Scott did a series of four Lightning Round interviews, starting with Douglas Crockford.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0138-Douglas-Crockford.mp3">Herding Code 138 - Douglas Crockford</a>    <p>Show Notes:</p>  <ul>   <li>K Scott asks Douglas what he meant when he said that the human brain wasn't designed for this sort of work? What were we designed for? Douglas talks about how our minds are selected for hunting and gathering, but we have to work with what we've got, relating this to some tips for defensive programming. </li>    <li>K Scott asks about JSLint. Douglas talks about how he thinks all languages should have code quality tools. </li>    <li>The increment operator came over from C++ due to pointer operations. Bad idea? </li>    <li>K Scott asks where he sees JavaScript going. Are things moving too fast, or too slow? Douglas talks about the difficulty of supporting multiple browsers and versions. EcmaScript 5didn't break things, but EcmaScript 6 is making some bets to allow for that. </li>    <li>EcmaScript 5 introduced &quot;use strict&quot; - how does that work? Douglas talks about the use of useless expressions. </li>    <li>K Scott asks what developers should be doing today. Douglas says developers should be working in the intersection of EcmaScript 3 and the strict parts of EcmaScript 5 to be ready for EcmaScript 6. </li>    <li>That's it! Scott runs off to tackle some more lightning round interviews. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://www.crockford.com/">Douglas Crockford</a> </li>    <li><a href="http://www.amazon.com/gp/product/0596517742?ie=UTF8&amp;tag=jongall-20&amp;linkCode=shr&amp;camp=213733&amp;creative=393185&amp;creativeASIN=0596517742">JavaScript, The Good Parts</a> </li>    <li><a href="http://www.jslint.com/">JSLint</a> </li>    <li><a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">EcmaScript 5</a> </li>    <li><a href="http://www.yuiblog.com/blog/2010/12/14/strict-mode-is-coming-to-town/">Strict Mode Is Coming To Town</a> (YUI Blog post by Douglas Crockford) </li>    <li><a href="http://channel9.msdn.com/Events/MIX/MIX11/EXT13">ECMAScript 5: The New Parts</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0138-Douglas-Crockford.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 137 - Mass Assignment, New New iPad, JavaScript libraries, Windows 8, Visual Studio, and Sad Trombones</title>
    <link>https://herdingcode.com/herding-code-137-mass-assignment-new-new-ipad-javascript-libraries-windows-8-visual-studio-and-sad-trombones/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-137-mass-assignment-new-new-ipad-javascript-libraries-windows-8-visual-studio-and-sad-trombones/</guid>
    <pubDate>Thu, 29 Mar 2012 00:46:46 GMT</pubDate>
    <description><![CDATA[<p>Oh, hey. A discussion show. Haven&apos;t done one of those for a while. Bonus: recorded during the day so K Scott&apos;s awake. Herding Code 137: Mass Assignment, New N</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 137</strong></p>
Oh, hey. A discussion show. Haven't done one of those for a while. Bonus: recorded during the day so K Scott's awake.

Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0137-Mass-Assignment-New-New-iPad-JavaScript-libraries-Windows-8-Visual-Studio-and-Sad-Trombones.mp3">Herding Code 137: Mass Assignment, New New iPad, JavaScript libraries, Windows 8, Visual Studio, and Sad Trombones</a>

Show Notes:
<ul>
	<li>K Scott asks everyone's opinions on the GitHub / Ruby on Rails "mass assignment" debacle.
<ul>
	<li>Everyone talks about mass assignment binding issues in MVC frameworks, including Rails and ASP.NET MVC - is this a security issue in the frameworks, or the web developer's responsibility?</li>
	<li>Jon says that it's often tricky to debug negative cases, Kevin says that everything should be secure by default, and Scott K can go either way on it.</li>
</ul>
</li>
	<li>K Scott asks us all who will buy the new new iPad.
<ul>
	<li>Scott K says it struck him that they were limited in demonstrating it by the projection resolution.</li>
	<li>Kevin wants one.</li>
	<li>Jon thought it was interesting that Retina isn't a hard DPI spec, it's driven by the expected distance the device will be from your eyes - can he get a Retina effect by just sitting far from his desktop monitors?</li>
	<li>There's a discussion about the lack of a version number.</li>
	<li>Jon wonders if that high quality of display will show up on other devices, or if Apple bought all the pixels. Oh, and patents.</li>
	<li>K Scott asks Kevin if Samsung users laugh at him.</li>
	<li>Jon says that's no longer a issue now that software updates brought 4G to this iPhone... magic!</li>
</ul>
</li>
	<li>Twitter question: What JavaScript libraries is everyone using?
<ul>
	<li>Kevin talks about the Mocha JavaScript test framework.</li>
	<li>Jon mentions Upshot from the ASP.NET Single Page Application framework.</li>
	<li>K Scott talks about Sylvester and Zoomooz.</li>
	<li>Scott K talks about tiny libraries like Zepto, Ender, and the Micro.js list.</li>
	<li>Jon says he likes cdnjs.com for JavaScript library hosting.</li>
</ul>
</li>
	<li>Scott K talks about the difficulty he had in shutting down Windows 8.
<ul>
	<li>Jon says it's all about search now... and what's wrong with hitting the start button to power off?</li>
	<li>Scott K says we've been trained for decades not to do that.</li>
	<li>Jon says this is the biggest shift since Windows 95... there's a lot of learning and unlearning to do.</li>
</ul>
</li>
	<li>What about Visual Studio 11?
<ul>
	<li>There's some discussion about the color and design aspects. Should there be color? Metro?</li>
	<li>Jon says at least it's a lot faster, and he likes the quick search.</li>
	<li>Scott K said it worked fine once he figured out what it was for... and maybe there should be fewer items in the menu to begin with.</li>
	<li>Jon throws out a crazy idea - what about the ribbon interface for Visual Studio and kind of convinces Kevin.</li>
	<li>Scott K says the memory usage is still way too high. Jon asks if that really matters. After some discussion, Scott K says something's slow in there.</li>
	<li>Oh, hey, the macro recorder's gone now. Jon actually used that in Visual Studio recently.</li>
	<li>Kevin asks if there's really no way to customize the install anymore. The gang all agree they don't want to install stuff like C++ and VSTO. Jon says the blog post says that few people actually customize the installation, but Scott K doesn't believe it.</li>
	<li>Scott K runs through some fun issues on the Visual Studio UserVoice.</li>
	<li>Kevin put up a bajillion issues on Connect long ago, most are Closed - Won't Fix.</li>
</ul>
</li>
	<li>Jon talks about a post about 24 bit / 192 khz audio he read. Nobody seems to care all that much.</li>
	<li>Jon asks everyone what they've been up to.
<ul>
	<li>K Scott's travelling around and working on project that's Ruby / Mongo on the backend and ASP.NET MVC on the front end. This freaks Kevin out.</li>
	<li>Jon's been working on ASP.NET MVC / Web API release stuff and hacking on Code52 project late at night.</li>
	<li>Scott K spoke recently at NodePDX on is doing a bunch of crazy stuff at work around deployment.</li>
	<li>Kevin remembers what a DSN is when nobody else does.</li>
</ul>
</li>
	<li>Somebody sneaks in a Sad Trombone. Jon is unable to figure out who is playing tricks and motions to adjourn.</li>
</ul>
&nbsp;

Show Links:
<ul>
	<li>GitHub posts: <a href="https://github.com/blog/1068-public-key-security-vulnerability-and-mitigation">Public Key Security Vulnerability and Mitigation</a> and <a href="https://github.com/blog/1069-responsible-disclosure-policy">Responsible Disclosure Policy</a></li>
	<li>Brad Wilson post: <a href="http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html">Input Validation vs. Model Validation in ASP.NET MVC</a></li>
	<li><a href="http://visionmedia.github.com/mocha/">Mocha</a> - JavaScript test framework</li>
	<li><a href="http://sylvester.jcoglan.com/">Sylvester</a> - Vector and Matrix math for JavaScript</li>
	<li><a href="http://janne.aukia.com/zoomooz/">Zoomooz</a> - an easy-to-use jQuery plugin for making any web page element zoom</li>
	<li><a href="http://zeptojs.com/">Zepto</a> - a minimalist JavaScript framework for modern web browsers*, with a jQuery-compatible syntax</li>
	<li><a href="http://ender.no.de/">Ender</a> - The no-library library</li>
	<li><a href="http://microjs.com/">microjs</a> - tiny JavaScript libraries</li>
	<li><a href="http://www.cdnjs.com/">cdnjs.com</a> - The missing CDN (for all the other JavaScript libraries)</li>
	<li>Windows 8 blog post - <a href="http://blogs.msdn.com/b/b8/archive/2011/10/03/evolving-the-start-menu.aspx">Evolving the Start menu</a></li>
	<li><a href="http://blogs.msdn.com/b/visualstudio/archive/2012/03/05/visual-studio-11-beta-performance-part-1.aspx">Visual Studio 11 Beta Performance blog post series</a></li>
	<li><a href="http://visualstudio.uservoice.com/forums/121579-visual-studio">Visual Studio UserVoice</a></li>
	<li><a href="https://connect.microsoft.com/VisualStudio/SearchResults.aspx?SearchQuery=kevin%2bdente">Kevin Dente's Visual Studio Connect Bug list</a></li>
	<li><a href="http://people.xiph.org/~xiphmont/demo/neil-young.html">24/192 Music Downloads ...and why they make no sense</a></li>
	<li>Scott K's talk at NodePDX - <a href="http://compositecode.com/2012/01/31/scott-koon-presenting-node-huh-what-else-is-it-good-for-nodepdx/">info</a> / <a href="http://www.livestream.com/nodepdx/video?clipId=pla_3219bfa1-ad8b-45c9-9f90-fe8285bc3f14">video</a></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0137-Mass-Assignment-New-New-iPad-JavaScript-libraries-Windows-8-Visual-Studio-and-Sad-Trombones.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 136: Code52 with Paul Jenkins, Brendan Forster, and Andrew Tobin</title>
    <link>https://herdingcode.com/herding-code-136-code52-with-paul-jenkins-brendan-forster-and-andrew-tobin/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-136-code52-with-paul-jenkins-brendan-forster-and-andrew-tobin/</guid>
    <pubDate>Sat, 10 Mar 2012 00:52:20 GMT</pubDate>
    <description><![CDATA[<p>In this episode, Jon and Scott K talk talk with the guys behind Code52, an effort to spin up a new open source project every week for a year. Herding Code 136</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 136</strong></p>
<p>In this episode, Jon and Scott K talk talk with the guys behind Code52, an effort to spin up a new open source project every week for a year.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0136-Code52.mp3">Herding Code 136: Code52 with Paul Jenkins, Brendan Forster, and Andrew Tobin</a>    <p>Show Notes:</p>  <ul>   <li>Jon starts by asking how this whole idea got started.</li>    <li>Brendan explains the timeline of a one week spin up cycle for a project.</li>    <li>Jon asks if the projects just die at the end of a week, and if people are continuing to work on past projects. Paul and Andrew talk about the continuing work on all projects, including MarkPad .</li>    <li>Jon says he thinks the concern of abandoned open source projects is overblown - collaboration is good, working </li>    <li>Jon asks about the projects they've done so far, and the guys run through the list.</li>    <li>Brendan explains how the different projects are selected. </li>    <li>Jon asks about how technologies are selected. Brendan says that it's all based on who shows up, and Andrew mentions the wide variety of technologies that have been covered so far.</li>    <li>Paul says that the &quot;bite sized projects&quot; have been a good way for developers who are new to open source to get started. Jon asks how new developers can get ramped up, and Brendan lists some of the onboarding resources. Andrew explains that it's hard to write much documentation when the projects are running for a week. Andrew mentions some of the Git documentation they've got written up.</li>    <li>Scott K says he's got a ton of personal projects that he doesn't have time for. Everyone talks about the benefit of getting a team on a project for a week.</li>    <li>Jon asks about some of the common frameworks that they use over and over. Paul talks about MahApps.</li>    <li>Scott K asks about non-CLR project, like some crazy project in obscure languages. Brendan says the main focus is on building something useful in a week, which usually leads towards common languages. Brendan says that projects in other languages really need a &quot;champion&quot; to show up and lead the project for a week - and the door's open.</li>    <li>Jon asks about the community reaction overall. The guys talk about the wide attention, as well as some negative reactions from onlookers who want to see other technologies represented. </li>    <li>Jon says he thinks there was some pent up need for energy in the .NET open source space, and asks if that was part of the reason for getting this started.</li>    <li>Jon asks Paul about the &quot;Mah&quot; name he's used for his open source projects.</li>    <li>There's a discussion of developing while hungry, including the Pretzel project name and the &quot;Jon should make me a delicious cake&quot; incident.</li>    <li>Andrew talks about the GTFO project - GitHub Tools For Outlook</li>    <li>Jon asks about the .NET developer community in Australia. Is it&#160; as huge as it seems?</li>    <li>Question from Twitter - @wolfbyte asks: &quot;How do you balance the shifting of tools / ideas / processes against the goal of attracting people to open source development.</li>    <li>Another question from @wolfbyte: &quot;Are you guys tired yet?&quot; (Yes!)</li>    <li>Jon asks if there's thought as to how to scale things going forward to all the work doesn't fall on Paul/Brendan/Andrew for all projects. Is there a possibility to bring in guest leads for a week?</li>    <li>There's a discussion of HattersGonnaHat and the Konami code. Jon announces a new KDD movement: Konami Driven Development.</li>    <li>Some discussion of Windows 8 development (update: the 3/5 - 3/12 project is Windows 8).</li>    <li>Would it be possible to do more cross-platform work? Silverlight?</li>    <li>What will the future projects be? Jon campaigns (in vain) for his Diff/Merge 2000 project proposal.</li>    <li>Jon asks for more information about how they run all the behind-the-scenes communications and infrastructure. GitHub, App Harbor, JabbR - all are low friction and low / no cost.</li>    <li>Jon asks about the amount of work involved in accepting pull requests.</li>    <li>Brendan talks about the test coverage in code submissions. Paul says that having testing frameworks in place makes it a lot more likely that people will write the tests.</li>    <li>Brendan wraps with a call to look at Code52.org and get started. Jon pledges to fly to Australia in luggage class, then offends everyone by confusing Australia with New Zealand.</li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://code52.org/">Code52 site</a> (<a href="https://twitter.com/#!/code_52">@code_52</a>)</li>    <li><a href="http://jabbr.net/#/rooms/code52">Code52 JabbR room</a></li>    <li>Andrew Tobin - <a href="http://aussiecoder.com/">blog</a>, <a href="https://twitter.com/#!/tobin">twitter</a></li>    <li>Brendan Forster - <a href="http://brendanforster.com/">blog</a>, <a href="https://twitter.com/#!/shiftkey">twitter</a></li>    <li>Paul Jenkins - <a href="http://www.theleagueofpaul.com/">blog</a>, <a href="https://twitter.com/#!/aeoth">twitter</a></li>    <li>Code52 projects to date:</li>    <ul>     <li><a href="http://code52.org/DownmarkerWPF/">MarkPad</a> - A Markdown editor for </li>      <li><a href="http://code52.org/jibbr/">jibbr</a> - A Jabbr bot designed for collaborative </li>      <li><a href="http://code52.org/Ideastrike/">Ideastrike</a> - A collaborative idea voting site</li>      <li><a href="http://code52.org/samurai-review.html">Samurai</a> - A tiled, turn-based player-vs-plaryer game with an MVC 4 backend and the beginning of Windows Phone and iOS front ends</li>      <li><a href="http://code52.org/pretzel/">Pretzel</a> - A static site generator with Markdown and Liquid (and Razor on the way)</li>      <li><a href="http://code52.org/metro-dot-css-wrapup.html">metro.css</a> - A CSS bootstrap package to simplify building web applications with a Metro look</li>      <li><a href="http://code52.org/carnac/">Carnac</a> - A utility that displays keyboard shortcuts as you type them</li>      <li><a href="http://code52.org/github-for-outlook/">GT4O</a> - An addin for managing Github tasks inside Outlook.</li>      <li><a href="http://code52.org/internationalization-recap.html">i18n Packages for MVC4</a> - NuGet packages to simplify internationalization in ASP.NET MVC applications</li>      <li><a href="http://code52.org/finances-windows8.html">MyFinances for Windows 8</a> - A Javascript-based application for WinRT</li>   </ul>    <li>GitHub post - <a href="https://github.com/blog/1024-a-new-coding-project-every-week-at-code52">A New Coding Project Every Week at Code52</a></li>    <li><a href="http://jabbr.net/#/rooms/hattersgonnahat">#HattersGonnaHat</a></li>    <li><a href="http://en.wikipedia.org/wiki/Konami_Code">Konami code</a></li>    <li><a href="http://www.mahtweets.com/">MahTweets</a></li>    <li><a href="http://mahapps.com/">MahApps</a></li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0136-Code52.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 135: Remco Mulder and Jeff Schumacher on Continuous Testing</title>
    <link>https://herdingcode.com/herding-code-135-remco-mulder-and-jeff-schumacher-on-continuous-testing/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-135-remco-mulder-and-jeff-schumacher-on-continuous-testing/</guid>
    <pubDate>Mon, 27 Feb 2012 19:32:33 GMT</pubDate>
    <description><![CDATA[<p>In this episode, the guys talk with Remco Mulder (author of NCrunch) and Jeff Schumacher (author of Giles) about continuous testing in .NET. Herding Code 135:</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 135</strong></p>
<p>In this episode, the guys talk with Remco Mulder (author of NCrunch) and Jeff Schumacher (author of Giles) about continuous testing in .NET.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0135-Continuous-Testing.mp3">Herding Code 135: Remco Mulder and Jeff Schumacher on Continuous Testing</a>    <p>Show Notes:</p>  <ul>   <li>Scott K kicks things off with a horrible old school BASIC joke.</li>    <li>Remco explains how NCrunch got started because he was living under a rock.</li>    <li>Jeff explains how Giles got started by finding AutoTest and seeing it not maintained (in reality it was).</li>    <li>Remco talks about the number of test frameworks.</li>    <li>Jon asks Remco about adding MSTest support - Remco groans about how difficult MSTest was to integrate with NCrunch.</li>    <li>Jeff mentions that xUnit's test runner is complete for backward compatibility.</li>    <li>Jeff talks about Machine Specs and avoiding versioning hell with Impromptu Interface.</li>    <li>Jon asks about each library's approach to Continuous Testing and to explain it to a laymen. </li>    <li>Rem explains what Continuous Testing is in relation to NCrunch.</li>    <li>Scott comments on a &quot;strange situation&quot; of testing compiled code creates slow tests and asks about any shortcuts Rem or Jeff have taken.</li>    <li>Jon comments how NCruch &amp; Giles gives immediate feedback as he's coding.</li>    <li>Jeff mentions that Giles has the ability to filter tests so that you only see what you want to see.</li>    <li>Remco explains how NCrunch attempts to determine impact to order how tests are run so the most pertinent tests run first.</li>    <li>Jon gives his quick history of the testing feedback cycle: separate project phase, then repository check-in step with continuous integration, local test runers, and now tests running as we write the code. Are we done? Where can we go from here?</li>    <li>Jeff comments about how Continuous Testing is like the red squiggly for code problems.</li>    <li>Scott asks about alternative language support for NCrunch and Giles.</li>    <li>Remco mentions that Salesforce.com has a Selenium &quot;cluster&quot; to continuously run UI tests.</li>    <li>Remco talks about Visual Studio integration for NCrunch.</li>    <li>Jeff talks about a branch that supports Mono.</li>    <li>Jon talks about Roslyn, and Scott K reminds us that Mono was doing compiler as a service long ago - 2008?</li>    <li>Remco jokes about clippy.</li>    <li>Jeff talks about Continuous testing and Pair Programming.</li>    <li>Jeff wanted to get to the point where he didn't think about the tooling but only the tests and the code.</li>    <li>Jeff talks about Visual Studio magazine and an article about Continuous Testing.</li>    <li>Jon comments how easy NCrunch is able to setup and get going.</li>    <li>Remco wants to make Continuous testing really really easy to get people to start using it.</li>    <li>Jeff recommends looking at all the different continuous testing options, mentioning Greg Young's Mighty Moose.</li> </ul>  <p>Show Links:</p>  <ul>   <li>Jeff Schumacher - <a href="http://codingreflection.com/">blog</a>, <a href="http://twitter.com/#!/codereflection">twitter</a> </li>    <li>Remco Mulder - <a href="http://blog.ncrunch.net/">blog</a>, <a href="http://twitter.com/#!/remcomulder">twitter</a> </li>    <li><a href="http://ncrunch.net/">NCrunch</a> </li>    <li><a href="http://testergiles.herokuapp.com/">Giles</a> </li>    <li><a href="http://continuoustests.com/">Mighty Moose</a> from <a href="http://twitter.com/gregyoung">Greg Young</a></li>    <li><a href="http://visualstudiomagazine.com/articles/2011/09/07/continuous-testing.aspx">Continuous Testing: Think Different</a> [Visual Studio Magazine online]</li>    <li><a href="http://msdn.microsoft.com/en-us/roslyn">Project Roslyn</a> </li> </ul>  <p>Show notes by <a href="http://buildstarted.com">Ben Dornis</a>. Thanks!</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0135-Continuous-Testing.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 134: Brad Wilson on ASP.NET 4 Beta and ASP.NET Web API</title>
    <link>https://herdingcode.com/herding-code-134-brad-wilson-on-asp-net-4-beta-and-asp-net-web-api/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-134-brad-wilson-on-asp-net-4-beta-and-asp-net-web-api/</guid>
    <pubDate>Fri, 17 Feb 2012 21:15:37 GMT</pubDate>
    <description><![CDATA[<p>In this episode, Jon talks to Brad Wilson about the ASP.NET MVC 4 Beta release. Herding Code 134: Brad Wilson on ASP.NET 4 Beta and ASP.NET Web API</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 134</strong></p>
<p>In this episode, Jon talks to Brad Wilson about the ASP.NET MVC 4 Beta release.</p>  <p>Download / Listen:</p> <a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0134-Brad-Wilson-on-ASP.NET-MVC-4-Beta.mp3">Herding Code 134: Brad Wilson on ASP.NET 4 Beta and ASP.NET Web API</a>      <p>Show Notes:</p>  <ul>   <li>Brad starts with a rundown of what was in ASP.NET MVC 4 Developer Preview, including HTML5 Default Template features, Adaptive Rendering, Mobile Template, Display Modes, NuGet package based installation, and Task&lt;T&gt; based Async Controllers. </li>    <li>Jon asks about the ASP.NET Web API integration. Brad talks about the effort involved and why it's useful. </li>    <li>Jon asks for clarification as to what ASP.NET Web API offers over hand writing services using ASP.NET MVC. </li>    <li>Brad talks about Content Negotiation and why it's useful. </li>    <li>Jon asks about things that Web API has in common with MVC like filters and model binding. </li>    <li>Jon asks about the testability of Web API. Brad explains that it's much more lightweight and has a lot less use of statics, making it a lot more testable. </li>    <li>Brad talks about the hosting models for Web API, including both web and selfhost. He explains that it's pluggable, so you can write your own host, and explains the use of HTTP Message Handlers. </li>    <li>Jon asks about the relation of ASP.NET MVC 4 to .NET 4.5. Brad explains how parts were backported to allow for using .NET 4.5 features on .NET 4. </li>    <li>Jon asks about the query composition support, which gives support for OData query syntax. Brad explains how it's used, and distinguishes the query syntax from the rest of OData format. </li>    <li>Brad explains how ASP.NET Web API is the future of WCF Web API, and that the ASP.NET team and WCF teams have merged. </li>    <li>Brad talks about how Web API can be used outside of ASP.NET. Jon asks how to get Web API into another project type, and Brad talks about installing Web API via NuGet. </li>    <li>Jon asks for more information about how NuGet is used in the MVC installation system. Brad talks about how NuGet and VSIX can be integrated. </li>    <li>Jon asks about why NuGet Package Restore is useful. </li>    <li>Jon notes that creating new projects is slower due to NuGet installation. Brad says this may be improved, but even if it isn't he thinks that the tradeoff is more than worthwhile, since in the real world people aren't creating new projects every day. </li>    <li>Jon asks for a bit more information about the Display Mode Provider. </li>    <li>Brad talks about the installation options for ASP.NET MVC 4 Beta and how it relates to the .NET 4.5 developer previews. </li>    <li>Jon asks about Go Live license, Brad says it's there. </li>    <li>Jon asks about new features in xUnit.net. Brad talks about the last release and what's in the roadmap for the next release. </li>    <li>Brad mentions that he'll be speaking at NDC this summer and talks about the Wrox MVC 4 book. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Brad Wilson - <a href="http://bradwilson.typepad.com/">blog</a>, <a href="http://twitter.com/#!/bradwilson">twitter</a> </li>    <li><a href="http://asp.net/mvc/mvc4">ASP.NET MVC 4 Beta info</a> </li>    <li><a href="http://xunit.codeplex.com/">xUnit.net</a> </li>    <li><a href="http://blogs.msdn.com/b/henrikn/">Henrik's blog</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0134-Brad-Wilson-on-ASP.NET-MVC-4-Beta.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 133: Derick Bailey on Backbone.js</title>
    <link>https://herdingcode.com/herding-code-133-derick-bailey-on-backbone-js/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-133-derick-bailey-on-backbone-js/</guid>
    <pubDate>Fri, 03 Feb 2012 23:26:45 GMT</pubDate>
    <description><![CDATA[<p>In this episode, the guys talk with Derick Bailey (consultant and founder of watchmecode.net, where he sells JavaScript themed screen casts) about Backbone.js, which is a popula</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 133</strong></p>
<p>In this episode, the guys talk with Derick Bailey (consultant and founder of watchmecode.net, where he sells JavaScript themed screen casts) about Backbone.js, which is a popular JavaScript framework. </p>  <strong>Download / Listen:</strong> <p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0133-Derick-Bailey-on-Backbone.mp3">Herding Code 133: Derick Bailey on Backbone.js</a></p>   <strong>Show Notes:</strong>  <ul>   <li>Derick starts off by explaining what Backbone is not: a JavaScript MVC framework. </li>    <li>Backbone provides a way to structure and organize your code, separating responsibilities in to easily recognizable pieces. </li>    <li>Derick points out that Jeremy Ashkenas, the creator of Backbone, said that Backbone is a library. The distinction Derick references is: &quot;a framework calls your code, you call a library's code.&quot; </li>    <li>Kevin asks what are the main parts of Backbone. Derick mentions models and collections, views, routers, and some helpers: backbone.sync, backbone.events, and history. </li>    <li>Kevin asks for a clarification on what a single-page application is. Derick cites Gmail as the canonical example. </li>    <li>Kevin asks if Backbone is mainly used for single-page applications. Derick explains that it is very flexible and can be used as much or as little as necessary for any kind of application. </li>    <li>Jon asks if using Backbone is an all or nothing proposition or if bits and pieces can be brought in over time. </li>    <li>Kevin asks for a comparison to other similar JavaScript libraries/frameworks. </li>    <li>Jon asks if there are any template or boiler plate projects for getting started with Backbone. </li>    <li>K. Scott asks about Derick's Memento plugin, which allows you to store and restore your model's state. </li>    <li>Kevin asks Derick why he thinks Backbone has become so popular. </li>    <li>Jon asks about the process and requirements for creating Backbone plugins. </li>    <li>Jon asks about the debugging story when using Backbone. </li>    <li>Kevin asks about tools and approaches for testing Backbone. </li>    <li>Kevin asks if there are any sources for best practices for Backbone. </li>    <li>Twitter questions from @elijahmanor: &quot;In what type of applications would you not recommend using Backbone?&quot;, &quot;Do you plan to consolidate your blog posts into a Backbone book?&quot;, &quot;Have you done any mobile development with Backbone?, &quot;Do you use Require.js alongside Backbone?&quot; </li>    <li>Kevin and Derick discuss server-side rendering of JavaScript with Backbone for the purpose of being easily findable by search engines. </li>    <li>Derick talks about the on-site training and training videos that he offers. </li> </ul>  <p><strong>Show Links:</strong></p>  <ul>   <li><a href="http://lostechies.com/derickbailey/">Derick Bailey blog</a> </li>    <li><a href="http://twitter.com/derickbailey">Twitter</a> </li>    <li><a href="http://documentcloud.github.com/backbone/">Backbone</a> </li>    <li><a href="http://twitter.com/jashkenas">Jeremy Ashkenas - Founder of Backbone </a></li>    <li><a href="http://zeptojs.com/">Zepto.js</a> </li>    <li><a href="http://lostechies.com/derickbailey/2011/12/23/backbone-js-is-not-an-mvc-framework/">Backbone.js Is Not An MVC Framework </a></li>    <li><a href="http://sproutcore.com/">SproutCore </a></li>    <li><a href="http://batmanjs.org/">Batman.JS </a></li>    <li><a href="http://emberjs.com/">Ember.js</a> </li>    <li><a href="http://javascriptmvc.com/">JavaScriptMVC</a> </li>    <li><a href="http://agilityjs.com/">Agility.js</a> </li>    <li><a href="http://knockoutjs.com/">Knockout</a> </li>    <li><a href="http://spinejs.com/">Spine</a> </li>    <li><a href="http://coffeescript.org/">CoffeScript</a> </li>    <li><a href="http://kmalakoff.github.com/knockback/">Knockback</a> </li>    <li><a href="https://github.com/derickbailey/backbone.modelbinding">Dericks Backbone data binding plugin</a> </li>    <li><a href="http://weblog.bocoup.com/introducing-the-backbone-boilerplate/">Bocoup - Introducing the Backbone Boilerplate</a> </li>    <li><a href="https://groups.google.com/forum/#!forum/backbonejs">Backbone mailing list (Google Group)</a> </li>    <li><a href="https://github.com/derickbailey/backbone.marionette">Backbone.Marionette</a> </li>    <li><a href="https://github.com/derickbailey/bbclonemail">BBCloneMail on GitHub</a> </li>    <li><a href="http://bbclonemail.heroku.com">BBCloneMail live on Heroku</a> </li>    <li><a href="https://github.com/derickbailey/backbone.memento">Backbone.Memento</a> </li>    <li><a href="http://documentcloud.github.com/underscore/">Underscore.js</a> </li>    <li><a href="twitter.com/joeybeninghove">Joey Beninghove</a> </li>    <li><a href="http://docs.jquery.com/QUnit">QUnit</a> </li>    <li><a href="http://pivotal.github.com/jasmine/">Jasmine</a> </li>    <li><a href="https://github.com/velesin/jasmine-jquery">jasmine-jquery</a> </li>    <li><a href="http://sinonjs.org/">Sinon.js</a> </li>    <li><a href="http://wekeroad.com/2011/08/11/the-backbonejs-todo-list-sample-refactored-part-1/">Rob Conery refactors the Backbone.js todo list sample</a> </li>    <li><a href="http://backbonetraining.net/resources">Derick's list of Backbone resources</a> </li>    <li><a href="http://requirejs.org/">Require.js</a> </li>    <li><a href="http://backbonetraining.net/">backbonetraining.net</a> </li>    <li><a href="http://www.watchmecode.net/">watchmecode.net</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0133-Derick-Bailey-on-Backbone.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 132: Phil Haack, Keith Dahlby and Paul Betts on Git for Windows developers</title>
    <link>https://herdingcode.com/herding-code-132-phil-haack-keith-dahlby-and-paul-betts-on-git-for-windows-developers/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-132-phil-haack-keith-dahlby-and-paul-betts-on-git-for-windows-developers/</guid>
    <pubDate>Fri, 20 Jan 2012 21:33:12 GMT</pubDate>
    <description><![CDATA[<p>In this episode, they guys talk with Phil Haack and Paul Betts (both new GitHubbers) and Keith Dahlby (author of posh-git, a set of PowerShell scripts which provide Git/PowerShe</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 132</strong></p>
<p>In this episode, they guys talk with Phil Haack and Paul Betts (both new GitHubbers) and Keith Dahlby (author of posh-git, a set of PowerShell scripts which provide Git/PowerShell integration) about using Git on Windows.</p>  <p><strong>Download / Listen:</strong></p>  <p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0132-Phil-Haack-Keith-Dahlby-and-Paul-Betts-on-Git-for-Windows-developers.mp3">Herding Code 132: Phil Haack, Keith Dahlby and Paul Betts on Git for Windows developers</a></p>  <p></p>  <p><strong>Show Notes:</strong></p>  <ul>   <li>Paul begins with talking about why he thinks Git is cool, starting with the ability to create a clean source history that's based on intent. </li>    <li>Phil says some people who aren't used to distributed version control get the wrong impression of rewriting history. The idea is that you're rewriting history as you work locally to build a clean commit. You don't generally rewrite history once you've pushed to the master repository. </li>    <li>Keith says he tells people that when you push, it's permanent. Until then, you can pretend you're perfect. It's just a save point - this reminds Jon of a quote from Dave Ward that this is like the ability to create save points anywhere in a video game. </li>    <li>Scott K says this is all great in theory, but he never sees people taking advantage of history rewriting. He goes on to say that he loves GitHub but hates Git because Git hates developers - rewriting history is way too hard. </li>    <li>Phil says that this makes more sense when you think of this in terms of replaying changes. </li>    <li>Phil says that he really started liking Git after reading the site Think Like (a) Git. </li>    <li>Paul says that he thinks this would be a lot easier to understand if you could see and work with things visually. Scott K says gitk kind of works but it's clunky. Keith talks about gitk a bit more. </li>    <li>Scott K talks about how he regularly ends up with a corrupted state and asks for recommendations. Paul says the solution is to use either git reset or git rebase and explains what they mean. Jon asks for more info, and Paul talks about git reset --hard. </li>    <li>Phil talks about the importance of following an established workflow to avoid problems or getting in a state you don't understand. He talks about the published workflow they use for the NuGet Gallery. Paul talks about how he and Phil are working on improving the interface to make it easy to follow working patterns. </li>    <li>K Scott talks about one confusion is that there are so many commands and parameters. Keith says that you can get by with a tiny subset, and can grow as needed. </li>    <li>Kevin asks if it's possible to get your repository into a corrupted state, or if users are just getting confused by a valid state. Paul talks about some finer points of how things are stored and wraps up by saying really the only way to lose work with Git is to mess up or delete uncommitted changes or files. </li>    <li>Twitter question from @LeeFlannery: &quot;can you discuss how command line git for Win isn't so scary - stop waiting for integrated VS tooling to use git.&quot; Paul talks about how the MSysGit makes things unnecessarily confusing by making you think you need to use the Bash prompt. </li>    <li>Twitter question from @JavierLozano: &quot;Why use powershell instead of bash for a console client? What are the gains?&quot; Keith explains how posh-git gives you a Windows native experience (e.g. Windows style file paths). Phil talks about how the posh-git tab extensions give you an IntelliSense-ish experience with Git. Keith explains that posh-git does things like keeps track of which file have been added, so you can autocomplete files you're adding rather than have to type them out. </li>    <li>Scott K says that posh-git was slow when he tried to use it and asks if performance has been improved. Keith says that posh-git calls git status on every action to offer contextual tab expansions and explains how to disable that for faster performance. </li>    <li>Keith talks about installing posh-git using psget, and more advanced use by cloning the posh-git repo and customizing it. Jon asks why installing posh-git in command-line didn't work in the PowerShell ISE, and Keith explains that there are separate profiles for PowerShell command line, PowerShell ISE, and the NuGet Package Manager prompt in Visual Studio. </li>    <li>Question from John Sheehan: &quot;What are some of the other things outside of tooling that are impediments to Windows users adopting Git.&quot; Paul lists several: line endings, SSH keys, the MSysGit install, and the git commit using vi in compatibility mode. </li>    <li>Keith says that MSysGit isn't Git for Windows, it's Git for Linux developers on Windows - it doesn't behave like Windows at all. Keith asks who runs MSysGit. </li>    <li>Phil says there are a lot of conceptual obstacles to adoption, and says that he thinks it's necessary to make it easier to do simple things without worrying about obscure and advanced options. </li>    <li>Jon talks about the frustrations in typing in the SSH passphrase and asks for suggestions. Paul talks about ssh-agent. </li>    <li>Jon asks for specifics about what Paul and Phil are working on. Paul say the idea is similar features to GitHub for Mac - not necessarily in design, but featureset. </li>    <li>Jon says that he likes how the TortoiseHg tooling shows the command-line version you could have typed when you perform operations in the GUI. Paul agrees that's useful, and Keith points out that it's available in Git Extensions. </li>    <li>Scott K says that he likes the built in Mercurial server and says it'd be nice if Git made it easier to run a Git repo on Windows. Paul says that it's really easy to set that using a fileshare. Scott K says he uses that, but it's not as discoverable as the Mercurial webserver. Keith talks about how setting up he's seen this set up using per-user shares. </li>    <li>Twitter question from @jeremydmiller &quot;Are you concerned that folks spend so much time debating and tweaking their Git workflow that they'll forget to actually code?&quot; Phil and Keith discuss two popular GitHub workflows: GitHub Flow and git-flow. </li>    <li>Twitter question from @kppullin &quot;why must line endings be so painful!&quot; Paul explains the source of the problem and how autocrlf tries to solve that, and there's a general about how problems occur. </li>    <li>Keith talks about using gitattributes to do things like telling Git to use C# differencing with .cs files. </li>    <li>Jon asks finding good, non-hostile documentation. Scott K says that all the books focus on happy path documentation rather than useful stuff. Some useful online resources are listed, including Think Like (a) Git, The Git Parable, and ProGit.org. </li>    <li>Keith jokingly asks if we can talk about why Git is better than Mercurial. Jon takes the bait, and hilarity ensues. </li>    <li>There's a long discussion about the usefulness of a clean history and the ability to accurately use &quot;blame&quot; to understand when a bug was introduced. </li>    <li>Things start to wrap up and K Scott asks for last thoughts. Paul mentions GitPad, which sets Notepad as your Git commit editor. Keith recommends Console2. Phil points out a neat hidden feature on GitHub - using T to get incremental search. </li> </ul>  <p><strong>Show Links:</strong></p>  <ul>   <li>Phil Haack - @haacked </li>    <li><a href="http://solutionizing.net/">Keith Dahlby</a> - @dahlbyk </li>    <li><a href="http://blog.paulbetts.org/">Paul Betts</a> - @xpaulbettsx </li>    <li><a href="http://github.com/">GitHub</a> </li>    <li><a href="http://think-like-a-git.net/">Think Like (a) Git</a> </li>    <li><a href="https://github.com/dahlbyk/posh-git">posh-git</a> </li>    <li>Phil's recent post about posh-git: <a href="http://haacked.com/archive/2011/12/13/better-git-with-powershell.aspx">Better Git with PowerShell</a> </li>    <li><a href="http://schacon.github.com/git/gitk.html">gitk</a> </li>    <li><a href="http://scottchacon.com/2011/08/31/github-flow.html">GitHub Flow</a> </li>    <li><a href="http://nvie.com/posts/a-successful-git-branching-model/">git-flow</a> </li>    <li><a href="http://code.google.com/p/gitextensions/">Git Extensions</a> </li>    <li><a href="http://mac.github.com/">GitHub for Mac</a> </li>    <li><a href="http://tom.preston-werner.com/2009/05/19/the-git-parable.html">The Git Parable</a> </li>    <li><a href="http://progit.org/book/">ProGit.org</a> </li>    <li><a href="http://progit.org/book/ch7-2.html">ProGit chapter on gitattributes</a> </li>    <li><a href="https://github.com/github/GitPad">GitPad</a> </li>    <li><a href="http://sourceforge.net/projects/console/">Console2</a> </li> </ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0132-Phil-Haack-Keith-Dahlby-and-Paul-Betts-on-Git-for-Windows-developers.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 131: Chris Williams and Matthew Podwysocki on the Javascript community</title>
    <link>https://herdingcode.com/herding-code-131-chris-williams-and-matthew-podwysocki-on-the-javascript-community/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-131-chris-williams-and-matthew-podwysocki-on-the-javascript-community/</guid>
    <pubDate>Wed, 04 Jan 2012 20:01:00 GMT</pubDate>
    <description><![CDATA[<p>In this episode, the guys talk to Chris Williams (organizer of jsConf) and Matthew Podwysocki about the Javascript community, fighting negativity in the programmer community, em</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 131</strong></p>
In this episode, the guys talk to Chris Williams (organizer of jsConf) and Matthew Podwysocki about the Javascript community, fighting negativity in the programmer community, emerging Javascript trends, and the merits of spring beers.
<ul>
	<li>Jon asks Chris to catch us up with what's happened since we last talked to him, just after jsConf.us 2010.</li>
	<li>Chris starts with his jsConf.eu 2010 talk, including Promote.js and the reminder not to forget the roots of the Javascript community.</li>
	<li>Chris doesn't speak at the jsConf.us conference, mostly because he organizes the US conference and doesn't want to present an appearance of unfairness.</li>
	<li>Chris then moves on to his jsConf.eu 2011 talk, An End To Negativity.</li>
	<li>Chris says that the negativity is rampant in the programming community, and it feeds on itself. There are far too many people who participate in community conversation just to cheer on the fights. Our profession has a unique opportunity to create and try new things, but the negativity in the community stifles that. We need to stop the negative "hating" in private conversations, not shouting matches in online forums.</li>
	<li>If you disagree with a technology, put your energy to constructive use via open source contribution (fork and create) rather than writing scathing blog posts.</li>
	<li>Scott K says that negative discussion's everywhere - all online discussion, politics, media. Rather than discuss ideas, people just call others idiots. Chris says you've got to start locally. His recommended solution involves beer.</li>
	<li>Matt says it's easier to lob bombs from afar, and personal discussions solves that. Kevin says one on one discussions over beer aren't always possible, and Chris says even the offer is what's important.</li>
	<li>Jon says that he's never tried to resolve issues one-on-one and come away convinced that the other person is just plain evil. Usually there's some unspoken history that explains why people think as they do. Chris applies that to prejudices against Javascript that were formed by bad experiences people may have had long ago.</li>
	<li>Jon says he's noticed that Chris' speaking style is disarmingly humble. Chris says he really values humility in developers, and that the current rock star ninja terminology is too self promoting.</li>
	<li>Jon says that the online discussion forums like Reddit and Hacker News are all about voting up or down, which encourages negativity. Chris talks about trite these arguments often are, such as focusing on features which aren't yet implemented in new technologies.</li>
	<li>Scott K. says he's amazed at the overall positivity on StackOverflow. Chris says he thinks it's a matter of time before it creeps in. Jon says he thinks that he thinks the vote engineering and overall problem solving focus of StackOverflow is designed to produce overall positive results.</li>
	<li>Jon reacts to Chris' Fork and Create call by saying that when he's releasing code publicly, it's a lot harder to criticize others. Chris says that people who are busy creating don't have time for trivial arguments, and Matt says that working publicly gives you a healthy dose of vulnerability.</li>
	<li>Chris talks about the negativity he encounters in putting on conferences. At jsConf.us 2011 they raised over $3000 to contribute towards increasing gender diversity and it received no attention at all, while a negative incident at the conference got a lot of attention.</li>
	<li>Jon says that in teaching his daughter some basic programming, he's reminded of the fun of creation that got him started in development. That's got to be our focus. Chris and Matt talk about how their parents spent time introducing them to computers, and would love to see parents introducing their kids to computers.</li>
	<li>Scott K says that he's seen the community as a whole move from a focus on writing code to macho chest thumping.</li>
	<li>Jon says he liked the part of Chris' keynote that welcomed Dart and CoffeeScript. Chris said that innovation and new languages are great since they move things forward. Chris points out that people bash on Flash, but forget that it was instrumental in the development of Javascript through things like JIT compilation.</li>
	<li>Scott K wonders if we'd do better to just create new languages more often. Jon says that's tricky with Javascript since it runs on so many platforms, but Scott K says that he thinks there's more room for extending Javascript inside the language itself. Chris says both can be powerful, and mentions ClojureScript. He says that the velocity of change for Javascript is accelerating with more frequent browser releases and the things he's seeing in Windows 8. He says we need to embrace that change by being more willing to drop support for older browsers.</li>
	<li>Christ talks about how TeamJS is raising money in the Mozilla Firefox Challenge (<a href="http://www.crowdrise.com/TeamJS">please join in!</a>).</li>
	<li>Jon reacts to Chris' keynote question, "What would you do if you knew you could not fail," noting that most of his personal failures come from not attempting things. Chris says that quote is inspirational to him, and agrees that we fail in 100% of things we do not attempt.</li>
	<li>Twitter question from @elijahmanor - "Recently Chris tweeted that the trolls may be right. What did he mean by that?" Chris says that a reaction to hype around node.js, and there's a general discussion about node.js.</li>
	<li>Jon asks Chris about his reactions overall to Microsoft getting involved with things like node.js and Javascript on Windows 8. Chris says that the community sometimes has an initial shock, but Microsoft-of-new is a different company that's doing a lot of great stuff. He says he's happy to see talks from Microsoft developers that aren't "Microsoft presentations."</li>
	<li>Matt talks about a recent node.js talk focused on maximizing node.js hosting efficiency.</li>
	<li>Jon asks Matt and Chris to give us a heads up on some emerging technologies in JavaScript land. Matt mentions emscripten, jsmad, and RiverTrail.</li>
	<li>Jon asks if people (himself included) will eventually realize that Javascript isn't inherently too slow for these computationally intense applications. Scott K and Matt talk about how things like V8, JITing, and investment by big companies continue to make Javascript faster and faster.</li>
	<li>Jon asks Chris what trends he's noticing, and he mentions dynjs, pdfjs, and jslinux. He mentions browser vendors moving towards extension systems based on Javascript. Jon talks about how he thinks Mozilla's XUL was so far ahead of the game, using HTML/CSS/Javascript as a development platform.</li>
	<li>Matt brings up JSIL (a compiler that transforms .NET applications to Javascript). There's a discussion of Javascript as a VM for other languages. Matt mentions Microsoft's Volta initiative.</li>
	<li>Chris and Scott K talk about putting other languages in the browser. Chris says that Javascript has been battle tested in a way that no other language has.</li>
	<li>There's a discussion of the node.js work that Microsoft's been doing - not just getting it to run on Windows, but in making Windows / IIS hosting for node.js compelling.</li>
	<li>Jon asks Chris and Matt for their current recommendations, and an argument over spring beers erupts.</li>
</ul>
Show links:
<ul>
	<li><a href="http://jsconf.us/">jsConf.us</a>, <a href="http://jsconf.eu/2011/">jsConf.eu</a></li>
	<li><a href="http://voodootikigod.com/">Chris Williams's Blog</a>, <a href="http://twitter.com/voodootikigod">@voodootikigod</a></li>
	<li><a href="http://codebetter.com/blogs/matthew.podwysocki/default.aspx">Matt Podwysocki's Blog</a></li>
	<li><a href="http://promotejs.com/">Promote JS</a></li>
	<li><a href="http://en.wikipedia.org/wiki/Bcrypt">bcrypt</a></li>
	<li><a href="https://github.com/h5bp/html5-boilerplate/issues/28">Issue 28</a></li>
	<li><a href="http://lucumr.pocoo.org/2011/12/22/implicit-scoping-in-coffeescript/">The Problem with Implicit Scoping in CoffeeScript</a></li>
	<li>Raganwald: <a href="https://github.com/raganwald/homoiconic/blob/master/2011/12/jargon.md#readme">CoffeeScript is not a language worth learning</a></li>
	<li><a href="https://github.com/clojure/clojurescript">ClojureScript</a></li>
	<li><a href="http://www.crowdrise.com/TeamJS">TeamJS donating to the Mozilla Firefox Challenge</a></li>
	<li><a href="https://github.com/tjanczuk/denser">denser - an experiment with high density server side java script</a></li>
	<li><a href="http://jsconf.eu/2011/garbage_collection_in_javascri.html">Erik Corry - Garbage Collection in JavaScript</a></li>
	<li><a href="https://github.com/kripken/emscripten/wiki">emscripten - an LLVM-to-JavaScript compiler</a></li>
	<li><a href="http://jsmad.org/">jsmad - a Javascript MPEG audio decoder</a></li>
	<li><a href="https://github.com/RiverTrail/RiverTrail">RiverTrail - a ParallelArray abstraction for JavaScript</a></li>
	<li><a href="http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.html">Atwood's Law</a></li>
	<li><a href="https://github.com/dynjs/dynjs">dynjs - (almost) 100% invokedynamic js impl</a></li>
	<li><a href="https://github.com/mozilla/pdf.js">pdfjs - PDF Renderer in Javascript</a></li>
	<li><a href="http://bellard.org/jslinux/">jslinux - Linux shell running in Javascript</a></li>
	<li><a href="https://developer.mozilla.org/En/XUL">Mozilla XUL</a></li>
	<li><a href="http://jsil.org/">JSIL</a></li>
	<li><a href="http://en.wikipedia.org/wiki/Microsoft_Live_Labs_Volta">Microsoft Live Labs Volta</a></li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0131-Chris-Williams-and-Matthew-Podwysocki-on-the-Javascript-community.mp3">Herding Code 131 - Chris Williams and Matthew Podwysocki on the Javascript community</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0131-Chris-Williams-and-Matthew-Podwysocki-on-the-Javascript-community.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 130: Dave Weaver on Loggr - a realtime analytics service built with MVC, MongoDB and SignalR</title>
    <link>https://herdingcode.com/herding-code-130-dave-weaver-on-loggr-a-realtime-analytics-service-built-with-mvc-mongodb-and-signalr/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-130-dave-weaver-on-loggr-a-realtime-analytics-service-built-with-mvc-mongodb-and-signalr/</guid>
    <pubDate>Mon, 02 Jan 2012 20:56:44 GMT</pubDate>
    <description><![CDATA[<p>In this episode, Jon Galloway and Kevin Dente talk to Dave Weaver about Loggr, a complete logging, analytics and notification system that will easily bolt on to your application</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 130</strong></p>
In this episode, Jon Galloway and Kevin Dente talk to Dave Weaver about Loggr, a complete logging, analytics and notification system that will easily bolt on to your application.
<ul>
	<li>Dave runs Markkup, a consulting company and is building Loggr, SaaS application that provides real time logging and monitoring.</li>
	<li>He was one of the founders of Chili!Soft, which was an implementation of Classic ASP that ran on Linux, Solaris, IBM software, and Windows.</li>
	<li>Dave tells the story behind Chili!Soft, which is now Sun Java System Active Server Pages.</li>
	<li>Dave goes into the main features/benefits of Loggr.</li>
	<li>Jon asks about reports and queries provided by Loggr.</li>
	<li>Dave mentions there is an HTML5 version of the dashboard that works well on a tablet as well as an iPhone app. There is also an Android app in the works.</li>
	<li>Jon and Dave discuss the freemium model that Loggr employs.</li>
	<li>The guys move to talking about the stack that Loggr is developed on.</li>
	<li>It is built on ASP.NET MVC2.</li>
	<li>It uses Backbone.js for the client side JavaScript.</li>
	<li>MongoDB is used as the database.</li>
	<li>SignalR is used for the client-server communication to provide live user monitoring.</li>
	<li>Kevin asks about the decision to build a startup on the .NET platform.</li>
	<li>The guys touch on the VB.NET vs C# debate.</li>
	<li>Jon asks about the backup/redundancy story for MongoDB.</li>
	<li>Dave talks about the HTML5 client vs the native iOS app vs the Android app.</li>
	<li>Jon asks about the experience developing the iOS and Android apps.</li>
	<li>There are agents for .NET, Java, ColdFusion, PHP, Ruby, JavaScript.</li>
	<li>You can configure log4net to log to Loggr.</li>
	<li>Dave mentions Loggr uses Rapleaf to display demographics for a user, such as age and gender.</li>
	<li>Loggr also uses FullContact to display the social networks and avatars of a user.</li>
	<li>Jon asks Dave for advice for anyone interested in starting a similar venture.</li>
	<li>Jon asks about the Loggr road map.</li>
	<li>Jon asks about the business and marketing side of Loggr.</li>
	<li>Jon asks if any companies are leveraging the Loggr APIs to create other offerings.</li>
	<li>Jon asks if there is any demand for customers to host Loggr internally.</li>
	<li>Kevin asks if there have been any issues related to versions of the Loggr APIs.</li>
	<li>Kevin asks about downtime and SLAs.</li>
	<li>Jon asks about the process to get started with Loggr.</li>
</ul>
Show links:
<ul>
	<li><a href="http://loggr.net/">Loggr</a> <a href="http://twitter.com/loggrnet">@loggrnet</a></li>
	<li><a href="http://daveweaver.net/">Dave Weaver's blog</a> <a href="http://twitter.com/#!/davideweaver">@davidweaver</a></li>
	<li><a href="http://www.markkup.com/">Markkup</a></li>
	<li><a href="http://discuss.joelonsoftware.com/default.asp?joel.3.238806.10">Joel on Software post about Chili!Soft</a></li>
	<li><a href="http://docs.oracle.com/cd/E19857-01/821-0988/funig/index.html">Sun Java System Active Server Pages (formerly Chili!Soft)</a></li>
	<li><a href="http://www.missionresearch.com/index.html">Mission Research</a></li>
	<li><a href="http://blog.loggr.net/post/9404694838/what-about-google-analytics">Blog post referencing Google Analytics</a></li>
	<li><a href="http://irony.codeplex.com/">Irony on CodePlex</a></li>
	<li><a href="https://github.com/loggr">Loggr code on Github</a></li>
	<li><a href="http://documentcloud.github.com/backbone/">Backbone.JS</a></li>
	<li><a href="http://www.mongodb.org/">MongoDB</a></li>
	<li><a href="http://www.mongodb.org/display/DOCS/CSharp+Language+Center">Official MongoDB C# driver</a></li>
	<li><a href="https://github.com/SignalR/SignalR">SignalR</a></li>
	<li><a href="http://xamarin.com/monotouch">MonoTouch</a></li>
	<li><a href="http://xamarin.com/monoforandroid">Mono for Android</a></li>
	<li><a href="http://blog.loggr.net/post/8993666809/nlog-writes-to-loggr">Nlog writes to Loggr</a></li>
	<li><a href="http://logging.apache.org/log4net/">log4net</a></li>
	<li><a href="https://www.rapleaf.com/">Rapleaf</a></li>
	<li><a href="http://fullcontact.com/">FullContact</a></li>
	<li><a href="http://evernote.com">Evernote</a></li>
	<li><a href="http://exceptioneer.com">Exceptioneer</a></li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0130-Dave-Weaver-on-Loggr-a-realtime-analytics-service-built-with-MVC-MongoDB-and-SignalR.mp3">Herding Code 130: Dave Weaver on Loggr - a realtime analytics service built with MVC MongoDB and SignalR</a></p>


<em>This week's show notes were typed up by <a href="http://twitter.com/rossfuhrman">@RossFuhrman</a> - Thanks!!!</em>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0130-Dave-Weaver-on-Loggr-a-realtime-analytics-service-built-with-MVC-MongoDB-and-SignalR.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 129: Rob Reynolds on Chocolatey and the Chuck Norris Frameworks</title>
    <link>https://herdingcode.com/herding-code-129-rob-reynolds-on-chocolatey-and-the-chuck-norris-frameworks/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-129-rob-reynolds-on-chocolatey-and-the-chuck-norris-frameworks/</guid>
    <pubDate>Tue, 13 Dec 2011 18:12:30 GMT</pubDate>
    <description><![CDATA[<p>In this episode, Jon Galloway, Kevin Dente and guest host John Sheehan talk to Rob Reynolds about Chocolatey (a Machine Package Manager, somewhat like apt-get for Windows), as w</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 129</strong></p>
In this episode, Jon Galloway, Kevin Dente and guest host John Sheehan talk to Rob Reynolds about Chocolatey (a Machine Package Manager, somewhat like apt-get for Windows), as well as Rob's Chuck Norris frameworks for project setup, management, deployment, and more.
<ul>
	<li>Rob talks about how Nu helped shape the direction of NuGet.</li>
	<li>Chocolatey is a tool for installing system wide applications such as Notepad++ or Git.</li>
	<li>Rob explains that it is built in PowerShell on top of NuGet.</li>
	<li>The guys talk about the simple process to install Chocolatey and install an application.</li>
	<li>Rob explains how Chocolatey was born.</li>
	<li>John S. asks what the process is to create a new Chocolatey package.</li>
	<li>The PowerShell command to install Chocolatey is: iex ((new-object net.webclient).DownloadString("http://bit.ly/psChocInstall"))</li>
	<li>Jon G. asks what Chocolatey does behind the scenes when installing a package.</li>
	<li>Jon G. asks how to use Chocolatey to uninstall software Chocolatey installed.</li>
	<li>John S. asks if Chocolatey has been used in a way that wasn't expected.</li>
	<li>The guys discuss the various ways of setting up a process to install multiple packages at once.</li>
	<li>Rob explains the difference between Chocolatey and Ninite.</li>
	<li>Kevin asks about the silent installs and how it works if the application doesn't support silent installs.</li>
	<li>Kevin asks about the update story.</li>
	<li>The guys discuss learning and understanding PowerShell.</li>
	<li>Rob discusses the Chocolatey integration with Web Platform Installer.</li>
	<li>John S. asks about the reason behind writing Chocolatey in PowerShell.</li>
	<li>Kevin asks about Microsoft's package manager, CoApp and how it relates to and is different from Chocolatey.</li>
	<li>John S. and Rob discuss how Chef, Puppet and Chocolatey could be used to spin up a new machine for a production deployment.</li>
	<li>Kevin asks about the fact that Rob is the owner of most of the Chocolatey packages and how he keeps track of updates to all those packages.</li>
	<li>Rob talks about the Chuck Norris framework and the following components of the framework:</li>
	<li>WarmuP -allows you to define templates for entire projects and change them as technology changes and you learn new things.</li>
	<li>UppercuT - is a conventional automated .NET build framework (templated NAnt). UppercuT is the insanely easy to use build framework.</li>
	<li>RoundhousE - is an automated database deployment (change management) system that allows you to use your current idioms and gain much more.</li>
	<li>DropkicK - is a fluent deployment framework that seeks to make deployments easier.</li>
	<li>Jon asks if the company Rob and Dru worked for when they were working on these projects was receptive to their open source development.</li>
	<li>Rob will be speaking on NuGet at CodeMash (it's sold out) in January.</li>
</ul>
Show links:
<ul>
	<li><a href="http://chocolatey.org">Chocolatey.org</a></li>
	<li><a href="http://ferventcoder.com/">Rob Reynolds </a><a href="http://twitter.com/#!/ferventcoder">@ferventcoder</a></li>
	<li><a href="https://twitter.com/johnsheehan">Guest Host John Sheehan </a></li>
	<li><a href="http://nuget.org">Nuget </a></li>
	<li><a href="http://www.youtube.com/watch?v=Wt_unjS_SUo">April video for creating a new Chocolatey package 6:46</a></li>
	<li><a href="http://twitter.com/dahlbyk">Keith Dahlby </a></li>
	<li><a href="http://twitter.com/monkeyonahill">James Tryand </a></li>
	<li><a href="http://www.paulstovell.com/octopus/intro">Octopus </a></li>
	<li><a href="http://vagrantup.com/">Vagrant </a></li>
	<li><a href="http://Ninite.com">Ninite </a></li>
	<li><a href="http://www.microsoft.com/web/">Web Platform Installer </a></li>
	<li><a href="https://github.com/scottmuc/Pester">Pester </a></li>
	<li><a href="http://coapp.org">CoApp </a></li>
	<li><a href="http://www.opscode.com/chef/">Chef </a></li>
	<li><a href="http://projects.puppetlabs.com/projects/puppet">Puppet </a></li>
	<li><a href="http://ChangeDetection.com">Change Detection </a></li>
	<li><a href="https://github.com/chucknorris">Chuck Norris Framework </a></li>
	<li><a href="http://drusellers.com">Dru Sellers </a><a href="http://twitter.com/drusellers">@drusellers</a></li>
	<li><a href="https://github.com/schambers/fluentmigrator">Fluent Migrator </a></li>
	<li><a href="http://code.google.com/p/tarantino/updates/list">Tarantino</a></li>
	<li><a href="http://codemash.org">CodeMash </a></li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0129-Rob-Reynolds-on-Chocolatey-and-the-Chuck-Norris-Frameworks.mp3">Herding Code 128: Rob Reynolds on Chocolatey and the Chuck Norris Frameworks</a></p>


<em>This week's show notes were typed up by <a href="http://twitter.com/rossfuhrman">@RossFuhrman</a> - Thanks!!!</em>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0129-Rob-Reynolds-on-Chocolatey-and-the-Chuck-Norris-Frameworks.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 128: Corey Haines on Global Day of Coderetreat (December 3)</title>
    <link>https://herdingcode.com/herding-code-128-corey-haines-on-global-day-of-coderetreat-december-3/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-128-corey-haines-on-global-day-of-coderetreat-december-3/</guid>
    <pubDate>Sat, 26 Nov 2011 23:13:32 GMT</pubDate>
    <description><![CDATA[<p>On this episode of Herding Code, Scott K, Jon, and Kevin talk to Corey Haines about the Global Day of Coderetreat event being held in 90+ cities on December 3. Scott asks Corey</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 128</strong></p>
On this episode of Herding Code, Scott K, Jon, and Kevin talk to Corey Haines about the Global Day of Coderetreat event being held in 90+ cities on December 3.
<ul>
	<li>Scott asks Corey to start by explaining his software journeyman thing, or as Scott calls it "couch surfing in return for coding." Corey describes how he transitioned from a traditional software developer job to training and speaking.</li>
	<li>Scott describes his experiences at a Coderetreat in Seattle - a series of 45 minute pair programming exercises with Conway's Game of Life under a variety of constraints.</li>
	<li>Corey explains how Coderetreat got started at CodeMash 2009 as a way to intentionally practice writing beautiful code outside of the pressure of day to day work.</li>
	<li>Corey talks about how deleting your code at the end of every 45 minute session means you can concentrate on learning rather trying to complete anything.</li>
	<li>Jon asks if people are working towards any kind of graphical output, and Corey says that the focus is really on the code, and learning how to respond to changes and constraints.</li>
	<li>Twitter question from George Dinwiddie (@gdinwiddie) "What was the most interesting starting point for the Game of Life" Corey talks about people often start with traditional object oriented noun/verb approaches in the morning and move towards an outside-in mentality in the afternoons. He's seen some interesting work with functional languages such as Clojure and J.</li>
	<li>Jon asks about the breakdown of programming languages that he sees people using.</li>
	<li>There's a discussion of how setup and install can often eat up a lot of time at this kind of event, and Corey talks about how that's not such a problem here: people show up with working development environments, are working at the testing level, and can just pair with someone who</li>
	<li>Jon asks what common patterns he sees people learn. Corey talks about some big changes in TDD focus and application design.</li>
	<li>Scott and Corey talks about the benefit of pairing with a lot of people at differing skill levels.</li>
	<li>Twitter question from Steven Proctor (@stevenproctor) "How often do you get to pair at these events" - Corey says that the facilitator role means you don't get to pair, so he's only been able to a couple times.</li>
	<li>Kevin asks how new pairing is to attendees, and if there's any specific focus on learning how to pair better. Corey talks about some specific exercises which focus on paring techniques, including a Mute session (no talking, all communication through code) and Find The Loophole (in which the the coder purposefully tries to write the wrong algorithm while passing all tests).</li>
	<li>Scott says he</li>
	<li>Twitter question from from Maggie Longshore (@MaggieLongshore) "How he makes each code session unique so it doesn't get monotonous. Share some tips for facilitators."</li>
	<li>Jon asks about the upcoming Global Day of Coderetreat on December 3. Corey explains what will be going on worldwide, and how he'll be exploiting a flight over the international date line to attend the full day sessions in both Sydney and Hawaii.</li>
	<li>Jon asks about some of the guidelines for listed hosting a Coderetreat, including a good (non-pizza) lunch and no cost to attendees. Corey says that in some cases there's a deposit which is fully refunded provided you show up.</li>
	<li>Jon asks Corey how people can find out about a Coderetreat near them, and if it's still possible to set up a Coderetreat if there isn't one in your area. Corey says yes, and points us to Coderetreat.org for all information about the Global Day of Coderetreat on December 3.</li>
	<li>Jon asks Corey about his MercuryApp, a micro-journaling system with analytics that he and Sara Gray run.</li>
	<li>The guys chide Corey for slacking off by setting his Global Day of Coderetreat so low, and he talks about his difficult decision to exclude astronauts this time around.</li>
</ul>
Show Links:
<ul>
	<li><a href="http://coderetreat.org/">Coderetreat.org</a> (Global Day of Coderetreat site)</li>
	<li><a href="http://coderetreat.com/">Coderetreat.com</a> (Information on the Coderetreat format)</li>
	<li><a href="http://coreyhaines.com/">Corey Haines</a> (<a href="http://twitter.com/coreyhaines">@coreyhaines</a>)</li>
	<li><a href="http://coderetreat.com/gol.html">Conway's Game of Life</a></li>
	<li><a href="http://en.wikipedia.org/wiki/J_(programming_language)">J Programming Language</a></li>
	<li><a href="https://www.mercuryapp.com/">MercuryApp</a></li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0128-Corey-Haines-on-Global-Day-of-Coderetreat.mp3">Herding Code 128: Corey Haines on Global Day of Coderetreat</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0128-Corey-Haines-on-Global-Day-of-Coderetreat.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 127: Setting up your Computer and Work Area</title>
    <link>https://herdingcode.com/herding-code-128-setting-up-your-computer-and-work-area/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-128-setting-up-your-computer-and-work-area/</guid>
    <pubDate>Tue, 22 Nov 2011 19:20:45 GMT</pubDate>
    <description><![CDATA[<p>On this episode of Herding Code, the guys discuss computer and work area setup, from installation and file management to ergonomic work areas and animated GIF&apos;s. Kevin and K Sco</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 127</strong></p>
On this episode of Herding Code, the guys discuss computer and work area setup, from installation and file management to ergonomic work areas and animated GIF's.
<ul>
	<li>Kevin and K Scott both just got MacBooks, they discuss what they are doing with them, such as using the emulator to test HTML5 apps for iPhone/iPad.</li>
	<li>Jon asks, "When you get a new mac, you open it up and rainbows come out of it. Do you have to install anything? How does that setup process work?"</li>
	<li>Kevin talks about development tooling such as HomeBrew and XCode. They discuss different tools and apps that they need to do development.</li>
	<li>Jon asks about twitter apps. K Scott uses the browser; Kevin is using the official Twitter app which seems pretty good except when it won't launch the browser when clicking on the links in tweets.</li>
	<li>When upgrading, do you go through fresh install or remove programs? Jon talks about using Ninite to install programs you use a lot such as 7Zip, Audacity, Chrome, FileZilla, Skype, etc, because it manages everything for you and you don't have to click through all the install dialogs.</li>
	<li>Also talks about using the Microsoft Web Platform Installer to get all of the web development stuff.</li>
	<li>They talk about the pros and cons of using Microsoft Office, and discuss using the Mac apps or Google docs or Office.Live.com.</li>
	<li>Jon is using Mesh to share between computer and sky drive; what kind of file sharing? K Scott is using Dropbox, says Live Mesh is important because of the remote desktop feature of Mesh. They talk about different file sharing companies and features, and talk about iCloud.</li>
	<li>Jon talks about the Windows Home Group feature, and how easy it is to share files, printers, media, etc., and talks about doing backups. Uses Space Sniffer to find big files.</li>
	<li>Jon got an SSD, so he made the old drive his D drive and used the SSD as his primary drive. If the SSD failed (which it did), he could just boot off the D drive.</li>
	<li>They discuss the placement of the files on the computer, whether to move to a second hard drive or partition, etc., and whether to use Libraries; they talk about searching for files in Windows. Some software apps disable the file indexer in Windows. When you install on an SSD, they disable some services like defrag, prefetch - it also disabled search.</li>
	<li>K Scott asks what kind of SSD Jon is using that is failing. Jon says it's an OCZ Vertex 2, but he's not sure it's the drive versus the computer - gets blue screen on Windows, thinks it might be a hardware problem with his evil computer.</li>
	<li>Jon asks if they use Hibernate or Sleep? How often do they reboot?</li>
	<li>Kevin never uses hibernate. Jon will have a bunch of stuff running and will hibernate to save the battery on his laptop. Kevin thinks it burns slowly enough on Sleep, only hibernates when doing a full day of travel. Not worth it for a couple of hours.</li>
	<li>With newer laptop (16gb of ram), hibernating is a big deal. Jon ended up setting hibernate file size and tweaking the hibernate settings.</li>
	<li>MacBooks have pretty good battery life. The Air says it has almost 8 hours remaining; thinks that's a little high, but it's pretty good. Jon's ThinkPad W520 is big, but gets around 7 hours, doesn't have to worry about battery life; some optimizing settings make it difficult to use a projector.</li>
	<li>They discuss how often they repave their machines and the effect of using beta versions of software, how they go about getting back to work after repaving. How do you save your settings and reapply them after repaving?</li>
	<li>K Scott - windows get stuck off screen, can't get them back on the main screen. Kevin has a utility that can help with that; it's on his blog. Shows list of off-screen windows - can pick one and it will move it back to the main window.</li>
	<li>Jon finds uninstall really works pretty well now, whereas before it was just a cruel joke.</li>
	<li>K Scott talks about pulling pictures off of a Windows 6 phone. Doesn't attach as an external drive, it installs Windows Mobile Device Center. Nooooo!!!!!</li>
	<li>Jon finished his office and moved into it. What about a standup desk? Found something simple from IKEA that could be used for part of the day. They talk about the idea of a standup desk.</li>
	<li>What about doing your work on a treadmill with a laptop? (Idea from a Neal Stephenson book). What if you did that for 15 to 30 minutes a day? Several people on twitter responded with information about their setups doing this.</li>
	<li>Simple way - found something for forty bucks on amazon that the laptop would rest in. Would just walk, not jog. Others have taken the control thing apart and put in a desk. Let us know if you've tried something like this.</li>
	<li>They discuss ergo keyboards, and using Synergy or Input Director for sharing a keyboard and mouse across multiple computers.</li>
	<li>K Scott has a problem with the keyboard on the Mac; bothers his hands, especially when using it for hours. They like Lenovo keyboards.</li>
	<li>Jon - some keys don't map between Mac and Windows. Kevin uses a Microsoft ergo keyboard with the Mac, and out of habit still uses those keys, and it sometimes has a weird impact.</li>
	<li>They talk about Vim and Mac Vim.</li>
	<li>Jon switched from using a mouse to using a tablet. Mouse is what really hurts your wrist. Kevin moved his mouse to the left for years for the same reason. K Scott likes the TrackPoint pointing stick on the Lenovo.  Kevin's never been a fan of the trackpad on the laptops, but the Mac trackpad is brilliant.</li>
	<li>Talk about using different software to help readability, like Readable, which uses Google web fonts. Can customize it to meet your needs. Makes it easier to read web pages.</li>
	<li>Jeff Atwood posted a blog entry about backlights behind the monitor like LED glowstrips. You can have a dark workspace and lower the contrast using backlights.</li>
	<li>And now for something completely different . a lightning round.
<ul>
	<li>What's your favorite browser?</li>
	<li>What's your favorite Javascript library this week?</li>
	<li>Did Adobe really kill Flash? Does the lightning round really work? Does anyone expect the Spanish Inquisition? Why do people keep making websites that exclusively use Flash, especially restaurants? Is the future of video really animated gifs?</li>
</ul>
</li>
</ul>
&nbsp;

Show Links:
<ul>
	<li><a href="http://mxcl.github.com/homebrew/">Homebrew</a> (OSX)</li>
	<li><a href="http://ninite.com/">Ninite</a> (Windows)</li>
	<li><a href="http://www.microsoft.com/web/downloads/platform.aspx">Web Platform Installer</a> (Windows)</li>
	<li><a href="https://www.dropbox.com/">Dropbox</a> (Web)</li>
	<li><a href="http://explore.live.com/windows-live-mesh">Windows Live Mesh</a> (Windows, Web)</li>
	<li><a href="http://weblogs.asp.net/kdente/archive/2008/11/21/new-utility-for-dealing-with-off-screen-apps-front-and-center.aspx">Front And Center!</a> (utility from Kevin that locates offscreen windows)</li>
	<li><a href="http://www.ikea.com/us/en/catalog/products/S49843462/">Ikea Utby Bar Table</a></li>
	<li><a href="http://www.amazon.com/gp/product/0061977969/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=0061977969">REAMDE</a> (book which mentions treadmill desk)</li>
	<li><a href="http://www.mperfect.net/treadTray/">treadTray</a></li>
	<li><a href="http://llewellynfalco.blogspot.com/2010/11/my-treadmill-desk.html">Llewelyn Falco's Treadmill Desk</a></li>
	<li><a title="Microsoft Natural Ergonomic Keyboard 4000" href="http://www.amazon.com/gp/product/B000A6PPOK/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=B000A6PPOK">Microsoft Natural Ergonomic Keyboard 4000</a></li>
	<li><a href="http://weblogs.asp.net/jgalloway/archive/2006/06/14/Mouseless-Computing.aspx">Mouseless Computing</a> (blog post from Jon)</li>
	<li><a href="http://synergy-foss.org/">Synergy</a></li>
	<li><a href="http://inputdirector.com/">InputDirector</a></li>
	<li><a href="http://support.apple.com/kb/HT1220">Boot Camp mappings for Windows</a></li>
	<li><a href="http://www.vim.org/">VIM</a></li>
	<li><a href="http://www.readability.com/">Readability</a></li>
	<li><a href="http://readable.tastefulwords.com/">Readable</a></li>
	<li><a href="http://www.codinghorror.com/blog/2011/11/bias-lighting.html">Bias Lighting</a> (Jeff Atwood)</li>
	<li><a href="http://documentcloud.github.com/backbone/">Backbone.js</a></li>
	<li><a href="http://raphaeljs.com/">Raphael</a></li>
	<li><a href="http://documentcloud.github.com/underscore/">Underscore.js</a></li>
	<li><a href="http://blogs.adobe.com/flashplatform/2011/11/flash-to-focus-on-pc-browsing-and-mobile-apps-adobe-to-more-aggressively-contribute-to-html5.html">Flash to Focus on PC Browsing and Mobile Apps; Adobe to More Aggressively Contribute to HTML5</a></li>
	<li><a href="http://animalsbeingdicks.com/">Animals Being Dicks</a> (animated GIF's)</li>
	<li><a href="http://iwdrm.tumblr.com/">If We Don't, Remember Me</a> (cinematic animated GIF's)</li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0127-Computer-and-work-area-setup.mp3">Herding Code 127: Setting up your Computer and Work Area</a></p>


<em>This week's show notes were typed up by <a href="http://twitter.com/#!/RobinDotNet">@RobinDotNet</a> - Thanks!!!</em>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0127-Setting-up-your-computer-and-work-area.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 126: Jeff Atwood on the overlap of Video Games and Learning</title>
    <link>https://herdingcode.com/herding-code-126-jeff-atwood-on-the-overlap-of-video-games-and-learning/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-126-jeff-atwood-on-the-overlap-of-video-games-and-learning/</guid>
    <pubDate>Tue, 15 Nov 2011 00:38:57 GMT</pubDate>
    <description><![CDATA[<p>On this episode of Herding Code, the guys talk to Jeff Atwood about the intersection of video games and learning, along the way discussing music, learning to program, casual gam</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 126</strong></p>
<p>On this episode of Herding Code, the guys talk to Jeff Atwood about the intersection of video games and learning, along the way discussing music, learning to program, casual games, bleeding edge games about bleeding (Battlefield 3), Kinect, Wii, and retro games.</p>  <ul>   <li>Jeff talks about video games as a gateway to programming. Jon and Jeff talk about how video games teach a skill which is valuable in programming - the ability to accept and work with arbitrary rules. </li>    <li>Jeff talks about the crappy games he has created. </li>    <li>The guys talk about how Rocksmith can teach you how to actually play a real guitar. The guys compare Rocksmith to Rock Band and Guitar Hero, and Jeff talks about how really learning guitar skills takes work, and Rocksmith and Rock Band take two very different approaches. </li>    <li>There's a discussion of how well Rocksmith senses what you're playing, and how musical performances are by nature interpretive and imprecise. </li>    <li>The guys talk about how video games can lead to real world knowledge and skills. </li>    <li>Jeff brings up the concept of gamification and how it can be used to get people to learn something worthwhile. He discusses the balance of fun and learning, and the importance of keeping learning fun. </li>    <li>Jeff talks about Khan Academy, and how it leverages gamification. </li>    <li>Jon talks about Codecademy - free, interactive programming classes with some game-like features. </li>    <li>K. Scott talks about the Roblox game and using Roblox Studio to do some basic programming. </li>    <li>Jon talks about the World of Goo, and how he'd helped his own daughters build their own levels in World of Goo. </li>    <li>Jeff talks about incidental learning and how games can encourage it. </li>    <li>Jeff says programmers need more points of reference than XKCD to explain things. </li>    <li>Jeff and Kevin talks about the power of gamification as a psychology hack, and how it can be used for good and evil. </li>    <li>Kevin brings up the idea of addiction to Stack Overflow. Jeff talks about the ways that Stack Overflow tries to prevent burnout of contributors. </li>    <li>Jeff talks about the balance of effort and reward, and how Stack Overflow sometimes over-rewards people for minimal work on their part. </li>    <li>The guys talk about video games that encourage teamwork, such as World of Warcraft, Battlefield 3, and Half-Life. </li>    <li>The guys discuss Microsoft Kinect and compare it to the Nintendo Wii. There's a discussion of the controller responsiveness and selection gestures for these systems, and the importance of writing a game that's native to these new platforms as opposed to simple ports.</li>    <li>Jon takes from questions from Twitter about Jeff's favorite retro games, and Jeff says video game nostalgia is overrated - he's really excited about the new games like Battlefield 3.</li>    <li>Kevin asks about MAME and home arcades. Jeff says it was interesting to have build two home arcade machines, but it's not something he'd want to spend anymore time on.</li>    <li>Jon talks about Braid, and the hidden insanely tough extra game of finding all 8 stars. </li>    <li>The guys congratulate Jeff on his recent news that he's expecting twins, and he signs off to play Battlefield 3.</li> </ul>  <p>Show Links:</p>  <ul>   <li>Jeff Atwood (<a href="http://twitter.com/codinghorror">@codinghorror</a> <a href="http://www.fakeplasticrock.com">http://www.fakeplasticrock.com</a> <a href="http://codinghorror.com">http://codinghorror.com</a>) </li>    <li><a href="http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html">Separating programming sheep from non programming goats</a> </li>    <li><a href="http://www.neverworkintheory.org/?p=197">An Empirical Comparison of the Accuracy Rates of Novices using the Quorum, Perl, and Randomo Programming Languages</a> </li>    <li><a href="http://www.amazon.com/gp/product/B004S5PBM0/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=B004S5PBM0&quot;&gt;Rocksmith&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=jongall-20&amp;l=as2&amp;o=1&amp;a=B004S5PBM0&amp;camp=217145&amp;creative=399373">RocksmithRocksmithRocksmith</a> / <a href="http://www.amazon.com/gp/product/B003RS8HG6/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=B003RS8HG6">Rock Band 3</a> </li>    <li><a href="http://www.penny-arcade.com/patv/show/extra-credits">Penny Arcade - Extra Credits</a> </li>    <li>Joi Ito: <a href="http://joi.ito.com/weblog/2006/03/13/leadership-in-w.html">Leadership in World of Warcraft</a> </li>    <li><a href="http://www.khanacademy.org/">Khan Academy</a> </li>    <li><a href="http://www.codecademy.com">Codecademy</a> </li>    <li><a href="http://roblox.com">Roblox game</a> </li>    <li><a href="http://area51.stackexchange.com/proposals/4300/roblox">Roblox Stack Exchange</a> </li>    <li><a href="http://wiki.roblox.com/index.php/Studio">Roblox Studio</a> </li>    <li><a href="http://www.worldofgoo.com/">World of Goo</a> / <a href="http://goofans.com/developers/world-of-goo-level-editor">World of Goo Level Editor</a> </li>    <li><a href="http://blog.stackoverflow.com/2011/10/se-podcast-23/">SE Podcast #23 - James Portnow</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Loss_aversion">Loss aversion</a> </li>    <li><a href="http://youarenotsosmart.com/2011/03/25/the-sunk-cost-fallacy/">The Sunk Cost Fallacy</a> </li>    <li><a href="http://www.amazon.com/gp/product/0307273407/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=0307273407">59 Seconds</a> </li>    <li><a href="http://www.amazon.com/gp/product/B003O6G5TW/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=B003O6G5TW">Battlefield 3</a> </li>    <li><a href="http://xkcd.com/214/">XKCD - The Problem With Wikipedia</a> </li>    <li><a href="http://ejohn.org/blog/next-steps-in-2011/">John Resig joins Khan Academy</a> </li>    <li><a href="http://www.amazon.com/gp/product/B003O6JLZ2/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=B003O6JLZ2">Xbox Kinect</a> </li>    <li><a href="http://www.amazon.com/gp/product/B0050SYYEK/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=B0050SYYEK">Dance Central 2</a> </li>    <li><a href="http://www.amazon.com/dp/B0050SYUAS/ref=as_li_ss_til?tag=jongall-20&amp;camp=213381&amp;creative=390973&amp;linkCode=as4&amp;creativeASIN=B0050SYUAS&amp;adid=1F4YDB7E5JXT5H3YDSD0&amp;&amp;ref-refURL=http%3A%2F%2Frcm.amazon.com%2Fe%2Fcm%3Flt1%3D_blank%26bc1%3D000000%26IS2%3D1%26bg1%3DFFFFFF%26fc1%3D000000%26lc1%3D0000FF%26t%3Djongall-20%26o%3D1%26p%3D8%26l%3Das4%26m%3Damazon%26f%3Difr%26ref%3Dss_til%26asins%3DB0050SYUAS">Your Shape 2012</a> </li>    <li><a href="http://braid-game.com/">Braid</a> / <a href="http://www.youtube.com/watch?v=3bJYEk-IXa8">Braid - All 8 Stars</a> </li>    <li><a href="http://www.atari.com/play/atari/yars_revenge">Yars' Revenge</a> </li>    <li><a href="http://arstechnica.com/tech-policy/news/2011/10/bitcoin-implodes-down-more-than-90-percent-from-june-peak.ars">Bitcoin crash</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0126-Jeff-Atwood-on-Games-and-Gamification.mp3">Herding Code 126: Jeff Atwood on Video Games and Gamification</a></p>  <p></p>  <p><em>This week's show notes were typed up by <a href="http://twitter.com/rossfuhrman">@rossfuhrman</a> - Thanks!!!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0126-Jeff-Atwood-on-Games-and-Gamification.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 125: Truffler with Joel Abrahamsson, Marcus Granstrom and Henrik Lindstrom</title>
    <link>https://herdingcode.com/herding-code-125-truffler-with-joel-abrahamsson-marcus-granstrom-and-henrik-lindstrom/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-125-truffler-with-joel-abrahamsson-marcus-granstrom-and-henrik-lindstrom/</guid>
    <pubDate>Fri, 04 Nov 2011 21:40:38 GMT</pubDate>
    <description><![CDATA[<p>On this episode of Herding Code, the guys talk to Joel Abrahamsson, Marcus Granstr&ouml;m and Henrik Lindstr&ouml;m about Truffler, a solution for building advanced search and querying fu</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 125</strong></p>
On this episode of Herding Code, the guys talk to Joel Abrahamsson, Marcus Granström and Henrik Lindström about Truffler, a solution for building advanced search and querying functionality for websites and other data-centric systems.
<ul>
	<li>They talk about their backgrounds and combining their different skills to build something pretty awesome.</li>
	<li>K. Scott says Truffler has a REST API and can be called from several languages (.NET, Java, js). How to send queries, where is the data?</li>
	<li>Joel explains they're using Elastic search, which indexes JSON documents; you push data to it in the form of JSON, then query it using JSON. The data is stored, but the point is to build awesome search.</li>
	<li>Marcus points out you can get a Truffler in a box, where you get a server to your house so you can run it inside your own internet if you like.</li>
	<li>K. Scott mentions the examples using the C# API on the Truffler home page. Do you convert that to a URL for your service?</li>
	<li>Joel talks about using Elastic Search and the bits they've added on top of it, including the various integrations or client APIs they are making available.</li>
	<li>K. Scott says he ran through their example; was able to just bang his way through it without having to dig into the documentation too much.</li>
	<li>Joel: Instead of bringing your data to the search engine, we're trying to bring the search engine to you, so you can query it in a way that feels natural in C#. That's the whole point of Truffler.</li>
	<li>Jon Asks about being able to search for a keyword and also have a geographical search and how that works.</li>
	<li>Joel says they search for the keyword and then filter by coordinates, which does not affect relevance. Can specify that matches for the keyword have double the relevance of non-matches.</li>
	<li>Talking about the ability to modify relevance and rank criteria higher and lower.</li>
	<li>K. Scott asks if they contribute any patches or make any patches or augment anything to the technology they are building on?</li>
	<li>Henrik has gone through the elastic search source code quite a few times. Found bugs, but not trying to augment it, just trying to find a way to package it in a nice way.</li>
	<li>Jon asks about the document search capabilities (pdf, xml, word, etc) - part of elastic search? Or did you have to do some of that work?</li>
	<li>Marcus replied that most features are basically from the elastic search core functions. The mods we have are just bug fixes. Not exposing any new functionality, just providing some features that are a little different from the core project.</li>
	<li>They're trying to make search easier so you don't have to analyze and then index your data; they'll do that for you.</li>
	<li>Jon asks about highlighted words and bacon. Joel says it's configurable. Can ask for one big fragment with highlighted keywords, or several small fragments, comes back as a separate fields in the JSON document. To make it as easy as possible, they are using LINQ syntax. Example: Select.As Highlighted()</li>
	<li>Discussing how to add search to your website/blog.</li>
	<li>They're using JSON.NET. Discusses client class and using extension methods.</li>
	<li>They discuss how to do a Google-type search - typing in textbox, brings results.</li>
	<li>K. Scott: Any support for Word and PDF? Joel: Yes, it's out of the box with Elastic Search; handles all kinds of formats.</li>
	<li>K. Scott asks what the biggest challenge is. Joel: Everything. Branding, building the product, figuring out the market.</li>
	<li>K. Scott says this is actually a product and a business now; was that new for the three of you? Joel says yes; were forced into it when working for a customer together who needed to search and query data not stored in a normalized database. Was the initial seed idea of Truffler.</li>
	<li>K. Scott asks about node. Henrik said they use node as a reverse proxy to do authentication for Elastic Search.</li>
	<li>They know what it can do; they can control how it's used. It's scary and exciting to see how people are using it.</li>
	<li>Marcus said have to know what queries they want before they come; they are adapting it to handle so many queries without knowing what people are going to use it for.</li>
	<li>Jon asks about performance / caching results on client side. Joel says servers can handle a lot, but there's always latency. With .NET, allow you to cache search queries, which are serialized. For Get requests, don't have caching; they're pretty quick, but will add them in the future.</li>
	<li>K. Scott asks what's next. Lots of features; very interested in feedback. Have partners/customers testing with large sets of data. Lots of things in the .NET API they don't expose but would like to. Want to provide as much flexibility as possible.</li>
	<li>K. Scott asks about storing his own metrics. Providing some metrics about how his search is being used? They're working on that, and SSL, encrypted indexes in planning stage.</li>
	<li>Jon asks about support for custom synonyms; they explain what that means.</li>
	<li>Plans and prices - free for developer. Then have basic and premium plans depending on how much you're using it, what features you want, etc.</li>
	<li>Joel says they have support for inheritance.</li>
	<li>Jon asks about pricing. With developer license, if have open source project, get quite a bit of functionality and features.</li>
	<li>Joel says that for developers, they want to encourage use. Would like feedback.</li>
	<li>Jon asks how this compares to other search engine options and other document databases like RavenDB? Joel says you can use it for a document database, but that's not the primary purpose of it. Raven is an awesome document database with text search, where this is awesome text search with basic document database capabilities. Henrik says if you take hardcore search, their main idea is not to provide hardcore search, but to enable developers to utilize search without being search experts.</li>
	<li>Released client for Episerver, used widely in Sweden. Truffler will take care of indexing and hook up to events for you. They have the concept of filtering (using the LINQ where method), and have the ability to extend that.</li>
	<li>K. Scott asks if this is open source. Joel says not exposing the source code at the moment. The .NET API is a very important part of their product, do some really cool things with it, would like to keep it to themselves. May release it in the future.</li>
	<li>Truffler web site is truffler.net. On the about page, there are links to twitter and Joel's blog.</li>
</ul>
&nbsp;

Show Links:
<ul>
	<li><a href="http://truffler.net">http://truffler.net</a></li>
	<li>Joel Abrahamsson: <a href="http://twitter.com/joelabrahamsson">Twitter</a>, <a href="http://joelabrahamsson.com/">Blog</a></li>
	<li>Marcus Granström: <a href="http://twitter.com/pecke01">Twitter</a></li>
	<li>Henrik Lindström: <a href="http://twitter.com/lindstromhenrik">Twitter</a></li>
	<li><a href="http://www.elasticsearch.org/">elasticsearch</a></li>
	<li><a title="http://www.ravendb.net/" href="http://www.ravendb.net/">Raven DB</a></li>
	<li><a href="http://nuget.org/List/Packages/Truffler">Truffler package on NuGet</a></li>
	<li>Read-only service at <a href="http://sample.truffler.net/">http://sample.truffler.net/</a> (downloadable from <a href="https://github.com/200OK/TrufflerSample">https://github.com/200OK/TrufflerSample</a>)</li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0125-Truffler.mp3">Herding Code 125: Truffler with Joel Abrahamsson, Marcus Granstrom and Henrik Lindstrom</a></p>


<em>This week's show notes were typed up by <a href="http://twitter.com/#!/RobinDotNet">@RobinDotNet</a> - Thanks!!!</em>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0125-Truffler.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 124: Anthony van der Hoorn and Nik Molnar on Glimpse</title>
    <link>https://herdingcode.com/herding-code-124-anthony-van-der-hoorn-and-nik-molnar-on-glimpse/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-124-anthony-van-der-hoorn-and-nik-molnar-on-glimpse/</guid>
    <pubDate>Mon, 24 Oct 2011 21:01:33 GMT</pubDate>
    <description><![CDATA[<p>On this episode, the guys talk to Anthony van der Hoorn and Nik Molnar about Glimpse, which allows you to debug your web site or web service right in the browser. Jon asks why G</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 124</strong></p>
On this episode, the guys talk to Anthony van der Hoorn and Nik Molnar about Glimpse, which allows you to debug your web site or web service right in the browser.
<ul>
	<li>Jon asks why Glimpse was created.</li>
	<li>Anthony gives a high-level explanation of what Glimpse does.</li>
	<li>Glimpse is for your server what Firebug is for your browser.</li>
	<li>Glimpse exposes a plugin architecture that allows it to be extended as necessary.</li>
	<li>Kevin asks if Glimpse can be leveraged from application code. Nik explains it is possible, but 99% of the functionality you need will not require any extra code in your application.</li>
	<li>You can point your logging framework to Glimpse and then you can see log entries relevant to the request.</li>
	<li>The guys talk about how Glimpse fits in with NLog, ELMAH, mvc-mini-profiler, etc.</li>
	<li>Nik says Firebug + Fiddler + Glimpse is the trifecta of development tools.</li>
	<li>Jon asks how Glimpse can be used to help a user experiencing trouble with a production site.</li>
	<li>Jon asks about running Glimpse in production.</li>
	<li>Twitter question from @danielauger: "What was the most difficult metric to tap into?"</li>
	<li>Anthony and Nik explain all the detail that is tracked in the Execution tab of Glimpse.</li>
	<li>Anthony talks about how they decided to display all the data that Glimpse has.</li>
	<li>Jon and Anthony talk about how Glimpse could be used to improve page response times.</li>
	<li>Kevin asks about the performance overhead of using Glimpse and using it in production.</li>
	<li>Nik explains how Glimpse plugins are enabled/disabled.</li>
	<li>Jon asks about seeing the validation rules for a particular request.</li>
	<li>Anthony talks about what is added in to core Glimpse versus what goes in to Glimpse plugins.</li>
	<li>Jon asks about how Glimpse handles Ajax.</li>
	<li>Kevin asks about record-and-replay functionality in Glimpse.</li>
	<li>Jon asks about the implementation of the client side display of Glimpse data.</li>
	<li>Nik explains how to configure Glimpse to easily compare differences between test, staging and production environments.</li>
	<li>Jon asks about the future of Glimpse.</li>
</ul>
Show links:
<ul>
	<li><a href="http://getglimpse.com/">Glimpse</a>: <a href="https://github.com/Glimpse/Glimpse">git repo</a>, <a href="http://nuget.org/List/Packages/Glimpse">Glimpse for ASP.NET NuGet package</a>, <a href="http://nuget.org/List/Packages/Glimpse.Mvc3">Glimpse for ASP.NET MVC NuGet package</a></li>
	<li><a href="http://www.blog.anthonyvanderhoorn.com/">Anthony van der Hoorn</a> (<a href="http://twitter.com/#!/anthony_vdh">@anthony_vdh</a>)</li>
	<li>Nik Molnar (<a href="http://twitter.com/#!/nikmd23">@nikmd23</a>)</li>
	<li><a href="http://glimpse.codeplex.com/documentation">CodePlex documentation for adding Glimpse manually</a></li>
	<li><a href="http://nlog-project.org/">NLog</a></li>
	<li><a href="http://code.google.com/p/elmah/">ELMAH</a></li>
	<li><a href="http://code.google.com/p/mvc-mini-profiler/">mvc-mini-profiler</a></li>
	<li><a href="http://getfirebug.com">Firebug</a></li>
	<li><a href="http://fiddler2.com">Fiddler</a></li>
	<li><a href="http://www.c4mvc.net/meeting/?id=23">C4MVC talk on Glimpse</a></li>
	<li><a href="http://www.fluentsecurity.net/">Fluent Security</a></li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a title="Herding Code 124: Anthony van der Hoorn and Nik Molnar on Glimpse" href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0124-Anthony-van-der-Hoorn-and-Nik-Molnar-on-Glimpse.mp3">Herding Code 124: Anthony van der Hoorn and Nik Molnar on Glimpse</a></p>


<em>Note: Thanks to <a href="http://twitter.com/rossfuhrman ">@rossfuhrman </a>for typing our show notes this week!</em>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0124-Anthony-van-der-Hoorn-and-Nik-Molnar-on-Glimpse.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 123: Andreas H&#xE5;kansson and Steven Robbins on NancyFx</title>
    <link>https://herdingcode.com/herding-code-123-andreas-hakansson-and-steven-robbins-on-nancyfx/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-123-andreas-hakansson-and-steven-robbins-on-nancyfx/</guid>
    <pubDate>Mon, 17 Oct 2011 21:18:12 GMT</pubDate>
    <description><![CDATA[<p>On this episode, the guys talk to Andreas and Steven about Nancy, a lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono. Scott Koon asks why N</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 123</strong></p>
On this episode, the guys talk to Andreas and Steven about Nancy, a lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono.
<ul>
	<li>Scott Koon asks why Nancy was developed and what are the problems going up against ASP.NET.</li>
	<li>Andreas explains Nancy is a lighter approach and doesn't get in the way.</li>
	<li>Andreas explains a basic Hello World - 5 lines of code, and Steven points out a Nancy app fits in a single Tweet.</li>
	<li>Nancy has No System.Web dependencies - just depends on the Client profile, and works great on Mono.</li>
	<li>Jon asks about support for OWIN, a Rack equivalent for .NET. Combining Nancy and OWIN allows you to have an end-to-end OSS solution.</li>
	<li>Jon asks about support for view engines, and Andreas says that Nancy supports most major view engines including Razor and Spark. There are quite a few Nuget plugins.</li>
	<li>Andreas points out that you can do most things in Nancy that you can do in ASP.NET MVC.</li>
	<li>Jon asks if you can add Nancy to an existing ASP.NET MVC app.</li>
	<li>The group discusses the value of having many competing web frameworks.</li>
	<li>Steven explains Nancy isn't about crushing the competition, just providing a different approach that some people might prefer.</li>
	<li>Jon asks Andreas about his post about the value of OSS being the vision not the code.</li>
	<li>Jon asks about web application security for Nancy - since it's a lightweight framework, am I on my own when it comes to security? Steven explains the security features in Nancy, and how they work without requiring a dependency on System.Web.</li>
	<li>Jon asks how many users of Nancy there are.</li>
	<li>Kevin asks what the most challenging part of developing Nancy has been. - Steven: HTTP implementation and the syntax simplicity. Andreas: fighting C# syntax limitations.</li>
	<li>Kevin asks whether Nancy is trying to be ASP.NET MVC.</li>
	<li>The group discusses extensibility and custom configurations.</li>
	<li>Andreas explains Nancy will be adding static and trace diagnostics in the future.</li>
	<li>Twitter question from @bitbonk: "Relate or compare NancyFx with WCF Web API."</li>
	<li>Twitter question from @codereflection: "can we get around having to mock httpcontext w/ Nancy? Do we even need to?"</li>
	<li>Via Twitter, @kppullin asks about how the Nancy team decides how to add features.</li>
	<li>Jon asks about the best places for interested users to get information, and there's a discussion of documentation, Google Groups, Twitter, and screencasts.</li>
	<li>Jon asks about a NuGet packages that would have some samples. Andreas explains why the samples are included along with the source code on Github instead.</li>
	<li>Kevin asks whether they do performance testing, and how Nancy's performance stacks up.</li>
</ul>
Show Links:
<ul>
	<li><a href="http://www.nancyfx.org/">NancyFX</a> <a href="htttps://github.com/NancyFx">git repo</a>, <a href="http://nuget.org/List/Search?packageType=Packages&amp;searchCategory=All+Categories&amp;searchTerm=nancy&amp;sortOrder=package-download-count&amp;pageSize=25">NuGet package</a>, <a href="https://groups.google.com/forum/#!forum/nancy-web-framework">Google Group</a>, <a href="http://twitter.com/#!/NancyFx">@NancyFx</a></li>
	<li><a href="http://thecodejunkie.com/">Andreas Håkansson </a>(<a href="http://twitter.com/#!/TheCodeJunkie">@TheCodeJunkie</a>)</li>
	<li><a href="http://www.grumpydev.com/">Steven Robbin</a> (<a href="http://twitter.com/#!/Grumpydev">@Grumpydev</a>)</li>
	<li><a href="http://hanselminutes.com/270/nancy-sinatra-and-the-explosion-of-net-micro-web-frameworks-with-andreas-hkansson">Nancy, Sinatra and the Explosion of .NET Micro Web Frameworks with Andreas Håkansson</a></li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0123-Andreas-Hakansson-and-Steven-Robbins-on-NancyFx.mp3">Herding Code 123: Andreas Håkansson and Steven Robbins on NancyFx</a></p>


<em>Note: Thanks to <a href="http://twitter.com/rossfuhrman ">@rossfuhrman </a>for typing our show notes this week!</em>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0123-Andreas-Hakansson-and-Steven-Robbins-on-NancyFx.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 122: Bert Belder on porting Node.js to Windows</title>
    <link>https://herdingcode.com/herding-code-122-bert-belder-on-porting-node-js-to-windows/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-122-bert-belder-on-porting-node-js-to-windows/</guid>
    <pubDate>Tue, 11 Oct 2011 18:57:36 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Bert Belder, a Node.js developer who&apos;s working on the native Windows port. Kevin asks how Bert got started with Node.js. Bert expla</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 122</strong></p>
<p>This episode of Herding Code the guys talk to Bert Belder, a Node.js developer who's working on the native Windows port.</p>  <ul>   <li>Kevin asks how Bert got started with Node.js. Bert explains that he was working on a PHP based system which had a good amount of logic in Javascript, and he started looking to node as a way to consolidate that logic. </li>    <li>K. Scott ask Bert about how you'd go about sharing Javascript between client and server. </li>    <li>Kevin asks how the Windows port of Node.js got started, and whether there was any resistance to it. </li>    <li>Jon asks if the eventing model in Windows was one of the more difficult things Bert had to work on. Bert explains that getting REPL (read evaluate print loop) to work on Windows as it did on Unix was actually one of the more difficult challenges at the beginning. </li>    <li>K. Scott asks about experience of running Node.js. Bert talks about how Node.js runs as an executable, and it's up to you to set up an HTTP server. </li>    <li>Kevin asks about the team that's working on the Windows port. </li>    <li>Kevin asks Bert for more info on technical challenges on getting Node.js not only working on Windows, but really performing. Bert describes some challenges in implementing I/O Completion Ports, spawning child processes, etc. </li>    <li>Jon says that some of the initial negative feedback he'd seen on the announcement of the Windows port was concern over negative performance implications for the Unix version, and Bert says that one of the criteria they're working under is that Unix performance not be degraded.</li>    <li>Kevin asks Bert if he had a background in high performance networking, of if he'd been&#160; figuring things out as he went along. Bert explains that he and the team have had a good amount of time to work on this, so they had a pretty good idea of how to solve this. </li>    <li>Jon asks about performance testing, and Bert describes some of the load tests that they use. </li>    <li>K. Scott asks about if most Node.js modules will work on Windows. Bert says he guesses 90% will work, and the ones that won't are making operating-system specific assumptions. </li>    <li>Jon asks Bert about his work on libuv, the abstracted platform layer for Node.js, and Kevin asks about the process of designing this abstraction layer. </li>    <li>Kevin asks Bert if there are places where Windows is more flexible or powerful than Linux. Bert explains that since node was written for Unix first, it wasn't built to exploit Windows advantages, but with Windows kernel mode HTTP stack might be useful in the future. </li>    <li>K. Scott asks if the port could have been aided by open source projects like Cygwin. Bert explains how Cygwin isn't really helpful in making node.js work well on Windows. </li>    <li>Jon asks if dropping support for Cygwin in Node.js will affect users, and Bert says the only effect may be for addons which are written so as to be Unix-only. </li>    <li>Kevin asks about Windows support for NPM. </li>    <li>There's a discussion about the different hosting options on Windows including Azure and iisnode. Kevin asks about service hosting to allow socket level access (below IIS). </li>    <li>Kevin asks if there's a plan for cross-platform system support for modules that need native access. Bert talks about changes to npm to support binary hosting so operating system specific binaries can be automatically downloaded. </li>    <li>Kevin asks if there will be a focused effort to get node module authors to support Windows. </li>    <li>Jon asks about multi-core scenarios. Bert talks about different options, explaining that iisnode can help with this, but he hasn't seen options for interprocess communication in iisnode or in in either multi-core scenarios. </li>    <li>Kevin asks about the use of gyp for the node.js build process and about Bert's development environment on Windows. </li>    <li>Kevin wraps up by asking Bert how to pronounce his twitter handle. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="https://github.com/piscisaureus">Bert Belder</a>&#160;<a href="http://twitter.com/piscisaureus">(@piscisaureus)</a> </li>    <li><a href="http://nodejs.org/">Node.js</a> </li>    <li><a href="http://blog.nodejs.org/2011/06/23/porting-node-to-windows-with-microsoft%E2%80%99s-help/">Porting Node to Windows with Microsoft's Help</a> (announcement post on blog.nodejs.com) </li>    <li><a href="http://msdn.microsoft.com/en-us/library/aa365198(VS.85).aspx">I/O Completion Ports (MSDN)</a> </li>    <li><a href="http://en.wikipedia.org/wiki/ApacheBench">ApacheBench</a> </li>    <li><a href="https://github.com/joyent/libuv">libuv</a> (github) </li>    <li>     <div><a href="http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx">Installing and Running node.js applications within IIS on Windows - Are you mad?</a> (Scott Hanselman post about iisnode)</div>   </li>    <li>     <div><a href="http://code.google.com/p/gyp/">gyp (Generate Your Project)</a></div>   </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0122-Bert-Belder-on-porting-nodejs-to-Windows.mp3">Herding Code 122: Bert Belder on porting node.js to Windows</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0122-Bert-Belder-on-porting-nodejs-to-Windows.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 121: Sara Chipps updates us on Girl Develop It at one year</title>
    <link>https://herdingcode.com/herding-code-121-sara-chipps-updates-us-on-girl-develop-it-at-one-year/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-121-sara-chipps-updates-us-on-girl-develop-it-at-one-year/</guid>
    <pubDate>Fri, 23 Sep 2011 20:18:53 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code Kevin and Jon catch up with Sara Chipps to find out how Girl Develop It is going. Kevin jumps right into it by asking Sara about what&apos;s been going o</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 121</strong></p>
<p>This episode of Herding Code Kevin and Jon catch up with Sara Chipps to find out how Girl Develop It is going.</p>  <ul>   <li>Kevin jumps right into it by asking Sara about what's been going on over the past year. Sara goes back to what was on their minds as they were first getting started with their first class, and how that's grown to 6 cities worldwide, and their original New York chapter offers 20 classes a month with 5 teachers. </li>    <li>Kevin asks where the other teachers came from, and Sara spins a tall tale about flamethrower classes. Well, maybe it's true, but I find it a bit suspect. </li>    <li>Kevin asks about where the classes are held. </li>    <li>Jon asks about how the money part works out. Sara explains how the class fees, donations, and teacher payments all work out. </li>    <li>Kevin asks Sara about about what tools they teach, and Sara mentions Aptana. </li>    <li>Jon asks for some success stories and Sara tells a few. </li>    <li>Kevin asks how many students go through several classes; Sara says they see about 25% frequent fliers. </li>    <li>Jon asks if there's some measurement of how much the students actually learn. Sara explains that the classes include a good amount of hands-on work and homework, and that she and the other teachers continue to learn how to gage when students are getting lost. </li>    <li>Kevin asks if there are some students that just don't get it, and Sara says that some students have a tough time understanding that a single missing character can break a whole program. Everyone commiserates about this fun part of software development. Jon speculates that young women may be missing out on some of the split between cold logic and reason because they don't play enough video games. </li>    <li>Jon notes that a lot of real world computer programming involves problem solving and support network and asks if students are equipped with those things. Sara talks about how anyone watching her code will see a good amount of debugging; additionally she teaches students about how to use StackOverflow so they can get their questions solved. </li>    <li>Kevin asks how the curriculum and courses have evolved over the past year. Sara and Jon talk about the amount of time and effort involved in preparing decent training materials.</li>    <li>Kevin asks about changes in teaching approach over the course of the past year. Sara said she's moved from code-only to using some slides, and that when writing code it's important to walk through it in pretty good detail.</li>    <li>Kevin asks what's been different from expectations, and Sara talks about both the amount of interest and community goodwill.</li>    <li>Kevin asks about how Girl Develop It has spread to other cities, and asks about how much of the content is shared between cities.</li>    <li>Jon asks about how the branding and design is handled.</li>    <li>Jon asks if there are advanced classes or seminars.</li>    <li>Jon asks Sara what sort of projects she's been working on lately. Sara says it's pretty much all Javascript lately.</li>    <li>Kevin asks if there will be a node.js class (drink!)</li>    <li>Kevin asks what's next for Girl Develop It, which prompts Sara to talk about the first Girl Develop It hack-a-thon. Apparently these are like a guy hack-a-thon except with less pizza and body odor and more resort and catering.</li>    <li>Kevin asks if Girl Develop It could develop into a full time gig. Sara says that all the leaders love developing and don't want to give that up, so they're still trying to figure that out.</li>    <li>Jon asks how listeners can support Girl Develop It. Sara lists a range of options, including book, laptop donations, and meeting space. Kevin asks about cash contributions.</li>    <li>Jon and Kevin note that there are no West Coast US branches. Sara mentions that a bay area location may start soon.</li>    <li>Kevin asks about the 15% male attendance in Girl Develop It, and Sara explains how that works.</li>    <li>Jon asks if there's potential for virtual events and video recordings. Sara explains that, while it sounds great logistically, it misses out on a lot of the most important aspects of the Girl Develop It classroom experience. They've got trial running in the Columbus branch, though, so they'll see how it goes.</li>    <li>Sara teases about an interesting hack-a-thon project they did recently using the Aviary API's called Stash Your Stash, which removes moustaches from photos because &quot;they're super creepy!&quot;</li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://sarajchipps.com/">Sara Chipps</a> (<a href="http://twitter.com/#!/sarajchipps">@sarajchipps</a>) </li>    <li><a href="http://girldevelopit.com/">Girl Develop It</a> </li>    <li><a href="http://madagascarinstitute.com/about/">The Madagascar Institute</a> </li>    <li><a href="http://www.aptana.com/">Aptana</a> </li>    <li><a href="http://girldevelopit.tumblr.com/post/7811652677/hamptons-hackathon-for-humanity-results">Hamptons Hackathon for Humanity</a></li>    <li><a href="http://commutingintraffic.com/">Commuting In Traffic</a></li> </ul>  <p><strong>Download / Listen:</strong></p>  <p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0121-Sara-Chipps-updates-us-on-Girl-Develop-It.mp3">Herding Code 121: Sara Chipps updates us on Girl Develop It at one year</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0121-Sara-Chipps-updates-us-on-Girl-Develop-It.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 120: Ryan Stewart on RIAs and All Things Adobe</title>
    <link>https://herdingcode.com/herding-code-120-ryan-stewart-on-rias-and-all-things-adobe/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-120-ryan-stewart-on-rias-and-all-things-adobe/</guid>
    <pubDate>Tue, 13 Sep 2011 03:48:53 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Ryan Stewart, a developer evangelist at Adobe. Scott K asks about the pricing of Adobe products. Ryan explains why things are price</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 120</strong></p>
<p>This episode of Herding Code the guys talk to Ryan Stewart, a developer evangelist at Adobe.</p>  <ul>   <li>Scott K asks about the pricing of Adobe products. Ryan explains why things are priced as they are and talks about the subscription model alternative. </li>    <li>Jon talks about the open other free or inexpensive alternatives for beginning Adobe development since the formats are generally open sourced. Ryan agrees and also explains that Adobe's entire pricing model is built around tools, whereas Microsoft's includes both tools and servers. </li>    <li>Jon asks about the licensing around Flash Media Server. Ryan explains that it's not something general developers will need to deal with. </li>    <li>Scott K speculates around the idea of appliances from Adobe which would be complete video / media processing systems. Ryan says he thinks that's interesting but he doesn't expect anything like that to happen. </li>    <li>Jon asks about the general trends away from some rich internet abuses in the past. Ryan and Jon talk about the polyfill approach for using Flash and RIA technologies to augment browsers when the features aren't supported. Ryan and Scott K talk about how developers and the tech press have quickly forgotten that many of the new emerging browser capabilities (typography, media, animation) are modeled after capabilities that RIA technologies initially pioneered. </li>    <li>Scott K points out that this is a good segue to the new Edge tool. Ryan talks about how Edge is a designer tool that creates CSS3 and JavaScript animation using the timeline that Flash designers are used to. Jon mentions that this makes more sense to him when thinking about Adobe primarily as a developer tools company rather than a platform oriented company. </li>    <li>Jon asks about Adobe support for HTML5 / CSS3 development in Edge with Flash fallback. Ryan talks about how they generally keep them separate, and if browser-based animation isn't supported it just won't play. </li>    <li>Kevin asks about how Edge affects the accessibility of the underlying content. </li>    <li>Jon asks about how Flash Builder 4.5 allows for developing native iOS and Android applications. Ryan explains how it works and clarifies how it complies with Apple developer guidelines. There's a mention of the popular Mono apps which run on iOS. </li>    <li>Twitter question from Chris Edwards: &quot;What are the are the best tools for automated testing of Flash UI's&quot; - Ryan recommends HP Quick Test Pro </li>    <li>Scott K asks about Adobe Air - it seemed great, but seems to have kind of fallen out of favor. What's the deal there? Ryan talks about how Air was both a great, bold idea, but also a new challenge for Adobe, in that Air applications are much longer running than most Flash apps. </li>    <li>Jon asks about some annoyances in installing updates for Air, Flash, etc. Ryan explains some of the reasons for the updates. Jon asks about the possibility to add in more of an auto-update experience. </li>    <li>Jon asks Ryan about some of the new features in Flash. Ryan talks about a lot of features, including Stage Video and 3D GPU support and graphics features. Scott K. asks if there are opportunities for leveraging WebGL, and Ryan says that there have been discussions about that but nothing's in progress yet. </li>    <li>Ryan asks the guys what they're expecting at at BUILD, and they all clam up. Scott K. ask about Flash on Windows Phone. Ryan says it'd be great, but he'd be surprised given the Silverlight support on Windows Phone. Kevin's happy that speculation will finally stop. Scott K. talks it's good that developers are having to care about memory and CPU usage again. </li>    <li>Ryan talks about the difficulty of bringing richness and creativity to the client without adversely impacting performance. </li>    <li>Scott K asks about the current state of Adobe Labs. Ryan points out that the Adobe MAX conference is coming up in October, so Labs will probably be pretty quiet until then. </li>    <li>Jon asks about Muse. Ryan explains that really targeted at print designers who want to create web content, so it's not really a tool for web designers or developers. </li>    <li>Jon asks about some Adobe client products which are developed in Air. </li>    <li>Scott K. asks about what big surprises may be happening at MAX this year. Ryan and and Scott K. speculate a bit more about BUILD, and Ryan tells listeners who recognize him at BUILD to please say hi. Jon says he might sneak in if he can locate a catering costume. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://blog.digitalbackcountry.com/">Ryan Stewart</a> (<a href="http://twitter.com/ryanstewart">@ryanstewart</a>) </li>    <li><a href="http://labs.adobe.com/">Adobe Labs</a> </li>    <li><a href="http://max.adobe.com/">Adobe MAX</a> </li>    <li><a href="http://www8.hp.com/us/en/software/software-solution.html?compURI=tcm:245-937061">HP Quick Test Pro</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0120-Ryan-Stewart-on-RIAs-and-all-things-Adobe.mp3">Herding Code 120: Ryan Stewart on RIAs and all things Adobe</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0120-Ryan-Stewart-on-RIAs-and-all-things-Adobe.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 119: On The Writing Technical Books (with Jesse Liberty, Phil Haack, and Brad Wilson)</title>
    <link>https://herdingcode.com/herding-code-119-on-the-writing-technical-books-with-jesse-liberty-phil-haack-and-brad-wilson-2/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-119-on-the-writing-technical-books-with-jesse-liberty-phil-haack-and-brad-wilson-2/</guid>
    <pubDate>Sat, 27 Aug 2011 03:47:41 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Jesse Liberty, Phil Haack, and Brad Wilson about writing technical books. Jesse has written dozens of technical books, and both Bra</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 119</strong></p>
This episode of Herding Code the guys talk to Jesse Liberty, Phil Haack, and Brad Wilson about writing technical books. Jesse has written dozens of technical books, and both Brad and Phil worked with Jon and K. Scott on the recently released ASP.NET Professional MVC 3 book. What's it like to write a book? Why do it at all? How does the process work? How is it changing? Is Angry Birds your favorite story? Join us for a very literary version of Herding Code to find out.
<ul>
	<li>We start with a listener question from @<a href="http://twitter.com/#!/tpdorsey">tpdorsey</a> (Terrence Dorsey): "*Printed* books? If so, why bother? I ask this as a print writer and editor for 17 of last 20 years."</li>
	<li>There's a discussion of the value that the editorial process adds to books as compared to blog posts.</li>
	<li>Twitter question from <a href="http://twitter.com/schwarty">@schwarty</a>: "Best way to work a first time deal? Submit queries? Try to team up with co-writers?" Phil, Brad, Jon, K. Scott, and Jesse tell stories about how they got their first book deals.</li>
	<li>Phil notes that most authors get a start in other mediums - blogs, magazines, possibly StackOverflow in the future.</li>
	<li>Jesse talks about his investigation of self-publishing. In the end, he decided that the editorial process tipped the scales towards working with a publishing company.</li>
	<li>Jon references Twitter questions from <a href="http://twitter.com/#!/devhammer">@devhammer</a> and <a href="http://twitter.com/#!/jglozano">@jglozano</a> on dealing with procrastination, making time to write, etc. He points to positive pressure of working for a publisher under a schedule and a contract to get the book out the door. Brad talks about how peer pressure from other authors to keep up is also helpful.</li>
	<li>There's discussion about the challenge writing up an outline before starting the book. Phil talks about how the publishing industry in general is pretty stuck on older technologies like FTP, and in general the process feels like waterfall software development.</li>
	<li>Jesse says that if you're reasonably on schedule, publishers are pretty flexible about changes to the outline.</li>
	<li>Brad answers listener questions from <a href="http://twitter.com/#!/stevenproctor">@stevenproctor</a> "Have you found e-readers coming into their own to influence how you think about book?" and "has it changed how you think about layout/presentation for cross format reading" saying that it was difficult to write without seeing what the end result would look like, but he was very happy when he saw the end result, both in print and the e-book format.</li>
	<li>Jon talks about how working with book templates from various publishers has taught him to appreciate the use of styles in Word, explaining a case where he was able to search for code snippets based on the styles that were used.</li>
	<li>Kevin asks some interesting questions about whether working on the book puts pressures on when to ship the product, and whether writing a book about a product points out features that should be changed. Brad explains that the king of product changes due to writing (blogging in this case) is Scott Guthrie.</li>
	<li>Phil talks about how Eilon (the technical reviewer) was good at keeping him from digging too far into minute details that nobody would care about. Jon explains that Eilon pointed out that the Controllers chapter was going way into the weeds before actually showing the most common use case, and Brad says that he's in good company with an example from Charles Petzold's book on Windows programming.</li>
	<li>Jon talks about the tricky chicken-and-egg situation with trying to explain the MVC pattern in depth, since an in-depth explanation of the Model, View, and Controller requires an in-depth understanding of the other components. Jon asks Jesse about how he handles that, and Jesse talks about the importance of having a model user and getting volunteer readers as you're writing.</li>
	<li>Jon talks about the benefit of working with other authors. Brad talks about the this is more important with products with quick release cycles, and Phil compares book writing with software development techniques.</li>
	<li>There's a discussion on ensuring a consistent voice in a book with more than one author.</li>
	<li>Phil, Jon, and Brad discuss the conflict between beginner and advanced content. Are the experts who are asking for advanced content representative of most readers? Phil points out that writing advanced content is a lot more fun, but limits the audience. Can a book please everyone? Is there a way to include beginner and advanced content? Jesse describes some ways he handles this, and says that it's important to set expectations.</li>
	<li>Jon talks about the decision to remove NerdDinner, referring instead to the MVC Music Store tutorial.</li>
	<li>Jesse says that it's remarkable that books are still selling well, since they're competing with blogs, tutorials, videos, etc. He speculates that the main selling point for books now is in context: telling a story. Jon asks how he manages to do that.</li>
	<li>Phil talks about the decision to put all the book's code samples in NuGet (triggering the Haacked NuGet Drinking Game clause).</li>
	<li>Jesse talks about the mismatch between the publisher's requirements for a flow of completed chapters and the software developer's desire to refactor.</li>
	<li>Jon asks K. Scott how writing magazine articles compares to writing for a book.</li>
	<li>That's pretty much it.</li>
</ul>
Show Links:
<ul>
	<li><a href="http://jesseliberty.com">Jesse Liberty</a> (<a href="http://twitter.com/#!/jesseliberty">@jesseliberty</a>)</li>
	<li><a href="http://haacked.com">Phil Haack</a> (<a href="http://twitter.com/#!/haacked">@haacked</a>)</li>
	<li><a href="http://bradwilson.typepad.com/">Brad Wilson</a> (<a href="http://twitter.com/#!/bradwilson">@bradwilson</a>)</li>
	<li><a href="http://www.amazon.com/gp/product/1118076583/ref=as_li_ss_il?ie=UTF8&amp;tag=youvebeenhaac-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=1118076583">Professional ASP.NET MVC 3</a> on <a href="http://www.amazon.com/gp/product/1118076583/ref=as_li_ss_il?ie=UTF8&amp;tag=youvebeenhaac-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=1118076583">Amazon</a> and at <a href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-1118076583.html">Wrox.com</a></li>
	<li><a href="http://www.amazon.com/Jesse-Liberty/e/B000APP6I6">Jesse's dozens of books on Amazon</a></li>
	<li><a href="http://weblogs.asp.net/leftslipper/">Eilon Lipton</a></li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0119-On-The-Writing-Of-Technical-Books.mp3">Herding Code 118: On The Writing Technical Books (with Jesse Liberty, Phil Haack, and Brad Wilson)</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0119-On-The-Writing-Of-Technical-Books.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 118: Paul Betts on SassAndCoffee</title>
    <link>https://herdingcode.com/herding-code-118-paul-betts-on-sassandcoffee/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-118-paul-betts-on-sassandcoffee/</guid>
    <pubDate>Thu, 11 Aug 2011 01:54:08 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Paul Betts about SassAndCoffee, a NuGet package that adds runtime Sass and CoffeeScript compilation to ASP.NET. Jon asks Paul about</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 118</strong></p>
This episode of Herding Code the guys talk to Paul Betts about SassAndCoffee, a NuGet package that adds runtime Sass and CoffeeScript compilation to ASP.NET.
<ul>
	<li>Jon asks Paul about his role on the Office Labs team <em>[Spoiler alert! Since this podcast, Paul has started a new job at GitHub!]</em></li>
	<li>Jon asks Paul about why he got interested in Sass and Coffee for web development.</li>
	<li>Jon asks Paul how an Office dev gets away with liking Ruby and Python.</li>
	<li>Paul describes Sass (Syntactically Awesome Stylesheets), a meta-language for CSS that adds in variables, nested rules, inheritance, mixins, etc.</li>
	<li>Paul explains how SassAndCoffee is designed to eliminate fiddling, so he's gone to great lengths to make the NuGet package just work without any setup.</li>
	<li>Kevin points out that this is at run-time rather than at build. Paul talks about the advantages of run-time compilation (especially interactive CSS edit / refresh) as well as potential downsides (performance, potential for compilation errors). Scott K also mentions that it might be useful for CDN deployment and continuous integration.</li>
	<li>Jon asks about the new package definition file the 1.0 release, and Paul explains how it tells Visual Studio that the .coffee files are to be included with the project build.</li>
	<li>Paul explains how the CoffeeScript compiler works using an HttpHandler, Jurrassic, and V8. Jon asks if he'd looked at IronJS, and Paul describes why that didn't work for him.</li>
	<li>Paul explains the hurdles he went through to get V8 running under an ASP.NET HttpHandler, since V8 assumes that it will always be accessed from a single threaded process.</li>
	<li>Jon asks Paul about his use of uglify.js for Javascript optimization and compression.</li>
	<li>Scott K asks about the ability to swap out other compilers, e.g. the Google Closure Compiler.</li>
	<li>Paul talks about some of the commits he's had recently, including support for Nancy, better cache configuration and some useful refactoring. Jon and Paul discuss how some refactoring patches - especially blind Resharpering - are less than helpful.</li>
	<li>The discussion shifts to how Paul got Sass working without requiring the user to have a local Ruby installation, including some crazy tricks with the DLR's platform resource library to embed a portion of the Ruby standard library as an embedded resource in the NuGet package via a virtual R: drive.</li>
	<li>Jon asks if it's possible for others to reuse Paul's Ruby embedding technique in other applications.</li>
	<li>Jon, K. Scott, and Paul discuss commenting policy, and Paul explains why he liberally commented certain sections of the code.</li>
	<li>Paul mentions how the V8 integration falls back to Jurassic in case it can't run for some reason.</li>
	<li>Kevin asks if Paul looked into creating native ports of Sass or CoffeeScript, and Paul explains why he decided to set up compilers for the original versions rather than port them.</li>
	<li>Jon talks about how he'd looked at Zen Coding and mused about how to implement it in Visual Studio, deciding as Paul had that it's better</li>
	<li>Twitter question from @elijahmanor about IDE support for Sass and CoffeeScript. Note: since the podcast, the Mindscape Web Workbench has made this available.</li>
	<li>Scott K points out that the MVC 4 roadmap includes support for recipes, which should help with extending the IDE via NuGet.</li>
	<li>Paul wraps up the nerdy internals of SassAndCoffee by explaining how he's handling loading the 32 and 64 bit versions of the V8 C++ CLI DLL depending on the user's CPU architecture.</li>
	<li>Jon asks about what server-side hosting requirements are needed to run SassAndCoffee.</li>
	<li>Kevin asks whether the V8 API was easy to work with, and Paul says no.</li>
	<li>Jon mentions that he appreciated all the thanks that Paul had in the readme, and Paul talks about how great it feels to thank people.</li>
	<li>Jon asks what's next for SassAndCoffee, and Paul says he wants to add Compass.</li>
	<li>Jon (jokingly) mentions that he's a fan of BrainScript and asks for support.</li>
	<li>Paul and Jon discuss some of the nuttier esoteric languages they've seen.</li>
	<li>Jon asks what else Paul's up to; Paul talks about the Reactive Extensions book he's working on with Jesse Liberty. Jon asks Paul a bit about what's new and interesting with Reactive Extensions.</li>
	<li>Jon asks Paul about the interaction between Reactive Extensions and Interactive Extensions, and Paul explains by way of a Reactive Extensions history lesson.</li>
	<li>There's a discussion on the (intentional) lack of a ForEach operator in LINQ</li>
	<li>K Scott tells his terrifying story from NDC in which Eric Lippert was sitting in his talk.</li>
	<li>Scott K asks about Reactive UI, another of Paul's projects, an MVVM framework which leverages Reactive Extensions.</li>
</ul>
Show Links:
<ul>
	<li>SassAndCoffee <a href="https://github.com/xpaulbettsx/SassAndCoffee">git repo</a>, <a href="http://nuget.org/List/Packages/SassAndCoffee">NuGet package</a></li>
	<li><a href="http://blog.paulbetts.org/">Paul Betts</a> (<a href="http://twitter.com/#!/xpaulbettsx">@xpaulbettsx</a>)</li>
	<li><a href="http://sass-lang.com/">Sass</a></li>
	<li><a href="http://coffeescript.org">CoffeeScript</a></li>
	<li><a href="https://github.com/fholm/IronJS">IronJS</a></li>
	<li><a href="http://jurassic.codeplex.com/">Jurassic</a></li>
	<li><a href="http://code.google.com/p/v8/">V8 JavaScript Engine</a></li>
	<li><a href="https://github.com/mishoo/UglifyJS#readme">UglifyJS</a></li>
	<li><a href="http://code.google.com/closure/compiler/">Google Closure Compiler</a></li>
	<li><a href="http://code.google.com/p/zen-coding/">Zen Coding</a></li>
	<li><a href="http://www.mindscapehq.com/products/web-workbench">Mindscape Web Workbench</a></li>
	<li><a href="http://aspnet.codeplex.com/wikipage?title=ASP.NET%20MVC%204%20RoadMap">ASP.NET MVC 4 Roadmap</a></li>
	<li><a href="http://compass-style.org/">Compass</a></li>
	<li>Silly language things on <a href="http://esolangs.org/wiki/Main_Page">Esolangs.org</a>
<ul>
	<li><a href="https://github.com/jussi-kalliokoski/BrainScript/tree/">BrainScript</a></li>
	<li><a href="http://shakespearelang.sourceforge.net/">Shakespere</a></li>
	<li><a href="http://en.wikipedia.org/wiki/COMEFROM">COMEFROM</a></li>
	<li><a href="http://esolangs.org/wiki/TwoDucks">TwoDucks</a></li>
</ul>
</li>
	<li><a href="http://www.amazon.com/Programming-Reactive-Extensions-Jesse-Liberty/dp/1430237473">Programming Reactive Extensions and LINQ by Paul Betts and Jesse Liberty</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/data/gg577609">Reactive Extensions</a></li>
	<li>Eric Lippert's post: <a href="http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx">"foreach" vs. "ForEach"</a></li>
	<li><a href="http://www.reactiveui.net/">ReactiveUI</a></li>
	<li><a href="http://youarenotsosmart.com/2011/03/25/the-sunk-cost-fallacy/">You Are Not So Smart - The Sunk Cost Fallacy</a></li>
</ul>
<strong>Download / Listen:</strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0118-Paul-Betts-on-SassAndCoffee.mp3">Herding Code 118: Paul Betts on SassAndCoffee</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0118-Paul-Betts-on-SassAndCoffee.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 117: Llewellyn Falco on Approval Tests</title>
    <link>https://herdingcode.com/herding-code-117-llewellyn-falcon-on-approval-tests/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-117-llewellyn-falcon-on-approval-tests/</guid>
    <pubDate>Thu, 21 Jul 2011 04:17:03 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Llewellyn Falco about Acceptance Tests, an interesting testing framework for .NET, Java, Ruby, and PHP. Jon talks about how much he</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 117</strong></p>
This episode of Herding Code the guys talk to Llewellyn Falco about Acceptance Tests, an interesting testing framework for .NET, Java, Ruby, and PHP.
<ul>
	<li>Jon talks about how much he enjoyed Llewellyn’s talk on refactoring legacy code at So Cal Code Camp, and was especially intrigued by Approval Tests.</li>
	<li>Llewellyn explains how Approval Tests got started at a weekly coding for gun group.</li>
	<li>Llewellyn explains at a high level the problem that Approval Tests solves.</li>
	<li>Jon talks about what he noticed when he tried using approval tests – it’s not really so much about writing tests as in verifying output. Llewellyn how testing at the output verification level avoids many of the pitfalls of traditional unit testing.</li>
	<li>Jon asks about the use of diff tools in Approval Tests.</li>
	<li>Jon talks about the general flow of development using Approval Tests.</li>
	<li>Llewellyn mentions that Approval Tests has native implementations for .NET, Java, Ruby, and PHP.</li>
	<li>Jon asks about how the approved filetypes are set, and Llewellyn explains the overrides in Approvals.Approve().</li>
	<li>Llewellyn talks about how Approvals makes it easy to test complex objects.</li>
	<li>Llewellyn talks about how Approval Tests often only requires one test. Jon and K Scott ask about how that meshes with general testing practices which push towards very granular tests, and Llewellyn explains that he gets that granularity in the test coverage and results, but has the benefit of context in the test output as well.</li>
	<li>Jon asks about how output verification works with ASP.NET and ASP.NET MVC.</li>
	<li>Llewellyn explains how the use of Approval Tests combinations rules can make it really test output based on multiple input combinations.</li>
	<li>Llewellyn talks about how he especially likes using Approval Tests with legacy code , since it’s relatively easy to get good, working test coverage based on output rather than having to gain a deep understanding the internals of the legacy code . Jon and Llewellyn swap war stories about legacy code .</li>
	<li>Jon asks if he should be obsessing about a bunch of extra files with the approved results hanging around. Because he is.</li>
	<li>Jon asks about controlling file output; Llewellyn describes how namers, reporters, and writers provide flexibility.</li>
	<li>Llewellyn mentions the Rx Koans he worked on and says that Approval Tests Koans are on the way soon.</li>
	<li>Jon says that TDD has trained him to write tests that verify response to failure conditions.</li>
	<li>Jon asks if Approval Tests will be available for JavaScript.</li>
	<li>Jon asks what’s in the works for Approval Tests. Llewellyn talks about RDLC support and enhancements to the Visual Studio plugin.</li>
	<li>Jon asks what code coverage information Approval Tests can provide.</li>
	<li>Jon asks Llewellyn about how he get involved in Teaching Kids Programming.</li>
	<li>There’s a discussion about why it’s important to introduce computer programming to high school aged girls with a great analogy from Malcolm Gladwell’s Outliers book on the impact of birth month on competitive hockey players.</li>
	<li>Llewellyn explains how the program works, and Jon mentions the prior show with Sara J Chipps ( Herding Code 90) about Girl Develop It.</li>
	<li>Jon asks Llewellyn about upcoming speaking engagements</li>
</ul>
Show Links:
<ul>
	<li><a href="http://approvaltests.sourceforge.net/">Approval Tests project site</a></li>
	<li>Llewellyn Falco (<a title="http://llewellynfalco.blogspot.com/" href="http://llewellynfalco.blogspot.com/">blog</a>, <a href="http://twitter.com/isidore_us">@isidore_us</a>)</li>
	<li><a href="http://blog.approvaltests.com/">Approval Tests blog</a></li>
	<li><a href="http://teachingkidsprogramming.org/">Teaching Kids Programming</a></li>
	<li><a href="http://agile2011.agilealliance.org/">Agile 2011</a></li>
</ul>
<strong>Download / Listen: </strong>
<p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0117-Llewellyn-Falco-on-Approval-Tests.mp3"> Herding Code 117: Llewellyn Falcon on Approval Tests</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0117-Llewellyn-Falco-on-Approval-Tests.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 116: Eric Lawrence on Fiddler, IE Internals, and HTTP</title>
    <link>https://herdingcode.com/herding-code-116-eric-lawrence-on-fiddler-ie-internals-and-http/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-116-eric-lawrence-on-fiddler-ie-internals-and-http/</guid>
    <pubDate>Fri, 01 Jul 2011 22:12:50 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Eric Lawrence, the author of the popular Fiddler web debugging proxy. Eric&apos;s also a member of the Internet Explorer team and develo</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 116</strong></p>
<p>This episode of Herding Code the guys talk to Eric Lawrence, the author of the popular Fiddler web debugging proxy. Eric's also a member of the Internet Explorer team and developer of several popular freeware tools.</p>  <ul>   <li>Eric explains how he's been working on - and now runs - the team that works on the networking components for Internet Explorer.</li>    <li>Kevin asks Eric to clarify what portions of IE he works on. Eric explains that he's on fundamentals, which includes things like networking and security, not rendering or the DOM.</li>    <li>Jon asks Eric about his development focus. Eric says that his main focus is on C#.</li>    <li>Jon references an interesting bit of Eric's MIX talk about Fiddler - Fiddler is an HTTP proxy, so it works with all browsers and devices.</li>    <li>Scott mentions that he's used Fiddler for low-level network debugging. Eric talks about the broad range of Fiddler users.</li>    <li>Eric mentions that Fiddler's used for security testing, and there's a discussion of fuzz testing. Eric describes &quot;dumb fuzzing&quot; and &quot;smart fuzzing&quot;.</li>    <li>Jon asks how Fiddler is used with mobile devices.</li>    <li>Jon asks Eric if he's taking advantage of any &quot;internal&quot; info or API's as a member of the IE team. </li>    <li>Jon talks about how the plugin system has really paid off for Fiddler over the years. Eric talks about how he's supported both a Javascript and a reflection based .NET plugin system. </li>    <li>Eric mentions how he's tested a &quot;pure .NET 4&quot; version of Fiddler, and talks about the Fiddler itself runs on Fiddler Core, which is really close to running on the .NET client profile. </li>    <li>Jon asks Eric about some of the interesting things he's heard built on top of Fiddler Core. Eric mentions some testing extensions, ELMAH use, and FiddlerCap. </li>    <li>Jon asks what IE9 features Eric is taking advantage of. Eric talks about IE9's support for the X-Download-Initiator header, which allows tracing why a resource was requested. </li>    <li>Eric talks about Fiddler now proxies Cassini traffic for ASP.NET developers, and Jon mentions how he saw from internal bug reports that Eric was driving ASP.NET debugging issues with pre-release versions of IE9. </li>    <li>Eric mentions that the issue with IE9 betas and Cassini was due to IPv6, and since the podcast was recorded on IPv6 day, the conversation shifts over to a discussion of IPv6.</li>    <li>Jon asks Eric about IPv6 use in the real world, and Scott K asks about issues with SSL over IPv6.</li>    <li>Jon asks about IE's and Fiddler's support for HTTP verbs beyond GET and POST. Eric talks about how he had to drop some strict enforcement of protocols for non-standard verbs since actual usage often didn't follow the specs.</li>    <li>Jon asks Eric about the 100 Continue response. Eric explains why it's there, and how he handles it in Fiddler, and how IE handles it.</li>    <li>Jon asks about the Accept header, asking Eric's opinions on its use and how IE9 handles it. Eric explains how he doesn't think Accept really works, because proxies and servers don't correctly handle them.</li>    <li>Scott K asks about the advantages of being able to analyze aggregate HTTP traffic for a large organization like Microsoft. Eric explains that there's not really a lot of opportunity for IE, but he does get advanced notice on Fiddler issues from internal Microsoft use against pre-released software.</li>    <li>Kevin asks about the &quot;Fiddler has detected a protocol violation&quot; error. Eric explains that it's helpful in debugging issues which browsers will attempt to hide due to being very liberal and forgiving with respect to protocol violations.</li>    <li>Eric explains that there was an HTTP 0.9 version which didn't have HTTP headers, and talks about how his awareness of protocol violations on major websites came in handy. He mentions that he's thought about an HTTP-Lint module, which would be a lot more strict with respect to protocol violations.</li>    <li> Question from Twitter - James Schmidt - &quot;Will we see Fiddler features move over to IE Dev tools? </li>    <li>Jon asks about the common import / export format that IE F12 dev tools and Fiddler share... kind of. </li>    <li>Question from Twitter - Luke Foust - Hear about developing a side project inside Microsoft.</li>    <li>Jon asks Eric about some of his other freeware applications, including SlickRun and a popup blocker (big in Brazil!).</li>    <li>One of Eric's freeware applications was a utility to tweak the number of simultaneous downloads IE would use, which prompts Jon to ask about how simultaneous browser connections have evolved over the years.</li>    <li>Question Jarrod Dixon - &quot;Possible to open source SlickRun? I use it a lot and would like to add some features?&quot; </li>    <li>Kevin asks if Eric would consider open sourcing Fiddler at some point.</li>    <li>Eric wraps up with a description of what's in the works for Fiddler. Kevin asks for auto-update.</li> </ul>  <p>Show Links:</p>  <ul>   <li><a title="http://blogs.msdn.com/b/ieinternals/" href="http://blogs.msdn.com/b/ieinternals/">Eric's IE Internals blog</a> </li>    <li><a href="http://twitter.com/ericlaw">@ericlaw</a> on Twitter</li>    <li><a href="http://www.fiddler2.com/fiddler2/">Fiddler (Web Debugging Proxy)</a> website</li>    <li><a title="http://blogs.msdn.com/b/fiddler/" href="http://blogs.msdn.com/b/fiddler/">Fiddler blog</a> </li>    <li><a href="http://channel9.msdn.com/Events/MIX/MIX11/HTM08">The Devil Went Down to HTTP: Debugging with Fiddler (MIX11)</a></li>    <li><a title="http://www.fiddler2.com/fiddler/MIX2011/" href="http://www.fiddler2.com/fiddler/MIX2011/">MIX11 release notes for Fiddler</a> </li>    <li><a title="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx" href="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx">Post: Fiddler is better with Internet Explorer 9</a> </li>    <li><a href="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx">IE and the Accept Header</a></li>    <li><a href="http://blogs.msdn.com/b/ieinternals/archive/2011/03/27/http-406-not-acceptable-php-ie9-standards-mode-accepts-only-text_2f00_css-for-stylesheets.aspx">IE9 Standards Mode Accepts only text/css for stylesheets</a> (HTTP 406 post Eric mentioned)</li>    <li><a title="http://www.bayden.com/ietoys/" href="http://www.bayden.com/ietoys/">Some of Eric's freeware</a> at Bayden Systems </li>    <li><a href="http://www.fiddler2.com/SlickRun/">SlickRun</a><!--EndFragment--></li>    <li><a href="http://producingoss.com/">Producing Open Source Software</a> (book)</li> </ul>  <p><strong>Download / Listen:</strong></p>  <p align="left"><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0116-Eric-Lawrence-on-Fiddler-IE-Internals-and-HTTP.mp3">Herding Code 116: Eric Lawrence on Fiddler, IE Internals, and HTTP</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0116-Eric-Lawrence-on-Fiddler-IE-Internals-and-HTTP.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 115: RESTravaganza with Darrel Miller, Glenn Block, and John Sheehan</title>
    <link>https://herdingcode.com/herding-code-115-restravaganza-with-darrel-miller-glenn-block-and-john-sheehan/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-115-restravaganza-with-darrel-miller-glenn-block-and-john-sheehan/</guid>
    <pubDate>Wed, 22 Jun 2011 00:12:19 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk REST with Glenn Block (who&apos;s driving the WCF Web APIs), Darrel Miller (a REST expert with a lot of real world production experience),</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 115</strong></p>
<p>This episode of Herding Code the guys talk REST with Glenn Block (who's driving the WCF Web APIs), Darrel Miller (a REST expert with a lot of real world production experience), and John Sheehan (author of RestSharp) about what REST really is and what practical value it really offers in real world, production applications.</p>  <ul>   <li>Jon asks Glenn for a quick overview of how WCF Web API fits in with REST. </li>    <li>Darrel talks about how he got into REST in support of desktop systems. </li>    <li>John asks Darrel about how HttpListener is working for him. </li>    <li>K. Scott asks Darrel why he's doing all the work to plumb RESTful services rather than just going with something like SOAP. </li>    <li>Glenn asks Darrel how his RESTful services are more &quot;evolvable&quot; than previous technologies he's used. </li>    <li>Jon asks Darrel what REST means to him. Darrel says it means that there are just two things that the client and server couple on: media types and link relations. </li>    <li>John says that very few people he interviews describe REST as how Darrel just did. Glenn talks about how his understanding of REST evolved when he more closely studied Roy Fielding's original dissertation. </li>    <li>Question from Twitter (@stevenproctor - Steven Proctor): &quot;Do nice http paths really make an architecture RESTful? Wasn't there something about next available commands too?&quot; Glenn and Darrel talk about how this is the fundamental concept of hypermedia. </li>    <li>Jon ignites a firestorm by asking why people who care about REST dislike how OData is implemented. Chaos ensues. </li>    <li>Darrel explains how OData's format doesn't match with some important RESTful principles like link relations and metadata discoverability. </li>    <li>Glenn points out that OData is an API that takes a constrained view of of HTTP, which offers a tradeoff which many developers find beneficial. </li>    <li>Scott K asks the guests how many non-demo OData feeds are actually available. </li>    <li>Scott K asks why not just use JSON instead of OData, and Glenn explains how the important difference is around metadata - JSON is just untyped data. </li>    <li>Darrel talks about the concept of serendipitous reuse, and how common media types offer better reuse than untyped JSON data. </li>    <li>John asks if anyone is actually putting the client re-use case into practice in the real world, and Darrel plugs the REST Fest. Glenn points out that just having multiple versions of a client working against a spec is a significant advantage, talking about HTTP 1.0 and HTTP 1.1 as an example. </li>    <li>Jon asks&#160; if a microformat approach could work, and eventually an RDF discussion breaks out. </li>    <li>Glenn talks about how many people view REST by mapping HTTP verbs to CRUD (create, read, update, delete) operations, and they're missing the importance of linking and hypermedia. </li>    <li>Kevin asks where people &quot;lose the path&quot; with REST, and what are the most important concepts to stick with. Darrel comes back to the hypermedia constraint as the most important concept that's commonly missed. </li>    <li>Glenn points out that your architecture is up to you, and you don't have to follow RESTful principles, but there's a problem if you don't and claim your API is RESTful when it isn't. </li>    <li>John points out that there are few examples of RESTful systems really paying off in practice. Glenn and Darrel point to Jon Moore's Oredev talk about real business value to Comcast, and Jon mentions Glenn Block's MIX presentation about device support based on content negotiation. </li>    <li>Glenn explains that opportunities are emerging as we're moving beyond the browser, and he sees a lot of opportunity for WCF Web API's to shine here. </li>    <li>Darrel describes another example of how a RESTful API could guide a common user experience across platforms, using Twitter as an example. </li>    <li>Kevin asks for public examples of good RESTful API's. Darrel mentions Sun's cloud API and SteamCannon; Glenn says that ATOM PUB is the best public example. </li>    <li>K. Scott asks about building RESTful clients. </li>    <li>Kevin asks about the practicalities of clients navigating hypermedia. </li>    <li>Question from Twitter (@kellabyte - Kelly Sommers): &quot;I'm curious how REST might fit with an application that is wanting to store events and event sourcing. Is REST common for this?&quot; </li>    <li>Question from Twitter (@gsogol - Jeff Sogolov): &quot;How about Rest in the enterprise? Securing Rest services with Saml or oAuth? Also impersonation.&quot; </li>    <li>Jon mentions how WS-* defined methods for securing portions of message for different access and asks if REST handles that kind of scenario. Scott K, Glenn, and Darrel discuss. </li>    <li>The show wraps up with a discussion selecting architectural styles based on concrete benefits. </li>    <li>Darrel pimps REST Fest 2011, August 18 - 20. </li>    <li>John mentions his upcoming talk at DevLink on August 17, and Monospace July 23-25. </li>    <li>Glenn mentions the Portland Code Camp and //build/. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Glenn Block (<a href="http://blogs.msdn.com/b/gblock/">MSDN blog</a>, <a href="http://codebetter.com/glennblock/">CodeBetter blog</a>, @gblock) </li>    <li>John Sheehan (<a href="http://john-sheehan.com/blog/">blog</a>, @johnsheehan) </li>    <li>Darrel Miller (<a href="http://www.bizcoder.com/">blog</a>, @darrel_miller) </li>    <li><a href="http://wcf.codeplex.com">http://wcf.codeplex.com</a> </li>    <li><a title="http://restsharp.org/" href="http://restsharp.org/">http://restsharp.org/</a> </li>    <li><a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm">Roy Fielding's dissertation on REST</a> </li>    <li><a title="http://microformats.org/" href="http://microformats.org/">http://microformats.org/</a> </li>    <li>ALPS <a href="http://amundsen.com/hypermedia/profiles/">http://amundsen.com/hypermedia/profiles/</a> </li>    <li><a href="http://www.w3.org/RDF/">RDF (Resource Description Format)</a> </li>    <li><a href="http://oredev.org/2010/sessions/hypermedia-apis">Jon Moore's talk at Oredev 2010: Hypermedia APIs</a> </li>    <li><a href="http://kenai.com/projects/suncloudapis">Sun Cloud API</a> </li>    <li><a href="http://steamcannon.org/">SteamCannon</a> </li>    <li><a href="http://www.restfest.org/">REST Fest 2011</a> </li>    <li><a href="http://devlink.net/">DevLink</a> </li>    <li><a href="http://monospace.us/">Monospace</a> </li>    <li><a href="http://www.buildwindows.com/">BUILD conference</a> </li>    <li><a href="http://www.odata.org/producers">http://www.odata.org/producers</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0115-RESTravaganza-with-Darrel-Miller--Glenn-Block--John-Sheehan.mp3">Herding Code 115: RESTravaganza with Darrel Miller, Glenn Block, and John Sheehan</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0115-RESTravaganza-with-Darrel-Miller--Glenn-Block--John-Sheehan.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 114: Trevor Burnham on CoffeeScript</title>
    <link>https://herdingcode.com/herding-code-114-trevor-burnham-on-coffeescript/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-114-trevor-burnham-on-coffeescript/</guid>
    <pubDate>Tue, 14 Jun 2011 23:05:05 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Trevor Burnham about Coffeescript, &quot;a little language that compiles into JavaScript.&quot; Kevin asks Trevor to explain what CoffeeScrip</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 114</strong></p>
This episode of Herding Code the guys talk to Trevor Burnham about Coffeescript, "a little language that compiles into JavaScript."
<ul>
	<li>Kevin asks Trevor to explain what CoffeeScript is. Trevor explains how CoffeeScript helps you to write the same code you would have in JavaScript, but more quickly and with less effort.</li>
	<li>Kevin ask if people like CoffeeScript because they hate Javascript. Trevor talks about the strong reactions people had to the addition of CoffeeScript support for Rails, and how CoffeeScript is not a dumbed down Javascript, it's really just a cleaner syntax for exposing the functional power in the that underlies Javascript.</li>
	<li>Scott K talks about the time and political pressures that shaped Javascript, in some ways hiding a powerful language behind a mandated Java-like syntax.</li>
	<li>Kevin asks about the language inspirations behind CoffeeScript. Trevor talks about how it's drawn inspiration from Ruby, Python, Haskell, and Erlang.</li>
	<li>Jon asks about how CoffeeScript support is technically added to Rails - where is the compilation happening? Trevor explains  how the coffee-script and execjs gems select the Javascript runtime.</li>
	<li>Jon asks a question from Twitter by @darrencauthon about using CoffeeScript on Windows and .NET.</li>
	<li>Scott K asks about other languages that compile down to Javascript, and what will happen when Javascript as a language. Trevor talks about Objective-J and Traceur.</li>
	<li>Kevin asks about how you can debug CoffeeScript code.</li>
	<li>Jon talks about the Try CoffeeScript interactive compiler on the CoffeeScript.org site and asks resources for learning more about CoffeeScript.</li>
	<li>Scott K asks if CoffeeScript leverages more advanced Javascript features if they're available, and if there are language facilities for extending the language. Trevor talks about how CoffeeScript is just Javascript, so you can leverage the extensibility features that are already available in Javascript.</li>
	<li>Kevin drops back to asking some basics: why is CoffeeScript so special? What's with the new function syntax?</li>
	<li>Jon talks about how nice it is to just delete parentheses, braces, and semicolons. Trevor talks about how in general CoffeeScript code is 2/3 as verbose as the equivalent Javascript code.</li>
	<li>K Scott asks about how CoffeeScript simplifies scope issues, and Trevor talks about how CoffeeScript is very opinionated about scoping.</li>
	<li>Scott K asks about type coercion. Trevor mentions the wtfjs.com site, talking about how Javascript's type coercion can be surprising at times.</li>
	<li>Scott K asks about how DOM manipulation is handled. Trever explains that CoffeeScript works great with jQuery, and any other Javascript library available.</li>
	<li>Jon asks if it's possible to do CoffeeScript compilation in the browser, and asks if that's possible / practical for standard applications.</li>
	<li>Jon mentions the SassAndCoffee project for .NET.</li>
	<li>Jon asks if there are any Javascript to CoffeeScript converters. Trevor says he doubts there will ever be a good one, but after the show sent Jon a link to js2coffee (link below).</li>
	<li>Scott K asks about JSLint support. Trevor talks about how CoffeeScript works with JavaScript Lint.</li>
	<li>Kevin asks if CoffeeScript has been used as a DSL, and Trevor mentions CoffeeKup.</li>
	<li>Jon asks what happens if CoffeeScript hits a compiler error.</li>
	<li>Kevin asks about split between front-end vs. back-end use for CoffeeScript.</li>
	<li>Jon some a question from Christopher Deutsch (<a href="http://twitter.com/#!/@cdeutsch">@cdeutsch</a>) about how to sell CoffeeScript to a team - is this today's flavor, tomorrow's legacy headache?</li>
	<li>Kevin talks about how he likes the =&gt; function, and Jon mentions how he likes the @ operator as well.</li>
	<li>Kevin asks about the object orientation features in CoffeeScript, and Trevor mentions how the class keyword is used.</li>
	<li>Jon says the he sees a lot of similarity between CoffeeScript and SASS. Trevor talks about how both reduce repetitions.</li>
	<li>Jon asks if jQuery could take advantage of CoffeeScript.</li>
	<li>Trevor mentions how you can buy his book and mentions a recent article he published in PragPub.</li>
	<li>Trevor's upcoming talks: <a href="http://www.web2expo.com/webexny2011/public/schedule/detail/21103">O'Reilly Web 2.0 Expo in NYC in October</a> and <a href="http://oredev.org/2011">Oredev in Sweden in November</a>.</li>
</ul>
Show Links:
<ul>
	<li>Trevor Burnham (<a href="http://trevorburnham.com/">Site</a>, <a href="http://twitter.com/#!/coffeescript">@coffeescript</a>, <a href="http://twitter.com/#!/trevorburnham">@trevorburnham</a>)</li>
	<li><a href="http://coffeescript.org">CoffeeScript</a> site</li>
	<li>Hacker News: <a href="http://news.ycombinator.com/item?id=2442663">Rails 3.1 shipping with CoffeeScript</a></li>
	<li>StackOverflow: <a href="http://stackoverflow.com/questions/3175561/coffeescript-on-windows">CoffeeScript on Windows</a></li>
	<li>StackOverflow: <a href="http://stackoverflow.com/questions/2879401/how-can-i-compile-coffeescript-from-net">How can I compile CoffeeScript from .NET?</a></li>
	<li><a href="http://cappuccino.org/learn/tutorials/objective-j-tutorial.php">Objective-J</a></li>
	<li><a href="http://code.google.com/p/traceur-compiler/">Traceur</a></li>
	<li><a href="http://code.google.com/webtoolkit/">GWT (Google Web Toolkit)</a></li>
	<li><a href="https://github.com/jashkenas/coffee-script/wiki">The CoffeeScript Wiki</a></li>
	<li><a href="https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS">List of languages that compile to JS</a></li>
	<li>RailsCast: <a href="http://railscasts.com/episodes/267-coffeescript-basics">CoffeeScript Basics</a></li>
	<li>PeepCode: <a href="http://peepcode.com/products/coffeescript">Meet CoffeeScript</a></li>
	<li>Trevor's book: CoffeeScript: Accelerated JavaScript Development (<a href="http://www.amazon.com/gp/product/1934356786/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217153&amp;creative=399701&amp;creativeASIN=1934356786">Amazon</a>, <a href="http://pragprog.com/titles/tbcoffee/coffeescript">direct from PragProg</a>)</li>
	<li><a href="http://wtfjs.com/">wftjs.com</a></li>
	<li><a href="https://github.com/rstacruz/js2coffee">js2coffee</a> (Javascript to CoffeeScript compiler)</li>
	<li><a href="http://middlemanapp.com/">MiddleMan.rb</a> - Middleman is a static site renderer that provides all the conveniences of a modern web stack, like Ruby on Rails, while remaining focused on building the fastest, most-professional sites possible</li>
	<li>SassAndCoffee: <a href="https://github.com/xpaulbettsx/SassAndCoffee">project</a>, <a href="http://nuget.org/List/Packages/SassAndCoffee">NuGet</a></li>
	<li><a href="http://www.javascriptlint.com/">JavaScript Lint</a></li>
	<li><a href="http://coffeekup.org/">CoffeeKup</a></li>
	<li><a href="http://sass-lang.com/">Sass</a></li>
	<li>PragPub: <a href="http://pragprog.com/magazines/2011-05/a-coffeescript-intervention">A CoffeeScript Intervention</a></li>
	<li><a href="http://www.web2expo.com/webexny2011/public/schedule/detail/21103">O'Reilly Web 2.0 Expo in NYC in October</a></li>
	<li><a href="http://oredev.org/2011">Oredev in Sweden in November</a></li>
</ul>
<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0114-Trevor-Burnham-on-CoffeeScript.mp3">Herding Code 114: Trevor Burnham on CoffeeScript</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0114-Trevor-Burnham-on-CoffeeScript.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 113: Mark Russinovich on Zero Day and Computer Security</title>
    <link>https://herdingcode.com/herding-code-113-mark-russinovich-on-zero-day-and-computer-security/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-113-mark-russinovich-on-zero-day-and-computer-security/</guid>
    <pubDate>Fri, 27 May 2011 22:16:34 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Mark Russinovich about his new book ( Zero Day ), modern malware like Stuxnet, his experiences discovering the Sony rootkit, Sysint</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 113</strong></p>
<img style="float: right" src="http://upload.wikimedia.org/wikipedia/commons/3/3b/Mark_Russinovich.jpg" width="200" />   <p>This episode of Herding Code the guys talk to Mark Russinovich about his new book (<a href="http://www.amazon.com/gp/product/031261246X/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=031261246X">Zero Day</a>), modern malware like Stuxnet, his experiences discovering the Sony rootkit, Sysinternals tools, and computer security in general.</p>  <ul>   <li>K Scott asks Mark about how he decided to write Zero Day. Mark talks about how early, unsophisticated viruses still caused a lot of damage, and it got him thinking about what a virus attack motivated by a terrorist agenda could achieve. </li>    <li>K Scott talks about the shift to financial motivation in malware, and Mark mentions the book Zero Day Threat which discusses financially motivated malware. </li>    <li>Kevin asks Mark about his motivation for writing fiction in general, and how big a shift it was from technical writing. </li>    <li>K Scott talks about how he read the book while travelling, and how it did a pretty good job of terrifying him. </li>    <li>Mark mentions how the Stuxnet virus validated some of the scenarios he'd been using in the book, how sophisticated Stuxnet is, and how that level of sophistication in malware authoring is available for hire, cheaply. </li>    <li>Scott K asks about the threat that malware like Stuxnet could come back on the entity that released it, and Mark mentions that collateral damage is definitely a factor, but that the Stuxnet authors were apparently unconcerned by it. </li>    <li>We take a <a href="http://twitter.com/#!/mattd78/status/68508811622756353">question from listener @mattd78</a>: &quot;what does mark think of Linux and has he ever analyzed the source code to compare it to windows&quot; </li>    <li>Scott K asks how the malware targets have changed with the explosion of mobile devices. </li>    <li>K Scott asks Mark about how he uses Sysinternals tools when studying malware. </li>    <li>Jon asks about how live.sysinternals.com works to allow running the tools without an explicit download / install step. </li>    <li>Jon asks Mark whether he does all his testing in virtual machines or uses physical test machines. </li>    <li>K Scott asks Mark about Rootkit Revealer - how it got started, and how Mark discovered the Sony rootkit. Mark tells an interesting story about a cat and mouse game he was engaged with against a rootkit writer who went by the name of Holy Father, who kept coming up with ways to hide from Rootkit Revealer. </li>    <li>Mark talks about the interview he did on NPR about the Sony rootkit fiasco. </li>    <li>Kevin thanks Mark, on the behalf of Windows developers everywhere, for the Sysinternals tools. When Kevin tells Mark that they've saved his butt over and over, Mark says he's heard that feedback so many times that they used &quot;save your butt&quot; on advertising over the years. </li>    <li>Kevin asks Mark if working at Microsoft has made things easier. Mark says not so much - it's often quicker for him to disassemble and use dynamic analysis than to look at the source code. </li>    <li>Jon asks if Mark has any security feedback for .NET developers. Mark says that if you're purely in managed code, you need to focus on logic problems like SQL injection. </li>    <li>K Scott asks if Mark has anything he'd like to promote, and Mark talks about the upcoming book Windows Sysinternals Administrator's Reference. </li>    <li>Jon asks Mark what's the point of running antivirus software if it's not going to be 100% effective. </li>    <li>Kevin asks Mark if he's working on a sequel to Zero Day. He is! </li> </ul>  <p>Show Links:</p>  <ul>   <li>Mark Russinovich (<a href="http://blogs.technet.com/b/markrussinovich/">blog</a>, <a href="http://twitter.com/#!/markrussinovich">@markrussinovich</a>, <a href="http://en.wikipedia.org/wiki/Mark_Russinovich">wikipedia</a>) </li>    <li><a href="http://www.amazon.com/gp/product/031261246X/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=031261246X">Zero Day</a> </li>    <li><a href="http://technet.microsoft.com/en-us/sysinternals">Sysinternals</a> </li>    <li><a href="http://www.amazon.com/gp/product/140275695X/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=140275695X">Zero Day Threat</a> (book) </li>    <li><a href="http://www.amazon.com/gp/product/006170315X/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=006170315X">The Andromeda Strain</a> (book) </li>    <li><a href="http://en.wikipedia.org/wiki/Stuxnet">Stuxnet</a> </li>    <li><a href="http://blogs.technet.com/b/markrussinovich/archive/2011/03/30/3416253.aspx">Mark's series on Stuxnet</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Half-Life_2#Leak">Half-Life 2 source code leak</a> </li>    <li><a href="http://www.amazon.com/gp/product/0061962236/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=0061962236">Cyber War: The Next Threat to National Security and What to Do About It</a> (book) </li>    <li><a href="http://blogs.technet.com/b/robert_hensing/archive/2005/03/10/392092.aspx">Rootkit battle: Rootkit Revealer vs. Hacker Defender</a> </li>    <li><a href="http://www.amazon.com/gp/product/073565672X/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=073565672X">Windows Sysinternals Administrator's Reference</a> (book) </li>    <li><a href="http://blogs.technet.com/b/markrussinovich/archive/2006/01/03/the-antispyware-conspiracy.aspx">The Antispyware Conspiracy</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0113-Mark-Russinovich-on-Zero-Day-and-Computer-Security.mp3">Herding Code 113: Mark Russinovich on Zero Day and Computer Security</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0113-Mark-Russinovich-on-Zero-Day-and-Computer-Security.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 112: Josh Arnold and Jeremy Miller on FubuMVC</title>
    <link>https://herdingcode.com/herding-code-112-josh-arnold-and-jeremy-miller-on-fubumvc/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-112-josh-arnold-and-jeremy-miller-on-fubumvc/</guid>
    <pubDate>Tue, 24 May 2011 21:41:41 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to Josh Arnold and Jeremy Miller about what&apos;s new with FubuMVC. Jeremy Miller explains why FubuMVC &quot;deserves to exist&quot; and e</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 112</strong></p>
<p>This episode of Herding Code the guys talk to Josh Arnold and Jeremy Miller about what's new with FubuMVC.</p>  <ul>   <li>Jeremy Miller explains why FubuMVC &quot;deserves to exist&quot; and explains how compositional architecture and conventions help in building complex systems. </li>    <li>Josh talks about how FubuMVC diagnostics help in understanding how the conventions are being applied how FubuMVC is working. </li>    <li>Jon asks about how behavior chains work, and how they relate to routes. Jeremy and Josh explain how behaviors work and how they allow you to extend policies and conventions when you need to. </li>    <li>Jon asks how routes work, and Jeremy explains how they can be configured at a few different levels. </li>    <li>Jeremy talks about how FubuMVC is built to leverage static features in .NET through strong typing and leveraging the type system as much as is possible. </li>    <li>Josh and Jeremy talk about the advanced diagnostics which have recently been added to FubuMVC. </li>    <li>Jon asks how FubuMVC diagnostics compare to Glimpse. </li>    <li>Jeremy talks about the new packaging system, and how it can be used to apply complex and extensive changes just by dropping them into your application. </li>    <li>Scott K asks how the new packaging system relates to NuGet and OpenWrap, and Jeremy explains how the two are complimentary. </li>    <li>Jeremy and Josh talk about how their complex requirements in their active projects have driven FubuMVC's features. </li>    <li>There's a discussion of view engines - what's supported, what they're currently using in their projects. </li>    <li>Jeremy talks about how FubuMVC uses HTML conventions, how HtmlTags work, and how you can use jQuery-like chaining to reuse conventions. </li>    <li>Jeremy talks about how authorization works with the behavior chains. Scott K asks if this can be applied at the action level rather than at the UI level, and Jeremy explains the endpoint service. </li>    <li>We wrap up with a mention of Pablo's Fiesta, this Sept 30 - Oct 2 in Austin, TX.</li> </ul>  <p>Show Links:</p>  <ul>   <li>Jeremy Miller (<a href="http://codebetter.com/jeremymiller/">blog</a>, <a href="http://twitter.com/#!/jeremydmiller">@jeremydmiller</a>) </li>    <li>Joshua Arnold (<a href="http://www.joshua-arnold.com/">blog</a>, <a href="http://twitter.com/#!/jmarnold">@jmarnold</a>) </li>    <li><a href="https://github.com/DarthFubuMVC/fubumvc">FubuMVC on github</a> </li>    <li><a href="http://guides.fubumvc.com/">FubuMVC guides</a> </li>    <li><a href="http://www.nuget.org/List/Packages/FubuMVC">FubuMVC on NuGet</a> </li>    <li><a href="http://lostechies.github.com/fiesta/">Pablo's Fiesta</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0112-Josh-Arnold-and-Jeremy-Miller-on-FubuMVC.mp3">Herding Code 112: Josh Arnold and Jeremy Miller on FubuMVC</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0112-Josh-Arnold-and-Jeremy-Miller-on-FubuMVC.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 111: John Papa on the Open Source Fest at MIX11</title>
    <link>https://herdingcode.com/herding-code-111-john-papa-on-the-open-source-fest-at-mix11/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-111-john-papa-on-the-open-source-fest-at-mix11/</guid>
    <pubDate>Wed, 04 May 2011 20:55:03 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to John Papa about the Open Source Fest he put together at MIX11. Jon asks how the whole thing got started, and if John encountered an</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 111</strong></p>
<p>This episode of Herding Code the guys talk to John Papa about the Open Source Fest he put together at MIX11.</p>  <ul>   <li>Jon asks how the whole thing got started, and if John encountered any friction within Microsoft in getting this set up. </li>    <li>John describes the event and calls out some of the winners from the event. </li>    <li>There's a discussion of the Glimpse project. Scott asks what it is, and Jon tries to give the sales pitch for it. </li>    <li>John talks about how many of these really cool project are hampered by marketing mistakes like poor project pages and unmemorable project names. </li>    <li>John mentions some of the areas for improvement - less background noise, bigger space. Some of that was due to overwhelming response - stopped counting at 500 attendees, ran out of food 3 times, etc. </li>    <li>Scott asks if a next step should be an open source conference for .NET. Jon mentions that there are some benefits to piggybacking with a &quot;real&quot; conference so the bosses will pay for us to go. </li>    <li>Scott asks if there's any point to having sessions at a conference, since the real value at the conferences is in the networking and conversation. There's a discussion about how an open space is cool, but something of this scale isn't likely to self-organize. </li>    <li>Scott talks about how the ALT.NET Seattle event in Seattle is including open source hacking, proposing that larger conferences do this as well. </li>    <li>John mentions the Twitter list he's created for all Open Source Fest participants. </li>    <li>We take a question from Tony Champion, asking what John would do differently in future events.</li>    <li>John and Jon discuss the difference between consuming and participating in a conference.</li>    <li>John pimps the Silverlight MIXer event he runs at MIX.</li>    <li>Jon asks if there should be venture capital folks at future open source fests. John said said that it was important to keep clear of any ulterior motives at this first event, but it's possible that may happen in the future.</li>    <li>John and Jon talk about the difference between &quot;official&quot; events and sponsorship driven events.</li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://johnpapa.net/">John Papa</a> <a href="http://twitter.com/john_papa">@john_papa</a> </li>    <li><a href="http://johnpapa.net/osfmix11recap">Recap of Open Source Fest at MIX11</a></li>    <li><a href="http://johnpapa.net/osfmix11list">OSF Project List</a> </li>    <li><a href="http://motionfx.codeplex.com/">InfoStrat.MotionFx</a>&#160; - <a href="http://twitter.com/joshblake">Joshua Blake</a> </li>    <li><a href="http://smf.codeplex.com/">Silverlight Media Framework</a> - <a href="http://programmerpayback.com">Tim Greenfield</a> </li>    <li><a href="https://github.com/glimpse/">Glimpse</a> - <a href="http://twitter.com/nikmd23">Nik Molnar</a> and <a href="http://twitter.com/anthony_vdh">Anthony Van Der Hoorn</a> </li>    <li><a href="http://directcanvas.codeplex.com/">DirectCanvas</a> - <a href="http://jeremiahmorrill.com">Jeremiah Morrill</a> </li>    <li><a href="http://farseerphysics.codeplex.com/">Farseer Physics Engine</a> - <a href="http://twitter.com/JeffWeber">Jeff Weber</a> </li>    <li><a href="http://wiimotelib.codeplex.com/">WiiMote Library</a> - <a href="http://twitter.com/#!/brianpeek">Brian Peek</a> </li>    <li><a href="http://code.google.com/p/stack-exchange-data-explorer/">StackExchange Data Explorer</a> - <a href="http://twitter.com/samsaffron">Sam Saffron</a> </li>    <li><a href="http://restsharp.org/">RestSharp</a> - <a href="http://twitter.com/samsaffron">John Sheehan</a> </li>    <li><a href="http://social.msdn.microsoft.com/Search/en-US/?Refinement=118&amp;Query=nhibernate">Some MSDN Magazine articles on NHibernate (for Scott K)</a> </li>    <li>John Papa's <a href="http://twitter.com/John_Papa/osfmix11">OSFMix11 Twitter List</a> </li>    <li><a href="http://twitter.com/tonychampion">Tony Champion</a></li>    <li><a href="http://johnpapa.net/win-a-ticket-to-the-silverlight-mixer-party-at-mix11">Silverlight MIXer</a></li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0111-John-Papa-on-Open-Source-Fest.mp3">Herding Code 11: John Papa on the Open Source Fest at MIX11</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0111-John-Papa-on-Open-Source-Fest.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 110: Geoff Dalgas and Jarrod Dixon take us behind the scenes at StackExchange</title>
    <link>https://herdingcode.com/herding-code-110-geoff-dalgas-and-jarrod-dixon-take-us-behind-the-scenes-at-stackexchange/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-110-geoff-dalgas-and-jarrod-dixon-take-us-behind-the-scenes-at-stackexchange/</guid>
    <pubDate>Mon, 25 Apr 2011 17:19:16 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code Kevin and Jon sit down with Geoff and Jarrod at MIX to talk about their experiences from helping to build the first StackOverflow site up through to</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 110</strong></p>
<p>This episode of Herding Code Kevin and Jon sit down with Geoff and Jarrod at MIX to talk about their experiences from helping to build the first StackOverflow site up through today's fast paced world of StackExchanges and gold plated Lamborghinis. </p>  <p><em>Note: We recorded in quietest spot we could find - there's some background noise, but it's worth it.</em></p>  <ul>   <li>Geoff and Jarrod talk about their past job experiences, including building (gasp) 911 software with Visual Basic 6. </li>    <li>Jon asks how things worked at the beginning - did people work on separate areas? Was there a plan? </li>    <li>How do you share data when developing with a remote team? Geoff talks about how they started with the Database Project type, but moved to SQL scripts, ending with a migration tool. Jon gets to say "idempotent". </li>    <li>Geoff and Jarrod talk about how they've moved form Subversion to Mercurial. </li>    <li>Jon asks how code moves from local development to a production server. Geoff talks about the build and deployment process. </li>    <li>Kevin asks how much the process has changed over the years. </li>    <li>Geoff talks about how features first hit Meta, then the "others" tier (everything but StackOverflow), then to StackOverflow. </li>    <li>We talk about how they're using Redis, including the newly open sourced redis-sharp library, and some of the tricks that are used to keep the cache performant, including gzipping cached data. </li>    <li>We talk about how they do performance tuning, how costly queries are tracked, etc. </li>    <li>Geoff talks about how search was moved from SQL Server Full Text indexing to Lucene.NET in order to move the load off the database server. </li>    <li>Jon asks about how they've integrated the ASP.NET stack with open source front-end and utility software. </li>    <li>Jon asks how the the IT and collaboration works with the growing distributed team. </li>    <li>Jon asks how bugs are tracked, and the talk about how they use the Meta sites for tracking issues. Jon is sold on the concept and asks if he can install a local instance of Meta for his own bug tracking concepts, but the guys just laugh at him. </li>    <li>Jon asks for more specific on the performance monitoring systems the team uses, and Geoff gives him the rundown. </li>    <li>Jon asks how things have changed as the team has grown and buckets of funding money keep rolling in. </li>    <li>Geoff explains how they handle multi-tenancy, now that they're hosting lots of sites. Jon is amazed to hear that it's just one big application which switches data structures and display based on the url. </li>    <li>Geoff mentions that they're using Less to keep the CSS sane. </li>    <li>Kevin asks how much work is involved in spinning up a new site. Geoff explains the tool they've got set up to generate the scripts to add a new StackExchange site. </li>    <li>Jon asks about MVC 3 is working for them. They like the Razor. </li>    <li>Jon asks what annoys them most about ASP.NET MVC. After some thought, they lament that the routes are defined separately from the actions, but mostly it's just a lot of love for MVC. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Geoff Dalgas <a href="http://twitter.com/superdalgas">@superdalgas</a> </li>    <li>Jarrod Dixon <a href="http://twitter.com/jarrod_dixon">@jarrod_dixon</a> </li>    <li><a href="http://redis.io/">Redis</a></li>    <li><a href="http://marcgravell.blogspot.com/2011/04/async-redis-await-booksleeve.html">BookSleeve</a> (Redis client library)</li>    <li><a href="http://incubator.apache.org/lucene.net/">Lucene.NET</a> </li>    <li><a href="http://haproxy.1wt.eu/">HAProxy</a> </li>    <li><a href="http://www.skype.com">Skype</a> </li>    <li><a href="http://www.nagios.org/">Nagios</a> </li>    <li><a href="http://www.cacti.net/">Cacti</a> </li>    <li><a href="http://code.google.com/p/dapper-dot-net/">Dapper</a> </li>    <li>Sam Saffron <a href="http://twitter.com/samsaffron">@samsaffron</a> </li>    <li>Benjamin Dumke <a href="http://twitter.com/balpha">@balpha</a></li>    <li><a href="http://lesscss.org/">less.js</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0110-Geoff-Dalgas-and-Jarrod-Dixon-on-StackExchange.mp3">Herding Code 110: Geoff Dalgas and Jarrod Dixon take us behind the scenes at StackExchange</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0110-Geoff-Dalgas-and-Jarrod-Dixon-on-StackExchange.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 109: Harmony Hackathon</title>
    <link>https://herdingcode.com/herding-code-109-harmony-hackathon/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-109-harmony-hackathon/</guid>
    <pubDate>Wed, 20 Apr 2011 23:20:27 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code the guys talk to the organizers of the Harmony Hackathon: twelve developers coding madly for 48 hours, trying to build an application for the non-pr</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 109</strong></p>
<p>This episode of Herding Code the guys talk to the organizers of the Harmony Hackathon: twelve developers coding madly for 48 hours, trying to build an application for the non-profit Harmony Hill cancer retreat center.</p>  <ul>   <li>Eric talks about the Harmony Hackathon came together and what they were trying to accomplis. </li>    <li>Jon asks about how things were coordinated. The guys talk about how they managed the &quot;organized chaos&quot; of throwing a lot of developers in a room for 48 hours. </li>    <li>Scott K asks how a group of alpha geeks got past selecting an IoC container in a weekend, let alone write some code. </li>    <li>Jon asks for a rundown on the dependencies (Fluent NHibernate, Fluent Migrator, ASP.NET MVC 3, and some testing tools). </li>    <li>Hooray for build servers! </li>    <li>Discussion of machine.specifications and NUnit in order to test both high and low level code. </li>    <li>Scott K asks how much actually got done. </li>    <li>We talk to Vic to get the real scoop - sure the tech was cool, but did they build anything? How was it like to be the project owner with this kind of project? </li>    <li>Discussion of extremely short sprints - down to 30 minutes at the end! How do you handle Pomodoro length sprints? </li>    <li>We talk about Chewie, which adds some Bundler features to NuGet. </li>    <li>Scott K gets the rundown on psake (build automation in PowerShell) from Eric. </li>    <li>Scott K asks about what kind of interaction patterns they saw emerging. </li>    <li>Scott K asks about the future plans for this project. </li>    <li>Scott K asks why ALT.NET people would want to do something nice, and Jon mentions his mild surprise at the happy, friendly vibe he'd seen at the ALT.NET Seattle events he's attended. There's a discussion of the general spirit of the ALT.NET Seattle group. </li>    <li>Jon asks for lessons learned and recommendations for other people who want to put on a similar event. </li>    <li>Scott K asks about friction points with the tools the team selected. </li>    <li>Razor was one of the new things that none of the developers had used before. Jon remarks that learning Razor was kind of a non-event for him, and the guys agree. </li>    <li>Kevin asks about how the project lifecycle looks like when compressed to a 48 hour period. </li>    <li>Eric explains what Harmony Hill does, explaining why everyone was so motivated to help out. The guys talk about how it's nice to go beyond talking about beautiful code and actually doing something. </li>    <li>Scott K asks if there were technological things the team would do differently in the future. </li>    <li>The Open Source Track at ALT.NET Seattle (May 5-8) is mentioned. </li>    <li>Coding alone? You must wear the <a href="http://iamnotmyself.com/2011/02/09/introducing-the-coding-solo-cowboy-hat-of-shame/">Coding Solo Cowboy Hat of Shame</a>. </li>    <li>Pimp your stuff time: Harmony Hill, ALT.NET 2011, Giles, Simple.Data </li>    <li>The guys ask Scott K when we'll see the MVC generator thing he's been working on. </li>    <li>Everyone loves Simple.Data. </li>    <li>Developers, developers, developers! </li>    <li>Woof, woof, woof! </li>    <li>Does anyone read these notes? I don't think you do. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://www.harmonyhill.org/">Harmony Hill</a> </li>    <li><a href="http://iamnotmyself.com/">Bobby Johnson</a> (<a href="http://twitter.com/#!/notmyself">@notmyself</a>) </li>    <li><a href="http://github.com/cbilson">Chris Bilson</a> (<a href="http://twitter.com/cbilson">@cbilson</a>) </li>    <li><a href="http://ang3lfir3.wordpress.com/">Eric Ridgeway</a> (<a href="http://twitter.com/#!/ang3lfir3">@ang3lfir3</a>) </li>    <li>Vic Ridgeway (<a href="http://twitter.com/#!/ang3lsdream">@ang3lsdream</a>) </li>    <li><a title="https://github.com/HarmonyHacks/Dahlia" href="https://github.com/HarmonyHacks/Dahlia">https://github.com/HarmonyHacks/Dahlia</a> </li>    <li><a href="http://ang3lfir3.wordpress.com/2011/02/23/harmony-hackathon-the-beginning-of-something-big/">Harmony Hackathon: the beginning of something big?</a> </li>    <li><a href="http://iamnotmyself.com/2011/02/21/harmony-hill-hackathon-the-aftermath/">Harmony Hill Hackathon: The Aftermath</a> </li>    <li><a href="http://iamnotmyself.com/2011/02/21/the-inception-of-circle-pulling/">The Inception of Circle Pulling</a>&#160; </li>    <li><a href="http://blogs.msdn.com/elee">Eric Lee</a> (<a href="http://twitter.com/#!/saintgimp">@saintgimp</a>) </li>    <li><a href="https://github.com/JamesKovacs/psake">psake</a> </li>    <li><a href="https://github.com/machine/machine.specifications">machine.specifications</a> </li>    <li><a href="https://github.com/Ang3lFir3/Chewie">Chewie</a> </li>    <li><a href="http://www.pomodorotechnique.com/">The Pomodoro technique</a> </li>    <li><a href="http://www.jetbrains.com/teamcity/">Team City</a> </li>    <li><a href="http://gembundler.com/">Bundler</a> </li>    <li><a href="http://adrianotto.com/2010/08/dev-null-unlimited-scale/">Dev Null webscale database</a> </li>    <li><a href="http://altnet2011.heroku.com/">ALT.NET Seattle 2011</a> </li>    <li><a href="http://altnet2011.heroku.com/oss">ALT.NET Seattle 2011 Open Source Track</a> </li>    <li><a href="http://iamnotmyself.com/2011/03/13/ci-in-the-real-world-slide-deck-links/">Continous Integration in the Real World</a> </li>    <li><a href="https://github.com/codereflection/Giles">Giles - continuous testing tool</a> </li>    <li><a href="http://solutionfactory.codeplex.com/">Solution Factory</a> </li>    <li><a href="https://github.com/NancyFx/Nancy">Nancy</a> </li>    <li><a href="https://github.com/markrendle/Simple.Data">Simple.Data</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0109-Harmony-Hackathon.mp3">Herding Code 109: Harmony Hackathon</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0109-Harmony-Hackathon.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 108: Jin Yang and Nathan Bowers on Web Design</title>
    <link>https://herdingcode.com/herding-code-108-jin-yang-and-nathan-bowers-on-web-design/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-108-jin-yang-and-nathan-bowers-on-web-design/</guid>
    <pubDate>Fri, 25 Mar 2011 00:15:54 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code continues a discussion / argument that Jon started with Jin Yang and Nathan Bowers on Twitter a few weeks ago after reading a post he liked from a p</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 108</strong></p>
<p>This episode of Herding Code continues a discussion / argument that Jon started with Jin Yang and Nathan Bowers on Twitter a few weeks ago after reading a post he liked from a product designer at Quora about how they don't use Photoshop in their design process. What's the role of visual design in the web design process? Can designers and developers ever be friends? Are HTML and CSS the lingua franca of designers and developers, or just an implementation detail? Do designers need to know HTML to be good web designers? Listen as Jin and Nathan set Jon straight.</p>  <ul>   <li>Jon tries to get Jin and Nathan upset, but they both start by agreeing </li>    <li>Nathan mentions that Photoshop is a production tool, not a design tool </li>    <li>Jin and Jon talk about the value of wireframes, and how the transition from wireframe </li>    <li>Nathan talks about how different clients have different demands - Quora can prototype rapidly for their own product, but some clients will require high quality graphic deliverables </li>    <li>Kevin asks developers and designers work together in HTML based design - who does the HTML? </li>    <li>Jon talks about how moving the discussion from images to a client accessible stage / demo server early in the project helps everyone communicate </li>    <li>Jon asks both which sorts of sites work better for HTML based design because they're mostly textual </li>    <li>Jon asks Jin how he works on StackExchange proposals </li>    <li>Nathan talks about how the site focus dictates the design process, and how he's mostly done with Photoshop </li>    <li>Kevin asks if there's a place for a tool that's somewhere between the purely visual Photoshop world and HTML: Nathan says it'd be nice, Jon says the generated HTML is always horrible, and Jin says that's why he thinks designers need some HTML smarts </li>    <li>Nathan brings up Jon's post on the Designer / Developer Workflow Crisis, and Jin talks about his post on Web Designers and Coding </li>    <li>The talk moves to a visual-first design focus can end up with a website that doesn't provide the information the users actually want, and some favorite XKCD and The Oatmeal links are shared </li>    <li>Jin and Jon talk about how your clients aren't really the end customers of your design, the users are </li>    <li>Nathan asks Jon about how he thinks the design / developer workflow should be </li>    <li>Nathan, Scott K, Jon, and Jin Jin talk about how developers can involved in the development process after the &quot;design handoff&quot; </li>    <li>Jin talks about how developers should be part of the design process, and Jon and Scott K talk about how important it is for the whole team to know the context of what they're doing </li>    <li>Kevin mentions that his wife is a web designer who doesn't do HTML, and every hastily backpedals </li>    <li>Jon and Jin talk about how the background reasons for wanting designers to know HTML can still be met by the designer knowing the constraints of the web medium really well </li>    <li>Kevin talks about how today's Ajax heavy sites aren't really just HTML anymore </li>    <li>Jon talks about how he hates the new trend towards single page applications </li>    <li>Kevin says that he thinks that saying designers should know HTML is like saying developers should know how to design, but Jin says that HTML isn't programming, it's the medium that both designers and developers are producing for </li>    <li>Jon says that he thinks developers should try to learn more design </li>    <li>Scott K asks how developers can learn design, and Jin and Nathan share tips </li>    <li>Jon mentions some great talks by Robby Ingebretsen on design fundamentals for developers </li>    <li>Kevin asks how much of design is just natural talent </li>    <li>Jon talks about how he likes design discussions among the whole dev team, and Nathan says that it's important for the team to be able to communicate about the business and strategy for their project as well </li>    <li>Nathan talks about the book Mindfulness which shows how working through a lot of ideas helps you come up with great ideas </li>    <li>Jon talks about how a process that allows for continuous change throughout the project allows you to continue to shape the design as you go, and Scott K accuses him of being agile </li>    <li>Jon asks Jin how he interacts with a team who develops on Windows when he's on a Mac, and they discuss how Firebug (and similar tools) allow for cross platform development </li>    <li>Jon asks what sites should be designed using Photoshop / visual design first </li>    <li>Jin asks Nathan about his thoughts on 960.gs, and Jon rants about how grid systems fight semantic design </li>    <li>Scott K talks about the Flex Box Model will make it easier to design with grids without giving up on semantic markup </li>    <li>Jin mentions HTML5 shims, but Scott K says that doesn't work as well for mobile </li>    <li>Jin talks about how the real challenge in StackExchange design is in creating an emotional reaction, and Kevin says that's the result he cares about a lot more than HTML </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://www.8164.org/">Jin Yang</a> (<a href="http://twitter.com/jzy">@jzy</a>) </li>    <li><a href="http://uxhero.com/">Nathan Bowers</a> (<a href="http://twitter.com/nathanbowers">@nathanbowers</a>) </li>    <li><a href="http://www.quora.com/Joel-Lewenstein/Life-Without-Photoshop">Life without Photoshop</a> </li>    <li><a href="http://www.avc.com/">AVC</a> (designed by Nathan) </li>    <li><a href="http://stackexchange.com/sites">StackExchange sites list</a> - e.g. <a href="http://tex.stackexchange.com/">TEX</a>, <a href="http://gaming.stackexchange.com/">Gaming</a>, <a href="http://cooking.stackexchange.com/">Cooking</a>, <a href="http://math.stackexchange.com/">Mathematics</a>, <a href="http://gis.stackexchange.com/">GIS</a> </li>    <li>Jon: <a href="http://weblogs.asp.net/jgalloway/archive/2009/10/15/the-designer-developer-workflow-crisis-that-everyone-s-ignoring.aspx">The Designer/Developer Workflow Crisis (That Everyone's Ignoring)</a> </li>    <li>Jin: <a href="http://www.8164.org/web-designers-coding/">Web Designers &amp; Coding</a> </li>    <li>Jon: <a href="http://twitter.com/jongalloway/status/41569344039157760">Designing websites in Photoshop is like creating your dinner menu in Play Doh</a> </li>    <li>XKCD: <a href="http://www.xkcd.com/773/">University Website</a> </li>    <li>The Oatmeal: <a href="http://theoatmeal.com/comics/restaurant_website">What I Want From A Restaurant Website</a> </li>    <li>The Oatmeal: <a href="http://theoatmeal.com/comics/design_hell">How A Web Design Goes Straight To Hell</a> </li>    <li><a href="http://www.hanselman.com/blog/HanselminutesPodcast222ArtIsShippingDesignersAndDevelopersWithJinYang.aspx">Jin Yang on Hanselminutes</a> </li>    <li>Robby Ingebretsen's presentations on design for developers: <a href="http://nerdplusart.com/mix09-design-fundamentals-for-developers">Design Fundamentals for Developers</a> and <a href="http://nerdplusart.com/mix-10-ten-ways-to-attack-a-design-problem-and-win">Ten Ways To Attack A Design Problem And Win</a> </li>    <li>Jin: <a href="http://www.8164.org/talent-vs-hard-work/">talent vs. hard work</a> </li>    <li>Book: <a href="http://www.amazon.com/gp/product/0201523418/ref=as_li_ss_tl?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201523418">Mindfulness</a> </li>    <li><a href="http://getfirebug.com/">Firebug</a> and <a href="https://addons.mozilla.org/en-US/firefox/addon/web-developer/">Web Developer Toolbar</a> </li>    <li><a title="http://960.gs/" href="http://960.gs/">http://960.gs/</a> </li>    <li><a href="http://live.visitmix.com/">MIX 2011</a> </li> </ul>  <p>Jin's link list for developers who want to learn more about design</p>  <ul>   <li><a href="http://www.456bereastreet.com/">http://www.456bereastreet.com/ (accessibility)</a> </li>    <li><a href="http://www.alistapart.com/">http://www.alistapart.com/ (web design, standards)</a> </li>    <li><a href="http://www.drawar.com/">http://www.drawar.com/ (design community, articles, showcases and forum).</a> </li>    <li><a href="http://www.lukew.com/ff/">http://www.lukew.com/ff/ (interaction design)</a> </li>    <li><a href="http://37signals.com/svn/posts">http://37signals.com/svn/posts (web app design, inspirations)</a> </li>    <li><a href="http://www.smashingmagazine.com/">http://www.smashingmagazine.com/ (showcases, freebies, articles)</a> </li>    <li><a href="http://typography.com/email/2010_03/index_tw.htm">http://typography.com/email/2010_03/index_tw.htm (typography)</a> </li>    <li><a href="http://retinart.net/">http://retinart.net/ (graphics design)</a> </li>    <li><a href="http://cssglobe.com/">http://cssglobe.com/ (frontend dev)</a> </li>    <li><a href="http://ilovetypography.com/">http://ilovetypography.com/ (typography)</a> </li>    <li><a href="http://www.uxbooth.com/">http://www.uxbooth.com/ (User Experience)</a> </li>    <li><a href="http://scriptandstyle.com">http://scriptandstyle.com/ (frontend dev)</a> </li>    <li><a href="http://www.thegridsystem.org/">http://www.thegridsystem.org/ (layout)</a> </li>    <li><a href="http://52weeksofux.com/">http://52weeksofux.com/ (User experience, design)</a> </li>    <li><a href="http://tutsplus.com/">http://tutsplus.com/ (tutorials)</a> </li>    <li><a href="http://www.zeldman.com/ ">http://www.zeldman.com/ (web standards)</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0108-Jin-Yang-and-Nathan-Bowers-on-User-Experience-Design.mp3">Herding Code 108: Jin Yang and Nathan Bowers on Web Design</a></p>    <p style="overflow: auto"><a href="http://www.jetbrains.net/resharper?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=resharper"><img src="https://herdingcode.com/wp-content/uploads/ads/rs60_eap1.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0108-Jin-Yang-and-Nathan-Bowers-on-User-Experience-Design.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 107: Apple Subscription fees, Nokia, Reflector, Mono, Watson, CardSpace, and IE9 RC</title>
    <link>https://herdingcode.com/herding-code-107-apple-subscription-fees-nokia-reflector-mono-watson-cardspace-and-ie9-rc/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-107-apple-subscription-fees-nokia-reflector-mono-watson-cardspace-and-ie9-rc/</guid>
    <pubDate>Thu, 10 Mar 2011 08:20:39 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the guys talk nonsense for over an hour. Topic: The Apple Store 30% fee for App Subscriptions - who&apos;s surprised, what apps will it affect, etc.</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 107</strong></p>
<p>In this episode of Herding Code, the guys talk nonsense for over an hour.</p>  <ul>   <li><strong>Topic: The Apple Store 30% fee for App Subscriptions - who's surprised, what apps will it affect, etc. </strong></li>    <li>The conversation shifts to Kindle, and whether content focused apps can move to HTML only. </li>    <li><strong>Topic: Windows Mobile deal with Nokia - will it help? </strong></li>    <li>K Scott thinks it's very late for both parties. </li>    <li>Jon doesn't think there's much loyalty in the smartphone market since people get a new phone every few years. </li>    <li>There's some discussion about where this leaves the enterprise phone market. Kevin thinks that Microsoft should just have focused on the enterprise. </li>    <li><strong>Topic: Reflector - was free, was going to be free forever, but now it's not. </strong></li>    <li>Kevin and K Scott talk about how bad it is from a community perspective. </li>    <li>Kevin wonders how many developers or updates are required to keep Reflector going? </li>    <li>Jon, K Scott, and Kevin talk about what they use Reflector for. </li>    <li>The guys talk about open source alternative - IL Spy, Cecil based disassemblers, JetBrains's new decompiler. </li>    <li>Kevin and Jon talk about why a $35 cost is a bigger problem than it sounds like. </li>    <li><strong>Topic: Mono 2.10 and Moonlight 4 Preview 1 released - what does it mean?! </strong></li>    <li><strong>Topic: Watson plays Jeopardy. Jon asks if it just called into Wolfram Alpha, and K Scott wonders if has a Sean Conery mode. </strong></li>    <li><strong>Topic: CardSpace 2.0 won't be shipped. Nobody but Jon cares. </strong></li>    <li>Scott K talks about the LastPass. Jon asks how that work on different computers, mobile, etc. </li>    <li><strong>Topic: Internet Explorer 9 RC is out </strong></li>    <li>Jon talks about how IE9RC works better with Visual Studio now. </li>    <li>Jon likes the simplified UI, but talks about a few of the annoyances he's run into. </li>    <li>Jon and Kevin talk about the tab UI handling. </li>    <li>Jon talks about how some sites break on JavaScript </li>    <li>Scott K brings up the blog post from Mozilla asking if IE9 is a modern browser. </li>    <li>The guys talk about IE9 supported features, general HTML5 support across browsers, etc. </li>    <li>Kevin says that the biggest problem with IE is the slow ship cycle. Kevin and Scott K discuss the possibility of splitting out an enterprise browser. </li>    <li>Kevin talks about the GPU acceleration in IE9 and how he thinks it's overblown. </li>    <li>Jon talks about the lack of XP support for IE9. </li>    <li>The guys talk about how they wish there was an IE6 standalone. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://techcrunch.com/2011/02/15/apple-in-app-subscriptions/">TechCrunch article on the Apple store 30% App Subscription fee</a> </li>    <li><a href="http://www.microsoft.com/presspass/press/2011/feb11/02-11partnership.mspx">Announcement about Windows / Nokia deal</a> </li>    <li><a href="http://www.red-gate.com/products/dotnet-development/reflector/announcement">Red Gate's announcement that Reflector will no longer be free</a> </li>    <li><a href="http://blog.lutzroeder.com/2008/08/future-of-net-reflector.html">Original announcement from Lutz about Red Gate buying Reflector</a> </li>    <li><a href="http://stackoverflow.com/questions/2425973/open-source-alternatives-to-reflector">Open source alternatives to Reflector on StackOverflow</a> </li>    <li><a href="http://tirania.org/blog/archive/2011/Feb-16.html">Moonlight 4 Preview 1 release announcement</a> </li>    <li><a href="http://tirania.org/blog/archive/2011/Feb-16-1.html">Mono 2.10 release announcement</a> </li>    <li><a href="http://www-03.ibm.com/innovation/us/watson/">IBM Watson</a> </li>    <li><a href="http://blogs.msdn.com/b/card/archive/2011/02/15/beyond-windows-cardspace.aspx">Beyond Windows CardSpace</a> </li>    <li><a href="http://lastpass.com/">LastPass</a> </li>    <li><a href="http://people.mozilla.com/~prouget/ie9/">Is IE9 a modern browser?</a> </li>    <li><a href="http://blogs.msdn.com/b/tims/archive/2011/02/15/a-modern-browser.aspx">Tim Sneath: A Modern Browser</a> </li>    <li><a href="http://html5labs.interoperabilitybridges.com/">Interoperability Bridges</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)">Comparison of layout engines (HTML5)</a> </li>    <li><a href="http://caniuse.com/">Can I Use</a> </li>    <li>Kelly Sommers (<a href="http://twitter.com/kellabyte">@kellabyte</a>) </li>    <li><a href="http://expression.microsoft.com/en-us/dd565874.aspx">Expression Web SuperPreview</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0107-Apple-Subscription-fees-Nokia-Reflector-Mono-Watson-CardSpace-IE9-RC.mp3">Herding Code 107: Apple Subscription fees, Nokia, Reflector, Mono, Watson, CardSpace, and IE9 RC</a></p>    <p style="overflow: auto"><a href="http://www.jetbrains.com/dotcover?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=dotcover"><img alt="JetBrains code coverage tool for .NET apps and Silverlight, dotCover, will soon get an update with improved filtering, reporting, and presentation of unit test coverage results. Get a 30-day trial and a fair price at jetbrains.com/dotcover. By the way, buying dotCover entitles you for a full year of free upgrades." src="https://herdingcode.com/wp-content/uploads/ads/DC_HerdingCode.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0107-Apple-Subscription-fees-Nokia-Reflector-Mono-Watson-CardSpace-IE9%20RC.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 106: Mark Rendle on Simple.Data</title>
    <link>https://herdingcode.com/herding-code-106-mark-rendle-on-simple-data/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-106-mark-rendle-on-simple-data/</guid>
    <pubDate>Tue, 22 Feb 2011 21:12:41 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the guys speak with Mark Rendle about his Simple.Data and Fix projects. The show begins with Mark&apos;s Simple.Data elevator pitch in which he expla</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 106</strong></p>
<p>In this episode of Herding Code, the guys speak with Mark Rendle about his Simple.Data and Fix projects.</p>  <ul>   <li>The show begins with Mark's Simple.Data elevator pitch in which he explains that Simple.Data is an ORM without the O, the R or the M. </li>    <li>Jon asks about Mark's heavy use of dynamic types in the Simple.Data source. Mark talks about the Method Missing pattern in Ruby and how that translates to dynamic .NET programming in Simple.Data. </li>    <li>Jon and Mark dig deeper into the code and then they walkthrough project advancement from supporting basic CRUD functions to the recent addition of database transactions. </li>    <li>Mark shares Simple.Data's current and future support for numerous relational and non-relational databases. </li>    <li>Jon and Mark talk about the use of MEF, rather than a full-blown IoC container, in Simple.Data. </li>    <li>Scott K and Mark discuss Simple.Data tests, their implementation and the TDD and FDD (Fear-driven development) which Mark took while developing his project. </li>    <li>Kevin asks if the heavy use of dynamics instigated the need to write more tests. Mark answers by sharing his views on why coders might prefer either static or dynamic typed languages. </li>    <li>Jon asks about Simple.Data adoption and code optimizations which might be required to support increased production use. </li>    <li>Mark digs into Reactive Extensions and how it's used in Simple.Data. </li>    <li>Mark talks about the growing movement of simple web development projects and the tools/frameworks which support these efforts and, coincidently, answers <a href="http://twitter.com/Aaronontheweb">@AaronOnTheWeb</a>'s Twitter-submitted question. </li>    <li><a href="http://twitter.com/CodeReflection">@CodeReflection</a> asks about Simple.Data support for aggregates which prompts a discussion about where/how these operations should be handled. </li>    <li><a href="http://twitter.com/jacksonh">@jacksonh</a> asks about support for asynchronous operations. </li>    <li>The conversation switches to Mark's involvement with OWIN and his <strike>Crack</strike> Fix project offers an ultra-lightweight web glue for .NET, written in C#.. </li>    <li>K Scott notes Mark's awesome gravitar choice Jerry Statler </li>    <li>Mark closes by mentioning his participation in <a href="http://www.developerdeveloperdeveloper.com/home/">DDD (DeveloperDeveloperDeveloper!)</a>, <a href="http://cloudeve.ning.com/">Skills Matter Cloud Evening</a>, and then Cambridge <a href="http://www.nxtgenug.net">NxtGenUG (Next Generation User Group)</a>. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://blog.markrendle.net/">Mark Rendle</a>, <a href="http://twitter.com/markrendle">@MarkRendle</a>&#160; </li>    <li><a href="http://www.dotnetsolutions.co.uk/">Dot Net Solutions London</a> </li>    <li><a href="https://github.com/markrendle/Simple.Data">Simple Data</a> </li>    <li><a href="http://weblogs.asp.net/davidfowler/archive/2010/08/03/microsoft-data-dll-a-re-introduction.aspx">Microsoft.Data</a> </li>    <li><a href="http://blog.wekeroad.com/">Rob Conery</a> </li>    <li><a href="http://nuget.codeplex.com/">NuGet</a> </li>    <li><a href="http://nhforge.org/Default.aspx">NHibernate</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/data/aa937723">Entity Framework</a> </li>    <li><a href="http://www.subsonicproject.com/">SubSonic</a> </li>    <li><a href="http://datamapper.org/">DataMapper</a> </li>    <li><a href="http://code.google.com/p/autofac/">autofac</a> </li>    <li><a href="http://structuremap.net/structuremap/">StructureMap</a> </li>    <li><a href="http://msmvps.com/blogs/jon_skeet/">Jon Skeet</a>, <a href="http://twitter.com/jonskeet">@jonskeet</a> </li>    <li><a href="http://www.hanselman.com/blog/">Scott Hanselman</a>, <a href="http://twitter.com/shanselman">@shanselman</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/devlabs/ee794896">Reactive Extensions</a> </li>    <li><a href="http://www.openwrap.org/">Open Wrap</a> </li>    <li><a href="http://www.sinatrarb.com/">Sinatra</a> </li>    <li><a href="http://trac.caffeine-it.com/openrasta">OpenRasta</a> </li>    <li><a href="http://code.google.com/p/fubumvc/">FubuMVC</a> </li>    <li><a href="https://github.com/thecodejunkie/Nancy">Nancy</a> </li>    <li><a href="http://www.microsoft.com/web/webmatrix/">WebMatrix</a> </li>    <li><a href="http://www.aaronstannard.com/">Aaron Stannard</a>, <a href="http://twitter.com/Aaronontheweb">@AaronOnTheWeb</a> </li>    <li><a href="http://codingreflection.com/">Jeff Schumacher</a>, <a href="http://twitter.com/CodeReflection">@CodeReflection</a> </li>    <li><a href="http://jacksonh.tumblr.com/">Jackson Harper</a>, <a href="http://twitter.com/jacksonh">@jacksonh</a> </li>    <li><a href="http://owin.github.com/">OWIN</a> </li>    <li><a href="http://groups.google.com/group/net-http-abstractions/browse_thread/thread/d5dce30e10a4b092/f6103edfa7269e37#f6103edfa7269e37">.NET Abstractions</a> </li>    <li><a href="http://github.com/markrendle/CRack">Crack</a> is now <a href="https://github.com/markrendle/fix">Fix</a> </li>    <li><a href="https://github.com/markrendle/Fix/blob/master/README.md">Fix ReadMe</a> </li>    <li><a href="http://ravendb.net/">Raven DB</a> </li>    <li><a href="http://github.com/panesofglass/frack">Frack</a> </li>    <li><a href="http://codebetter.com/blogs/glenn.block/default.aspx">Glenn Block</a>, <a href="http://twitter.com/gblock">@gblock</a> </li>    <li><a href="http://www.microsoft.com/windowsazure/">Azure</a> </li>    <li><a href="http://tinyclouds.org/">Ryan Dahl</a> </li>    <li><a href="http://serialseb.blogspot.com/">Seb Lambla</a>, <a href="http://twitter.com/serialseb">@serialseb</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Statler_and_Waldorf">Jerry Statler and Conrad Waldorf</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0106-Mark-Rendle-on-Simple-Data.mp3">Herding Code 106: Mark Rendle on Simple.Data</a></p>    <p style="overflow: auto"><a href="http://www.jetbrains.com/youtrack/hosted/?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=YouTrack"><img src="https://herdingcode.com/wp-content/uploads/ads/yt_hosted_herdingcode300x250.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0106-Mark-Rendle-on-Simple-Data.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 105: Brad Wilson on MVC 3</title>
    <link>https://herdingcode.com/herding-code-105-brad-wilson-on-mvc-3/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-105-brad-wilson-on-mvc-3/</guid>
    <pubDate>Mon, 14 Feb 2011 23:51:41 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the guys talk to ASP.NET team member and repeat guest Brad Wilson about what&apos;s new in ASP.NET MVC 3, BDD-style testing with SpecFlow and WaitN,</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 105</strong></p>
<p>In this episode of Herding Code, the guys talk to ASP.NET team member and repeat guest Brad Wilson about what's new in ASP.NET MVC 3, BDD-style testing with SpecFlow and WaitN, and the latest release of xUnit.net. </p>  <ul>   <li>Jon begins the show by sharing Brad's bio and then dives right in asking about ASP.NET MVC 3 Service Location.&#160; Brad talks about DI and IoC, introduces the new feature and the implementation through such things as IDependencyResolver and Controller Activator. For the full story, you should check out <a href="http://bradwilson.typepad.com/blog/2010/07/service-location-pt1-introduction.html">Brad's eleven part series on ASP.NET MVC 3 Service Location</a>. </li>    <li>Scott K asks why the MVC team didn't use MEF for dependency injection. Brad comments and brings up the prospect of using NuGet to install MEF support. </li>    <li>Scott K asks if MVC could ship as a NuGet package. The conversation shifts to how NuGet could allow MVC to further decouple it's shipping schedule from that of Visual Studio and the .NET Framework. </li>    <li>Everyone (Well, almost everyone. Kevin's being surprisingly quiet.) talks about jQuery plugins in the NuGet feed and how maintaining obsolete packages could get out of hand. </li>    <li>Jon asks about how the jQuery based unobtrusive validation system works in MVC 3 and asks if the ASP.NET Web Forms validation system could possibly take advantage of the new unobtrusive validation support. </li>    <li>Brad talks about the ASP.NET MVC development team and his role in developing ASP.NET MVC 3. </li>    <li>Jon runs through the big features which were shipped with MVC 3 - Razor, Service Location, NuGet, Unobtrusive Validation. Scott K mentions default templates are now using HTML5 doc types and Brad notes other MVC 3 features like Unobtrusive Ajax, Remote Validator, Json Model and Binding support. </li>    <li>Brad talks about extensibility for view engines in project templates and the new add view dialogue features. </li>    <li>Via Twitter, <a href="mailto:S@Gsogol">@gsogol</a> asks if we will ever see fluent type configurations of filters, validations for controllers and classes. </li>    <li>Jon brings up the MVC 3 Futures library and asks Brad if it includes features which he wishes were rolled into the core MVC 3 bits. Brad explains the performance benefits of using the caching version of the model metadata provider system in the Futures library. </li>    <li>K Scott asks about feature requests for Display and Editor Templates and the guys talk about code based templates. </li>    <li>Jon talks about his favorable experience with Razor and mentions there's a web form to razor converter available. </li>    <li><a href="http://twitter.com/gsogol">@gsogol</a> asks if the ASP.NET MVC team looks at other MVC frameworks to &quot;borrow&quot; various ideas for a more productive experience. </li>    <li>The guys talk about Razor Web Helpers like Web.Grid, Web.Crypto and Web.Mail which are baked into System.Web compared to the Microsoft Web Helpers which include social media helpers for Twitter and Facebook and video embedding. </li>    <li>The guys talk about the bundle of awesomeness which MS released with WebMatrix, SQL Compact and IIS Express. </li>    <li>The guys discuss what MVC3 offers to make testing easier and how one might unit test their JavaScript. </li>    <li>Brad talks about his love for BDD-style testing with SpecFlow, he explains the Given-When-Then syntax and how TDD and high-level spec testing complement each other. Brad mentions he would likely make the Web Steps he shared at Agile Conference 2010 available online soon. </li>    <li>Brad talks about MVC3 support in xUnit 1.7 and explains how xUnit compares to other test frameworks. </li>    <li>The conversation shifts to Swedish death metal and the guys totally nerding out about diet and fitness. </li>    <li>Brad pimps his <a href="http://channel9.msdn.com/Series/mvcConf/mvcConf-2011-Brad-Wilson-Advanced-MVC-3">Advanced ASP.NET MVC 3 talk at MvcConf 2 (video now on demand)</a>, teases us about his What's New in MVC 3 talk given at the P&amp;P submit and mentions his January talk for the .NET Developers Association about, you guessed it, ASP.NET MVC 3. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://bradwilson.typepad.com/blog/">Brad Wilson</a>, <a href="http://twitter.com/bradwilson">@BradWilson</a>&#160; </li>    <li><a href="http://blogs.msdn.com/scottdensmore/">Scott Densmore</a>, <a href="http://twitter.com/scottdensmore">@scottdensmore</a> </li>    <li><a href="https://herdingcode.com/">HERDING CODE 66: BRAD WILSON AND SCOTT DENSMORE ON IPHONE DEVELOPMENT</a> </li>    <li><a href="http://msdn.microsoft.com/practices/">Patterns &amp; Practices</a> </li>    <li><a href="http://xunit.codeplex.com/">xUnit.net</a> </li>    <li><a href="http://objectbuilder.codeplex.com/">ObjectBuilder DI Framework</a> </li>    <li><a href="http://bradwilson.typepad.com/blog/2010/07/service-location-pt1-introduction.html">Brad's Service Location Blog Posts</a> </li>    <li><a href="http://mef.codeplex.com/">MEF (Managed Extensibility Framework)</a> </li>    <li><a href="http://ninject.org/">Ninject</a> </li>    <li><a href="http://unity.codeplex.com/">Unity</a> </li>    <li><a href="http://nuget.codeplex.com/">NuGet</a> </li>    <li><a href="http://visualstudiogallery.msdn.microsoft.com/">Visual Studio Gallery</a> </li>    <li><a href="http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html">Brad's Unobtrusive Client Validation Post</a> </li>    <li><a href="http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-ajax.html">Brad's Unobtrusive Ajax Post</a> </li>    <li><a href="http://en.wikipedia.org/wiki/HTML5">Html5</a> </li>    <li><a href="http://developer.yahoo.com/yui/">YUI</a> </li>    <li><a href="http://www.microsoft.com/web/webmatrix/">WebMatrix</a> </li>    <li><a href="http://www.webcamps.ms/">Web Camps</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx">Razor</a> </li>    <li>Jeff Sogolov, <a href="mailto:S@Gsogol">@Gsogol</a> </li>    <li><a href="https://github.com/telerik/razor-converter">Razor-Converter Tool</a>, <a href="http://blogs.telerik.com/tsvetomirtsonev/posts.aspx">Tsvetomir Tsonev</a>, <a href="http://www.telerik.com/">Telerik</a> </li>    <li><a href="http://haacked.com/">Phil Haack</a> </li>    <li><a href="http://www.trirand.com/blog/">jqGrid</a>,&#160; <a href="http://mvccontrib.codeplex.com/wikipage?title=Grid">MvcContrib Grid</a> </li>    <li><a href="http://www.readwriteweb.com/hack/2011/01/wait-whats-nodejs-good-for-aga.php">Wait, What's Node.js Good for Again?</a>, <a href="http://www.readwriteweb.com">ReadWriteWeb</a> </li>    <li><a href="http://www.zdnet.com/blog/microsoft">Mary-Jo Foley</a> </li>    <li><a href="http://www.orchardproject.net/">Orchard</a> </li>    <li><a href="http://portableapps.com/">PortableApps</a> </li>    <li><a href="http://htmlagilitypack.codeplex.com/">Html Agility Pack</a> </li>    <li><a href="http://docs.jquery.com/Qunit">QUnit</a> </li>    <li><a href="http://jurassic.codeplex.com/">Jurassic</a> - a JavaScript Compiler for .NET - was mentioned by Jon and then Scott K mentioned <a href="http://nodejs.org/">Node.js</a> (shocker) and referenced two other JS frameworks. Though the framework names slipped Scott's mind, he did mention <a href="http://mir.aculo.us/">Thomas Fuchs</a> of <a href="http://script.aculo.us/">script.aculo.us</a> so we'll offer up those two links now and there may be more to come.&#160; </li>    <li><a href="http://www.specflow.org/">SpecFlow</a> </li>    <li><a href="http://watin.sourceforge.net/">WatiN</a> </li>    <li><a href="http://www.agilealliance.org/">Agile Alliance</a> </li>    <li><a href="http://www.nunit.org/">Nunit</a>, <a href="http://jamesnewkirk.typepad.com/">Jim Newkirk</a> </li>    <li><a href="http://cukes.info/">Cucumber</a> </li>    <li><a href="http://www.c2.com/cgi/wiki?ArrangeActAssert">Arrange-Act-Assert</a> (or &quot;3A&quot;) pattern, <a href="http://weblogs.java.net/blog/wwake/">William Wake</a> </li>    <li><a href="http://storyq.codeplex.com/">StoryQ</a> </li>    <li><a href="http://www.mbunit.com/">mbUnit</a> </li>    <li><a href="https://github.com/machine/machine.specifications">MachineSpecifications (MSpec)</a>, <a href="http://codebetter.com/aaronjensen/">Aaron Jenson</a>, <a href="http://twitter.com/aaronjensen">@aaronjenson</a>&#160; </li>    <li><a href="https://bitbucket.org/johannesrudolph/subspec/wiki/Home">SubSpec</a> </li>    <li><a href="http://www.amazon.com/Primal-Blueprint-Reprogram-effortless-boundless/dp/0982207700">The Primal Blueprint</a> </li>    <li><a href="http://www.amazon.com/Good-Calories-Bad-Controversial-Science/dp/1400033462/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1297631374&amp;sr=1-1">Good Calories, Bad Calories</a> </li>    <li><a href="http://www.hanselman.com/blog/">Scott Hanselman</a>, <a href="http://twitter.com/shanselman">@shanselman</a>&#160; </li>    <li><a href="http://flavors.me/brian_henderson">Brian Henderson</a>, <a href="http://brian_henderson">@Brian_Henderson</a> </li>    <li><a href="http://channel9.msdn.com/Series/mvcConf/mvcConf-2011-Brad-Wilson-Advanced-MVC-3">Brad's Advanced ASP.NET MVC 3 Talk</a> at <a href="http://www.mvcconf.com">MvcConf 2</a> </li>    <li><a href="http://dotnetda.org/wp/?p=810">.NET Developers Assocation</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0105-Brad-Wilson-on-MVC-3.mp3">Herding Code 105: Brad Wilson on MVC 3</a></p>    <p style="overflow: auto"><a href="http://blogs.jetbrains.com/dotnet/2010/12/resharper-6-eap-is-open-details-on-javascript-support/?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=resharper"><img src="https://herdingcode.com/wp-content/uploads/ads/rs60_eap0.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0105-Brad-Wilson-on-MVC-3.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 104: Rob Eisenberg on Caliburn Micro</title>
    <link>https://herdingcode.com/herding-code-104-rob-eisenberg-on-caliburn-micro/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-104-rob-eisenberg-on-caliburn-micro/</guid>
    <pubDate>Mon, 07 Feb 2011 07:59:01 GMT</pubDate>
    <description><![CDATA[<p>You remember Rob Eisenberg from Herding Code Show #57 when he talked presentation patterns along with Jeremy Miller, Ward Bell and Glenn Block. Well, in this episode of Herding</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 104</strong></p>
<p>You remember Rob Eisenberg from Herding Code Show #57 when he talked presentation patterns along with Jeremy Miller, Ward Bell and Glenn Block. Well, in this episode of Herding Code, the conversation continues as Rob talks with the guys about Caliburn.Micro, an opinionated MVVM framework for WPF, Silverlight and WP7. </p>  <ul>   <li>Kevin kicks off this week's show asking Rob to tell us about Caliburn.Micro - his opinionated MVVM framework for WPF, Silverlight and WP7. Rob talks about how actions, support for conventions, and presentation roles are implemented in his opinionated MVVM framework. </li>    <li>Rob explains how about Caliburn - his earlier framework built for WPF - has contributed its most important features to the easier-to-use, lighter Caliburn Micro. </li>    <li>Jon brings up extensibility and inquires about how one overrides functionality in Cabiburn Micro. </li>    <li>Kevin and Rob talk about view resolution and the difference between ViewModel-First and View-First development which are both offered in Caliburn Micro. </li>    <li>Kevin asks designer integration and the "blendability" of Caliburn Micro. </li>    <li>Rob explains the convention-based approach Caliburn Micro takes toward bindings and actions and the guys speak to the importance of diagnostic mechanisms when your coding is based on magic of convention. </li>    <li>Kevin asks if that were places where the WPF/Silverlight/WP7 frameworks limited what Caliburn Micro could implement due to lack of extensibility points. </li>    <li>Rob dives into IResult and Coroutines and how one can write asynchronous calls in a synchronous a manner with Caliburn Micro. Rob then answers how coroutines compare to the implementation coming in C# 5? </li>    <li>Kevin asks about window management screen conductor and roles. </li>    <li>The guys discuss their experience working with Silverlight and WPF. </li>    <li>Jon asks about community contributions to Caliburn Micro and brings up the social aspect of open source and Mercurial projects in particular. </li>    <li>The show gets its first question from the hotline from Rick who asks, "What does Caliburn do that MVVM Light Toolkit does not do?" </li>    <li>Rob touches upon the Pub/Sub and window management features offered in Caliburn Micro and also talks about IoC friendliness. </li>    <li>The guys talk about Rob's elegant yet unorthodox approach to the service location in Caliburn Micro. </li>    <li>Rob offers a quick preview of what's to come next in Caliburn Micro. </li>    <li>Rob notes that he's submitted a talk for Mix11: "Build Your Own MVVM Framework with Html and JavaScript" </li>    <li>The guys discuss Knockout JS and its influence on Caliburn Micro. </li>    <li>The show wraps with Kevin (in Scott K's absence) asking THE question: "Is Silverlight dead?" Tune in and find out the answer to that one... </li> </ul>  <ul></ul>  <p>Show Links:</p>  <ul>   <li><a href="http://devlicio.us/blogs/rob_eisenberg/default.aspx">Rob Eisenberg</a>, <a href="http://twitter.com/eisenbergeffect">@EisenbergEffect</a> </li>    <li><a href="http://caliburnmicro.codeplex.com/">Caliburn Micro</a> </li>    <li><a href="http://www.caliburnproject.org/">Caliburn</a> </li>    <li><a href="http://www.bluespire.com/">Blue Spire</a> </li>    <li><a href="http://www.castleproject.org/monorail/">MonoRail</a> </li>    <li><a href="http://codebetter.com/jeremymiller/">Jeremy Miller</a>, <a href="http://twitter.com/jeremydmiller">@jeremydmiller</a>&#160; </li>    <li><a href="https://herdingcode.com/">Herding Code 57: Presentation Patterns With Jeremy Miller, Ward Bell, Rob Eisenberg And Glenn Block</a> </li>    <li><a href="http://live.visitmix.com/Archive#VideoList">Build your own MVVM framework - MIX10</a> </li>    <li><a href="http://live.visitmix.com/OpenCall">Build Your Own MVVM Framework...with HTML and Javascript - Mix11</a> </li>    <li><a href="http://devlicio.us/blogs/rob_eisenberg/archive/2010/08/21/caliburn-micro-soup-to-nuts-part-5-iresult-and-coroutines.aspx">Caliburn.Micro Soup to Nuts Pt. 5 - IResult and Coroutines</a> </li>    <li><a href="http://devlicio.us/blogs/rob_eisenberg/archive/2010/10/08/caliburn-micro-soup-to-nuts-part-6a-screens-conductors-and-composition.aspx">Caliburn.Micro Soup to Nuts Part 6a - Screens, Conductors and Composition</a> </li>    <li>Matt Hamilton <a href="http://twitter.com/mabster">@mabster</a> </li>    <li><a href="http://marcoamendola.wordpress.com/">Marco Amendola</a>, <a href="http://twitter.com/marcoamendola">@marcoamendola</a> </li>    <li>Rick Ratayczak <a href="http://twitter.com/rickrat">@RickRat</a> </li>    <li><a href="http://mvvmlight.codeplex.com/">MVVM Light Toolkit</a> </li>    <li><a href="http://ninject.org/">Ninject</a> </li>    <li><a href="http://mef.codeplex.com/">MEF</a> </li>    <li><a href="http://knockoutjs.com/">Knockout</a>, <a href="http://blog.stevensanderson.com/">Steve Sanderson</a> </li>    <li><a href="http://live.visitmix.com/">MIX11</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0104-Rob-Eisenberg-on-Caliburn-Micro.mp3">Herding Code 104: Rob Eisenberg on Caliburn Micro</a></p>    <p style="overflow: auto"><a href="http://www.jetbrains.com/dotcover/?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=dotcover"><img src="https://herdingcode.com/wp-content/uploads/ads/DC_HerdingCode.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0104-Rob-Eisenberg-on-Caliburn-Micro.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 103: Seb Lambla on OpenEverything</title>
    <link>https://herdingcode.com/herding-code-103-seb-lambla-on-openeverything/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-103-seb-lambla-on-openeverything/</guid>
    <pubDate>Tue, 25 Jan 2011 18:20:51 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the guys talk with &quot;self-congratulatory, self-proclaimed, egotistical doofus&quot; Sebastien Lambla about OpenRasta, OpenWrap and Open Web Interface</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 103</strong></p>
<p>In this episode of Herding Code, the guys talk with "self-congratulatory, self-proclaimed, egotistical doofus" Sebastien Lambla about OpenRasta, OpenWrap and Open Web Interface for .NET (OWIN.)</p>  <ul>   <li>K Scott kicks off the show asking Seb about his most popular OSS project - OpenRasta provides the 30 second elevator pitch and touches on his web framework which embraces HTTP through composition-based programming and facilitates the development of both JSON/XML services and webpage using the same fluent APIs. </li>    <li>K Scott asks Seb about OpenRasta Resources, Handlers and Codecs (oh my)<em>&#160;</em>and Seb outlines the four (yes, 4) main components of MVC, content negotiation and browser fun. </li>    <li>Scott K and Seb talk about the OpenRasta plug-in model and dig into pipeline contributors, operation interceptors and the full-flexibility of the OpenRasta composition framework. </li>    <li>Jon speaks of service location which are new to MVC3. </li>    <li>Jon asks Seb for his opinion on WCF Web APIs and how they compare to OpenRasta.&#160; </li>    <li>The guys talk about the distinction between the Microsoft Web and WCF frameworks and consider the creation of web services through .ASMX vs WCF. </li>    <li>Seb explains Easy, Simple and Intuitive in the context of existing frameworks and APIs. </li>    <li>Kevin asks about resource-oriented thinking in the .NET community. Seb response with talk of the slow adoption of RESTful architecture and poor education offered by vendors. </li>    <li>K Scott asks Seb when/why he started becoming passionate about REST and Seb shares his and OpenRasta's story. </li>    <li>Through the magic of Twitter, John Sheehan asks if there are any plans to develop a OpenRasta Client. Don't worry - RestSharp is safe for now. </li>    <li>Kevin asks a <u>second</u> question! Does OpenRasta do anything with hypermedia? Seb speaks of generating links and advanced links and forms (i.e. Hypermedia Controls) in OpenRasta. </li>    <li>Before the conversation shifts to OpenWrap, Jon asks about Seb's thoughts on OData and it not really being RESTful. Seb offers his option and notes his NDC presentation which brings light to all that is wrong with OData. </li>    <li>The conversation shifts to OpenWrap, a package management system for .NET. Seb provides a quick overview of the project and what it offers. </li>    <li>The guys discuss the release of NuGet and the collaboration (or not) with the Nu and OpenWrap folks during development. </li>    <li>The guys further talk about the various package management systems and the pros and cons around having more than one solution (with slightly different focuses) in the .NET space. Jon compares the situation to that of Entity Framework and NHibernate both coming to market. Seb talks about productivity. </li>    <li>Seb talks about dogfooding and building and deploying a package manager with the package manager. </li>    <li>Seb walks the guys through the typical workflow experience when using OpenWrap. </li>    <li>Seb explains what a symbol servers (specifically SymbolSource.org) offer and how it is to be integration with OpenWrap. </li>    <li>Seb provides an overview of OWIN (Open Web Interface for .NET) which defines a standard interface between .NET web servers and web applications. </li>    <li>The show wraps with Seb pimping his upcoming talks on OpenWrap and OpenRasta at QCon London. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://serialseb.blogspot.com/">Seb Lambla</a>, <a href="http://twitter.com/serialseb" target="_blank">@serialseb</a> </li>    <li><a href="http://trac.caffeine-it.com/openrasta/wiki/Doc">OpenRasta</a> </li>    <li><a href="http://trac.caffeine-it.com/openrasta/wiki/Doc/Tutorials/FirstSite">OpenRasta Getting Started</a> </li>    <li><a href="http://blog.robustsoftware.co.uk/2009/12/better-actionresult-open-rasta-edition_15.html">A Better ActionResult</a> - A blog post by <a href="http://blog.robustsoftware.co.uk/">Garry Shutler</a> on OperationInterceptors. </li>    <li><a href="http://www.openwrap.org/" target="_blank">OpenWrap</a> </li>    <li><a href="http://owin.github.com/">OWIN - Open Web Interface for .NET</a> </li>    <li><a href="http://groups.google.com/group/net-http-abstractions">.NET HTTP Abstractions Mailing List</a> </li>    <li><a href="http://qconlondon.com/">QCon London</a> </li>    <li><a href="http://codebetter.com/jeremymiller/">Jeremy Miller</a>,<a href="http://twitter.com/jeremydmiller">@jeremydmiller</a>, <a href="https://github.com/darthfubumvc/fubumvc">FubuMVC</a> </li>    <li><a href="http://codebetter.com/glennblock/author/glennblock/">Glenn Block</a>, <a href="http://twitter.com/gblock">@gblock</a>, <a href="http://wcf.codeplex.com/">WCF Web APIs</a> </li>    <li><a href="http://www.pluralsight-training.net/community/blogs/dbox/">Don Box</a> </li>    <li><a href="http://blogs.msdn.com/b/clemensv/">Clemens Vasters</a> </li>    <li><a href="http://www.odata.org/">OData</a> </li>    <li>Seb's NDC2010 Talk: <a href="http://tekpub.com/conferences/ndc2010/using-rest-to-design-a-better-odata">Using REST to Design a Better OData</a> </li>    <li><a href="https://github.com/crohr/restfully">restfully</a> </li>    <li><a href="http://iansrobinson.com/">Ian Robinson</a> </li>    <li><a href="http://github.com/kayak/kayak">Kayak</a> </li>    <li><a href="http://github.com/panesofglass/frack">Frack</a> </li>    <li><a href="http://github.com/remi/knack">Knack</a> </li>    <li><a href="http://github.com/markrendle/fix">Fix</a> </li>    <li><a href="http://github.com/jacksonh/manos">Manos</a> </li>    <li><a href="http://nuget.codeplex.com/" target="_blank">NuGet</a> </li>    <li><a href="http://nu.wikispot.org/">Nu</a> </li>    <li><a href="http://restsharp.org/">RestSharp</a>, <a href="http://john-sheehan.com/blog/">John Sheehan</a>, <a href="http://twitter.com/johnsheehan">@johnsheehan</a> </li>    <li><a href="http://SymbolSource.org">SymbolSource.org</a>, <a href="http://www.symbolsource.org/#">Marcin Mikolajczak</a> </li>    <li><a href="http://openid.net/">OpenId</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0103-Seb-Lambla-on-OpenEverything.mp3">Herding Code 103: Seb Lambla on OpenEverything</a></p>    <p style="overflow: auto"><a href="http://blogs.jetbrains.com/dotnet/2010/12/resharper-6-eap-is-open-details-on-javascript-support/?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=resharper"><img src="https://herdingcode.com/wp-content/uploads/ads/rs60_eap0.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0103-Seb-Lambla-on-OpenEverything.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 102: Tim Caswell on Node.js</title>
    <link>https://herdingcode.com/herding-code-102-tim-caswell-on-node-js/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-102-tim-caswell-on-node-js/</guid>
    <pubDate>Wed, 19 Jan 2011 00:24:30 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the guys talk with avid open source contributor Tim Caswell about Node.js for which he is a community leader. Listen in as the guys dig in</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 102</strong></p>
<p>In this episode of Herding Code, the guys talk with avid open source contributor Tim Caswell about Node.js for which he is a community leader.&#160; Listen in as the guys dig into node.js and what it has to offer.</p>  <ul>   <li>Tim gives the node.js elevator pitch and begins to explain what node offers - like event loops, evented IO, callbacks, non-blocking requests, high concurrency, and real-time scalability. </li>    <li>K Scott shares that Tim's wheat blog engine which sits on to of a Git repository was implemented using node.js. </li>    <li>Tim notes the greatest use case for node is still web development and touches upon how it differs from other framework like ASP.NET and Rails. </li>    <li>Scott K explains that he thinks of node as an abstraction over network programming and shares his excitement around the hundreds of interesting frameworks and modules developed with/for node. </li>    <li>Jon prompts Tim to talk about the node knockout competition and the various contest submissions. </li>    <li>Kevin asks for further explanation of evented IO and Tim provides further detail using a dentist waiting room analogy. </li>    <li>Jon asks how one troubleshoots callbacks and loops and how one manages state with node. Tim explains event based programming and why node.js came about. </li>    <li>K Scott asks if server-side js interest has recently exploded due to HTML5, web sockets and leaving connections open to the server. Tim talks about long polling and thread counts as opposed to the the node approach. </li>    <li>Jon asks Tim to speak about his extensive community contributions - namely his sharing of 47 repositories including wheat, step library for flow control and hamel.js.&#160; Not to mention the howtonode blog. </li>    <li>Scott K and Tim talk about sharing javascript code between the server and client. </li>    <li>Jon asks about kiwi, npm and node package managers. </li>    <li>Scott K asks how the node.js and server-side javascript got so popular. Tim turns to the need for a real-time web solution, social media and community involvement and Ryan Dahl's appealing personality and unique design strategy. </li>    <li>K Scott asks about Tim's tutorial on learning javascript through object graphs. Tim explains the importance of understanding that javscript doesn't operate like Java and the guys talk about jQuery's impact in learning (or not learning) javascript. </li>    <li>K Scott talks about a time before kids when IBM released an OS in javascript.&#160; Or was it <a href="http://labs.oracle.com/projects/lively/">Sun's Lively Kernel</a>?&#160; Either way, it was before kids. You know what they do to one's memory. </li>    <li>Kevin speaks of the early, hyper-experimental days of node and asks if the community is starting to settle down and standardize on a set of libraries. </li>    <li>K Scott asks for Tim's thoughts on ECMAScript. </li>    <li>Via Twitter, Jackson Harper asks about no.de, a submission by Joyent into the node knockout competition, and it's current status. </li>    <li>Jon calls out Couch and Mongo and the NoSQL movement and Tim to share the node data story.&#160; </li>    <li>Scott K and K Scott talk about running Node on Windows. </li>    <li>Scott K dreams of IronJS and porting node modules to the DLR. </li>    <li>Jon asks how you get started with node&#160; and Tim recommends the friendly IRC room, the friendly mailing list and suggests a newb move to San Francisco and attend the frequent meet ups. </li>    <li>K Scott asks about Tim's everyday development environment and tools. </li>    <li>Kevin asks about the Node.js sweet spot. Is it for basic web development or is it geared towards more complex, real-time scalability problems?&#160; Tim discusses the perks and challenges of Node.js in any development undertaking. </li>    <li>Scott K throws out the "E" word and asks about node's penetration of the enterprise. </li>    <li>The show wraps with general conversation about node, Harmony and Javascript and Tim kind of misses his opportunity to pimp. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://creationix.com/">Tim Caswell</a>, <a href="http://twitter.com/creationix">@creationix</a> </li>    <li><a href="http://github.com/creationix">Tim @ GitHub</a> </li>    <li><a href="http://nodejs.org/">Node.js</a> </li>    <li><a href="http://howtonode.org/">howtonode blog</a> </li>    <li><a href="http://code.google.com/apis/v8/intro.html">V8 Javascript Engine</a> </li>    <li><a href="http://jsconf.eu/2010/">jsconf.eu</a> </li>    <li><a href="https://github.com/creationix/wheat">wheat</a> </li>    <li><a href="http://github.com/senchalabs">Sencha Labs</a> </li>    <li><a href="http://tirania.org/blog/">Miguel de Icaza</a>, <a href="http://twitter.com/migueldeicaza">@migueldeicaza</a> </li>    <li><a href="https://github.com/ry/node/wiki">Node Modules</a> </li>    <li><a href="http://nodeknockout.com/">Node Knockout</a> </li>    <li><a href="http://tinyclouds.org/">Ryan Dahl</a>, <a href="http://nodejs.org/">Node</a> </li>    <li><a href="http://codebetter.com/blogs/matthew.podwysocki/default.aspx">Matt Podwysocki's Blog</a> </li>    <li><a href="https://github.com/creationix/haml-js">Haml-js</a> </li>    <li><a href="http://couchdb.apache.org/">CouchDB</a> </li>    <li><a href="https://github.com/creationix/step">Step Library</a> </li>    <li><a href="https://github.com/visionmedia">TJ Holowaychuk (visionmedia)</a>, <a href="https://github.com/visionmedia/jade">jade</a>, <a href="https://github.com/visionmedia/kiwi">kiwi</a> </li>    <li><a href="http://new.davglass.com/">Dav Glass</a>, <a href="http://twitter.com/davglass">@davglass</a>, Node.js + YUI 3 <a href="http://developer.yahoo.com/yui/theater/video.php?v=glass-node">Talk One</a> and <a href="http://developer.yahoo.com/yui/theater/video.php?v=yuiconf2010-glass">Talk Two</a> @ Yahoo! </li>    <li><a href="https://github.com/isaacs">Isaac Schlueter</a>, <a href="https://github.com/isaacs/npm">npm</a> </li>    <li><a href="http://voodootikigod.com/">Chris Williams's Blog</a>, <a href="http://twitter.com/voodootikigod">@voodootikigod</a>, <a href="http://jsconf.us/2010/">JSConf 2010</a>, <a href="http://jsconf.eu/2010/">JSConf EU 2010</a> </li>    <li><a href="http://howtonode.org/object-graphs">Learning Javascript with Object Graphs</a> </li>    <li><a href="http://www.crockford.com/">Douglas Crockford</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Brendan_Eich">Brendan Eich</a> </li>    <li><a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>, <a href="https://github.com/jashkenas">Jeremy Ashkenas</a> </li>    <li><a href="http://www.mozilla.org/rhino/">Rhino</a> </li>    <li><a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a> </li>    <li><a href="http://en.wikipedia.org/wiki/HTML5">HTML5</a> </li>    <li><a href="http://en.wikipedia.org/wiki/ECMAScript">ECMAScript5/Harmony</a> </li>    <li><a href="http://jacksonh.tumblr.com/">Jackson Harper</a>, <a href="http://twitter.com/jacksonh">@jacksonh</a> </li>    <li><a href="https://no.de/">no.de</a>, <a href="http://www.joyent.com/">Joyent</a> </li>    <li><a href="http://www.nodejitsu.com/#/splash">Nodejitsu</a> </li>    <li><a href="http://www.mingw.org/">MinGW</a> </li>    <li><a href="https://github.com/ajaxorg/cloud9">Ajax.org Cloud9</a> </li>    <li><a href="https://github.com/ry/node/wiki/Windows-Port-(MSVC)">Node.js Windows Port</a> </li>    <li><a href="http://www.macruby.org/">MacRuby</a> </li>    <li>IRC (irc.freenode.net <code>#node.js</code>.), <a href="http://groups.google.com/group/nodejs">developers mailing list</a> </li>    <li><a href="http://labs.oracle.com/projects/lively/">Sun Lively Kernel</a> </li>    <li><a href="http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html">Bruce Eckel</a> </li>    <li><a href="http://expressjs.com/">Express</a> </li>    <li><a href="http://www.sinatrarb.com/">Sinatra</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0102-Tim-Caswell-on-Node-js.mp3">Herding Code 102: Tim Caswell on Node.js</a></p>    <p style="overflow: auto"><a href="http://blogs.jetbrains.com/dotnet/2010/12/resharper-6-eap-is-open-details-on-javascript-support/?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=resharper"><img src="https://herdingcode.com/wp-content/uploads/ads/rs60_eap0.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0102-Tim-Caswell-on-Node-js.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 101: Kelly Sommers on Mobile Development and User Interface design</title>
    <link>https://herdingcode.com/herding-code-101-kelly-sommers-on-mobile-development-and-user-interface-design/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-101-kelly-sommers-on-mobile-development-and-user-interface-design/</guid>
    <pubDate>Fri, 14 Jan 2011 23:15:40 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the guys talk to Kelly Sommers. Jon asks Kelly about her first big post, What fuels my passion for technology &amp; writing code Kelly talks abo</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 101</strong></p>
<p>In this episode of Herding Code, the guys talk to Kelly Sommers.</p>  <ul>   <li>Jon asks Kelly about her first big post, <a href="http://kellabyte.com/2010/08/02/what-fuels-my-passion-for-technology-writing-code/">What fuels my passion for technology &amp; writing code</a> </li>    <li>Kelly talks about her experience getting started on Twitter </li>    <li>Jon asks Kelly about her post on how desktop UI's feel boring compared to mobile UI's </li>    <li>Jon and Kelly discuss notification systems like Growl </li>    <li>Scott K talks about how non-Windows operating systems have included things like multiple desktops, status widgets, etc. for a while </li>    <li>The discussion moves to how Windows is focused on the mouse, and how we'd like to see desktop UI's that are geared towards touch and keyboard </li>    <li>Jon mentions Desktops as a multiple desktop interface for Windows </li>    <li>Jon drops his Alt+Space keyboard secret, and Kelly counters that it's old news </li>    <li>The discussion moves on to synchronizing applications and systems </li>    <li>Jon brings up Mesh, and Kelly talks about why it didn't catch on as much as it could have. Jon talks about how there's a chicken and egg problem with cool Microsoft API's which aren't used in Microsoft products, and Scott Koon talks about how he though Mesh applications seemed cool but he just couldn't get a hold of the SDK. </li>    <li>Next, the discussion moves to mobile development. Jon asks Kelly for her opinion of how Windows Phone development compares with other mobile development platforms. </li>    <li>Jon and Kelly discuss the Metro UI and UI discoverability in general </li>    <li>Kelly talks about performance tips for Windows Phone </li>    <li>Jon asks if there is any cross-platform development between mobile platforms </li>    <li>K. Scott asks about the upgrade scenario </li>    <li>Darrel Miller asks via Twitter about the online brainstorming meetings Kelly had previously proposed </li>    <li>Jackson Harper asks via Twitter what's the most interesting thing Kelly has learned in the past month, and the conversation switches to node.js, threading, fibers, etc. </li>    <li>The gang discusses the Await keyword, recently announced at PDC </li>    <li>Scott K. asks for bets on how long until Await shows up in the Mono nightly builds </li>    <li>Random speculation of whether the Async CTP actually works on .NET 4 </li>    <li>Kevin compares the Await syntactic sugar approach to hiding asynchronicity with the node.js approach which embraces node.js. </li> </ul>  <p>Show Links:</p>  <ul>   <li>Kelly Sommers (<a href="http://kellabyte.com" target="_blank">blog</a>, <a href="http://twitter.com/kellabyte" target="_blank">@kellabyte</a>) </li>    <li><a href="http://technet.microsoft.com/en-us/sysinternals/cc817881">Desktops utility</a> </li>    <li><a href="http://www.hanselman.com/blog/HanselminutesPodcast228PerformanceOfSilverlightOnWindowsPhone7.aspx">Hanselminutes Podcast 228 - Performance of Silverlight on Windows Phone 7</a> </li>    <li><a href="http://timheuer.com/blog/archive/2010/09/16/windows-phone-7-developer-tips-and-tricks.aspx">Windows Phone 7 Developer Tips and Tricks from Jeff Wilcox (posted by Tim Heuer)</a> </li>    <li><a href="http://www.youtube.com/watch?v=EHlN21ebeak">Windows Phone &quot;Really&quot; commercial</a> </li>    <li>Nathan Bowers (<a href="http://uxhero.com/">blog</a>, <a href="http://twitter.com/NathanBowers">@nathanbowers</a>) </li>    <li>Darrel Miller (<a href="http://www.bizcoder.com/">blog</a>, <a href="http://twitter.com/darrel_miller">@darrel_miller</a>) </li>    <li><a href="http://www.restfest.org/home">REST Fest</a> </li>    <li><a href="http://jacksonh.tumblr.com/">Jackson Harper</a>, <a href="http://twitter.com/jacksonh">@jacksonh</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/vstudio/gg316360.aspx">The Async CTP link on MSDN</a> </li>    <li><a href="http://blogs.msdn.com/b/ericlippert/archive/2010/10/21/continuation-passing-style-revisited-part-one.aspx">Eric Lippert's series on Continuation Passing Style</a> </li>    <li><a href="http://blogs.msdn.com/b/csharpfaq/archive/2010/10/28/async.aspx">FAQ's on the Async keyword</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0101-Kelly-Sommers.mp3">Herding Code 101: Kelly Sommers</a></p>    <p style="overflow: auto"><a href="http://blogs.jetbrains.com/dotnet/2010/12/resharper-6-eap-is-open-details-on-javascript-support/?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=resharper"><img src="https://herdingcode.com/wp-content/uploads/ads/rs60_eap0.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0101-Kelly-Sommers.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 100: One Hundredth Show Celebration with Queen Beatrix</title>
    <link>https://herdingcode.com/herding-code-100-one-hundredth-show-celebration-with-queen-beatrix/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-100-one-hundredth-show-celebration-with-queen-beatrix/</guid>
    <pubDate>Sun, 02 Jan 2011 08:48:49 GMT</pubDate>
    <description><![CDATA[<p>One hundred shows! Her Majesty Queen Beatrix shows up and talks with the gang about the previous 99 shows. Jon summarizes the server logs and beatboxes, K Scott talks about his</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 100</strong></p>
<p>One hundred shows! Her Majesty Queen Beatrix shows up and talks with the gang about the previous 99 shows. Jon summarizes the server logs and beatboxes, K Scott talks about his jetset life via a flaky internet connection, Kevin reveals that this isn't the podcast he thought he was signing up for, and Scott K explains why The Fat Boys follow him on Twitter. </p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0100-One-Hundredth-Show.mp3">Herding Code 100: One Hundredth Show Celebration with Queen Beatrix</a></p>    <p>[music loop during autotune bit courtesy of <a href="http://incompetech.com/m/c/royalty-free/index.html?genre=Funk" target="_blank">Incompetech</a>]</p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0100-One-Hundredth-Show.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 99: David Ebbo on NuGet</title>
    <link>https://herdingcode.com/herding-code-99-david-ebbo-on-nuget/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-99-david-ebbo-on-nuget/</guid>
    <pubDate>Thu, 02 Dec 2010 00:18:24 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the guys talk to David Ebbo, an architect on the Microsoft Web Platform and Tools team, about NuGet, a new open source package management system</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 99</strong></p>
<p>In this episode of Herding Code, the guys talk to David Ebbo, an architect on the Microsoft Web Platform and Tools team, about NuGet, a new open source package management system for the .NET platform.</p>  <ul>   <li>David describes the history of NuGet - how NuGet evolved from a web-based feature for use in ASP.NET Web Pages and the inspiration from a web-based database admin tool by David Fowler. </li>    <li>Jon asks about how NuGet is related to the ASP.NET Web Admin site which was included in ASP.NET 2.0. </li>    <li>David then tells about how, at Scott Guthrie's prompting, the idea involved and how NuGet joined up up with the Nu project. </li>    <li>K. Scott asks about how NuGet works in practice using the Package Management Console. </li>    <li>There's a brief discussion of the name, and David foreshadows the impending name change to NuGet. </li>    <li>K. Scott asks about which packages are currently available, and what's involved in contributing a new package. </li>    <li>Scott K. asks about creating aliases, and David talks about the ability to change things via PowerShell. </li>    <li>David describes some of the logic involved in dependency management. </li>    <li>There's a <a href="http://twitter.com/davidalpert/status/27994876035" target="_blank">Twitter question</a> from <a href="http://twitter.com/davidalpert" target="_blank">David Alpert</a> about customizing the package installation folder. </li>    <li>K. Scott asks if this is usable in all Visual Studio projects, not just web projects. </li>    <li>Kevin asks about configuration transforms. </li>    <li>K. Scott asks about the overlap between all the different developer installer systems - Web PI, NuGet, and the Visual Studio Extension manager. David explains how the focus of NuGet is very focused on bringing libraries into one project. </li>    <li>Jon asks if they've seen people using NuGet in ways they hadn't anticipated, mentioning a post by Eric Hexter on integrating NuGet and Solution Factory. David talks about how a NuGet package can include PowerShell scripts, which means you can add commands to the Package Manager console, describing how the NUnit package adds commands which allow you to run tests from the console. </li>    <li>Scott K. asks about the use of NuGet for... you guessed it... Javascript. </li>    <li>Kevin asks if NuGet could be integrated with the new project wizard. </li>    <li>Jon asks if there's any possible integration with Visual Studio Snippets. David explains how packages are including source code with sample code, and how this fits the use of project level source code better. </li>    <li>Jon asks about Web Activator. </li>    <li>K. Scott asks about how you'd run a local package repository. David talks about how you can do this by just putting packages in a folder. </li>    <li>Jon asks about how a package gets officially submitted and added to the feed. </li>    <li>Kevin remarks about the way NuGet is working as an open source project which accepts submissions from both Microsoft employees and the community. </li>    <li>There's a Twitter question from Elijah Manor about managing Javascript dependencies. </li>    <li>Kevin is happy to see the unit test coverage in NuGet, and asks about the unit test coverage requirements for package submissions. </li>    <li>Jon asks if there's any integration of Mercurial beyond the server-side package submission. </li>    <li>K. Scott asks about the possibility of future integration between NuGet and OpenWrap. </li>    <li>Jon talks about how he sees a lot of opportunity for NuGet to introduce some great open source libraries to developers and development shops which might not previously have considered using them. </li>    <li>Kevin asks if this is another example of a Microsoft initiative squashing existing open source projects. David talks about how NuGet was created to fill a void where they didn't see any leading package management systems for the .NET platform. </li>    <li>K. Scott asks about David's T4MVC project. David talks about how it's been really interesting and exciting for him as his first open source project. </li>    <li>Jon asks about how T4MVC is run on project build, and David mentions the Chirpy project. </li>    <li>Jon asks about how David divides his time between NuGet, ASP.NET Web Pages, ASP.NET in general, and T4MVC. </li>    <li>David ends with a call for contributions to NuGet. </li> </ul>  <p>Show Links:</p>  <ul>   <li>David Ebbo (<a href="http://blogs.msdn.com/b/davidebb/" target="_blank">blog</a>, <a href="http://twitter.com/davidebbo" target="_blank">@davidebbo</a>) </li>    <li><a href="http://nuget.codeplex.com/" target="_blank">NuGet</a> </li>    <li>David Fowler (<a href="http://weblogs.asp.net/davidfowler/" target="_blank">blog</a>, <a href="http://twitter.com/davidfowl" target="_blank">@davidfowl</a>) </li>    <li><a href="http://blogs.msdn.com/b/davidebb/archive/2010/10/11/light-up-your-nupacks-with-startup-code-and-webactivator.aspx" target="_blank">Light up your NuGets with startup code and WebActivator</a> </li>    <li>Eric Hexter (<a href="http://www.lostechies.com/blogs/hex/" target="_blank">blog</a>, <a href="http://twitter.com/ehexter" target="_blank">@ehexter</a>) </li>    <li><a href="http://www.lostechies.com/blogs/hex/archive/2010/10/07/using-solution-factory-nupack-to-create-opinionated-visual-studio-solutions.aspx" target="_blank">Using Solution Factory + NuPack to create Opinionated Visual Studio Solutions</a> </li>    <li><a href="http://www.outercurve.org/" target="_blank">OuterCurve Foundation</a> </li>    <li><a href="http://www.openwrap.org/" target="_blank">OpenWrap</a> </li>    <li><a href="http://mvccontrib.codeplex.com/wikipage?title=T4MVC" target="_blank">T4MVC</a> </li>    <li><a href="http://chirpy.codeplex.com/" target="_blank">Chirpy</a> </li>    <li>Elijah Manor (<a href="http://twitter.com/elijahmanor" target="_blank">@elijahmanor</a>) </li>    <li>David Alpert (<a href="http://twitter.com/davidalpert" target="_blank">@davidalpert</a>) </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0099-David-Ebbo-on-NuGet.mp3">Herding Code 99: David Ebbo on NuGet</a></p>    <p style="overflow: auto"><a href="http://www.jetbrains.com/teamcity/?utm_source=herdingcode&amp;utm_medium=banner6&amp;utm_campaign=teamcity"><img src="https://herdingcode.com/wp-content/uploads/ads/tc60_hc.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0099-David-Ebbo-on-NuGet.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 98: Dale Ragan on Moncai</title>
    <link>https://herdingcode.com/herding-code-98-dale-ragan-on-moncai/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-98-dale-ragan-on-moncai/</guid>
    <pubDate>Mon, 29 Nov 2010 08:17:48 GMT</pubDate>
    <description><![CDATA[<p>In the previous episode, when the guys were talking to Jackson Harper about Manos de Mono, he mentioned that Dale Ragan was doing cooking up something really exciting for hostin</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 98</strong></p>
<p>In the previous episode, when the guys were talking to Jackson Harper about Manos de Mono, he mentioned that Dale Ragan was doing cooking up something really exciting for hosting ASP.NET web applications with support for deployment via Git or Mercurial. So, they called him up and recorded a show right then and there. Jackson stayed on, and we got the scoop on Monca&#237;. Get the scoop and find out how you can get in on the just announced private beta.</p>  <ul>   <li>Jon asks about where we can keep up with information about <a href="http://sinesignal.com" target="_blank">SineSignal</a>. </li>    <li>There's a discussion of what Heroku is, and how Moncai relates to Heroku. </li>    <li>Dale describes how he the idea got started and how deployment works. </li>    <li>What's a Monca&#237;? Dale explains. </li>    <li>Dale explains how the infrastructure works, with Linux and Mono running in virtual environments. </li>    <li>Kevin and Jon ask about how Mono hosting affects ASP.NET support. </li>    <li>Jon asks about fractional CPU pricing, which leads to another cool feature - free accounts until you need to scale up. </li>    <li>Dale talks about how this compares to other virtual hosting offerings. </li>    <li>Jackson (still on the call from last show) jumps in with some info on running Mono from Visual Studio. </li>    <li>There's talk about future possibilities - Mercurial, Windows support (and the complexities with SSH), support for other stacks. </li>    <li>Jon asks about the next steps for go-live. </li>    <li>Kevin asks about batch jobs, and Dale talks about the extension points for add-on and web hooks. </li>    <li>Jackson asks about local file access. </li>    <li>Everyone decides that this is really cool, and the show ends. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://moncai.com/" target="_blank">Monca&#237;</a> </li>    <li><a href="http://sinesignal.com" target="_blank">SineSignal</a> </li>   
<li>Dale Ragan (<a href="http://twitter.com/dwragan" target="_blank">@dwragan</a>) </li>

 <li><a href="http://heroku.com" target="_blank">Heroku</a> </li>    <li><a href="http://www.mono-project.com/Main_Page" target="_blank">Mono Project</a> </li>    <li><a href="http://www.mono-project.com/MoMA" target="_blank">MoMA</a> - Mono Migration Analyzer </li>    <li><a href="http://jacksonh.tumblr.com/">Jackson Harper</a>, <a href="http://twitter.com/jacksonh">@jacksonh</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0098-Dale-Ragan-on-Moncai.mp3">Herding Code 98: Dale Ragan on Monca&#237;</a></p>    <p style="overflow: auto"><a href="http://www.jetbrains.com/dotcover/?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=dotcover"><img src="https://herdingcode.com/wp-content/uploads/ads/DC_HerdingCode.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0098-Dale-Ragan-on-Moncai.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 97: Jackson Harper on Manos de Mono</title>
    <link>https://herdingcode.com/herding-code-97-jackson-harper-on-manos-de-mono/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-97-jackson-harper-on-manos-de-mono/</guid>
    <pubDate>Tue, 16 Nov 2010 00:29:43 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the guys talk with Jackson Harper about Manos de Mono, his lightweight web application framework that runs on Mono. The goal of Manos is to simp</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 97</strong></p>
<p>In this episode of Herding Code, the guys talk with Jackson Harper about Manos de Mono, his lightweight web application framework that runs on Mono. The goal of Manos is to simplify the entire process of creating, managing and updating a web application from prototyping and design to deployment.&#160; Manos aims to be Simple, Testable, High Performance, Reusable and Flexible. Sounds kind of dreamy, right?&#160; Listen in this week and find out how C# and Mono can be a viable option for web application development.</p>  <ul>   <li>The show kicks off with Harper offering an overview of the Manos Web Application Framework. He notes his preference in using frameworks like Django over ASP.NET, his appreciation&#160; for Mono and&#160; C# and how these factors lent themselves to the creation of Manos. </li>    <li>Kevin asks what's different and interesting about Manos compared to ASP.NET MVC.&#160; Jackson speaks the philosophy of application development and digs into simplifying developer workflow.&#160; </li>    <li>Kevin asks what Manos includes.&#160; Harper lists off the simple routing, template engine and a non-blocking web server.&#160; He also notes that Manos will support any ORM and configuration management is in the works. </li>    <li>The guys talk about the simple and flexible routing system and continue to conversation by digging into Manos's html-centric templating engine.&#160; </li>    <li>Jackson walks through the developer steps to get going with Manos and is quick to note that Manos is not geared to the Windows developer.&#160; There will be Mac and Windows support but it is being build with Linux in mind. </li>    <li>Kevin and Jackson get into the core bits - what's included from the .NET Framework and what's custom built?&#160; Harper calls out that he's not referencing System.Web and his custom HTTP server is built on Tornado. </li>    <li>Jon asks about session management, authentication and security.&#160; Jackson talks about how the wish to ease deployment drove much of the implementation and custom component decisions. </li>    <li>Jackson further explains his interest in creating his non-blocking web server and why it benefits such operations as long pulling.&#160; This prompts Jon to asks if Manos is an alternative to learning Node.js. </li>    <li>Jackson talks about stealing users and pie. </li>    <li>Jackson talks about his strict No XML policy and how that will work into Manos's configuration management faculties. </li>    <li>Kevin and Jackson explore model binding in ASP.NET MVC and Manos. </li>    <li>Jon summarize what Manos has to offer - lght-weight, more html-like view engine, the routing system is nice, non-threaded architecture and high-performance - and asks how Harper decides what gets into Manos?&#160; Jackson explains the framework is more driven by need rather than trying to implement merely what other frameworks offer. </li>    <li>K Scott asks about the challenges of working with a static language, C#, in this space.&#160; Jackson flips the question on its head and talks about the benefits. </li>    <li>K Scott and Jackson talk about open and close mustaches, type safety, anonymous types and Manos's templating code. </li>    <li>Kevin asks about inspiration and Jackson reflects on how Manos came to be - starting with a focus on development flow to his need for a cleaner view engines to ease of deployment and then his interest in a non-blocking web server. </li>    <li>Jon asks about applications running on Manos and the long pulling niche. </li>    <li>Jackson talks about how .NET sets itself apart from other languages when it comes to parallelism and multi-core computing.&#160;&#160; Jon and Jackson talk about how parallel extensions are used in Manos and how Manos could be used to manage tasks on the server with C#. </li>    <li><a href="http://twitter.com/zbowling">@zbowling</a> asks about the <a href="http://www.kegel.com/c10k.html">C10K Problem</a> and the ability to handle 10,000 connections at once. </li>    <li>Scott K and Jackson discuss how have your own HTTP stack makes development and deployment a lot easier. </li>    <li>The show wraps with talk of route definition management, Sinatra and <a href="http://www.cookingforgeeks.com/">Cooking for Geeks</a>. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://jacksonh.tumblr.com/">Jackson Harper</a>, <a href="http://twitter.com/jacksonh">@jacksonh</a> </li>    <li><a href="http://www.novell.com/home/">Novell</a> </li>    <li><a href="http://www.mono-project.com/Main_Page">Mono</a> </li>    <li><a href="http://jacksonh.tumblr.com/post/1159500924/manos-de-mono-the-manifesto">Manos de Mono: The Manifesto</a> </li>    <li><a href="http://github.com/jacksonh/manos">Manos on Github</a> </li>    <li><a href="http://www.mono-project.com/Moonlight">Moonlight</a> </li>    <li><a href="http://www.djangoproject.com/">Django</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx">Razor</a> </li>    <li><a href="http://sparkviewengine.com/">Spark</a> </li>    <li><a href="http://nhforge.org/Default.aspx">NHiberate</a> </li>    <li><a href="http://www.sinatrarb.com/">Sinatra</a> </li>    <li><a href="http://www.tornadoweb.org/">Tornado Web</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/concurrency/default.aspx">Parallel Extensions</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet</a> </li>    <li><a href="http://nodejs.org/">Node.Js</a> </li>    <li><a href="http://software.schmorp.de/pkg/libev.html">libev</a> </li>    <li><a href="http://code.google.com/p/kayak/">Kayak</a>&#160; </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0097-Jackson-Harper-on-Manos.mp3">Herding Code 97: Jackson Harper on Manos</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0097-Jackson-Harper-on-Manos.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 96: Eric Sink on Veracity and DVCS</title>
    <link>https://herdingcode.com/herding-code-96-eric-sink-on-veracity-and-dvcs/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-96-eric-sink-on-veracity-and-dvcs/</guid>
    <pubDate>Tue, 02 Nov 2010 03:32:16 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk with Eric Sink, cofounder of SourceGear, about Veracity and Distributed Version Control Systems. Listen in and learn about Veracity&apos;s ar</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 96</strong></p>
<p>This week on Herding Code, the guys talk with Eric Sink, cofounder of SourceGear, about Veracity and Distributed Version Control Systems.  Listen in and learn about Veracity's architecture including pluggable layers and a unique approach to data storage all built on an impressive technical stack.  And get an answer to the question that everyone's asking "Why does the world need another DVCS?"  All this and more, this week on Herding Code.</p>  <ul>   <li>Kevin wastes no time kicking the show off with THE question - "Why Veracity? Why another DVCS?"  Eric talks DVCS and the future of source control, how Git and Mercurial are just getting us started and how there's no distributed system which is good at solving problems of the enterprise.  </li>    <li>So, what does Veracity offer that Git, Mercurial and Bazaar do not?  Eric describes record, field and constraint-based (opposed to folder and file-based) version control and how if it fits nicely inside of Application Lifecycle Management (ALM).  </li>    <li>Eric compares the Veracity data storage model with NoSQL and Berkeley DB.  This prompts Jon to ask about where SQLite comes into play.  </li>    <li>Eric digs into the pluggable storage layer, "Zing" and component layers for Scrum or wikis, for example. </li>    <li>Jon asks about the nightly snapshots (releases) and Eric runs us through the intentionally not-so-easy build process. </li>    <li>The conversation shifts back to differences between Veracity and a Git or Mercurial.  The guys talk about branching models and rebasing. </li>    <li>Scott K asks about free source control hosting and the guys comment about the community and social networking aspect of Bitbucket and GitHub. </li>    <li>Kevin asks if there was ever thought of building ALM tools on top of Mercurial or Git. Eric talks about DVCS functionality, licensing and what the enterprise wants. </li>    <li>Eric explains Veracity's open source license, which components will and will not be open sources and speaks to community patches. </li>    <li>Jon asks if the Veracity data layer could be used to support other applications and not just version control. </li>    <li>Scott K asks about dogfooding Veracity - when did SourceGear start versioning Veracity in Veracity? </li>    <li>Eric explains his choice to write Veracity in C.  The guys talk about cross platform development and Scott K asks about extensions and wrappers. </li>    <li>Jon beats Scott K to the punch and asks why Node.js isn't included in Veracity's impressive technical stack. </li>    <li>Kevin asks about plans to develop a Visual Studio plugin or a version control tools like TortoiseSVN. </li>    <li>Eric answers a Twitter question from Andrew Tobin about migration support.  Kevin ask if there will be a feature like GitSVN for Veracity. </li>    <li>Kevin asks Eric to explain the need for exclusive file locks.  Eric explains this need for industries like Gaming which deal with a large amount of binary files. </li>    <li>Jon and Eric talk more about the enterprise and what's important to them. </li>    <li>Jon talks more about Veracity's stack and the use of (wait for it) SVG for Veracity burn down charts. </li>    <li>Scott K asks why SourceGear went with SpiderMonkey over Script Monkey or V8. </li>    <li>Jon talks about portability and asks if Mono has a place in Veracity development. </li>    <li>Jon and Eric talk about Scrum and the enterprise's current interest in Agile.  This topic rolls into talk of browsers. </li>    <li>Kevin asks if SoureGear has concern that Microsoft may someday enter the DVCS space. </li>    <li>Scott K wraps the show asking how Eric defines success for Veracity. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://www.ericsink.com/">Eric Sink</a> </li>    <li><a href="http://sourcegear.com/">SourceGear</a> </li>    <li><a href="http://www.sourcegear.com/vault/">Vault</a> </li>    <li><a href="http://www.sourcegear.com/veracity/">Veracity</a> </li>    <li><a href="http://www.hanselman.com/blog/HanselminutesPodcast231EricSinkOnDistributedVersionControlSystems.aspx">Hanselminutes Podcast 231 - Eric Sink on Distributed Version Control Systems</a> </li>    <li><a href="http://git-scm.com/">Git</a> </li>    <li><a href="http://mercurial.selenic.com/">Mercurial</a> </li>    <li><a href="http://bazaar.canonical.com/en/">Bazaar</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Berkeley_DB">Berkeley DB</a> </li>    <li><a href="http://www.sqlite.org/">SQLite</a> </li>    <li><a href="http://www.ericsink.com/entries/veracity_tech_overview.html">Veracity Technical Overview</a> </li>    <li><a href="http://nodejs.org/">node.js</a> </li>    <li><a href="http://www.cmake.org/">CMake</a>, <a href="http://www.kitware.com/">Kitware</a>, <a href="http://en.wikipedia.org/wiki/KDE">KDE Project</a> </li>    <li><a href="http://bitbucket.org/">Bitbucket</a>, <a href="http://www.atlassian.com/">Atlassian</a> </li>    <li><a href="http://github.com/">GitHub</a> </li>    <li><a href="http://www.fogcreek.com/">FogCreek</a> </li>    <li><a href="http://www.fogcreek.com/FogBugz/blog/author/Benjamin%20Pollack.aspx">Ben Pollack</a> </li>    <li><a href="http://twitter.com/tobin">Andrew Tobin</a> </li>    <li><a href="http://www.perforce.com/">Perforce</a> </li>    <li><a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a> </li>    <li><a href="http://code.google.com/p/scriptmonkey/">Script Monkey</a> </li>    <li><a href="http://code.google.com/p/v8/">V8</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Mosaic_(web_browser)">Mosaic</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0096-Eric-Sink-on-Veracity-and-DVCS.mp3">Herding Code 96: Eric Sink on Veracity and DVCS</a></p>    <p style="overflow:auto;"><a href="http://www.jetbrains.com/teamcity?utm_source=herdingcode&amp;utm_medium=banner&amp;utm_campaign=teamcity"><img src="https://herdingcode.com/wp-content/uploads/TC51_HerdingCode.png/" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0096-Eric-Sink-on-Veracity-and-DVCS.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 95: MonoDroid with Miguel and the Mono gang</title>
    <link>https://herdingcode.com/herding-code-95-monodroid-with-miguel-and-the-mono-gang/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-95-monodroid-with-miguel-and-the-mono-gang/</guid>
    <pubDate>Thu, 14 Oct 2010 19:21:59 GMT</pubDate>
    <description><![CDATA[<p>Hey, it&apos;s a bunch of Mono guys! That&apos;s always fun. This time they&apos;re talking about MonoDroid. Joining the gang this week are Miguel de Icaza, Joseph Hill, Geoff Norton, and Mike</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 95</strong></p>
<p>Hey, it's a bunch of Mono guys! That's always fun. This time they're talking about MonoDroid. Joining the gang this week are Miguel de Icaza, Joseph Hill, Geoff Norton, and Mike Kestner talk about developing .NET applications for the Android platform with Mono.</p>  <ul>   <li>Jon asks about where MonoDroid is at in the product lifecycle. </li>    <li>Jon asks about the install experience, which currently requires installing a few dependencies to get set up. Miguel and Joseph clarify that it's a pretty simple setup, and explain why it currently works that way. </li>    <li>We talk about the File / New Project experience, and how MonoDroid projects are structured. </li>    <li>Miguel describes the API flavor for MonoDroid, and how it follows the MonoTouch and GTK# approach of keeping pretty close to the underlying API's and pipeline - e.g. accessing images as resources. Mike talks about how API is mapped to run on the .NET primitives and collections.</li>    <li>The guys talk about how software architectures vary across iPhone, Android, and Windows Phone 7. Miguel and Geoff talk about the difficulty in building real-world applications which are can share back-end code across platforms.</li>    <li>The talk shifts to nerdy details about how .NET code is being deployed to the Java-based Android platform and a discussion of&#160; the performance impacts of crossing those boundaries.</li>    <li>Geoff and Mike talk about the challenges of integrating the different platforms.</li>    <li>Kevin asks about what MonoDroid brings to the Android platform, since the Java runtime is already kind of similar to .NET. Miguel talks about how they've seen even higher developers interest in MonoDroid than MonoTouch, and everyone speculates about why that might be.</li>    <li>Scott K asks about some of the challenges in implementing Mono on Android, and Mike digs into the differences in generics between .NET and Java.</li>    <li>K. Scott asks about the ability to wrap or extend the Mono.Android API's.</li>    <li>Kevin asks about rather underlying services are exposed as native API's or generalized API's. Miguel explains why it's necessary to expose at the native API level.</li>    <li>Kevin asks more about how code can be shared between MonoDroid and MonoTouch projects.</li>    <li>Jon asks about whether they're looking at anything for Windows Phone 7. Miguel talks about the possibility of adding unsupported API's, and Geoff talks about how this has been pretty popular on Windows XBox.</li>    <li>Greg Shackles asks a question via Twitter about how developers can get involved and contribute to both Mono and MonoDroid.</li>    <li>Geoff talks about the MonoMac project.</li>    <li>K. Scott asks if there's still support for PowerPC in Mono.</li>    <li>Sara Chipps asks whether iPhone or Androids are more difficult to support. The surprising answer: neither!</li>    <li>Everyone talks about how people will actually buy apps on their phones, and the iCircuit app comes up as an example of a great MonoTouch app that's making some money.</li>    <li>Kevin asks about the pricing for MonoDroid. The word is that it'll be pretty similar to MonoTouch.</li>    <li>Miguel mentions Manos de Mono from Jackson Harper.</li>    <li>Scott K asks about plans for other phone platforms. Joseph says the plan is to go where developers go.</li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://monodroid.net/">MonoDroid</a></li>    <li><a href="http://tirania.org/blog/">Miguel de Icaza</a>, <a href="http://twitter.com/migueldeicaza">@migueldeicaza</a></li>    <li>Geoff Norton <a href="http://twitter.com/kangamono">@kangamono</a></li>    <li><a href="http://beyondfocus.com/">Joseph Hill</a>, <a href="http://twitter.com/JosephHill">@JosephHill</a></li>    <li><a href="http://mkestner.blogspot.com/">Mike Kestner</a></li>    <li><a href="http://developer.android.com/index.html">Android Development info</a></li>    <li>Jonathan Pobst, <a href="http://twitter.com/jpobst">@jpobst</a></li>    <li>Greg Shackles, <a href="http://twitter.com/gshackles">@gshackles</a></li>    <li><a href="http://www.mono-project.com/Mono:OSX">MonoMac</a></li>    <li><a href="http://girldeveloper.com/">Sara Chipps</a>, <a href="http://twitter.com/SaraJChipps">@sarajchipps</a></li>    <li><a href="http://icircuitapp.com/">iCircuit</a></li>    <li><a href="http://jacksonh.tumblr.com/post/1159500924/manos-de-mono-the-manifesto">Manos de Mono</a> from <a href="http://twitter.com/jacksonh">@jacksonh</a></li>    <li><a href="http://knowyourmeme.com/memes/courage-wolf">Courage Wolf</a></li>    <li><a href="http://knowyourmeme.com/memes/son-i-am-disappoint">Son, I am disappoint</a></li>    <li><a href="http://docs.gimp.org/en/gimp-tool-clone.html">Gimp Clone Tool</a> and <a href="http://docs.gimp.org/en/gimp-tool-perspective-clone.html">Gimp Perspective Clone Tool</a></li>    <li><a href="http://www.flickr.com/photos/jongalloway/4957904267/">Scanners Gonna Scan</a></li>    <li><a href="http://samy.pl/evercookie/">evercookie</a></li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0095-MonoDroid-with-Miguel-de-Icaza-and-the-Mono-gang.mp3">Herding Code 95: MonoDroid with Miguel and the Mono gang</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0095-MonoDroid-with-Miguel-de-Icaza-and-the-Mono-gang.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 94: Silverlight and HTML5</title>
    <link>https://herdingcode.com/herding-code-94-silverlight-and-html5/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-94-silverlight-and-html5/</guid>
    <pubDate>Fri, 01 Oct 2010 21:51:33 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk to Adam Kinney and Rick Barraza about how Silverlight fits into a world where HTML5 is finally becoming a reality. Jon asks about Adam a</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 94</strong></p>
<p>
<a href="http://adamkinney.com/blog/2010/10/04/on-the-herding-code-show-talking-about-silverlight-and-html5-artwork/"><img src="http://farm5.static.flickr.com/4128/5051011899_4b2cc25deb_o_d.png" alt="Artwork by Adam Kinney" /></a>
</p>

<p style="clear:both;">This week on Herding Code, the guys talk to Adam Kinney and Rick Barraza about how Silverlight fits into a world where HTML5 is finally becoming a reality.</p>
  <ul>   <li>Jon asks about Adam and Rick's opinions on the recent post on the Silverlight Team Blog about the future of Silverlight</li>    <li>Adam talks about he sees consumer applications and games as great applications of Silverlight</li>    <li>Rick talks about how how some developers are resistant to change, then talks about the longterm evolution of the internet from information provider, to application provider, and finally to operating system</li>    <li>Adam and Rick talk about the Wired Article titled <a href="http://www.wired.com/magazine/2010/08/ff_webrip/">The Web Is Dead. Long Live The Internet.</a></li>    <li>The talk shifts Silverlight as an application platform, not just a web plugin</li>    <li>Jon asks how likely it is to be able to reuse Silverlight across web, phone, and out-of-browser applications</li>    <li>Rick talks about <a href="http://futureoftheinternet.org/">The Future of the Internet and How To Stop It</a></li>    <li>The talk shifts to discussion over how cross-platform HTML5 can be when it's limited by things like video codecs and browser targeting</li>    <li>Scott Koon talks about how HTML5 is a loose collection of many different technologies</li>    <li>Scott Koon asks where the live Silverlight apps are - he just doesn't see them in the wild</li>    <li>Adam and Rick talks about the advantages of developing in Silverlight vs. HTML5. Rick talks about the lack of tooling for HTML5</li>    <li>Kevin asks about the enterprise advantages of Silverlight development</li>    <li>The guys talk about the differences between canvas/bitmap graphics vs. SVG/vector graphics</li>    <li>Jon and Rick talk about the importance of having access to low level building blocks so you can build what you need</li>    <li>Scott K asks what's left that Silverlight does that HTML5 doesn't offer. Rick talks about the tooling, Adam talks about consistent cross-browser support.</li>    <li>Scott K asks about MVVM and whether Silverlight's been taken over by architecture astronauts and propellerheads rather than the designers. Adam and Jon talk about how MVVM can make life easier for designers as well.</li>    <li>K Scott talks about his experiences with an enterprise Silverlight application</li>    <li>Rick talks about being a samurai rather than a swordsman - don't be married to your tools</li>    <li>Rick says that the biggest advantage of Silverlight is that it's a programming language which was designed for applications rather than HTML which was designed for documents</li>    <li>Scott K and Kevin ask whether Silverlight makes sense in public web applications</li>    <li>Jon asks Adam and Rick about what they've been building with HTML5 and what they like about that development experience</li>    <li>Rick and Adam talks about the changing environment and how the rich vs. reach question has changed</li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://adamkinney.com/">Adam Kinney</a>, <a href="http://twitter.com/adkinn">@adkinn</a> </li>    <li><a href="http://www.cynergysystems.com/blogs/page/rickbarraza">Rick Barraza</a>, <a href="http://www.twitter.com/RickBarraza">@RickBarraza</a> </li>    <li><a href="http://team.silverlight.net/announcement/the-future-of-silverlight/">Silverlight Team Blog: The Future of Silverlight</a></li>    <li><a href="http://www.wired.com/magazine/2010/08/ff_webrip/">The Web Is Dead. Long Live The Internet.</a> (Wired magazine)</li>    <li><a href="http://futureoftheinternet.org/">The Future of the Internet and How To Stop It</a></li>    <li><a href="http://thewildernessdowntown.com/">The Wilderness Downtown</a></li>    <li><a href="http://www.dothatin.com/challenge.php">Do That In HTML5</a> - Flash Button Challenge</li>    <li><a href="http://wildermuth.com/2010/08/31/HTML5_XAML_and_Declarative_User_Interfaces">HTML5, XAML, and Declarative User Interfaces</a> (<a href="http://twitter.com/ShawnWildermuth">@ShawnWildermuth</a>)</li>    <li><a href="http://www.lazycoder.com/weblog/2009/02/09/silverlight-is-the-future-but-the-future-isnt-silverlight/">Silverlight is the Future but the Future Isn't Silverlight</a> (Scott K's blog)</li>    <li><a title="http://www.beautyoftheweb.com/" href="http://www.beautyoftheweb.com/">http://www.beautyoftheweb.com/</a></li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0094-Silverlight-and-HTML5.mp3">Herding Code 94: Silverlight and HTML5</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0094-Silverlight-and-HTML5.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 93: Computer Errors, Home Media, and The Fall of The Roman Empire</title>
    <link>https://herdingcode.com/herding-code-93-computer-errors-home-media-and-the-fall-of-the-roman-empire/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-93-computer-errors-home-media-and-the-fall-of-the-roman-empire/</guid>
    <pubDate>Tue, 21 Sep 2010 07:03:31 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, it&rsquo;s story time. Have you ever fallen victim to a software glitch? Are you frustrated by those green screens which are still running social secu</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 93</strong></p>
<p>This week on Herding Code, it’s story time. Have you ever fallen victim to a software glitch?&#160; Are you frustrated by those green screens which are still running social security, the IRS and the DMV?&#160; Ever dealt with a medical database? Or maybe you owned a Zune on December 31, 2008? If so, you’ll want to listen in on the guys sharing tales about how software has personally bitten them in the you-know-where (and by you-know-where I mean their asses.) </p>  <p>Warning: Rob Conery get pulled into this show and shares a funny story of his own.</p>  <p>Then stick around for an extended lightning round nerd out about home media.&#160; The guys offer their opinions on the all-new (as of the day of the recording) Apple TV and then touch upon other home streaming options including Amazon, Netflix and Windows Media Center (whatever that is.)&#160; Jon entertains the idea of having computers on your TV and then the guys dig into this space’s complex business model.&#160; The show wraps with a quick review of the Windows Phone 7 RTM and Silverlight support. </p>  <p>Show Links:&#160; </p>  <ul>   <li><a href="http://girldeveloper.com/">Sara Chipps</a>, <a href="http://twitter.com/SaraJChipps">@SaraJChipps</a> </li>    <li><a href="http://blog.wekeroad.com/">Rob Conery</a>, <a href="http://www.twitter.com/robconery">@robconery</a> </li>    <li><a href="http://www.pcworld.com/article/156240/microsoft_says_leap_year_bug_caused_zune_failures.html">Zune Leap Year Failures</a> </li>    <li><a href="http://www.apple.com/appletv/">Apple TV</a> </li>    <li><a href="http://www.amazon.com/gp/video/ontv/start">Amazon Video On Demand</a> </li>    <li><a href="http://www.netflix.com">Netflix</a> </li>    <li><a href="http://www.microsoft.com/windows/windows-media-center/get-started/default.aspx">Windows Media Center</a> </li>    <li><a href="http://www.roku.com/">Roku</a> </li>    <li><a href="http://www.google.com/tv/">Google TV</a> </li>    <li><a href="http://www.amazon.com/Extreme-Chickfights-Artist-Not-Provided/dp/B000I2J6XC">Extreme Chickfights</a> </li>    <li><a href="http://www.shirky.com/weblog/">Clay Shirky</a> – <a href="http://www.shirky.com/weblog/2010/04/the-collapse-of-complex-business-models/">The Collapse of Complex Business Models</a> </li>    <li><a href="http://www.amazon.com/Collapse-Complex-Societies-Studies-Archaeology/dp/052138673X">The Collapse of Complex Societies</a> </li>    <li><a href="http://silverlighthack.com/post/2010/03/16/Silverlight-for-Windows-Phone-7-is-NOT-the-same-full-Silverlight-3-RTM.aspx">Silverlight Hack: Info on differences between Silverlight 3 and Windows Phone 7</a>&#160; </li>    <li><a href="http://www.lostechies.com/blogs/hex/">Eric Hexter</a>, <a href="http://twitter.com/ehexter">@ehexter</a>&#160; </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0093-Computer-Errors--Home-Media--and-The-Fall-of-The-Roman-Empire.mp3">Herding Code 93: Computer Errors, Home Media, and The Fall of The Roman Empire</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0093-Computer-Errors--Home-Media--and-The-Fall-of-The-Roman-Empire.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 92: Dru Sellers and Rob Reynolds on Nu</title>
    <link>https://herdingcode.com/herding-code-92-dru-sellers-and-rob-reynolds-on-nu/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-92-dru-sellers-and-rob-reynolds-on-nu/</guid>
    <pubDate>Fri, 27 Aug 2010 01:57:15 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Kevin, Jon and Scott K speak with Dru Sellers and Rob Reynolds about Nu, a .NET package management system designed to solve your open source distribut</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 92</strong></p>
This week on Herding Code, Kevin, Jon and Scott K speak with Dru Sellers and Rob Reynolds about Nu, a  .NET package management system designed to solve your open source distribution/consumption issues. The guys discuss how package management is handled in other communities, namely Ruby, and how the .NET world can benefit from these same practiced.
<ul>
	<li>Dru explains the concept of package management and how it is implemented in other communities.  He continues by exposing package management’s absence in the .NET space and how Nu came into being.</li>
	<li>Rob <a href="http://ferventcoder.com/">basically</a> shares the typical user experience and how to add open source references with Nu. </li>
	<li>Kevin asks about the decision to take on the heavy dependency on Ruby.  The guys get into the similarities and differences between Ruby and .NET packaging, the use of the Ruby Gems server and standing up their own Nu server.</li>
	<li>Rob and Dru speak to the Gem Spec and how can contribute their open source packages to Nu.</li>
	<li>The guys talk about dependencies, versions and package upgrade paths with Nu.  Rob and Dru also share the challenges around management of open source projects like MassTransit and NServiceBus which include many cascading dependencies and the practicality of hosting packages for contrib projects which are being updated at breakneck speeds.</li>
	<li>Kevin asks about Bundler and the use of the local gem cache. Dru digs a little more into the differences between Ruby and .NET package management and introduces concepts like freezing references. </li>
	<li>Rob <a href="http://ferventcoder.com/">basically</a> speaks to Semantic Versioning – a formalized policy on bumping version numbers.</li>
	<li>Rob and Dru talk about ownership and how to get one’s packages added to the Gem server.  Scott K speaks of security, evil-doers, and lawyers.</li>
	<li>The group entertains the idea of hosting their own Gem Servers.</li>
	<li>Rob <a href="http://ferventcoder.com/">basically</a> walks through another Nu usage with a RoundhousE example.</li>
	<li>Kevin notes that Nu installs are focused on the release of assemblies only. Rob and Dru talk to the distribution of documentation, samples and even executables as well.</li>
	<li>Dru provides the rundown of other .NET package management systems, their approaches and how they differ from Nu.</li>
	<li>Jon talks about open source naming, Google Juice and asks about the origins of the Nu (Nubular) name.</li>
	<li>Scott K asks what happens if Microsoft ever releases a package manager. The guys respond with talk of “bringing the awesome” and Jon shares that having more than one of something is rarely a bad thing.</li>
	<li>Kevin asks about the Nu roadmap. Rob and Dru talk to stabilization, issue/request tracking, and building up their own Gem Server.</li>
	<li>Jon asks about project contributors. Dru gives props to Bil Silmer for his contributions to the project.  He also talks about the development of Nu for Visual Studio and the integrated add reference experience it will offer devs.  Dru also thanks Nick Quaranto and the Ruby Community for the temporary use of their Gem Server. Jon asks how “our” use of the Gem has been received by the Ruby Community.</li>
	<li>K Scott <a href="http://ferventcoder.com/">basically</a> dies.</li>
	<li>Dru further pimps Nu and requests that all open source projects submit their packages. Dru teases us with talk of TopShelf, UppercuT and Rob <a href="http://ferventcoder.com/">basically</a> pimps database versioning with RoundhousE.</li>
</ul>
Show Links: 
<ul>
	<li><a href="http://codebetter.com/blogs/dru.sellers/">Dru Sellers</a>, <a href="http://twitter.com/drusellers">@drusellers</a></li>
	<li><a href="http://ferventcoder.com/">Rob Reynolds</a>, <a href="http://twitter.com/ferventcoder">@ferventcoder</a></li>
	<li><a href="http://nu.wikispot.org/">Nu - Gems for .NET</a></li>
	<li><a href="http://masstransit-project.com/">MassTransit</a></li>
	<li><a href="http://visualstudiogallery.msdn.microsoft.com/en-us/ba0f6da5-3660-4983-b8fb-d5abfc45093e">Nu for Visual Studio</a></li>
	<li><a href="http://blogs.systemex.net/Kiliman/">Michael Carter</a>, <a href="http://twitter.com/kiliman">@kiliman</a></li>
	<li><a href="http://yehudakatz.com/2009/11/03/using-the-new-gem-bundler-today/">Bundler</a></li>
	<li><a href="http://semver.org/">Semantic Versioning</a></li>
	<li><a href="http://ironruby.net/">IronRuby</a></li>
	<li><a href="http://tom.preston-werner.com">Tom Preston-Werner</a></li>
	<li><a href="http://rubyforge.org/tracker/?group_id=126&amp;atid=577&amp;func=detail&amp;aid=27951">universal-.net</a></li>
	<li><a href="http://hotgazpacho.org/">Will Green</a>, <a href="http://twitter.com/hotgazpacho">@hotgazpacho</a></li>
	<li><a href="http://groups.google.com/group/nu-net">Nu Google Group</a></li>
	<li><a href="http://weblogs.asp.net/bsimser/">Bil Simser</a> <a href="http://twitter.com/bsimser">@bsimser</a></li>
	<li><a href="http://code.google.com/p/roundhouse/">RoundhousE</a></li>
	<li><a href="http://code.google.com/p/hornget/">hornget</a></li>
	<li><a href="http://bricksproject.org/">Bricks</a></li>
	<li><a href="http://code.google.com/p/ngems/">NGems</a></li>
	<li><a href="http://wiki.github.com/openrasta/openwrap/">OpenWrap</a></li>
	<li><a href="http://serialseb.blogspot.com/">Sebastien Lambla</a>, <a href="http://twitter.com/serialseb">@serialseb</a></li>
	<li><a href="http://trac.caffeine-it.com/openrasta">OpenRasta</a></li>
	<li><a href="http://youtrack.codebetter.com/loginForm">Nu YouTrack</a></li>
	<li><a href="http://github.com/qrush/gemcutter">GemCutter</a></li>
	<li><a href="http://litanyagainstfear.com/">Nick Quaranto</a>, <a href="http://twitter.com/qrush">@qrush</a></li>
	<li><a href="http://topshelf-project.com/">Topshelf</a></li>
	<li><a href="http://code.google.com/p/uppercut/">UppercuT</a></li>
</ul>
<em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em>

<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0092-Dru-Sellers-and-Rob-Reynolds-on-Nu.mp3">Herding Code 92: Dru Sellers and Rob Reynolds on Nu</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0092-Dru-Sellers-and-Rob-Reynolds-on-Nu.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 91: Listener-Powered Lightning Round</title>
    <link>https://herdingcode.com/herding-code-91-listener-powered-lightning-round/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-91-listener-powered-lightning-round/</guid>
    <pubDate>Thu, 19 Aug 2010 18:18:24 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, K Scott, Jon, Kevin, and Scott K field your questions. That&apos;s right &ndash; it&rsquo;s a Listener-Powered Lightning Round! Whether you were interested in their op</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 91</strong></p>
<p>This week on Herding Code, K Scott, Jon, Kevin, and Scott K field your questions. That's right – it’s a Listener-Powered Lightning Round! Whether you were interested in their opinions on Microsoft LightSwitch, energy drinks or how the current economic downturn affects quality and craftsmanship, this week’s conversation is being directed by you! </p>  <p>Thanks, listeners, for all of the great questions:</p>  <ul>   <li><a href="http://twitter.com/mattcasto">@mattcasto</a> - What does the herding code crew think of LightSwitch</li>    <li><a href="http://twitter.com/detroitpro">@detroitpro</a> - What do you know of orchard? w/ <a href="http://twitter.com/loudej">@loudej</a> on board it could be something. #HerdingCode </li>    <li><a href="http://twitter.com/detroitpro">@detroitpro</a> - Thoughts on Nu (gems in .NET) #HerdingCode </li>    <li><a href="http://twitter.com/MachaHack">@MachaHack</a> - If you were going to learn to program all over again, what would you do differently? </li>    <li><a href="http://twitter.com/mattcasto">@mattcasto</a> - What's your favorite energy drink? #herdingCode #lightninground </li>    <li><a href="http://twitter.com/JimHolmes">@JimHolmes</a> - Cake or Pie? (In honor of <a href="http://twitter.com/stevehorn">@stevehorn</a> ) </li>    <li>Ross Jempson - Why all the fuss about Microsoft.Data?&#160; </li>    <li>Ross Jempson - How did you get banned from chat.meta.stackoverflow?&#160; </li>    <li>Ross Jempson - I have a friend, here in Australia that queued up from 11:30pm one night for 11 hours to get an iphone4.&#160; Is an intervention required? </li>    <li><a href="http://twitter.com/JimHolmes">@JimHolmes</a> - Failing cake or pie, do y'all think this downturn gives companies pause to rethink approaches to quality and craftsmanship? </li> </ul>  <p>And the show wraps with the prospect of turning urine to gold…</p>  <p>Show Links:&#160; </p>  <ul>   <li><a href="http://www.microsoft.com/visualstudio/en-us/lightswitch">LightSwitch</a> </li>    <li><a href="http://orchardproject.net/">Orchard</a> </li>    <li><a href="http://groups.google.com/group/nu-net">Nu – Gems for .NET</a> </li>    <li><a href="http://weblogs.asp.net/davidfowler/archive/2010/08/02/introduction-to-microsoft-data-dll.aspx">Microsoft.Data</a> </li>    <li><a href="http://weblogs.asp.net/davidfowler/">David Fowler</a> </li>    <li><a href="http://www.asp.net/webmatrix">WebMatrix</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx">Razor</a> </li>    <li><a href="http://chat.meta.stackoverflow.com/">chat.meta.stackoverflow</a> </li>    <li><a href="http://twitter.com/ehexter">@ehexter</a> </li>    <li><a href="http://mvcconf.com/">MvcConf</a> </li>    <li><a href="http://twitter.com/shanselman">@shanselman</a> </li>    <li><a href="http://www.jamessenior.com/">James Senior</a> </li>    <li><a href="http://www.f5.com/">F5</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0091-Listener-powered-Lightning-Round.mp3">Herding Code 91: Listener-Powered Lightning Round</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0091-Listener-powered-Lightning-Round.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 90: Sara Chipps on Girl Develop IT and Girls Developing Software</title>
    <link>https://herdingcode.com/herding-code-90-sara-chipps-on-girl-develop-it-and-girls-developing-software/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-90-sara-chipps-on-girl-develop-it-and-girls-developing-software/</guid>
    <pubDate>Thu, 12 Aug 2010 20:09:40 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the boys talk with Sara Chipps about Girl Develop IT , a comfortable place where women can learn at their own pace and not be afraid to ask &quot;stup</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 90</strong></p>
<p>This week on Herding Code, the boys talk with <a href="http://girldeveloper.com/">Sara Chipps</a> about <a href="http://girldevelopit.com/">Girl Develop IT</a>, a comfortable place where women can learn at their own pace and not be afraid to ask &quot;stupid questions.&quot; Listen in as Sara talks about repairing the wide gender gap in development through her series of classes which help women gain knowledge and get involved in software development. </p>  <p><strong>Note: Since we recorded this, </strong><a href="http://mashable.com/2010/07/28/developer-hacker-women-twitter"><strong>Sara was named one of the Top 15 Developer/Hacker Women to Follow on Twitter by Mashable</strong></a><strong>. Congrats!</strong></p>  <ul>   <li>Sara kicks off the show by introducing us to Girl Develop IT and its target audience – female entrepreneurs who needs to higher and work with developers and professional women who wish to switch careers and become coders. </li>    <li>Kevin asks the focus on building projects/products.&#160; Chipps speaks to the series’ curriculum – HTML/CSS, JavaScript, design patterns, data structures and Ruby on Rails. </li>    <li>Jon asks why Ruby and Rails over ASP.NET MVC and C#?&#160; Good question since Sara is an ASP.NET and C# developer after all. </li>    <li>The guys and gal talk about the early success of the program. </li>    <li>Kevin shares that most of the Herding Code hosts are fathers of daughters and asks a twitter question about providing classes and turning girls to coding. Sara expresses the overarching strategy of Girl Develop IT which is to develop rock star programmers which girls can look up to. </li>    <li>This sparks a conversation about media not telling the real story about developers. Are they any sexy cool female (or male) coders on TV? Is there any way to be a normal girl and a coder? </li>    <li>Jon asks about dereferencing a pointer in high school. </li>    <li>Scott K asks about the differences in teaching women compared to men?&#160; Do the gender have different learning styles?&#160; Sara talks about getting the women in the group feeling comfortable to answer questions.&#160; </li>    <li>The group talks about conferences and open source projects and the percentages of women there within.&#160; </li>    <li>Sara talks about extending the Girl Develop IT course materials to other chapters. </li>    <li>Jon asks why this sort of thing (teaching focused on women) isn’t already being done. Sara speaks to what’s happening in the community and the typical women’s group. </li>    <li>The guys ask “if you can’t get to Girl Develop IT, how can women get involved and learn?” How about online learning? </li>    <li>The cast considers pretending to be women on Stackoverflow? </li>    <li>Scott K asks what’s next for the Girl Develop IT? Will the course begin to venture outside of the web space? Lisp development for women perhaps? </li>    <li>Chipps offers the <a href="http://bundl.it">bundl.it</a> elevator pitch, answers a Twitter question about Mono and the conversation quickly digresses to challenges in international domain registration. </li>    <li>Sara shares her excitement about last year’s Concept Camp and announces this year’s return.&#160; Be on the lookout for <a href="http://conceptcamp2010.com/">CONCEPT CAMP 2010: A DEV ODYSSEY</a>, puns and steak sponsorship! </li>    <li>Sara talks about the success of the <a href="http://devsforwendy.com/">Devs for Wendy</a> fundraiser held of software developer and loving mom, Wendy Friedlander. </li>    <li>The show wraps with the boys asking Sara for advice on raising daughters around computers and software and code.&#160; And then Chipps pimps the October release of <a href="http://shop.mattel.com/product/index.jsp?productId=4032107">Computer Engineer Barbie</a>. </li> </ul>  <p>Show Links:&#160; </p>  <ul></ul>  <ul></ul>  <ul></ul>  <ul></ul>  <ul></ul>  <ul>   <li><a href="http://girldeveloper.com/">Sara Chipps</a>, <a href="http://twitter.com/SaraJChipps">@SaraJChipps</a> </li>    <li><a href="http://girldevelopit.com/">Girl, Develop It!</a> </li>    <li><a href="http://www.caterina.net/">Catherina Fake</a> </li>    <li><a href="http://research.microsoft.com/en-us/projects/kodu/">Kodu</a>&#160; </li>    <li><a href="http://smallbasic.com/">Small Basic</a> </li>    <li><a href="http://groups.google.com/group/nyc-ruby-women">NYC Ruby Women’s Group</a> </li>    <li><a href="http://mindcamp.gearlive.com/">Seattle Mind Camp</a> </li>    <li><a href="http://stackoverflow.com/">Stackoverflow</a> </li>    <li><a href="http://conceptcamp2010.com/">CONCEPT CAMP 2010: A DEV ODYSSEY</a> </li>    <li><a href="http://www.infragistics.com/">Infragistics</a>, Infamous Steak Sponsor </li>    <li><a href="http://codebetter.com/blogs/matthew.podwysocki/default.aspx">Matt Podwysocki</a> </li>    <li><a href="http://bundl.it">bundl.it</a> </li>    <li><a href="http://twitter.com/kangamono">Jeff Norton</a> </li>    <li><a href="http://codeclimber.net.nz/">Simone Chiaretta</a> </li>    <li><a href="http://devsforwendy.com/">Devs for Wendy</a> </li>    <li><a href="http://www.charlespetzold.com/">Charles Petzold</a> </li>    <li><a href="http://www.dotnetdude.com/">Miguel Castro</a> </li>    <li><a href="http://blogs.msdn.com/b/peterlau/">Peter Laudati</a> </li>    <li><a href="http://unhandled-exceptions.com/blog/">Steve Bohlen</a> </li>    <li><a href="http://rachelappel.com/">Rachel Appel</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0090-Sara-Chipps-on-GirlDevelopIt-and-Girls-Developing-Software.mp3">Herding Code 90: Sara Chipps on GirlDevelopIT and Girls Developing Software</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0090-Sara-Chipps-on-GirlDevelopIt-and-Girls-Developing-Software.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 89: Vaidy Gopalakrishnan on IIS Developer Express</title>
    <link>https://herdingcode.com/herding-code-89-vaidy-gopalakrishnan-on-iis-developer-express/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-89-vaidy-gopalakrishnan-on-iis-developer-express/</guid>
    <pubDate>Thu, 05 Aug 2010 05:04:17 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk with Vaidy Gopalakrishnan about IIS Developer Express. The show kicks off by explaining the IIS Developer Express name. Why not ju</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 89</strong></p>
<p>This week on Herding Code, the guys talk with Vaidy Gopalakrishnan about IIS Developer Express.</p>  <ul>   <li>The show kicks off by explaining the IIS Developer Express name.&#160; Why not just IIS Express? </li>    <li>Vaidy provides an overview of IIS Developer Express and explains it is a lightweight, self-contained version of IIS for web developers.&#160;&#160; </li>    <li>Vaidy speaks about the WebMatrix which includes IIS Developer Express along with the Razor ViewEngine and SQL 4 Compact Edition. </li>    <li>K Scott asks about IIS Developer Express and its relationship to ASP.NET Development Server (which you may still be calling Cassini).&#160; Vaidy notes that Express will likely integrate with Visual Studio in the future and responds to a Twitter question asking why wasn’t Cassini further developed rather than building out the new product. </li>    <li>Vaidy notes that IIS Developer Express is based off of IIS 7 which triggers a conversation about Hostable Web Core. </li>    <li>K Scott and Jon pepper Vaidy which a number of questions including whether or not MSDeploy will work with IIS Developer Express. </li>    <li>The guys review the environments for which IIS Developer Express and WebMetrix are supported. </li>    <li>Vaidy talks about IIS.Net. </li>    <li>Vaidy walks Jon and K Scott through debugging your .NET web applications with IIS Express. </li>    <li>Jon asks about running IIS Express from the command line. Vaidy talks about the configuration mode vs the application mode. </li>    <li>Vaidy talks about SSL support, self-signed certificates and custom certificates. </li>    <li>Jon asks about IIS Express user interface and how it’s implemented.&#160; Guess what. It’s WPF. </li>    <li>Vaidy speaks to IIS Developer Express logging and how it differs from the full version of IIS. </li>    <li>K Scott asks if there are IIS Express extensions like FastCGI or UrlRewriting. Vaidy explains that all IIS7 extensions should be compatible except when the extensions were not designed to run on XP. </li>    <li>Jon wants more. What’s next for Vaidy and IIS Developer Express?&#160; </li>    <li>The show wraps with talk about distribution and redistribution of WebMatrix and IIS Developer Express. </li> </ul>  <p>Show Links:&#160; </p>  <ul></ul>  <ul></ul>  <ul></ul>  <ul></ul>  <ul></ul>  <ul>   <li><a href="http://blogs.iis.net/vaidyg/">Vaidy Gopalakrishnan</a> </li>    <li><a href="http://blogs.iis.net/vaidyg/archive/2010/07/06/introducing-iis-developer-express.aspx">Introducing IIS Developer Express</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx">Introducing IIS Express</a> </li>    <li><a href="http://learn.iis.net/page.aspx/901/iis-developer-express-faq">IIS Developer Express FAQ</a> </li>    <li><a href="http://www.intrepidstudios.com/blog/2010/7/11/debug-your-net-web-project-with-iis-express-t.aspx">Debug Your .NET Web Project with IIS Express</a> </li>    <li><a href="http://odetocode.com/humor/68.aspx">Fun With C# and HP Laserjets</a>, K Scott </li>    <li><a href="http://www.asp.net/webmatrix">WebMatrix</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx">Razor</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/archive/2010/06/30/new-embedded-database-support-with-asp-net.aspx">SQL 4 Compact Edition</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/ms689327(VS.90).aspx">Hostable WebCore</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/ms708353(VS.85).aspx">NetShell</a> </li>    <li><a href="http://www.iis.net">www.iis.net</a> </li>    <li><a href="http://blogs.iis.net/thomad/default.aspx">Thomas Deml</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0089-Vaidy%20Gopalakrishnan-on-IIS-Developer-Express.mp3">Herding Code 89: Vaidy Gopalakrishnan on IIS Developer Express</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0089-Vaidy%20Gopalakrishnan-on-IIS-Developer-Express.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 88: Julie Lerman on Entity Framework 4</title>
    <link>https://herdingcode.com/herding-code-88-julie-lerman-on-entity-framework-4/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-88-julie-lerman-on-entity-framework-4/</guid>
    <pubDate>Wed, 21 Jul 2010 00:26:42 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk with Microsoft MVP, MSDN Magazine columnist and Programming Entity Framework author Julie Lerman about what&rsquo;s new in Entity Framework 4.</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 88</strong></p>
<p>This week on Herding Code, the guys talk with Microsoft MVP, MSDN Magazine columnist and <em>Programming Entity Framework </em>author Julie Lerman about what’s new in Entity Framework 4.&#160; </p>  <ul>   <li>The show begins with Julie providing a broad look at the new features and improvements around the EF designer, the run-time, POCO support and disconnected entities. </li>    <li>Julie talks about her world of database-first development and learning about persistence ignorance, repositories and domain driven development. </li>    <li>The group talks about the history of Entity Framework and how it is more than a typical ORM. </li>    <li>K Scott and Julie dive into the designer support for database-generated entities and starting with a blank slate for POCOs.&#160; Julie notes that one can create the DDL in the Visual Studio designer and then generate the database from what is modeled. </li>    <li>The group talks about green field vs legacy database development and Jon comments on migrations and updating models. </li>    <li>Scott K asks about hurdles such as generated code being overwritten when using the designer. Julie speaks to updating the model from the database and using views rather than tables to generate the model.&#160; Julie shares complications around foreign keys and RIA services and managing large models in the designer. </li>    <li>K Scott brings the talk back to POCOs and Julie discusses code generation templates customization with T4 templates.&#160; </li>    <li>Jon mentions the Visual Studio Extension Manager and how adding template items from the online gallery is just so easy. </li>    <li>K Scott asks Julie about Code First development with EF 4 CTP4 and compares Code First to&#160; Fluent NHibernate. </li>    <li>The conversation jumps between versioning, plain old PHP objects, ALT.NET kerfuffle and the Vote of No Confidence. </li>    <li>Julie and K Scott speak to the two types of POCO support, virtual properties, dynamic proxies, lazy loading and select n + 1. </li>    <li>Jon asks about EF’s context lifecycle management for ASP.NET and the complexity around disconnected entities.&#160; Julie shares her recommendations on change tracking, entity state properties, self-tracking entities and persisting to the database. </li>    <li>Julie talks about her book, <a href="http://www.amazon.com/Programming-Entity-Framework-Julia-Lerman/dp/059652028X">Programming Entity Framework</a>, the rewrite for EF 4, her Data Points column in MSDN Magazine and the MSDN Development videos. </li>    <li>The show wraps with comments about Domain-Driven Design and the Norwegian Developers Conference talks. </li>    <li>Postscript – Jon calls Julie back to talk about the new CTP 4 release. </li>    <li>Julie talks about how some of the changes are specific to code-first, and others enhance to the core API in CTP 4 to facilitate use of code-first. </li>    <li>Julie describes the DbContext and DbSet, how they relate to ObjectContext and ObjectSet, and how they’re so much simpler to work with. </li>    <li>Julie then talks about how the code-first changes make it possible to remove a lot of code because the model is inferred, but you can override things using model builder code or attributes. </li>    <li>Jon and Julie talk about the Ugly Buddy class, which allow adding attributes to an EF model. </li>    <li>Julie talks about how the conventions have gotten a lot smarter. </li>    <li>We talk about Scott Guthrie’s post, and how he’s demonstrating how to take maximum use of the EF / Code First approach. </li>    <li>We wrap up by talking about improvements in how updates are handled. There’s support for a few workflows – manually keeping them in sync, having EF drop and create, and have EF drop / create / populate. However, as far as we can tell, this drop doesn’t include a migration system. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://thedatafarm.com/blog/">Julie Lerman’s Blog</a> </li>    <li><a href="http://www.amazon.com/Programming-Entity-Framework-Julia-Lerman/dp/059652028X">Programming Entity Framework</a> </li>    <li><a href="http://www.vtdotnet.org/">Vermont .NET User Group</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/ff714955.aspx">Testability and Entity Framework 4.0</a> </li>    <li><a href="http://www.llblgen.com/defaultgeneric.aspx">LLBLGen Pro</a> </li>    <li><a href="http://weblogs.asp.net/fbouma/">Frans Bouma</a> </li>    <li><a href="http://blogs.msdn.com/b/adonet/archive/2010/07/14/ctp4codefirstwalkthrough.aspx">EF Feature CTP4 Walkthrough: Code First</a> </li>    <li><a href="http://fluentnhibernate.org/">Fluent NHiberate</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/bb126445.aspx">T4 Templates</a> </li>    <li><a href="http://nodejs.org/">Node</a> </li>    <li><a href="http://www.mongodb.org/">MongoDB</a> </li>    <li><a href="http://ravendb.net/">Raven DB</a> </li>    <li><a href="http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/">Entity Framework Vote of No Confidence</a> </li>    <li><a href="http://blog.scottbellware.com/">Scott Bellware</a> </li>    <li><a href="http://www.pluralsight-training.net/microsoft/">PluralSight</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/data/videos.aspx">MSDN Development Videos</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/magazine/ee532098.aspx?sdmr=JulieLerman&amp;sdmi=authors">Julie’s MSDN Data Points Column</a> </li>    <li><a href="http://blog.wekeroad.com/">Rob Conery</a> </li>    <li><a href="http://codebetter.com/blogs/gregyoung/">Greg Young</a> </li>    <li><a href="http://www.ndc2010.no/">Norwegian Developers Conference</a> </li>    <li><a href="http://www.domainlanguage.com/ddd/index.html">Eric Evans</a> </li>    <li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4e094902-aeff-4ee2-a12d-5881d4b0dd3e&amp;displaylang=en">Entity Framework 4 CTP 4</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx">ScottGu’s post on Entity Framework 4 Code-First with CTP 4</a> </li>    <li><a href="http://thedatafarm.com/blog/data-access/what-i-rsquo-m-loving-about-the-newest-iteration-of-ef-code-first-in-ctp4/">Julie’s post: What I’m Loving in Entity Framework 4 CTP 4</a> </li>    <li><a href="http://en.wikipedia.org/wiki/List_of_slang_terms_for_police_officers">List of slang terms for police officers</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0088-Julie-Lerman-on-Entity-Framework-4.mp3">Herding Code 88: Julie Lerman on Entity Framework 4</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0088-Julie-Lerman-on-Entity-Framework-4.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 87: Jeff Atwood on Area 51 and Stack Overflow</title>
    <link>https://herdingcode.com/herding-code-87-jeff-atwood-on-area-51-and-stack-overflow/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-87-jeff-atwood-on-area-51-and-stack-overflow/</guid>
    <pubDate>Thu, 08 Jul 2010 22:56:55 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk with Jeff Atwood about his new Area 51 venture, the running of Stack Overflow , the community of Q &amp; A sites, and memories of the gl</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 87</strong></p>
<p>This week on Herding Code, the guys talk with Jeff Atwood about his new <a href="http://area51.stackexchange.com/">Area 51</a> venture, the running of <a href="http://stackoverflow.com/">Stack Overflow</a>, the community of Q &amp; A sites, and memories of the <a href="http://en.wikipedia.org/wiki/Glockenspiel">glockenspiel</a>.</p>  <ul>   <li>Jeff walks us through the genesis of Stack Overflow and how it begot Server Fault, Super User, Stack Exchange and now Area 51. </li>    <li>Jeff explains Area 51 and the democratic process around establishing a knowledge-based site.&#160; The guys talk about the old Stack Exchange pricing model and how Area 51’s approach is entirely different. </li>    <li>Kevin asks if there’s a concern that Area 51 will have a geek skew – especially since there’s likely a draw from the existing geek ghetto. </li>    <li>Scott K asks about bringing experts involvement into communities.&#160; For example, including Alton Brown in a cooking site. </li>    <li>Jon and Jeff talk about the model of selling software and the magical wonderland that is Coding Horror. </li>    <li>Jeff talks about the <a href="http://stackapps.com/">Stack Overflow API</a> and the <a href="http://blog.stackoverflow.com/2010/05/stack-exchange-api-contest/">Stack Exchange API Contest</a>.&#160; There are PRIZES!&#160; The guys consider when an API is necessary and what APIs can provide.&#160; Did somebody say community-built iPhone application for Stack Overflow?&#160; </li>    <li>Jon asks if the Stack Overflow API will support OData.&#160; Jeff answers “yes”, and then the conversation turns to talk of data analysis and the economics of Q &amp; A sites. Jeff gets back to the OData, “the Sharepoint of sharing data on the web”, and points us to the <a href="http://odata.stackexchange.com/">OData web UI which queries current SO data dump</a>. </li>    <li>Scott K notes that Stack Overflow is optimized for answerers and asks Jeff for his comments on the <a href="http://robertelwell.blogspot.com/2010/06/stack-overflow-fatigue.html">Stack Overflow Fatigue</a> article.&#160; Jeff talks about site popularity, community/user issues which don’t occur on smaller sites, and moderation tools. </li>    <li>Jon asks about expertise and tag-based badges and comments that reputation is self-correcting.&#160; Jeff stresses that the site is really optimized for those who are the best communicators and not necessarily those who are most knowledgeable. </li>    <li>Kevin asks how Jeff responds to folks who have no chance of gaining enough critical mass to have their interests manifest into a Area 51 site.&#160; Jeff shares his thoughts on community growth and launching and supporting sites with love.&#160; </li>    <li>Jeff talks about open source, driving forward and evolving his sites and the problem with trying to be all things to all people. </li>    <li>Jeff fields Twitter questions about Stack Overflow SQL scalability, Stack Overflow’s testing and deployment story and how Jeff’s role has changed with the introduction of many new faces working on the app.&#160; This triggers conversations about hosting on the Microsoft platform, the good and bad of Bizspark, the benefits of servers/hardware being cheap and general happiness with the stack.&#160; Jeff also speaks to continuous integration and argues against unit testing all features.&#160; Jeff speaks of the pointy-haired boss, Metcalfe’s Law, the quite guy problem and how to work with distributed teams. </li>    <li>The show wraps with Jeff sharing his dependence on human unit tests, cheating, optimizing for the “mistake fixing” and Stack Overflow’s loose web development process. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://stackoverflow.com/users/1/jeff-atwood">Jeff Atwood</a> </li>    <li><a href="http://stackoverflow.com/users/4/joel-spolsky">Joel Spolsky</a> </li>    <li><a href="http://stackoverflow.com/users/3/jarrod-dixon">Jarrod Dixon</a> </li>    <li><a href="http://stackoverflow.com/users/2/geoff-dalgas">Geoff Dalgas</a> </li>    <li><a href="http://area51.stackexchange.com/">Area 51</a> </li>    <li><a href="http://www.stackoverflow.com">Stack Overflow</a> </li>    <li><a href="http://www.serverfault.com">Server Fault</a> </li>    <li><a href="http://www.superuser.com">Super User</a> </li>    <li><a href="http://stackexchange.com/">Stack Exchange</a> </li>    <li><a href="http://www.altonbrown.com/">Alton Brown</a> </li>    <li><a href="http://creativecommons.org/">Creative Commons</a> </li>    <li><a href="http://www.anthonybourdain.net/">Anthony Bourdain</a> </li>    <li><a href="http://www.danpink.com/">Daniel Pink</a> </li>    <li><a href="http://www.shirky.com/">Clay Shirky</a> </li>    <li><a href="http://stackapps.com/">Stack Overflow API</a>, <a href="http://blog.stackoverflow.com/2010/05/stack-exchange-api-contest/">Stack Exchange API Contest</a> </li>    <li><a href="http://stackoverflow.com/users/80572/kevin-montrose">Kevin Montrose</a> </li>    <li><a href="http://codebetter.com/blogs/">Code Better</a> </li>    <li><a href="http://stackprinter.appspot.com/">Stackprinter</a> </li>    <li><a href="http://www.hanselman.com/blog/">Scott Hanselman</a> </li>    <li><a href="http://www.odata.org/">OData</a> </li>    <li><a href="http://www.clearbits.net/">ClearBits</a> </li>    <li><a href="http://odata.stackexchange.com/">Stack Exchange OData Web UI</a> </li>    <li><a href="http://www.microsoft.com/windowsazure/">Azure</a> </li>    <li><a href="http://robertelwell.blogspot.com/2010/06/stack-overflow-fatigue.html">Stack Overflow Fatigue, Robert Elwell</a> </li>    <li><a href="http://steve-yegge.blogspot.com/">Steve Yegge</a> </li>    <li><a href="http://parents.berkeley.edu/">Berkeley Parents Network</a> </li>    <li><a href="http://twitter.com/strickland">@strickland</a> </li>    <li><a href="http://twitter.com/alexangas">@alexangas</a> </li>    <li><a href="http://www.microsoft.com/bizspark/">Bizspark</a> </li>    <li><a href="http://labs.google.com/papers/bigtable.html">Bigtable</a> </li>    <li><a href="http://diditwith.net/">Dustin Campbell</a> </li>    <li><a href="http://stackoverflow.com/users/91/michael-stum">Michael Stum</a> </li>    <li><a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Metcalfe's_law">Metcalfe's Law</a> </li>    <li><a href="http://tirania.org/blog/">Miguel de Icaza</a> </li>    <li><a href="http://www.codinghorror.com/blog/2010/05/on-working-remotely.html">On Working Remotely</a>, <a href="http://www.codinghorror.com/blog/">Coding Horror</a> </li>    <li><a href="http://stackoverflow.com/users/115866/balpha">Ben Dumke</a> </li>    <li><a href="http://www.webcamps.ms/">Web Camps</a> </li>    <li><a href="http://haacked.com/archive/2010/06/06/is-arrogance-a-factor-in-success.aspx">Is Arrogance a Factor of Success?</a>, <a href="http://haacked.com/">Phil Haack</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0087-Jeff-Atwood-on-Area-51-and-Stack-Overflow.mp3">Herding Code 87: Jeff Atwood on Area 51 and Stack Overflow</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0087-Jeff-Atwood-on-Area-51-and-Stack-Overflow.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 86: Saqib Shaikh on Accessibility and Developing with Limited Sight</title>
    <link>https://herdingcode.com/herding-code-86-saqib-shaikh-on-accessibility-and-developing-with-limited-sight/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-86-saqib-shaikh-on-accessibility-and-developing-with-limited-sight/</guid>
    <pubDate>Sun, 27 Jun 2010 12:12:14 GMT</pubDate>
    <description><![CDATA[<p>While at Web Camps London, Jon talks to Saqib Shaikh about how he&apos;s able to develop with limited sight and what developers can do to make our applications more accessible. Saqib</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 86</strong></p>
<p>While at Web Camps London, Jon talks to <a title="http://twitter.com/saqibs" href="http://twitter.com/@saqibs"></a><a title="http://twitter.com/saqibs" href="http://twitter.com/@saqibs">Saqib Shaikh</a></a> about how he's able to develop with limited sight and what developers can do to make our applications more accessible. </p>  <ul>   <li>Saqib talks about his role on the Bing Team, data mining and deep links. </li>    <li>Jon and Saqib talk about solving problems with a little help from Twitter. </li>    <li>Saqib explains the function of a screen reader and how some people can listen to computers really fast. </li>    <li>Jon asks about common frustrations around accessibly when web browsing. Jon considers the tie-in between SEO and accessibility.&#160; The guys dive a little deeper into structuring information, images vs text and learning the few basics. </li>    <li>Jon asks if there's a way to do accessibility analysis? Saqib points to the "Check Accessibility." option which is available when right-clicking on the web project in VS 2010.&#160; (It's there. I checked.) </li>    <li>Jon and Saqib talk about coding with limited sight. Saqib shares his general techniques. </li>    <li>The conversation continues with talk about Microsoft product development and the importance placed on accessibility. </li>    <li>The show wraps with Saqib introducing the term "Universal Design" of all things.&#160; As a developer, you want to make your applications for the largest number of people to use. Just keep in mind that "there's a lot of people in this world, and they're all a little bit different." "It's about making cool stuff for a lot of people." </li> </ul>  <p>Show Links: </p>  <ul>   <li><a title="http://twitter.com/saqibs" href="http://twitter.com/@saqibs"></a><a title="http://twitter.com/saqibs" href="http://twitter.com/@saqibs">Saqib Shaikh</a></a> </li>    <li><a href="http://bing.com">Bing</a> </li>    <li><b><a href="http://www.freedomscientific.com/products/fs/jaws-product-page.asp">JAWS (an acronym for Job Access With Speech) S<font color="#acb613">creen Reader</font></a></b> </li>    <li><a href="http://www.iis.net/download/seotoolkit">SEO Toolkit</a> </li>    <li><a href="http://www.w3.org/WAI/intro/aria">ARIA</a> </li>    <li><a href="http://en.wikipedia.org/wiki/HTML5">HTML5</a> </li>    <li><a href="http://www.clintnelson.com/">Clint Nelson</a> from <a href="http://startupweekend.org/">Startup Weekend</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0086-Saqib-Shaikh-on-Accessibility-and-Developing-With-Limited-Sight.mp3">Herding Code 86: Saqib Shaikh on Accessibility and Developing with Limited Sight</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0086-Saqib-Shaikh-on-Accessibility-and-Developing-With-Limited-Sight.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 85: Clint Nelsen on Startup Weekend</title>
    <link>https://herdingcode.com/herding-code-85-clint-nelsen-on-startup-weekend/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-85-clint-nelsen-on-startup-weekend/</guid>
    <pubDate>Sun, 27 Jun 2010 12:11:13 GMT</pubDate>
    <description><![CDATA[<p>While at Web Camps London, Jon grabs a quick 15 minute interview with Clint Nelsen to talk about Startup Weekend . Clint gives the elevator pitch and a brief history of Startup</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 85</strong></p>
<p>While at <a href="http://www.webcamps.ms/">Web Camps</a> London, Jon grabs a quick 15 minute interview with Clint Nelsen to talk about <a href="http://startupweekend.org/">Startup Weekend</a> .</p>  <ul>   <li>Clint gives the elevator pitch and a brief history of Startup Weekend. </li>    <li>Jon talks about how they are incorporating Startup Weekend into Web Camps. The guys talk about project implementation. </li>    <li>Clint talks about Startup Weekend growth, reach and staff and facilitator involvement.&#160; Clint talks about the management aspects of Startup Weekend. </li>    <li>Jon asks the types of application which Startup Weekenders are pitching. The guys talk about monetizing iPhone and iPad applications and Jon asks about Windows 7 Phone apps. </li>    <li>Clint talks about the benefit of having developers at Startup Weekend knowing a common framework/language. </li>    <li>Jon asks about Startup Weekend success stories like <a href="http://twitpay.com/">Twitpay</a> and <a href="http://www.foodspotting.com/">Foodspotting</a>. </li>    <li>Clint talks about community building, relationships, launch support and current startup funding ratio around 5%. </li>    <li>Client and Jon talk about startup thinking in the Microsoft community and building a business around MS technologies. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://startupweekend.org/">Startup Weekend</a> </li>    <li><a href="http://clintnelsen.com/">Clint Nelsen</a> / <a title="http://twitter.com/clintnelsen" href="http://twitter.com/@clintnelsen">@clintnelsen</a> </li>    <li><a href="http://marcnager.com">Marc Nager</a> </li>    <li><a href="http://twitter.com/peignoir">Franck Nouyrigat</a> </li>    <li><a href="http://www.webcamps.ms/">Web Camps</a> </li>    <li><a href="http://twitpay.com/">Twitpay</a> </li>    <li><a href="http://www.foodspotting.com/">Foodspotting</a> </li>    <li><a href="http://www.microsoft.com/bizspark/">Microsoft Bizspark</a> </li>    <li><a href="http://sxsw.com/interactive">SXSW (South by Southwest)</a> </li>    <li><a href="https://herdingcode.com/">HERDING CODE EPISODE 7: WHY DON'T STARTUPS RUN ON MICROSOFT?</a> </li>    <li><a href="http://unleashingideas.org/">Global Entrepreneurship Week</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0085-Clint-Nelsen-on-Startup-Weekend.mp3">Herding Code 85: Clint Nelson on Startup Weekend</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0085-Clint-Nelsen-on-Startup-Weekend.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 84: Ex-Microsoft Developer Panel with Mike Moore, Jeff Cohen, and Scott Bellware</title>
    <link>https://herdingcode.com/herding-code-84-ex-microsoft-developer-panel-with-mike-moore-jeff-cohen-and-scott-bellware/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-84-ex-microsoft-developer-panel-with-mike-moore-jeff-cohen-and-scott-bellware/</guid>
    <pubDate>Sun, 27 Jun 2010 12:10:48 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk to Jeff Cohen, Mike Moore, and Scott Bellware about why and how they&apos;ve moved away from Microsoft development and into the Ruby communit</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 84</strong></p>
<p>This week on Herding Code, the guys talk to Jeff Cohen, Mike Moore, and Scott Bellware about why and how they've moved away from Microsoft development and into the Ruby community.</p>  <ul>   <li>K Scott asks the guests about why they switched. Jeff talks about how his switch from desktop development on Windows to Rails development started around 2005 and was primarily driven by the Ruby language itself. Mike agrees that it's all about the Ruby language. Scott B talks about how he straddles both worlds but only sees .NET as a smart choice for building Windows applications now. Scott B goes on to talk about how it's a philosophical thing for him as well, and how he prefers to work on a stack that's more purely open source. </li>    <li>Scott K talks about the dichotomy in moving from Windows to get away from a proprietary platform and then you find yourself working on a Mac. Go Debian! Scott B talks about how Vista was a tipping point for him to move to Mac. He felt like Microsoft was too focused on shipping products - even if they weren't good products. </li>    <li>Mike and Scott B talk about moving from ALT.NET to ex-.NET, and how they feel like it's fear and investments in the .NET platform that prevent more people from moving. The guys talk about the "technology treadmill." </li>    <li>Scott K talks about the problems in "dropping paygrades" in moving from being a senior .NET developer to being a junior developer on another platform. </li>    <li>Mike Moore asks why developers are investing in a technology that another company owns. Scott B says it's not about Microsoft owning .NET, it's about not being able to make decisions about where the platform is going. He says he sees Microsoft as a manufacturer of 21st century office equipment for large companies with the most influence. It works, but it can be heartbreaking when you see Microsoft moving into markets in a way that's not as elegant as existing technologies (e.g. Entity Framework) because you know that the surrounding industry will move there, and eventually your work will move there as well. The result is a technology treadmill. </li>    <li>K Scott points out that as the average developer, you're not really in charge of where Linux, Rails, or other open source platforms are heading either. Mike and Scott B clarify; it's not about ownership so much as trusting where the Rails community is going. </li>    <li>Kevin asks Jeff about some recent criticisms he's made towards Rails 3 recently. Jeff talks about all the things he likes about Rails, but says that he is disappointed that Rails is making changes designed to broaden acceptance and appeal to the enterprise. Despite that, he says that he hasn't lost faith in where Rails is headed. He brings up the relative ease of doing TDD on Rails as opposed to .NET as an example of how Rails works more like he wants to work as a developer. </li>    <li>Scott K talks about how Microsoft has a conflict of interest as a tools vendor, and how a willingness to work with other IDE's makes moving to other platforms pretty easy. </li>    <li>The conversation move towards talking about how Intellisense affects system and platform design. Other platforms like Rails are built so you don't need Intellisense to be productive. Rails was never built to sell anything, and that shows in the platform. Mike talks about how he had to leave the .NET platform to find a place where people really cared about getting from 12 lines of code to 4 lines of code. </li>    <li>Scott B talks about how Rails committers are all building Rails applications, and points out that WPF didn't get the attention it needed until Microsoft used it in Visual Studio. He then talks about how Rails will feel free to make modifications (<a href="http://en.wikipedia.org/wiki/Monkey_patch">monkey patches</a>) to Rails, which often graduate to plugins and then move into the core. The key is that this is a continuous process rather than focused on a big product release cycle. Scott B talks more about the Ruby/Rails meritocracy. </li>    <li>The conversation shifts to the entrepreneurial nature of the Ruby on Rails community. Mike talks about how development cost is a major factor and that people who will take a risk in moving to a new platform are also more likely to take a risk in business. </li>    <li>Mike and Scott B talk about how polyglot programming is much more prevalent outside of the Microsoft development community. </li>    <li>Scott B talks about how ASP.NET was positioned as a competitor to Ruby On Rails, and how the two differ. </li>    <li>K Scott asks how much the move away from .NET is based on culture and developers are looking for a new community with different values. Mike talks about how he was on the verge of leaving programming altogether when he found the Ruby community, and how it reinvigorated him. Scott B says that there are things about developing in the .NET space which drive burnout and, in turn, reduces passion in the community. Jeff talks about how stumbling on Ruby showed him that it was just a lot more fun than what he was doing in his current job. </li>    <li>Scott B talks about how the plugin experience in Rails differs from the .NET development world - where you're often waiting for services that just aren't quite there yet. </li>    <li>Mike and Scott B talk about how they like reading Ruby code. Scott B talks about how the Ruby culture places a value on making code readable to the point that it's competitive. </li>    <li>Scott K talks about how programming has become a business now, but he's always liked to learn things just because it was fun. Scott B says that the skill level in the Rails world seems to be higher, but the people are less intimidating. </li>    <li>Mike points out that many of the leaders of the Ruby community were previously leaders in the Agile community. Scott B talks about how he's seen Uncle Bob Martin moving to Rails over the past few years. </li>    <li>Scott B then talks about the problems in toolmakers who make tools but don't use them. </li>    <li>The show ends, but not really. lots of crazy speculation about starting over with a new runtime on top of .NET. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://www.jeffcohenonline.com/">Jeff Cohen</a> (<a href="http://twitter.com/jeffcohen">@jeffcohen</a>) </li>    <li><a href="http://blowmage.com/">Mike Moore</a> (<a href="http://twitter.com/blowmage">@blowmage</a>) </li>    <li><a href="http://ampgt.com/">Scott Bellware</a> (<a href="http://twitter.com/ampgt">@ampgt</a>) </li>    <li><a href="http://martinfowler.com/">Martin Fowler</a> </li>    <li><a href="http://altnetpodcast.com/">ALT.NET Podcast</a> </li>    <li><a href="http://oreilly.com/ruby/archive/rails.html">Curt Hibbs</a> </li>    <li><a href="http://www.lonestarrubyconf.com/">Lone Star Ruby Conf</a> </li>    <li><a href="http://cherrypy.org">CherryPy</a> </li>    <li><a href="http://basecamphq.com/index2">Basecamp</a> </li>    <li><a href="http://www.railsconf.com/">RailsConf</a> </li>    <li><a href="http://pragprog.com/resources">Pragmatic Programmers Resources</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/">Scott Guthrie</a> </li>    <li><a href="http://rmagick.rubyforge.org/">Rmagic</a> </li>    <li><a href="http://github.com/binarylogic/authlogic">authlogic</a> </li>    <li><a href="http://www.merbivore.com/">merb</a> </li>    <li><a href="http://agilemanifesto.org">Manifesto for Agile Software Development</a> </li>    <li><a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings">Uncle Bob Martin</a> </li>    <li><a href="http://pragdave.pragprog.com/">Dave Thomas</a> </li>    <li><a href="http://www.exampler.com/blog/">Brian Marick</a> </li>    <li><a href="http://blog.toolshed.com/">Andy Hunt</a> </li>    <li><a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">SOLID</a> </li>    <li><a href="http://pragprog.com/titles/cerailn/rails-for-net-developers">Rails for .NET Developers</a> </li>    <li><a href="http://www.softiesonrails.com/">Softies On Rails</a> </li>    <li><a href="http://mtnwestrubyconf.org/2010/">MountainWest RubyConf</a> </li>    <li><a href="http://www.agileroots.com/">Agile Roots</a> </li>    <li><a href="http://www.ndc2010.no/">Norwegian Developers Conference</a> </li>    <li><a href="http://monospace.us/">Monospace</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0084-Ex-Microsoft-Developer-Panel-with-Mike-Moore-Jeff-Cohen-and-Scott-Bellware.mp3">Herding Code 84: Ex-Microsoft Developer Panel with Mike Moore, Jeff Cohen, and Scott Bellware</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0084-Ex-Microsoft-Developer-Panel-with-Mike-Moore-Jeff-Cohen-and-Scott-Bellware.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 83: Ayende Rahien on RavenDB</title>
    <link>https://herdingcode.com/herding-code-83-ayende-rahien-on-ravendb/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-83-ayende-rahien-on-ravendb/</guid>
    <pubDate>Sun, 13 Jun 2010 00:29:56 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys talk with Ayende Rahien (a.k.a. Oren Eini) about RavenDB, a new Open Source (with a commercial option) document database for the .NET/Windows</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 83</strong></p>
<p>This week on Herding Code, the guys talk with Ayende Rahien (a.k.a. Oren Eini) about RavenDB, a new Open Source (with a commercial option) document database for the .NET/Windows platform.</p>  <ul>   <li>The shows starts with a general definition of document databases.&#160; Ayende then contrasts RavenDB with two other popular document databases, Mongo and CouchDB, and comments that RavenDB is much more similar to CouchDB than Mongo. </li>    <li>Ayende talks about how RavenDB indexes work - they're written when you store data, but not immediately after. He continues with an explanation of transactions - data is transactional, but indexes aren't. </li>    <li>Scott K brings up Node.js and asked if Ayende had looked at the event driven approach over spinning up threads. Ayende talks about how RavenDB previously worked like that, but it made debugging very painful. Instead, the architecture is now focused on the end goal - RavenDB will never make you wait for a write. </li>    <li>The guys take a question from Twitter about whether there are plans to support Mono. Ayende says yes, but outlines some of the changes that will be required to make that happen. </li>    <li>Scott K asks if traditional RDBMS performance tweaks based on moving data and indexes to other spindles are possible and useful on RavenDB. </li>    <li>Jon asks about how this relates to Reactive Extensions, and Ayende discusses how Event Sourcing works in RavenDB. </li>    <li>Jon and Scott K ask some questions about storage formats - JSON, binary serialization, etc. </li>    <li>The group digs into how Map / Reduce works.&#160; Ayende explains Map / Reduce in generally terms as well as how it pertains to RavenDB. </li>    <li>K Scott asks questions about indexing - how it's done, how indexes are defined and impacts of keeping a lot of indexes. Ayende talks about how indexes are essentially materialized views, and how the RavenDB query engine can use both LINQ and Lucene syntax. </li>    <li>K Scott asks about transaction support, embedded support, and concurrency. </li>    <li>The guys talk about the "sweet spot" for RavenDB and document databases. Ayende talks about advantages of working with a document database, and the benefits of working without a defined schema. </li>    <li>Jon asks if ORM's just go away in a document database context and the conversation moves on to talking about different architectures and development strategies that come into play when working with schema-less documents. </li>    <li>K Scott mentions that this seems like it would work really well with Aggregate Roots in Domain-Driven Design. </li>    <li>Ayende and Jon discuss how aggregate queries compare in the context of some of the inefficient queries in MVC Music Store. </li>    <li>Kevin drills a little deeper into the versioning challenges. </li>    <li>Jon asks about the use of .NET 4 features with RavenDB including the Task Library and the Expando object. Ayende talks about how they made heavy use of the Dynamic keyword and MEF in RavenDB. Basically, everything except for storage and indexing is handled via MEF. </li>    <li>Ayende talks about the extensibility points such as read and index previews. </li>    <li>Jon begs for punishment by asking for Ayende's comments on the MVC Music Store. Ayende talks about how he prefers tutorials be very explicit about what they're not going to cover in detail. He recommends completely removing details which aren't the focus of the tutorial. Then he goes on to talk about how things like shopping carts just seem to work more smoothly with document storage rather than relational databases. </li>    <li>Jon asks about the licensing models. Ayende talks about how people were unhappy with the initial pricing model due to the differing deployment expectations, and how he worked with customers to establish a pricing model that works for everyone. </li>    <li>Ayende teaches the gang the term "Chinese Interesting." </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://ayende.com/blog/">Ayende's Blog</a> </li>    <li><a href="http://ravendb.net/">RavenDB</a>&#160; </li>    <li><a href="http://ayende.com/Blog/archive/2010/03/14/map-reduce-ndash-a-visual-explanation.aspx">Map / Reduce - A Visual Explanation</a> </li>    <li><a href="http://www.codeproject.com/KB/cs/RavenDBIntro.aspx">RavenDB - An Introduction</a> </li>    <li><a href="http://nhforge.org/Default.aspx">NHibernate</a> </li>    <li><a href="http://www.asp.net/mvc/samples/mvc-music-store">Mvc Music Store</a> </li>    <li><a href="http://en.wikipedia.org/wiki/NoSQL">NoSQL</a> </li>    <li><a href="http://www.mongodb.org/">MongoDB</a> </li>    <li><a href="http://couchdb.apache.org/">CouchDB</a> </li>    <li><a href="http://domaindrivendesign.org/">Domain-Driven Design</a>, <a href="http://en.wikipedia.org/wiki/Domain-driven_design">Aggregate Roots</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx">Reactive Extensions for .NET (Rx)</a> </li>    <li><a href="http://lucene.apache.org/lucene.net/">Lucene.NET</a> </li>    <li><a href="http://mef.codeplex.com/">MEF</a> </li>    <li><a href="http://twitter.com/robconery">Rob Conery</a> </li>    <li><a href="http://codebetter.com/blogs/glenn.block/default.aspx">Glenn Block</a> </li>    <li><a href="http://twitter.com/averyj">James Avery</a> </li>    <li><a href="http://tinyclouds.org/">Ryan Dahl</a>, <a href="http://nodejs.org/">Node.js</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/ms684493(EXCHG.10).aspx">Extensible Storage Engine</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0083-Ayende-Rahien-on-RavenDB.mp3">Herding Code 83: Ayende Rahien on RavenDB</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0083-Ayende-Rahien-on-RavenDB.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 82: Cory Foy and Will Green Compare .NET and Ruby Development</title>
    <link>https://herdingcode.com/herding-code-82-cory-foy-and-will-green-compare-net-and-ruby-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-82-cory-foy-and-will-green-compare-net-and-ruby-development/</guid>
    <pubDate>Sun, 06 Jun 2010 22:37:59 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Cory Foy and Will Green join the guys to discuss general differences between .NET and Ruby development approaches. Is the grass always greener on the</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 82</strong></p>
<p>This week on Herding Code, Cory Foy and Will Green join the guys to discuss general differences between .NET and Ruby development approaches. Is the grass always greener on the other side? Listen in on this week's talk about how languages, frameworks, tools and cultures shape the way we implement .NET and Ruby solutions and judge for yourself!&#160; </p>  <ul>   <li>Kevin kicks off the conversation noting differences between design patterns and best practices in the .NET and Ruby worlds. Kevin opens up a discussion by calling out the .NET developer obsession with persistence ignorance versus the use of the ActiveRecord pattern found in Ruby on Rails.&#160; </li>    <li>Cory talks about basic CRUD applications vs complex domains and how applications tends to model themselves after organizational structure.&#160; Often times you will find .NET code tends to be more complex whereas simpler domains are often represented in Ruby code. </li>    <li>Kevin asks about domain-driven design. Cory talks about the expressiveness of Ruby code and how the introduction of the dynamic keyword makes expressiveness a little easier in .NET.&#160; Will talks about Ruby mixins facilitating a different development approach.&#160; Will also comments on the ceremony of creating .NET vs Ruby classes and how easily you can express the business concerns in Ruby. </li>    <li>Scott K talks about his general impressions of Rails - focus on the presentation layer first rather than a DDD approach which would focus on the model first. </li>    <li>K Scott talks about manifest typing and states that there is an importance placed on types rather than behaviors in .NET coding.&#160; Will calls out the fact that in .NET coding we often are most interested in what an object is whereas in Ruby we primarily care about what an object can do.&#160; This ties back to static typing vs duck typing. </li>    <li>Cory speaks to outside-in development in Ruby, exposure to TDD and learning Rails with Cucumber from the beginning.&#160; </li>    <li>Jon acknowledges the language and framework differences and asks how cultural differences between the two development camps might drive development practices.&#160; K Scott talks about .NET developer dependence on the compiler rather than working with customers. </li>    <li>Kevin talks about the "need" for viewmodels in .NET MVC whereas models are being passes around throughout a Rails application. Cory talks about the power of meta-programming in Ruby and the shift between classes being parsed in .NET vs classes being executed in Ruby.&#160; He also speaks to how fundamental constructs will shape a development strategy. </li>    <li>Cory talks more about meta-programming and convention over configuration. </li>    <li>Kevin talks about the "No Magic String" rule, static analysis, and Resharper-driven development.&#160; Will states you don't really need refactoring tools or even an IDE when coding Ruby. Cory talks about the emphasis on writing tests for Ruby code and how this acts as a replacement for the static code analysis testing you might get from the compiler. Scott K speculates that there's so much more code in C# so there's a larger need for refactoring tools.&#160; </li>    <li>Cory ask why we are still not testing in the .NET world? Why aren't we doing migrations?&#160; Why are we so focused merely on what is available in the Visual Studio IDE?&#160; Scott K feels .NET developers are still unsure of what they should test.&#160; Scott K also thinks it is hard to mock stuff and .NET developers aren't used to writing decoupled code. Will speaks to the fact that Ruby all classes are open all the time and nothing is sealed. </li>    <li>For better or worse, Jon notes that it's easy to think of the compiler as the first .NET test and, though it could be considered a crutch, the IDE provides one with a lot valuable coding help with intellisence. Cory talks about craftsmanship and how the primary audience for IDE support and refactoring tools is not the TDD developer. </li>    <li>Kevin speaks to the fact there's no need for an IoC container in Ruby and Cory shares the dangers of becoming married to any framework in .NET development. </li>    <li>Jon asks if Ruby development can become unwieldy because it's so easy to get started.&#160; </li>    <li>Scott K asks about new language features (for examples, lambdas, dynamic keyword, optional parameters) and how this adds to the complexity of .NET development. Will talks about complexity vs power and Cory adds that new features allows developers to approach problems differently. </li>    <li>Kevin asks about techniques which can be used with the dynamic keyword.&#160; Scott K talks about the addition of Eval() in C# 5.&#160; Jon jokes about the "Compiler as a Disservice."&#160; Cory talks about fundamental challenges with Dynamic and Eval() in a statically typed language. </li>    <li>The guys talk about dependency injection. </li>    <li>Cory talks more about craftsmanship and code quality. Will talks about values and taking a stance when promoting a frameworks and points some blame at Microsoft for giving .NET development dozens of ways to complete a single task. </li>    <li>Kevin asks about the focus around Behavior-Driven, integration testing in Ruby rather opposed to the fine-grained unit testing approach often found in .NET development.&#160; Will speaks to the outside-in testing approach but also the importance of unit testing in Ruby. </li>    <li>Scott K asks if IronRuby makes .NET development easier. </li>    <li>The show wraps with Will and Cory pimping their up-coming presentations in Florida and Norway. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.coryfoy.com/">Cory Foy's Blog</a>, <a href="http://twitter.com/cory_foy">@cory_foy</a> </li>    <li><a href="http://hotgazpacho.org/">Will Green's Blog</a>, <a href="http://twitter.com/hotgazpacho">@hotgazpacho</a> </li>    <li><a href="http://ironruby.net/">IronRuby</a> </li>    <li><a href="http://blog.coryfoy.com/2010/03/ironruby-for-the-net-developer-presentation-from-mix10/">IronRuby for the .NET Developer Presentation from MIX10</a> </li>    <li><a href="http://www.dayofruby.com/">Day of Ruby</a> </li>    <li><a href="http://cukes.info/">Cucumber</a> </li>    <li><a href="http://code.google.com/p/fubumvc/">FubuMVC</a> </li>    <li><a href="http://www.domainlanguage.com/ddd/index.html">Eric Evans</a> </li>    <li><a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings">Uncle Bob</a> </li>    <li><a href="http://www.coreyhaines.com/about_corey.html">Cory Haines</a> </li>    <li><a href="http://www.meetup.com/tampa-rb/calendar/13481809/">The Tampa Ruby Brigade, Why use IronRuby over MRI/JRuby?</a> </li>    <li><a href="http://xp2010.org/">International Conference on Agile Software Development</a>, <a href="http://innovationgames.com/">Innovation Games</a> </li>    <li><a href="http://agile2010.agilealliance.org/">Agile 2010 Conference</a> </li>    <li><a href="http://en.wikipedia.org/wiki/WinDbg">WinDBG</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0082-Cory-Foy-and-Will-Green-Compare-NET-and-Ruby-Development.mp3">Herding Code 82: Cory Foy and Will Green Compare .NET and Ruby Development</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0082-Cory-Foy-and-Will-Green-Compare-NET-and-Ruby-Development.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 81: Simplicity, balance, and focus in teaching software development</title>
    <link>https://herdingcode.com/herding-code-81-simplicity-balance-and-focus-in-teaching-software-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-81-simplicity-balance-and-focus-in-teaching-software-development/</guid>
    <pubDate>Tue, 25 May 2010 07:38:19 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys discuss compare notes on how to teach software development topics. Is hands-on instruction key? How much should you simplify to focus on mech</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 81</strong></p>
<p>This week on Herding Code, the guys discuss compare notes on how to teach software development topics. Is hands-on instruction key? How much should you simplify to focus on mechanics? How do you teach, and how do you like to learn?</p>  <ul>   <li>Jon talks about his impressions on the effectiveness of hands-on learning at Web Camp Toronto.</li>    <li>K. Scott questions if people really learn at Code Camps, and Scott K. talks about hack-a-thons at Code Camps.</li>    <li>We talk about open source contributions as development. Jon demonstrates that he's bad at doing math while he talks.</li>    <li>Jon asks Scott K. about what works for him with his training classes with Pluralsight.</li>    <li>We all talk about the MVC Music Store, and the gaps between marketing, introductory training, and advanced training.</li>    <li>Jon and K. Scott talk about the difficulty in finding the correct focus and simplicity level in introductory training.</li>    <li>Jon talks about the mistake he's made several times in not clarifying the level of content he's presenting.</li>    <li>Kevin talks about how he expects to see unit tests in any samples, but Scott K. says that won't save you from public shame.</li>    <li>Scott K. asks if we should be focusing on concepts and "why?" questions rather than products or frameworks.</li>    <li>Jon and Scott K. talk about the fun of looking at the ASP.NET MVC source code.</li>    <li>Kevin comments on the difference in complexity he sees in .NET code and Ruby source code. Scott K. talks about how Fubu MVC code is pretty easy to read, too.</li>    <li>Jon asks about the difficulty of doing "real world" samples, and K. Scott asks whose real world we're talking about.</li>    <li>K. Scott drops a surprise mini-lightning round on us with a question about the effectiveness of video as a learning tool.</li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://webcamps.ms">Web Camps</a></li>    <li><a href="http://mvcmusicstore.codeplex.com/">MVC Music Store</a></li>    <li><a href="http://live.visitmix.com/MIX10/Sessions/EX06">Robby Ingebretsen's talk at MIX10</a></li>    <li><a href="http://aspnet.codeplex.com/SourceControl/list/changesets">ASP.NET MVC source code</a></li>    <li><a href="http://code.google.com/p/fubumvc/">FubuMVC</a></li>    <li><a href="http://en.wikipedia.org/wiki/Beatrix_of_the_Netherlands">Beatrix of the Netherlands</a></li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0081-Simplicity-balance-and-focus-in-teaching-software-development.mp3">Herding Code 81: Simplicity, balance, and focus in teaching software development</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0081-Simplicity-balance-and-focus-in-teaching-software-development.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 80: RxJS with Jeffrey van Gogh and Matt Podwysocki</title>
    <link>https://herdingcode.com/herding-code-80-rxjs-with-jeffrey-van-gogh-and-matt-podwysocki/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-80-rxjs-with-jeffrey-van-gogh-and-matt-podwysocki/</guid>
    <pubDate>Wed, 19 May 2010 01:10:27 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys speak with Jeffrey van Gogh and Matt Podwysocki about the Reactive Extensions for Javascript. Matt talks about how he&apos;s been involved with Rx</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 80</strong></p>
<p>This week on Herding Code, the guys speak with Jeffrey van Gogh and Matt Podwysocki about the Reactive Extensions for Javascript.</p>  <ul>   <li>Matt talks about how he's been involved with RxJS. </li>    <li>Jeffrey talks about how RxJS and Reactive Extensions came out of the the Volta project. </li>    <li>Matt talks about how RxJS simplifies the callback model in Javascript. </li>    <li>Jeffery adds on how this also has benefits to asynchronous operations. </li>    <li>Jon asks about how this works with queries over events which will happen in the future. </li>    <li>Mat talks about how this works with jQuery's bind and live events. </li>    <li>Jon asks the standard question about querying over mouse move events. Matt and Jeffrey use the example to explain about how composable operations over events can be really powerful. </li>    <li>Jon asks how Reactive Extensions relates to functional reactive programming, and to functional programming in general. </li>    <li>Kevin asks about how RxJS interoperates with jQuery. </li>    <li>We take questions from Twitter about jQuery integration and use of RxJS to manage script loading and script scoping. </li>    <li>Kevin asks for some concrete usage examples. </li>    <li>Kevin asks about the library size and the overall release status. </li>    <li>Jon asks about Jeffrey's blog posts on using RxJS with Node.js and Script#. </li>    <li>We talk about Matt's extensive blog post series on RxJS. </li>    <li>We talk about recent RxJS presentations: Erik Meijer's talk at MIX10, Jeffrey's talk at JSConf, and Matt's at the Imagine Cup. </li>    <li>Jon asks about what exactly is involved in adding RxJS support to different Javascript libraries. </li>    <li>Scott K asks about the tradeoffs of bringing the CLR to the browser vs. bringing things like RxJS into the browser via Javascript. </li>    <li>We talk about how Javascript development has gotten easier with development environment improvements, testing systems, etc. </li>    <li>Matt talks about how it's often easier to do things in Javascript than in a statically typed language like C#. </li>    <li>Scott K asks about how scope is handled in RxJS. </li>    <li>Jon asks about how the code is licensed. </li>    <li>Kevin asks about the naming conventions used in RxJS, supported browsers, release plans. </li>    <li>Jon asks about Reactive Extensions for .NET, and we talk about how it's especially useful in Silverlight. </li>    <li>Jeffery mentions that Reactive Extensions will be included in Windows Phone 7. </li>    <li>We pretend to end the show, but the discussion keeps going and K Scott joins the party. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://codebetter.com/blogs/matthew.podwysocki/default.aspx">Matt Podwysocki's Blog</a> </li>    <li><a href="http://blogs.msdn.com/jeffva/">Jeffrey van Gogh</a>, <a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx">Reactive Extensions</a>&#160; </li>    <li><a href="http://en.wikipedia.org/wiki/Microsoft_Live_Labs_Volta">Microsoft Live Labs Volta</a> </li>    <li><a href="http://jsconf.eu/2010/">JSConf EU 2010</a> </li>    <li><a href="http://blog.reybango.com/">Rey Bango's Blog</a>, <a href="http://blog.reybango.com/2010/04/21/jsconf-2010-video-interviews-with-top-javascript-developers/">JSConf 2010 - Video Interviews with Top Javascript Developers</a> </li>    <li><a href="http://developer.yahoo.com/yui/">YUI</a> </li>    <li><a href="http://280north.com/">280 North</a>, <a href="http://github.com/tolmasky/socratic">Socratic Documentation Tool</a> </li>    <li><a href="http://nodejs.org/">Node.js</a> </li>    <li><a href="http://projects.nikhilk.net/ScriptSharp">Script#</a> </li>    <li><a href="http://imaginecup.com/default.aspx">Imagine Cup</a> </li>    <li><a href="http://research.microsoft.com/en-us/um/people/emeijer/">Erik Meijer</a> </li>    <li><a href="http://www.mozilla.org/rhino/">Rhino</a> </li>    <li><a href="http://ejohn.org/">John Resig</a>, <a href="http://sizzlejs.com/">Sizzle</a> </li>    <li><a href="http://sourceforge.net/projects/websharp/">WebSharp</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0080-RxJS-with-Jeffrey-van-Gogh-and-Matt-Podwysocki.mp3">Herding Code 80: RxJS with Jeffrey van Gogh and Matt Podwysocki</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0080-RxJS-with-Jeffrey-van-Gogh-and-Matt-Podwysocki.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 79: JSConf Recap with Chris Williams, Rey Bango and Matt Podwysocki</title>
    <link>https://herdingcode.com/herding-code-79-jsconf-recap-with-chris-williams-rey-bango-and-matt-podwysocki/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-79-jsconf-recap-with-chris-williams-rey-bango-and-matt-podwysocki/</guid>
    <pubDate>Sun, 02 May 2010 07:47:12 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys speak with Chris Williams, Rey Bango and Matt Podwysocki about this year&apos;s JSConf. Chris begins the show with a conference overview which wil</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 79</strong></p>
<p>This week on Herding Code, the guys speak with Chris Williams, Rey Bango and Matt Podwysocki about this year's JSConf.</p>  <ul>   <li>Chris begins the show with a conference overview which will leave you chomping at the bit for JSConf 2011 registration to open. Hackers' Lounge. Multiple tracks. One killer speaker list. Hyper-caffeinated, hyper-intoxicated privates! Salmagundi. And lots of JavaScript! </li>    <li>The guests discuss their favorite parts of the conference. Beyond the quality of the talks, Rey and Chris both comment about the invaluable conversations which were had out-of-session in the Hacker's Lounge and at the <a href="http://jsconf.us/2010/scurvy.html">ScurvyConf</a>. Quote of the Show: "I am a firm believer of drinking beer, and shooting the poop, and when you do that, magic happens." - Chris Williams </li>    <li>Chris talks about the excitement around Tobias Schneirder's presentation on Gordon, an open source Flash runtime written in pure JavaScript. </li>    <li>The guys talk about Alex Russell and Google Chrome Frame and how IE6 must Die. </li>    <li>Chris praises Billy Hoffman's JavaScript's Evil Side presentation. </li>    <li>K Scott and Chris talk about JavaScript outside of the browser and functional programming, </li>    <li>Chris and Scott K talk about a seemingly new found interest in Server-side JS </li>    <li>Jon asks about JS library duplication in competing platforms. Rey talks about what Resig has done with Sizzle and how each library has their own niche. </li>    <li>Chris talks about the need to learn JavaScript and how we should be JavaScript developers, not just developers who use JavaScript libraries. </li>    <li>Matt teases us by mentioning that he'll be talking about Reactive Extensions on next week's Herding Code episode. </li>    <li>Jon asks which percentage of cool JavaScript stuff is just waiting on browser adoption.&#160; Chris doesn't think too much and prompts Matt talks about progressive enhancements. </li>    <li>Chris talks about the importance of security and how we shouldn't only be taught how to write good code but also how to break bad code. </li>    <li>Kevin asks what is happening with JavaScript, the language itself. </li>    <li>The show wraps with talk of diversity in computing, JSConf EU, JQuery Conference, JQuery UI 1.8 release, JavaScript conferences and craft beers in the D.C. area. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://jsconf.us/2010/">JSConf 2010</a>, <a href="http://jsconf.eu/2010/">JSConf EU 2010</a> </li>    <li><a href="http://voodootikigod.com/">Chris Williams's Blog</a>, <a href="http://twitter.com/voodootikigod">@voodootikigod</a> </li>    <li><a href="http://blog.reybango.com/">Rey Bango's Blog</a>, <a href="http://jquery.com">jQuery</a>, <a href="http://ajaxian.com">Ajaxian</a> </li>    <li><a href="http://codebetter.com/blogs/matthew.podwysocki/default.aspx">Matt Podwysocki's Blog</a> </li>    <li><a href="http://kenderson.net/">Ken Henderson</a> </li>    <li><a href="http://www.dojotoolkit.org/">Dojo</a>, <a href="http://www.prototypejs.org/">Prototype</a>, <a href="http://mootools.net/">MooTools</a>, <a href="http://developer.yahoo.com/yui/">YUI</a>, <a href="http://www.extjs.com/">ExtJs</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Brendan_Eich">Brendan Eich</a> </li>    <li><a href="http://higginsforpresident.net/">Peter Higgins</a>, <a href="http://www.dojotoolkit.org/">Dojo</a>, <a href="http://code.google.com/p/plugd/">plugd</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Salmagundi">Salmagundi</a> </li>    <li><a href="http://www.quirkey.com/">Aaron Quint</a>, <a href="http://code.quirkey.com/sammy/">Sammy.js</a>, <a href="http://www.quirkey.com/blog/2010/04/20/making-baconmaking-code-jsconf-2010/">Making Bacon / Making Code</a> </li>    <li><a href="http://damondo.com/">Tobias Schneider</a>, <a href="http://github.com/tobeytailor/gordon">Gordon</a> </li>    <li><a href="http://github.com/sproutit/greenhouse">Greenhouse</a>, <a href="http://www.sproutcore.com/">Sproutcore</a>, <a href="http://ajaxian.com/by/topic/sproutcore-topic">Ajaxian Post</a> </li>    <li><a href="http://alex.dojotoolkit.org/">Alex Russell</a>, <a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame</a> </li>    <li><a href="http://www.crockford.com/">Douglas Crockford</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/">Scott Guthrie</a>, <a href="http://ie.microsoft.com/testdrive/">IE9</a> </li>    <li><a href="http://narwhaljs.org/">Narwhal</a>, <a href="http://tlrobinson.net">Tom Robinson</a>, <a href="http://280north.com/">280 North</a>, <a href="http://www.blueskyonmars.com/">Kevin Dangoor</a> </li>    <li><a href="http://tinyclouds.org/">Ryan Dahl</a>, <a href="http://nodejs.org/">Node</a> </li>    <li><a href="http://code.google.com/p/v8/">V8</a> </li>    <li><a href="http://nginx.org/">nginx</a> </li>    <li><a href="http://couchdb.apache.org/">CouchDB</a> </li>    <li><a href="http://jaxer.org/">Jaxer</a>, <a href="http://helma.org/">Helma</a>, <a href="http://www.persvr.org/">Persevere</a> </li>    <li><a href="http://www.mozilla.org/rhino/">Rhino</a> </li>    <li><a href="http://webkit.org/blog/214/introducing-squirrelfish-extreme/">SquirrelFish Extreme</a>, <a href="http://www.apple.com/safari/whats-new.html#performance">Nitro</a> </li>    <li><a href="http://blogs.msdn.com/jeffva/">Jeffrey van Gogh</a>, <a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx">Reactive Extensions</a> </li>    <li><a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a> </li>    <li><a href="http://zaa.ch/past/2009/12/28/jison_an_api_for_creating_parsers_in_javascript_/">Jison</a> </li>    <li><a href="http://www.280north.com/">Francisco Tolmasky</a>, <a href="http://github.com/tolmasky/socratic">Socratic Documentation Tool</a> </li>    <li><a href="http://cappuccino.org/">Cappuccino</a>, <a href="http://cappuccino.org/learn/tutorials/objective-j-tutorial.php">Objective-J</a> </li>    <li><a href="http://rossboucher.com">Ross Boucher</a>, </li>    <li><a href="http://ejohn.org/">John Resig</a>, <a href="http://sizzlejs.com/">Sizzle</a> </li>    <li><a href="http://javascript.nwbox.com/NWMatcher/">NWMatcher</a>, <a href="http://download.dojotoolkit.org/release-1.3.0b3/dojo-release-1.3.0b3/dojo/_base/query.js">Acme (aka query.js)</a> </li>    <li><a href="http://allyoucanleet.com/">John-David Dalton</a>&#160; </li>    <li><a href="http://sstephenson.us/">Sam Stephenson</a> </li>    <li><a href="http://www.slideshare.net/JennLukas/javascript-and-web-standards-sitting-in-a-tree">JavaScript and Web Standards Sitting in a Tree</a>, <a href="http://jennlukas.com/">Jenn Lukas</a> </li>    <li><a href="http://zoompf.com/">Billy Hoffman</a> </li>    <li><a href="http://ha.ckers.org">ha.ckers.org</a>, <a href="http://xssed.com/pagerank">xssed.com</a> </li>    <li><a href="http://blog.reybango.com/2010/04/21/jsconf-2010-video-interviews-with-top-javascript-developers/">JSConf 2010 - Video Interviews with Top Javascript Developers</a> </li>    <li><a href="http://makinde.adeagbo.com/">Makinde Adeagbo</a> </li>    <li><a href="http://haacked.com/archive/2009/06/25/json-hijacking.aspx">JSON Hijacking</a>, <a href="http://haacked.com/">Phil Haack</a> </li>    <li><a href="http://en.wikipedia.org/wiki/HTML5">HTML5</a> </li>    <li><a href="http://en.wikipedia.org/wiki/ECMAScript">ECMAScript5/Harmony</a> </li>    <li><a href="http://twitter.com/sarajchipps">@SaraJChipps</a> </li>    <li><a href="http://jsconf.posterous.com/the-community-that-cares">JSConf Diversity in Computing Drive</a>&#160; </li>    <li><a href="http://events.jquery.org/2010/sf-bay-area/">JQuery Conference</a> </li>    <li><a href="http://jqueryui.com/">JQueryUI</a> </li>    <li><a href="http://www.churchkeydc.com/">ChurchKey</a>, <a href="http://www.dogfish.com/">Dogfish Head</a>, <a href="http://www.carpoolweb.com/CPH/">Carpool</a>, <a href="http://www.rusticorestaurant.com/bar/bar.html">Rustico</a> </li>    <li><a href="http://groups.google.com/group/novalanguages">NoVALang</a> </li>    <li><a href="https://nosqleast.com/2009/">nosqleast</a> </li>    <li><a href="http://twitter.com/sh1mmer">Tom Hughes-Croucher</a> </li>    <li><a href="http://www.swdc2009.com/index_en.html">Scandinavian Web Developer Conference (SWDC)</a> </li>    <li><a href="http://texasjavascript.com/">TXJS</a> (Texas JavaScript Conference) </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0079-JSConf-Recap-with-Chris-Williams-Rey-Bango-and-Matt-Podwysocki.mp3">Herding Code 79: JSConf Recap with Chris Williams, Rey Bango and Matt Podwysocki</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0079-JSConf-Recap-with-Chris-Williams-Rey-Bango-and-Matt-Podwysocki.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 78: Ruby on Rails, View Engines, Web Security, Section 3.3.1 and Visual Studio 2010 with Rob Conery</title>
    <link>https://herdingcode.com/herding-code-78-ruby-on-rails-view-engines-web-security-section-3-3-1-and-visual-studio-2010-with-rob-conery/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-78-ruby-on-rails-view-engines-web-security-section-3-3-1-and-visual-studio-2010-with-rob-conery/</guid>
    <pubDate>Tue, 20 Apr 2010 21:36:37 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Jon, Kevin, Scott K and Rob Conery discuss Ruby on Rails, using dynamic languages to write views, web security, advanced javascript techniques, recent</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 78</strong></p>
<p>This week on Herding Code, Jon, Kevin, Scott K and Rob Conery discuss Ruby on Rails, using dynamic languages to write views, web security, advanced javascript techniques, recent Twitter news, Section 3.3.1 and the official release of Visual Studio 2010. </p>  <ul>   <li>The show begins with talk of Kevin's recent dabbling into Ruby on Rails. The guys talk about Ruby 2 vs Ruby 3, how MS developers love their IDEs and finally Rack. </li>    <li>Jon mentions Jimmy Shimenti's demo of Visual Studio 2010 File &gt; New &gt; Ruby on Rails with IronRuby. </li>    <li>The conversation segues into the benefits of trying out other platforms and how trying out other platforms doesn't necessarily mean one is jumping ship. </li>    <li>Kevin shares why he has a hard time getting excited about IronRuby. </li>    <li>Scott K introduces a recent Alt.NET Seattle Fishbowl Topic - Is C# is the best language for writing views or should dynamic languages be used instead? </li>    <li>Rob Conery shares why he loves the Haml view engine and Kevin speaks to why he really likes Spark? </li>    <li>The guys talk about html encoding and XSS vulnerabilities. </li>    <li>The guys consider advanced techniques one can implement with jQuery and how <u>really</u> learning javascript can affect the way one writes C# code. </li>    <li>Scott K briefs us on his recent Alt.Net open space presentation on Node.js. </li>    <li>The guys passionately discuss the business of Twitter, hovercards, Twitter's @Anywhere API, the Library of Congress, and the importance of security and password management. </li>    <li>The guys talks about why Apple Changed Section 3.3.1. </li>    <li>The guys talk about the Visual Studio 2010 installation and developer experience. </li>    <li>Rob pimps <a href="http://tekpub.com/">TekPub</a> with background music . </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.wekeroad.com/">Rob's Blog</a> </li>    <li><a href="http://tekpub.com/">TekPub</a> </li>    <li><a href="http://www.jetbrains.com/ruby/">Jetbrains RubyMine</a> </li>    <li><a href="http://www.jetbrains.com/resharper/">ReSharper</a> </li>    <li><a href="http://blog.jimmy.schementi.com/">Jimmy Schementi</a>, <a href="http://github.com/jschementi/ironruby/tree/master/Merlin/Main/Hosts/IronRuby.Rack">IronRuby.Rack</a> </li>    <li><a href="http://twitter.com/panesofglass">Ryan Riley (@panesofglass)</a></li>    <li><a href="http://blog.webintellix.com/2009/10/how-to-use-cucumber-with-net-and-c.html">How-to: Use Cucumber with .NET and C# under IronRuby</a> </li>    <li><a href="http://rspec.info/">RSpec</a> </li>    <li><a href="http://code.google.com/p/nhaml/wiki/Introduction">NHaml</a>, <a href="http://haml-lang.com/">Hmal</a> </li>    <li><a href=" http://sparkviewengine.com/">Spark View Engine</a> </li>    <li><a href="http://ha.ckers.org/xss.html">ha.ckers.org xss cheat sheet</a>, <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09&amp;displaylang=en">Anti-XSS Library</a> </li>    <li><a href="http://platform.twitter.com/js-api.html">@Anywhere Javascript API</a> </li>    <li><a href="http://blog.twitter.com/2010/02/flying-around-with-hovercards.html">Hovercards</a> </li>    <li><a href="http://www.mongodb.org/">Mongo</a> </li>    <li><a href="http://jaxer.org/">Jaxer</a> </li>    <li><a href="http://weblogs.asp.net/bleroy/">Bertrand Le Roy</a> </li>    <li><a href="http://github.com/janl/mustache.js/">Mustache.js</a> </li>    <li><a href="http://ralphwhitbeck.com/2010/01/22/jQuery14GiveUsANewWayToZebraStripe.aspx">jQuery Gives Us a New Way to Zebra Stripe</a> </li>    <li><a href="http://wiki.github.com/atheken/NoRM/">NoRM</a> </li>    <li><a href="http://andrewtheken.com/">Andrew Theken</a> </li>    <li><a href="http://twitter.com/averyj">James Avery</a> </li>    <li><a href="http://codebetter.com/blogs/aaron.jensen/archive/2008/05/08/introducing-machine-specifications-or-mspec-for-short.aspx">Machine.Specifications (MSpec)</a> </li>    <li><a href="http://nodejs.org/">Node.js</a> </li>    <li><a href="http://bradwilson.typepad.com/">Brad Wilson</a> </li>    <li><a href="http://simonwillison.net/">Simon Willison</a> </li>    <li><a href="http://www.merbivore.com/">Merb</a> </li>    <li><a href="http://www.yuiblog.com/blog/2010/04/09/node-js-yui-3-dom-manipulation-oh-my/">Node.js, YUI 3 &amp; Dom Manipulation. Oh My!</a> </li>    <li><a href="http://techcrunch.com/2010/04/14/twitter-ev-revenue-feature">Twitter CEO Ev Williams: Revenue Is A Feature</a> </li>    <li><a href="http://www.tomshardware.com/news/Twitter-Hack-Password,8274.html">Oops! Twitter Server Password is &quot;Password&quot;</a> </li>    <li><a href="https://www.myopenid.com/">myOpenId</a>, <a href="http://en.wikipedia.org/wiki/Windows_CardSpace">Infocard</a> </li>    <li><a href="http://www.codinghorror.com/blog/2008/05/openid-does-the-world-really-need-yet-another-username-and-password.html">OpenID: Does The World Really Need Yet Another Username and Password?</a> </li>    <li><a href="http://daringfireball.net/2010/04/why_apple_changed_section_331">Why Apple Changed Section 3.3.1</a> </li>    <li><a href="http://monotouch.net/">MonoTouch</a> </li>    <li><a href="http://whereslou.com/">Louis De Jardin</a> </li>    <li><a href="http://mef.codeplex.com/">MEF</a> </li> <li><a href="http://mozillalabs.com/bespin/">Mozilla Labs: Bespin</a></li>    <li><a href="http://www.coderun.com/">coderun</a> </li>    <li><a href="http://blog.extracheese.org/">Gary Bernhardt</a>, <a href="http://blog.extracheese.org/2010/01/string-calculator-kata-in-python.html ">String Calculator Kata</a>&#160; </li>    <li><a href="http://weblogs.asp.net/scottgu/archive/2009/09/02/code-optimized-web-development-profile-vs-2010-and-net-4-0-series.aspx">Code optimized web profile for Visual Studio 2010</a></li> </ul>  <p>   <br /></p>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0078-Ruby-on-Rails-View-Engines-Web-Security-etc-with-Rob-Conery.mp3">Herding Code 78: Ruby on Rails, View Engines, Web Security, Section 3.3.1 and Visual Studio 2010 with Rob Conery</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0078-Ruby-on-Rails-View-Engines-Web-Security-etc-with-Rob-Conery.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 77: Eric Hexter on MvcConf, C4MVC, and MvcContrib</title>
    <link>https://herdingcode.com/herding-code-77-eric-hexter-on-mvcconf-c4mvc-and-mvccontrib/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-77-eric-hexter-on-mvcconf-c4mvc-and-mvccontrib/</guid>
    <pubDate>Mon, 05 Apr 2010 18:12:36 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Jon, Kevin and Scott K discuss MvcConf, C4MVC and MvcContrib with, open source and community extraordinaire, Eric Hexter. Eric talks about his r</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 77</strong></p>
<p>This week on Herding Code, Jon, Kevin and Scott K discuss MvcConf, C4MVC and MvcContrib with, open source and community extraordinaire, Eric Hexter.&#160; </p>  <ul>   <li>Eric talks about his role as consultant and Director of Open Source at Headspring. </li>    <li>The guys walk through Hexter's impressive resume.&#160;&#160; Eric is the co-founder of MVCContrib, he established the Community for MVC (C4MVC) virtual user group and is currently coordinating MvcConf, <u>the</u> Virtual ASP.NET MVC Conference scheduled for July.&#160; No wonder the most popular listener question for this week was "How is Hexter so awesome?" </li>    <li>Eric takes us through the general theme of MvcConf&#160; - "interactive" presentations around extensibility, testability and building maintainable, high-volume, enterprise applications with a focus on best practices like database migrations.&#160; </li>    <li>Eric issues a call for speakers. Who's interested? </li>    <li>Jon asks about Portable Areas in MvcContrib and Eric digs into the embedded view engine and synchronous message bus. </li>    <li>Kevin asks a question. </li>    <li>The guys talk about Input Builders, Dynamic Scaffolding and Fluent Html Helpers.&#160; Jon also asks about MvcContrib Grid's popularity. </li>    <li>Scott K asks about extending ASP.NET MVC, "Are you fighting with the framework or at least fighting with the C# language?"&#160; Have you gotten the feeling that Scott likes a good fight?&#160; Scott considers how and why various frameworks are developed and Eric praises ASP.NET MVC for having all of the the right extension points in place. These leads to a group discussion about the ASP.NET MVC team releasing source drops and not working in a bubble. </li>    <li>Eric and Jon talk about the MVCContrib TestHelpers and the importance of testing routes.&#160; Hexter tells us about the UI Test Helpers built around WatiN and the benefit of strongly type views. Jon oohs and ahhs. </li>    <li>Kevin asks another question. </li>    <li>Scott K comments on SubControllers.&#160; Eric tell us if SubControllers smell and shares the general argument against RenderAction. </li>    <li>Jon talks about model validation via data annotations and how one might test.&#160; Eric shares some of the patterns they have established (strongly-typed views, 1:1 mapping between view and viewmodel) and how he uses data annotations for data type validation and how complex validation is handled via a command processor's rules engine. </li>    <li>The show wraps with Eric singing about a few of his favorite things - continuous integration and testing. He pimps the early access edition of ASP.NET MVC2 in Action and Tarantino Database Migrations and announces that the Virtual ALT.Net folks and he will be open sourcing their video recording management scripts. </li>    <li>Final question, "How does Eric get so much done?"&#160; "Automate, automate, automate!"&#160; Of course! </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://www.lostechies.com/blogs/hex/ ">Eric Hexter's Blog</a> </li>    <li><a href="http://www.headspringsystems.com/home/people/ ">Headspring Systems</a> </li>    <li><a href="http://www.c4mvc.net/Home/Events">Community For MVC</a>&#160; </li>    <li><a href="http://www.mvcconf.com/ ">MVC Conf</a> </li>    <li><a href="http://mvccontrib.codeplex.com/ ">MVCContrib</a> </li>    <li><a href="http://www.jeremyskinner.co.uk/">Jeremy Skinner</a> </li>    <li><a href="http://www.adnug.org/">Austin .NET User Group</a> </li>    <li><a href="http://blog.lozanotek.com/">Javier Lozano</a> </li>    <li><a href="http://www.viddler.com/explore/c4mvc/videos/24/ ">Brad Wilson on C4MVC</a> </li>    <li><a href="http://office.microsoft.com/en-us/livemeeting/default.aspx">LiveMeeting</a> </li>    <li><a href="http://www.viddler.com/">Viddler</a> </li>    <li><a href="http://trac.caffeine-it.com/openrasta">OpenRasta</a> </li>    <li><a href="http://www.castleproject.org/monorail/">MonoRail</a> </li>    <li><a href="http://code.google.com/p/fubumvc/">FubuMVC</a> </li>    <li><a href="http://blog.wekeroad.com/2009/10/24/hello-tekpub">Rob Conery</a>, <a href="http://www.tekpub.com/">TekPub</a> </li>    <li><a href="http://aspnet.codeplex.com/releases/view/24471">MVC Futures</a> </li>    <li><a href="http://mvccontrib.codeplex.com/wikipage?title=T4MVC">T4MVC</a> </li>    <li><a href="http://mvccontrib.codeplex.com/wikipage?title=Grid&amp;ProjectName=mvccontrib">MvcContrib Grid</a> </li>    <li><a href="http://www.trirand.com/blog/jqgrid/jqgrid.html">jqGrid</a> </li>    <li><a href="http://www.datatables.net/">jQuery DataTables</a> </li>    <li><a href="http://sparkviewengine.com/">Spark View Engine</a> </li>    <li><a href="http://watin.sourceforge.net/">WatiN</a> </li>    <li><a href="http://blog.stevensanderson.com/2009/03/27/first-steps-with-lightweight-test-automation-framework/">Steven Sanderson's Light Test Automation Framework</a> </li>    <li><a href="http://oxite.codeplex.com/">Oxite</a> </li>    <li><a href="http://orchard.codeplex.com/">Orchard</a> </li>    <li><a href="http://weblogs.asp.net/leftslipper/">Eilon Lipton</a> </li>    <li><a href="http://mvcturbine.codeplex.com/">MVC Turbine</a> </li>    <li><a href=" http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/10/22/c4mvc-ui-testing-screencast-posted.aspx ">Jimmy Bogard C4MVC on UI Testing</a> </li>    <li><a href="http://www.castleproject.org/activerecord/documentation/v1rc1/usersguide/validation.html">Castle Validators</a> </li>    <li><a href="http://automapper.codeplex.com/">AutoMapper</a> </li>    <li><a href="http://fluentvalidation.codeplex.com/Wikipage">Fluent Validation</a> </li>    <li><a href="http://www.manning.com/palermo2/">ASP.NET MVC2 in Action</a> </li>    <li><a href="http://code.google.com/p/tarantino/wiki/DatabaseChangeManagement  ">Tarantino database migrations</a> </li>    <li><a href="http://groups.google.com/group/virtualaltnet">Virtual Alt.NET</a>       <br /></li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0077-Eric-Hexter-on-MvcConf-C4MVC-and-MvcContrib.mp3">Herding Code 77: Eric Hexter on MvcConf, C4MVC, and MvcContrib</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0077-Eric-Hexter-on-MvcConf-C4MVC-and-MvcContrib.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 76: John Sheehan on RestSharp</title>
    <link>https://herdingcode.com/herding-code-76-john-sheehan-on-restsharp/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-76-john-sheehan-on-restsharp/</guid>
    <pubDate>Fri, 02 Apr 2010 03:43:57 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, John Sheehan joins the cast for a conversation about his open source project, RestSharp. The gang dives into REST and .NET open source. Makes sense, r</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 76</strong></p>
<p>This week on Herding Code, John Sheehan joins the cast for a conversation about his open source project, RestSharp. The gang dives into REST and .NET open source. Makes sense, right? And the show wraps with talk of OData and a MIX10-inspired Lightning Round. </p>  <ul>   <li>John talks about his exciting new evangelist job at Twilio. Twillo provides a web-service API for businesses to build scalable, reliable communication apps. Wait! The evangelist is going to tell you all about it. </li>    <li>The guys quiz John about RestSharp. John talks about what RestSharp has to offer and the direction of the project.&#160; </li>    <li>The gangs talk about the oddities of .NET open source project development - forking, closing source, project naming, boredom and a plea for project takeover. </li>    <li>Jon leads the group into dangerous territory and forces an OData discussion. Is OData good? Is it REST?&#160; Hear what the guys have to say.&#160; </li>    <li>K Scott dazzles us with a power-packed Lightning Round.&#160; Don't step away for a second or you'll miss it!&#160; Just like lightning. </li>    <li>John kicks off our first Official Pimp Your Stuff segment talking about ManagedAssembly - a community for .NET developers which is poised to be taken over.&#160; Just ask.&#160; Please. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://www.twilio.com/">Twilio</a> </li>    <li><a href="http://john-sheehan.com/blog">John's Blog</a> </li>    <li><a href="http://restsharp.org/">RestSharp</a> </li>    <li><a href="http://hammock.codeplex.com/">Hammock for REST</a> </li>    <li><a href="http://tweetsharp.com/">TweetSharp</a> </li>    <li><a href="http://twitter.com/dimebrain">Daniel Crenna</a> </li>    <li><a href="http://www.odata.org/">OData</a> </li>    <li><a href="http://www.bizcoder.com/">Darrel Miller</a> </li>    <li><a href="http://ietestdrive.com">IE9 Testdrive</a> </li>    <li><a href="http://jquerysnippets.codeplex.com/">jQuery Snippets</a> </li>    <li><a href="http://managedassembly.com/">ManagedAssembly</a> </li>    <li><a href="http://averyblog.com/">James Avery</a> </li>    <li><a href="http://subsonicproject.com/">SubSonic</a> </li>    <li><a href="http://www.nerddinner.com/Services/OData.svc">NerdDinner's OData Service</a> </li>    <li><a href="http://www.nerddinner.com/Services/OData.svc/$format=json">NerdDinner JSON response</a> Note: this is a json link so IE will show a file download prompt </li>    <li><a href="http://live.visitmix.com/">MIX10</a>       <br /></li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0076-John-Sheehan-on-RestSharp.mp3">Herding Code 76: John Sheehan on RestSharp</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0076-John-Sheehan-on-RestSharp.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 75: Barry Dorrans on Developer Security</title>
    <link>https://herdingcode.com/herding-code-75-barry-dorrans-on-developer-security/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-75-barry-dorrans-on-developer-security/</guid>
    <pubDate>Fri, 05 Mar 2010 23:08:49 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Barry Dorrans educates, entertains, insults and scares us with his expert commentary on application security, threat modeling, analysis tools and comm</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 75</strong></p>
<p>This week on Herding Code, Barry Dorrans educates, entertains, insults and scares us with his expert commentary on application security, threat modeling, analysis tools and common attacks.&#160; You've been waiting for this show.&#160; I just know it.&#160; Listen in as Barry talks security, pimps his new book, and comments on his new position at Microsoft, book burnings, guns, money, proper pronunciation and Jon's bald head. </p>  <ul>   <li>Scott K shares that public facing applications and services seem to get the least attention when it comes to security - until there's an audit. Barry talks about the lack of security education and how training should be baked in from the ground up. </li>    <li>Jon notes that folks don't start off projects thinking about security.&#160; First you code and then you worry about the risk.&#160; Barry speaks to the Security Development Lifecycle (SDL) and continuous threat modeling. </li>    <li>Scott K asks if there is a security checklist which developers should consult when developing a web application.&#160; Barry references his book, OWASP, CDE and Miter.&#160; Barry states that can't think like a hacker but you can think about the risks and "what happens if this goes wrong" or "I leak this information" or "there is a cross site scripting attack." </li>    <li>Jon notes there are some security measures which are baked into the .NET Framework.&#160; Barry talks about a defense in depth strategy and the Web Protection Library (WPL.) </li>    <li>Barry dives into a few of the security and code analysis tools like CAT.NET and FxCop which are available for Visual Studio.&#160; But how, by the way, no tool offers a silver bullet. </li>    <li>Scott K asks where emphasis should be placed when implementing security measures.&#160; Barry responds by putting his security hat on and assuming that all users are scum.&#160; Trust no one! </li>    <li>The guys get into encoding rules (when and where), XSS, SQL Injection and Cross-site request forgery.&#160; Jon asks more about the measures built into ASP.NET Webforms and ASP.NET MVC which help prevent attacks. </li>    <li>Kevin asks a question about automatic encoding by the framework.&#160; Barry states this is a tricky solution to implement and suggests that frameworks should provide tools but developers should handle the encoding manually. Jon notes the new syntax in MVC 2 which facilitates this approach. </li>    <li>Jon asks about testing frameworks and asks Barry for a checklist of steps which developers must complete if they wish to secure their applications.&#160; Barry rattles off a bunch of must-dos actions, pimps his book and pokes fun at American money. </li>    <li>The guys talk about RIA, Silverlight and Flash and briefly touch upon security benefits and issues.&#160; And then they discuss social engineering security/privacy issues. </li>    <li>Scott K moves away from web applications and services.&#160; What about client applications?&#160; Barry talks about trusted sources, and the .NET and Java sandboxes.&#160; And the guys speak of OS sandboxes and vitualizing applications and Code Access Security (CAS.) </li>    <li>Barry talks about FoxPro thanks to a Twitter question from @jglazano and the show finishes up with talk about blue and black hats, security snake oil and scary security stories.&#160; But wait!&#160; Jon remembers he wanted to talk about OpenId and the show continues with a discussion about OpenId, CardSpace and OAuth and OAuth WRAP. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://www.idunno.org/">Barry Dorrans' Blog</a> </li>    <li><a href="http://www.amazon.com/dp/0470743654?tag=barrdorr-20&amp;camp=213381&amp;creative=390973&amp;linkCode=as4&amp;creativeASIN=0470743654&amp;adid=1E1W5P168VGSEPKCJP4Z&amp;">Beginning ASP.NET Security, Barry Dorrans</a> </li>    <li><a href="http://www.google.com/buzz">Google Buzz</a> </li>    <li><a href="http://www.microsoft.com/learning/en/us/book.aspx?ID=5957&amp;locale=en-us">Writing Secure Code</a>, <a href="http://blogs.msdn.com/michael_howard/">Michael Howard</a> </li>    <li><a href="http://www.amazon.com/Developing-More-Secure-Microsoft-Applications-Developer/dp/0735623317/ref=pd_sim_b_1">Developing More-Secure Microsoft ASP.NET 2.0 Applications</a>, <a href="http://www.leastprivilege.com/">Dominick Baier</a> </li>    <li><a href="http://www.amazon.com/gp/product/0735619913?ie=UTF8&amp;tag=msdn-sec-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0735619913">Threat Modeling</a>, <a href="http://blog.mozilla.com/security/">Window Snyder</a> and <a href="http://blogs.msdn.com/fes/default.aspx">Frank Swiderski</a> </li>    <li><a href="http://www.developerdeveloperdeveloper.com/home/">DeveloperDeveloperDeveloper!</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Pci_compliance">PCI Compliance</a> </li>    <li><font color="#000000"><a href="http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project">OWASP Top 10</a></font> </li>    <li><a href="http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project">WebGoat Project</a> </li>    <li><a href="http://cwe.mitre.org/top25/">CWE/SANS Top 25</a> </li>    <li><a href="http://channel9.msdn.com/posts/Jossie/Using-the-Web-Protection-Library-WPL-CTP-Version/">Web Protection Library (WPL)</a> - Evolution of Anti-XSS Library </li>    <li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0178e2ef-9da8-445e-9348-c93f24cc9f9d&amp;displaylang=en">Microsoft Code Analysis Tool .NET (CAT.NET)</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/bb429476(VS.80).aspx">FxCop</a> </li>    <li><a href="http://www.ndepend.com/">NDepend</a> </li>    <li><a href="http://code.msdn.microsoft.com/sourceanalysis">StyleCop</a> </li>    <li><a href="http://www.acorns.com.au/blog/?p=154">XSS Attack Tool</a> </li>    <li><a href="http://ha.ckers.org/xss.html">XSS (Cross Site Scripting) Cheat Sheet</a> </li>    <li><a href="https://addons.mozilla.org/en-US/firefox/addon/966">Tamper Data Firefox Add-on</a> </li>    <li><a href="http://www.amazon.com/Enough-Rope-Shoot-Yourself-Foot/dp/0070296898">Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming</a> </li>    <li><a href="http://www.foxitsoftware.com/pdf/reader/">Foxit</a> </li>    <li><a href="https://addons.mozilla.org/en-US/firefox/addon/722">NoScript Firefox Add-on</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Microsoft_Application_Virtualization">App-V</a> (Microsoft Application Virtualization, formerly Microsoft Softgrid) </li>    <li><a href="http://weblogs.asp.net/jgalloway/archive/2007/09/04/we-should-be-virtualizing-applications-not-machines.aspx">We Should Be Virtualizing Applications Not Machines</a> </li>    <li><a href="http://twitter.com/jglozano">Javier Lazano</a> </li>    <li><a href="http://technet.microsoft.com/en-us/security/cc261637.aspx">Microsoft BlueHat Security Briefings</a> </li>    <li><a href="http://www.blackhat.com/">Black Hat Technical Security Conference</a> </li>    <li><a href="http://openid.net/">OpenId</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Windows_CardSpace">CardSpace</a> </li>    <li><a href="https://lastpass.com/">LastPass</a> </li>    <li><a href="http://oauth.net/">OAuth</a> / <a href="http://wiki.oauth.net/OAuth-WRAP">OAuth WRAP</a> </li>    <li><a href="http://www.identityblog.com/?p=354">Kim Cameron's Introduction to the Laws of Identity</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0075-Barry-Dorrans-on-Developer-Security.mp3">Herding Code 75: Barry Dorrans on Developer Security</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0075-Barry-Dorrans-on-Developer-Security.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 74: Javier Lozano on MVC Turbine and Composed Applications</title>
    <link>https://herdingcode.com/herding-code-74-javier-lozano-on-mvc-turbine-and-composed-applications/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-74-javier-lozano-on-mvc-turbine-and-composed-applications/</guid>
    <pubDate>Tue, 23 Feb 2010 01:27:48 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, K Scott leads a conversation with ASP.NET Insider and MVP, Javier Lozano, about his open source project, MVC Turbine, and extensibility and compositio</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 74</strong></p>
<p>This week on Herding Code, K Scott leads a conversation with ASP.NET Insider and MVP, Javier Lozano, about his open source project, MVC Turbine, and extensibility and composition with ASP.NET MVC.</p>  <ul>   <li>Javier provides a twitter-like overview of his open source project: "MVC Turbine helps you build modular applications on top of ASP.NET MVC and that's pretty much it." </li>    <li>K Scott asks about the advantages of using MVC Turbine to add features to your applications. Javier talks about MVC's extension points, controller factories, view engines, and "the blade." </li>    <li>The guys talk about MVC Turbine's support for multiple IoC containers and whether or not MVC Turbine is merely "IoC for IoC."&#160; Javier speaks of his design approach and the need to register components on the fly. </li>    <li>K Scott notes that though ASP.NET MVC has many extensibility points it may not have been built with IoC in mind. Javier talks about the pros and cons of this and how it factored into his design. </li>    <li>Scott K asks if there are any features Javier would like to implement into his project which he hasn't been able to address because of limitations with the MVC framework.&#160;&#160; </li>    <li>K Scott asks about Action Filters and Inferred Actions. Javier explains.&#160; Jon comments on Inferred Actions' awesomeness and how they really reduce your controller code. </li>    <li>Scott K asks about Inferred Actions and strongly typed views. Javier talks about how the current implementation effectively serves up static pages without a model but the ideal implementation (which is doable) would provide an inferred models and more.&#160; </li>    <li>Scott K talks about defaulting return types.&#160; For example, if request doesn't include the mime type then default to Json. </li>    <li>The guys talk about general extensibility in ASP.NET MVC and how various open source applications are addressing concerns. </li>    <li>K Scott gets back on topic and asks Javier to dig deeper into filters. </li>    <li>Jon and Javier talk about MEF and how it might play a roll in MVC Turbine. Bingo! </li>    <li>K Scott notes that MVC Turbine is hosted on Codeplex and asks how it's going?&#160; Javier notes the source code is now hosted at GitHub, and Jon asks if recent Codeplex support for Mercurial might lure Javier back to Codeplex. The guys talk/joke about version control systems. </li>    <li>The guys talk Visual Studio 2010 versions and games of yesterday. </li>    <li>Javier turns the tables and asks the guys about their thoughts on compositions in general.&#160; Scott K has thoughts - it's painful. Jon states that MVC Turbine is doing it and you can use Attributes so what's missing in the .NET framework that makes composition so painful. </li>    <li>Javier talks of folks interest in contributing to his framework, producing documentation and video, and what's next for MVC Turbine.&#160; </li>    <li>Jon asks if MVC 2 provides features (validation or templating, for example) which may be leveraged in MVC Turbine. </li>       <li>Lightening round! Have you used Google Buzz?&#160; What's the funniest comment thread you have ever read? </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.lozanotek.com/">Javier Lozano's Blog</a> </li>    <li><a href="https://herdingcode.com/">Herding Code 43: Javier Lozano on the "M" in MVC</a> </li>    <li><a href="http://mvcturbine.codeplex.com/">MVC Turbine</a> </li>    <li><a href="http://www.iowadnug.org/">Iowa .NET User Group</a> and <a href="http://iowacodecamp.com/">Iowa Code Camp</a> </li>    <li><a href="http://structuremap.sourceforge.net/Default.htm">StructureMap</a> </li>    <li><a href="http://ninject.org/">Ninject</a> </li>    <li><a href="http://www.castleproject.org/container/index.html">Castle Windsor</a> </li>    <li><a href="http://unity.codeplex.com/">Unity</a> </li>    <li><a href="http://www.codeplex.com/CommonServiceLocator">Common Service Locator</a> </li>    <li><a href="http://github.com/kazimanzurrashid/AspNetMvcExtensibility">ASP.NET&#160; MVC Extensibility</a> </li>    <li><a href="http://code.google.com/p/fubumvc/">FubuMVC</a> </li>    <li><a href="http://blogs.msdn.com/gblock/">Glenn Block</a> </li>    <li><a href="http://blog.wekeroad.com/">Rob Conery</a> </li>    <li><a href="http://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx">Registering External Routes</a> </li>    <li><a href="http://netcave.org/">Alan Stevens</a> </li>    <li><a href="http://www.corebvba.be/blog/">Tom Janssens</a> (<a href="http://twitter.com/ToJans/">@ToJans</a>) </li>    <li><a href="http://github.com/tojans/mvcextensions">MVCExtensions</a> </li>    <li><a href="http://sharparchitecture.net/">S#arpArchitecture</a> </li>    <li><a href="http://whereslou.com/">Louis DeJardin</a> </li>    <li><a href="http://www.codeplex.com/MVCContrib">MVC Contrib</a> </li>    <li><a href="http://www.jeremyskinner.co.uk/">Jeremy Skinner</a> </li>    <li><a href="http://www.codeplex.com/MEF">MEF</a> </li>    <li><a href="http://www.codeplex.com/AutoMapper">Automapper</a> </li>    <li><a href="http://flux88.com/">Ben Scheirman</a> </li>        <li><a href="http://www.mvpsummit2010.com/">MVP Summit</a> </li>    <li><a href="http://www.google.com/buzz">Google Buzz</a></li> <li><a href="http://www.readwriteweb.com/archives/facebook_wants_to_be_your_one_true_login.php">The Confusing New Facebook Login Page (on ReadWriteWeb)</a></li>   <li><a href="http://www.c4mvc.net/">Community for MVC.NET</a> </li>    <li><a href="http://geekswithblogs.net/hex/Default.aspx">Eric Hexter</a> </li> </ul>  <p>&#160;</p>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0074-Javier-Lozano-on-MVC-Turbine-and-Composed-Applications.mp3">Herding Code 74: Javier Lozano on MVC Turbine and Composed Applications</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0074-Javier-Lozano-on-MVC-Turbine-and-Composed-Applications.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 73: Daniel Plaisted on Model-Based Testing in Action on the MEF Team</title>
    <link>https://herdingcode.com/herding-code-73-daniel-plaisted-on-model-based-testing-in-action-on-the-mef-team/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-73-daniel-plaisted-on-model-based-testing-in-action-on-the-mef-team/</guid>
    <pubDate>Sun, 14 Feb 2010 21:02:57 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Jon leads a discussion with Daniel Plaisted about Model-Based Testing and the progressive practices of the MEF team. Daniel speaks of the primary deve</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 73</strong></p>
<p>This week on Herding Code, Jon leads a discussion with Daniel Plaisted about Model-Based Testing and the progressive practices of the MEF team.</p>  <ul>   <li>Daniel speaks of the primary development roles at Microsoft and how the MEF team addresses testing concerns. Guess what.&#160; Developers write tests, too. </li>    <li>Daniel talks about Model-Based Testing and validation of transitions and states. </li>    <li>Scott K is reminded of a presentation he attended at Northwest Python Day which spoke of protocol and framework testing. </li>    <li>Daniel shares the need of trim test cases to manageable sets which will still ensure adequate coverage. </li>    <li>Jon asks about mapping out the endless states that may be found when testing MEF.&#160; </li>    <li>Jon asks about test frequency. Are tests run on each check-in?&#160; Are they scheduled? </li>    <li>The guys address the difference test types - unit, functional, performance and stress tests. </li>    <li>Kevin asks about coordination of developer and tester efforts.&#160; Who produces which tests and where is each group's focus? </li>    <li>Daniel explains Exploratory Testing </li>    <li>Scott K asks about Heisenbugs and how closely testers work with developers to resolve hard-to-reproduce defects. </li>    <li>Jon asks if the MEF testers use any debug/test tools which are built into Visual Studio. </li>    <li>Kevin asks if any special considerations must be made when QAing an open source project.&#160; </li>    <li>Daniel explains how model-based testing works well for verifying cache states. </li>    <li>Scott K asks about test environment setups and how deep the MEF testers need to dive into the bugs in order to adequately report on them. </li>    <li>Jon asks Daniel to share tips to help developers improve their own unit tests and improve broader testing. </li>    <li>Daniel talks about MEF's beginnings. It's not an IoC container.&#160; Oh wait. It is. </li>    <li>What type of tester are you?&#160; The guys speak of a recent Google Tester Blog post on tester types. </li>    <li>Kevin ask if the progressive approach which MEF takes is gaining traction throughout Microsoft. </li>    <li>Jon asks how Daniel became a tester, a Microsoft MEF tester. </li>    <li>Kevin asks how much collaborating occurs between the various testing teams at Microsoft. </li>    <li>Daniel briefly talks about Synchronization Coverage. </li> </ul>  <p><em>Note: The audio's a little rougher than usual this week. Sorry about that.</em></p>  <p>Show Links: </p>  <ul>   <li><a href="http://blogs.msdn.com/dsplaisted/default.aspx">Daniel Plaisted's Blog</a> </li>    <li><a href="http://twitter.com/dsplaisted">@dsplaisted</a> </li>    <li><a href="http://www.codeplex.com/MEF">Managed Extensibility Framework (MEF)</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Model-based_testing">Model-Based Testing</a> </li>    <li><a href="http://www.seapig.org/NorthwestPythonDay">Northwest Python Day</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Unusual_software_bug#Heisenbug">Heisenbug</a> </li>    <li><a href="http://www.castleproject.org/container/index.html">Castle Windsor</a> </li>    <li><a href="http://googletesting.blogspot.com/">Google Tester Blog</a> </li>    <li><a href="http://googletesting.blogspot.com/2010/01/interviewing-insights-and-test.html">Interviewing Insights and Test Frameworks</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0073-Daniel-Plaisted-on-Model-Based-Testing-in-Action-on-the-MEF-Team.mp3">Herding Code 73: Daniel Plaisted on Model-Based Testing in Action on the MEF Team</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0073-Daniel-Plaisted-on-Model-Based-Testing-in-Action-on-the-MEF-Team.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 72: Questioning Uncle Bob, Clojure Magic, Mercurial Support at Codeplex, Thoughts About the iPad and Handerpants</title>
    <link>https://herdingcode.com/herding-code-72-questioning-uncle-bob-clojure-magic-mercurial-support-at-codeplex-thoughts-about-the-ipad-and-handerpants/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-72-questioning-uncle-bob-clojure-magic-mercurial-support-at-codeplex-thoughts-about-the-ipad-and-handerpants/</guid>
    <pubDate>Sun, 07 Feb 2010 01:26:33 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the gang discusses Uncle Bob&apos;s self-titled blatherings about DI, IoC and Mocking, Clojure and polyglot programming, managed javascript, and recent sup</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 72</strong></p>
<p>This week on Herding Code, the gang discusses Uncle Bob's self-titled blatherings about DI, IoC and Mocking, Clojure and polyglot programming, managed javascript, and recent support for Mercurial at Codeplex. The show finishes up with another K Scott Lightning Round with questions about the iPad and non-technical blog recommendations.</p>  <ul>   <li>Uncle Bob recently published two articles which are a little down on DI, IoC and Mocking. Was he merely trying to get a rise out of the community or was he sending a subtle message about poor use of our tools? </li>    <li>K Scott attended Craig Andera's Clojure Presentation at a recent DC Alt.NET meet up. This sparks a discussion about Clojure Magic - functional programming, transactional memory, concurrency and multi-threaded programming. </li>    <li>The guys talk about the polyglot programmer, Scala running on the JVM and Java interop. Scott K shares his interest in getting a Clojure, Scala and F# guy in the same room and Kevin gives his thoughts about the language explosion. </li>    <li>Scott K leads a conversation about managed javascript, node.js, and IronJS. </li>    <li>The group offers their opinions on Codeplex support for Mercurial and address questions like "Why not Git?" and "Does this make Codeplex more appealing?" </li>    <li>Lightning Round Question #1: Who's going to buy an iPad? </li>    <li>Lightning Round Question #2: What non-technical blogs do you read? </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.objectmentor.com/articles/2010/01/17/dependency-injection-inversion">Dependency Injection Inversion</a> </li>    <li><a href="http://blog.objectmentor.com/articles/2010/01/23/mocking-mocking-and-testing-outcomes">Mocking Mocking and Testing Outcomes</a> </li>    <li><a href="http://code.google.com/p/moq/">Moq</a> </li>    <li><a href="http://www.ayende.com/projects/rhino-mocks.aspx">Rhino Mocks</a> </li>    <li><a href="http://weblogs.asp.net/podwysocki/">Matthew Podwysocki</a> </li>    <li><a href="http://tech.groups.yahoo.com/group/dcaltnet/">DC Alt.Net Group</a> </li>    <li><a href="http://github.com/candera/clojure-concurrency/blob/dcaltnet-20100127/concurrency.outline">Craig Andera's Clojure Presentation Materials</a> </li>    <li><a href="http://clojure.org/refs">Clojure Refs</a> </li>    <li><a href="http://wiki.github.com/richhickey/clojure-clr/installing-clojureclr">Clojure CLR</a> </li>    <li><a href="http://gist.github.com/273727">Scott K's Clojure Gist</a>&#160; </li>    <li><a href="http://audacity.sourceforge.net/">Audacity</a> </li>    <li><a href="http://pdf23ds.net/software/dynamic-compressor/">Chris's Dynamic Compressor</a> </li>    <li><a href="http://www.gimp.org/">Gimp</a> </li>    <li><a href="http://github.com/fholm/IronJS">IronJS</a> </li>    <li><a href="http://nodejs.org/">node.JS</a> </li>    <li><a href="http://simonwillison.net/2009/Nov/23/node/">Simon Willison</a> </li>    <li><a href="http://rubyeventmachine.com/">Ruby EventMachine</a> </li>    <li><a href="http://twistedmatrix.com/trac/">Twisted</a> </li>    <li><a href="http://codeplex.com">Codeplex</a> </li>    <li><a href="http://mercurial.selenic.com/">Mercurial</a>, <a href="http://bitbucket.org/">bitbucket</a> </li>    <li><a href="http://git-scm.com/">Git</a>, <a href="http://github.com/">GitHub</a> </li>    <li><a href="http://radar.oreilly.com/2009/01/github-making-code-more-social.html">Rails Commits comparison from SVN to GitHub</a> </li>    <li><a href="http://www.knowing.net/">Larry O'Brien</a> - <a href="http://www.knowing.net/index.php/2010/01/27/tablet-pc-programmer-responds-to-apple-ipad/">Tablet PC Programmer Responds to Apple iPad</a></li>    <li><a href="http://blog.ruhlman.com/ ">Michael Ruhlman</a> </li>    <li><a href="http://www.toplessrobot.com/">Topless Robot</a> </li>    <li><a href="http://www.swiss-miss.com/">Swiss Miss</a> </li>    <li><a href="http://thisisindexed.com/">Indexed</a></li>    <li><a href="http://twitter.com/nathanbowers/">Nathan Bowers</a>, <a href="http://uxhero.com/">UX Hero</a> </li>    <li><u><a href="http://twittery.com/jzy">Jin Yang (jzy)</a></u> <a href="http://www.8164.org/">8164.org</a></li>    <li><a href="http://strangemaps.wordpress.com/">Strange Maps</a> </li>    <li><a href="http://mattkirkland.com/exunum.html">Ex Unum, Pluribus!</a> </li>    <li><a href="http://www.fakesteve.net/">FakeSteveJobs</a> </li>    <li><a href="http://artofmanliness.com/">Art of Manliness</a> </li>    <li><a href="http://www.mcphee.com/shop/">Archie McPhee</a> </li>    <li><a title="http://monkeygoggles.com/" href="http://monkeygoggles.com/">Monkey Goggles</a> </li>    <li><a title="http://handerpants.com/" href="http://handerpants.com/">Handerpants</a> </li>    <li><a href="http://www.davebarry.com/">Dave Barry</a> </li> </ul>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0072-Bob-Clojure-Mercurial-iPad-Handerpants.mp3">Herding Code 72: Questioning Uncle Bob, Clojure Magic, Mercurial Support at Codeplex, Thoughts About the iPad and Handerpants</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0072-Bob-Clojure-Mercurial-iPad-Handerpants.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 71: James Avery and Rob Conery on NoSQL and a bunch of other stuff</title>
    <link>https://herdingcode.com/herding-code-71-james-avery-and-rob-conery-on-nosql-and-a-bunch-of-other-stuff/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-71-james-avery-and-rob-conery-on-nosql-and-a-bunch-of-other-stuff/</guid>
    <pubDate>Mon, 01 Feb 2010 07:30:54 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, James Avery and Rob Conery join the cast in a lively discussion about NoSQL, TekPub, the new DotNetKicks and the technical debate du jour, ASP.NET Web</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 71</strong></p>
<p>This week on Herding Code, James Avery and Rob Conery join the cast in a lively discussion about NoSQL, TekPub, the new DotNetKicks and the technical debate du jour, ASP.NET Web Forms vs ASP.NET MVC.</p>  <ul>   <li>Kevin asks Rob and James to share their views on NoSQL and the use of object and document databases.&#160; James challenges the idea that all data must reside in a relational databases. Are ORMs so last year?&#160;&#160; What's going to be happening in 2020? </li>    <li>Rob claims he wouldn't accept a ride to the bar in an 18-wheeler.&#160; Whatever! </li>    <li>Jon asks what we're saving with object databases - don't ORMs abstract the database away?&#160; So what's the point? </li>    <li>James pimps TekPub </li>    <li>Rob talks it bit about domain-driven design and how we marry relational tables to object-oriented system. K Scott fails to see how the choice of a UI pattern is influenced by the type of database one is using. Rob explains. </li>    <li>Jon asks about maintainability and supportability issues and what's your boss going to think if you suggest moving away from your current relation database solution. James gives examples on why non-relational solutions are easy to maintain and support.&#160; Rob talks about quick ramp up time, scalability and performance like he's given the speech 1000 times before. </li>    <li>The guys pleasantly discuss MSDN.and VB.and ASP.NET Web Forms. </li>    <li>K Scott shares his opinion on the future of MVC, Web Forms, Silverlight and Sharepoint as they will exist both inside and outside of the firewall.&#160; Scott K, James and Rob also offer their opinions (shocking) and Jon's chance to interject is taken away when the luminous "Page Lifecycle" crashes down upon him.&#160; </li>    <li>James and Rob dig a little deeper into object and document databases and normalized database nightmares are exchanged. </li>    <li>Kevin asks how versioning works in an object database, the guys speak of Json and Bison, and serialization and deserialization.&#160; James speculates that object databases will ultimately be more popular than document databases. </li>    <li>Rob addresses the idea that he's condescending and rude.&#160; The group talks about opinions and share their views on recent technical debates - ASP.NET MVC vs Web Forms, VB vs C#, ORMs vs Stored Procedures, and Jets vs Sharks. Can't we all just get along? </li>    <li>Rob and James pimps TekPub again. </li>    <li>K Scott kicks off a flash lightning round - one question about VB6. </li>    <li>Rob answers Twitter question from <a href="mailto:e@elijahmanor">@elijahmanor</a> about TekPub's technology stack and elaborates about video options. </li>    <li>James pimps DotNetKicks. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://blog.wekeroad.com/">Rob Conery's Blog</a> </li>    <li><a href="http://averyblog.com/">James Avery's Blog</a> </li>    <li><a href="http://blog.wekeroad.com/2009/12/31/hello-from-2020">Hello from 2020</a> </li>    <li><a href="http://ayende.com/blog/default.aspx">Ayende</a> </li>    <li><a href="http://www.db4o.com/">db4o</a> </li>    <li><a href="http://www.mongodb.org/display/DOCS/Home">MongoDB</a> </li>    <li>DocumentDB ?? </li>    <li><a href="http://github.com/jnunemaker/mongomapper">mongomapper</a> </li>    <li><a href="http://couchdb.apache.org/">CouchDB</a> </li>    <li><a href="http://code.google.com/p/redis/">redis</a> </li>    <li><a href="http://nhprof.com/">NHibernate Profiler</a> </li>    <li><a href="https://www.hibernate.org/343.html">NHibernate</a> </li>    <li><a href="http://tekpub.com/">TekPub</a> </li>    <li><a href="http://www.codeplex.com/AutoMapper">AutoMapper</a> </li>    <li><a href="http://odetocode.com/Blogs/scott/archive/2009/10/29/mvc-or-web-forms-a-dying-question.aspx">MVC or Web Forms? A Dying Question</a> </li>    <li><a href="http://www.microsoft.com/nz/dynamics/crm/default.mspx">Microsoft Dynamics CRM</a> </li>    <li><a href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf">Dynamo</a> </li>    <li><a href="http://kaijaeger.com/articles/introducing-bison-binary-interchange-standard.html">Bison</a> </li>    <li><a href="http://en.wikipedia.org/wiki/MUMPS">MUMPS</a> </li>    <li><a href="http://odetocode.com/blogs/scott/archive/2009/09/27/victory-in-software-development.aspx">Victory in Software Development</a> </li>    <li><a href="http://blog.wekeroad.com/2010/01/21/asking-the-mountain-to-come-to-you">Ask the Mountain to Come to You</a> </li>    <li><a href="http://codebetter.com/blogs/ian_cooper/archive/2010/01/19/whither-alt-net.aspx">Whither Alt.Net?</a> </li>    <li><a href="http://en.wikipedia.org/wiki/The_Art_of_War">Art of War, Sun Tzu</a> </li>    <li><a href="http://blog.wekeroad.com/mvc-storefront/mvc-storefront-part-1/">MVC Storefront Series</a> </li>    <li><a href="http://git-scm.com/">Git</a> </li>    <li><a href="http://cukes.info/">Cucumber</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD</a> </li>    <li><a href="http://blog.lozanotek.com/">Javier Lozano</a> </li>    <li><a href="http://elijahmanor.com/">Elijah Manor</a> </li>    <li><a href="http://subsonicproject.com/">SubSonic</a> </li>    <li><font color="#000000"><a href="http://twitter.com/BillGates">@BillGates</a></font> </li>    <li><a href="http://dotnetkicks.com/default.aspx">DotNetKicks</a> </li>    <li><a href="http://theloungenet.com/">The Lounge</a> </li>    <li><a href="http://blog.theaccidentalgeek.com/">Joe Brinkman</a> </li> </ul>  <ul></ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0071-James-Avery-and-Rob-Conery-on-NoSQL-and-a-bunch-of-other-stuff.mp3">Herding Code 71: James Avery and Rob Conery on NoSQL and a bunch of other stuff</a></p>  <p> </p>  <p>Length: 1:18:38</p>  <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0071-James-Avery-and-Rob-Conery-on-NoSQL-and-a-bunch-of-other-stuff.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 70: Sean Chambers on Migrations in .NET</title>
    <link>https://herdingcode.com/herding-code-70-sean-chambers-on-migrations-in-net/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-70-sean-chambers-on-migrations-in-net/</guid>
    <pubDate>Mon, 25 Jan 2010 07:06:30 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, we talk to Sean Chambers about migrations in .NET with Fluent Migrator. Sean talks about how Fluent Migrator originated from Migrator.NET Sean discuss</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 70</strong></p>
<p>This week on Herding Code, we talk to Sean Chambers about migrations in .NET with Fluent Migrator.</p>  <ul>   <li>Sean talks about how Fluent Migrator originated from Migrator.NET </li>    <li>Sean discusses how the benefits of a semantic model in Fluent Migrator </li>    <li>K Scott and Sean discuss how you'd start using Fluent Migrator in a project </li>    <li>Sean talks about some useful features, like InsertData\ </li>    <li>Jon asks about support for different databases </li>    <li>Scott K asks about the benefits of a migration framework over a simple directory of T-SQL scripts </li>    <li>We take a question from Aaron Lerch (<a href="http://twitter.com/aaronlerch">@aaronlerch</a>) on Twitter about how Fluent Migrator would work with Fluent NHibernate </li>    <li>Kevin asks about Schema Update </li>    <li>Kevin and Sean talk about possible inefficiencies with objects being added, changed, and removed in successive migrations </li>    <li>K Scott asks about extensibility hooks </li>    <li>Scott K asks about stored procedures, functions, user defined types, etc. </li>    <li>Jon asks about how Fluent Migrator relates to other .NET migration frameworks </li>    <li>We take a question from Aaron Jensen (<a href="http://twitter.com/aaronjensen">@aaronjensen</a>) on Twitter about the benefits of a migration framework since T-SQL is already a DSL </li>    <li>Lightning round: K Scott starts the lightning round by asking what refactoring operations everyone uses most </li>    <li>Lightning round: What's your favorite VM software? (spoiler: VirtualBox wins by a wide margin) </li>    <li>Lightning round: What's your favorite movie that involves an android? </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://github.com/enkari/fluentmigrator">The Fluent Migrator github repo</a> </li>    <li>Sean's blog: <a href="http://schambers.lostechies.com">http://schambers.lostechies.com</a> </li>    <li>Sean's photo blog: <a href="http://www.full-fx.com">http://www.full-fx.com</a> </li>    <li><a href="http://code.google.com/p/migratordotnet/">Migrator.NET</a> </li>    <li><a href="http://www.codeplex.com/RikMigrations">RikMigrations</a> </li>    <li><a href="http://www.subsonicproject.com/docs/3.0_Migrations">SubSonic Migrations</a> </li>    <li><a href="http://www.lostechies.com/blogs/sean_chambers/archive/2009/07/31/31-days-of-refactoring.aspx">31 Days of Refactoring</a> </li>    <li><a href="http://www.virtualbox.org/">VirtualBox</a> </li>    <li><a href="http://computeristsolutions.com/blog/post/FluentMigrator-Rising-From-The-Ashes.aspx">Josh Coffman</a> </li>    <li><a href="http://stevehodgkiss.com/">Steve Hodgkiss</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0070-Sean-Chambers-on-Migrations-in-dotNET.mp3">Herding Code 70 - Sean Chambers on Migrations in .NET</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0070-Sean-Chambers-on-Migrations-in-dotNET.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 69: Scott Bellware on HTML Specialists</title>
    <link>https://herdingcode.com/herding-code-69-scott-bellware-on-html-specialists/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-69-scott-bellware-on-html-specialists/</guid>
    <pubDate>Fri, 22 Jan 2010 08:18:12 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Scott Bellware returns to talk about . Scott talks about the frustrations in working with &quot;HTML Specialists&quot; Scott discusses the team issues cau</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 69</strong></p>
<p>This week on Herding Code, Scott Bellware returns to talk about .&#160; </p>  <ul>   <li>Scott talks about the frustrations in working with "HTML Specialists"</li>    <li>Scott discusses the team issues caused by specialists in a software team who aren't in touch with the entire product development cycle</li>    <li>The problem with handoffs: loss of workability</li>    <li>Eventually, things turn to the technology issue involved in working with HTML and CSS</li>    <li>Are HTML tables necessarily evil</li>    <li>Scott and Scott K discuss whether CSS purity is a premature optimization</li>    <li>Jon and Scott discuss whether clean markup can be deferred until the end of a project</li>    <li>Scott talks about the lunacy of delivering design work as "final"</li>    <li>Scott talks about how optimization fights with workability</li>    <li>Scott enumerates some of examples of websites which might not benefit from accessibility</li>    <li>Jon posits that tables might not be easier than CSS design, it's just what we learned first</li>    <li>Scott K talks about how CSS floats drive him nuts</li>    <li>Scott talks about how crazy CSS is when viewed as a programming language</li>    <li>K Scott talks about some technological workarounds like lesscss</li>    <li>Scott talks about how he doesn't see Silverlight as an improvement, because it brings along a lot of other challenges</li>    <li>Scott talks about how working in teams and in "small batches" solves the problems with handoffs</li>    <li>Scott talks about the joy of a January 1st project date</li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.scottbellware.com/">Scott Bellware's Blog</a></li>    <li>Scott's consulting company, <a href="http://ampgt.com/">ampersand GT</a></li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0069-Scott-Bellware-on-HTML-Specialists.mp3">Herding Code 69 - Scott Bellware on HTML Specialists</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0069-Scott-Bellware-on-HTML-Specialists.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 68: New Year Shenanigans</title>
    <link>https://herdingcode.com/herding-code-68-new-year-shenanigans/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-68-new-year-shenanigans/</guid>
    <pubDate>Fri, 15 Jan 2010 05:40:54 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, the gang talks about what happened last year and what they think will happen in the years to come. Oh, and K Scott brings us the first lig</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 68</strong></p>
<p>In this episode of Herding Code, the gang talks about what happened last year and what they think will happen in the years to come.&#160; Oh, and K Scott brings us the first lightning round of 2010!</p>  <ul>   <li>How will the guys manage the show in 2010?&#160; Google Docs and listener requests? </li>    <li>Are you bitter because today's coder has little appreciation for how rough devs had it 10 years ago? </li>    <li>Phone wars. Big, smart ones. Will Android dethrone the iPhone? </li>    <li>Place your bets!&#160; Biggest box office hit in 2010: Ironman 2 or The A-Team Movie? </li>    <li>You don't see the Fail Whale quite as often, but it's still fun to listen to the guys continue to complain about Twitter and its clients. </li>    <li>Next ten years - will C# continue to rule the .NET roost? </li>    <li>Ever ask WolframAlpha "Who uses this site?" </li>    <li>What secret project is John Lam working on?&#160; Will IronRuby live on? </li>    <li>You love maps, right? K Scott does too.&#160;&#160; Who knew? </li>    <li>Ever wonder if the iSlate will take over the (Kindle) world? </li>    <li>Are you planning to improve your skill set in 2010? How? </li>    <li>Really? Jon's default search engine is Bing! How's about that Infinite Scroll! </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0068-New-Year-Shenanigans.mp3">Herding Code 68 - New Year Shenanigans</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0068-New-Year-Shenanigans.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 67: Udi Dahan on Scalability</title>
    <link>https://herdingcode.com/herding-code-67-udi-dahan-on-scalability/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-67-udi-dahan-on-scalability/</guid>
    <pubDate>Sun, 10 Jan 2010 08:00:19 GMT</pubDate>
    <description><![CDATA[<p>You&apos;re interested in web application scalability and availability, right? Of course you are! Well, you&apos;re in luck because Udi Dahan - enterprise development expert,</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 67</strong></p>
<p>You're interested in web application scalability and availability, right?&#160; Of course you are!&#160; Well, you're in luck because <a href="http://www.udidahan.com/">Udi Dahan</a> - enterprise development expert, SOA specialist and author of <a href="http://www.nservicebus.com/">NServiceBus</a> - joins the guys on this week's episode of Herding Code.&#160; </p>  <ul>   <li>Jon kicks off the show by asking Udi if one can run a high-availability and high-scalability site (like stackoverflow.com) on two servers with ASP.NET?&#160; Udi asks "how high is high" and talks about the importance of defining the scope of the architectural problem. </li>    <li>Udi comments on the how site behavior (high reads or writes, static or dynamic content, etc) dictates the way availability and scalability concerns can be handled. </li>    <li>Udi talks about how websites can be broken into fragments and how one can take advantage of content distribution networks and caches. </li>    <li>Udi stresses that high-availability inherently makes scaling more difficult and how scalability is a multidimensional cost function. </li>    <li>Kevin asks about common scalability mistakes and solution patterns. Udi replies with talk of SOA, web services, REST, one-way messaging, pub/sub and offloading things to the background in an asynchronous way. </li>    <li>Kevin follows up with additional questions: Why don't more developers turn to messaging patterns to solve their scalability issues and can one introduce scalability changes incrementally? </li>    <li>Udi discusses the scalability patterns employed by RIA Services for Silverlight and gives his opinion on Azure as a scalability system. </li>    <li>Scott K asks about geographical distribution and Udi gets to the heart of the matter - high-availability means writing data to multiple places which means you are slowing your system down. </li>    <li>K Scott asks Udi about the AppFabric service bus provided by Microsoft and how it compares to already available distributed cache solutions like .NET Service Bus, MassTransit, and NServiceBus. </li> </ul>  <p>[Note: The sound quality for Udi's voice is kind of rough. We tried to clean it up, and this is as good as it's going to get. Just pretend we're talking to him on a CB and things will be fine] </p>  <p>Show Links:</p>  <ul>   <li><a href="http://www.udidahan.com/">The Software Simplist</a> </li>    <li><a href="http://www.nservicebus.com/">NServiceBus</a> </li>    <li><a href="http://www.dotnetrocks.com/default.aspx?showNum=367">Udi Dahan Scales Web Applications!</a> on .NET Rocks </li>    <li><a href="http://en.wikipedia.org/wiki/Reverse_proxy">Reverse Proxy</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Content_delivery_network">Content Distribution Network (CDN)</a> </li>    <li><a href="http://silverlight.net/getstarted/riaservices/">RIA Services for Silverlight</a> </li>    <li><a href="http://www.microsoft.com/windowsazure/">Azure</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/ee706738.aspx">AppFabric Service Bus</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/magazine/dd569756.aspx">.NET Services Bus</a> </li>    <li><a href="http://code.google.com/p/masstransit/">MassTransit</a> </li>    <li><a href="http://ayende.com/Blog/archive/2008/12/17/rhino-service-bus.aspx">Rhino Service Bus</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/magazine/dd347832.aspx">Dublin</a> </li>     </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0067-Udi-Dahan-on-Scalability.mp3">Herding Code 67 - Udi Dahan on Scalability</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0067-Udi-Dahan-on-Scalability.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 66: Brad Wilson and Scott Densmore on iPhone Development</title>
    <link>https://herdingcode.com/herding-code-66-brad-wilson-and-scott-densmore-on-iphone-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-66-brad-wilson-and-scott-densmore-on-iphone-development/</guid>
    <pubDate>Wed, 16 Dec 2009 10:36:52 GMT</pubDate>
    <description><![CDATA[<p>What do Brad Wilson and Scott Densmore have in common? They&apos;re expert .NET developers, a couple of Mac fanboys, and they&apos;re both joining the guys on this week&apos;s episode of</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 66</strong></p>
<p>What do Brad Wilson and Scott Densmore have in common?&#160; They're expert .NET developers, a couple of Mac fanboys, and they're both joining the guys on this week's episode of Herding Code.&#160; Listen in while Brad and, yet another, Scott talk about the Mac, Windows, and the ins and outs of iPhone development:</p>  <ul>   <li>In case you've never heard of them, Brad and Scott D introduce themselves and share their interest in the Mac and iPhone development. </li>    <li>Brad and Scott D talk about Objective-C as it compares to other languages including SmallTalk, C, Ruby, Python, and C#.&#160; </li>    <li>In order to be a great Cocoa developer, do you need to be a good C developer?&#160; Brad and Scot D discuss. </li>    <li>The guys talk about pointers, memory management and the benefits of following language conventions.&#160; Not to be a shill, but Brad notes the brilliance of P/Invoke. </li>    <li>The guys talk through Interface Builder, Xcode, Blend, Visual Studio, the difference between Mac and Windows developer workflow, and the passion around UIs in the Mac world. </li>    <li>Scott K asks about ADO.NET vs Core Data. Jokingly, he asks if there's even a way to save anything using Core Data. </li>    <li>The group quickly discusses available charting APIs for Cocoa and Core Animation libraries. </li>    <li>Brad and Scott D explain that Mac plists are sets of name/value pairs or bastardized xml and Jon asks for clarification on how Mac installations work under the hood. </li>    <li>Kevin asks if MonoTouch is best for C# developers due to language familiarity, the benefits of the rich libraries, garbage collection and potential productivity gains.&#160; Brad and Scott D agree that learning the CocoaTouch platform is most crucial. In comparison, one's language choice a insignificant. So, if one already knows Objective-C, is MonoTouch a waste of time?&#160; </li>    <li>The show starts winding down with a quick discussion on how MonoTouch may be providing views to run on Android, the status of Moonlight and the unbelievable pace in which the Mono team develops. </li>    <li>The group leaves iPhone-land to talk about real-life work. Brad talks about the ASP.NET MVC 2.0 Template and Model Validation work he's been up to, and Scott D notes he's been working on bringing ASP.NET MVC applications the cloud - the Azure Cloud, that is. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://www.agileprogrammer.com/dotnetguy/">Brad Wilson's Blog</a> </li>    <li><a href="http://blogs.msdn.com/scottdensmore/">Scott Densmore's Blog</a> </li>    <li><a href="http://developer.apple.com/tools/xcode/">Xcode</a> </li>    <li><a href="http://monotouch.net/">MonoTouch</a> </li>    <li><a href="http://www.bignerdranch.com/classes/beginning_cocoa.shtml">Cocoa Bootcamp</a> </li>    <li><a href="http://www.bignerdranch.com/">Big Nerd Ranch</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Aaron_Hillegass">Aaron Hillegass</a> </li>    <li><a href="http://www.cocoadev.com/index.pl?AppKit">AppKit</a> </li>    <li><a href="http://en.wikipedia.org/wiki/NeXTSTEP">NeXTSTEP</a> </li>    <li><a href="http://www.wilshipley.com/blog/">Wil Shipley</a> </li>    <li><a href="http://developer.apple.com/carbon/">Carbon</a> </li>    <li><a href="http://www.neopoleon.com/home/">Rory Blyth</a> </li>    <li><a href="http://cocoawithlove.com/">Matt Gallagher, Cocoa with Love</a> </li>    <li><a href="http://www.cimgf.com/">Marcus S. Zarra and Matt Long, </a><a href="http://www.cimgf.com/">Cocoa Is My Girlfriend</a></a> </li>    <li><a href="http://developer.apple.com/macosx/coredata.html">Core Data</a> </li>    <li><a href="http://tirania.org/blog/">Miguel De Icaza</a> </li>    <li><a href="http://www.mono-project.com/Moonlight">Moonlight</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0066-Brad-Wilson-and-Scott-Densmore-on-iPhone-development.mp3">Herding Code 66 - Brad Wilson and Scott Densmore on iPhone Development</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0066-Brad-Wilson-and-Scott-Densmore-on-iPhone-development.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 65: Scott Hanselman on His Secret Ninja Squad and Jon&#x27;s new job (bonus: netbook operating system install clinic!)</title>
    <link>https://herdingcode.com/herding-code-65-scott-hanselman-on-his-secret-ninja-squad-and-jons-new-job-bonus-netbook-operating-system-install-clinic/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-65-scott-hanselman-on-his-secret-ninja-squad-and-jons-new-job-bonus-netbook-operating-system-install-clinic/</guid>
    <pubDate>Sat, 12 Dec 2009 09:19:34 GMT</pubDate>
    <description><![CDATA[<p>In this episode, we talk to Scott Hanselman about Jon&apos;s new job with Microsoft , how (if at all) that affects this podcast, and running Ubuntu on a Dell Mini 9. Scott H talks ab</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 65</strong></p>
In this episode, we talk to <a href="http://hanselman.com">Scott Hanselman</a> about <a href="http://www.hanselman.com/blog/OurLittleTeamIsGrowingWelcomeToJonGallowayAndPeteBrown.aspx">Jon's new job with Microsoft</a>, how (if at all) that affects this podcast, and running Ubuntu on a Dell Mini 9.
<ul>
	<li>Scott H talks about how, other than the obvious request to get Scott Koon removed from the show, there's no need to fear any changes to Herding Code.</li>
	<li>Scott H bemoans the fact that people are so quick to attribute opinions to "working for the man".</li>
	<li>The group discusses whether Scott's demonstration of a datagrid in Scott Guthrie's PDC keynote constitutes "selling out".</li>
	<li>Scott K asks about what Jon's new job is, and what Scott Hanselman's STO group does. Scott Hanselman describes the difference between all the different developer community program manager groups at Microsoft.</li>
	<li>Scott K asks about the lack of diversity on the STO team, and whether there will be more of a focus on data programmability in the future.</li>
	<li>Kevin asks if working for Microsoft makes it tougher to criticize Microsoft. Scott K asks if working for Microsoft makes it hard to criticize competitors.</li>
	<li>Scott Hanselman talks about the irritation of ad hominem attacks which discount opinions under the assumption that they're job-motivated.</li>
	<li>Scott H mentions that he's been test driving Linux and other operating systems on his netbook in passing, which prompts a 5 minute geek-fest between Scott H. and Scott K. about Linux driver troubleshooting.</li>
	<li>Scott K asks Jon what his top priorities are in his new job.</li>
	<li>Scott K comments on the recent lack of focus on Web Forms, e.g. all the PDC videos he saw were using ASP.NET MVC.</li>
	<li>Scott H clarifies who exactly is on his team, and how useful it is to have a team that's got internal Microsoft access but is separate from the product teams.</li>
	<li>Scott K takes us on a discussion of Microsoft certifications - whether the STO team can add some more realism to certifications. Best part: Scott K inadvertently complains about some of the VB6 exams that Scott H had written.</li>
	<li>Scott H and the gang finish thing off with a discussion of certifications, education, and interviews as indicators of effectiveness as a programmer.</li>
</ul>
<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0065-Scott-Hanselman-on-his-Ninja-Squad-and-Jon-s-new-job.mp3">Herding Code 65 - Scott Hanselman on his Ninja Squad and Jon's new job</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0065-Scott-Hanselman-on-his-Ninja-Squad-and-Jon-s-new-job.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 64: Phil Haack on MVC 2</title>
    <link>https://herdingcode.com/herding-code-64-phil-haack-on-mvc-2/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-64-phil-haack-on-mvc-2/</guid>
    <pubDate>Sun, 22 Nov 2009 15:10:56 GMT</pubDate>
    <description><![CDATA[<p>The guys grill Phil on ASP.NET MVC2, and introduce a new segment: Abusive Questions From Twitter! Phil starts with the new &lt;%: code block syntax, IHtmlString, HtmlString, Mvc</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 64</strong></p>
<p>The guys grill Phil on ASP.NET MVC2, and introduce a new segment: Abusive Questions From Twitter!</p>  <ul>   <li>Phil starts with the new &lt;%: code block syntax, IHtmlString, HtmlString, MvcHtmlString </li>    <li>Jon asks about DisplayFor, EditorFor improvements </li>    <li>Phil discusses validation improvements – validation extensibility and client-side validation </li>    <li>MVC 2 is built on .NET 3.5 SP1 </li>    <li>Phil talks about the productivity focus for MVC 2 </li>    <li>New minimal templates, minimized web.config </li>    <li>Phil comments on the recent trend in software development towards streamlining – Windows 7, Snow Leopard, and how that’s also being applied to MVC and Webforms </li>    <li>Phil talks about his work on the Webforms Menu Control to clean up the markup, and how developers will opt-in to new but possibly breaking features </li>    <li>K. Scott asks about the new Areas feature&#160; </li>    <li>Phil talks about Virtual Path Providers working in medium trust, but not until .NET 4 </li>    <li>Kevin asks about what other features weren’t available due to maintaining .NET 3.5 support, and Phil ruminates on how the dynamic keyword could work </li>    <li>Phil speculates how named parameters could be helpful </li>    <li>Scott K asks about when MVC will get more opinionated, perhaps including dependency injection by default. </li>    <li>Phil talks about how MVC has never really been weak on the Model side, and how often people are really complaining about data access. Nothing new on that now, but it might be a focus in MVC 3. </li>    <li>Jon asks about bringing in some focused project templates. </li>    <li>Scott K (again) asks Phil about bringing dependency injection into MVC. Phil talks about why it’s not in there yet, and that you should vote for it in connect if you want it. </li>    <li>Phil discusses how bugs are prioritized on the ASP.NET team. </li>    <li>Scott K asks if Phil has a favorite feature. Phil likes the HTML Encoding syntax best of all. </li>    <li>Kevin asks the standard “when will the Spark view engine replace the webforms view engine” question. </li>    <li>Jon asks about which frameworks and community projects Phil’s taking inspiration from. </li>    <li>Phil talks about how he’s using Subtext to get personal experience with how the new features are working. </li>    <li>Scott K asks about adding in auto-mapping </li>    <li>Jon introduces a new Herding Code segment: Abusive Question From Twitter. We start with one by @<a href="http://twitter.com/alanstevens">alanstevens</a>: why we should care about ASP.NET when there are so many other web frameworks out there? </li>    <li>Scott K talks about how people conflate languages and platforms. </li>    <li>Scott K tries to sneak in an abusive Twitter question, but fails. </li>    <li>Kevin asks what’s changing to make TDD work better in .NET and Visual Studio. </li>    <li>K. Scott talks about how he’s converted his blog over to run on Subtext. </li>    <li>Phil talks about his experiences in developing Subtext, and how that’s been a great way to get exposure to other open source projects and developers. </li>    <li>Jon asks about how improving the data access system for Subtext, because stored procedures make him cry. </li>    <li>Jon asks about the CodePlex foundation, and Scott K complains about how it’s not very transparent. </li>    <li>Phil starts complaining about how newborn babies make it hard to sleep, and things fizzle out. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://haacked.com/">Phil Haack's Blog</a> </li>    <li><a href="http://haacked.com/archive/2009/11/03/html-encoding-nuggets-aspnetmvc2.aspx">HTML Encoding Code Blocks</a> </li>    <li><a href="http://bradwilson.typepad.com/blog/2009/10/enterprise-library-validation-example-for-aspnet-mvc-2.html">Brad Wilson’s post on Enterprise Library Validation in MVC 2</a> </li>    <li><a href="http://sparkviewengine.com/">Spark View Engine</a> </li>    <li><a href="http://www.subtextproject.com/">Subtext</a> blogging engine </li>    <li><a title="http://mvcturbine.codeplex.com/" href="http://mvcturbine.codeplex.com/">MVC Turbine</a> </li>    <li><a href="http://automapper.codeplex.com/">AutoMapper</a> </li>    <li><a href="http://code.google.com/p/autofac/">Autofac</a> </li>    <li>Our interview with <a href="https://herdingcode.com/">Ted Leung</a> </li>    <li><a href="http://www.codeplex.org/about.aspx">CodePlex Foundation</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0064-Phil-Haack-on-MVC-2.mp3">Herding Code 64 - Phil Haack on MVC 2</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0064-Phil-Haack-on-MVC-2.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 63: Victory in Software Development with K Scott Allen</title>
    <link>https://herdingcode.com/herding-code-63-victory-in-software-development-with-k-scott-allen/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-63-victory-in-software-development-with-k-scott-allen/</guid>
    <pubDate>Sat, 24 Oct 2009 14:40:10 GMT</pubDate>
    <description><![CDATA[<p>On the heels of his recent Concept Camp 2009 fireside keynote, K Scott brings his opinion about victory in software development to the podcast. Listen in as the guys consider ho</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 63</strong></p>
On the heels of his recent <a href="http://conceptcamp2009.com/">Concept Camp 2009</a> fireside keynote, K Scott brings his opinion about victory in software development to the podcast. Listen in as the guys consider how to define and measure success, how to solve business problems despite our customers and ourselves, and how to focus less on risk and more on the potential reward.

<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0063-Victory-in-Software-Development-with-K-Scott-Allen.mp3">Herding Code 63 - Victory in Software Development with K Scott Allen</a>



Show Links:
<ul>
 	<li><a href="http://odetocode.com/blogs/scott/archive/2009/09/27/victory-in-software-development.aspx">Victory in Software Development</a></li>
 	<li><a href="http://conceptcamp2009.com/">Concept Camp 2009</a></li>
 	<li><a href="http://girldeveloper.com/">Sara Chipps</a></li>
 	<li><a href="http://weblogs.asp.net/Podwysocki/">Matthew Podwysoki</a></li>
 	<li><a href="http://www.amazon.com/Inmates-Are-Running-Asylum-Products/dp/0672326140">The Inmates are Running the Asylum</a>, <a href="http://en.wikipedia.org/wiki/Alan_Cooper">Alan Cooper</a></li>
 	<li><a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0201616416">Extreme Programming Explained</a>, <a href="http://en.wikipedia.org/wiki/Kent_Beck">Kent Beck</a></li>
 	<li><a href="http://jeffreypalermo.com/blog/debunking-the-duct-tape-programmer/">Debunking the Duct Tape Programmer (Jeffery Palermo)</a></li>
 	<li><a href="http://en.wikipedia.org/wiki/WinFS">WinFS</a></li>
</ul>
<em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0063-Victory-in-Software-Development-with-K-Scott-Allen.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 62: MonoTouch with Miguel de Icaza and Geoff Norton</title>
    <link>https://herdingcode.com/herding-code-62-monotouch-with-miguel-de-icaza-and-geoff-norton/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-62-monotouch-with-miguel-de-icaza-and-geoff-norton/</guid>
    <pubDate>Mon, 12 Oct 2009 06:58:01 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, Jon and Scott Koon pair up with Miguel de Icaza and Geoff Norton of the Mono Project and discuss MonoTouch : Jon asks Geoff Norton, engineering</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 62</strong></p>
<p>In this episode of Herding Code, Jon and Scott Koon pair up with <a href="http://tirania.org/blog/">Miguel de Icaza</a> and <a href="http://blog.sublimeintervention.com/">Geoff Norton</a> of the <a href="http://www.mono-project.com/Main_Page">Mono Project</a> and discuss <a href="http://monotouch.net/">MonoTouch</a>:</p>  <ul>   <li>Jon asks Geoff Norton, engineering lead on the MonoTouch project and founder of the Cocoa# and Objective-C# projects, to give the elevator speech about MonoTouch and why one might choose it over other iPhone development tools.&#160; Geoff explains that MonoTouch is a commercial product from Novell. They have ported the Mono runtime to run on the iPhone thus allowing developers to write full native iPhone applications in languages which target the CLR.&#160; Some might be attracted to MonoTouch because they feel C#, for example, is fluent and expressive compared to Objective-C.&#160; Others might use the product so they can reuse existing components or code when moving to iPhone development. </li>    <li>Miguel shares that there is a strong pattern in Objective-C where you respond to objects through messaging between classes.&#160; In the .NET space, you are most familiar with listening to events with attached methods such as lambda expression or delegates and MonoTouch uses this programming model and expose Cocoa API to be similar to the way C# does things. For example, the use of events, properties, delegates.&#160; He continues by stating you also have access to .NET APIs in addition to all iPhone APIs. </li>    <li>Scott K asks if there are any disconnects with which .NET APIs are available. Geoff shares that MonoTouch is not the entire .NET 2.0 BCL.&#160; In fact, development was started with the Silverlight BCL and additional namespaces were included as development proceeded.&#160; </li>    <li>Geoff mentioned Silverlight. Jon’s Pavlovian Trigger is fired, he starts to drool and programmatically inquires about the potential of running Silverlight applications on the iPhone (even though, as Jon mentions, Apple is currently disallowing it.&#160; Miguel speaks to the MonoTouch’s use of the Silverlight profile drops unnecessary dependencies upon the .NET framework thus providing for a leaner precompilation.&#160; Geoff talks about what would be required to getting Silverlight on the iPhone.&#160; Miguel states that Silverlight on the iPhone would not be a standard Silverlight experience.&#160; Most notably, one would have to go through the AppStore and download a Silverlight enabled application rather than access a Silverlight application through the browser. </li>    <li>Jon asks about the cost associated with developing iPhone applications with MonoTouch. Miguel shares that Mono and Moonlight were basically developed to improve the Linux ecosystem.&#160; As for Mono for the iPhone, it was difficult for Novell to justify the investment for this highly desired feature request so they decided to charge for it. Geoff notes they have a 100% free, non-time limited evaluation version which works with the simulator. It’s only limitation is you can’t get your application onto the device. Please note that you get a $150 discount on MonoTouch if you <a href="http://monospace.us/register">register for MonoSpace</a>. </li>    <li>Jon asks Geoff for an overview on how to get started with MonoTouch development. Geoff provides the high-level steps – get the iPhone SDK from Apple, pay Apple $99 to become registered iPhone developer, load up Mono Develop, create a new iPhone project from template, start typing C# code, you will be using Interface Builder for layout, build and run. </li>    <li>Scott K&#160; calls out how Interface Builder traditionally integrates with XCode.&#160; Geoff comments about Interface Builder with C# and the generation partial classes as code behinds which automatically connects outlets to MonoTouch engine.&#160; Miguel speaks to the advantages of the MonoTouch approach. </li>    <li>The guys talks about XIB (pronounced <em>zib</em>) and NIB files and freeze drying. </li>    <li>Scott K shares listener questions from @hugeonion: Is there is anything that you can’t do using MonoTouch.NET that you could using Objective-C?&#160; Can you mix Objective-C and .NET when you are writing a MonoTouch project?&#160; Geoff gives the liberal-minded answer and then Miguel finishes with the short answer -- “There’s really nothing that you can’t do with MonoTouch that you can do with Objective-C&quot;. “I guess you could argue it’s a Turing machine so you can do anything on anything.” </li>    <li>Scott K asks another listener question from @shamel: What are the plans to improve the MonoTouch debugging story?&#160; Miguel says the debugger will be available faster than you might think.&#160; It’s coming but the decision was made to push to product out sooner than waiting for MonoTouch (and debugging, profilers, code-generator, more APIs) to be perfect. Geoff talks about the updated compiler and the ability to back-trace crashes using DWARF, the standard debugging format which Apple uses. </li>    <li>Jon and Geoff talk about graphics , MonoTouch development on a Power PC Mac and static compilation. Miguel talks about coding on paper (<a href="http://www.pcmag.com/encyclopedia_term/0,2542,t=desk+checking&amp;i=41152,00.asp">desk checking</a>.) </li>    <li>Jon distills MonoTouch development down to two steps: binding to the iPhone APIs and then doing the static compilation to run on the iPhone.&#160; Geoff speaks of support for generics, <a href="http://www.cocoasharp.org/">Cocoa#</a>, <a href="http://objectivecsharp.com/">Objective-C#</a>, Monobjc and binding the CLR to Objective C.&#160; </li>    <li>Scott K asks if they’ll be moving Mono onto the Android. Miguel speaks of Android, Java, managed language, garbage collection, native compilation, current demand and their current focus being Mono for the iPhone. Jon asks if there’s a story for Mono support on Windows Mobile.&#160; After all Windows Mobile does run the .NET compact framework. Jokes and laugh follow… </li>    <li>Jon, Miguel and Geoff talk about MonoTouch iPhone application size. </li>    <li>Miguel talks about embracing cross platform and getting Windows developers working on Mac – and looking cool at Starbucks. </li>    <li>The guys discuss XNA for Silverlight, XNA game developer studio, XNA hosting on iPhone or the fact that you can’t distribution XNA games to the Zune. They also touch upon Mono running on the WII and PS2. </li>    <li>Geoff and Miguel finish up the conversation comments about the MonoSpace, the Open Source and Cross-Platform Conference for Mono and .NET which will be held in Austin this October 27-30. </li> </ul>  <p>Show Links:</p>  <ul>   <li><a href="http://tirania.org/blog/">Miguel de Icaza</a> </li>    <li><a href="http://blog.sublimeintervention.com/">Geoff Norton</a> </li>    <li><a href="http://monotouch.net/">MonoTouch</a> </li>    <li><a href="http://monospace.us/program">MonoSpace</a> </li>    <li><a href="http://www.mono-project.com/Main_Page">Mono</a> </li>    <li><a href="http://www.mono-project.com/Moonlight">Moonlight</a> </li>    <li><a href="http://www.cocoacoder.org/CocoaCoder.org/Hello.html">Austin's Cocoa Coders iPhone Developer User Group</a> – Oct 27th. </li>    <li><a href="http://www.prioconference.de/home.html">Prio Conference in Munich</a> – Oct 29th. </li>    <li><a href="http://blog.scottbellware.com/">Scott Bellware</a> </li>    <li><a href="http://www.hanselman.com/blog/">Scott Hanselman</a> </li>    <li><a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.htm">Objective-C</a> </li>    <li><a href="http://developer.apple.com/TOOLS/xcode/">XCode</a> </li>    <li><a href="http://developer.apple.com/">Apple Developer Connection</a> </li>    <li><a href="http://developer.apple.com/technology/cocoa.html">Cocoa</a> </li>    <li><a href="http://www.cocoasharp.org/">Cocoa#</a> and <a href="http://objectivecsharp.com/">Objective-C#</a> </li>    <li><a href="http://www.microsoft.com/SILVERLIGHT/">Silverlight</a> </li>    <li><a href="http://squeedlyspooch.com/blog/">Chris Toshok</a> </li>    <li><a href="http://www.gtk.org/">GTK+</a> </li>    <li><a href="http://jeffreystedfast.blogspot.com/">Jeffrey Stedfast</a> </li>    <li><a href="http://developer.apple.com/tools/interfacebuilder.html">Interface Builder</a> </li>    <li><a href="http://www.codesnack.com/blog/2009/9/20/getting-started-with-monotouch.html">Getting Started with MonoTouch</a></li>    <li><a href="http://monotouch.info/">monotouch.info</a> </li>    <li><a href="http://mjhutchinson.com/journal/category/mono">Michael Hutchinson</a> </li>    <li><a href="http://twitter.com/hugeonion">The Huge Onion</a> </li>    <li><a href="http://sabonrai.wordpress.com/2009/09/27/monotouch-binding-for-admob/">MonoTouch Binding for AdMob</a> (discussing binding to Objective-C from C#)</li>    <li><a href="http://unity3d.com">Unity</a> </li>    <li><a href="http://www.sil.org/computing/cecil.html#cecil">Cecil</a> </li>    <li>Christian Beaumont, <a href="http://foundation42.com/">Foundation 42</a> </li>    <li><a href="http://www.opengl.org/">OpenGL</a> </li>    <li><a href="http://lewing.org/">Larry Ewing</a> </li>    <li><a href="http://www.kumpera.net/blog/">Rodrigo Kumpera</a> </li>    <li><a href="http://go-mono.com/docs/index.aspx?tlink=0@N:Mono.Simd">Mono.Simd</a> </li>    <li><a href="http://dwarfstd.org/">DWARF</a> </li>    <li><a href="http://www.monobjc.net/">Monobjc</a> </li> </ul>  <p>Quote of the Show:</p>  <ul>   <li>“Do your HTTP Get and parse the result like a man!” - Miguel </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0062-MonoTouch-with-Miguel-de-Icaza-and-Geoff-Norton.mp3">Herding Code 62 - MonoTouch with Miguel de Icaza and Geoff Norton</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0062-MonoTouch-with-Miguel-de-Icaza-and-Geoff-Norton.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 61: CodePlex Foundation, Bing Visual Search, Microsoft Ajax CDN, Zune HD Release</title>
    <link>https://herdingcode.com/herding-code-61-codeplex-foundation-bing-visual-search-microsoft-ajax-cdn-zune-hd-release/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-61-codeplex-foundation-bing-visual-search-microsoft-ajax-cdn-zune-hd-release/</guid>
    <pubDate>Tue, 06 Oct 2009 23:02:58 GMT</pubDate>
    <description><![CDATA[<p>This episode of Herding Code is a roundtable discussion which includes the entire cast. The guys dedicate the majority of the show to the CodePlex Foundation &ndash; what the foundati</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 61</strong></p>
<p>This episode of Herding Code is a roundtable discussion which includes the entire cast. The guys dedicate the majority of the show to the <a href="http://www.codeplex.org/">CodePlex Foundation</a> – what the foundation provides, speculation on what the foundation might accomplished, and how success should be measured.&#160; The guys also offer a glowing review of <a href="http://www.bing.com/visualsearch">Bing Visual Search</a>, they dig into the <a href="http://www.asp.net/ajax/CDN/">Microsoft Ajax CDN</a>, and give their opinions of the recent <a href="http://www.zune.net/en-us/products/zunehd/default.htm">Zune HD Release</a>. </p>  <p>Show Links: </p>  <ul>   <li><a href="http://www.codeplex.org/">CodePlex Foundation</a> </li>    <li><a href="http://blog.scottbellware.com/2009/09/analysis-codeplex-foundation-terms-of.html">Bellware’s CodePlex Foundation Write-up</a> </li>    <li><a href="http://blog.jquery.com/2009/01/14/jquery-13-and-the-jquery-foundation/">jQuery Foundation</a> </li>    <li><a href="http://www.apache.org/">The Apache Software Foundation</a> </li>    <li><a href="http://www.eclipse.org/">The Eclipse Foundation</a> </li>    <li><a href="http://www.mozilla.org/foundation/">Mozilla Foundation</a> </li>    <li><a href="http://www.bing.com/visualsearch">Bing Visual Search</a> </li>    <li><a href="http://www.imdb.com/title/tt0151804/">Office Space</a> </li>    <li><a href="https://www.hibernate.org/343.html">NHibernate</a> </li>    <li><a href="http://nunit.com">NUnit</a> </li>    <li><a href="http://codinghorror.com">Jeff Atwood</a> </li>    <li><a href="http://damieng.com/">Damien Guard</a> </li>    <li><a href="http://code.google.com">Google Code</a> </li>    <li><a href="http://code.google.com/soc/">Google’s Summer of Code</a> </li>    <li><a href="http://www.screwturn.eu/">ScrewTurn Wiki</a> </li>    <li><a href="http://www.gimp.org/">Gimp</a> </li>    <li><a href="http://audacity.sourceforge.net/">Audacity</a> </li>    <li><a href="http://www.inkscape.org/">Inkscape</a> </li>    <li><a href="http://sourceforge.net/">SourceForge</a> </li>    <li><a href="http://www.ayende.com/">Oren Eini</a> </li>    <li><a href="http://www.asp.net/ajax/CDN/">Microsoft Ajax CDN</a> </li>    <li><a href="http://www.codeplex.org/board-of-directors.aspx">CodePlex Foundation Board of Directors</a> </li>    <li><a href="http://tirania.org/blog/">Miguel de Icaza</a>, <a href="http://novell.com">Novell</a> </li>    <li><a href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/BlogID/1/Default.aspx">Shaun Walker</a>, <a href="http://www.dotnetnuke.com">DNN</a> </li>    <li><a href="http://www.sugarcrm.com/crm/">SugarCRM</a> </li>    <li><a href="http://blog.wekeroad.com/">Rob Conery</a> </li>    <li><a href="http://twitter.com/bsimser">Bil Simser</a> (<a href="http://twitter.com/bsimser/statuses/4043859035">@bsimser</a>) </li>    <li><a href="http://logging.apache.org/log4net/index.html">Log4Net</a> </li>    <li><a href="http://www.zune.net/en-us/products/zunehd/default.htm">Zune HD Release</a> </li>    <li><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Library</a> </li>    <li><a href="http://www.akamai.com/">Akamai</a> </li>    <li><a href="http://idunno.org/archive/2009/09/16/quick-thoughts-on-the-microsoft-ajax-cdn.aspx">Barry Dorrans - Quick thoughts on the Microsoft AJAX CDN</a> </li>    <li><a href="http://www.agileprogrammer.com/dotnetguy/">Brad Wilson</a> </li>    <li><a href="http://www.zune.net/en-US/products/zunepass/default.htm">Zune Pass</a> </li>    <li><a href="http://www.last.fm/">Last.fm</a> </li>    <li><a href="http://pandora.com">Pandora</a> </li>    <li><a href="http://hypem.com/">The Hype Machine</a> </li>    <li><a href="http://www.hanselminutes.com/default.aspx?showID=195">Hanselminutiae-seven (Scott Hanselman with Richard Campbell)</a> </li>    <li><a href="http://www.amazon.com/Kind-Blue-Miles-Davis/dp/B000002ADT">Miles Davis Kind of Blue</a> </li>   <li><a href="http://kindofbloop.com/">Kind of Bloop</a> </li>   </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0061-CodePlex-Foundation.mp3">Herding Code 61: CodePlex Foundation, Bing Visual Search, Microsoft Ajax CDN, Zune HD Release</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0061-CodePlex-Foundation.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 60: Spark View Engine with Louis DeJardin</title>
    <link>https://herdingcode.com/herding-code-60-spark-view-engine-with-louis-dejardin/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-60-spark-view-engine-with-louis-dejardin/</guid>
    <pubDate>Wed, 23 Sep 2009 22:53:01 GMT</pubDate>
    <description><![CDATA[<p>In this episode of the Herding Code Podcast, the guys talk to Louis DeJardin about the Spark View Engine. Louis talks about how the Spark View Engine was inspired by NVelocity a</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 60</strong></p>
<p>In this episode of the Herding Code Podcast, the guys talk to Louis DeJardin about the Spark View Engine. </p>  <ul>   <li>Louis talks about how the Spark View Engine was inspired by NVelocity and hatched from a comment thread on Phil Haack’s blog. </li>    <li>Kevin asks about the HTML-like syntax syntax in a Spark view – how it was designed, how it looks, and some of the benefits of a view engine that looks like HTML. </li>    <li>Scott K asks about some of the similarities to Cold Fusion markup. After making Louis squirm a bit, Scott points out the big difference in his eyes is that Spark works as part of an MVC pattern, while Cold Fusion embedded too much logic in the markup. </li>    <li>Jon sets Kevin up to look really good by asking about a feature Kevin requested – safe by default HTML encoding. </li>    <li>Kevin asks about how Spark’s strongly typed ViewData and strongly typed models work. </li>    <li>Jon quizzes Louis about how Master Layouts differ from ASP.NET Webforms MasterPages, Kevin tries to stump him with questions about partial page caching. </li>    <li>Scott K and Louis talk about how Spark was developed, and how TDD made writing a view engine easy. </li>    <li>Kevin and Louis discuss how Spark is being used to generate more than HTML. </li>    <li>Jon asks about how he got all the smarts to write a parser / templating engine. </li>    <li>Scott K speculates about the potential for a custom view engine enabling vendors to offer controls for MVC. Louis tells him that he’s crazy, and the two discuss options for visual designers in the MVC world. </li>    <li>Jon asks some questions about how an HTML-based syntax like Spark could allow for a better designer surface, but Louis convinces him that an HTML-based syntax is probably the best design interface, both for developers and designers. </li>    <li>Kevin asks Louis about the Visual Studio integration for Spark. </li>    <li>Louis takes a listener question from Jeremy Miller about caching compiled views. </li>    <li>K Scott asks about using Spark’s JavascriptViewResult to do JSON powered updates with the same template for both initial and update rendering. Louis points out that it’s possible to write code that’s both c# and Javascript compatible, so it can be used both client-side and server-side. We all agree that’s crazy, but the right kind of crazy. </li>    <li>K Scott asks about his selection of different tracking, source hosting, etc. services for the Spark project. </li>    <li>Vladislav II asks about Dynamic Language support. </li>    <li>Lt. Col. George Armstrong Custer asks about runtime vs. development time compilation, and how Spark runs under medium trust. </li>    <li>Louis explains how Macros allow you to simulate creating reusable helpers inside your templates. </li>    <li>Faustus of Byzantium asked about partials are integrated into views. </li>    <li>Edward I asks about how performance compares to the Web Forms view engine, and if there are any important tips/tricks to get the best performance out of Spark. </li>    <li>Ned Ryerson remembers talking to Louis at PDC, when Louis was pitching Spark to Jeff Atwood The Terrible. Jeff went with the Web Forms view engine which led to his eventual demise in 2012. </li>    <li>Duke Konrad I of Masovia asks Louis about the use of multiple view engines in a website to ease transition. </li>    <li>Kevin closes with some questions about Spark, such as how it plays with ASP.NET MVC 2 and where the name Spark came from. </li>    <li>Postscript – Jon catches up with Louis to ask about his new position at Microsoft. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://whereslou.com/">Lou’s Blog</a> </li>    <li><a href="http://sparkviewengine.com/">Spark View Engine</a> </li>    <li><a href="http://docu.jagregory.com/">docu</a> </li>    <li><a href="http://twitter.com/loudej">@loudej</a> </li>    <li><a href="http://odetocode.com/Blogs/scott/archive/2009/03/12/12631.aspx">K. Scott’s post about the JavascriptViewResult in Spark</a> </li>    <li><a href="http://whereslou.com/2009/03/18/remarkably-smooth-migration-from-aspx-to-spark">Migrating from .aspx to .spark</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0060-Spark-View-Engine-with-Louis-DeJardin.mp3">Herding Code 60: Spark View Engine with Louis DeJardin</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0060-Spark-View-Engine-with-Louis-DeJardin.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 59: Web Standards with Milan Negovan</title>
    <link>https://herdingcode.com/herding-code-59-web-standards-with-milan-negovan/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-59-web-standards-with-milan-negovan/</guid>
    <pubDate>Wed, 09 Sep 2009 05:32:06 GMT</pubDate>
    <description><![CDATA[<p>In this episode of the Herding Code Podcast, the guys sit down with Milan Negovan of ASP.NET Resources to discuss web standards, usability and accessibility. Milan also sh</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 59</strong></p>
<p>In this episode of the Herding Code Podcast, the guys sit down with <a href="http://awww.aspnetresources.com/blog/default.aspx">Milan Negovan</a> of <a href="http://awww.aspnetresources.com/default.aspx">ASP.NET Resources</a> to discuss web standards, usability and accessibility.&#160; Milan also shares his opinions on the onslaught of new technologies coming out of Redmond, why developers should avoid big conferences, the benefits of independent consulting, the motivation of Microsoft MVP Program and his impressions of ALT.NET. </p>  <ul>   <li>The show kicks off with Milan’s explanation of semantic markup – thinking first about content and then presentation – and the Web Standards Trinity which includes Structure (HTML, XHTML, XML), Presentation (CSS), and Behavior (JavaScript).&#160; </li>    <li>Milan talks about Quirks Mode vs Strict Mode. Jon asks about the benefits of XHTML especially with XHTML 2 recently being shot down in favor of HTML 5.&#160; </li>    <li>Milan states that CSS has always been more of a recommendation rather than a true standard.&#160; He asks why anyone would use skins and/or themes. Jon bites and guesses because it is a typical Visual Studio control-first option and themes (unlike cascading style sheets) are always applied last and may enforce corporate design standards. Milan also shares his frustration with the bloated, non-standard markup generated by ASP.NET Server Controls and he names names.&#160; That’s right, DataGrid!&#160; He’s talking about you. </li>    <li>Milan provides an overview of his impressive Microsoft.com redesign experiment and speaks briefly of Section 508 and his Color Blindness Simulator. </li>    <li>K Scott asks what a .NET developer should do to better adhere to web standards. Milan talks specifically about control development, ASP.NET MVC and the shift back to client-side development. </li>    <li>Milan speaks his mind about Silverlight’s poor usability.&#160; He states Silverlight is being marketed to the wrong audience and it is not a replacement for JavaScript. Milan also calls out the educational gap for developers needing to act as designers. Shall I continue?&#160; Jon agrees but provides a rebuttal.&#160; </li>    <li>K Scott seeks Milan’s opinion on new technologies, big conferences, independent consulting, the Microsoft MVP Program and ALT.NET.&#160; Milan shares that you’ll go insane if you try to learn everything which is coming out of Redmond and suggests that developers specialize.&#160; Milan describes big conferences as nothing more than “booze and noise” and recommends developers avoid conferences like Mix and participate in the local community instead.&#160; Milan talks about life as a business owner/independent consultant, job security and building one’s personal brand. Milan questions the motivation of the Microsoft MVP program and suggests it is merely another marketing channel for Microsoft.&#160; Milan shares his positive impressions of ALT.NET and comments on the “remarkable crap” published by Patterns and Practices.&#160; Scott K calls Milan out for being too much of a kiss-up marketing shill. Fin. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://awww.aspnetresources.com/blog/default.aspx">Milan’s Blog</a> </li>    <li><a href="http://twitter.com/MilanNegovan">@MilanNegovan</a> </li>    <li><a href="http://awww.aspnetresources.com/default.aspx">ASP.NET Resources</a> </li>    <li><a href="http://awww.aspnetresources.com/blog/ms_redesign_showcase.aspx">Microsoft.com Home Page Design</a>: Part <a href="http://awww.aspnetresources.com/blog/ms_redesign_showcase.aspx">1</a>, <a href="http://aspnetresources.com/blog/ms_redesign_genesis.aspx">2</a>, <a href="http://awww.aspnetresources.com/blog/ms_redesign_restructuring.aspx">3</a>, <a href="http://aspnetresources.com/blog/ms_redesign_dust.aspx">4</a>, <a href="http://www.aspnetresources.com/blog/ms_redesign_final.aspx">5</a>&#160; </li>    <li><a href="http://www.aspnetresources.com/stuff/nyc_code_camp_march_2007/code_camp.html">Developing Web Applications with ASP.NET and Web Standards</a> </li>    <li><a href="http://www.aspnetresources.com/blog/bait_station_ahead.aspx">Bait Station Ahead</a>&#160; - How to keep your sanity in this onslaught of new technologies </li>    <li><a href="http://www.aspnetresources.com/tools/colorblindness.aspx">Color Blindness Simulator</a> </li>    <li><a href="http://www.alistapart.com/">A List Apart</a> </li>    <li><a href="http://www.smashingmagazine.com/">Smashing Magazine</a> </li>    <li><a href="http://www.access-board.gov/sec508/guide/act.htm">Section 508</a> </li>    <li><a href="http://www.joshholmes.com/blog/">Josh Holmes</a> </li>    <li><a href="http://blogs.msdn.com/JoeStagner/">Joe Stagner</a> </li>    <li><a href="http://blogs.tedneward.com/">Ted Neward</a> </li>    <li><a href="http://sxsw.com/">South by SouthWest</a> </li>    <li><a href="http://www.billbuxton.com/">Bill Buxton</a> </li>    <li><a href="http://www.platinumbay.com/">Steve Andrews</a> </li>    <li><a href="http://netcave.org/">Alan Stevens</a> </li>    <li><a href="http://keithelder.net/blog/">Keith Elder</a> </li>    <li><a href="http://blogs.zdnet.com/microsoft/">Mary Jo Foley</a> </li>    <li><a href="http://www.asp.net/mvc/">ASP.NET MVC</a> </li>    <li><a href="http://www.codeplex.com/MEF">MEF</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/practices/default.aspx">Patterns &amp; Practices</a> </li>    <li><a href="http://www.yoda.arachsys.com/csharp/singleton.html">Implementing the Singleton Pattern in C#</a> </li>    <li><a href="http://www.bostondotnet.org/codecamp/">Boston Code Camp</a> </li>    <li><a href="http://ctdotnet.org/codecamp2.aspx">Connecticut Code Camp</a> </li>    <li><a href="http://utcodecamp.com/">Utah Code Camp</a> </li>    <li><a href="http://richmondcodecamp.org/">Richmond Code Camp</a> </li> </ul>  <p>Book Recommendations from Milan</p>  <ul>   <li><a href="http://www.amazon.com/Universal-Principles-Design-William-Lidwell/dp/1592530079/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1250896578&amp;sr=8-1">Universal Principles of Design</a> </li>    <li><a href="http://www.amazon.com/Non-Designers-Design-Book-3rd-Designers/dp/0321534042/ref=ntt_at_ep_dpi_1">Non-Designer's Design Book</a> </li>    <li><a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1250896673&amp;sr=1-1">Don't Make Me Think: A Common Sense Approach to Web Usability</a> </li>    <li><a href="http://www.amazon.com/Stop-Stealing-Sheep-Find-Works/dp/0201703394/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1250896700&amp;sr=1-1">Stop Stealing Sheep &amp; Find Out How Type Works</a> </li>    <li><a href="http://www.amazon.com/Transcending-CSS-Design-Voices-Matter/dp/0321410971/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1250896768&amp;sr=1-1">Transcending CSS: The Fine Art of Web Design</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0059-Web-Standards-with-Milan-Negovan.mp3">Herding Code 59: Web Standards with Milan Negovan</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><a href="http://www.red-gate.com/products/ants_memory_profiler/memory_profiling_made_simple.htm?utm_source=infozerk&amp;utm_medium=box&amp;utm_term=1777&amp;utm_content=memprofsimple&amp;utm_campaign=antsmemoryprofiler"><img style="float: none" alt="" src="https://herdingcode.com/wp-content/uploads/MemPro_Made_Easy_300x250-1.gif/" height="190" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0059-Web-Standards-with-Milan-Negovan.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 58: Presentation Patterns with Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (Part 2)</title>
    <link>https://herdingcode.com/herding-code-58-presentation-patterns-with-jeremy-miller-ward-bell-rob-eisenberg-and-glenn-block-part-2/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-58-presentation-patterns-with-jeremy-miller-ward-bell-rob-eisenberg-and-glenn-block-part-2/</guid>
    <pubDate>Mon, 24 Aug 2009 23:32:45 GMT</pubDate>
    <description><![CDATA[<p>How about that? You stuck around! It was the Waylon Jennings, Good Ol&apos; Boys, Dukes of Hazzard, freeze frame cliffhanger at the end of Part 1 which hooked you, wasn&apos;t</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 58</strong></p>
<p>How about that?&#160; You stuck around!&#160; It was the Waylon Jennings, Good Ol' Boys, Dukes of Hazzard, freeze frame cliffhanger at the end of Part 1 which hooked you, wasn't it?&#160; Undoubtedly you have been on the edge of your seat for days, just waiting to see how the show turns out.&#160; Well, wait no further.&#160; Here's the commercial free, dramatic conclusion to the longest Presentation Patterns discussion ever.</p>  <p>When we last left our heroes, Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block were in the thick of their discussion.&#160; Jeremy had just finished explaining the role of the Screen Conductor and Ward was ready to start flushing out implementation strategies.&#160; That is, implementation strategies which might work across most solutions.&#160; </p>  <p>But thankfully, Glenn starts by stepping back a bit and asking how the presentation patterns discussion fits in the context of mainstream development.</p>  <p>Will the guys provide a single answer to the age-old question, "Which came first the View or the ViewModel?"&#160; Is there a one size implementation which fits all solutions?&#160; Will this conversation ever end?&#160; Find out this week on Herding Code.</p>  <p>Show Links: </p>  <ul>   <li><a href="http://codebetter.com/blogs/jeremy.miller/">Jeremy Miller</a>, <a href="http://www.dovetailsoftware.com/">Dovetail Software</a> </li>    <li><a href="http://neverindoubtnet.blogspot.com/">Ward Bell</a>, <a href="http://www.ideablade.com">IdeaBlade</a> </li>    <li><a href="http://devlicio.us/blogs/rob_eisenberg/default.aspx">Rob Eisenberg</a>, <a href="http://devlicio.us/blogs/rob_eisenberg/archive/2008/01/07/introducing-caliburn-an-mvc-mvp-wpf-framework.aspx">Caliburn</a>, <a href="http://www.bluespire.com/">Blue Spire</a> </li>    <li><a href="http://codebetter.com/blogs/glenn.block/default.aspx">Glenn Block</a>, <a href="http://microsoft.com">Microsoft</a> </li>    <li><a href="http://www.microsoft.com/video/en/us/details/1eea789b-c69c-4b09-a13b-b7422c0ff104">Expression SketchFlow</a> </li>    <li><a href="http://www.microsoft.com/expression/products/Blend_Overview.aspx">Expression Blend</a> </li>    <li><a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a> </li>    <li><a href="http://jonas.follesoe.no/">Jonas Follesoe</a> </li>    <li><a href="http://www.ndc2009.no/en/">NDC2009 - Norwegian Developers Conference</a> </li>    <li><a href="http://www.castleproject.org/container/index.html">Windsor</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/practices/default.aspx">Pattern and Practices</a> </li>    <li><a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/07/25/the-build-your-own-cab-series-table-of-contents.aspx">Build Your Own CAB Series by Jeremy Miller</a>       <br /></li> </ul>  <p></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0058-Presentation-Patterns-with-Jeremy-Miller-Ward-Bell-Rob-Eisenberg-and-Glenn-Block-Part-2.mp3">Herding Code 58: Presentation Patterns with Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (Part 2)</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><a href="http://www.red-gate.com/products/ants_memory_profiler/memory_profiling_made_simple.htm?utm_source=infozerk&amp;utm_medium=box&amp;utm_term=1777&amp;utm_content=memprofsimple&amp;utm_campaign=antsmemoryprofiler"><img style="float: none" alt="" src="https://herdingcode.com/wp-content/uploads/MemPro_Made_Easy_300x250-1.gif/" height="190" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0058-Presentation-Patterns-with-Jeremy-Miller-Ward-Bell-Rob-Eisenberg-and-Glenn-Block-Part-2.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 57: Presentation Patterns with Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (Part 1)</title>
    <link>https://herdingcode.com/herding-code-57-presentation-patterns-with-jeremy-miller-ward-bell-rob-eisenberg-and-glenn-block-part-1/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-57-presentation-patterns-with-jeremy-miller-ward-bell-rob-eisenberg-and-glenn-block-part-1/</guid>
    <pubDate>Wed, 19 Aug 2009 20:01:03 GMT</pubDate>
    <description><![CDATA[<p>Have you seen the circus gag where clown after clown emerges from the smallest car one could possibly image? Well, this week on Herding Code, the guys attempt that very sa</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 57</strong></p>
<p>Have you seen the circus gag where clown after clown emerges from the smallest car one could possibly image?&#160; Well, this week on Herding Code, the guys attempt that very same trick!&#160; Listen in as Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (that's right, four guests!) join the cast and talk Presentation Patterns.&#160; This conversation started earlier this week on Twitter and it is shows no sign of slowing down.&#160; Join us this week and next for an enlightening and exhaustive discussion about Views and Models and ViewModels and everything in between.&#160; </p>  <ul>   <li>Kevin asks the four guests to introduce themselves and then turns the podcast up to 11. </li>    <li>Jeremy kicks off the conversation with the "View First vs ViewModel First" discussion.&#160; Jeremy talks about Views, ViewModels, Presenters, Behaviors, Implementation Detail, Separated Presentation, Passive View, iView Interface, Screen Activation, and User Controls... In summary, he's pro-ViewModel or Presenter first. </li>    <li>Ward asks if anyone wishes to defend the View First position. </li>    <li>Rob shares that he tends to create his View and Presenter at the same time (although he's mostly a Model kind of guy.)&#160; Rob also calls out that he does a lot of prototyping in his workflow. </li>    <li>Ward talks about where his development always starts - sketching out the UI with his clients.&#160; The ViewModel is ultimately developed to support the interaction discovered in sketching.&#160; </li>    <li>Rob agrees. Talks more about prototyping first, gathering requirements, user feedback, workflow, architecture and conventions. </li>    <li>Jeremy considers application navigation, behavioral aspects of screens and the contract for view. </li>    <li>Glenn calls out the difference between Balsamiq mockups and screens which are maintained by a designer in Blend.&#160; Which approach best supports the tooling experience, maintainability, and testability?&#160; Glenn references Jonas Follesoe and how his designer girlfriend couldn't function unless he defined the View first.&#160; Glenn initiates conversations about Service Locators. </li>    <li>Jeremy questions whether one needs that level of detail.&#160; Do you need to fake in a service locator for your designer experience or are there alternatives? </li>    <li>Glenn stresses that we must think about the designer (albeit there aren't many right now), consider tradeoffs with varying approaches, talks about Prism and Patterns and Practices experiences, and tooling - particularly Blend. </li>    <li>Rob talks about providing simple conventions which are taught to designers in lieu of using an inversion of control containers like Windsor. </li>    <li>Glenn asks what the designer would see inside of Blend in this case and Rob isn't aware of&#160; any limitations with this approach.&#160; Is this an issue of designer not having sample data to work with? </li>    <li>Jon shares his experience at Vertigo - applications favor design and tooling, applications don't have complex business rules, applications are Blendable. </li>    <li>Jeremy appreciates that appearance may be the most challenging aspect of some applications.&#160; In this case, maybe View First is the most appropriate approach but having Blend driving workflow is a case of the tail wagging the dog.&#160; We need to consider the line of business applications and in that case ViewModel or Presenter must come first. </li>    <li>Glenn notes that the View being created first as part of instantiation does not correlate to whether the ViewModel drives behavior from that point on. View First is at the point of activation.&#160; Whether the view is injected into ViewModel or the ViewModel get set into the View, the ViewModel is the guy which is in control. </li>    <li>Jeremy explains the Screen Activation pattern and some fairly complex scenarios where logic is executed before the view is activated.&#160; </li>    <li>Ward states that he is not a fan of the view determining the ViewModel or the ViewModel selecting the View and prompts Jeremy by asking if a factory could pull the right pieces together and sequence them. </li>    <li>Jeremy takes Ward's queue and talks about the Screen Activator acting as the gatekeeper which puts screens together.&#160; Jeremy reference the Caliburn approach. </li>    <li>Rob clarifies the Caliburn ViewModels hierarchy and the use of screen activators and the composite pattern. </li>    <li>Glenn talks a bit about complexity, CAB, debugging hierarchies, event aggregators and messaging. </li>    <li>Jeremy calls out the benefit of using a composite pattern on a dashboard type application where a part of the screen may act as an application itself but an event aggregator would be best of cross-piece communication. </li>    <li>Rob notes that communication in Caliburn is local - it is parent to child or child to parent and this approach can really simplify development. </li>    <li>Jon and Rob discuss the approach of simply navigating between two tabs.&#160; Would you use event aggregation, publishing event, commanding or what? </li>    <li>Jeremy gives detail to the Screen Conductor role and pattern and Rob stresses the value of methods such as Initialize, Activate, Deactivate, Shutdown and CanShutdown. Jeremy and Glenn walk through an example. </li>    <li>Glenn, Rob and Jeremy consider roles and patterns and if they vary from application to application.&#160; Is there an established best practice?&#160; Jeremy believes roles seem to be consistent but implementation changes from project to project.&#160; </li>    <li>Ward wraps up Part 1 stating that he agrees with the idea of like roles but not ready to lock into any implementation.&#160; He suggests we call out the actors and see how it plays...&#160; </li>    <li>This conversation just won't end.&#160; Be sure to tune in next week for Part 2. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://codebetter.com/blogs/jeremy.miller/">Jeremy Miller</a>, <a href="http://www.dovetailsoftware.com/">Dovetail Software</a> </li>    <li><a href="http://neverindoubtnet.blogspot.com/">Ward Bell</a>, <a href="http://www.ideablade.com">IdeaBlade</a> </li>    <li><a href="http://devlicio.us/blogs/rob_eisenberg/default.aspx">Rob Eisenberg</a>, <a href="http://devlicio.us/blogs/rob_eisenberg/archive/2008/01/07/introducing-caliburn-an-mvc-mvp-wpf-framework.aspx">Caliburn</a>, <a href="http://www.bluespire.com/">Blue Spire</a> </li>    <li><a href="http://codebetter.com/blogs/glenn.block/default.aspx">Glenn Block</a>, <a href="http://microsoft.com">Microsoft</a> </li>    <li><a href="http://www.microsoft.com/video/en/us/details/1eea789b-c69c-4b09-a13b-b7422c0ff104">Expression SketchFlow</a> </li>    <li><a href="http://www.microsoft.com/expression/products/Blend_Overview.aspx">Expression Blend</a> </li>    <li><a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a> </li>    <li><a href="http://jonas.follesoe.no/">Jonas Follesoe</a> </li>    <li><a href="http://www.ndc2009.no/en/">NDC2009 - Norwegian Developers Conference</a> </li>    <li><a href="http://www.castleproject.org/container/index.html">Windsor</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/practices/default.aspx">Pattern and Practices</a> </li>    <li><a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/07/25/the-build-your-own-cab-series-table-of-contents.aspx">Build Your Own CAB Series by Jeremy Miller</a>       <br /></li> </ul>  <p></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0057-Presentation-Patterns-with-Jeremy-Miller-Ward-Bell-Rob-Eisenberg-and-Glenn-Block-Part-1.mp3">Herding Code 57: Presentation Patterns with Jeremy Miller, Ward Bell, Rob Eisenberg and Glenn Block (Part 1)</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>  <p><a href="http://www.red-gate.com/products/ants_memory_profiler/memory_profiling_made_simple.htm?utm_source=infozerk&amp;utm_medium=box&amp;utm_term=1777&amp;utm_content=memprofsimple&amp;utm_campaign=antsmemoryprofiler"><img style="float: none" alt="" src="https://herdingcode.com/wp-content/uploads/MemPro_Made_Easy_300x250-1.gif/" height="190" /></a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0057-Presentation-Patterns-with-Jeremy-Miller-Ward-Bell-Rob-Eisenberg-and-Glenn-Block-Part-1.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 56: Markus V&#xF6;lter on Model-Driven Development, DSLs and Product Line Engineering</title>
    <link>https://herdingcode.com/herding-code-56-markus-vlter-on-model-driven-development-dsls-and-product-line-engineering/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-56-markus-vlter-on-model-driven-development-dsls-and-product-line-engineering/</guid>
    <pubDate>Fri, 07 Aug 2009 19:47:17 GMT</pubDate>
    <description><![CDATA[<p>You know Markus V&ouml;lter as the founder and voice of Software Engineering Radio . Well, this week on Herding Code, Markus finds himself on the other side of the microphone &ndash; field</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 56</strong></p>
You know <a href="http://voelterblog.blogspot.com/">Markus Völter</a> as the founder and voice of <a href="http://www.se-radio.net/">Software Engineering Radio</a>. Well, this week on Herding Code, Markus finds himself on the other side of the microphone – fielding, rather than asking, questions. Listen in as Markus explains model-driven software development and product line engineering. Learn about modeling, domain-specific languages, code generation, Eclipse, development outside of the Microsoft/.NET world and much, much more, this week on Herding Code.
<ul>
	<li>K Scott leads the discussion asking about developing with Eclipse. Jon asks how Eclipse's plugin model compares to that of Visual Studio.</li>
	<li>K Scott introduce the topic of model-driven development and DSLs. Markus steps back and takes some time to talk about terminology.</li>
	<li>Markus shares why UML can’t be used to appropriately describe one’s domain and jokes that Microsoft has been ignoring UML for years but that are now gravitating toward it just as everyone else is moving away.</li>
	<li>Markus discusses the difference between modeling and programming.</li>
	<li>Kevin asks Markus his opinion of Oslo and M, the Oslo Modeling Language. Markus says it is difficult to compare Oslo to Textual Modeling Framework (TMF) found in Eclipse, talks about code generation being incorporated (or not) into Oslo and shares his thoughts about competition between groups at Microsoft. K Scott and Markus discuss their concern with Oslo becoming an extension of SQL and the mixed messages Microsoft is sending.</li>
	<li>Markus talks about the blurring lines between External vs Internal DSLs.</li>
	<li>K Scott and Markus discuss productivity gains when incorporating modeling into one’s development.</li>
	<li>Markus shares the things which changed and influenced his career – design patterns and modeling. Markus stresses that building languages and generators is more applicable to software development than learning the API-of-the-day. K Scott and Markus talk about learning, focusing on the important stuff and separating technical and domain concerns.</li>
	<li>Jon asks about Microsoft Axum. Markus explains Axum as “Erlang for .NET” and expands upon the benefits of concurrent and functional programming.</li>
	<li>The show finishes with Markus providing a very nice overview of Product Line Engineering.</li>
</ul>
Show Links:
<ul>
	<li><a href="http://www.voelter.de/">Markus’ Site</a></li>
	<li><a href="http://voelterblog.blogspot.com/">Markus’ Blog</a></li>
	<li><a href="www.se-radio.net">Software Engineering Radio</a></li>
	<li><a href="http://www.codegeneration.net/cg2009/">Code Generation Conference</a></li>
	<li><a href="http://blogs.msdn.com/stevecook/">Steve Cook</a></li>
	<li><a href="http://en.wikipedia.org/wiki/Domain-specific_language">DSL (Domain-Specific Language)</a></li>
	<li><a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML (Unified Modeling Language)</a></li>
	<li><a href="http://www.omg.org/">OMG (Object Modeling Group)</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/netframework/aa663328.aspx">Windows Workflow Foundation (WF)</a></li>
	<li><a href="http://www.oopsla.org/oopsla2009/">OOPSLA (Object-Oriented Programming, Systems, Languages, and Applications)</a></li>
	<li><a href="http://www.eclipse.org/">Eclipse</a></li>
	<li><a href="http://www.eclipse.org/modeling/tmf/">Textual Modeling Framework (TMF)</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">Oslo</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/library/dd285282.aspx">M (Oslo Modeling Language)</a></li>
	<li><a href="http://www.pluralsight.com/community/blogs/dbox/">Don Box</a></li>
	<li><a href="http://sellsbrothers.com/conference/">DSL DevCon</a></li>
	<li><a href="http://www.scala-lang.org/">Scala</a></li>
	<li><a href="http://convergepl.org/">Converge</a></li>
	<li><a href="http://tratt.net/laurie/">Laurence Tratt</a></li>
	<li><a href="http://www.jetbrains.com/mps/index.html">MPS (Meta Programming System)</a></li>
	<li><a href="http://www.jetbrains.com/">Jetbrains</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/oslo/dd727732.aspx">Textual DSLs and Code Generation with Eclipse Tools</a> (Markus’ DSL DevCon Presentation)</li>
	<li><a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx">Visual Studio 2010</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/library/ms754130.aspx">WPF (Windows Presentation Foundation)</a></li>
	<li><a href="http://code.msdn.microsoft.com/mef">MEF (Managed Extensibility Framework)</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/library/bb126235.aspx">DSL Toolkit</a></li>
	<li><a href="http://martinfowler.com/">Martin Fowler</a></li>
	<li><a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612">Gang of Four Book</a></li>
	<li><a href="http://voelterblog.blogspot.com/2009/05/microsoft-axum-erlang-for-net.html">Microsoft Axum: “Erlang for .NET”</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx">Microsoft Axum</a></li>
	<li><a href="http://erlang.org/">Erlang</a></li>
	<li><a href="http://www.eaipatterns.com/PipesAndFilters.html">Pipes and Filters Design Pattern</a></li>
	<li><a href="http://en.wikipedia.org/wiki/Product_Family_Engineering">Product Line Engineering</a></li>
	<li><a href="http://splc.net/">SPLC (Software Product Line Conference)</a></li>
	<li><a href="http://www.modelsconference.org/">Models Conference</a></li>
</ul>
<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0056-Markus-Volter-on-Model-Driven-Development-DSLs-and-Product-Line-Engineering.mp3">Herding Code 56: Markus Völter on Model-Driven Development, DSLs and Product Line Engineering</a>



<em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em>

<a href="http://www.red-gate.com/products/ants_memory_profiler/memory_profiling_made_simple.htm?utm_source=infozerk&amp;utm_medium=box&amp;utm_term=1777&amp;utm_content=memprofsimple&amp;utm_campaign=antsmemoryprofiler"><img style="float: none" src="https://herdingcode.com/wp-content/uploads/MemPro_Made_Easy_300x250-1.gif/" alt="" height="190" /></a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0056-Markus-Volter-on-Model-Driven-Development-DSLs-and-Product-Line-Engineering.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 55: Nate Kohari brings Your Moment of Zen</title>
    <link>https://herdingcode.com/herding-code-55-nate-kohari-brings-your-moment-of-zen/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-55-nate-kohari-brings-your-moment-of-zen/</guid>
    <pubDate>Thu, 30 Jul 2009 07:55:00 GMT</pubDate>
    <description><![CDATA[<p>Nate Kohari ? Kanban Boards? Continuous Improvement? Zen ? Stop right there! We know what you&apos;re thinking. You already heard this episode about three weeks ago on that oth</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 55</strong></p>
<p><a href="http://kohari.org/">Nate Kohari</a>? Kanban Boards? Continuous Improvement? <a href="http://agilezen.com">Zen</a>? Stop right there! We know what you're thinking.&#160; You already heard this episode about three weeks ago on that <a href="http://hanselminutes.com/">other podcast</a>, right?&#160; Well, think again, because this week on Herding Code, the guys pick up where <a href="http://hanselminutes.com/default.aspx?showID=188">that interview</a> left off.&#160; Listen in as Nate Kohari, the creator of <a href="http://ninject.org">Ninject</a>, talks about the technical nuts and business bolts of his new startup. Find out why Nate choose to build his online product predominantly on a Microsoft stack, how the site is going to scale, how he processes payments, and much, much more, this week on Herding Code.</p>  <ul>   <li>Kevin sets the tone of the show and notes that the guys are going to steer clear of the questions already addressed on <a href="http://hanselminutes.com/default.aspx?showID=188">a recent Hanselman show</a>.&#160; This talk will focus on technical and startup details. </li>    <li>Nate comments on why he build his application using the Microsoft stack.&#160; After all, most startups don't chose this path.&#160; </li>    <li>The guys talk about multiple browser support, jQuery, jQuery Plugins, CSS and Firefox Add-ons. </li>    <li>Jon asks about architectural patterns.&#160; Nate talks about ASP.NET MVC with the Spark View Engine. </li>    <li>Kevin asks about online payment integration? Was it painful? </li>    <li>Nate discusses hosting and scalability. </li>    <li>Scott K asks about <a href="http://nikibeth.com">the brains behind the operation</a> and how her background may have inspired Zen's UI and overall flow. </li>    <li>Kevin asks Nate for any "words of wisdom" for those thinking about launching a startup. </li>    <li>Kevin wraps up the show asking Nate about what's to come with Ninject and Zen. </li> </ul>  <p>Zen Coupon Code: <strong>KAIZEN</strong>&#160; <br /><em>50% off the first month, last to the end of July.</em></p>  <p>Show Links: </p>  <ul>   <li><a href="http://kohari.org/">Nate Kohari's Discord &amp; Rhyme</a> </li>    <li><a href="http://twitter.com/nkohari/">Nate Kohari on Twitter</a> </li>    <li><a href="http://ninject.org">Ninject</a> </li>    <li><a href="http://agilezen.com">Zen</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Lean_software_development">Lean Software Development</a> </li>    <li><a href="http://hanselminutes.com/default.aspx?showID=188">Hanselminutes</a> </li>    <li><a href="http://nikibeth.com">Nicole Kohari</a> </li>    <li><a href="http://averyblog.com/">James Avery</a> </li>    <li><a href="http://mjeaton.net/blog/">Mike Eaton</a> </li>    <li><a href="http://twitter.com/jaymed">Jayme Davis</a> </li>    <li><a href="http://www.lostechies.com/blogs/sean_chambers/">Sean Chambers</a> </li>    <li><a href="https://www.hibernate.org/343.html">NHibernate</a> </li>    <li><a href="http://www.hookedonlinq.com/LINQToNHibernate.ashx">LINQ to NHibernate</a> </li>    <li><a href="http://jquery.com">jQuery</a> </li>    <li><a href="http://jqueryui.com/">jQuery UI</a> </li>    <li><a href="http://rubyonrails.org/">Ruby on Rails</a> </li>    <li><a href="http://mono-project.com/Main_Page">Mono</a> </li>    <li><a href="http://www.asp.net/mvc/">ASP.NET MVC</a> </li>    <li><a href="http://haacked.com">Phil Haack</a> </li>    <li><a href="http://www.castleproject.org/monorail/">MonoRail</a> </li>    <li><a href="http://sparkviewengine.com/">Spark View Engine</a> </li>    <li><a href="http://docs.jquery.com/Plugins/Metadata/metadata">jQuery Metadata Plugin</a> </li>    <li><a href="http://browsershots.org/">BrowserShots</a> </li>    <li><a href="http://www.xenocode.com/Browsers/">Xenocode</a> </li>    <li><a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a> </li>    <li><a href="https://addons.mozilla.org/en-US/firefox/addon/6683">Firefox Firecookie Add-ons</a> </li>    <li><a href="http://www.amcharts.com/">amCharts</a> </li>    <li><a title="http://code.google.com/apis/chart/basics.html" href="http://code.google.com/apis/chart/basics.html">Chart Basics</a> </li>    <li><a href="http://rafael.adm.br/css_browser_selector/">CSS Browser Selector</a> </li>    <li><a href="http://www.akamai.com/">Akamai</a> </li>    <li><a href="http://code.google.com/apis/ajaxlibs/">Google CDN</a> </li>    <li><a href="http://raclspace.com">Rackspace</a>, <a href="http://www.rackspacecloud.com/">Rackspace Cloud (Mosso)</a> </li>    <li><a href="http://aws.amazon.com/cloudfront/">Amazon CloudFront</a> </li>    <li><a href="http://www.braintreepaymentsolutions.com/">BrainTree Payment Solutions</a> </li>    <li><a href="http://telligent.com/">Telligent</a> </li>    <li><a href="http://sethgodin.typepad.com/the_dip/">The Dip by Seth Godin</a> </li>    <li><a href="http://www.poppendieck.com/">Mary and Tom Poppendieck</a> </li>    <li><a href="http://www.37signals.com/">37signals</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0055-Nate-Kohari-brings-Your-Moment-of-Zen.mp3">Herding Code 55: Nate Kohari brings Your Moment of Zen</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0055-Nate-Kohari-brings-Your-Moment-of-Zen.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 54: Rob Conery interviews the Herding Code guys</title>
    <link>https://herdingcode.com/herding-code-54-rob-conery-interviews-the-herding-code-guys/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-54-rob-conery-interviews-the-herding-code-guys/</guid>
    <pubDate>Sat, 18 Jul 2009 07:17:43 GMT</pubDate>
    <description><![CDATA[<p>Let&rsquo;s keep the party going! In this very special episode of Herding Code, Rob Conery puts Jon, Scott K and Kevin on the spot as he turns the tables and asks his own questions an</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 54</strong></p>
Let’s keep the party going! In this very special episode of Herding Code, Rob Conery puts Jon, Scott K and Kevin on the spot as he turns the tables and asks his own questions and passes his own judgments. Do you want to know how Herding Code came about? Are you curious how Rob and the guys feel Herding Code differs from the other podcasts? Have you ever wondered how the Herding Code members might map to the cast of The View? All in good fun, Rob derails the show and gives us a behind the scenes look into Herding Code productions.
<ul>
	<li>The guys try to explain the value of Twitter to Rob. "Twitter makes me more productive." "You must cultivate your network." "It is all about who you follow." "Twitter is a fishing net." "I can quit at anytime."</li>
	<li>Jon shares how Herding Code started with an inadvertent Skype conversation.</li>
	<li>Scott K talks about Herding Code’s diverse guest list which doesn’t consist of the usual list of suspects which might be regulars on other shows.</li>
	<li>The Kevin Dente Roast continues…</li>
	<li>Rob compares the Herding Code with The View, identifies each cast members role and announces that Herding Code needs to build in the happy hour aspect of podcasting. Have another beer, Rob.</li>
	<li>Jon talks about cannibalism and attacking oneself.</li>
	<li>The guys discuss Rob’s new <span style="text-decoration: line-through;">spokesmodel</span> spokesman position at Microsoft, ongoing <a href="http://blog.wekeroad.com/category/kona/">Kona development</a> and a bit about community outreach.</li>
	<li>Are you missing K Scott? Tune into this week’s show to find out what he’s doing now. You may be utterly surprised.</li>
</ul>
Show Links:
<ul>
	<li><a href="http://blog.wekeroad.com/">Rob Conery</a></li>
	<li><a href="http://codinghorror.com">Jeff Atwood</a></li>
	<li><a href="http://www.hanselman.com/blog/">Scott Hanselman</a>, <a href="http://www.hanselminutes.com/">Hanselminutes</a></li>
	<li><a href="http://ejohn.org/blog/">John Resig</a></li>
	<li><a href="http://haacked.com/">Phil Haack</a></li>
	<li><a href="http://netcave.org/">Alan Stevens</a></li>
	<li><a href="http://blogs.msdn.com/gduthie/">G. Andrew Duthie</a></li>
	<li><a href="http://codebetter.com/blogs/gregyoung/">Greg Young</a></li>
	<li><a href="http://wildermuth.com/">Shawn Wildermuth</a></li>
	<li><a href="http://blog.theaccidentalgeek.com/">Joe Brinkman</a></li>
	<li><a href="http://www.dotnetnuke.com/Community/Blogs/tabid/825/BlogID/1/Default.aspx">Shaun Walker</a></li>
	<li><a href="http://www.dotnetnuke.com/">DotNetNuke</a></li>
	<li><a href="http://techsmith.com">TechSmith</a>, <a href="http://www.techsmith.com/download/snagittrialthx.asp">SnagIt</a>, <a href="http://www.jingproject.com/">Jing</a></li>
	<li><a href="http://code.google.com/p/v8/">V8 JavaScript Engine</a></li>
	<li><a href="http://secretgeek.net/">Leon Bambrick</a> – <a href="http://secretgeek.net/sync_live.asp">New Synchronization Idea Overlooked By Microsoft Live team</a></li>
	<li><a href="http://codebetter.com/blogs/glenn.block/Default.aspx">Glenn Block</a></li>
	<li><a href="http://www.sauria.com/blog/">Ted Leung</a></li>
	<li><a href="http://www.voelter.de/">Markus Völter</a></li>
	<li><a href="http://weblogs.asp.net/Podwysocki/">Matt Podwysocki</a></li>
	<li><a href="http://blogs.msdn.com/sburke/">Shawn Burke</a></li>
	<li><a href="http://weblogs.asp.net/bleroy/">Bertrand Le Roy</a></li>
	<li><a href="http://stephenwalther.com/blog/default.aspx">Stephen Walther</a></li>
	<li><a href="http://www.dotnetrocks.com/">DotNetRocks</a></li>
	<li><a href="http://elegantcode.com/category/codecast/">Elegant Code Podcast</a></li>
</ul>
<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0054-Rob-Conery-interviews-the-Herding-Code-guys.mp3">Herding Code 54: Rob Conery interviews the Herding Code guys</a>



<em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em>. Thanks!</em>

<a href="http://www.red-gate.com/products/ants_memory_profiler/memory_profiling_made_simple.htm?utm_source=infozerk&amp;utm_medium=box&amp;utm_term=1777&amp;utm_content=memprofsimple&amp;utm_campaign=antsmemoryprofiler"><img src="https://herdingcode.com/wp-content/uploads/MemPro_Made_Easy_300x250-1.gif/" alt="" height="190" style="float:none;" /></a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0054-Rob-Conery-interviews-the-Herding-Code-guys.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 53: SubSonic 3.0 Release Party with Rob Conery</title>
    <link>https://herdingcode.com/herding-code-53-subsonic-3-0-release-party-with-rob-conery/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-53-subsonic-3-0-release-party-with-rob-conery/</guid>
    <pubDate>Wed, 08 Jul 2009 23:55:02 GMT</pubDate>
    <description><![CDATA[<p>What? You thought SubSonic was dead! Well, crack open a beer and join the party - the SubSonic 3.0 Release Party! That&apos;s right. It is finally here and Rob Conery (Herding</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 53</strong></p>
<p>What? You thought <a href="http://blog.wekeroad.com/subsonic/subsonic-rip/">SubSonic was dead!</a> Well, crack open a beer and join the party - the SubSonic 3.0 Release Party!&#160; That's right. It is finally here and Rob Conery (Herding Code's first repeat guest) gets a little rowdy announcing the new features.&#160; Listen in as Rob speaks of SubSonic, the new role he's playing at Microsoft, why he's given up on Twitter and why Kevin Dente deserves to be roasted.&#160; Does Rob completely derail the show?&#160; Find out this week on Herding Code.</p>  <ul>   <li>Jon kicks off the show asking Rob for some clarity on his job at Microsoft. Rob refuses to answer the question and unveils his plan to completely derail the podcast.&#160; This leads into the first ever Kevin Dente Roast. </li>    <li>After things settle down, Rob announces SubSonic 3.0 and the "technical part of the podcast" is initiated. </li>    <li>Rob talks to SubSonic details - specifically, <a href="http://subsonicproject.com/docs/Using_ActiveRecord">ActiveRecord</a>, REST Handler, <a href="http://subsonicproject.com/docs/IQueryable">Linq engine</a>, <a href="http://subsonicproject.com/docs/Using_SimpleRepository">SimpleRepository</a>, <a href="http://subsonicproject.com/docs/T4_Templates">templating system</a>, the use of <a href="http://www.codeplex.com/IQToolkit">the iQueryable Toolkit</a>, the <a href="http://subsonicproject.com/docs">new docs site</a>, and auto migrations. </li>    <li>"What's so difficult about building a freakin' expression parser?"&#160; Rob states that coding is hard and the fact that LINQ leaves him a little afraid. He then speaks a little Mandarin and speaks of going shopping. </li>    <li>Jon and Rob have a discussion about the use of ORMs and performance concerns.&#160; Rob states <a href="http://subsonicproject.com/docs/Comparisons">No one ever got fired for using Microsoft</a> and adds a quick comment about <a href="http://blog.wekeroad.com/subsonic/subsonic-to-acquire-nhibernate/">SubSonic's failed acquision of NHibernate</a> </li>    <li>Scott K asks what it is like to write your own provider for SubSonic and notes that a SQL Data Service provider would allow one to scale to the cloud. </li>    <li>The guys field listener questions from <a href="http://twitter.com/codinghorror">Jeff Atwood</a> ("Why is SQL so awesome?") and <a href="http://twitter.com/ccrary/status/2428466351">Chip Cray</a> ("How has your view of DDD changed since you started the <a href="http://blog.wekeroad.com/mvc-storefront/mvc-storefront-part-1/">StoreFront</a>?") </li>    <li>The conversation comes full circle with Jon asking Rob (again) about his job at Microsoft and if he's paid to work on SubSonic. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.wekeroad.com/">Rob Conery</a> </li>    <li><a href="http://www.hanselman.com/blog/">Scott Hanselman</a> </li>    <li><a href="http://blog.wekeroad.com/subsonic/subsonic-3-0-is-released/">SubSonic 3.0 is Released Announcement</a> </li>    <li><a href="http://subsonicproject.com/download">SubSonic 3.0 Download</a> </li>    <li><a href="http://subsonicproject.com/docs/Main_Page">SubSonic 3.0 Docs</a> </li>    <li><a href="http://rubyonrails.org/">Ruby on Rails</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx">LINQ</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL</a> </li>    <li><a href="http://codinghorror.com">Jeff Atwood</a>, <a href="http://www.joelonsoftware.com/">Joel Spolsky</a>, <a href="http://stackoverflow.com">Stack Overflow</a> </li>    <li><a href="http://www.codeplex.com/IQToolkit">iQueryable Toolkit</a> </li>    <li><a href="http://blogs.msdn.com/mattwar/">Matt Warren</a> </li>    <li><a href="http://www.gzip.org/">gzip</a> </li>    <li><a href="http://www.west-wind.com/Weblog/">Rick Strahl</a> </li>    <li><a href="http://www.microsoft.com/azure/data.mspx">SQL Data Services</a> </li>    <li><a href="http://nhforge.org/Default.aspx">NHibernate</a> </li>    <li><a title="http://en.wikipedia.org/wiki/Sharding" href="http://en.wikipedia.org/wiki/Sharding">Sharding</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Plain_Old_CLR_Object">POCO</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx">Entity Framework</a> </li>    <li><a href="http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx">T4 Templates</a> </li>    <li><a href="http://www.db4o.com/">db4objects</a> </li>    <li><a href="http://sqlite.phxsoftware.com/">SQLite</a> </li>    <li><a href="http://ayende.com/Blog/">Ayende</a> </li>    <li><a href="http://damieng.com/">Damien Guard</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/">Scott Guthrie</a> </li>    <li><a href="http://www.loudthinking.com/">David Heinemeier Hansson (DHH)</a> </li>    <li><a href="http://blog.wekeroad.com/mvc-storefront/mvc-storefront-part-1/">ASP.NET MVC StoreFront</a> </li>    <li><a href="http://stackoverflow.carsonified.com/tickets.html">StackOverflow DevDays</a> </li>    <li>Intro music - <a href="http://hypem.com/track/691259">Chicago Remix</a> - requested by Rob</li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0053-SubSonic-3-0-Release-Party-with-Rob-Conery.mp3">Herding Code 53: SubSonic 3.0 Release Party with Rob Conery</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p> <p>

<a href="http://www.red-gate.com/products/ants_memory_profiler/memory_profiling_made_simple.htm?utm_source=infozerk&amp;utm_medium=box&amp;utm_term=1777&amp;utm_content=memprofsimple&amp;utm_campaign=antsmemoryprofiler"><img src="https://herdingcode.com/wp-content/uploads/MemPro_Made_Easy_300x250-1.gif/" alt="" height="190" style="float:none;" /></a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0053-SubSonic-3-0-Release-Party-with-Rob-Conery.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 52: The Alan Stevens and G. Andrew Duthie Debate Continues!</title>
    <link>https://herdingcode.com/herding-code-52-the-alan-stevens-and-g-andrew-duthie-debate-continues/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-52-the-alan-stevens-and-g-andrew-duthie-debate-continues/</guid>
    <pubDate>Wed, 01 Jul 2009 08:00:34 GMT</pubDate>
    <description><![CDATA[<p>In this corner, Microsoft Developer Evangelist and author, G. Andrew Duthie . In the other corner, C# MVP , ASP Insider and Open Space Technology facilitator, Alan Stevens . Thi</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 52</strong></p>
In this corner, Microsoft Developer Evangelist and author, <a href="http://blogs.msdn.com/gduthie/">G. Andrew Duthie</a>. In the other corner, C# <a href="http://mvp.support.microsoft.com/">MVP</a>, <a href="http://aspinsiders.com/">ASP Insider</a> and <a href="http://www.openspaceworld.com">Open Space Technology</a> facilitator, <a href="http://netcave.org/">Alan Stevens</a>. This week, G. Andrew Duthie and Alan Stevens bring their recent "Real Software Development vs Microsoft Bubble Development" Twitter debate to Herding Code. It's all the open and honest, fun-loving, snarky banter without the 140 character limit.
<ul>
	<li>Kevin kicks off the show by announcing our two fighters. Ding. Ding.</li>
	<li>Alan throws the first punch - He likes Herding Code because it's about real software development rather than development in the Microsoft bubble.  It's about the tool users rather than the tool builders and it's about honest feedback.</li>
	<li>Andrew jabs back - He likes the stories from the trenches but he feels more credit must be given to the folks at Microsoft who are doing the right thing. In other words, don't always assume the worst and snark about it.</li>
	<li>Scott K keeps both fighters on their toes - First taking jabs at Alan because some DevDiv developers dogfood Microsoft's stuff (e.g. Visual Studio 2010 and .NET 4.0) and then lands a sucker punch on Andrew noting Entity Framework is developing in the dark.  Who could have seen that punch coming?</li>
	<li>The fight continues with talk about general disgust in drag and drop demos, the role of the Developer Evangelist, Microsoft's goals and constraints, and the need for candid feedback.</li>
	<li>If you missed the Twitter exchange, you will definitely want to listen in as The Alan Stevens vs G. Andrew Duthie Debate continues this week on Herding Code.</li>
</ul>
Show Links:
<ul>
	<li><a href="http://netcave.org/">Alan Stevens</a>, <a href="http://twitter.com/alanstevens">@alanstevens</a></li>
	<li><a href="http://blogs.msdn.com/gduthie/">G. Andrew Duthie</a>, <a href="http://twitter.com/devhammer">@devhammer</a> </li>
	<li><a href="http://codestock.org">CodeStock Conference in Knoxville</a></li>
	<li><a href="http://www.devlink.net/">devLINK Conference in Nashville</a></li>
	<li><a href="http://www.communitymegaphone.com/">Community Megaphone</a></li>
	<li><a href="http://bradwilson.typepad.com/">Brad Wilson</a></li>
	<li><a href="http://www.devexpress.com/">DevExpress</a></li>
	<li><a href="http://www.jetbrains.com/">JetBrains</a></li>
	<li><a href="http://damieng.com/">Damien Guard</a></li>
	<li><a href="http://www.hanselman.com/blog/">Scott Hanselman</a></li>
	<li><a href="http://haacked.com/">Phil Haack</a></li>
	<li><a href="http://blog.wekeroad.com/">Rob Conery</a></li>
	<li><a href="http://joel.neubeck.net/">Joel Neubeck</a> and <a href="http://timheuer.com/blog/">Tim Heuer</a>'s <a href="http://www.codeplex.com/sl2videoplayer">Silverlight Video Player</a></li>
	<li><a href="http://www.joshholmes.com/blog">Josh Holmes</a></li>
	<li><a href="http://www.microsoft.com/windows/internet-explorer/get-the-facts/browser-comparison.aspx">Windows Internet Explorer 8: Get the facts</a></li>
	<li><a href="http://www.vine.net/">Microsoft Vine</a></li>
	<li><a href="http://serenitymovie.com/">Serenity Movie</a></li>
	<li><a href="http://weblogs.asp.net/scottgu/">Scott Guthrie</a></li>
	<li><a href="http://www.pluralsight.com/community/blogs/dbox/">Don Box</a></li>
	<li><a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/default.aspx">Pete Brown</a></li>
	<li><a href="http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx">T4 Templates</a></li>
	<li><a href="http://briannoyes.net/">Brian Noyes</a></li>
</ul>
<strong>Note: </strong>Ward Bell transcribed <a href="http://neverindoubtnet.blogspot.com/2009/08/drag-drop-debate-on-herding-code.html">a part of the discussion on drag'n'drop demos here</a>.

<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0052-The-Alan-Stevens-and-G-Andrew-Duthie-Debate-Continues.mp3">Herding Code 52: The Alan Stevens and G. Andrew Duthie Debate Continues</a>



<em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0052-The-Alan-Stevens-and-G-Andrew-Duthie-Debate-Continues.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 51: Greg Young on Our Grand Failure &#x2013; Thoughts on DDDD</title>
    <link>https://herdingcode.com/herding-code-51-greg-young-on-our-grand-failure-thoughts-on-dddd/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-51-greg-young-on-our-grand-failure-thoughts-on-dddd/</guid>
    <pubDate>Fri, 26 Jun 2009 17:58:05 GMT</pubDate>
    <description><![CDATA[<p>This week the guys talk to Greg Young about what he calls &quot;our greatest failure&quot;. Greg talks about how we&apos;ve failed our so completely that they now base their success on our alw</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 51</strong></p>
<p>This week the guys talk to <a href="http://codebetter.com/blogs/gregyoung/">Greg Young</a> about what he calls "our greatest failure".</p>  <ul>   <li>Greg talks about how we've failed our so completely that they now base their success on our always failing in the same way. He starts with your classic Hello World use-case, the common sex change </li>    <li>Greg talks about how we've forced our customers to work with data when they're naturally behavior-centric </li>    <li>The problem with losing the historical record - we've lost the value of context and intent </li>    <li>Scott K asks about determining software behaviors by observing user behavior </li>    <li>Greg describes how Command Separation and the Event Sourcing pattern can help in solving this </li>    <li>K Scott asks about how this fits in with REST-ful architectures which are generally data-centric </li>    <li>Jon asks about the UI space efficiency of designing for behavioral interaction instead of data interaction </li>    <li>Some examples from HR: Jon likes to promote people, K Scott enjoys discussions of termination procedures </li>    <li>Kevin asks how what Greg's proposing is different from task based UI's we've already seen </li>    <li>Jon asks how to sell this to management, who sometimes doesn't feel the need to share business process information with the software developers </li>    <li>Greg and K Scott talk about how data-centric style applications lose valuable context - educational tracking, shopping carts, medical records, and financial systems. </li>    <li>Scott K and Greg talk about how data-centric applications don't handle histrory well. Greg points out that there's a big difference between an event and a snapshot model. </li>    <li>Jon asks how we persist this kind of event information - do we need to move away from relational databases? </li>    <li>Greg talks about why the implementational details are less important than grasping the high level concepts.</li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://codebetter.com/blogs/gregyoung/">Greg Young's blog</a> </li>    <li><a href="http://martinfowler.com/bliki/CommandQuerySeparation.html">Command Query Separation</a>&#160; </li>    <li><a href="http://tech.groups.yahoo.com/group/domaindrivendesign/">Domain Driven Design - Yahoo Group</a> </li>    <li><a href="https://herdingcode.com/survey/index.php/">Herding Code Trivia Contest - (Diskeeper Pro Premier)</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0051-Greg-Young-on-Our-Grand-Failure-Thoughts-on-DDDD.mp3">Herding Code 51: Greg Young on Our GRAND Failure - Thoughts on DDDD</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0051-Greg-Young-on-Our-Grand-Failure-Thoughts-on-DDDD.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 50: Damien Guard on LINQ to SQL, Entity Framework, and Fontography</title>
    <link>https://herdingcode.com/herding-code-50-damien-guard-on-linq-to-sql-entity-framework-and-fontography/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-50-damien-guard-on-linq-to-sql-entity-framework-and-fontography/</guid>
    <pubDate>Fri, 19 Jun 2009 07:24:06 GMT</pubDate>
    <description><![CDATA[<p>This week the guys talk to Damien Guard , a developer working on LINQ to SQL and Entity Framework. After discussing data access for a while, they talk about the programming font</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 50</strong></p>
<p>This week the guys talk to <a href="http://damieng.com/">Damien Guard</a>, a developer working on LINQ to SQL and Entity Framework. After discussing data access for a while, they talk about the programming font Damien publishes, Envy Code R.</p>  <ul>   <li>Damien assures us that LINQ To SQL is not at all dead and talks about some of the new features in LINQ To SQL 4. </li>    <li>Damien discusses the T4 templates in EF/VS2010 as well as the LINQ to SQL T4 templates he's released on CodePlex as <a href="http://l2st4.codeplex.com/">L2ST4</a>. </li>    <li>New features in EF 4 (LINQ operators, ObjectSet) </li>    <li>Additional LINQ To SQL mocking with ITable&lt;T&gt; </li>    <li>Some general discussion of query performance optimization in L2S and EF, including some enhancements in v4.</li>    <li>Code-only configuration to enable fluent configuration for EF</li>    <li>Kevin compares the code-only configuration to Fluent NHibernate</li>    <li>K Scott asks about how code-only configuration would enable TDD with EFF</li>    <li>Damien talks about the challenges of TDD and DDD when developing a framework</li>    <li>Jon asks the "Should L2S be on CodePlex" question</li>    <li>Damien mentions Matt Warren's <a href="http://www.codeplex.com/IQToolkit">LINQ IQueryable Toolkit</a></li>    <li>Jon asks about the experience and improvements to migration from L2S to EF</li>    <li>K Scott asks about common L2S mistakes</li>    <li>Jon asks about POCO support in EF</li>    <li>Kevin bemoans the lack of support for refreshing a L2S model when your schema changes</li>    <li>The talk shifts over to the programming font Damien designed, <a href="http://damieng.com/blog/2008/05/26/envy-code-r-preview-7-coding-font-released">Envy Code R</a></li>    <li>Damien explains the intricacies of TrueType, bitmap fonts and hinting</li>    <li>Discussion of font editing software, from FontLab ($500) to <a href="http://fontforge.sourceforge.net/">FontForge</a> (free, open source), and <a href="http://www.microsoft.com/typography/tools/vtt.aspx">Microsoft Visual TrueType</a> (free, weird license agreement which must be faxed in)</li>    <li>Damien's crazy font hack to get italic comments in Visual Studio</li>    <li>Jon asks about the new typography features in Windows 7, including the new DirectWrite API</li>    <li>Damien prefers Mac font rendering for quick glances, Windows for long use</li>    <li>Discussion of how fonts affect eyestrain </li>    <li>Jon talks about font rendering on Kindle and how he's using it as an RSS aggregator </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40">LINQ to SQL changes in .NET 4.0</a> </li>    <li><a href="http://l2st4.codeplex.com/">L2ST4</a> - LINQ to SQL T4 templates</li>    <li><a href="http://www.codeplex.com/IQToolkit">LINQ IQueryable Toolkit</a></li>    <li><a href="http://damieng.com/blog/2008/05/26/envy-code-r-preview-7-coding-font-released">Envy Code R</a></li>    <li><a href="http://en.wikipedia.org/wiki/TrueType">TrueType</a></li>    <li><a href="http://www.fontlab.com/">FontLab</a></li>    <li><a href="http://www.microsoft.com/typography/tools/vtt.aspx">Microsoft Visual TrueType</a></li>    <li><a href="http://www.istartedsomething.com/20081030/improvements-to-fonts-in-windows-7/">Windows 7 font changes and Gabriola</a></li>    <li><a href="http://msdn.microsoft.com/en-us/library/dd371554%28VS.85%29.aspx">DirectWrite</a></li>    <li><a href="http://www.amazon.com/dp/B00154JDAI/?tag=jongall-20">Amazon Kindle</a></li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0050-Damien-Guard-on-LINQ-to-SQL-Entity-Framework-and-Fontography.mp3">Herding Code 50: Damien Guard on LINQ to SQL, Entity Framework, and Fontography</a></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0050-Damien-Guard-on-LINQ-to-SQL-Entity-Framework-and-Fontography.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 49: Search with Bing and Wolfram Alpha</title>
    <link>https://herdingcode.com/herding-code-49-search-with-bing-and-wolfram-alpha/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-49-search-with-bing-and-wolfram-alpha/</guid>
    <pubDate>Wed, 10 Jun 2009 17:59:30 GMT</pubDate>
    <description><![CDATA[<p>Have you binged, bunged or banged using Microsoft&apos;s Bing ? Any idea the type of questions you should feed Wolfram|Alpha ? This week on Herding Code, the guys talk about &quot;new sea</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 49</strong></p>
<p>Have you binged, bunged or banged using <a href="http://bing.com">Microsoft's Bing</a>? Any idea the type of questions you should feed <a href="http://www56.wolframalpha.com/">Wolfram|Alpha</a>? This week on Herding Code, the guys talk about "new search things that have happened upon the Intertubes." Are you planning to catch the <a href="http://wave.google.com/">Google Wave</a>? Hear the cast's thoughts on Google Wave and much more in this week's Lightning Round.</p>  <ul>   <li>Jon digs into the Bing's core feature list and shares that he is generally impressed with the specialty searches around travel, health, traffic, images, shopping and maps. </li>    <li>When it comes to search, the guys ask if Microsoft can really complete with Google. And does it really matter? </li>    <li>Scott K talks about Microsoft rebranding and questions what Microsoft is doing with its web properties? He compares Microsoft to Google which does everything web-based. Kevin chimes in and state that he doesn't use a single Microsoft online property and Microsoft just doesn't have a good story for this space. </li>    <li>The guys discuss usability features in Bing - specifically image and video search, search history and preferences. </li>    <li>K Scott brings up Bing's nice use of Silverlight and speak to <a href="http://twitter.com/rmostell/statuses/2006499605">tweets stating Bing is Microsoft's way of tricking you into installing the Silverlight plugin</a>. </li>    <li>Jon and Scott K talk about conspiracy theories. </li>    <li>Jon kicks off a conversation about Wolfram|Alpha and shares how you can ask just about anything and you will even get an answer if you know exactly how to phrase the question. </li>    <li>Kevin states that calling Wolfram|Alpha a search engine is a misnomer. Really, it's a computational knowledge engine made for academics by academics. </li>    <li>Scott K calls out that anything claiming to be related to search must live up to Google. After all, you google information. You don't altavista. </li>    <li>K Scott compares Wolfram|Alpha to a restaurant where the food's not great but the atmosphere is pretty funky. </li>    <li>Jon and Scott K discuss search aggregators, explorer federated search and Kevin compares Wolfram|Alpha to <a href="http://stackoverflow.com/">Stack Overflow</a>. </li>    <li>K Scott comments on search in general and how competition is a good thing. K Scott is not completely comfortable with Google dominating the market share. It's the same uncomfortable feeling he had when Microsoft dominated the browser wars and look how that turned out. Take note! </li> </ul>  <p>Compliments of K Scott, another Lightning Round Strikes!</p>  <ul>   <li><a href="http://twitter.com">Twitter</a> on the <a href="http://www.xbox.com/en-US/">Xbox 360</a> </li>    <li><a href="http://www.last.fm/">last.fm</a> and <a href="http://social.zune.net/home.aspx?culture=en-us">Zune</a> </li>    <li><a href="http://e3expo.com/">E3 (Electonic Entertainment Expo)</a>, <a href="http://en.wikipedia.org/wiki/Project_Natal">Project Natal</a>, <a href="http://www.eurogamer.net/articles/e3-project-natals-molyneux-and-milo-interview">Milo Demo</a>, <a href="http://en.wikipedia.org/wiki/Peter_Molyneux">Peter Molyneux</a> </li>    <li><a href="https://browserlab.adobe.com/index.html#">Adobe's BrowserLab</a> is a rip off of <a href="http://expression.microsoft.com/en-us/dd565874.aspx ">SuperPreview</a> </li>    <li><a href="http://www.microsoft.com/windows/windows-7/">Windows 7</a> October Release, adoption rate and boot from VHD feature </li>    <li><a href="http://wave.google.com/">Google Wave</a> and <a href="http://www.orkut.com/About.aspx">Google Orkut</a>, <a href="http://en.wikipedia.org/wiki/HTML_5">HTML 5</a>, <a href="http://en.wikipedia.org/wiki/Canvas_(HTML_element)">Canvas</a> and <a href="http://www.w3.org/Graphics/SVG/">SVG</a> </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://www.discoverbing.com/tour/">Discover Bing</a> </li>    <li><a href="http://www.farecast.live.com/">Farecast</a> </li>    <li><a href="http://www.powerset.com/">Powerset</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Spam_blog">Splogs</a> </li>    <li>Google vs Bing Results      <ul>       <li><a href="http://blackdog.ie/google-bing/search.php">http://blackdog.ie/google-bing/search.php</a> </li>        <li><a href="http://blindsearch.fejus.com">http://blindsearch.fejus.com</a> </li>     </ul>   </li>    <li><a href="http://en.wikipedia.org/wiki/Young_Jeezy">Young Jeezy</a> </li>    <li><a href="http://silverlight.net/">Silverlight</a> </li>    <li><a href="http://gears.google.com/">Google Gears</a> </li>    <li><a href="http://www56.wolframalpha.com/">Wolfram|Alpha</a> </li>    <li><a href="http://www.businessinsider.com/henry-blodget-its-time-for-microsoft-to-face-reality-about-search-and-the-internet-2009-5 ">It's Time For Microsoft To Face Reality About Search And The Internet</a>, <a href="http://en.wikipedia.org/wiki/Henry_Blodget">Henry Blodget</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Stephen_Wolfram">Who is Stephen Wolfram</a>? Go ahead and <a href="http://www.bing.com/search?q=Stephen+Wolfram&amp;form=QBLH">Bing him too!</a> </li>    <li><a href="http://blog.jonudell.net/ ">Jon Udell</a> </li>    <li><a href="http://stackoverflow.com/">Stack Overflow</a> </li>    <li><a href="http://www.codinghorror.com/blog/archives/001224.html">The Elephant in the Room: Google Monoculture</a>, <a href="http://www.codinghorror.com/blog">Coding Horror</a> </li>    <li><a href="http://chris.pirillo.com/">Chris Pirillo</a> </li>    <li><a href="http://www.geekologie.com/">Geekologie</a> </li>    <li><a href="http://www.engadget.com/">Engadget</a> </li>    <li><a href="http://mef.codeplex.com/">Managed Extensibility Framework (MEF)</a> </li>    <li><a href="http://johnnylee.net/">Johnny Chung Lee</a> </li>    <li><a href="http://adamkinney.com/">Adam Kinney</a> </li>    <li><a href="http://blogs.zdnet.com/microsoft/?p=2917">With Wave, did Google jump the (Microsoft) shark?</a>, Mary-Jo Foley </li>    <li><a href="http://code.google.com/webtoolkit/">Google Web Toolkit (GWT)</a> </li> </ul>  <p>Scott K's Wolfram queries:    <br /><a href="http://www95.wolframalpha.com/input/?i=How+many+angels+can+dance+on+the+head+of+a+pin">How many angels can dance on the head of a pin?</a>     <br /><a href="http://www95.wolframalpha.com/input/?i=Do+these+pants+make+me+look+fat%3F">Do these pants make me look fat?</a> </p>  <p>Jon's Wolfram queries:    <br /><a href="http://www58.wolframalpha.com/input/?i=gdp+of+moldovia+divided+by+ernest+goes+to+camp+box+office">GDP of Moldovia divided by Ernest Goes to Camp box office?</a>     <br /><a href="http://www58.wolframalpha.com/input/?i=escape%20velocity%20of%20saturn%20divided%20by%20top%20speed%20of%20a%20cheetah">Escape velocity of Saturn divided by top speed of a cheetah?</a>     <br /><a href="http://www63.wolframalpha.com/input/?i=population%20of%20vatican%20city%20divided%20by%20the%20square%20root%20of%20the%20number%20of%20hours%20in%20a%20leap%20year">Population of Vatican City divided by the square root of the number of hours in a leap year?</a>     <br /><a href="http://www63.wolframalpha.com/input/?i=how+to+cook+a+welshman">How to cook a Welshman?</a></p>  <p>K Scot's Wolfram queries:    <br /><a href="http://www58.wolframalpha.com/input/?i=how+much+wood+could+a+woodchuck+chuck+if+a+woodchuck+could+chuck+wood%3F">How much wood could a woodchuck chuck if a woodchuck could chuck wood?</a></p>  <p>Jon Udell's Wolfram query:    <br /><a href="http://www56.wolframalpha.com/input/?i=(h1n1+mexico+deaths+%2F+mexico+cases)+%2F+(h1n1+us+deaths+%2F+us+cases)">(H1N1 Mexico Deaths / Mexico Cases) / (H1N1 US Deaths / US Cases)</a></p>  <p></p>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0049-Search-with-Bing-and-Wolfram-Alpha.mp3">Herding Code 49: Search with Bing and Wolfram Alpha</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0049-Search-with-Bing-and-Wolfram-Alpha.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 48: Dustin Campbell on Visual Studio 2010</title>
    <link>https://herdingcode.com/herding-code-48-dustin-campbell-on-visual-studio-2010/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-48-dustin-campbell-on-visual-studio-2010/</guid>
    <pubDate>Sat, 30 May 2009 15:51:03 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys speak with Dustin Campbell about Visual Studio 2010 Beta&apos;s &quot;super exciting&quot; programming, debugging and extensibility features and t</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 48</strong></p>
<p>This week on Herding Code, the guys speak with Dustin Campbell about Visual Studio 2010 Beta's &quot;super exciting&quot; programming, debugging and extensibility features and the F# May CTP. </p>  <ul>   <li>The show kicks off with Jon commenting about the evolution of Visual Studio. Dustin then takes us down memory lane sharing how Visual Studio has been torn down and stitched back together over the years - this time with a new WPF-based IDE and an impressive extensibility model. </li>    <li>K Scott notes that F# is now being shipped with Visual Studio 2010 and teases Dustin about working on Project Euler problems in F# with his wife. (There's a hot dating tip for you.) Dustin squirms a little and then talks in more detail about the latest F# release and the many language refactorings. </li>    <li>Scott K asks if dynamic languages like IronRuby and IronPython are scheduled to be shipped with later versions of Visual Studio and Dustin suggests that those languages may not find benefit in doing so. </li>    <li>Scott K asks if Microsoft is trying to kill off the competition by introducing IDE features already provided by CodeRush and ReSharper?&#160; Dustin shares that the new extensibility model within VS2010 actually promotes third-party development and refers to the DevExpresses, JetBrains and Whole Tomatoes of the world as "partners" rather than competition. </li>    <li>Scott K asks if rewriting the VS2010 editor in WPF will elevate WPF's exposure inside and outside of Microsoft and effectively force the framework to continually improve. Scott K also asks if componentizing Visual Studio (think Perspectives in Eclipse) is something we might see in future bits. </li>    <li>Jon asks about team size and what it takes to build a product like Visual Studio at Microsoft. </li>    <li>Scott K calls out Parallel Programming, a highlighted new feature in VS2010, and Dustin drills into IDE support for parallel programming with parallel debugging windows and profiling views. </li>    <li>Kevin and Dustin talk about improved TDD support with features like &quot;Generate From Usage.&quot; </li>    <li>The show wraps up with the guys beating Dustin up a bit with talk about Visual Studio issues such as the Add Reference Dialogue slowness and the &quot;Visual Studio is busy&quot; dialogue. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://diditwith.net/">Dustin Campbell's Blog</a> </li>    <li><a href="http://projecteuler.net/">Project Euler</a> </li>    <li><a href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx">Visual Studio 2010 Beta</a>&#160; </li>    <li><a href="http://blogs.msdn.com/onoj/archive/2009/05/19/visual-studio-2010-beta-1-download-options.aspx">Visual Studio 2010 Beta Download Options (including Web Installer)</a> </li>    <li><a href="http://www.devexpress.com/crx">FREE DevExpress CodeRush Xpress for C# and VB</a> </li>    <li><a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/">DevExpress' CodeRush and Refactor!</a> </li>    <li><a href="http://www.jetbrains.com/resharper/">JetBrains' ReSharper</a> </li>    <li><a href="http://www.wholetomato.com/">Whole Tomato's Visual Assist X</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/ms754130.aspx">Windows Presentation Foundation (WPF)</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/ms950412.aspx">Visual InterDev</a> </li>    <li><a href="http://www.codeplex.com/MEF/">Managed Extensibility Foundation (MEF)</a> </li>    <li><a href="http://go.microsoft.com/fwlink/?LinkId=151924">May F# CTP add-on for Visual Studio 2008</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/dd233175(VS.100).aspx">F# Interpreter (FSI)</a> </li>    <li><a href="http://www.ironruby.net/">IronRuby</a> </li>    <li><a href="http://ironpython.codeplex.com/">IronPython</a> </li>    <li><a href="http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html">Perspectives in Eclipse</a> </li>    <li><a href="http://www.codeplex.com/IronPythonStudio">IronPython Studio</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/teamsystem/dd408382.aspx">Team Foundation Server (TFS)</a> </li>    <li><a href="http://www.smalltalk.org/main/">SmallTalk</a> </li>    <li><a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx">PowerShell</a> </li>    <li><a href="http://www.benjaminbutton.com/">The Curious Case of Benjamin Button</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0048-Dustin-Campbell-on-Visual-Studio-2010.mp3">Herding Code 48: Dustin Campbell on Visual Studio 2010</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0048-Dustin-Campbell-on-Visual-Studio-2010.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 47: Joe Brinkman on Webforms vs ASP.NET MVC</title>
    <link>https://herdingcode.com/herding-code-47-joe-brinkman-on-webforms-vs-aspnet-mvc/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-47-joe-brinkman-on-webforms-vs-aspnet-mvc/</guid>
    <pubDate>Wed, 13 May 2009 21:32:01 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the guys speak with Joe Brinkman , Co-founder and Technical Fellow at DotNetNuke Corporation , about the ASP.NET MVC vs. Webforms debate, open source</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 47</strong></p>
<p>This week on Herding Code, the guys speak with <a href="http://blog.theaccidentalgeek.com/">Joe Brinkman</a>, Co-founder and Technical Fellow at <a href="http://www.dotnetnuke.com/">DotNetNuke Corporation</a>, about the ASP.NET MVC vs. Webforms debate, open source development, recent advancements in DotNetNuke and how to improve our industry and the community as a whole.</p>  <ul>   <li>Joe explains that the Webforms vs. MVC debate boils down to a component based vs. object-oriented based approach to web development. Joe also shares that one shouldn't only think about Webforms when doing the comparison. After all, let's not forget web services, HTTPHandlers and HTTPModules are also part of the ASP.NET stack. </li>    <li>Joe speaks about the lack of a reusability model in ASP.NET MVC and Scott K offers solutions that go beyond mere copy and paste operations. Joe and Kevin explore how the absence of the component model in ASP.NET MVC is rescued by rich functionality packaged within the Javascript frameworks. </li>    <li>K Scott and Joe talk about core issues with Webform development. That is, ClientId management, .ASPX in URLs and maintainability concerns around Webform's event model in the code behind and forcing statefulness in a stateless web environment. K Scott notes that .NET 4.0 will offer URL routing and greater control over ClientId generation so key areas of concern may soon be addressed, but it will take further framework improvement to provide greater control over the Webform abstraction layer. </li>    <li>Everyone agrees that Microsoft, vendors and community will provide components to pave the way to richer, easier to implement, ASP.NET MVC applications. Additionally, advancements will continue in the Webforms space.&#160; Most notably, the guys assume there is bound to be a push towards a better Webforms testability story. </li>    <li>Kevin gives historical context to Webforms and why the abstraction model was revolutionary and arguably necessary. Knowing full well that hate mail is to come, Jon talks about using the "right" tool for the job and how he plans to continue to use Webforms where appropriate. </li>    <li>Jon and Joe summarize four big reasons why EVERY developer should learn MVC and Scott K asks what can be done with senior web developers who just don't want to learn the new framework?&#160; This leads into a conversation about honing one's craft, mentorship, leading by example, and following through with supervision and code reviews.&#160;&#160; </li>    <li>Now that ASP.NET MVC is in the picture, the group wrestles with what to call ASP.NET Webforms.&#160; Classic ASP.NET is kind of catchy (and a little confusing.) </li>    <li>Jon and Joe talk about changes in Open Source - inside and outside of the Microsoft community - over the past six years.&#160; </li>    <li>Scott K talks about the "promise" of being able to contribute to an open source project and asks about the managing patches - specifically on large open source projects. </li>    <li>The guys also dive into open source definition, licenses, legal considerations, protections around intellectual properties and implicit copyright on code. </li>    <li>The episode wraps up with a Joe providing a nice overview of DotNetNuke's past, present and future. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.theaccidentalgeek.com/">Joe Brinkman's Blog</a> </li>    <li><a href="http://blog.theaccidentalgeek.com/post/2009/04/23/I-Spose-Irsquo3bll-Just-Say-It-Still-Waiting-For-a-GOOD-Reason-to-Learn-MVC.aspx">I Spose I'll Just Say It: Still Waiting For a GOOD Reason to Learn MVC</a> </li>    <li><a href="http://www.dotnetnuke.com/">DotNetNuke</a> </li>    <li><a href="http://www.dotnetnuke.com/Products/ProfessionalEdition/tabid/1209/Default.aspx">DotNetNuke Professional</a> </li>    <li><a href="http://www.openforce09.com/">DotNetNuke OpenForce</a> </li>    <li><a href="http://www.augustcap.com/">August Capital</a> </li>    <li><a href="http://www.sierraventures.com/index.php">Sierra Ventures</a> </li>    <li><a href="www.asp.net/mvc/">ASP.NET MVC</a> </li>    <li><a href="http://www.telerik.com/">Telerik</a> </li>    <li><a href="http://www.devexpress.com/">DevExpress</a> </li>    <li><a href="http://wordpress.org">Wordpress</a> </li>    <li><a href="http://codebetter.com/blogs/jeremy.miller/">Jeremy Miller</a> </li>    <li><a href="http://www.lostechies.com/blogs/chad_myers/">Chad Myers</a> </li>    <li><a href="http://simpable.com/">Scott Watermasysk</a> </li>    <li><a href="http://communityserver.com/">Community Server</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/">Scott Guthrie</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY Principle - Don't Repeat Yourself</a> </li>    <li><a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">SOLID Principles</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD - Test Driven Development</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD - Behavior Driven Development</a> </li>    <li><a href="http://code.google.com/p/fubumvc/">FubuMVC</a> </li>    <li><a href="http://www.codeplex.com/oxite">Oxite</a> </li>    <li><a href="http://www.trirand.com/blog/">jQuery Grid Plugin</a> </li>    <li><a href="http://jquery.com/">jQuery</a> </li>    <li><a href="http://www.prototypejs.org/">Prototype</a> </li>    <li><a href="http://script.aculo.us/">Script.aculo.us</a> </li>    <li><a href="http://www.opensource.org/docs/osd">Open Source Definition</a> </li>    <li><a href="http://www.opensource.org/licenses">Open Source Licenses</a> </li>    <li><a href="http://en.wikipedia.org/wiki/SCO-Linux_controversies">SCO vs Linux Controversies</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Cargo_cult_programming">Cargo Culting</a> </li>    <li><a href="http://www.red-gate.com/products/reflector/">Reflector</a>       <br /></li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0047-Joe-Brinkman-on-Webforms-vs-ASPNET-MVC.mp3">Herding Code 47: Joe Brinkman on Webforms vs ASP.NET MVC</a>&#160;</p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0047-Joe-Brinkman-on-Webforms-vs-ASPNET-MVC.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 46: Mistakes and News Recap</title>
    <link>https://herdingcode.com/herding-code-46-mistakes-and-news-recap/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-46-mistakes-and-news-recap/</guid>
    <pubDate>Fri, 08 May 2009 07:37:09 GMT</pubDate>
    <description><![CDATA[<p>Everybody makes mistakes. The trick is to learn from your own or, better yet, the mistakes of others! This week, the guys amuse and educate by graciously sharing some of t</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 46</strong></p>
<p>Everybody makes mistakes. The trick is to learn from your own or, better yet, the mistakes of others!&#160; This week, the guys amuse and educate by graciously sharing some of their past developer mistakes.&#160; </p>  <ul>   <li>Hear tales of recursive website spidering, rogue mass emailers, and hardware snafus which end in puffs of smoke </li>    <li>Learn from Jon that simulating <a href="http://en.wikipedia.org/wiki/Nuclear_fission">nuclear fission</a> on a <a href="http://en.wikipedia.org/wiki/Cray">Cray supercomputer</a> can get wildly out of control </li>    <li>Find out why you should think twice before optimizing a relative's computer on New Years' Day </li>    <li>What's the quickest way to realize the benefits of a Transaction Server?&#160; Why listening to K Scott's ATM story, of course. </li>    <li>Discover why you might want to rethink flying Kevin out to your company to perform any hardware magic (but if you need to reconstruct <a href="http://en.wikipedia.org/wiki/File_Allocation_Table">a FAT table</a>, he's your guy.) </li>    <li>And get the most sage advice ever offered by K Scott on Herding Code. </li> </ul>  <p>As a bonus, the Extended Lightning Round!</p>  <ul>   <li><a href="http://www.microsoft.com/windows/windows-7/">Windows 7</a>, <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=0e8fa9b3-c236-4b77-be26-173f032f5159">Windows XP Mode</a> and <a href="http://blogs.technet.com/iftekhar/archive/2009/04/04/desktop-virtualization-with-med-v-now-a-reality.aspx">Microsoft Enterprise Desktop Virtualization (MED-V)</a> </li>    <li><a href="http://technet.microsoft.com/en-us/windows/dd262148.aspx">Windows Server 2008 SP2 and Windows Vista SP 2</a> </li>    <li><a href="http://office.microsoft.com/en-us/downloads/default.aspx">Office 2007 Service Pack 2</a> </li>    <li><a href="http://www.vine.net/default.aspx">Microsoft Vine - It's like Twitter for Emergencies</a> </li>    <li><a href="http://blogs.zdnet.com/microsoft/?p=2519">Pink - Microsoft's Smart Phone</a> </li>    <li><a href="http://visitmix.com/lab/glimmer">Glimmer</a> </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://www.timesnapper.com/">TimeSnapper</a> </li>    <li><a href="http://callgraph.biz">CallGraph</a> </li>    <li><a href="http://www.vmware.com/products/fusion/features.html">VMWare Fusion's Unity</a> </li>    <li><a href="http://www.microsoft.com/windows/virtual-pc/">Virtual PC</a> </li>    <li><a href="http://www.parallels.com/landingpage/dskd19_2/?source=google_us&amp;gclid=CK7a6quAqJoCFRlcagod-gUg1w">Parallels Coherence</a> </li>    <li><a href="http://tinyurl.com/LoungePodcastSurvey">Lounge Podcast Survey</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0046-Mistakes-and-News-Recap.mp3">Herding Code 46: Mistakes and News Recap</a>&#160;</p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0046-Mistakes-and-News-Recap.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 45: Larry O&#x2019;Brien on Domain Specific Languages</title>
    <link>https://herdingcode.com/herding-code-45-larry-obrien-on-domain-specific-languages/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-45-larry-obrien-on-domain-specific-languages/</guid>
    <pubDate>Wed, 29 Apr 2009 21:36:01 GMT</pubDate>
    <description><![CDATA[<p>There&apos;s a lot of community chatter around Domain Specific Languages (DSLs.) If you&apos;re interested in hearing more, you won&apos;t want to miss this episode as this week on Herdi</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 45</strong></p>
<p>There's a lot of community chatter around Domain Specific Languages (DSLs.)&#160; If you're interested in hearing more, you won't want to miss this episode as this week on Herding Code the guys interview <a href="http://www.knowing.net/">Larry O'Brien</a>, professional writer and software developer, on <a href="http://en.wikipedia.org/wiki/Domain-specific_language">Domain Specific Languages</a>, <a href="http://www.sellsbrothers.com/conference/">DSL DevCon</a>, <a href="http://www.langnetsymposium.com/">Lang.NET Symposium</a> and a number of related talks.&#160; </p>  <ul>   <li>Larry and K Scott summarize their thoughts on the recent DSL DevCon </li>    <li>Scott K shares that the hardest part about DSLs is defining what they are and what they aren't. For example are SQL, CSS or XSLT Domain Specific Languages? Lucky for us, Larry provides a reasonably simple breakdown of Internal and External DSLs and touches upon Functional, Dynamic, Compositional, and Computational DSLs. </li>    <li>K Scott questions why one might create a DSL and proposes that communication and productivity are primary drivers. Larry concurs and talks about the miscommunication and inefficiencies associated with programmers translating domain expert's preferred notation or diagrams into code.&#160; This sparks a conversation about Microsoft's claims regarding OSLO's order of magnitude productivity increases and the premises required for this claim to be achieved.&#160; </li>    <li>Kevin asks if DSLs and the new tools are targeted to replace developers. Don't worry, you're safe for now especially since the idea of letting the business people write programs has been failing since COBOL.&#160; As Larry explains, it isn't about putting programmers out of work, it's all about communication, readability and offering domain experts a way to validate our code. </li>    <li>Larry explains why writing a language - specifically an external DSL - is hard.&#160; </li>    <li>Jon and Kevin recognize similarities between Domain Specific Languages and Domain Driven Development and Larry speaks to their shared concepts - primarily expressing a domain in code. </li>    <li>Larry answers listener questions from <a href="http://twitter.com/ShawnWildermuth">Shawn Wildermuth</a> and <a href="http://twitter.com/bengriswold">Ben Griswold</a> regarding the difference between an internal and external DSLs and the role of the fluent interfaces and the relationship between functional programming and DSLs, respectively. </li>    <li>The guys also talk a bit about growing and roasting your own coffee, Hawaii, magazines and how a Mai Tai can disrupt one's plan to take over the world. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://www.knowing.net/">Larry O'Brien's blog</a> </li>    <li><a href="http://www.sdtimes.com/WINDOWS__NET_WATCH_THE_OSLO_PIECE_O_CODES/About_DOMAINSPECIFICLANGUAGES_and_MICROSOFT/33330">Larry's recent article in SDTimes</a>&#160; </li>    <li><a href="http://www.sellsbrothers.com/conference/">DSL DevCon</a> </li>    <li><a href="http://www.langnetsymposium.com/">Lang.NET Symposium</a> </li>    <li><a href="http://www.sellsbrothers.com/">Chris Sells</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/oslo/dd727707.aspx">Meta-Introduction to Domain Specific Languages</a>, <a href="http://www.martinfowler.com/bliki/">Martin Fowler</a> </li>    <li><a href="http://www.langnetsymposium.com/2009/talks/13-RomanIvantsov-IronPythonMSDynamic.html">Using IronPython 2.0 as a script engine in MS Dynamics AX, </a><a href="http://www.langnetsymposium.com/2009/talks/13-RomanIvantsov-IronPythonMSDynamic.html">Roman Ivantsov</a></a>&#160; </li>    <li><a href="http://msdn.microsoft.com/en-us/oslo/dd727735.aspx">Functional vs Dynamic DSLs: The Smackdown</a>, <a href="http://blogs.tedneward.com/">Ted Neward</a> and <a href="http://bradfordcross.blogspot.com/">Bradford Cross</a> </li>    <li><a href="http://www.sauria.com/blog/2009/04/20/dsldevcon-2009/">Ted Leung's overview of DSL DevCon</a>&#160; </li>    <li><a href="http://www.intentsoft.com/technology/overview.html ">Intentional Software</a> </li>    <li><a href="http://www.martinfowler.com/articles/languageWorkbench.html#DefiningALanguageWorkbench ">Martin Fowler's Writings on Language Workbenches</a> </li>    <li><a href="http://www.infoq.com/news/2009/03/DSL-Magnus-Christerson-Henk-Kolk">Intentional Software talk at Qcon</a>&#160; </li>    <li><a href="http://msdn.microsoft.com/en-us/oslo/dd727740.aspx">Intentional Software presentation at DSL Dev Con</a>&#160; </li>    <li><a href="http://msdn.microsoft.com/en-us/oslo/default.aspx">OSLO Developer Center</a> </li>    <li><a href="http://www.eclipse.org/">Eclipse</a> </li>    <li><a href="http://boo.codehaus.org/">Boo</a> </li>    <li><a href="https://herdingcode.com/">Herding Code 42: Scott Bellware on BDD and Lean Development</a> </li>    <li><a href="http://fit.c2.com/">Fit</a> and <a href="http://fitnesse.org/">FitNesse</a> </li>    <li><a href="http://www.tcl.tk/">Tcl (pronounced Tickle) Scripting Language</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Functional_programming">Functional Programming</a> </li>    <li><a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/">F#</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/bb308959.aspx">LINQ - .NET Language-Integrated Query</a> </li>    <li><a href="http://jquery.com/">jQuery</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0045-Larry-OBrien-on-Domain-Specific-Languages.mp3">Herding Code 45: Larry O'Brien on Domain Specific Languages</a>&#160;</p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0045-Larry-OBrien-on-Domain-Specific-Languages.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 44: Microbusiness</title>
    <link>https://herdingcode.com/herding-code-44-microbusiness/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-44-microbusiness/</guid>
    <pubDate>Fri, 24 Apr 2009 04:54:58 GMT</pubDate>
    <description><![CDATA[<p>Whether you just want to write cool software for yourself or you are looking to kick off a side business, you can get started with little upfront investment. This week on Herdin</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 44</strong></p>
<p>Whether you just want to write cool software for yourself or you are looking to kick off a side business, you can get started with little upfront investment. This week on Herding Code, the guys talk about the ease of becoming a one-man independent software vendor (ISV.) </p>  <ul>   <li>Scott K starts off the show with a list of free online invoicing and financial tools along with a number of services which provide free disk space. </li>    <li>Jon notes that advertising and micropayments are cheap and easy to setup in minutes. </li>    <li>Kevin talks about his recent endeavor, <a href="http://review2q.com">review2Q</a>, an ASP.NET MVC application, hosted in the Azure cloud, which helps automate the management of his Netflix's queue. It was an itch that he just needed to scratch and, with little overhead on his part, it's now available for you, too. </li>    <li>The guys discuss super cheap hosting and the numerous APIs and Services which provide tons of data available to re-mix.&#160; They also discuss using Azure or Google App Engine to scale up as one grows.&#160; </li>    <li>Jon comments on how free site templates and store/blog theme systems can make design a snap.&#160; </li>    <li>Jon also calls out the fact that for most web developers the barrier to entry is so low.&#160; Thus, one is somewhat susceptible to having their idea quickly copied.&#160; This raises the question; will your investment pay off long-term?&#160; </li>    <li>Kevin jokes that there's an alternative approach to implementing your own, self-serving solution - just wait long enough and someone else will implement your idea. </li>    <li>Kevin and Jon discuss why the web is such an appealing platform to start a venture. It is all about the low barrier to entry, the instant gratification and immediacy of making your product available and easy accessibility.&#160; Not to mention many sites are self-sustaining. </li>    <li>The guys brainstorm a few one-man startup website and mobile development ideas, wonder if they would ever again hear from Jon if he came upon 4 million dollars and question whether or not K Scott has fallen asleep. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://docs.google.com">Google Docs</a> </li>    <li><a href="http://www.zoho.com/">Zoho</a> </li>    <li><a href="http://office.microsoft.com">Office Online</a> </li>    <li><a href="http://skydrive.live.com/">Skydrive</a> </li>    <li><a href="http://box.net">Box.net</a> </li>    <li><a href="http://getdropbox.com">Dropbox</a> </li>    <li><a href="http://code.google.com/appengine/">Google App Engine</a> </li>    <li><em><a href="http://plentyoffish.wordpress.com/">Markus Frind</a>, <a href="http://plentyoffish.com">Plentyoffish.com</a></em> </li>    <li><a href="https://www.google.com/adsense/">Adsense</a> </li>    <li><a href="http://www.twitter.com/kevindente">Kevin's Dente's</a> <a href="http://review2q.com">review2Q</a> </li>    <li><a href="http://netflix.com">Netflix</a> </li>    <li><a href="http://www.asp.net/mvc/">ASP.NET MVC</a> </li>    <li><a href="http://www.microsoft.com/azure/default.mspx">Azure</a> </li>    <li><a href="http://www.microsoft.com/azure/data.mspx">SQL Data Services</a> </li>    <li><a href="http://en.wikipedia.org/wiki/RSS_(file_format)">RSS</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful API</a> </li>    <li><a title="It would be so great to find a good reference on TDI" href="http://en.wikipedia.org/wiki/Not_Found">Trusted Database Interpretation (TDI)</a> </li>    <li><a href="http://www.oswd.org/">Open Source Web Design</a> </li>    <li><a href="http://wordpress.org">WordPress</a> </li>    <li><a href="http://office.microsoft.com/onenote">OneNote</a> </li>    <li><a href="http://pipes.yahoo.com/pipes/">Yahoo Pipe</a> </li>    <li><a href="http://stackoverflow.com">Stackoverflow</a> </li>    <li><a href="http://www.hanselminutes.com/default.aspx?showID=175">Hanselminutae-five with Richard Campbell</a> </li>    <li><a href="http://developer.apple.com/iphone/program/download">iPhone Development</a> </li>    <li><a href="http://www.microsoft.com/windowsmobile/">Windows Mobile</a> </li>    <li><a href="http://37signals.com/">37signals</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0044-Microbusiness.mp3">Herding Code 44: Microbusiness</a></p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/">Ben Griswold</a><em></em><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0044-Microbusiness.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Herding Code 43: Javier Lozano on the &#x22;M&#x22; in MVC</title>
    <link>https://herdingcode.com/herding-code-43-javier-lozano-on-the-m-in-mvc/</link>
    <guid isPermaLink="true">https://herdingcode.com/herding-code-43-javier-lozano-on-the-m-in-mvc/</guid>
    <pubDate>Fri, 17 Apr 2009 22:36:45 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Kevin leads a conversation with Javier Lozano on ASP.NET MVC and the Model View Controller (MVC) , Model View Presenter (MVP) , Model View ViewModel (</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 43</strong></p>
<p>This week on Herding Code, Kevin leads a conversation with <a href="http://blog.lozanotek.com/" target="_blank">Javier Lozano</a> on <a href="http://www.asp.net/mvc/" target="_blank">ASP.NET MVC</a> and the <a href="http://en.wikipedia.org/wiki/Model-view-controller" target="_blank">Model View Controller (MVC)</a>, <a href="http://en.wikipedia.org/wiki/Model_View_Presenter" target="_blank">Model View Presenter (MVP)</a>, <a href="http://c2.com/cgi/wiki?ModelModelViewController" target="_blank">Model View ViewModel (MVVM)</a> and <a href="http://c2.com/cgi/wiki?ModelModelViewController" target="_blank">Model Model View Controller (MMVC)</a> patterns.</p>  <ul>   <li>The guys discuss the various patterns as they relate to ASP.NET MVC, Silverlight and WPF and dig into the differences between ViewModels and Models. </li>    <li>Scott K brings up the question: "What's the difference between MVC and MVP?" and then quotes <a href="http://codebetter.com/blogs/jeremy.miller/" target="_blank">Jeremy Miller</a> in stating, "MVP denotes a stateful conversation between presenter and view whereas MVC is just linear." </li>    <li>K Scott discusses the differences between building applications "the Rails way" and how you can build any type of application any way you want with ASP.NET MVC. </li>    <li>The group fields a question via Twitter from <a href="http://twitter.com/sbohlen" target="_blank">Steve Bohlen</a>: &quot;ask about the (relative) importance of persistence ignorance in the M in MVC.&quot; </li>    <li>The guys talk at length about action filters, custom model binders and object-object mapping. </li>    <li>And the show closes with Scott K reintroducing THE LIGHTNING ROUND! </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.lozanotek.com/" target="_blank">Javier Lozano's Blog</a> </li>    <li><a href="http://www.lostechies.com/blogs/hex/" target="_blank">Eric Hexter's Blog</a> </li>    <li><a href="http://www.lostechies.com" target="_blank">LosTechies</a> </li>    <li><a href="http://codeplex.com" target="_blank">CodePlex</a> </li>    <li><a href="http://www.c4mvc.net/" target="_blank">Community for MVC</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Model-view-controller" target="_blank">Model View Controller</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx" target="_blank">Model View ViewModel</a> </li>    <li><a href="http://c2.com/cgi/wiki?ModelModelViewController " target="_blank">Model Model View Controller</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Model_View_Presenter" target="_blank">Model View Presenter</a> </li>    <li><a href="http://codebetter.com/blogs/jeremy.miller/" target="_blank">Jeremy Miller's Blog</a> </li>    <li><a href="http://wildermuth.com/" target="_blank">Shawn Wildermoth's Blog</a> </li>    <li><a href="http://www.lostechies.com/blogs/jimmy_bogard/" target="_blank">Jimmy Bogard's Blog</a> </li>    <li><a href="http://blog.wekeroad.com" target="_blank">Rob Conery's Blog</a> </li>    <li><a href="http://www.lostechies.com/blogs/chad_myers/" target="_blank">Chad Myer's Blog</a> </li>    <li><a href="http://odetocode.com/Blogs/scott/archive/2009/03/30/12714.aspx" target="_blank">Putting the M in MVC Series</a> </li>    <li><a href="http://blog.wekeroad.com/subsonic/putting-the-ldquo-m-rdquo-back-in-mvc/" target="_blank">Putting the "M" Back in MVC (with SubSonic MVC Templates)</a> </li>    <li><a href="http://odetocode.com/Blogs/scott/archive/2008/05/13/12078.aspx" target="_blank">The Power of Programming With Attributes</a> </li>    <li><a href="http://rubyonrails.org/" target="_blank">Ruby on Rails</a> </li>    <li><a href="http://www.asp.net/mvc/" target="_blank">MVC.NET 1.0</a> </li>    <li><a href="http://nhibernate.org/" target="_blank">NHibernate</a> </li>    <li><a href="http://www.castleproject.org/MonoRail/" target="_blank">Monorail</a> </li>    <li><a href="http://martinfowler.com/eaaCatalog/activeRecord.html" target="_blank">ActiveRecord</a> </li>    <li><a href="http://www.castleproject.org/container/index.html" target="_blank">Windsor</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/bb386976.aspx" target="_blank">Linq 2 SQL</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx" target="_blank">Entity Framework</a> </li>    <li><a href="http://nerddinner.com/" target="_blank">NerdDinner.com</a> </li>    <li><a href="http://jquery.com/" target="_blank">jQuery</a> </li>    <li><a href="http://silverlight.net/" target="_blank">Silverlight</a> </li>    <li><a href="http://windowsclient.net/" target="_blank">WPF</a> </li>    <li><a href="http://domaindrivendesign.org/" target="_blank">Domain Driven Design</a> </li>    <li><a href="http://www.codeplex.com/AutoMapper" target="_blank">AutoMapper: Object-Object Mapper</a> </li>    <li><a href="http://martinfowler.com/eaaCatalog/repository.html" target="_blank">Repository Pattern</a> </li>    <li><a href="http://c2.com/xp/YouArentGonnaNeedIt.html" target="_blank">YAGNI</a> </li>    <li><a href="http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx" target="_blank">Splitting DateTime - Unit Testing ASP.NET MVC Custom Model Binders</a> </li>    <li><a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/03/17/a-better-model-binder.aspx" target="_blank">A Better Model Binder</a> </li>    <li><a href="http://code.google.com/p/autofac/" target="_blank">Autofac - An addictive .NET IoC Container</a> </li>    <li><a href="http://twitter.com/davidmfoley" target="_blank">David Foley</a> </li>    <li><a href="http://www.codeplex.com/MVCContrib" target="_blank">MVC Contrib</a> </li>    <li><a href="http://www.lazycoder.com/weblog/2009/03/18/aspnet-mvc-tip-return-specific-views-for-specific-errors/" target="_blank">ASP.NET MVC Tips - Return Specific Views for Specific Errors</a> </li>    <li><a href="http://www.youtube.com/watch?v=_yJCNNwHUOE" target="_blank">Charlie the Unicorn Goes to Candy Mountain</a> </li>    <li><a href="http://code.google.com/p/fubumvc/" target="_blank">FubuMVC</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" target="_blank">WCF</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/cc707905.aspx" target="_blank">Service Locator Pattern</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/dd381609.aspx" target="_blank">Action Filters</a> </li>    <li><a href="http://code.msdn.microsoft.com/RiaServices" target="_blank">RIA Services</a> </li>    <li><a href="http://weblogs.asp.net/scottgu/" target="_blank">Scott Guthrie</a> and <a href="http://www.hanselman.com/blog/" target="_blank">The Other Scott</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0043-Javier-Lozano-on-the-M-in-MVC.mp3">Herding Code 43: Javier Lozano on the M in MVC</a> </p>    <p><em>Show notes compiled by </em><a href="http://johnnycoder.com/blog"><em>Ben Griswold</em></a><em>. Thanks!</em></p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0043-Javier-Lozano-on-the-M-in-MVC.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 42: Scott Bellware on BDD and Lean Development</title>
    <link>https://herdingcode.com/episode-42-scott-bellware-on-bdd-and-lean-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-42-scott-bellware-on-bdd-and-lean-development/</guid>
    <pubDate>Wed, 08 Apr 2009 18:23:21 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Scott Bellware educates and entertain as only he can. Scott talks about Behavior Driven Development (BDD), Test Driven Development (TDD) and Lean Soft</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 42</strong></p>
<p>This week on Herding Code, Scott Bellware educates and entertain as only he can. Scott talks about Behavior Driven Development (BDD), Test Driven Development (TDD) and Lean Software Development, gets "all preachy" and donates to the show a nearly endless batch of outtakes.&#160; </p>  <ul>   <li>Hear the REAL <a href="http://www.hanselminutes.com/default.aspx?showID=164" target="_blank">last word about TDD</a>.&#160; You know it is more about design and little about testing, right? </li>    <li>True or false?&#160; Scott Bellware practices BDD.&#160; The answer will shock you! </li>    <li>Learn why you need let go of your inner geek and commit to being a business person. </li>    <li>Discover how Context Specification can help you get a date (or your money back.) </li>    <li>Pick up some catchy phases like "focal depth", "theory of constraints", "quality at the source", "working forward" and "Docksiders." </li>    <li>And much, much, much more. </li> </ul>  <p>Show Links: </p>  <ul>   <li><a href="http://blog.scottbellware.com/" target="_blank">Scott Bellware's Blog</a> </li>    <li><a href="http://dannorth.net/" target="_blank">Dan North</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">Test Driven Development (TDD)</a> </li>    <li><a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development" target="_blank">Behavior Driven Development (BDD)</a> </li>    <li><a href="http://code.google.com/p/specunit-net/" target="_blank">SpecUnit</a> </li>    <li><a href="http://www.nunit.org" target="_blank">NUnit</a> </li>    <li><a href="http://rspec.info/" target="_blank">RSpec</a> </li>    <li><a href="http://codebetter.com/blogs/aaron.jensen/" target="_blank">Aaron Jenson</a> </li>    <li><a href="http://nbehave.org/" target="_blank">NBehave</a> </li>    <li><a href="http://www.codeplex.com/xunit" target="_blank">XUnit</a> </li>    <li><a href="http://www.mbunit.com/" target="_blank">MBUnit</a> </li>    <li><a href="http://en.wikipedia.org/wiki/MSTest" target="_blank">MSTest</a> </li>    <li><a href="http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx" target="_blank">Entity Framework</a> </li>    <li><a href="http://codebetter.com" target="_blank">CodeBetter.com</a> </li>    <li><a href="http://theruntime.com" target="_blank">theRuntime.com</a> </li>    <li><a href="http://theruntime.com/blogs/jaykimble/Default.aspx" target="_blank">Jay Kimble</a> </li>    <li><a href="http://www.audible.com/adbl/site/products/ProductDetail.jsp?productID=BK_SANS_000453&amp;BV_UseBVCookie=Yes" target="_blank">Lean Thinking: Banish Waste and Create Wealth in Your Corporation</a> </li>    <li><a href="http://www.audible.com/adbl/site/products/ProductDetail.jsp?productID=BK_HIGH_000306&amp;BV_UseBVCookie=Yes" target="_blank">The Goal: A Process of Ongoing Improvement</a> </li>    <li><a href="http://www.audible.com/adbl/site/products/ProductDetail.jsp?productID=BK_GRAW_000044&amp;BV_UseBVCookie=Yes">The Toyota Way</a> </li>    <li><a href="http://www.audible.com/adbl/site/products/ProductDetail.jsp?productID=BK_GDAN_000153&amp;BV_UseBVCookie=Yes">Extreme Toyota: Radical Contradictions That Drive Success at the World's Best Manufacturer </a></li>    <li><a href="http://www.poppendieck.com/" target="_blank">Mary and Tom Poppendieck</a> </li>    <li><a href="http://aubile.com" target="_blank">Audible.com</a> </li>    <li><a href="http://www.mono-project.com/Main_Page" target="_blank">Mono</a> </li>    <li><a href="http://mono-project.com/Moonlight" target="_blank">Moonlight</a> </li>    <li><a href="http://code.google.com/android/" target="_blank">Android Development</a> </li>    <li><a href="http://developer.apple.com/iphone/" target="_blank">iPhone Development</a> </li>    <li>Monospace (or Mono Space) will be a workshop conference on Mono in Austin this fall - <a title="http://explore.twitter.com/bellware/status/1427781203" href="http://explore.twitter.com/bellware/status/1427781203">http://explore.twitter.com/bellware/status/1427781203</a> </li>    <li>everbetter.me will provide person to person mentoring and targeted for launch in June - <a title="http://twitter.com/bellware/status/1470820727" href="http://twitter.com/bellware/status/1470820727">http://twitter.com/bellware/status/1470820727</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0042-Scott-Bellware-on-BDD-and-Lean-Development.mp3">Episode 42: Scott Bellware on BDD and Lean Development</a> </p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0042-Scott-Bellware-on-BDD-and-Lean-Development.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 41: Next Generation Twitter Client Discussion At MIX09</title>
    <link>https://herdingcode.com/episode-41-next-generation-twitter-client-discussion-at-mix09/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-41-next-generation-twitter-client-discussion-at-mix09/</guid>
    <pubDate>Fri, 03 Apr 2009 08:01:34 GMT</pubDate>
    <description><![CDATA[<p>While at MIX09, Jon sat in on a brainstorming discussion about next generation Twitter clients running on WPF and Silverlight 3 with Tim Heuer, Chris Bennage, and Alan Le. This</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 41</strong></p>
<p>While at MIX09, Jon sat in on a brainstorming discussion about next generation Twitter clients running on WPF and Silverlight 3 with Tim Heuer, Chris Bennage, and Alan Le. This was originally just recorded for a few people who couldn't be there for our meeting, but we had enough positive feedback that we're publishing it as a podcast.</p>  <p>DISCLAIMER: This was recorded in a noisy room, and while I've done what I can to eliminate background noise and even out the vocal levels, the audio quality is poor (even by Herding Code standards). You've been warned.</p>  <p>Thanks to Tim, Chris, and Alan for giving their permission to publish this.</p>  <p>Show Links: </p>  <ul>   <li>Tim Heuer - <a href="http://timheuer.com">http://timheuer.com</a> - <a href="http://twitter.com/timheuer">@timheuer</a> </li>    <li>Chris Bennage - <a title="http://bluespire.com/blogs" href="http://bluespire.com/blogs">http://bluespire.com/blogs</a> - <a href="http://twitter.com/bennage">@bennage</a> </li>    <li>Alan Le - <a title="http://alanle.com/" href="http://alanle.com/">http://alanle.com/</a> - <a href="http://twitter.com/a7an">@a7an</a>&#160; </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0041-Next-Generation-Twitter-Client-Discusion-At-MIX09.mp3">Episode 41: Next Generation Twitter Client Discusion At MIX09</a> </p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0041-Next-Generation-Twitter-Client-Discusion-At-MIX09.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 40: Shawn Wildermuth on Silverlight 3 and RIA Services</title>
    <link>https://herdingcode.com/episode-40-shawn-wildermuth-on-silverlight-3-and-ria-services/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-40-shawn-wildermuth-on-silverlight-3-and-ria-services/</guid>
    <pubDate>Wed, 01 Apr 2009 00:41:57 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, the full cast talks to Shawn Wildermuth about Silverlight 3 and RIA Services: Shawn talks about shared code, validation rules logic and general</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 40</strong></p>
<p>This week on Herding Code, the full cast talks to <a href="http://wildermuth.com/" target="_blank">Shawn Wildermuth</a> about Silverlight 3 and RIA Services:&#160; </p>  <ul>   <li>Shawn talks about shared code, validation rules logic and general line of business application development with RIA Service and the guys become skeptically about RIA Service's good and bad magic. </li>    <li>Kevin's draggy-droppy spidey senses kick in and asks if RIA Services merely demos well.&#160; Shawn speaks candidly about nobody knowing if RIA Services will work well in the wild (will it scale, for example) and encourages everyone to download and play with the bit and provide feedback.&#160; </li>    <li>Scott K asks why he should even care about RIA Services, comments on how this is another example of building plumbing code frameworks in a vacuum, scoffs at Microsoft products like Silverlight, OSLO and Windows Workflow Foundation and goes so far to ask if is it too early for a RIA Service Vote of No Confidence.&#160; In response, Shawn has some fun with Scott K and defends RIA Services along with some of the Microsoft development teams.&#160; Shawn also shares his enthusiasm about OLSO. </li>    <li>Kevin questions Microsoft's choice in terminology.&#160; Does RIA Services really speak to what the framework does? </li>    <li>K Scott and Shawn briefly discuss the RIA Service's TDD story and touch upon SilverUnit. </li>    <li>Jon and Shawn discuss their favorite new Silverlight features which include direct writing of pixels and audio, Silverlight out of browser, and behaviors. </li>    <li>The guys do a quick wrap up of Mix09 announcements and talk about Sketchflow's designer focus and cynically talk about its unavailability. </li>    <li>To the delight of those on the call, Jon talks about Expression Web SuperrrPreeevieewww! </li>    <li>And there's a special guest question from <a href="http://rachelappel.com/" target="_blank">Rachel Appel</a> and a Twitter question from <a href="http://simpable.com/" target="_blank">Scott Watermasysk</a>. </li> </ul>  <p>Show Links: </p>  <ul>   <li>Shawn Wildermuth's blog - <a title="http://wildermuth.com/" href="http://wildermuth.com/">http://wildermuth.com/</a> </li>    <li>Silverlight Tour - <a title="http://silverlight-tour.com/" href="http://silverlight-tour.com/">http://silverlight-tour.com/</a>, <a href="http://agilitrain.com">http://agilitrain.com</a> </li>    <li>Shawn's MSDN Article on MVVM - <a title="http://msdn.microsoft.com/en-us/magazine/dd458800.aspx" href="http://msdn.microsoft.com/en-us/magazine/dd458800.aspx">http://msdn.microsoft.com/en-us/magazine/dd458800.aspx</a> </li>    <li>Shawn's MSDN Articles on OSLO and DSLs - <a title="http://msdn.microsoft.com/en-us/library/dd441702.aspx" href="http://msdn.microsoft.com/en-us/library/dd441702.aspx">http://msdn.microsoft.com/en-us/library/dd441702.aspx</a>, <a title="http://msdn.microsoft.com/en-us/library/dd548006.aspx" href="http://msdn.microsoft.com/en-us/library/dd548006.aspx">http://msdn.microsoft.com/en-us/library/dd548006.aspx</a> </li>    <li>Shawn's Recent Articles - <a title="http://wildermuth.com/Articles" href="http://wildermuth.com/Articles">http://wildermuth.com/Articles</a> </li>    <li>Shawn's MSDN Article on Prism - Coming soon </li>    <li>Rachel Appel - <a title="http://rachelappel.com/" href="http://rachelappel.com/">http://rachelappel.com/</a> </li>    <li>Nikhil Kothari - <a title="http://www.nikhilk.net" href="http://www.nikhilk.net">http://www.nikhilk.net</a> </li>    <li>Brad Abrams - <a title="http://blogs.msdn.com/brada/" href="http://blogs.msdn.com/brada/">http://blogs.msdn.com/brada/</a> </li>    <li>Nikhil Kothari's MIX09 Session: <a title="http://videos.visitmix.com/MIX09/T41F" href="http://videos.visitmix.com/MIX09/T41F">http://videos.visitmix.com/MIX09/T41F</a> </li>    <li>Brad Abrams' MIX09 Session: <a title="http://videos.visitmix.com/MIX09/T40F" href="http://videos.visitmix.com/MIX09/T40F">http://videos.visitmix.com/MIX09/T40F</a> </li>    <li>Rocky Lhotka - <a title="http://www.lhotka.net/" href="http://www.lhotka.net/">http://www.lhotka.net/</a> </li>    <li>Scott Watermasysk - <a title="http://simpable.com/" href="http://simpable.com/">http://simpable.com/</a> </li>    <li>SilverUnit - <a title="http://cthru.codeplex.com/" href="http://cthru.codeplex.com/">http://cthru.codeplex.com/</a> </li>    <li>Silverlight ToolKit (with Test Framework) - <a title="http://silverlight.codeplex.com/" href="http://silverlight.codeplex.com/">http://silverlight.codeplex.com/</a> </li>    <li>MIX09 - <a title="http://live.visitmix.com/" href="http://live.visitmix.com/">http://live.visitmix.com/</a> </li>    <li>Sketchflow - <a title="http://videos.visitmix.com/MIX09/C01F" href="http://videos.visitmix.com/MIX09/C01F">http://videos.visitmix.com/MIX09/C01F</a> </li>    <li>SuperPreview - <a title="http://expression.microsoft.com/en-us/dd565874.aspx" href="http://expression.microsoft.com/en-us/dd565874.aspx">http://expression.microsoft.com/en-us/dd565874.aspx</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0040-Shawn-Wildermuth-on-Silverlight-3-and-RIA-Services.mp3 ">Episode 40: Shawn Wildermuth on Silverlight 3 and RIA Services</a> </p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0040-Shawn-Wildermuth-on-Silverlight-3-and-RIA-Services.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 39: Scott C. Reynolds on Mac and iPhone Development</title>
    <link>https://herdingcode.com/episode-39-scott-c-reynolds-on-mac-and-iphone-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-39-scott-c-reynolds-on-mac-and-iphone-development/</guid>
    <pubDate>Wed, 25 Mar 2009 17:08:36 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Jon, K Scott, Scott K and Kevin talk about Mac/iPhone development with .NET and Ruby developer Scott C. Reynolds. Show Links: Scott C. Reynold&apos;s blogs</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 39</strong></p>
<p>This week on Herding Code, Jon, K Scott, Scott K and Kevin talk about Mac/iPhone development with .NET and Ruby developer Scott C. Reynolds. </p>  <p>Show Links: </p>  <ul>   <li>Scott C. Reynold's blogs - <a href="http://scottcreynolds.com">http://scottcreynolds.com</a>, <a href="http://lostechies.com/blogs/scottcreynolds/">http://lostechies.com/blogs/scottcreynolds</a> </li>    <li>Scott C. Reynold's on Twitter - <a href="http://twitter.com/scottcreynolds">http://twitter.com/scottcreynolds</a> </li>    <li>Apple Developer Connection - <a href="http://developer.apple.com/">http://developer.apple.com/</a> </li>    <li>Mac Developer Program - <a href="http://developer.apple.com/products/mac/program/">http://developer.apple.com/products/mac/program/</a> </li>    <li>iPhone Developer Program - <a href="http://developer.apple.com/iphone/">http://developer.apple.com/iphone/</a> </li>    <li>Mac OS X Leopard [oh-es-ten lep-erd] - <a href="http://www.apple.com/macosx/">http://www.apple.com/macosx/</a> </li>    <li>XCode - <a href="http://developer.apple.com/TOOLS/xcode/">http://developer.apple.com/TOOLS/xcode/</a> </li>    <li>Objective-C (ObjC) - <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html">http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html</a> </li>    <li>Beginning Objective C for the C# Guy - <a href="http://www.scottcreynolds.com/archive/2009/02/05/beginning-objective-c-for-the-c-guy.aspx">http://www.scottcreynolds.com/archive/2009/02/05/beginning-objective-c-for-the-c-guy.aspx</a> </li>    <li>MacRuby - <a href="http://www.macruby.org/trac/wiki/MacRuby">http://www.macruby.org/trac/wiki/MacRuby</a> </li>    <li>Cocoa &amp; CocoaTouch - <a href="http://developer.apple.com/technology/cocoa.html">http://developer.apple.com/technology/cocoa.html</a> </li>    <li>OCUnit - <a href="http://developer.apple.com/tools/unittest.html">http://developer.apple.com/tools/unittest.html</a> </li>    <li>Interface Builder - <a href="http://developer.apple.com/tools/interfacebuilder.html">http://developer.apple.com/tools/interfacebuilder.html</a> </li>    <li>Carbon - <a href="http://developer.apple.com/Carbon/">http://developer.apple.com/Carbon/</a> </li>    <li>Human Interface Guidelines - <a href="http://developer.apple.com/documentation/userexperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html">http://developer.apple.com/documentation/userexperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html</a> </li>    <li>AppStore - <a title="http://www.apple.com/iphone/appstore/" href="http://www.apple.com/iphone/appstore/">http://www.apple.com/iphone/appstore/</a> </li>    <li>Mono - <a title="http://www.mono-project.com/Main_Page" href="http://www.mono-project.com/Main_Page">http://www.mono-project.com/Main_Page</a> </li>    <li>Miguel de Icaza - <a title="http://tirania.org/blog/" href="http://tirania.org/blog/">http://tirania.org/blog/</a> </li>    <li>Unity - <a title="http://unity3d.com/" href="http://unity3d.com/">http://unity3d.com/</a> </li>    <li>Boo - <a title="http://boo.codehaus.org/" href="http://boo.codehaus.org/">http://boo.codehaus.org/</a> </li>    <li>Day of Ruby - Tampa (May 16th, 2009) - <a title="http://tampa.dayofruby.com/" href="http://tampa.dayofruby.com/">http://tampa.dayofruby.com/</a> </li> </ul>   <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0039-Scott-C-Reynolds-on-Mac-and-iPhone-Development.mp3">Episode 39: Scott C. Reynolds on Mac and iPhone Development</a> </p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0039-Scott-C-Reynolds-on-Mac-and-iPhone-Development.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 38: NHibernate performance with Ayende, David Penton, and Ben Scheirman</title>
    <link>https://herdingcode.com/nhibernate-performance-with-ayende-david-penton-and-ben-scheirman/</link>
    <guid isPermaLink="true">https://herdingcode.com/nhibernate-performance-with-ayende-david-penton-and-ben-scheirman/</guid>
    <pubDate>Fri, 13 Mar 2009 18:51:42 GMT</pubDate>
    <description><![CDATA[<p>While K Scott and Jon were at the Microsoft MVP Global Summit, we listened in on a late night debate on NHibernate performance between Oren Eini (a.k.a. Ayende Rahein) , David P</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 38</strong></p>
<p>While K Scott and Jon were at the Microsoft MVP Global Summit, we listened in on a late night debate on NHibernate performance between <a href="http://ayende.com/">Oren Eini (a.k.a. Ayende Rahein)</a>, <a href="http://pentonizer.com">David Penton</a>, and <a href="http://flux88.com">Ben Scheirman</a>.</p>  <p><strong>Show Links:</strong></p>  <ul>   <li>NHibernate - <a href="http://nhforge.org">http://nhforge.org</a></li>    <li>Ayende's blog - <a href="http://ayende.com">http://ayende.com</a></li>    <li>David Penton's blog - <a href="http://pentonizer.com">http://pentonizer.com</a> </li>    <li>Ben Scheirman's blog - <a href="http://flux88.com">http://flux88.com</a>&#160;</li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0038-NHibernate-Performance-with-Ayende-David-Penton-and-Ben-Scheirman.mp3">Episode 38: NHibernate performance with Ayende, David Penton, and Ben Scheirman</a> </p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0038-NHibernate-Performance-with-Ayende-David-Penton-and-Ben-Scheirman.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 37: Jon Udell</title>
    <link>https://herdingcode.com/episode-37-jon-udell/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-37-jon-udell/</guid>
    <pubDate>Sat, 07 Mar 2009 08:21:10 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Jon leads a talk with Microsoft Technical Evangelist Jon Udell , about strategies for Internet citizens. That is, making public information available</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 37</strong></p>
<p>This week on Herding Code, Jon leads a talk with Microsoft Technical Evangelist <a href="http://jonudell.net/">Jon Udell</a>, about strategies for Internet citizens. That is, making public information available for retrieval and manipulation through structured data feeds and Internet standards.&#160; The group discusses related topics like digital identity and <a href="http://openid.net/">OpenID</a> and shares their thoughts on Oslo, DSLs, dynamic languages like IronPython. </p>  <p><strong>Show Links:</strong></p>  <ul>   <li>Jon Udell's blog - <a href="http://blog.jonudell.net/">http://blog.jonudell.net/</a> </li>    <li>Byte Magazine - <a href="http://www.ddj.com/">http://www.ddj.com/</a> </li>    <li>Practical Internet Groupware - <a href="http://oreilly.com/catalog/9781565925373/">http://oreilly.com/catalog/9781565925373/</a> </li>    <li>InfoWorld - <a href="http://www.infoworld.com/">http://www.infoworld.com/</a>&#160; </li>    <li>USASpending.gov - <a href="http://usaspending.gov/">http://usaspending.gov/</a> </li>    <li>Azure - <a href="http://www.microsoft.com/azure/default.mspx">http://www.microsoft.com/azure/default.mspx</a> </li>    <li>IronPython - <a href="http://ironpython.codeplex.com/">http://ironpython.codeplex.com/</a>&#160; </li>    <li>ElmCity - <a href="http://elmcity.info/">http://elmcity.info/</a>&#160; </li>    <li>Extensible Business Reporting Language (XBRL) - <a href="http://www.xbrl.org/Home/">http://www.xbrl.org/Home/</a> </li>    <li>Drupal - <a href="http://drupal.org/">http://drupal.org/</a>&#160; </li>    <li>Google calendar - <a href="http://calendar.google.com/">http://calendar.google.com/</a>&#160; </li>    <li>RSS - <a href="http://en.wikipedia.org/wiki/RSS_(file_format">http://en.wikipedia.org/wiki/RSS_(file_format</a>) </li>    <li>Yahoo! Pipes - <a href="http://pipes.yahoo.com/pipes/">http://pipes.yahoo.com/pipes/</a>&#160; </li>    <li>Doug Day, .NET iCalendar Library - <a href="http://www.ddaysoftware.com/Pages/Default.aspx">http://www.ddaysoftware.com/Pages/Default.aspx</a> </li>    <li>Ben Fortuna, Java, icalforJ - <a href="http://ical4j.sourceforge.net/">http://<cite><b>ical4j</b></cite><cite>.sourceforge.net/</cite></a>&#160; </li>    <li>iCalendar Specification (RFC 2445) - <a href="http://www.ietf.org/rfc/rfc2445.txt">http://www.ietf.org/rfc/rfc2445.txt</a> </li>    <li>Delicious - <a href="http://delicious.com/">http://delicious.com/</a> </li>    <li>iCalender Validation - <a href="http://icalvalid.wikidot.com/">http://icalvalid.wikidot.com/</a> </li>    <li>LibriVox - <a href="http://librivox.org/">http://librivox.org/</a> </li>    <li>Douglas Purdy - <a href="http://www.douglasp.com">www.douglasp.com</a> </li>    <li>Oslo - <a href="http://www.douglaspurdy.com/2008/09/06/what-is-oslo/">http://www.douglaspurdy.com/2008/09/06/what-is-oslo/</a> </li>    <li>DSL - <a href="http://martinfowler.com/bliki/DomainSpecificLanguage.html">http://martinfowler.com/bliki/DomainSpecificLanguage.html</a> </li>    <li>Don Box - <a href="http://www.pluralsight.com/community/blogs/dbox/">http://www.pluralsight.com/community/blogs/dbox/</a> </li>    <li>Dynamic Languages - <a href="http://en.wikipedia.org/wiki/Dynamic_programming_language">http://en.wikipedia.org/wiki/Dynamic_programming_language</a>&#160; </li>    <li>Chris Anderson/Don Box Keynote - <a href="http://channel9.msdn.com/pdc2008/KYN03/">http://channel9.msdn.com/pdc2008/KYN03/</a> </li>    <li>Live Services - <a href="http://msdn.microsoft.com/en-us/live/default.aspx">http://msdn.microsoft.com/en-us/live/default.aspx</a> </li>    <li>REST - <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">http://en.wikipedia.org/wiki/Representational_State_Transfer</a> </li>    <li>OpenId - <a href="http://openid.net/">http://openid.net/</a> </li>    <li>CardSpace - <a href="http://msdn.microsoft.com/en-us/library/aa480189.aspx">http://msdn.microsoft.com/en-us/library/aa480189.aspx</a> </li>    <li>Phil Windley - <a href="http://phil.windley.org/">http://phil.windley.org/</a> </li>    <li>Kynetx - <a href="http://www.kynetx.com/">http://www.kynetx.com/</a> </li>    <li>Digital Identity - <a href="http://oreilly.com/catalog/9780596008789/">http://oreilly.com/catalog/9780596008789/</a>&#160; </li>    <li>Kim Cameron - <a href="http://www.identityblog.com/">http://www.identityblog.com/</a>&#160; </li>    <li>Gillmore Gang - <a href="http://gillmorgang.techcrunch.com/">http://gillmorgang.techcrunch.com/</a>&#160; </li>    <li>IT Conversations - <a href="http://itc.conversationsnetwork.org/">http://itc.conversationsnetwork.org/</a> </li>    <li>Web Hooks - <a href="http://webhooks.pbwiki.com/">http://webhooks.pbwiki.com/</a> </li>    <li>SpokenWord.org - <a href="http://www.spokenword.org/">http://www.spokenword.org/</a> </li>    <li>Lucas Gonze - <a href="http://gonze.com/about/">http://gonze.com/about/</a> </li>    <li>Webjay - <a href="http://webjay.org/">http://webjay.org/</a> </li>    <li>Katya Oddio - <a href="http://www.oddiooverplay.com/here/about.html">http://www.oddiooverplay.com/here/about.html</a> </li> </ul>  <p><strong>Download / Listen:</strong></p>  <p><a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0037-Jon-Udell.mp3">Episode 37: Jon Udell</a> </p>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0037-Jon-Udell.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 36: Scott Watermasysk</title>
    <link>https://herdingcode.com/episode-36-scott-watermasysk/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-36-scott-watermasysk/</guid>
    <pubDate>Fri, 20 Feb 2009 22:02:34 GMT</pubDate>
    <description><![CDATA[<p>This week, the Herding Code cast talks shop with Scott Watermasysk about cloud computing, blogging platforms, Internet Explorer, the DotNetOpenId project and much more: Scott W,</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 36</strong></p>
This week, the Herding Code cast talks shop with <a href="http://simpable.com/about/">Scott Watermasysk</a> about cloud computing, blogging platforms, Internet Explorer, the DotNetOpenId project and much more:
<ul>
	<li>Scott W, Scott K and Jon discuss Azure, Amazon Web Services and Google App Engine.</li>
	<li>Jon asks Scott W to share his thoughts on blogging platforms and the difficulties around their development due to their many edge cases and full feature set.</li>
	<li>Scott W answers <a href="http://twitter.com/Andersonimes/status/1221768454">a listener question</a> about his thoughts on Silverlight.</li>
	<li>Scott K, Jon and Scott W rant about corporations continuing to run IE6, why IE8 killed Scott W’s inner child and why, oh why, won’t Microsoft just rewrite Internet Explorer already.</li>
	<li>Scott W shares his strategy for evaluating and learning new technologies and how to successfully manage remote development teams.</li>
	<li>Scott W and the guys talk about the demise of SQL and the higher dependency on ORMs and traditional database alternatives like CouchDB.</li>
	<li>Scott W comments on Silverlight and ASP.NET MVC and whether these technologies help solve his customers’ problems today.</li>
</ul>
<strong>Show Links:</strong>
<ul>
	<li>Scott Watermasysk’s blog – <a href="http://simpable.com">http://simpable.com</a></li>
	<li>Telligent - <a href="http://telligent.com/">http://telligent.com/</a></li>
	<li>Community Server - <a href="http://communityserver.com/">http://communityserver.com/</a></li>
	<li>Community Server Evolution - <a href="http://telligent.com/products/community-server-evolution/">http://telligent.com/products/community-server-evolution/</a></li>
	<li>Azure - <a href="http://www.microsoft.com/azure/default.mspx">http://www.microsoft.com/azure/default.mspx</a></li>
	<li>Amazon Web Services - <a href="http://aws.amazon.com/">http://aws.amazon.com/</a></li>
	<li>Google App Engine - <a href="http://code.google.com/appengine/">http://code.google.com/appengine/</a></li>
	<li>Mix 2009 - <a href="http://2009.visitmix.com/">http://2009.visitmix.com/</a></li>
	<li>CouchDB - <a href="http://couchdb.apache.org/">http://couchdb.apache.org/</a></li>
	<li>BigTable - <a href="http://labs.google.com/papers/bigtable.html">http://labs.google.com/papers/bigtable.html</a></li>
	<li>SubText - <a href="http://www.subtextproject.com/">http://www.subtextproject.com/</a></li>
	<li>BlogEngine.NET - <a href="http://www.dotnetblogengine.net/">http://www.dotnetblogengine.net/</a></li>
	<li>.Text – <a href="http://forums.asp.net/149.aspx">http://forums.asp.net/149.aspx</a></li>
	<li>.Text on GotDotNet (<a href="http://web.archive.org/web/20051226233907/www.gotdotnet.com/workspaces/releases/viewuploads.aspx?id=e99fccb3-1a8c-42b5-90ee-348f6b77c407">web archive</a>)</li>
	<li>Oxite - <a href="http://www.codeplex.com/oxite">http://www.codeplex.com/oxite</a></li>
	<li>Zawinski’s Law - <a href="http://en.wikipedia.org/wiki/Zawinski's_Law_of_Software_Envelopment#Quotes">http://en.wikipedia.org/wiki/Zawinski's_Law_of_Software_Envelopment#Quotes</a></li>
	<li>IE8 - <a href="http://www.microsoft.com/windows/Internet-explorer/beta/default.aspx">http://www.microsoft.com/windows/Internet-explorer/beta/default.aspx</a></li>
	<li>Gecko - <a href="https://developer.mozilla.org/en/Gecko">https://developer.mozilla.org/en/Gecko</a></li>
	<li>WebKit - <a href="http://webkit.org/">http://webkit.org/</a></li>
	<li>Browser Speeds Test - <a href="http://news.cnet.com/8301-1001_3-10030888-92.html">http://news.cnet.com/8301-1001_3-10030888-92.html</a></li>
	<li>Silverlight - <a href="http://silverlight.net/">http://silverlight.net/</a></li>
	<li>MEF - <a href="http://www.codeplex.com/MEF">http://www.codeplex.com/MEF</a></li>
	<li>The Greatest Scott of Them All - <a href="http://weblogs.asp.net/Scottgu/">http://weblogs.asp.net/Scottgu/</a></li>
	<li>dotnetopenid Project - <a href="http://code.google.com/p/dotnetopenid/">http://code.google.com/p/dotnetopenid/</a></li>
	<li>CardSpace - <a href="http://msdn.microsoft.com/en-us/library/aa480189.aspx">http://msdn.microsoft.com/en-us/library/aa480189.aspx</a></li>
	<li>NHibernate - <a href="http://www.hibernate.org/343.html">http://www.hibernate.org/343.html</a></li>
	<li>Subsonic - <a href="http://subsonicproject.com/">http://subsonicproject.com/</a></li>
	<li>Entity Framework - <a href="http://msdn.microsoft.com/en-us/library/aa697427(vs.80).aspx">http://msdn.microsoft.com/en-us/library/aa697427(vs.80).aspx</a></li>
	<li>Apology-Based Computing - <a href="http://simpable.com/software/apology-based-computing/">http://simpable.com/software/apology-based-computing/</a></li>
	<li>Eric Evan’s Book – http://domaindrivendesign.org/books/index.html#DDD</li>
	<li>Tokbox - <a href="http://www.tokbox.com/">http://www.tokbox.com/</a></li>
	<li>Velocity - <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&amp;displaylang=en</a></li>
	<li>ASP.NET MVC - <a href="http://www.asp.net/mvc/">http://www.asp.net/mvc/</a></li>
	<li>Phil Haack - <a href="http://www.haacked.com/">http://www.haacked.com/</a></li>
</ul>
<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0036-Scott-Watermasysk.mp3">Episode 36: Scott Watermasysk</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0036-Scott-Watermasysk.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 35: Fun at work</title>
    <link>https://herdingcode.com/episode-35-fun-at-work/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-35-fun-at-work/</guid>
    <pubDate>Sun, 15 Feb 2009 05:49:43 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, K. Scott kicks off an amusing conversation about office pranks and general fun in the workplace: Jon explains why you might send goat pictures to your</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 35</strong></p>
This week on Herding Code, K. Scott kicks off an amusing conversation about office pranks and general fun in the workplace:
<ul>
	<li>Jon explains why you might send goat pictures to your coworkers.</li>
	<li>Kevin comments about the hazards of new carpet installation.</li>
	<li>K. Scott talks about making an HP Printer come to life.</li>
	<li>And learn why you must always, always keep one eye on Jon when he's working...</li>
</ul>
<strong>Show Links:</strong>
<ul>
	<li>Fun With C# and HP Laserjets - <a href="http://www.odetocode.com/humor/68.aspx">http://www.odetocode.com/humor/68.aspx</a></li>
	<li>Goating - <a href="http://www.codinghorror.com/blog/archives/000997.html">http://www.codinghorror.com/blog/archives/000997.html</a></li>
	<li>Favorite Harmless Computer Practical Joke - <a href="http://stackoverflow.com/questions/65116/whats-your-favorite-harmless-computer-practical-joke">http://stackoverflow.com/questions/65116/whats-your-favorite-harmless-computer-practical-joke</a></li>
	<li>Google April Fools - <a href="http://en.wikipedia.org/wiki/Google's_hoaxes">http://en.wikipedia.org/wiki/Google's_hoaxes</a>, <a href="http://www.pcworld.com/article/142620/googles_top_17_easter_eggs_gags_and_hoaxes.html">http://www.pcworld.com/article/142620/googles_top_17_easter_eggs_gags_and_hoaxes.html</a></li>
	<li>Kindle 2 - <a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI/ref=sr_tr_1?ie=UTF8&amp;s=electronics&amp;qid=1234330860&amp;sr=1-1">http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI/ref=sr_tr_1?ie=UTF8&amp;s=electronics&amp;qid=1234330860&amp;sr=1-1</a></li>
	<li>Apple Asks Google to Not Use Multi-Touch - <a href="http://www.pcworld.com/article/159260/google_backs_off_multitouch_to_please_apple_report_claims.html">http://www.pcworld.com/article/159260/google_backs_off_multitouch_to_please_apple_report_claims.html</a></li>
	<li>Microsoft Announcement of Windows 7 Versions - <a href="http://blogs.zdnet.com/microsoft/?p=1890">http://blogs.zdnet.com/microsoft/?p=1890</a></li>
	<li>Android Multi-touch Capable, Just Disabled -<a href="http://bit.ly/13qwz"> </a><a href="http://www.trustedreviews.com/mobile-devices/news/2008/11/18/Android-Multi-touch-Capable--Just-Disabled/p1">http://www.trustedreviews.com/mobile-devices/news/2008/11/18/Android-Multi-touch-Capable--Just-Disabled/p1</a></li>
	<li>Cooked Windows Mobile ROMS <a href="http://xda-developers.com">http://xda-developers.com</a></li>
</ul>
<strong>Download / Listen:</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0035-Fun-at-work.mp3">Episode 35: Fun at work</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0035-Fun-at-work.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 34: *Chirp and Witty - WPF Twitter Clients</title>
    <link>https://herdingcode.com/episode-34-chirp-and-witty-wpf-twitter-clients/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-34-chirp-and-witty-wpf-twitter-clients/</guid>
    <pubDate>Fri, 06 Feb 2009 20:40:06 GMT</pubDate>
    <description><![CDATA[<p>This week on Herding Code, Jon, Kevin and Scott K discuss *Chirp (since renamed blu), Witty , Twitter usage, open source and WPF development: The guys review *Chirp, a new WPF T</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 34</strong></p>
This week on Herding Code, Jon, Kevin and Scott K discuss <a href="http://www.thirteen23.com/experiences/desktop/blu/">*Chirp</a> (since renamed blu), <a href="http://code.google.com/p/wittytwitter/">Witty</a>, <a href="www.twitter.com">Twitter</a> usage, open source and WPF development:
<ul>
	<li>The guys review *Chirp, a new WPF Twitter client from <a href="thirteen23.com">thirteen23</a>.  Scott compares *Chirp to Paris Hilton, Jon reminisces about old Simpsons episodes and Kevin shares that *Chirp is very pretty, nicely designed, and what WPF is all about.</li>
	<li>Kevin, Jon and Scott discuss their involvement with the Witty project. The guys talk about their favorite features, most wanted enhancements, and how they hope the project will evolve going forward. Jon subtly promises a Witty Easter Egg.</li>
	<li>The guys briefly talk about Twitter, how they manage their “rivers of information” and how varying strategies makes Twitter client design/development difficult.  Not to mention what is/isn’t available via the Twitter API…</li>
	<li>Jon and Scott comment on drive-by contributors and general challenges of open source development.</li>
	<li>The guys candidly talk about learning/knowing WPF and the difficulties of debugging WPF applications without tools.  Kevin shares how WPF violates the principle of least surprise and Jon shares why making a textbox’s background is difficult.</li>
</ul>
Note: *Chirp has since been renamed to blu. We tried to get the folks from thirteen23 on the podcast, but we didn't hear back grom them until after this show was published. We still love them, though!

Show Links:
<ul>
	<li>Witty - <a href="http://code.google.com/p/wittytwitter/">http://code.google.com/p/wittytwitter/</a></li>
	<li>blu - <a href="http://www.thirteen23.com/experiences/desktop/blu/">http://www.thirteen23.com/experiences/desktop/blu/</a></li>
	<li>Snoop - <a href="http://blois.us/Snoop/">http://blois.us/Snoop/</a></li>
	<li>Silverlight Spy - <a href="http://silverlightspy.com/silverlightspy/introduction/">http://silverlightspy.com/silverlightspy/introduction/</a></li>
	<li>Spy++ - <a href="http://msdn.microsoft.com/en-us/library/aa242713(VS.60).aspx">http://msdn.microsoft.com/en-us/library/aa242713(VS.60).aspx</a></li>
	<li>ClickOnce - <a href="http://msdn.microsoft.com/en-us/netframework/aa497348.aspx">http://msdn.microsoft.com/en-us/netframework/aa497348.aspx</a></li>
	<li>Alan Le - <a href="http://blogs.vertigo.com/personal/alanl/Blog">http://blogs.vertigo.com/personal/alanl/Blog</a></li>
	<li>WPF Twitter - <a href="http://www.codeplex.com/WPFTwitter">http://www.codeplex.com/WPFTwitter</a></li>
	<li>Model/View/ViewModel (MVVM) - <a href="http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx">http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx</a></li>
	<li>TweetDeck - <a href="http://www.tweetdeck.com/beta/">http://www.tweetdeck.com/beta/</a></li>
	<li>Adam Kinney - <a href="http://www.adamkinney.com/">http://www.adamkinney.com/</a></li>
	<li>photoSuru - <a href="http://www.photosuru.com/">http://www.photosuru.com/</a></li>
	<li>Managed Extensibility Framework (MEF) - <a href="http://www.codeplex.com/MEF">http://www.codeplex.com/MEF</a></li>
	<li>WPF Commands - <a href="http://msdn.microsoft.com/en-us/library/ms752308.aspx">http://msdn.microsoft.com/en-us/library/ms752308.aspx</a></li>
	<li>Laurent Bugnion<a href="http://www.galasoft.ch/">http://www.galasoft.ch/</a></li>
	<li>RSS Bandit - <a href="http://rssbandit.org/">http://rssbandit.org/</a></li>
</ul>
Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0034-Chirp-and-Witty-WPF-Twitter-Clients.mp3">Episode 34: *Chirp and Witty - WPF Twitter Clients</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0034-Chirp-and-Witty-WPF-Twitter-Clients.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 33: Intertube Inauguration and Questions From Listeners</title>
    <link>https://herdingcode.com/episode-33-intertube-inauguration-and-questions-from-listeners/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-33-intertube-inauguration-and-questions-from-listeners/</guid>
    <pubDate>Fri, 30 Jan 2009 02:28:32 GMT</pubDate>
    <description><![CDATA[<p>This week Kevin leads a discussion about the inauguration on the web, then we field some questions from listeners. Topics Live inauguration video on Silverlight sites Photosynth</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 33</strong></p>
This week Kevin leads a discussion about the inauguration on the web, then we field some questions from listeners.
<div><strong>Topics</strong></div>
<ul>
	<li>Live inauguration video on Silverlight sites</li>
	<li>Photosynth picture of the inauguration</li>
	<li>whitehouse.gov on webforms - will Viewstate bring down the presidency?</li>
	<li>Armchair quarterbacking the whitehouse.gov site</li>
	<li>whitehouse.gov updates robots.txt</li>
	<li>And Twitter didn't die!</li>
	<li>Question - What is the one thing I should learn this year</li>
	<li>- K. Scott - SOLID, dynamic languages, WPF</li>
	<li>- Jon - Pick something, declarative UI, get involved in something</li>
	<li>- Kevin - SOLID Principles, WPF</li>
	<li>Question - Comparing working in Web, RIA, and WPF</li>
	<li>Side discussion: What's the deal with ClickOnce?</li>
	<li>Whoa! Scott Koon joins us mid-call!</li>
	<li>Quick discussion of jQuery 1.3</li>
	<li>Question - What is the one thing Scott K wants to learn this year?</li>
	<li>- Scott K. - Expressions</li>
	<li>- K. Scott - I agree that Scott K should learn expressions</li>
	<li>Side discussion: Why are companies so slow to upgrade .NET versions?</li>
	<li>- Jon - Go, go, go!</li>
	<li>- K. Scott - Not enough must-have features</li>
	<li>- Kevin - Requires customers to upgrade</li>
</ul>
<div>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://pic2009.org/">Presidential Inauguration Commission website</a></li>
	<li><a href="http://blogs.msdn.com/volkerw/archive/2009/01/20/inauguration-on-silverlight.aspx">CBS Inauguration info</a></li>
	<li><a href="http://www.cnn.com/SPECIALS/2009/44.president/inauguration/themoment/">Inauguration Photosynth</a></li>
	<li><a href="http://www.whitehouse.gov/">whitehouse.gov</a></li>
</ul>
</div>
<strong>Download / Listen</strong>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0033-Intertube-Inauguration-and-Questions-From-Listeners.mp3">Episode 33: Intertube Inauguration and Questions From Listeners</a></div>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0033-Intertube-Inauguration-and-Questions-From-Listeners.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 32: Windows 7 First Impressions</title>
    <link>https://herdingcode.com/episode-32-windows-7-first-impressions/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-32-windows-7-first-impressions/</guid>
    <pubDate>Sun, 18 Jan 2009 23:21:22 GMT</pubDate>
    <description><![CDATA[<p>This week Jon leads a discussion about our first impressions of Windows 7 Beta 1. Topics Previously bundled features are now distribued via Windows Live - good or bad? Is the Wi</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 32</strong></p>
This week Jon leads a discussion about our first impressions of Windows 7 Beta 1.
<div><strong>Topics</strong></div>
<ul>
	<li>Previously bundled features are now distribued via Windows Live - good or bad?</li>
	<li>Is the Windows Live suite just a standardized crapware?</li>
	<li>Where's our Photo Gallery?</li>
	<li>Windows Marketplace???</li>
	<li>Missing an ISO Mounter</li>
	<li>The out of box experience</li>
	<li>Window docking</li>
	<li>Windows Explorer - side by side</li>
	<li>Discoverability - shortcuts, etc.</li>
	<li>"New features" that were already in Vista</li>
	<li>New Wordpad and Paint with ribbons</li>
	<li>Same old Notepad</li>
	<li>Kevin's underwhelmed with the updates to Paint</li>
	<li>Could Windows Live Essentials include some friends, like Paint.NET?</li>
	<li>Hey, a new calculator!</li>
	<li>Problem Steps Recorder</li>
	<li>Send Feedback</li>
	<li>Nothing new for Remote Desktop?</li>
	<li>Virtual Hard Drive support, but we want application virtualization</li>
	<li>Multitouch</li>
	<li>Distribution - why not via BitTorrent?</li>
	<li>IE8 is still the same old IE8 that we know and meh</li>
	<li>Windows Scenic Animation API</li>
	<li>Looks like the API's still all C++ and COM</li>
	<li>The Vista Bridge project</li>
	<li>The Ribbon control has graduated from an Office control to Windows</li>
	<li>No WPF?</li>
	<li>Jumplists</li>
</ul>
<div>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://www.microsoft.com/windows/windows-7/beta-download.aspx">Windows 7 Beta Download</a></li>
	<li><a href="http://download.live.com">Windows Live Essentials</a></li>
	<li><a href="http://poweriso.com/">PowerISO</a><a> (note - the free version works just fine)</a></li>
	<li><a href="http://blogs.msdn.com/tims/archive/2009/01/12/the-bumper-list-of-windows-7-secrets.aspx">Tim Sneath's list of Windows 7 secrets</a></li>
	<li><a href="http://www.andlinux.org/">andLinux</a></li>
	<li><a href="http://www.istartedsomething.com/20090111/windows-7-problem-steps-recorder-miracle-tool/">Problem Steps Recorder</a></li>
	<li>Windows Scenic Animation API [<a href="http://channel9.msdn.com/posts/yochay/Windows-Scenic-Animation-Overview/">overview</a>] [<a href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PDC08WhitePapers&amp;ReleaseId=1797">whitepaper</a>]<a href="http://code.msdn.microsoft.com/VistaBridge"></a></li>
	<li><a href="http://code.msdn.microsoft.com/VistaBridge">Vista Bridge Sample Library</a></li>
</ul>
</div>
<strong>Download / Listen</strong>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0032-Windows-7-First-Impressions.mp3">Herding Code 32: Windows 7 First Impressions</a></div>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0032-Windows-7-First-Impressions.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 31: Chad Myers and Jeremy Miller on FubuMVC</title>
    <link>https://herdingcode.com/episode-31-chad-myers-and-jeremy-miller-on-fubumvc/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-31-chad-myers-and-jeremy-miller-on-fubumvc/</guid>
    <pubDate>Tue, 13 Jan 2009 09:30:55 GMT</pubDate>
    <description><![CDATA[<p>This week we talk to Chad Myers and Jeremy Miller about the FubuMVC project. Topics What is FubuMVC? History of the project Built to take advantage of static typing Composition</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 31</strong></p>
<div>This week we talk to Chad Myers and Jeremy Miller about the FubuMVC project.<strong>Topics</strong>
<ul>
	<li>What is FubuMVC?</li>
	<li>History of the project</li>
	<li>Built to take advantage of static typing</li>
	<li>Composition over inheritance</li>
	<li>Dependency injection tricks</li>
	<li>IFlattener&lt;T&gt; for JSONification</li>
	<li>Application of SOLID prinicples in FubuMVC and AltOxite</li>
	<li>View engines</li>
	<li>TextboxFor and no magic strings - advantages for refactoring support</li>
	<li>Thin controllers, fat models</li>
	<li>FubuMVC as the Ruby On Rails for ASP.NET</li>
	<li>Benefits and problems of using generics for static typing</li>
	<li>Use of meaningful generic type names rather than &lt;T,U,K&gt; ugliness</li>
	<li>Testing tools for Javascript</li>
	<li>FubuMVC's Behaviors</li>
	<li>Partial rendering strategies</li>
	<li>Why they're using NHibernate for AltOxite</li>
	<li>IOC benefits</li>
	<li>Strategies for Javascript management</li>
	<li>qUnit for Javascript unit testing</li>
	<li>How do I sell this to my boss?</li>
	<li>Why FubuMVC as opposed to Microsoft's ASP.NET MVC?</li>
	<li>Why MVC isn't just classic ASP revisited</li>
	<li>Benefit of FubuMVC - removing choices through opinions</li>
	<li>Ways an open source MVC framework keep up with Microsoft</li>
	<li>FubuMVC futures and misc. benefits</li>
	<li>Use of Rake as a build script</li>
</ul>
</div>
<div>
<div>Links</div>
<div>
<ul>
	<li><a href="http://code.google.com/p/fubumvc/">FubuMVC</a></li>
	<li><a href="http://www.lostechies.com/blogs/chad_myers/default.aspx">Chad's blog</a></li>
	<li><a href="http://codebetter.com/blogs/jeremy.miller/">Jeremy Miller's blog</a></li>
	<li><a href="http://docs.jquery.com/QUnit">QUnit (cross browser testing tool)</a></li>
</ul>
</div>
Download / Listen

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0031-Chad-Myers-and-Jeremy-Miller-on-FubuMVC.mp3">Herding Code 31: Chad Myers and Jeremy Miller on FubuMVC</a></div>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0031-Chad-Myers-and-Jeremy-Miller-on-FubuMVC.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 30: Year-end wrapup</title>
    <link>https://herdingcode.com/episode-30-year-end-wrapup/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-30-year-end-wrapup/</guid>
    <pubDate>Tue, 06 Jan 2009 09:57:12 GMT</pubDate>
    <description><![CDATA[<p>K Scott leads the discussion as we look back at 2008, and speculate wildly on what 2009 has to offer. Note: Scott K&apos;s taking a podcasting break to change diapers and stuff. Look</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 30</strong></p>
K Scott leads the discussion as we look back at 2008, and speculate wildly on what 2009 has to offer.

Note: Scott K's taking a podcasting break to change diapers and stuff.

<strong>Looking back at 2008</strong>
<ul>
	<li>Google Chrome</li>
	<li>Kevin's new iPhone</li>
	<li>Kevin's Firefox extension addiction</li>
	<li>Hulu</li>
	<li>IE8 - better than expected, but still a ways to go</li>
	<li>ASP.NET MVC</li>
	<li>Silverlight 2</li>
	<li>Oslo</li>
	<li>Azure</li>
	<li>Visual Studio 2008 SP1</li>
	<li>ADO.NET Data Services</li>
	<li>REST is finally accepted in the .NET world</li>
	<li>The Seinfeld / Gates ads</li>
	<li>OpenID</li>
	<li>Netbooks (Oragami at last?)</li>
	<li>Twitter's recovery</li>
	<li>Overhyped stuff: Surface, cloud computing, multi-core madness</li>
	<li>Functional programming</li>
	<li>DI/IOC hitting the Microsoft mainstream</li>
	<li>[sidebar - the tradeoff between DI benefits vs. Silverlight XAP size]</li>
	<li>StackOverflow</li>
	<li>[sidebar - frustration with Microsoft forums]</li>
</ul>
<strong>Looking forward at 2009</strong>
<ul>
	<li>Windows 7</li>
	<li>Office 14</li>
	<li>Project Pink? (Zune on Windows Mobile)</li>
	<li>[sidebar - frustrations Zune]</li>
	<li>WPF in Visual Studio</li>
	<li>[sidebar - is there a correlation between unmanaged code and lame Microsoft products?]</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="https://addons.mozilla.org/en-US/firefox/addon/10127">SiteLauncher Firefox add-on</a></li>
	<li>Mary Jo Foley on <a href="http://blogs.zdnet.com/microsoft/?p=1618">Project Pink</a></li>
</ul>
</div>
<div>
<ul></ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0030-Year-end-wrapup.mp3">Herding Code 30: Year-end wrapup</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0030-Year-end-wrapup.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 29: Miguel de Icaza (part 2)</title>
    <link>https://herdingcode.com/episode-29-miguel-de-icaza-part-2/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-29-miguel-de-icaza-part-2/</guid>
    <pubDate>Mon, 15 Dec 2008 17:35:27 GMT</pubDate>
    <description><![CDATA[<p>This is the second half of our discussion with Miguel de Icaza about Mono, Moonlight, open source, and other fun stuff. Topics When re-implementing .NET, do you match re-impleme</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 29</strong></p>
This is the second half of our discussion with Miguel de Icaza about Mono, Moonlight, open source, and other fun stuff.

<strong>Topics</strong>
<ul>
	<li>When re-implementing .NET, do you match re-implement known bugs?</li>
	<li>The test / regression system to maintain compatibility</li>
	<li>How do you support so many platforms</li>
	<li>What parts of Mono are written in managed code? Which are written in C?</li>
	<li>Support for iPhone and Xbox</li>
	<li>Mono's static compilation options</li>
	<li>Differing agendas in open source development</li>
	<li>Microsoft's emerging open source strategy</li>
	<li>How the web has driven open source strategies and assumptions</li>
	<li>Why Mono used licensed codecs instead of using a library like ffmpeg</li>
	<li>Font distribution in Linux</li>
	<li>Frustrations with the Windows multimedia API's</li>
	<li>What Miguel thought was insteresting at PDC</li>
	<li>When will we be able to run ASP.NET MVC on Mono?</li>
	<li>When will we get to use the C# 4.0 dynamic features in Mono?</li>
	<li>How does Novell make money on Mono?</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://tirania.org/blog/">Miguel's blog</a></li>
	<li><a href="http://www.mono-project.com/Main_Page">The Mono Project Home page</a></li>
	<li><a href="http://channel9.msdn.com/pdc2008/PC54/">Miguel's presentation at PDC</a></li>
	<li>An example of a static linker product for .NET <a href="http://www.xenocode.com/Products/Postbuild-for-NET/">Postbuild 2008</a> ($1599)</li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0029-Miguel-de-Icaza--part-2.mp3">Herding Code 29: Miguel de Icaza (part 2)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0029-Miguel-de-Icaza--part-2.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 28: Miguel de Icaza (part 1)</title>
    <link>https://herdingcode.com/episode-28-miguel-de-icaza-part-1/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-28-miguel-de-icaza-part-1/</guid>
    <pubDate>Sat, 13 Dec 2008 00:53:56 GMT</pubDate>
    <description><![CDATA[<p>This week we talk with Miguel de Icaza about Mono, Moonlight, and other fun stuff. Topics Overview and update on Mono Mono&apos;s roots as a tool for desktop applications on Gnome /</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 28</strong></p>
This week we talk with Miguel de Icaza about Mono, Moonlight, and other fun stuff.

<strong>Topics</strong>
<ul>
	<li>Overview and update on Mono</li>
	<li>Mono's roots as a tool for desktop applications on Gnome / Linux</li>
	<li>The need for a package manager in Windows</li>
	<li>Managed operating systems (like Microsoft Research Singularity)</li>
	<li>New areas of focus for Mono - portability and extension</li>
	<li>Mono's use in cross-platform gaming</li>
	<li>SIMD optimizations in Mono</li>
	<li>Mono's implementation of the C# compiler as a service</li>
	<li>How the Mono team determines what to work on next</li>
	<li>Breaking changes in public API's</li>
	<li>Framework design</li>
	<li>Mono's relationship with Microsoft</li>
	<li>The state of Linux desktop application development</li>
	<li>Silverlight as a platform for desktop applications</li>
	<li>When will Moonlight ship?</li>
	<li>The challenges of building the Mono compiler</li>
	<li>The Linear IL compiler enhancements in Mono 2.0</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://tirania.org/blog/">Miguel's blog</a></li>
	<li><a href="http://www.mono-project.com/Main_Page">The Mono Project Home page</a></li>
	<li><a href="http://channel9.msdn.com/pdc2008/PC54/">Miguel's presentation at PDC</a></li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0028-Miguel-de-Icaza--part-1.mp3">Herding Code 28: Miguel de Icaza (part 1)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0028-Miguel-de-Icaza--part-1.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 27: What Every Web Developer Needs To Know</title>
    <link>https://herdingcode.com/episode-27-what-every-web-developer-needs-to-know/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-27-what-every-web-developer-needs-to-know/</guid>
    <pubDate>Mon, 24 Nov 2008 19:58:25 GMT</pubDate>
    <description><![CDATA[<p>Kevin leads a discussion on what every web developer needs to know. Topics Javascript - language or toolkits? Does clean HTML matter? What are the tangible benefits? Working wit</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 27</strong></p>
Kevin leads a discussion on what every web developer needs to know.

<strong>Topics</strong>
<ul>
	<li>Javascript - language or toolkits?</li>
	<li>Does clean HTML matter? What are the tangible benefits?</li>
	<li>Working with designers who only speak Photoshop</li>
	<li>Basic usability</li>
	<li>Tools every web developer needs</li>
	<li>Progressive enhancement</li>
	<li>K. Scott introduces the Lightning Round</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://aggiorno.com">Aggiorno</a> - HTML refactoring tool</li>
	<li><a href="http://blogs.msdn.com/webmaster/archive/2008/08/28/what-s-broken-in-the-microsoft-development-stack.aspx">Search engine optimization criticism of Microsoft at SES conference</a></li>
	<li><a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IE Tester</a> - Test rendering in various versions of IE one one machine</li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0027-What-every-web-developer-should-know.mp3">Herding Code 27: What every web developer should know</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0027-What-every-web-developer-should-know.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 26: Laurent Bugnion on WPF and Silverlight</title>
    <link>https://herdingcode.com/episode-26-laurent-bugnion-on-wpf-and-silverlight/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-26-laurent-bugnion-on-wpf-and-silverlight/</guid>
    <pubDate>Fri, 14 Nov 2008 22:13:33 GMT</pubDate>
    <description><![CDATA[<p>Jon talks to Laurent Bugnion about WPF and Silverlight. Laurent&apos;s an expert on WPF and Silverlight, and is the author of Silverlight 2 Unleashed . Topics Differences between WPF</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 26</strong></p>
Jon talks to Laurent Bugnion about WPF and Silverlight. Laurent's an expert on WPF and Silverlight, and is the author of <a href="http://www.amazon.com/gp/product/0672330148?ie=UTF8&amp;tag=jongall-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0672330148">Silverlight 2 Unleashed</a>.

<strong>Topics</strong>
<ul>
	<li>Differences between WPF and Silverlight</li>
	<li>Thoughts on Silverlight offline</li>
	<li>Model-View-ViewModel pattern and applications in Blend</li>
	<li>WPF Disciples mailing list</li>
	<li>Why use WPF instead of Winforms</li>
	<li>Non-visual benefits of WPF and Silverlight</li>
	<li>Benefits of the XAML format</li>
	<li>Silverlight's VisualStateManager compared to WPF triggers</li>
	<li>Laurent's experiences writing Silverlight 2 Unleashed</li>
</ul>

<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://galasoft.ch/">Laurent Bugnion's blog</a></li>
	<li><a href="http://blog.galasoft.ch/archive/2007/11/04/Expression-Blend-Template-loops-no-problems-in-Cider-though.aspx">Post about Model-View-ViewModel</a></li>
	<li><a href="http://www.galasoft.ch/mydotnet/articles/article-2007091401.html">Laurent's demo application on design mode virtualization</a></li>
	<li><a href="http://www.amazon.com/gp/product/0672330148?ie=UTF8&tag=jongall-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0672330148">Silverlight 2 Unleashed</a> on Amazon</li>
</ul>
 </div>
<strong>Download / Listen</strong>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0026-Laurent-Bugnion-on-WPF-and-Silverlight.mp3">Herding Code 26: Laurent Bugnion on WPF and Silverlight</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0026-Laurent-Bugnion-on-WPF-and-Silverlight.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 25: PDC 2008 Podcaster Roundtable with Deep Fried Bytes and StackOverflow (part 2)</title>
    <link>https://herdingcode.com/episode-25-pdc-2008-podcaster-roundtable-with-deep-fried-bytes-and-stackoverflow-part-2/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-25-pdc-2008-podcaster-roundtable-with-deep-fried-bytes-and-stackoverflow-part-2/</guid>
    <pubDate>Fri, 07 Nov 2008 21:58:25 GMT</pubDate>
    <description><![CDATA[<p>While we were at the Microsoft PDC 2008 conference, we met up with the guys from the Deep Fried Bytes podcast as well as Jeff Atwood (StackOverflow, CodingHorror) for a podcaste</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 25</strong></p>
While we were at the Microsoft PDC 2008 conference, we met up with the guys from the Deep Fried Bytes podcast as well as Jeff Atwood (StackOverflow, CodingHorror) for a podcaster roundtable. The first part of this discussion is over at <a href="http://deepfriedbytes.com/podcast/episode-18-pdc-2008-podcaster-roundtable-with-stackoverflow-and-herding-code/">Deep Fried Bytes (Episode 18)</a>.
<p style="text-align: center;"><a href="http://www.flickr.com/photos/skoon/2990169654/"></a><a href="http://www.flickr.com/photos/skoon/2990169654/"><img class="size-full wp-image-86  aligncenter" title="PDC 2008 Podcast Roundtable" src="https://herdingcode.com/wp-content/uploads/pdc2008-podcast-roundtable.jpg/" alt="" width="500" height="375" /></a><a href="http://www.flickr.com/photos/skoon/2990169654/"></a><strong></strong></p>

<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0025-PDC-2008-Podcaster-Roundtable-with-Deep-Fried-Bytes-and-StackOverflow-part-2.mp3">Herding Code 25: PDC 2008 Podcaster Roundtable with Deep Fried Bytes and StackOverflow (part 2)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0025-PDC-2008-Podcaster-Roundtable-with-Deep-Fried-Bytes-and-StackOverflow-part-2.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 24: Phil Haack on the ASP.NET MVC Beta Release (part 2)</title>
    <link>https://herdingcode.com/episode-24-phil-haack-on-the-aspnet-mvc-beta-release-part-2/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-24-phil-haack-on-the-aspnet-mvc-beta-release-part-2/</guid>
    <pubDate>Tue, 04 Nov 2008 05:06:54 GMT</pubDate>
    <description><![CDATA[<p>This is the second half of our interview with Phil Haack on the ASP.NET MVC Beta Release. Topics ModelBinders in ASP.NET MVC Lessons learned in building MVC (question from Brian</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 24</strong></p>
This is the second half of our interview with Phil Haack on the ASP.NET MVC Beta Release.

<strong>Topics</strong>
<ul>
	<li>ModelBinders in ASP.NET MVC</li>
	<li>Lessons learned in building MVC (question from Brian Henderson)</li>
	<li>To what extent did the MVC team look at other frameworks like Monorail, Rails, Django, etc.</li>
	<li>Any new features for the 1.0 release? How about 2.0?</li>
	<li>What's next for you after MVC ships?</li>
	<li>How is the MVC team's community-centered release style affecting other Microsoft teams?</li>
	<li>Will MVC's TDD focus affect other Microsoft frameworks?</li>
	<li>Would MVC be a good fit for a RESTful service system</li>
	<li>RESTful routing</li>
	<li>What Visual Studio features can we expect</li>
	<li>How has one year at Microsoft been for you?</li>
	<li>Strongly typed ActionLink having been moved to MVC futures</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://www.asp.net/mvc/">ASP.NET MVC</a></li>
	<li><a href="http://haacked.com">Phil's blog</a></li>
	<li><a href="http://www.codeplex.com/aspnet/Wiki/View.aspx?title=MVC&amp;referringTitle=Home">ASP.NET MVC on CodePlex</a></li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0024-Phil-Haack-on-ASP-NET-MVC-Beta-Release-part-2.mp3">Herding Code 24: Phil Haack on the ASP.NET MVC Beta Release (part 2)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0024-Phil-Haack-on-ASP-NET-MVC-Beta-Release-part-2.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 23: Phil Haack on the ASP.NET MVC Beta Release (part 1)</title>
    <link>https://herdingcode.com/episode-23-phil-haack-on-the-aspnet-mvc-beta-release-part-1/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-23-phil-haack-on-the-aspnet-mvc-beta-release-part-1/</guid>
    <pubDate>Sun, 26 Oct 2008 03:40:40 GMT</pubDate>
    <description><![CDATA[<p>This is the first half of our interview with Phil Haack on the ASP.NET MVC Beta Release. Topics The MVC Elevator Speech MVC and Codebehind files How MVC differs from Webforms Ho</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 23</strong></p>
This is the first half of our interview with Phil Haack on the ASP.NET MVC Beta Release.

<strong>Topics</strong>
<ul>
	<li>The MVC Elevator Speech</li>
	<li>MVC and Codebehind files</li>
	<li>How MVC differs from Webforms</li>
	<li>How MVC changes your development process</li>
	<li>The difficulty in unit testing UI</li>
	<li>What's the threshold for testing your programs?</li>
	<li>The File / New / MVC experience</li>
	<li>How MVC is built for extensibility</li>
	<li>How MVC is stress tested</li>
	<li>Is there a controls story for MVC?</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://www.asp.net/mvc/">ASP.NET MVC</a></li>
	<li><a href="http://haacked.com">Phil's blog</a></li>
	<li><a href="http://www.codeplex.com/aspnet/Wiki/View.aspx?title=MVC&amp;referringTitle=Home">ASP.NET MVC on CodePlex</a></li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0023-Phil-Haack-on-ASP-NET-MVC-Beta-Release-part-1.mp3">Herding Code 23: Phil Haack on the ASP.NET MVC Beta Release (part 1)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0023-Phil-Haack-on-ASP-NET-MVC-Beta-Release-part-1.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 22: Brad Abrams and Tim Heuer on the Silverlight 2 Release</title>
    <link>https://herdingcode.com/episode-22-brad-abrams-and-tim-heuer-on-the-silverlight-2-release/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-22-brad-abrams-and-tim-heuer-on-the-silverlight-2-release/</guid>
    <pubDate>Thu, 16 Oct 2008 09:02:37 GMT</pubDate>
    <description><![CDATA[<p>This week we talk to Brad Abrams and Tim Heuer about the Silverlight 2 release. Topics What&apos;s new? The releationship between the DLR and Silverlight 2 The Eclipse for Silverligh</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 22</strong></p>
This week we talk to Brad Abrams and Tim Heuer about the Silverlight 2 release.

<strong>Topics</strong>
<ul>
	<li>What's new?</li>
	<li>The releationship between the DLR and Silverlight 2</li>
	<li>The Eclipse for Silverlight development</li>
	<li>The Open Specification Promise for XAML</li>
	<li>Progress on Mono / Moonlight</li>
	<li>The elevator speech on Silverlight</li>
	<li>How Silverlight fits in with AJAX</li>
	<li>Can Silverlight support separation of concerns and testability?</li>
	<li>Will Microsoft be shipping frameworks for Silverlight?</li>
	<li>Will Silverlight support offline scenarios</li>
	<li>Silverlight as a "line of business" platform</li>
	<li>The WPF / Silverlight connection</li>
	<li>The Silverlight open source community</li>
	<li>The Flash question</li>
	<li>The casual gaming market</li>
	<li>Silverlight performance vs. Javascript</li>
	<li>Speculation on Silverlight 3 features...</li>
	<li>The non-Windows development experience</li>
	<li>The Silverlight story for iPhone and other mobile platforms</li>
</ul>
<strong>Questions from listeners</strong>
<ul>
	<li>What's the story on Prism for Silverlight 2? What's the story for enterprise Apps? (Chris Bilson)</li>
	<li>What's being done to encourage enterprise adoption, in a climate where many enterprise shops are still on IE6? (Eric Kemp)</li>
	<li>What's IE's relationship with Silverlight? (Matt Hamilton)</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://timheuer.com/blog/archive/2008/10/14/silverlight-2-released-officially.aspx">Tim Heuer's blog post on the Silverlight 2 release</a></li>
	<li><a href="http://blogs.msdn.com/brada/">Brad's blog</a></li>
	<li><a href="http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx">ViewModel pattern in Silverlight</a></li>
	<li><a href="http://www.mono-project.com/Moonlight">The Mono Moonlight project</a></li>
	<li><a href="http://eclipse4sl.org/">Eclipse tools for Silverlight</a></li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0022-Brad-Abrams-and-Tim-Heuer-on-the-Silverlight-2-Release.mp3">Herding Code 22: Brad Abrams and Tim Heuer on the Silverlight 2 Release</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0022-Brad-Abrams-and-Tim-Heuer-on-the-Silverlight-2-Release.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 21: Real World Development</title>
    <link>https://herdingcode.com/episode-21-real-world-development/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-21-real-world-development/</guid>
    <pubDate>Fri, 10 Oct 2008 23:56:27 GMT</pubDate>
    <description><![CDATA[<p>This week Jon leads a discussion of real world development. We talk about how our development practices in our jobs and personal projects match up with the way we&apos;re &quot;supposed t</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 21</strong></p>
This week Jon leads a discussion of real world development. We talk about how our development practices in our jobs and personal projects match up with the way we're "supposed to be" developing. Topics:
<ul>
	<li>What are the non-negotiable practices that we always use on any code we write?</li>
	<li>Jon isn't always Test Driven. Does that make him a bad person?</li>
	<li>Where do code reuse and maintainability stack up when it comes to other real world priorities, like hard deadlines and short technology lifespans?</li>
	<li>Is there a place for "forms over data" development? How about System.DraggyDroppy?</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://weblogs.asp.net/rosherove/archive/2008/10/01/unit-testing-decoupled-from-tdd-as-well-adoption.aspx">Roy Osherove's recent posts on TDD adoption</a></li>
	<li>Ben's post on <a href="http://johnnycoder.com/blog/2008/02/06/question-everything/">the project where TDD pretended to save the day</a></li>
	<li><a href="http://www.mountaingoatsoftware.com/article_view/40-how-to-fail-with-agile">How to fail with agile</a></li>
	<li><a href="http://altnetpodcast.com/episodes/1-continuous-improvement">ALT.NET Podcast / Episode 1 on Continuous Improvement</a></li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0021-Real-World-Development.mp3">Herding Code 21: Real World Development</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0021-Real-World-Development.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 20: Ted Leung on open source in the corporate world</title>
    <link>https://herdingcode.com/episode-20-ted-leung-on-open-source-in-the-corporate-world/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-20-ted-leung-on-open-source-in-the-corporate-world/</guid>
    <pubDate>Fri, 03 Oct 2008 17:03:33 GMT</pubDate>
    <description><![CDATA[<p>This week we talk to Ted Leung. Ted works on dynamic languages and tools at Sun Microsystems and is a member of the Apache Software Foundation. We discussed a variety of issues,</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 20</strong></p>
<a href="https://herdingcode.com/wp-content/uploads/ted-leung.jpg/"><img class="alignright size-medium wp-image-61" title="Ted Leung" src="https://herdingcode.com/wp-content/uploads/ted-leung.jpg/" alt="" width="105" height="105" /></a>This week we talk to Ted Leung. Ted works on dynamic languages and tools at Sun Microsystems and is a member of the Apache Software Foundation. We discussed a variety of issues, including:
<ul>
	<li>Ted's wild ride through Apple, Apache, the Open Source Application Foundation, and Sun</li>
	<li>How open source development can benefit software companies as well as the development community</li>
	<li>How open source has worked for Apple, Sun, and IBM</li>
	<li>Microsoft and open source</li>
	<li>JavaFX</li>
	<li>Chandler: what is it, what it does well, and where it disappoints</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li>Ted's <a href="http://www.sauria.com/blog/">blog</a></li>
	<li>Ted's post: <a href="http://www.sauria.com/blog/2007/03/01/adobe-wants-to-be-the-microsoft-of-the-web/">Adobe Wants To Be The Microsoft Of The Web</a></li>
	<li>Slides from Ted's OSCON talk on Open Source Community Anti-Patterns (<a href="http://assets.en.oreilly.com/1/event/12/Open%20Source%20Community%20Antipatterns%20Presentation.pdf">pdf</a>)</li>
	<li>The Starfish and The Spider (<a href="http://en.wikipedia.org/wiki/The_Starfish_And_the_Spider">wikipedia</a>)</li>
	<li><a href="http://chandlerproject.org/">The Chandler Project</a></li>
	<li>Info on Taligent (<a href="http://en.wikipedia.org/wiki/Taligent">wikipedia</a>)</li>
	<li>Ted's <a href="http://www.sauria.com/pyblog">old blog</a></li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0020-Ted-Leung-On-Open-Source-in-the-corporate-world.mp3">Herding Code 20: Ted Leung on Open Source in the corporate world</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0020-Ted-Leung-On-Open-Source-in-the-corporate-world.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 19: Pajama Driven Development (working remote)</title>
    <link>https://herdingcode.com/episode-19-pajama-driven-development-working-remote/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-19-pajama-driven-development-working-remote/</guid>
    <pubDate>Fri, 26 Sep 2008 15:44:05 GMT</pubDate>
    <description><![CDATA[<p>This week Scott K leads a discussion on remote work, remote access technologies, and synchronization software: What software and services help with remote development The joy of</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 19</strong></p>
This week Scott K leads a discussion on remote work, remote access technologies, and synchronization software:
<ul>
	<li>What software and services help with remote development</li>
	<li>The joy of being your own network admin</li>
	<li>Source control implications (TFS, Subversion, GIT)</li>
	<li>The social tradeoff - fewer incidental conversations, more intentional conversations</li>
	<li>Remote access software</li>
	<li>Synchronization software</li>
</ul>
<div><strong>Links</strong></div>
<div>
<ul>
	<li><a href="http://blogs.zdnet.com/collaboration/?p=145">GE moving from Google Docs to Zoho</a></li>
	<li><a href="http://www.wired.com/culture/culturereviews/magazine/16-10/st_essay">Wired: Home Sweet Office: Telecommute Good for Business, Employees, and Planet</a></li>
	<li><a href="http://visualsvn.com/">VisualSVN</a></li>
	<li><a href="http://www.codeplex.com/Terminals">Terminals</a> (multi tab terminal services/remote desktop client)</li>
	<li><a href="https://www.foldershare.com/">Foldershare</a></li>
	<li><a href="http://mesh.com">Windows Live Mesh</a></li>
	<li><a href="http://sharedview.com">Microsoft SharedView</a></li>
	<li><a href="http://www.getdropbox.com/">Dropbox</a></li>
</ul>
</div>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0019-Pajama-Driven-Development--Working-Remote.mp3">Herding Code 19: Pajama Driven Development (working remote)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0019-Pajama-Driven-Development--Working-Remote.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 18: Matt Podwysocki on F# and Functional Programming</title>
    <link>https://herdingcode.com/episode-18-matt-podwysocki-on-f-and-functional-programming/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-18-matt-podwysocki-on-f-and-functional-programming/</guid>
    <pubDate>Fri, 19 Sep 2008 00:44:53 GMT</pubDate>
    <description><![CDATA[<p>This week Matt Podwysocki puts the fun in functional programming with a deep dive into F#. We&apos;ve heard plenty of high level discussions of F# and functional programming lately,</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 18</strong></p>
<img style="float: right" src="http://scrum.codebetter.com/users/avatar.aspx?userid=5324&amp;amp;amp;lastmodified=633446339163393750" alt="" width="78" height="80" />This week Matt Podwysocki puts the fun in functional programming with a deep dive into F#. We've heard plenty of high level discussions of F# and functional programming lately, so we tried to dig into the gory details as much as possible:
<ul>
	<li>What is functional programming, and why should we care?</li>
	<li>Types of applications that would and wouldn't benefit from F#</li>
	<li>How F# differs from C# 3.x and Javascript</li>
	<li>How F# is being used (games, scripting, data analysis and scrubbing, etc.)</li>
	<li>F# pattern matching</li>
	<li>Using F# in your C# or VB based applications today</li>
	<li>Getting started: F# Interactive, reading the F# source, books and resources</li>
	<li>Interaction with DLR</li>
	<li>Functional features we'd like to see in C# and VB</li>
	<li>Spec# and Sing#</li>
</ul>
<strong>Links:</strong>
<ul>
	<li><a href="http://scrum.codebetter.com/blogs/matthew.podwysocki/default.aspx">Matt Podwysocki's blog</a></li>
	<li><a href="http://cs.hubfs.net/">hubFS</a></li>
	<li>Download the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&amp;displaylang=en">Microsoft F#, September 2008 Community Technology Preview</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/fsharp/default.aspx">F# Developer Center</a></li>
	<li><a href="http://research.microsoft.com/research/sv/Dryad/">Dryad</a></li>
	<li><a href="http://research.microsoft.com/SpecSharp/">Spec#</a></li>
	<li><a href="http://research.microsoft.com/os/singularity/">Singularity</a> (Sing#)</li>
</ul>
<strong>Download / Listen</strong>

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0018-Matthew-Podwysocki-on-F-Sharp-and-Functional-Programming.mp3">Herding Code 18: Matthew Podwysocki on F# and Functional Programming</a>

<div><strong>Additional F# References:</strong></div>
Books:
<ul dir="ltr">
	<li>
<div>Expert F# - Don Syme - <a href="http://www.amazon.com/Expert-F-Experts-Voice-Net/dp/1590598504/">http://www.amazon.com/Expert-F-Experts-Voice-Net/dp/1590598504/</a></div></li>
	<li>
<div>Foundations of F# - Robert Pickering - <a href="http://www.amazon.com/Foundations-F-Experts-Voice-Net/dp/1590597575/">http://www.amazon.com/Foundations-F-Experts-Voice-Net/dp/1590597575/</a></div></li>
	<li>
<div>F# for Scientists - Dr. Jon Harrop - <a href="http://www.amazon.com/F-Scientists-Jon-Harrop/dp/0470242116/">http://www.amazon.com/F-Scientists-Jon-Harrop/dp/0470242116/</a></div></li>
</ul>
Blogs:
<ul>
	<li>Don Syme - <a href="http://blogs.msdn.com/dsyme/default.aspx">http://blogs.msdn.com/dsyme/default.aspx</a></li>
	<li>Chris Smith (F# Tester) - <a href="http://blogs.msdn.com/chrsmith/default.aspx">http://blogs.msdn.com/chrsmith/default.aspx</a></li>
	<li>Brian McNamara (F# Dev) - <a href="http://lorgonblog.spaces.live.com/">http://lorgonblog.spaces.live.com/</a></li>
	<li>Jomo Fisher (F# Dev) - <a href="http://blogs.msdn.com/jomo_fisher/default.aspx">http://blogs.msdn.com/jomo_fisher/default.aspx</a></li>
	<li>Andrew Kennedy (MSR) - <a href="http://blogs.msdn.com/andrewkennedy/default.aspx">http://blogs.msdn.com/andrewkennedy/default.aspx</a></li>
	<li>Luca Bolognese (Managed Languages Principal PM) - <a href="http://blogs.msdn.com/lucabol/default.aspx">http://blogs.msdn.com/lucabol/default.aspx</a></li>
</ul>
Podcasts/Videos
<ul>
	<li>Dryad on .NET Rocks - <a href="http://www.dotnetrocks.com/default.aspx?showNum=378">http://www.dotnetrocks.com/default.aspx?showNum=378</a></li>
	<li>Simon Peyton-Jones on Functional Programming and Haskell - <a href="http://se-radio.net/podcast/2008-08/episode-108-simon-peyton-jones-functional-programming-and-haskell">http://se-radio.net/podcast/2008-08/episode-108-simon-peyton-jones-functional-programming-and-haskell</a></li>
</ul>
<div dir="ltr">F# Examples</div>
<ul dir="ltr">
	<li>
<div>Any Colony Simulation - <a href="http://www.strangelights.com/blog/archive/2008/05/04/1613.aspx">http://www.strangelights.com/blog/archive/2008/05/04/1613.aspx</a></div></li>
	<li>
<div>FsTest - <a href="http://www.codeplex.com/FsTest">http://www.codeplex.com/FsTest</a></div></li>
</ul>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0018-Matthew-Podwysocki-on-F-Sharp-and-Functional-Programming.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 17: Browser Roundup</title>
    <link>https://herdingcode.com/episode-17-browser-roundup/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-17-browser-roundup/</guid>
    <pubDate>Thu, 11 Sep 2008 08:20:29 GMT</pubDate>
    <description><![CDATA[<p>This week Jon leads a discussion on the new crop of browsers: What&apos;s new in Google Chrome Comparison of Javascript engines What does crazy-fast Javascript mean? Is Webkit taking</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 17</strong></p>
This week Jon leads a discussion on the new crop of browsers:
<ul>
	<li>What's new in Google Chrome</li>
	<li>Comparison of Javascript engines</li>
	<li>What does crazy-fast Javascript mean?</li>
	<li>Is Webkit taking over? Why's Firefox sticking with Gecko?</li>
	<li>IE8 Compatibility Mode - Will it save us from IE6?</li>
	<li>Is it time for the IE team to try "File/New/Browser"?</li>
	<li>Do web standards mean anything when IE doesn't support them?</li>
	<li>Where does Silverlight fit in?</li>
	<li>Objective-J</li>
</ul>
Links:
<ul>
	<li>The <a href="http://blogoscoped.com/google-chrome/">Google Chrome Comic</a></li>
	<li>John Resig's <a href="http://ejohn.org/blog/javascript-performance-rundown/">Javascript Performance Rundown</a></li>
	<li><a href="http://arstechnica.com/articles/paedia/mozilla-committed-to-gecko.ars">Why Mozilla's sticking with Gecko</a></li>
	<li>The <a href="http://www.webstandards.org/action/acid2/">Acid 2 Test</a></li>
	<li><a href="http://developer.mozilla.org/En/E4X">E4X (ECMAScript for XML)</a></li>
	<li><a href="http://weblogs.asp.net/jgalloway/archive/2005/11/06/429666.aspx">Jon's post (circa 2005) asking when IE would support E4X</a></li>
	<li><a href="http://developer.mozilla.org/en/JavaScript">New Javascript features in versions 1.6, 1.7, and 1.8</a></li>
	<li><a href="http://blogs.msdn.com/ie/archive/2008/09/03/developer-tools-in-internet-explorer-8-beta-2.aspx">IE8 Beta 2 Developer Toolbar</a></li>
	<li><a href="http://cappuccino.org/learn/tutorials/objective-j-tutorial.php">Objective-J (Objective-C for Javascript)</a></li>
	<li><a href="http://www.25hoursaday.com/weblog/2008/09/08/TheNewBrowserWarsTheBestFeaturesOfTheNewGenerationOfBrowsers.aspx">Dare's comparison of new browser features</a></li>
	<li><a href="http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx">IE8 Beta 2 Compatibility View</a></li>
</ul>
Download / Listen

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0017-Browser-Roundup.mp3">Herding Code 17: Browser Roundup</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0017-Browser-Roundup.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 16: Interviewing Software Developers</title>
    <link>https://herdingcode.com/episode-16-interviewing-software-developers/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-16-interviewing-software-developers/</guid>
    <pubDate>Fri, 05 Sep 2008 00:25:09 GMT</pubDate>
    <description><![CDATA[<p>This week Kevin leads a discussion on interviewing software developers: What interview styles we find effective What sort of questions actually help us evaluate a candidate Why</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 16</strong></p>
This week Kevin leads a discussion on interviewing software developers:
<ul>
	<li>What interview styles we find effective</li>
	<li>What sort of questions actually help us evaluate a candidate</li>
	<li>Why API trivia and puzzle questions don't work</li>
	<li>Hiring mistakes we've made based on errors in our interview style</li>
	<li>Why we don't do very well when the tables are turned and it's our turn to be interviewed</li>
</ul>
Download / Listen

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0016-Interviewing-Software-Developers.mp3">Herding Code 16: Interviewing Software Developers</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0016-Interviewing-Software-Developers.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 15: Chris Tavares on Unity, P&#x26;P, Rotor, MVC, and EntLib</title>
    <link>https://herdingcode.com/episode-15-chris-tavares-on-unity-pp-rotor-mvc-and-entlib/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-15-chris-tavares-on-unity-pp-rotor-mvc-and-entlib/</guid>
    <pubDate>Fri, 29 Aug 2008 06:44:55 GMT</pubDate>
    <description><![CDATA[<p>This week we talk with Chris Tavares , a developer on the Microsoft patterns &amp; practices team, where he was the lead developer on Unity. He is also a virtual member of the A</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 15</strong></p>
<a href="https://herdingcode.com/wp-content/uploads/chris-tavares.jpg/"><img class="alignright size-thumbnail wp-image-40" title="Chris Tavares" src="https://herdingcode.com/wp-content/uploads/chris-tavares.jpg/" alt="Chris Tavares" width="100" height="120" /></a>This week we talk with <a href="http://www.tavaresstudios.com/Blog/">Chris Tavares</a>, a developer on the Microsoft patterns &amp; practices team, where he was the lead developer on Unity. He is also a virtual member of the ASP.NET MVC team, helping to design the new framework. Back in the day, he helped test out the effect of reference counting on .NET by building an experimental version of Rotor.

Links:
<ul>
	<li><a href="http://www.tavaresstudios.com/Blog/">Chris' blog</a></li>
	<li><a href="http://www.codeplex.com/unity">Unity</a></li>
	<li><a href="http://www.sellsbrothers.com/writing/refcount_rotor.doc">Rotor - Reference Counting (word doc)</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/practices/default.aspx">patterns &amp; practices</a></li>
</ul>
Download / Listen

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0015-Chris-Tavares.mp3">Herding Code 15: Chris Tavares</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0015-Chris-Tavares.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 14: Jeff Atwood (CodingHorror.com) talks about StackOverflow</title>
    <link>https://herdingcode.com/episode-14-jeff-atwood-codinghorrorcom/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-14-jeff-atwood-codinghorrorcom/</guid>
    <pubDate>Thu, 21 Aug 2008 16:58:08 GMT</pubDate>
    <description><![CDATA[<p>This week, we talk with Jeff Atwood (of codinghorror.com fame) about his soon to be released developer Q&amp;A site, StackOverflow.com. Links: CodingHorror.com (Jeff&apos;s blog) The</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 14</strong></p>
This week, we talk with Jeff Atwood (of <a href="http://www.codinghorror.com">codinghorror.com</a> fame) about his soon to be released developer Q&amp;A site, StackOverflow.com.

Links:
<ul>
	<li><a href="http://codinghorror.com">CodingHorror.com</a> (Jeff's blog)</li>
	<li><a href="http://blog.stackoverflow.com/">The StackOverflow blog</a></li>
	<li><a href="http://scobleizer.com/2008/08/11/pr-less-launch-kicks-off-a-stack-overflow-of-praise/">Robert Scoble's post on StackOverflow</a> (no, it didn't make him cry)</li>
	<li><a href="http://www.codinghorror.com/blog/archives/001121.html">Jeff's post about using OpenID on StackOverflow</a></li>
</ul>
Download / Listen

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0014-Jeff-Atwood-(codinghorror).mp3">HerdingCode 14: Jeff Atwood (codinghorror.com) talks about StackOverflow</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0014-Jeff-Atwood-(codinghorror).mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 13: Back To Basics (but which ones?)</title>
    <link>https://herdingcode.com/episode-13-back-to-basics-but-which-ones/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-13-back-to-basics-but-which-ones/</guid>
    <pubDate>Fri, 15 Aug 2008 17:01:20 GMT</pubDate>
    <description><![CDATA[<p>This week, we talk about the &quot;back to basics&quot; movement, which begs the question: what are the basics? HerdingCode 13: Back To Basics (but which ones?)</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 13</strong></p>
This week, we talk about the "back to basics" movement, which begs the question:  what are the basics?

Download / Listen

<a href='https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0013-Back-To-Basics-(but-which-ones).mp3'>HerdingCode 13: Back To Basics (but which ones?)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0013-Back-To-Basics-(but-which-ones).mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 12: Glenn Block on Prism, Unity, and MEF (part 2)</title>
    <link>https://herdingcode.com/episode-12-glenn-block-on-prism-unity-and-mef-part-2/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-12-glenn-block-on-prism-unity-and-mef-part-2/</guid>
    <pubDate>Fri, 08 Aug 2008 09:00:14 GMT</pubDate>
    <description><![CDATA[<p>This is the second half of our interview with Glenn Block. He talks about the interesting stuff he&apos;s been up to at Microsoft with Prism, Unity, and MEF (the Managed Extensibilit</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 12</strong></p>
This is the second half of our interview with Glenn Block. He talks about the interesting stuff he's been up to at Microsoft with Prism, Unity, and MEF (the Managed Extensibility Framework). Be sure to listen to <a href="https://herdingcode.com/">part 1</a> first or Glenn's crazytalk about MEF will spin your head around.

Links:
<ul>
	<li>Glenn's Prism posts - <a href="http://blogs.msdn.com/gblock/archive/tags/prism/default.aspx">http://blogs.msdn.com/gblock/archive/tags/prism/default.aspx</a></li>
	<li>Prism - <a href="http://www.microsoft.com/compositewpf">www.microsoft.com/compositewpf</a></li>
	<li>Unity - <a href="http://msdn.microsoft.com/unity">http://msdn.microsoft.com/unity</a></li>
	<li>MEF - <a href="http://blogs.msdn.com/kcwalina/archive/2008/04/25/MEF.aspx">http://blogs.msdn.com/kcwalina/archive/2008/04/25/MEF.aspx</a></li>
	<li>MEF CTP - <a href="http://code.msdn.com/MEF">http://code.msdn.com/MEF</a></li>
	<li>Look for an article on Prism in the upcoming September issue of MSDN magazine.</li>
</ul>
Download / Listen

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0012-Glenn-Block-Part-2.mp3">Episode 12: Glenn Block on Prism, Unity, and MEF (Part 2)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0012-Glenn-Block-Part-2.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 11: Glenn Block on Prism, Unity, and MEF (part 1)</title>
    <link>https://herdingcode.com/episode-11-glenn-block-on-prism-unity-and-mef-part-1/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-11-glenn-block-on-prism-unity-and-mef-part-1/</guid>
    <pubDate>Fri, 01 Aug 2008 07:37:19 GMT</pubDate>
    <description><![CDATA[<p>This is the first half of our interview with Glenn Block. He talks about the interesting stuff he&apos;s been up to at Microsoft with Prism, Unity, and MEF (the Managed Extensibility</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 11</strong></p>
This is the first half of our interview with Glenn Block. He talks about the interesting stuff he's been up to at Microsoft with Prism, Unity, and MEF (the Managed Extensibility Framework).

Links:
<ul>
	<li>Glenn's Prism posts - <a href="http://blogs.msdn.com/gblock/archive/tags/prism/default.aspx">http://blogs.msdn.com/gblock/archive/tags/prism/default.aspx</a></li>
	<li>Prism - <a href="http://www.microsoft.com/compositewpf">www.microsoft.com/compositewpf</a></li>
	<li>Unity - <a href="http://msdn.microsoft.com/unity">http://msdn.microsoft.com/unity</a></li>
	<li>MEF - <a href="http://blogs.msdn.com/kcwalina/archive/2008/04/25/MEF.aspx">http://blogs.msdn.com/kcwalina/archive/2008/04/25/MEF.aspx</a></li>
	<li>MEF CTP - <a href="http://code.msdn.com/MEF">http://code.msdn.com/MEF</a></li>
	<li>Look for an article on Prism in the upcoming September issue of MSDN magazine.</li>
</ul>
Reminder: <a href="http://upcoming.yahoo.com/event/944306/">Geek Dinner with Jon, Kevin, and Jeff Atwood at the Pyramid Alehouse in Berkeley on 8/2 at 7 PM</a>.

Download / Listen

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0011-Glenn-Block-Part-1.mp3">Episode 11: Glenn Block on Prism, Unity, and MEF (Part 1)</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0011-Glenn-Block-Part-1.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 10: LINQ</title>
    <link>https://herdingcode.com/episode-10-linq/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-10-linq/</guid>
    <pubDate>Wed, 23 Jul 2008 23:00:58 GMT</pubDate>
    <description><![CDATA[<p>K Scott leads us in a discussion of LINQ, including: What is it How introducing LINQ to .NET changed the framework LINQ Providers LINQ to XML LINQ to SQL - how it&apos;s different fr</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 10</strong></p>
K Scott leads us in a discussion of LINQ, including:
<ol>
	<li>What is it</li>
	<li>How introducing LINQ to .NET changed the framework</li>
	<li>LINQ Providers</li>
	<li>LINQ to XML</li>
	<li>LINQ to SQL - how it's different from EF, tips and tricks, when to use it</li>
</ol>
Links:
<ul>
	<li><a href="http://www.linqpad.net/">LINQpad</a></li>
	<li><a href="http://oakleafblog.blogspot.com/2007/03/third-party-linq-providers.html">3rd Party LINQ providers list</a> on OakLeaf Systems blog</li>
	<li><a href="http://blogs.msdn.com/charlie/archive/2008/02/28/link-to-everything-a-list-of-linq-providers.aspx">LINQ to Everything providers list</a> on Charlie Calvert's blog</li>
	<li><a href="http://www.codeplex.com/clinq">CLINQ (continuous LINQ)</a></li>
	<li><a href="http://www.codeplex.com/htmlagilitypack">HTML Agility Pack</a></li>
	<li><a href="http://msdn.microsoft.com/en-us/magazine/cc163400.aspx">Evolution of LINQ</a> (MSDN Magazine article on LINQ's history and impact on .NET)</li>
	<li><a href="http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx">LINQ to SQL Debugger Visualizer</a></li>
	<li><a href="http://odetocode.com/Blogs/scott/archive/2008/05/11/12074.aspx">Two LINQ to SQL Myths</a></li>
	<li><a href="http://odetocode.com/Blogs/scott/archive/2008/05/21/12122.aspx">Rob's Not So Lazy MVC Storefront</a></li>
	<li><a href="http://codebetter.com/blogs/ian_cooper/archive/2007/11/29/architecting-linq-to-sql-applications-part-1.aspx">Ian Cooper's Architecting LINQ to SQL applications series</a></li>
	<li><a href="http://www.codeplex.com/backgroundmotion">Background Motion</a></li>
	<li><a href="http://blog.huagati.com/res/index.php/2008/07/07/tools-part-1/">Linq2SQL designer refresh add-in</a></li>
</ul>

Also, Scott Koon was gone this week. We did our best to make sure you wouldn't notice.

Download / Listen

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0010-LINQ.mp3">Herding Code 10: LINQ</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0010-LINQ.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 9: Rob Conery on SubSonic, MVC Storefront, and the Silverlight Ninja Squad</title>
    <link>https://herdingcode.com/episode-9-rob-conery-on-subsonic-mvc-storefront-and-the-silverlight-ninja-squad/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-9-rob-conery-on-subsonic-mvc-storefront-and-the-silverlight-ninja-squad/</guid>
    <pubDate>Wed, 16 Jul 2008 09:00:09 GMT</pubDate>
    <description><![CDATA[<p>This week, we catch up with Rob Conery. Topics: SubSonic 2.1 Where SubSonic fits in the Microsoft data access tools explosion Why LINQ to SubSonic is so durn tricky MVC Storefro</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 9</strong></p>
This week, we catch up with Rob Conery. Topics:
<ol>
	<li>SubSonic 2.1</li>
	<li>Where SubSonic fits in the Microsoft data access tools explosion</li>
	<li>Why LINQ to SubSonic is so durn tricky</li>
	<li>MVC Storefront - has it made Rob a TDD believer</li>
	<li>What else is Rob up to at Microsoft</li>
</ol>
Links:
<ul>
	<li><a href="http://blog.wekeroad.com/">Rob's Blog</a></li>
	<li><a href="http://subsonicproject.com/">SubSonic</a></li>
</ul>
Download / Listen:

<a href='https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0009-Rob-Conery-on-SubSonic--MVC-Storefront--and-the-Silverlight-Ninja-Squad.mp3'>Episode 9: Rob Conery on SubSonic, MVC Storefront, and the Silverlight Ninja Squad</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0009-Rob-Conery-on-SubSonic--MVC-Storefront--and-the-Silverlight-Ninja-Squad.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 8: Virtual Machines</title>
    <link>https://herdingcode.com/episode-8-virtual-machines/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-8-virtual-machines/</guid>
    <pubDate>Thu, 10 Jul 2008 00:08:15 GMT</pubDate>
    <description><![CDATA[<p>This week, we discuss the use of virtual machines in software development. Topics: Industry trends VMware vs. Virtual PC (and other virtualization technologies) Should you devel</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 8</strong></p>
This week, we discuss the use of virtual machines in software development. Topics:
<ol>
	<li>Industry trends</li>
	<li>VMware vs. Virtual PC (and other virtualization technologies)</li>
	<li>Should you develop in a VM?</li>
	<li>VM Tips and tricks</li>
</ol>
Links:
<ul>
	<li>Jeff (codinghorror) Atwood's post on <a href="http://www.codinghorror.com/blog/archives/000639.html">creating smaller virtual machines</a>.</li>
	<li><a href="http://www.kudzuworld.com/blogs/Tech/20080705.en.aspx">Keeping clean and small virtual machines</a></li>
	<li><a href="http://www.invirtus.com/content/view/16/387/">Invirtus vOptimizer</a></li>
	<li><a href="http://www.vmware.com/appliances/">Virtual Appliance Marketplace</a></li>
	<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&amp;DisplayLang=en">Internet Explorer Application Compatibility VPC Image</a></li>
	<li><a href="http://blogs.msdn.com/Virtual_PC_Guy/">Virtual PC Guy's Weblog</a></li>
	<li><a href="http://www.virtualization.info/">Virtualization.Info</a></li>
	<li><a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a></li>
</ul>
Download / Listen:

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0008-Virtual-Machines.mp3">Herding Code 8: Virtual Machines</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0008-Virtual-Machines.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 7: Why Don&#x27;t Startups Run On Microsoft?</title>
    <link>https://herdingcode.com/episode-7-why-dont-startups-run-on-microsoft/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-7-why-dont-startups-run-on-microsoft/</guid>
    <pubDate>Fri, 04 Jul 2008 05:34:22 GMT</pubDate>
    <description><![CDATA[<p>In this episode of Herding Code, we discuss the pro&apos;s and con&apos;s of building a startup on the Microsoft stack. We talk about a lot of issues: Licensing cost Availability and cost</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 7</strong></p>
In this episode of Herding Code, we discuss the pro's and con's of building a startup on the Microsoft stack. We talk about a lot of issues:
<ol>
	<li>Licensing cost</li>
	<li>Availability and cost of developers</li>
	<li>Development environments and tools</li>
	<li>Relative costs of software vs. development time</li>
	<li>Thoughts on whether Microsoft should ship Visual Studio Express with Windows</li>
	<li>Those few companies who start on one stack and switch as they get larger</li>
	<li>How, in the end, it all comes down to execution</li>
</ol>
Along the way, K. Scott regales us with the tale of his run-in with the FBI, flees the podcast, and finds a way to sneak back on the call. Shenanigans!

<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0007-Why-dont-startups-run-on-Microsoft.mp3">Herding Code 7: Why don't startups run on Microsoft?</a> (Download)

<span style="color: #003549;display:none;"><a href="http://www.podcastalley.com/"> My Podcast Alley feed!</a> {pca-29d2d38db468bc87645363c074f2957c}</span>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0007-Why-dont-startups-run-on-Microsoft.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 6: Silverlight - Fad or Fab?</title>
    <link>https://herdingcode.com/episode-6-silverlight-fad-or-fab/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-6-silverlight-fad-or-fab/</guid>
    <pubDate>Thu, 26 Jun 2008 09:18:09 GMT</pubDate>
    <description><![CDATA[<p>This week we argue discuss whether Silverlight is just another flavor of ActiveX, or if it&apos;s here to stay. Listen / Download Herding Code 6: Silverlight - Fad Or Fab?</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 6</strong></p>
This week we <del datetime="2008-06-26T09:01:22+00:00">argue</del> discuss whether Silverlight is just another flavor of ActiveX, or if it's here to stay.
<h3>Listen / Download</h3>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0006-Silverlight-Fad-Or-Fab.mp3">Herding Code 6: Silverlight - Fad Or Fab?</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0006-Silverlight-Fad-Or-Fab.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 5: Firefox 3</title>
    <link>https://herdingcode.com/hello-world/</link>
    <guid isPermaLink="true">https://herdingcode.com/hello-world/</guid>
    <pubDate>Thu, 19 Jun 2008 09:31:09 GMT</pubDate>
    <description><![CDATA[<p>Show #5 - Topics Firefox 3... that&apos;s it Listen / Downlad Herding Code 5: Firefox 3 Release Announcements The Name, The Feed, etc. This is our last podcast hosting the audio on S</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 5</strong></p>
<h3>Show #5 - Topics</h3>
<ol>
	<li>Firefox 3... that's it</li>
</ol>
<h3>Listen / Downlad</h3>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0005-Firefox-3-Released.mp3">Herding Code 5: Firefox 3 Release</a>
<h3>Announcements</h3>
<h4>The Name, The Feed, etc.</h4>
This is our last podcast hosting the audio on SkyDrive, I promise. I’d planned to take care of it last weekend and a family emergency… um… emerged. You can help! Please <a href="http://www.surveymonkey.com/s.aspx?sm=pzovOiHQdxwnpIduNEGGYA_3d_3d">take our super quick survey</a> to vote on a name for our podcast.

I'd hoped we could use SkyDrive to host the audio and set up a nice podcast feed on top of it via <a href="http://feedburner.com">FeedBurner</a>, but it turns out that <a href="http://groups.google.com/group/feedburner-podcasting/browse_thread/thread/ed485aac53527932/b840f479ea6c301e?">SkyDrive doesn't send the media type with MP3 enclosures in a way Feedburner expects</a>, so that's out. I'm looking into other hosting options, please comment in our survey if you’ve got any recommendations. We’ve been wanting to keep our costs down so we have the option of continuing long term without requiring sponsorship, but we’ll get our site set up for you for next week’s podcast. Honest.
<h4>The Audio</h4>
I think we finally nailed the audio this week. Thanks to <a href="http://devcentral.f5.com/weblogs/Joe/">Joe Pruitt</a> and others for some great suggestions on how to set this up.
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0005-Firefox-3-Released.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 4: iPhone v2 and K. Scott Allen&#x27;s report from TechEd 2008</title>
    <link>https://herdingcode.com/episode-4-iphone-v2-and-k-scott-allens-report-from-teched-2008/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-4-iphone-v2-and-k-scott-allens-report-from-teched-2008/</guid>
    <pubDate>Fri, 13 Jun 2008 23:41:36 GMT</pubDate>
    <description><![CDATA[<p>Show #4 - Topics iPhone v2 announcments from WWDC TechEd 2008 recap by our roving reporter, K. Scott Allen Listen Herding Code 4: iPhoneV2, K Scott recaps TechEd 2008 Announceme</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 4</strong></p>
<h3>Show #4 - Topics</h3>
<ol>
	<li>iPhone v2 announcments from WWDC</li>
	<li>TechEd 2008 recap by our roving reporter, K. Scott Allen</li>
</ol>
<h3>Listen</h3>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0004-iPhoneV2--K-Scott-recaps-TechEd-2008.mp3">Herding Code 4: iPhoneV2, K Scott recaps TechEd 2008</a>
<h3>Announcements</h3>
<h4>The Name</h4>
We're closing in on a name (and thus a domain and a website and a real podcast feed, etc.). Here's our current list, please give us your feedback or alternate suggestions.
<ul>
	<li>BytecodePodcast</li>
	<li>Four Horsemen On Software</li>
	<li>Four Horsemen Podcast</li>
	<li>Technology Roundtable Podcast</li>
</ul>
<h4>The Audio</h4>
Audio quality's a bit worse this week. We're working on it - it's harder than you'd think (you should have heard what the source audio files sounded like). Right now we use Skype for the call, but everyone records their own audio and I edit and clean it up. We use Call Graph as a backup in case someone's audio recording doesn't work. <strong>UPDATE:</strong> Fixed a problem with K Scott's audio. Much better now.
<h4>The Hosting</h4>
So far we've been hosting the audio on SkyDrive. We've been planning to host it ourselves, but I'm wondering if SkyDrive's hosting would be sufficient <strong>provided</strong> that we had a solid podcast RSS feed. This should only be a problem if you can't access the files for some reason - it's requiring a login, or blocked by your corporate network or something. Please let me know if you have problems with this episode so we can make an informed decision. Other alternatives we've considered are the Site5 Uberplan and Amazon S3. Got any input there?
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0004-iPhoneV2--K-Scott-recaps-TechEd-2008.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 3: Should Developers Learn C? + TechEd 2008 Keynote Announcements</title>
    <link>https://herdingcode.com/episode-3-should-developers-learn-c-teched-2008-keynote-announcements/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-3-should-developers-learn-c-teched-2008-keynote-announcements/</guid>
    <pubDate>Thu, 05 Jun 2008 23:54:39 GMT</pubDate>
    <description><![CDATA[<p>Show #3 - Topics Should developers learn C? TechEd 2008 Keynote Announcements Microsoft &quot;Velocity&quot; distributed caching solution Listen Herding Code 3: Should Developers Learn C?</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 3</strong></p>
<h3>Show #3 - Topics</h3>
<ol>
	<li>Should developers learn C?</li>
	<li>TechEd 2008 Keynote Announcements</li>
	<li>Microsoft "Velocity" distributed caching solution</li>
</ol>
<h3>Listen</h3>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0003-Should-Developers-Learn-C--TechEd-2008-Keynote.mp3">Herding Code 3: Should Developers Learn C? + TechEd 2008 Keynote</a>

Thanks for your patience (and great feedback) as we get our act together here. We've decided to make the content the top priority, and get the non-content details (feed, website, branding, etc.) next. Any suggestions for website address, podcast name, or any other ways we can improve?
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0003-Should-Developers-Learn-C--TechEd-2008-Keynote.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 2: AJAX Frameworks</title>
    <link>https://herdingcode.com/episode-2-ajax-frameworks/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-2-ajax-frameworks/</guid>
    <pubDate>Thu, 29 May 2008 00:17:12 GMT</pubDate>
    <description><![CDATA[<p>Last week I posted the first in a new podcast series with K. Scott Allen (a.k.a. OdeToCode), Scott Koon (a.k.a. LazyCoder), and Kevin Dente. We got some great feedback, but we d</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 2</strong></p>
Last week I posted the first in a new podcast series with K. Scott Allen (a.k.a. OdeToCode), Scott Koon (a.k.a. LazyCoder), and Kevin Dente. We got some great feedback, but we decided to ignore it and continue the podcast. So here's another one!

But seriously, this one's a lot shorter (too short?) and you'll hopefully find the sound quality's improved. We've also heard from several people that, while it's easy for a group of geeks to criticize anything and everything, that doesn't necessarily transfer into useful information.
<h3>Show #2 - Topics</h3>
<ol>
	<li>Google's announcement that they'll host several popular AJAX libraries</li>
	<li>ASP.NET AJAX</li>
	<li>AJAX Control Toolkit</li>
	<li>Misc. IE8 issues, including changes to how they'll handle JavaScript loading</li>
</ol>
<h3>Download / Listen</h3>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0002-AJAX-Frameworks.mp3">Herding Code 2: AJAX Frameworks</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0002-AJAX-Frameworks.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
  <item>
    <title>Episode 1: &#x22;Hello World&#x22; Edition</title>
    <link>https://herdingcode.com/episode-1-hello-world-edition/</link>
    <guid isPermaLink="true">https://herdingcode.com/episode-1-hello-world-edition/</guid>
    <pubDate>Wed, 21 May 2008 00:22:00 GMT</pubDate>
    <description><![CDATA[<p>We&apos;re starting up a technology round table podcast. By we, I mean: K. Scott Allen (a.k.a. OdeToCode) Scott Koon (a.k.a. Lazycoder) Kevin Dente Jon Galloway Our goal here is to p</p>]]></description>
    <content:encoded><![CDATA[
<p><strong>Episode 1</strong></p>
We're starting up a technology round table podcast. By we, I mean:
<ul>
	<li><a href="http://www.odetocode.com/">K. Scott Allen (a.k.a. OdeToCode)</a></li>
	<li><a href="http://www.lazycoder.com/">Scott Koon (a.k.a. Lazycoder)</a></li>
	<li><a href="http://weblogs.asp.net/kdente/">Kevin Dente</a></li>
	<li><a href="http://weblogs.asp.net/jgalloway/">Jon Galloway</a></li>
</ul>
Our goal here is to provide you with some interesting discussions loosely centered around the world of development on the Microsoft platform. We've just finished our first show, and - while we're aware that it's not ready for prime-time, we're looking for some alpha testers to give it a listen and give us some feedback.

Let's start with our four known issues:
<ol>
	<li><strong>It's way too long</strong> - I edited this down to one hour, but our goal is to keep these in the 1/2 hour range.</li>
	<li><strong>Audio levels</strong> - My voice is quieter than everyone else's. Maybe that's a good thing.</li>
	<li><strong>We're just getting used to the format</strong> - None of us has done a podcast before. I've edited out several awkward pauses and the like, but it's not at all polished just yet.</li>
	<li><strong>No branding</strong> - We'll probably come up with some kind of catchy name, set up a website, and maybe include a 2 second musical bumper at the beginning. And maybe get a blimp and a mascot. But that's all later.</li>
</ol>
So, you're warned. Want to alpha test it and give us some feedback?
<h3>Show #1 - Topics</h3>
<ol>
	<li>.NET 3.5 SP1 Beta 1</li>
	<li>Entity Framework and OR/M's in general</li>
	<li>Twitter-bashing (easy, but fun!)</li>
	<li><a href="http://ninject.org/">Ninject</a> dependency injection framework</li>
</ol>
<h3>Download / Listen</h3>
<a href="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0001-NET35SP1-Twitter-ORM-Ninject.mp3">Herding Code 1: .NET 3.5 SP1, Twitter, ORM\'s, Ninject</a>
]]></content:encoded>
    <enclosure url="https://archive.org/download/herdingcode-podcast-archive/HerdingCode-0001-NET35SP1-Twitter-ORM-Ninject.mp3" length="0" type="audio/mpeg" />
    <itunes:explicit>no</itunes:explicit>
    <itunes:author>Herding Code</itunes:author>
  </item>
</channel>
</rss>
