Donovan: Hi, I’m Donovan Brown. I’m a senior devops program manager here at Microsoft.
Charles: We also have Jordan Matthiesen.
Charles: We’re here at Microsoft Ignite. This is our second take so I won’t make the same mistake. This is a conference for IT pros.
Jordan: But I liked correcting you.
Jordan: Similar in a lot of ways. First, from my perspective, I’m definitely not a devops expert quite like Donovan but from our perspective like with our Visual Studio tooling, we’ve got some continuous integration tasks and things where you can check in your Cordova project and get a build and deploy that build out. You can tie it in with the HockeyApp service and be able to deploy the app from a fresh build out to your beta test user base. It’s the way I look at where we tie in with devops is my tooling around the coding and the checking. After checking, you have the continuous integration flow, continuous delivery type of a process.
AJ: So you’re working more from the developer at this inner loop of actually writing the code?
AJ: It sounds like what your tools are doing is making sure that when you hand that off to your CI system, the task would build it but at that point it’s kind of like okay, the black box, get the devops out and do everything else on the other end? Is that right?
AJ: More developer focus on that point.
Charles: Let’s just focus on Node for a minute. It seems like a good place to start. It’s a pretty common and pretty popular platform. People are doing all kinds of things with Node. I think AJ does a lot of stuff with Node for his start up and things like that. For somebody like AJ where you’re working on backend systems that have Node or you have systems that you’re deploying out elsewhere across the internet with Node, how should he approach some of these processes that you work in day in and day out?
Donovan: I think the tools that Jordan work on is going to make his day to day offering of the code easier but if you’re asking about the delivery of that code, it’s the same. I’ll define it again for your users in case they don’t watch both shows. Devops is the union of people, process and products to enable continuous delivery of value to your end users. I didn’t say anything about languages. I didn’t say anything about platforms because I don’t need to. It doesn’t matter. If you’re trying to deliver matter to your customers, that’s the goal. Doing that with Node JS is no different than doing it with C# or vb.net. It doesn’t matter.
Donovan: Exactly. What it allows us to do is basically take the tools that you are going to use. You’re going to use Node JS. What do you use for testing? Are you using Mocha? Jasmine? What are you using? Because hopefully you’re writing automated unit testing. I don’t want to call you out here and all your customers are like, “He doesn’t do unit testing.”
AJ: I do testing kind of on an as needed basis. I’m the worst person in the world. Not the worst.
Donovan: I doubt you are, I know the worst. You’re not him.
AJ: I tend to just write a couple of files that have the test cases that I’m in and exit with status one if it’s bad and exit with status zero if it’s good.
Donovan: You’re not using a framework for unit testing, you’re writing your own code.
Donovan: Got it. Got it. I’m a big proponent of Mocha. I’m a huge fan of that testing framework. It allows me to use BDD when I’m writing my test cases and it works really effectively when you’re using something like Gulp to run them all the time whenever you’re doing your interloop. Obviously, running them as part of your devops pipeline is also a piece of cake. I’ll usually tie that in with sign-ons so I can get my mocking and then obviously I bolt on Istanbul at the end. It gives me full code coverage.
I’m a huge fan of code coverage. I know better than to believe 100% means no bugs but it helps me strive to make sure that I have good code coverage in all of my test. What I’ve been doing is tying that into my devops pipelines as well because I don’t want a Java developer to say, “It’s too hard to do this so I’m not going to do this.” I find ways that we can improve our products to make sure that it’s easy for everyone even if you want to do Node or Jasmine or whatever case it might be. It’s the best practice regardless. Everyone should be writing unit test. I won’t accept any excuse on why you’re not writing unit test. It’s a fallacy if you think you’re faster doing it without it.
AJ: First, I want to understand more about what you do with Node JS because you were saying earlier when we’re talking downstairs that you enjoy playing with it, you do a lot with it these days. Tell me about what you’re doing and then I’m going to ask you some questions about what I’m doing as well.
AJ: Quick question. Node JS, Microsoft now has a Chakra version. Is that production ready yet?
Donovan: That’s a good question. You asked me that downstairs and that’s not the version that I’m using so maybe you can answer that.
Jordan: I haven’t heard a go production yet on that one so I don’t know of any change of status on that. I’ve seen the same thing as you, the Chakra, the pull request that could work on that space.
AJ: Donovan likes cars, I like my V8 engines, it’s good.
Donovan: I’ve just been using straight go to Node and download it and install it and use a username from the command line. I haven’t used any other flavors of that but I’m curious now. I’ll probably go and do some research to see what that’s about.
AJ: I know the max support. There was just a pull request. They got merged in. I haven’t tried it yet but I’ve been waiting for that to happen because I actually want to use Chakra and find out how it works. Anyway, I didn’t mean to sidetrack. I’m just curious and that came to my mind.
Charles: Also, I tracked the listener really quickly. A build we talked to the team lead Remi I think is his name. Go check that episode out if you’re interested in Chakra and what AJ is talking about because we interviewed him there and it was a great interview. Anyway, go ahead.
AJ: You were telling me about what you’re doing with Node JS and how it integrates in the extensions.
Charles: Even if you are writing code, do you think asynchronous? Just the nature of everything, talking to everything, you can’t always count on it. It’s interesting, you’re saying, “Yeah. I’d like it to be synchronous and simple.” But it’s not always that way.
Donovan: But now I’m starting to look for things that I can do in parallel that I didn’t used to do before. I used to always think, “Okay. I’m going to go download this file and the I’m going to go parse this file and then I’m finally going to go do this.” Then like, “Hold on. This has nothing to do with those other three steps. I can literally just go do both of these at the same time and then let this guy catch up and then glue them back together.”
I was working on a Yeoman task recently, a Yeoman generator. I can’t say anymore for that because it’s a special thing I’m going to do at Ignite in New Zealand here so I can’t spoil it too much but I realized that I could speed this up because so much of that could have been done in parallel which Node makes so easy to do, whereas before it has been very difficult for me to realize that, “Oh, I could parallelize this.” Now it’s going to be hard for me to parallelize in another language.
Node is like, “No, we do this by default.” It’s harder for you to do this serially than it is for you to do it parallel when you’re dealing with Node. Just changes the the way that I think about things but once you get over the hump, I’m a crunchy old man, I can’t believe we’re doing mark down. HTML was good enough for me but now everything’s marked down. I remember using TFVC now everyone wants to use Git. When I went to Node, it’s like, “Damn it. Really? Do I have to go onto something else?” I didn’t even want to learn it. And then now I’ve gotten over that and then like, “Okay, I get it guys. This is pretty cool stuff.”
Charles: Donovan, I thought we could be friends.
Donovan: I’m waiting to be convinced, man. Every time, what ends up happening is like, “Okay, I’m going to learn it this week.” In an hour, I’m like, “Damn it. I’d be done already. If I wasn’t trying to figure out how I get all this tooling work, how do I get individual studio code in the trans compiling work?” And then like, “Screw this. I’m just going to go back.”
AJ: You hit a point that we got to circle back around to with the tooling because what you’re talking about is that you’re throwing out things that I’ve heard the words but I’m not familiar with them because I haven’t used them. I tend to develop very, admittedly, a little too simply. I could add some tools to my stack but I try to develop in them without any automated process in place, just like I write code and I write tests when there are functions that have inputs and outputs that I can easily test and other than that I do more on the integration route where I’m testing the API to make sure not that all the individual functions necessarily work but that the loop works.
Charles: AJ is our purest on the show.
AJ: I used to be one of those people that liked all the latest and greatest but I just got to a point…
Donovan: You can’t keep up, man. It’s exhausting.
AJ: You can’t. And then it’s like, “Forget it all. I just want to go back to F5, refresh, oh it works, awesome.”
Charles: We did a show on it.
AJ: We’re jumping all over the place. What is Team Services? You said you’re integrating with Linux, Mac and Windows. When I hear Visual Studio Code, I understand that runs everywhere. It’s like built on electron which is the same thing atom is built on. I get it and I’ve seen it. I’ve seen people use it. I love it. Visual Studio Team Services, all I heard was Jabberwocky, Jabberwocky.
Donovan: Let me frame that one for you. Team Services and its long name is Visual Studio Team Services. Most of us inside of Microsoft either call it VSTS or Team services because the name is just too freaking long. I use them all interchangeably. It is your source control, your continuous integration, your continuous deployment, package management, work out in tracking, bug tracking, it’s everything that you need to turn an idea into a working piece of software. It works for any language targeting any platform which means our build server, the actual guy who does the heavy lifting of your build, must run on a Mac, must run on Linux and must run on Windows otherwise my statement of any language, any platform is FUBAR. It’s not, it’s true.
That’s why I was saying I had to learn Node because at that time that was the only way I could get to all of those three platforms and I have to rewrite my task and rewrite all my extensions over and over again. That’s Team Services.
What I do with everything that I write, Mocha, if it’s Node or if it’s C# or if it’s Java, I use Team Services to give me that devops pipeline, that continuous integration so that I can take whatever it is that I’m writing and get it to my users as quickly as I possibly can. Said it in the other show. I apply devops to everything that I do because it simply reduces friction and increases my velocity and my quality.
AJ: Let’s break that down into a simple product that I’m going to ship out to customers. What kind of product are we talking about that we’d be using with Team Services? Like an API service or like a mobile app?
Donovan: Great question. Everything you write, because everything that you write eventually has to get to a machine that it can be used by your users.
AJ: Earlier you were throwing out Istanbul, Mocha and there’s a couple of other ones in there. Can you give an example of an actual application that you’ve done and where those fit into that process?
Donovan: Absolutely. New Zealand would be awesome. I’m actually going to show what I’m about to tell you on stage at New Zealand. It is a Node JS web app, not a web service, a web app, full blown UI. I can’t remember what framework I’m using for my tippling of my website but it’s a full-blown web application. It’s an MVC which means I have controllers. Those controllers are really easy to test.
That’s one of the good thing about MVC, that pattern, it’s really easy to test your controllers. I need to unit test these which I use Mocha for. If any of these unit test was to call out to a web service or to a database, during a unit test you should not actually call out to that database or to that web service. You should isolate this particular piece of code. I use sign-on. Sign-on is just a mocking framework that can fake out my other code that make it think it’s calling that database or it’s actually writing to a file on the hard drive on the hard drive but it’s truly calling this mock that I created.
AJ: With Angular, there’s dependency injections. Doing something like that, I totally get because you can just inject the fake request but with Node you have require and if you require request and request is calling out to the service, how does sign-on help with that?
Donovan: That’s a really good one. There’s a completely different module that you can actually add that you can fake the require as well so that you think you’re requiring react. I just did this where you think you’re requiring express. Express is a tough one because very few of us do express that Git. We don’t actually call the function, we just use the name itself and then we go ahead and do our call. But you can actually hijack the entire require to where you actually get a fake version of that that I’ve actually provided for you.
AJ: So you’re doing dependency injection by overloading require?
Donovan: Exactly. That way, I am now in control of the response that my code gets. Be it is you’re using file system, if you’re using a web service, whatever this case is. You’re really talking to another piece of code that has given you what I want it to give you so that I can then go back and assert did you behave correctly or not. The key is how do I then tie that into my devops pipeline so that if we’re working on a team, I have those same tests to run if you check in code or if Jordan checks in code or if I check in code. Those tests do run to make sure that none of us screwed up. That’s why it’s important to have something like team services, be able to take that commit, compile it and then run all those tests again because you might not have them on your machine before you checked in that change and you’ve broken the rest of us.
AJ: The system that you’d have in place with Team Services, part of it is running at your local system?
Donovan: That’s just your dev environment. That’s what Jordan does for you. He’s the guy who’s making sure that your dev environment on your local environment is the best you possibly have. As soon as you commit that to a Git repository, that’s when my team kicks in.
AJ: That’s up in Asher?
Donovan: Or you can install that’s Team Services, it has a twin brother called Team Foundation Server that you can install yourself and that you get the same functionality but on your own hardware. It’s completely up to you.
AJ: That is Windows hardware though?
Donovan: Yes, absolutely. The build agent will run anywhere but the core engine, that all runs on Windows and back by SQL Server. You have to have a Windows Server for that. If you don’t want to install that, just go to Team Services. It’s literally for free. Everyone listening to my voice right now can go to visualstudio.com and fire up Team Services and start doing everything that I’m saying for free. There’s nothing to cost to get started.
AJ: This integrates with Visual Studio Code, not just Visual Studio.
Donovan: Absolutely. Visual Studio Code, Android Studio, Eclipse, IntelliJ, Visual Studio, any language, any platform. I was preaching that in the keynote this morning. That’s why everywhere you are, we’re coming there to help you be better at Microsoft. This is the new Microsoft and it’s hard for a lot of our customers to get their head around. Sometimes it’s hard for me to get my head around. The first time I installed Linux was after I joined Microsoft.
AJ: I saw that we got a Linux booth today over, I don’t remember what section it is.
Donovan: I flew here with an Ubuntu 1604 laptop and a Mac.
AJ: The guy over the VS code, he’s doing all his demoing on the Mac.
Donovan: Exactly. I had to do half of my demo on a Mac today. It’s weird place to have Microsoft Word in your Mac.
AJ: And then you have to use it. You have to.
Donovan: Yeah. I hate it personally. I honestly don’t like it at all. I like my Linux machine and my Windows machine a lot because all my keyboard shortcuts are the same, command, options, whatever man. I hate that stupid thing.
Jordan: On your question about the VSTS using it, at one level you can look at it as if it actually is a Git repo. You can set up as Git and just do git-cli, check in and then have the server side take care if the CI process for you.
Donovan: He’s absolutely right.
AJ: Are you guys familiar with Travis? Is it a similar setup to that where you put in some configuration which version of this or that you want and it has some of the other pieces pre-installed?
Jordan: It’s a task based system to where you simply say, “I would like to build an app.”
AJ: Like Rake or Make?
Donovan: Not to a level of a Make, you don’t have this one file. It’s a Graphical User Interface with a catalogue of task that say, “I want you to run MPM install.” “I want you to run Bower install.” “I want you to run a command line that compiles my Node or runs my Mocha test.”
AJ: The extensions would be the ability to add in new things it doesn’t understand.
Donovan: Exactly. It’s completely fixable which is why I can make the claims, crazy claims that I make that we can do any language, any platform.
Charles: There’s a five-year old in me that wants to start throwing out languages and see if you say yes to but I’m not going to do that.
Donovan: I will say yes. The craziest one I got was VB6. Someone said, “Hey Donovan, I just saw your presentation. It was awesome. We still have VB6 in our organization. How can I do all that cool stuff with VB6?” Fine. Challenge accepted.
Go to Donovan Brown right now at donovanbrown.com and read exactly how to do all this cool stuff with VB6. Hardest part? Getting VB6 to install on a modern OS. You have to stand a certain way. You have to kiss the baby and then finally it will install. And then you got to get the service pack on there. After that it’s a piece of cake.
Our tooling is great. All I needed to do was call up to the command line and build a code. It was getting VB6 installed was the hard part.
Donovan: Exactly. Go lying if you want to do that. If you want to do Python, PHP, whatever you want to do.
AJ: Not PHP either, don’t do that.
Donovan: I’m doing three languages. I’m not going to give that away. I keep talking about New Zealand. I’m not going to give that away.
AJ: Maybe let’s talk a little bit about Visual Studio Code. We talked at build with some members of the VS Code team and I’m sure since then it’s come a little bit of a ways. What are some of the new things in the past six months or so and tell us a little bit about the integrations.
Jordan: I work on the mobile tooling and extension. We’ve got four VS Codes. I’m not in the VS Code team to declare so I might riff a little bit on what was new but I can’t think of the exact latest and greatest on the new stuff on VS Code. Tabs were a hit coming in, the ability of putting tabs if somebody wants them or not. There’s been some new support for changing up your flavor of icons and matching some standards out there on the icons, I can’t think of the name of the extension that it was ported in but some things like that. It’s much more important changes as well.
Jordan: From my team, we’ll work on the Apache Cordova open source project. It lets you build apps deployed locally on mobile devices by using web technology. For our tooling, we have an extension called the Cordova Tools Extension. You can go on to the VS code marketplace and install that and then it will layer and support for some quick command of doing builds and running on various platforms.
For example, on Android I could run straight to a device or run an Android emulator on Mac at a PC or use one of our newer features called Cordova Simulate that lets you actually run the Cordova app in the web browser but do some simulation of things like Geolocation, simulating a camera that you can’t normally simulate in the Cordova app running in the web browser.
Charles: That makes sense. It’s really interesting too. I’ve gotten to be friends with Mike and Max over at Ionic. I’ve talked to several other people that use Cordova for various things. There’s a big Adobe office near us and they have the big Cordova day over in Utah. It’s a platform that people are really using and they’re taking advantage of because they understand the web technology.
It’s exciting to see somebody actually go after that and say, “Here are some tools in an editor that’s really designed for you to be able to use in these specific ways to write great apps.” I’m looking for something that’s going to get people excited to go, “Oh, let me go get those mobile extensions. And then let’s go ahead and once I have all this coming together and building on my machine and running all the tests and doing all that stuff, to hand it out to Visual Studio Team Services or whatever.” That’s what I was looking for from this episode. I think we’ve got the Team Services pretty well covered.
Why should people be excited to use Visual Studio Code with mobile extensions on it as opposed to using something like the Android system?
Donovan: Compile time errors are better than run time errors, that’s why I want strong typing.
In some ways, it’s like yes, just being able to run it raw and just do its thing is nice but on the other hand I made enough stupid errors typing crap into my computer to where it’s like, “Oh, I see. I get this check against my code.”
Donovan: I think another reason I might not go so far with TypeScript is because I unit test so much. To me, I don’t have to wait to run the app to find out I screwed up. A lot of people don’t write unit tests. TypeScript is really valuable because it tells you a compile time you screwed up. I know because I’m going to run all my tests and they’re going to tell me I screwed up. I think that’s another reason I just don’t get it yet. I definitely don’t want to get in the habit of relying on type checking and compile time errors to give me the excuse not to write unit test. I almost feel more pressure to write the unit test because I don’t have the typing to protect me.
AJ: On the subject of unit test, this is the problem that I get into and I think a lot of people do. I sit down and I’m not thinking like, “I’m writing production code.” I’m sitting down and like, “I got this problem. Scratch this itch for a minute.” And then like two hours later I’ve got a Node library that’s published in PM. Sometimes more like six hours later. And it’s like, “Oh it worked. It did the thing that I needed it to do. I’m not worried about it and maybe I’ll never even update it again except for when some weird edge case bug is found that I published 1.0.2.”
Donovan: To me, I found that writing unit test make me faster as a developer.
AJ: I totally believe it.
Donovan: That six hours it took you to publish it, maybe I would’ve published it in four hours because every time you stood up the scenario …
AJ: No, no, no, no, no. I wrote it for four hours or five hours and then it ran perfectly.
Donovan: Of course it did because you have the inputs you gave it which you expect to use it for and then when I download it and I give it an input you didn’t expect it for, I think this is a piece of crap. It was only for this one scenario. Whatever.
AJ: My random function returns for because I chose that after a dice roll.
Donovan: Exactly. If you get into the habit of it, you literally become a faster developer if you write unit test. It’s such a weird place to have to get to but once you get there, I’ll never go back to not writing.
Charles: That’s true but at the same time I found that having a good set of tools on it, I keep coming back to this too, because I have it set up so every time I save, it opens up another tab or it uses the one that was already open and it runs all of my tests in that other pane. I have those tests or Visual Studio Code. It’s relatively easy if you’ve got the test, you just say run them again.
Donovan: It’s also a plug in for that too. There’s a Mocha extension that will run them whenever you want.
Charles: Or you can use Karma or whatever.
Donovan: Whatever you want.
Charles: It’s like, “Don’t make me think about it.” Which is kind of what devops is about too but it still makes me think about it so when you have these kinds of powerful tools, it’s just so great because it’s like, “Oh yeah, I set it up once and it just does my thing.”
Jordan: What I like TypeScript when I’m going to unit test because I don’t know production code but when I do, I use TDD at the start to save me the cycle of going to look up the docs for IntelliSense. It’s a piece I love. And then my test sketching that red-green-refactor loop when I could do refactoring that are higher confidence like the renames. Typescript can make me faster there and then my test at that. I like that kind of tactic.
Donovan: It’s fantastic.
Charles: That’s a really good point with TypeScript. The refactoring’s become a lot simpler.
AJ: IntelliSense is always nice. IntelliSense is different than just remembering what you typed before. This is literally understanding the library that you’re using in making smart suggestions. Most editors today remember, “Oh, you’ve typed something that looks similar. You probably want to type that again.” No, no, no. IntelliSense is different. That is something that TypeScript really gives you this true proper IntelliSense which is fantastic.
AJ: For me, one of the issues is actually because of what I do with being in the home cloud business, I do a lot of prototyping on ARM devices. I will write code on the device because I’m doing so much networking stuff, localhost doesn’t work for what I do. I need it to actually beyond a thing that’s doing. Having all that build tool set up especially on ARM for me is part of my pain. I know it’s not the pain for a lot of people. Most people have super expensive MacBooks that has eight cores in it and run it four gigahertz each. It takes a microsecond and it’s no big deal.
Charles: That’s a handicap too where you have the MacBook pro with the fast processor with eight cores in it, all that RAM and stuff. And then my mom tries to run it on her machine.
Donovan: Because your mom is always trying to run your Mocha test and your TypeScript.
Charles: Even just my web application.
Donovan: That’s where devops pipeline would have a lot because we did that testing for you on that different clicks and items.
Donovan: That part I’m not sure about. If you’re trying to do integration or performance testing on your machine it would be unfair for those of us who don’t but unit testing the stuff…
Charles: Fair enough.
Donovan: When you’re doing integration testing, you would have to find environments that mimic what your customers are going to be using. The ARM part, that’s a little bit trickier but we literally had a guide to install, that build that I keep talking about that runs on Linux, Mac and PC, they got it installed on a Raspberry Pi. Pretty much wherever you want to be, we can actually go run your code on that Raspberry Pi and then run your test to say on the Raspberry Pi it still performs the way it performed or it performs adequately enough that I’m happy with it. Wherever you want to be. I was blown away when I saw our agent running on a Raspberry Pi and knocked me out. That’s freaking awesome. It literally is everywhere it need to be.
AJ: Was that Windows 10 IoT or was it Linux?
Donovan: It was before. It was the Linux one. That’s what blew me away. That is freaking awesome. I haven’t played with the Windows 10 when I haven’t tried getting an agent on there yet but I’d have to play with it and see. Now it’s all written in .NET Core. We completely port it. We used to have two different agents. One written specifically for Mac and Linux and then the other one written for .NET, for Windows. Now they’re literally are all written in .NET Core because it runs everywhere.
Charles: The new Java. That was the promise of Java right.
Donovan: It was and it never was true. It’s always right one’s test everywhere and then rewrite it again.
Charles: Yeah, I don’t want to open that kind of work.
Donovan: Me neither.
Charles: Do you provide tools? A lot of the mobile Devices are ARM devices. Do your mobile tools give you some view into some of these constraint environments or is that a completely different concern?
Jordan: Typically what I look at for that angle is the world of testing on the emulator or the devices. In my own mobile development workflow, I may have, like our teams got a few Android four one devices that are lower performance than what’s out in the market today. It’s more of backing those through testing on these devices and seeing how they run. And then you’re getting to your performance tuning best practices of using the browser tools to examine what’s my memory usage like. Not so much in tooling for that versus backing it up by what you’re testing on. I have some local devices to test on and you scale out through CI solutions to bigger formal things.
Charles: You have your system that essentially then can deploy to the Raspberry Pi sitting on my desk and the beaglebone sitting on my desk. I don’t remember, there’s another one out there that people keep telling me about.
AJ: That’s the Intel one. I think it’s an Atom processor. I don’t know if it’s an ARM.
Charles: You would just test them that way and put them on the device and then monitor them and see how they do.
Jordan: I travel down local Intel browser but there are tools out there to throttle your network bandwidth and simulates.
Charles: We’re running short on time so we’re going to go ahead and push to picks.
AJ: Can I ask one tiny question? What is the worst phone operating system that is still widely used? As in like Android 4.3. What is the troublesome thing that you’re waiting to fall away?
AJ: Nobody uses that, right?
Donovan: Some people. I don’t know why.
AJ: We’re talking like greater than 1%. At least greater than 1%. What is one of the phone platforms you’re just hoping will die?
AJ: Microsoft edge is the new Chrome and Android less than four is the new Internet Explorer 6.
Donovan: Wow man, wow. I’m glad this is almost done because I’ve had about enough of you right now.
Charles: I’m going to push to picks. AJ, what are your picks?
AJ: I’m going to pick Veridian Dynamics. It’s a great company. they make lots of wonderful products that are safe for your home and their Jabberwocky presentation is absolutely the best business presentation I’ve ever seen. And if you have no idea what I’m talking about, there’s a TV show called Better Off Ted and Veridian Dynamics is the company that it works for. If you’ve ever played portal and the Aperture Labs, very similar. It’s a joke company. Check out the Jabberwocky video on YouTube because it’s the title of lots of business talks. When you see it, you’ll get it.
Charles: I’m going to make a pick. Last time I was in Atlanta. I was here for a conference. A few folks and I, we went to Hard Rock Café. I don’t know why but I liked the place. The food is good. The environment is fun. If you’re in Atlanta or anywhere else that has one, Hard Rock Café is a pick.
One other pick. If you’re a fan of the show and you want to run into me in person, I’m going to be at CES in January seeing all the new gizmos and stuff. I ran into AJ there last year. If you’re in Las Vegas and you want to get together, let me know or if you’re going to be at CES then I may wander around for a day with you.
AJ: I think it’s funny that we see each other more across the country than we do right where we are.
Charles: It’s true. AJ lives a couple of miles from me. Donovan, what are your picks?
Donovan: I pick 3D printer. We talked about that a little bit in the break. I love my 3D printer. I look for excuses to print stuff. I just wish it was faster. Hopefully they’ll get faster but yeah, I love 3D printers.
Charles: I want to fix in my car a lot and I keep thinking, it’s just a little plastic piece.
Donovan: That’s exactly why I bought one. I collect BMWs. I collect a lot of old rare ones, fantastic breaks on the old rare ones. Those parts, I found one that I couldn’t simply replace. BMW doesn’t make the part anymore. It’s just a piece of plastic so I literally bought a 3D printer for that part. It cost me $3,000 for this $9 part that they don’t make anymore but over time that will be very cheap. Exactly. I printed speaker grills also to fix my car. I love it.
Charles: A good deal.
AJ: Over the years, they’re more like Legos.
Jordan: My [00:45:26] right now got to be a thing I’m into right now where I’m getting my next year’s home gardening setup. Thinking of gardening for geeks, there’s this guy called Seattle Urban Farm Company. They got a book high-yield gardening. It’s like glorious geekiness for the home gardener looking to do mini farm. That’s probably my main, non-professional pick.
Charles: If people want to find out more about what you guys are working on or see what’s going on with your various projects, what should they do?
Jordan: You can take a look at taco.visualstudio.com. That’s where we’ve got a lot of info on our tools for Apache Cordova. taco.visualstudio.com.
Charles: Are you on twitter or somewhere people can follow you?
Jordan: Twitter, @jmatthiesen.
Donovan: All of our stuff is on visualstudio.com. It’s also where you can go to start your own visual studio team services account for free and start playing with all this crazy stuff I was talking about and I am @donovanbrown on Twitter and I blog all the time at donovanbrown.com. Just remember, Donovan Brown. If you google it, I’ll be the first person that you’ll see up there.
Charles: Good deal. Thanks for coming.
Donovan: My pleasure guys.
AJ: Don’t you mean if you Bing it?
Donovan: Yeah, I slipped up man. I told you I’m sticky man.