Coding Blocks - How to Jumpstart Your Next App

Episode Date: May 11, 2017

We’re back with another exciting episode as Michael questions Hollywood, Allen dreams of his Hackintosh, and Joe is surrounded by Star Wars as we talk about how to jumpstart your next app with Mich...ael Crump (@mbcrump) and Clint Rutkas (@clintrutkas). If you’re reading these show notes via your podcast player, you can find this episode’s full […]

Transcript
Discussion (0)
Starting point is 00:00:00 You're listening to Coding Blocks, episode 59. Subscribe to us and leave us a review in iTunes, Stitcher, and more using your favorite podcast app. Visit us at CodingBlocks.net where you can find show notes, examples, discussion, and more. Send your feedback, questions, and rants to comments at CodingBlocks.net, follow us on Twitter at CodingBlocks, or head to www.CodingBlocks.net and find all our social links there at the top of the page. With that, I'm Alan Underwood. I'm Joe Zack.
Starting point is 00:00:28 And I'm Michael Outlaw. We've all been there. A bug in your code means you need to delay a deploy and ultimately miss your deadline. I mean, not me. I've never had a bug in my code. Never?
Starting point is 00:00:38 But it's a terrible feeling and airbrake.io, our latest sponsor, is here to change that. Airbrake points you directly to the issue for a quick resolution. That means no more wasted time searching for Alan's bug in the log files and more time writing and shipping Joe's great code. Airbrake supports.NET and all major programming languages.
Starting point is 00:00:59 Sign up at getairbrake.com slash CB for a free 30-day trial and the chance to win a $500 Amazon gift card. It's a completely free trial, and you'll be shocked by how much time it saves you. Again, that's getairbreak.com slash CB, and we'll have a link in the show notes. All right, so first up, we got the podcast news. We're going to start by thanking you guys for your wonderful reviews. And in iTunes, we got quite a few great ones so thank you very much gaspeton es lent treed 44 skirovs and jay born 33 yep and so i've got stitcher we had tapping
Starting point is 00:01:35 the dug mosquito bite 10b yellow snowman that one's fantastic skirovss at Newton. And this one was a challenge thrown down by our Italian CS friend who's riding around in Rome listening to us. So here we go. Arnabaldo Cernabalde Schieffi. I'm pretty sure that's close. I don't know if I hit it. But the only thing I do want to point out is in his review, he said that we make him feel a little bit more sane with his thoughts. And I feel like that should scare him a little bit. Yeah, it should probably be a little more insane.
Starting point is 00:02:12 But did you notice there was one in there twice? There was. Yeah. Hit us up on both iTunes and Stitcher. So super thanks. Yep. Big thank you to all of you. We enjoy reading them. We say it every time and we mean it. So thank you very much.
Starting point is 00:02:32 And for the full show notes, visit codingblocks.net slash episode 59. Sweet. So I had this thought. We've all seen movies and TV shows about it. We've talked about this, uh, in, in our Slack channels about, you ever noticed how Hollywood portrays hackers and hacking and how weird, like anything related to technology,
Starting point is 00:02:59 they just, they, they never get it right. Have you noticed this? Except for doc or except for Mr. Robot. That one's pretty cool. That's always here about it.
Starting point is 00:03:10 That, okay. That show, that show is good, but I guess what I'm thinking of is like, you see this more often in like one of the CSI variants or, uh, I'm trying to think of of, there's some recent movie that I want to talk about, but I don't want to give it away. Oh, yeah, don't do it. Yeah. But at any rate, where it's like, oh, this guy's hacking. Oh, well, let me hack him back, and we can get around this, right?
Starting point is 00:03:39 Oh, real-time hacking. I know code. I know computers. And Hollywood portrays this as like hacking is, or even programming, it doesn't even quote hacking, just any kind of like, I know code, so I can program, so therefore I can get my way around this.
Starting point is 00:03:57 They portray it as like it's one gunman against another gunman, but instead of replacing the guns with computers, have you, have you noticed this? Yeah, totally. Has it ever annoyed you?
Starting point is 00:04:10 But it's comical, but, but the reality, I was thinking about this in a recent movie that I just saw. And I was like, wait a minute. No, that's,
Starting point is 00:04:20 that's so it's more like, well, I'm a building architect, and I'm going to change the blueprints to where the bathroom is over here, and then the other building architect is like, no, no, no, no, no. No, we're going to put the bathroom on this side just to counteract what you just did, but no building has actually been built. It's not running.
Starting point is 00:04:40 It's not compiled yet. But then they're like, okay, now we're going to build a building, and they're going to do it like super quick. Does that make any sense? That's closer. And usually there's landmines in between where all those bathrooms are actually going to be. Oh, that's what you're leaving in the bathroom. I thought.
Starting point is 00:05:00 I just, it's just so sad and unfortunate. Like the way they portray anything related to technology, you know, anything related to programming or anything about hackers, it just feels like it's never, it's never right. But how sexy would it be to actually portray the real thing, right? Like it'd basically be somebody reading through API documentation for two hours to write that one line of code. That's kind of my point though, is that it's not, so you shouldn't do it. I mean, you wouldn't like, cause here's the thought that came to mind was like in the movie, you know, one hacker starts to do something. The other hacker is like, Oh, I can get this. Hold on. Give me a second. And so they start immediately trying to hack retaliate back to undo what the other guy just did.
Starting point is 00:05:51 And I'm like, no, no, no, it would never work like that. The reality is, first you're going to have to clone that repo. Then you're going to have to figure out, you're going to spend a stupid amount of time just going through the code. Because you're like, wait, what is this? Where is this? Where does this thing start?
Starting point is 00:06:05 Why is that over there? Who would write it like that? And then you're going to find the actual spot. You're like, okay, I think this is where I'm learning to run the, where I need to make the change. But lo and behold,
Starting point is 00:06:15 there's no unit test. So now I've got to co-create some unit tests. And that's after you, like, that's assuming you even got all the scaffolding in place to compile this thing and run it. Like the reality is it's nowhere near as like, like that's assuming you even got all the scaffolding in place to compile this thing and run it like the reality is it's nowhere near as like real time and sexy as they try to portray it it's not that glamorous and then you're going to realize that it was written in spring and
Starting point is 00:06:36 you're never going to get through the xml files right so old spring yeah old spring not that's great so yeah that's awesome so i've got some really cool oh wait were you about to say something joe i saw you i was just thinking about those uh those tweets that are like um two two unit tests no integration tests right you see those it'll be like two drawers that like you know each one opens individually or like um I think one of my favorite ones, it was a sink, and there was a basin for the sink, but the water would clearly just shoot right out of the basin because it was not put together very well. You have to see it to get the funnies, but it's good. Excellent. So I have some really cool news that a lot of people in the Hackintosh world are loving right now. And even, even, you know, people that aren't necessarily Hackintoshers,
Starting point is 00:07:35 Nvidia finally released their drivers that will work on OS 10 or OS Sierra now, or Mac OS. I'm sorry. I will get it right eventually. But the funny thing is, so if you go up to their download page, which we'll have a link here, they don't list Mac OS as one of the operating systems. It's actually for free BSD, which is what Mac OS was built on top of. So you can actually go out there and get drivers so if you have an old cheese grater mac laying around and you want to put in a 1080 because you need it you know you can do that and you'll have drivers for it now so it's it's very cool uh what a cheese grater mac i've never heard that term before yeah before they had the trash can it was the the last of the good ones okay
Starting point is 00:08:26 but the front of the holes all in it cheese grater yeah yeah all right so uh what if we tried designing c a second time so on on reddit on the programmer humor subdit, there is the top post of the day, this great image that somebody posted, and we'll have a link to it in the show notes. But it basically goes through many different languages and is like, okay, what if this, what if that was? So I'm going to give you a couple of examples and then I'm going to hold off on some funny ones, but like just to give you an idea as to what we're talking about. Right. So Java is what if everything was an object and C is what if
Starting point is 00:09:14 everything was a pointer, right? So now you kind of get where we're going with this, right? You got the idea. So here's a couple of funny ones that I really liked. So which one should I actually start with? Okay. We'll start with VB. What if we wanted to allow anyone to program and VB.net? What if we wanted to stop them again? Right. That's awesome. Go. What if we tried designing C a second time? Then I love this one too. Pascal begin. What if everything was structured? End C sharp a lot. Cobalt. What if everything was uppercase? Or C Sharp, what if everything was like Java but different?
Starting point is 00:10:09 And my absolute favorite one, the one that seriously had me rolling the hardest, PHP, what if we wanted to allow... No, I'm sorry. I started reading the wrong line. PHP, what if we wanted to make SQL injection easier? Oh, God. What doescript have to say about it javascript was well this one's gonna be tough to say because they're referring to a dictionary but they don't make it easy to say the abbreviation for that word right so i'm just gonna say dictionary so what if everything was
Starting point is 00:10:47 a dictionary and an object okay it's a beautiful world to live in i i'm surprised that's all they have to say about javascript they had to keep them one-liners right yeah it's gotta be one-liners yeah that's why it's fun to poke fun at your favorite and not-so-favorite languages. Alright, so we are back for the most important part of today's show, where we're going to speak with Michael Kromp and
Starting point is 00:11:15 Clint Rutkus on some very important and very neat, cool bits coming out of Build 2017 this year we're excited to talk about. On all days, of course, but may the 4th be with you. And none of you are wearing Star Wars shirts. What is wrong with you guys?
Starting point is 00:11:34 I have a nerd reference t-shirt. I have a real genius t-shirt on right now. Nice, nice. I will take that. All right, but the rest of you guys, we got to work on your game here. We got to step that up. I'm surrounded by Star Wars stuff constantly.
Starting point is 00:11:51 So there's a panoply just slightly out of camera. All right, so you guys go ahead and take it away. Okay. Yeah, so go ahead. Michael, do you want to quickly explain what UWP is for the people of the audience that don't truly know what the Universal Windows Platform development is? Yeah, absolutely. So you may be wondering kind of what is this UWP thing.
Starting point is 00:12:18 So let me just attach that to whenever you think of UWP, you're thinking of the universal Windows platform. So one of the things that we've noticed is that there's a lot of different platforms in the Windows ecosystem. You have your IoT devices to your PCs to things like Surface Hub and even like Xbox. And with UWP, it helps you and it creates the framework that allows you to write applications that work on all of those different types of devices. So if you're already invested and you're doing things inside of the Windows system, UWP allows you to create one project type that will target all of those different platforms. So you can do things like reuse code. You can add things like adaptive triggers to make your applications look great on all those different types of devices. So that's kind of the real high level of it without kind of going into deep there about what UWP does.
Starting point is 00:13:16 But that's something that I believe will be interesting to a lot of people that especially are wanting to build and extend to the Windows platform. I would also like to just pile on another great advantage of UWP is it provides a clean install and uninstall experience. So it doesn't leave any legacy artifacts around for your application. So it also helps reduce registry hits. And it's a great packaging system as well. Your app can go to the store, or you can sideload your app as well if you're an enterprise or an individual user. It's just a really solid platform.
Starting point is 00:13:55 So it's allowing me to have a consistent Windows app experience, consistent with what other apps might do and what the expectations that users may have on my app based on interactions they've had with other apps. But at the same time, I get this buy-in of, I can deploy this code on multiple device types. Yeah. Device families. Yeah. So this is the premier way. If I wanted to write a Windows client app today, this would be the first thing I would want to look at, right? Yeah. And also it's about modernizing, you know, applications. So one of the things that, you know, we've taken a look at is that, you know, maybe for example, your parents,
Starting point is 00:14:34 the traditional way that they download and install software is they may go to, you know, Bing or Google it and, you know, it brings them to some random web page. And they're not sure if that web page is legit or whatever, and they go ahead and they download that MSI installer, they run it, and the next thing you know, they have all kinds of little floating cats around their screens. I don't know if you know my parents, but they get all of their greatest software from a Nigerian prince who is only going to need a couple thousand dollars in the bank account and he will send them back a half million exactly and I mean but really that's the type of things that we face and now it's nice to be able to say okay you know if you
Starting point is 00:15:17 need this software you can actually go to the windows store and you can type in that and I know if you download it from there not only are you going to get you know type in that. And I know if you download it from there, not only are you going to get, you know, an application that has been authorized by us, but also things like updating it. You know, we know that like, you know, parents and other people, you know, they click away. You know, if there's like a pop up from the tray that says, you know, update this app, they're like, oh, that's going to keep me from doing something else I'm trying to do. So, yeah, things like updating is updating is built in for free. And actually, updating and deploying your app is one of those things where everyone's like, oh, that's super easy, I'll just do this. But the great thing with the Apex format is it will actually do differential updating.
Starting point is 00:15:59 So if you only update 1K of a 5 gig application, you download 1K. Oh, nice. So that just makes your end user's life so much easier. It makes your life so much easier. It's a fantastic new packaging format. Very nice. And just to clarify for like the web developers out there, this is similar in when you were talking about the triggers and all that.
Starting point is 00:16:23 When you develop, you're almost doing it for your most common denominator, right? So similar to responsive design on the web, that's sort of what this UWP gives you as far as for your Windows platforms. That's a great way to think about it. We do refer to it as a responsive design as well, responsive layout. way out. And the other thing to add in here is that if you are a web developer, it's not like you actually have to leave your stack and everything that you're already kind of doing. We have things called hosted web apps. We also are making some models there with progressive web apps. So if you have an existing website and you would like to package that up and to be put into the store, and maybe then you'll start getting all of your ad revenue versus people that are using a lot of different types of ad blockers.
Starting point is 00:17:16 As a store, it also will be easily discoverable. And you can add in other things if you wanted to, like in-out purchases and start lighting up other features of UWP. So even if you are a web developer,-out purchases, and start lighting up other features of UWP. So even if you are a web developer, you still have a home here. Awesome. So how do you improve on UWP? It sounds like it's pretty great already. Yeah.
Starting point is 00:17:41 So this brings us to our cool little toy that we're releasing. It's helping aid in the file new experience. And what we realized was this is an experience that has historically said, pick one of four options, and that's what you get as your base. And then you have to go rip out 50 things and put 50 other things in. And then it takes multiple hours to get where you need to go. So me and Michael basically were chit-chatting, and he was explaining about an application he built with his son,
Starting point is 00:18:19 which was a cool little Minecraft app. And he's building up all these things, and he's kind of going going like wouldn't it be great if we could do some you know improve this so i didn't have to go and research this and that so we basically thought of uh what if we built a a dynamic generating you know uh wizard that you you pick here are the options i want and we just output it and for webs, a great way to think about this is YoMan. And so we built out Windows Template Studio. So you basically have two screens for our wizard. The first screen, you say, this is the type of app I want.
Starting point is 00:18:59 And that is, what is your core framework? So are you picking code behind MVBM Lite? If an external developer wants to add in new ones, they're more than welcome to. And then the other one is your project type. So what is the defining metaphor for navigation? So we have split view, pivot tab, and then blank. We have just a blank one, which you pick and choose what you want.
Starting point is 00:19:25 So from there, you click Next, and you can pick one of six current pages that we support along with developer features such as background tasks, Azure notification hubs, live tiles, host notifications. I feel like I'm forgetting a couple as well. It's just suspend and resume. So things that were historically complicated and takes lots of time to test out,
Starting point is 00:19:54 we programmatically figured out ways to generate this and basically get you what would prior take maybe two-ish hours, two to three hours prior, now takes 20 seconds. Yeah, and I think to add on to that is to just think of this in your mind. If it takes one of us a couple of hours to scaffold one of these applications, when we live and breathe this every single day, imagine somebody who does not work with this platform, the type of pain that they would experience there. And how can we create a solution that gets them, you know, from file new experience to F5 and an actual functional app that is very, you know,
Starting point is 00:20:40 make sure that we're not putting in too much code or too little code that gets you to an application that you can actually start working with now instead of going to a million documentation pages and start scaffolding that out. And then another great thing with that, I mentioned like, hey, prior, you'd have to remove a lot of code. So, and Michael mentioned, we have this fine line of not doing enough and too much. So in the scenarios where we're afraid we're going to do too much, we literally have documentation pages that we link out to. So a great example would be our settings page. We, by default, have a theming support, which is a toggle button. But if you wanted to add in, you know, maybe an integer based or a string based setting, that feels to me like something we shouldn't do and add in by
Starting point is 00:21:32 default, because some people will want it removed. So we have a link directly to our GitHub page, and we explain in detail how to do how to add in additional settings. And then other scenarios would be like, if you have a map page, where do I get the API key? Did I even know that I needed an API key? So we have a bunch of developer to-dos that you can go through and remove the comment line. And we tell you exactly what we recommend you do there. So like a background task,
Starting point is 00:22:01 this is where you should put your background task stuff. If you have a page, this is where your content should go. So we try to make your onboarding experience very, very easy and very, very quick. So this would basically be like if I wanted to create a UWP app, and we'll say the quote the old days before this new template existed, then i would i would go file new start that project up and then my next course of action is i'm going to spend the rest of my day on stack overflow answering all these kind of questions right like how do i add the map in
Starting point is 00:22:37 and where do i put the api so we've distilled stack overflow into a file new uh experience now to where now i'm just up and running in five minutes and all of those were actually less. But now you've already got those hooks in place and pointers like, hey, insert your key here. Right? Yeah. Yes. And our big thing is we try to link to best practice documentation. So whether that is docs.microsoft.com or a engineer's blog or Stack Overflow,
Starting point is 00:23:08 we want to, like I said, bring you up to speed and answer questions as fast as humanly possible that you may have and give you the best documentation. And the key thing here is also we're working directly with the community to be sure that our practices and stuff that we link out to is actually what they would recommend or what they would think is useful.
Starting point is 00:23:30 Same thing with the source code generated. We worked for MVVM Lite directly with Laurent, the creator of MVVM Lite, to be sure that how the folder structure is, how we're putting different files, how we're navigating around the project. This is what a MVVM-like developer would expect. This is what the community, you guys, would expect the code to act and be like and look like. So we opened it up to the MVPs, the Microsoft Most Valuable uh valuable professionals uh i think a couple days ago and like the best feedback i've gotten are them nitpicking a line break between methods and it was just it was generated code where one file needed to get inserted above another and insert and it was just we forgot a line break but if they're nitpicking that i feel like we've succeeded and i can't wait until what uh we open it up to the public and see
Starting point is 00:24:31 what the public uh um is trying to track down and find and and you know the one of the great things also with it is our uh visual studio extension is independent of the templates. So if we do have a bug or have something that needs to get pushed out right away, the next time anyone runs the application, the extension will see the change on our CDN for the template file and download the new templates. So if there is an issue, it gets fixed in pretty much real time as soon as we update the CDM. For a new project though, right? Not on an existing? That is correct for the new projects. And I think one thing to kind of tie in here
Starting point is 00:25:18 is kind of going back to that whole code generation thing that Clint just mentioned. I will say that the people that I have talked to from the community and also my own experience with code generation, it's kind of people kind of already kind of think or developers think, you know, I'm not too sure about something that generates code. You know, is it going to be at the quality that I really want it to be at? And I think that's where we're able to take a nice step back and look at other apps that generate code and look through that code and say, okay,
Starting point is 00:25:53 I would have changed this, this, and this, and then actually getting it outside of this office. Outside the bubble. Exactly. Outside the Redmond bubble. And bringing in other people that live and breathe NDDM daily, even people that use CodeBehind in some smaller applications, and that if we generated this, what would you think about it? And then get that feedback and take it back and make sure that when we output code, it's code you actually want versus code you're going to immediately go in and hit the delete key on. I think if you had to hit the delete key minus the to-do items that we have for you, we failed. And I don't like failing. And I know Michael doesn't like failing. So that's why we directly partnered with the community to be sure that, like I said, what
Starting point is 00:26:44 is being made is something that people would want. And every time we demo this, it amazes me how quickly people are like, how can I get this? I need this tomorrow. And we're like, sure, here's the nightly feed. If you find bugs, please tell us about it. And it just makes us so, so happy when that happens. Yeah, I got to start with the front page and i actually got to learn a lot about html when i was first learning because i would go and see how they did it so that was really nice although uh yeah the generated code like you mentioned uh you know uh had a bit of a reputation
Starting point is 00:27:18 but uh yeah that was it front page 98 i. We all had CDs. Remember that? Shipped on the CD and everything, and you were like, oh, yes. Oh, yes. Absolutely. I think one of the advantages we have is we're building out a scaffold, a framework for your application. So I think front page did a great job. But the problem with front pages, it created HTML and user facing content. So it had to deal with a lot of like margins and adjustments. We're dealing with like the the elect the electrical for your house. Like we can make assumptions and those assumptions are going to be pretty spot on for almost everything.
Starting point is 00:28:06 And then going to the UI, that's you guys. We trust that you guys are going to put in and make it look how you want. We will do our best to make the navigation pane fit to Microsoft standards for design guidelines. But past that, if you want to change it or customize it, go nuts. We highly encourage it. I would love to see what everyone creates. And I think the thing with that app that's created is that as a developer, we typically don't really do a lot in terms of design. And I know that any time that I have created my own little kind of smaller app that I'm just going to kind of use. Design is something I never even think about, you know.
Starting point is 00:28:48 I just want something functional. And while we like functional apps, we also want apps that people want to use. And so we've also worked with our design team here to make sure when you generate an application, you're not wondering, you know, is this hamburger menu or navigation pane, is this starting, you know, the right pixels over, the right amount of pixels over? What about the colors? Are the colors, you know, are the colors like approved colors here? Can you do that?
Starting point is 00:29:13 What happens when you actually select on a menu item? Is there supposed to be a background behind it or, you know, what's going on? A lot of those questions that you may have out of the gate, those are things that we have addressed in the template that is available and that you're able to generate. Very cool. And a key thing actually to actually do a counter against Michael
Starting point is 00:29:37 here is we do Microsoft design best practices, but you as an end developer, pick and choose your own adventure. You don't have to stick to our guidelines. If you want your app to be fuchsia on black with something wherever, go nuts. It's your app. You can do what you want.
Starting point is 00:29:58 Don't assume that we are dictating rules and regulations to you. But you have a nice starting block. You have a nice starting block, though, is really what it boils down to. Hey, so real quick, you guys haven't mentioned it. You've scaled it around a little bit by saying, hey,
Starting point is 00:30:11 if you have a particular type of product you want to add. That's what you're going to say. So there's these two words that start with O and S. This is all open source, right? You guys are basically making it to where people can contribute to this. Yes. This is all open source, right? You guys are basically making it to where people can contribute to this. Yes, and we highly encourage contribution and pull requests. We do have contribution guidelines that are best practices that we picked up from basically.NET and other open source projects. It is under the MIT license.
Starting point is 00:30:47 And our core goal here is to have a discussion before anything is actually implemented. Because what we don't want is four people building out the same thing, and they all come in at the same time or roughly the same time. And everyone's like, my baby's better. My baby's better my baby's better like look at this and we're like oh no how do we deal with this and we don't want heart hurt feelings and and um also it's figuring out like hey did you think about you know the error use the error scenario of this or a great honestly this actually happened was the map control. We had just built in default location,
Starting point is 00:31:29 but then someone's like, you know what? We should really implement is getting the location actually added in and dealing with the scenario where a user says, no, I don't want to share my location. And that was a really great suggestion done by a community member, and he actually Matt Lacey
Starting point is 00:31:47 committed a pull request for it. We're like, that is fantastic. That's killer. We were actually up in the air if we should support, and he did the entire thing. So for my next project, rather than doing file new blank app,
Starting point is 00:32:04 I can do file new UWP app. And in 12 clicks, I can have localization included in, I can have mapping services included in, I can have theming. All of this is already scaffolded out for me. And all I got to do is focus on what the core of my application is going to solve. And of course, I can do this in my favorite language, vb.net. So two little things. So it's C Sharp
Starting point is 00:32:29 and the other key, currently we only support C Sharp. If people are very interested in VB, 100%, let's have that discussion. The localization, the app is by default built out to be localized, but it is currently set to EN-US only.
Starting point is 00:33:01 And this was actually a feature we had figured out ways to do it, but it wasn't, I would say, user-friendly in the wizard. Because you'd add in a new language and then it would be like well what's the code and i know like four codes off the top of my head but then it's it wasn't as straightforward and easy as we wanted so we said hey let's make it localized or the app is localizable by default it's enus uh you can use like the multilingual toolkit to actually help auto generate everything for you but we're going to provide a good solid foundation and then we're going to figure out how to do it better in the future i will say that the multilingual toolkit is absolutely something that you should use at least you should start with is taking a look at that and obviously if you're you know you're getting ready to publish an application, there's a ton of services. There's
Starting point is 00:33:49 actually services that we list in our Dev Center benefits that will allow you, you know, to get an actual real translator and take a look at that before you go live with that. But right now, it's as simple as there is a Res x file you can copy that and that will at least take care of a lot of text box uh about settings uh settings panes and things of that nature uh to kind of get you started very cool so here's the thing like i don't know joe alan like if you think about this right like we often take for granted like when we do that file on you when we make our selections of what type of app that we want to create, right. You know what that's actually doing, right. That, that there
Starting point is 00:34:30 was a team of developers that sat there, they're like, that was their project for a period of time, right. Was to write some code that wrote your code that you're later than going to take credit for writing. So, you know what I mean? Thank you. But the, you but the you know i mean you never you never really think about you uh you take that for granted right so i mean you guys it must have taken a whole team of people like you know a long time to write this thing right like this is a huge effort years right no like 50 people all of microsoft all microsoft. So basically, I talked about it a bit earlier where me and Michael kind of had a little brainstorming session. And then every year, Microsoft has on campus a Microsoft MVP summit where the MVPs come on campus and we have a bunch of, we basically disclose a lot of our roadmaps and features that we're going to be potentially building out and kind of using them as a
Starting point is 00:35:30 sounding board. And so we pitched the idea to the MVPs as our final gut check because everyone we talked to internally liked the idea, but going back to, we're afraid we live in a little bubble. So what did the community think? And the community overwhelmingly was positive're afraid we live in a little bubble so what did the community think and the community overwhelmingly was positive and we even threw a little focus group and at the time we had i had written probably a good solid like 30 or 40 page spec on this and didn't tell them that we had this spec and said what do you guys want in this and we built out um a kind of on the whiteboard a prototype list of features prioritized features we basically gave them uh we call it dev cache so how many you know how much resources would you prioritize for this versus that like what do you
Starting point is 00:36:20 want is a is a map control more important than the master detail page that's a good question like where should we put our our resourcing for designing and developing so we did that we had a little SWAT team of basically four devs plus me and Michael helped build out a good solid prototype we opened it up to the developers that were the MVPs that were at that focus group and then started migrating and, and, and, you know,
Starting point is 00:36:53 are transforming the project into something that everyone was super proud of. And you remember Clint, like that focus group, there was actually, we, we weren't necessarily expecting there to be so many people, but there were so many people that I actually had to grab chairs from other conference rooms. Oh, yeah, I forgot about that.
Starting point is 00:37:14 That's cool. There were that many people that was interested, and we were looking at each other like, oh, I didn't know that many people. And many people cared about a file new experience. Exactly, but also, we also run developer surveys all the time. You may have been on some of those, and this was one of the top asks from the community was to bring back a better way for that file new experience. That's killer. So I want to point out a few things because one of the talks that we saw at a meetup here, not recently, but last year, Michael and I attended. And Sean Wittermuth, one of your MVPs that's been an MVP for 15 years or so. One of the hottest topics was, let's start an ASP.NET Core app from scratch.
Starting point is 00:38:00 Because the problem was you go and create the.NET app using the file new and it would give you so much garbage and you wouldn't really know what was there, what wasn't, what you would actually have to add if you're going to start from scratch. So I want to point out like for people that are just trying to kind of get their feet under them, one of the cool things is like what they're describing is almost like designing your own pizza right you start off you have this blank pizza and you say hey on half of it i want this on this i i want some you know olives over here whatever and at the end you hit finish and you have your pizza right that's that's kind of essentially what you built exactly so here's your own adventure but yeah that works yeah totally so let's just keep talking about pizza
Starting point is 00:38:42 it's almost 11 o'clock and now i'm hungry because that's awesome way to go alan so that works. Yeah, totally. So let's just keep talking about pizza. It's almost 11 o'clock and now I'm hungry because that's awesome. Way to go. So we'll check this out. So here's where I'm going with this. One of the things that I really like is Sean Wildermuth's presentation was awesome because it helps step you to understanding what was in core, right? This can do a similar type thing.
Starting point is 00:39:02 So let's say that you start off and you choose the bare minimum things. You say that you want the tab navigation and that's it. You could generate that, put that off into a folder. You could come back through and do another one and say, okay, well, what if I wanted to add a map? And then you could actually just kind of do like a beyond compare of the two directories and say, hey, what changed between these, right? And you as a developer with no understanding of any of it can start to see how this thing grows as you add more pieces to it. So you can kind of get an understanding of, oh, well, if I wanted to add my own thing, these are the kind of places I would need to look to do that. So I see this as being useful,
Starting point is 00:39:41 not just for a starting ground, but also for just understanding. Like you said, you guys are taking best practices and you're trying to build code off the best practices out there. So this is like almost rather than sitting down and watching a YouTube video, you can get your hands dirty and sort of interactively learn how to do the i would say nerdier approach is you could go to our template directory on the github and see how we're actually generating like the how we're adding in the maps page to an mvvm versus a code behind because you can literally look at the file and see here are the files that they are adding here's the stuff that they're injecting it it's very, very interesting and really nerdy on how we do some of this stuff. And another cool thing is actually we're leveraging another open source project to do by Visual Studio to generate our apps. So it's open source using open source.
Starting point is 00:40:40 I was going to ask if you guys are doing T4 in the background. We are not actually using T4. We're using the new Visual Studio template generator. I didn't even know that existed. All right, that's lovely. We got to look up. It's currently public. I will say for those people that are trying, though, to learn that tech, as you mentioned,
Starting point is 00:41:03 and they are looking at maybe code behind, especially for new programmers, they may or may not have a need for some of the heavier frameworks like MVVM that just wants to understand how it works. You could always go in, you select that one page, that map, and then you finish the project. And that is, again, a great learning experience. How did we wire up that button to go to that new page? What about navigation? All the navigation, going back, going forward, how does that work? You're able to see that without going through, you know, hundreds of lines of code that traditional people would have to deal with. Awesome. Yeah, I mean, the idea of kind of hanging out on my couch, you know, and watching Netflix or something in the background,
Starting point is 00:41:40 and say, oh, I've got an idea for a map map i want to see where uh you know uh where the closest pokemon is or something and i can just kind of go in here you know file new created up a new app you know say i want the map and uh you know a few other things background tasks there we go and now i'm playing around within just minutes and i'm absorbing this stuff and kind of learning and having some fun and learning in the background and i don't have to mess with the stuff that i don't really care about you know i can just kind of focus on my fun little thing yeah yeah and the cool part is again I mean this is they talked about at the beginning this is UWP so imagine right you you made your little Pokemon app that you started messing around with you had it up and
Starting point is 00:42:18 running in five minutes like literally you you hit you hit create you can hit f5 you have an app running and now you can deploy this to an Xbox right you could literally have something like this on an Xbox you could have it on your tablet you could have it on a computer like it's super super cool which you could do in very little time and effort
Starting point is 00:42:37 yep I don't want to use Pokemon maybe Pac-Man or no everything's taken I highly suggest you respect other people's copyrights. Right. Yeah, yeah, yeah, totally. You call it something like Poke-U-Mon and then you're good. I think one add-in here is that, again, this is open source and that you may have your own templates that you want to add or create or help contribute.
Starting point is 00:43:11 But also you may be in an environment where maybe you want to take our code and generate your own VizX installer. Maybe you're in healthcare or maybe you're in an industry that, you know, there's a little it's a little bit tighter. People want more control of it. Again, you have the ability to take this and run with it and do what you want with it. And obviously love to have you contribute back. But this will this should be able to fit your needs no matter what industry you're in. So like a great example would be like, hey, I work at Ruckus Co. And Ruckus Co. has very specialized templates. So I could
Starting point is 00:43:50 totally download the source code, point it to a different CDN, and install it on my end user's computers, or my end developer's computers, and then we could work on our own private fork of basically the source code. That's awesome.
Starting point is 00:44:05 So we definitely tried to make it very adaptable, very useful, and can't wait until we open it up to the entire world and see what possibilities there are. I have a dumb question. I don't know if we ever said this. What is the official name of this? If I want to go Google it to actually go download. Official name.
Starting point is 00:44:27 Do you want to say it, Michael? It was fun. Windows Template Studio. Windows Template Studio. I like it. And if you want, you can find it at aka.ms slash WTS and it will forward to our
Starting point is 00:44:43 GitHub page and we have full-blown install instructions if you want to get it from the official Microsoft Visual Studio gallery. Or if you want to try our nightlies. It's pick and choose your own adventure. So if I wanted to get started tomorrow, I would need something like Visual Studio. Like Visual Studio Community would work, right? Yeah. This is free. You like Visual Studio, like Visual Studio Community would work, right? Yeah, you need Visual Studio 2017. You will need the Creators Update SDK, which is 15086.
Starting point is 00:45:16 And build 15086. And then you go, which is also the UWP workload. So you basically then go to your extensions. I think it's tools, extensions and updates. Click that. Click the online tab. Search for Windows Template Studio and click install. Restart Visual Studio and it'll be in your file. No experience. Awesome. We'll have a link to some instructions too, right? The GitHub will have full blown instructions. Hey, and so link to some instructions too, right? The GitHub will have full-blown instructions. Hey, and so also to add to that,
Starting point is 00:45:49 because this is UWP, the OS has to be at least eight or higher, right? UWP has to be Windows 10. Windows 10, okay. So we target current release and current release minus one. So we support creators update and anniversary update. So that's 14.393 and 15.086. But if you download Visual Studio 2017 like today,
Starting point is 00:46:18 and once you start the installer, there is the workload there, and all you have to do is simply make sure you have a checkmark in the Universal Windows platform. Yeah. And it will take that for you. Everything works. Very cool. And then the other thing I want to bring up is, so what used to be Xamarin Studio, which is now Visual Studio for Mac, what's that look like for this? So currently this works on Windows 10. We do not currently support Xamarin. It is something that
Starting point is 00:46:52 is actually we do have a GitHub issue on this. We'd love to see kind of what everyone is thinking and feeling and going back to what is the best way to support this. For us, a big question was, how do we support a minimal viable product? What's our shipping bar? What's our things that we absolutely must ship with? So we talked about localization. I made the gut call a lot with talking with Michael of, hey, to do localization the way we would love to
Starting point is 00:47:27 do it requires too much time and effort and we could rat hole and it could delay the entire product from shipping. So let's just support enus for now and then we'll revisit it. Same thing with a great feature that we want and will shortly implement is right-click add. So you already generated your app. You want to right-click add it. The problem is, is like, I think my spec has four pages talking about all the different permutations that an application could be. Like maybe you didn't use Template Studio to build this out.
Starting point is 00:48:01 So then what kind of assumptions can we make? Like, are you using, do we basically have to rerun assumptions? Like, are you using MVVM Lite? Is this code behind? Hey, you really should check this into source code before we touch your project. Kinds of assumptions like that. So we want to work with the community and figure out what's best for the product and just create a really, really solid B1. And we know that there's lots of more features and new things that people want. We just have to be sure that we do them correctly. But in short, all the fun of writing suspend and resume code has now been taken away from us. Hey, man.
Starting point is 00:48:43 That is every day my favorite thing to write. Every day. And I am really sure there's a lot of other questions that are going to be popping up around adding feature X, Y, and Z. Again, just like you were saying with Xamarin, I think if we keep in mind this
Starting point is 00:48:59 is a 1.0 type of release, there is a lot more goodness that can come from this project. And I love that too. Just, I mean, for anybody listening here, this is the way real software is built, right? You have to make trade-offs.
Starting point is 00:49:16 So, I mean, I know there's several people in our audience that they're like, well, how do I do this? Or how do I get started? Or how do I make this? You have to make trade-offs. And so I think that's an excellent point though. This is open source. There's a community around it. So if you have an opinion, you can get involved. So again, we'll have those
Starting point is 00:49:32 links, you know, definitely go out there and pitch in. I can give an entire discussion on just even shipping. Like the question is like, okay, is this, it's a cool thing to add into the source code now, but we're seven days away from shipping. Do we wait? Do we, like, is this a must-have item? Like, yeah, you touch two lines of code, who cares? But then it's a, you know,
Starting point is 00:50:00 if you give a mouse a cookie problem, like, well, if that got in, this gets in. And it just, it spirals out of control. If you give a mouse a cookie problem, well, if that got in, this gets in. And it spirals out of control. So then it's like we already have pull requests by the community for new pages. But at a certain point, I had to go put my fist down and go, we're at code freeze. The bug bar, the feature bar is now this high. And then yesterday I was talking to some of our developers. I'm like, it is through the roof now.
Starting point is 00:50:29 Nothing can get checked in without my direct approval. And every morning it's like, okay, let's go see what things have to get done. That's excellent. I think this is also, you can also think of this not only with the existing stuff that we've added in, but also, hey, there's all this new stuff that's coming. There's a lot of new stuff that we're talking about at Build. And what would be my best practices for adding some of those features as we add them to Windows Template Studio in the future of, oh, actually now I can go here and I can pull that in
Starting point is 00:51:07 and start using that in my application. So I think it's also good for what we already have, but also a future looking of things that we have recently announced and things that we're going to be adding in. I cannot wait until we're allowed to talk about some of the stuff we're going to talk about at Build. Well, I think we are. Hashtag tease.
Starting point is 00:51:31 Nice. So HoloLens will be in version 1.0.0.1. Right. I do not know. I do not comment on rumors or speculation. Very nice. Well, I think we're all super appreciative of the community-focused and open-source nature that Microsoft has migrated to. That is really awesome, and we all really appreciate that.
Starting point is 00:51:56 That was a huge change for the organization as a whole, so it's super awesome, and we appreciate you guys putting this out there. So we're going to include links to the GitHub repo for this project. We'll have links to the blog posts as well so you can see more information, learn how to get your next app started using the new Template Studio. If you want to reach Michael on Twitter, he is at MBCRUMP.
Starting point is 00:52:25 And Clint is on Twitter at at Clint Ruckus. C-L-I-N-T-R-U-T-K-A-S. And with that... Creating a ruckus. Yeah. I had to say that. Sorry.
Starting point is 00:52:42 I'm the presser of the red button. Awesome. All right. Great, guys. Okay, great. Thank you so much for having us. Thanks for coming on. We learned a little bit along the way and super excited about this.
Starting point is 00:52:56 So thank you. Like I said, if anyone has any questions from the community, please post a question on the GitHub. Reach out to me or Michael directly on Twitter. We're really, really accessible. We'd love to see what you guys are building. Excellent. Or what questions you guys have or feature requests. Yeah, 100%. Please reach out. Awesome. Nicely done, guys. Thank you very much. Thank you. We really appreciate it, you guys. We really appreciate it. And now I feel exciting.
Starting point is 00:53:28 Excuse me, I need to change clothes for the next portion of the show. That's totally not awkward. Not at all. Especially not when he does it on camera. Everybody close your eyes. Wait. Okay. Cheers.
Starting point is 00:53:39 Bye. Yep. All right. Thanks, guys. Thank you. Appreciate it. Bye-bye. Bye. Okay. Thanks guys Appreciate it Bye We hope that you certainly enjoyed Hearing about those The new bits that are coming from
Starting point is 00:53:53 Out of Build 2017 But since we didn't get to do My favorite part of the show Typically during the Middle-ish Somewhere in that line We're going to do it now. So it's time for Survey Says.
Starting point is 00:54:09 All right, so which programming language are you most envious of? Is the survey from the last episode. Now, we gave a lot of choices in this one c c sharp c plus plus f sharp go haskell java javascript python r ruby swift typescript vb.net who gets to guess first you You go ahead, man. All right. It's between two for me. So no, three.
Starting point is 00:54:49 Oh, three. There's definitely three. Part of me wants to say C++ because I kind of think of that as being the hardcore super programming. Part of me wants to say Haskell because it's super functional, but then there's the go hotness so I'm going to go with Haskell with 17%. Oh that's
Starting point is 00:55:13 insane there's no way. Haskell 17% gauntlet thrown. There's no way I was going to say I think a lot of people are probably doing Java or C Sharp or one of these major ones out there. So I'm going to say I think people are envious of Swift. Really? Yeah, I don't know why.
Starting point is 00:55:43 And then I'm going to give it 8%. Oh,'t know why and then i'm gonna give it eight percent oh i feel a wind coming on all right swift i mean the only reason why i was saying like really was just because i mean i guess you're assuming like a lot of people want to do ios development is where that's pretty much kind of what you're suggesting. Yeah, and Objective-C sucked so hard, and people were super excited about when Swift came out because it was so much better. So that's the only reason I went that route. And emoji variable names.
Starting point is 00:56:17 Yep. Okay, I mean, fair enough logic. All right, but you lost. Yeah, I don't doubt it. Yeah. Joe, you did too. I'm sorry. Yeah, I don't doubt it. Yeah. Joe, you did too. I'm sorry. Yeah, I don't doubt it.
Starting point is 00:56:28 Yeah, you're both off. Does it go? So, no. Actually, this one was surprising. I'm going to say that our audience is messing with us on this one. There's no way this is the answer. They picked R. But, you know, I mean mean i threw this one in there
Starting point is 00:56:47 as a joke and i guess they picked up on the joke and decided to play along with it because the winning one is vb.net what if we could make them stop working again that's hilarious that's awesome what was the percentage it had to have been a big joke it was like 29 yeah wow okay. What was the percentage? It had to have been a big joke. It was like 29%. Yeah. Wow. Okay, so what was the real one after that then, right? That's the question. Say what now?
Starting point is 00:57:12 What was the real one that people chose after VB.net? Okay, after VB.net. Yeah, you're still both wrong. Let me just say, though, I guess if I had to like pick a temperature like you know okay well who's mostly right between the two of you um and joe is more right than alan let's say that i don't know how that's how you could be more right yeah i mean right rules because he picked three languages? Oh, but no, his final answer was Haskell, I thought. Oh, yeah. Yeah. So,
Starting point is 00:57:49 no, it was actually second place was a tie between C Sharp and Python at 11%. That kind of makes me happy. Yeah. So, I found that curious me happy. Yeah. So I found that curious.
Starting point is 00:58:06 Huh? Yeah. How did JavaScript do? Yeah, like four and a half. Well, you know the reason why I think JavaScript wasn't picked is because that's what everybody's programming did. So there's nothing to envy there. That's what they're doing.
Starting point is 00:58:23 Yeah, that might explain some of them. Maybe. That was a fun one. I liked that. So we've been at either people have a good sense of humor and we've been trolled or we're insulting everybody right now. Probably.
Starting point is 00:58:38 29% of our listeners. It's probably like a combination of all that. Yeah, we're straddling the line somewhere. But because we're doing this show all out of order, I now want to ask you, if you haven't already, please take this opportunity to leave us a review. You can head to www.codingblocks.net slash review, and you can find links to your favorite aggregators there
Starting point is 00:59:02 where you can leave us a review, and we would greatly, super-duper, hugely appreciate. I mean huge. This is huge. Appreciate that review. Yep. And so what's our next one? This is the new.
Starting point is 00:59:20 So our new survey for this episode is an easy one. Everyone, you're going to hear this, and you're going to be like, oh, this episode is an easy one. Like everyone, you're going to hear this and you're going to be like, oh, this is a super easy one. I can't wait to vote in on this one. And the question is simple. How cool is your company? And your choices are extremely cool. They pay for my conferences.
Starting point is 00:59:43 Very cool. They give me time for my conferences. Very cool. They give me time off for conferences. And lastly, they suck. I'm lucky if I even get time off approved. So obviously you can hear that we're
Starting point is 00:59:57 we had to have conferences on the mind. I mean, after all, we're talking about build 2017. We're kind of thinking conferences, maybe you are too. And these are anonymous. Yeah, that's right. These are anonymous. And we do kind of think that most companies do not send programmers out, which is, uh, I think a shame because I do think that there's a lot of value in, in companies encouraging their employees to keep up. Cause, uh, like, uh, old for my now, well, he's not old. A friend of mine once asked the
Starting point is 01:00:25 question, would you rather that your employees learn new stuff and sometimes leave or would you rather they learn nothing new and stay? That's a great point. Yeah. And, but you know, I'm curious, like what, what do you think is like the valuable way to learn, though? Do you think that, like, I mean, I love to go to conferences to hear the new things, but do you think that's, like, the most bang for buck? I think that is the best way to broaden your way of thinking, not necessarily the best way to implement, right? I think that's how I always look at the conferences.
Starting point is 01:01:06 You just get fed through a fire hose. You know, it's the drinking through a fire hose, but you get exposed to so much that you didn't even know existed before. And that's what I love about them. Whereas, you know, going to a two-day training course, yeah, you might be able to code some stuff in C Sharp right after you get back,
Starting point is 01:01:22 but it was literally just, hey, this is how you do X, Y, and Z. Yeah. Yeah, I'm with you on the exposure. Yeah, I kind of always wonder, as far as bang for buck, I think something like a plural side or a code school is,
Starting point is 01:01:35 you know, it's cheap and there's potentially a lot of value there. But I do think conferences are up there. So it's kind of like, if you're going to do one thing for your employees, then maybe the plural side thing is the way to go. if you're going to do one thing for your employees, then maybe the Pluralsight thing is the way to go. If you're going to do two things, though, conferences are really
Starting point is 01:01:50 awesome. Developers love it. They get inspired. They come back. They inspire the teammates. They come back with new ideas and meeting people and just a really cool thing to do. But it's kind of harder to assign a monetary value to that, I think. Inspiration is a huge point, though, that you just made. So, I mean, you each
Starting point is 01:02:05 made some really good points there as to like, you know, the exposure and then the inspiration that you get out of the conference. And I think if companies are doing it right, when they send their people out, you know, if let's say that people get put on a rotation, right? Like maybe one time I get to go the next time you get to go or whatever. If, if it's almost like a requirement that that person put together a set of slides or something, so they can bring back and share it with the group, then that, that kind of pays dividends all the way around. And, you know, it can help build up the morale. It can get some excitement rolling. And again, it can inject some new ideas. So I don't know.
Starting point is 01:02:47 I think there's ways to where the company can get back out of it what they're investing in. Or send a couple of wants and you got some team building too. Yeah, true. Yeah. But it does kind of assume, though, that what you were talking about with the notes, though, that everyone's going to take notes, A. B, they're going to take good notes. And then lastly, C, be able to do a decent presentation back on that information. Yeah. But it's a good skill building
Starting point is 01:03:15 exercise all the way around. So yeah, man, I'm curious to see what these come back with because I think more companies should do it. I don't know how many actually are, so we'll see how this one turns out. Yeah, I'm really hoping that most of the companies are going to be extremely cool. Yeah, agreed. All right. Well, let's get into the resources that we like. Anyone got one? Yeah, we got one.
Starting point is 01:03:48 So being that we just talked about this with build uh there are you know quite a few things going on with microsoft build right now that you know we've talked about it before they're now the largest contributor to open source that there is right so there's a lot of really cool stuff going on so go check out build.microsoft.com they've got some live streaming stuff. And you can find out about things that are going. Again, even if you're not a.NET developer or whatever, this just might be a way to broaden your horizons a little bit. Hey, you know what?
Starting point is 01:04:15 I was talking with the MSDev guys today. Just kind of joking around about their guesses for build announcements. So I want each of you, and I'll tell you mine too, to tell me a prediction for something that will be announced at build. Yikes. Oh, man. On the spot.
Starting point is 01:04:40 No doubt. Didn't even give us a minute. They're going to rewrite the Windows file system. Oh wait, that was Vista. Longhorn? I'm just kidding. Wrong conference. Want me to tell you mine first to get the Jesus phone? Yeah, please do. I'm predicting an Xbox
Starting point is 01:04:56 branded Oculus slash Vive competitor. I know there's HoloLens, but I think they're going to come out with a headset. So to go against the PlayStation playstations uh vr yep okay you might um they're gonna release visual studio 2018 wow you really put yourself out there on that one I thought, what? What? No, this is 2017
Starting point is 01:05:26 It would be a huge leap if they did it a year early Don't you look at a calendar? That's awesome Silverlight 2017 Oh no It could happen So Let me think about this
Starting point is 01:05:42 I mean, it does seem like Microsoft is kind of all in on the augmented slash virtual thing. I think what they might be trying to do is trying to get something like Unity cross-platform. I think their next big push is, you know, they've already tried to do their their uwp so you know basically you program for anything in the windows universe of devices then you get it i think their next big thing is going to be trying to push the ar or the vr cross platform i think i think that's what they're going to try and announce well i don't have any good one to come up with to follow up with that. I had the one thought that was maybe like tighter Xamarin, you know, abilities within Visual Studio, you know, tighten that up to make it even better
Starting point is 01:06:35 for Android, iOS, and Windows development maybe. I also thought Unity, buying Unity 3D was one of the things i thought about too because it just kind of makes sense with them uh you know buying the best dev tools and it's already c-sharp if they can kind of bring that in roll it out to even more stuff it just kind of makes sense i mean they already bought mono you know yeah they they're definitely making a play to be the one-stop shop for making applications and And dude, I mean that honestly, I wish somebody would do it regardless of who it is, whether it's Microsoft or someone like
Starting point is 01:07:11 that's always been the pain point. Like, okay, I want to program something. All right. Am I going to target windows or am I going to target Mac or am I going to target Linux? Right? Like, and if you want to do anything, then you have to like a full-on dev shop for each one of them right so it'd be amazing if if they made it happen or somebody else did so it's pretty exciting but i honestly think that microsoft is really all in on this ar vr thing so i'm with you i think that they're trying to go the software route with it i don't think they've done great with the hardware stuff i like is surface phone or or is windows phone even going to be a thing anymore there's been speculation but it sounds like it's dying so zune was pretty good that's the problem right like they make a lot
Starting point is 01:07:59 of good stuff the xbox has done phenomenal the controller is is awesome, right? The Xbox One controllers? Oh, the Xbox is a great machine, right? Outlaw has it. He loves it. Yeah, big fan. And I love the Elite controller. Oh, right. Oh, speaking of, did you guys see this is totally, man, we go off the rails.
Starting point is 01:08:20 Did you guys see the new Surface, it's not, what did they call it? Surface Laptop, wasn't it? The Surface Laptop. It's not the Surface Book? It's not, what did they call it? Surface Laptop, wasn't it? The Surface Laptop. It's not the Surface Book. It's not the Surface Pro. It's the Surface Laptop.
Starting point is 01:08:34 And it's interesting. So it's basically kind of upper tier hardware, but they're almost doing another version of Windows RT. It's called Windows S. So it's a stripped down one. You can only get things from the marketplace. However, like the bare minimum thing of this costs $1,000. But it's an i5 with 8 gig of RAM. It's a decent spec machine.
Starting point is 01:08:57 But here's the interesting thing. Because they did make a decent spec machine, for $50 more, you can upgrade to the full version of windows. So now you're getting up there and they're kind of competing with their own products, right? Like they're, they're kind of stepping on the toes of the surface book and the surface pro at a way more affordable price. So I don't know. It's interesting, but outside of the surface and the Xbox lineup of hardware, they haven't really done great in that arena. So that's why I have a hard time thinking that the VR thing is really...
Starting point is 01:09:35 I don't know. I don't know. I don't want to wear anything on my face. Yeah, they're probably going to... Another build prediction, I don't want to wear anything on my face. Yeah. Really? They're probably going to, you know, another build prediction, they're going to take the JavaScript engine out of Edge. No, just kidding. All right.
Starting point is 01:10:01 So that pretty much wraps up the resources we like. And now it's on to my favorite part of the episode and it's the tip of the week it's the tip of the week that's right and uh i guess i'm going first yeah i found an article here uh that uh tells you how to convince your boss to send you to a conference it's got a nice little list of uh of reasons to give and uh if you maybe phrase it like this you'll have an easier time with the cell so good luck very nice all right so mine actually comes from a pain that i experienced here in the past couple weeks and i know i'd seen it and i completely lost it so if you're in sql server specifically and you're concatenating strings, like there was before the, let's just say since Envarchar and Envarchar Maxis came along,
Starting point is 01:10:49 if you wanted to concatenate a bunch of strings together, you'd typically have to like cast as an Envarchar Max and keep doing that. I'm sorry, what is this type you're referring to? Car? There's a car? How do you say it? Sahar. i know you guys don't say in their care or it or var care or very care in our car stop it stop it so so at any rate just know about this
Starting point is 01:11:19 if you have this huge sequel string and you're concatenating a bunch of stuff together, if you're doing some dynamic sequel or something, if you do pluses, it will truncate stuff out of the middle of that. And you'll wonder what in the world happened. Like, where did my sequel go? Where did my code go? That was in here.
Starting point is 01:11:38 It'll just disappear. And then you'll, and the way that people used to work around it in the old days is they'd cast everything as a max, right? Keep casting as a max and keep doing a plus and life would be dandy. There's a much better way, a much easier, less insane way of doing things. Use the concat function in SQL server. And then that way, all you have to do is concat comma, and then do another single quote and your string. It doesn't truncate any of it.
Starting point is 01:12:07 You don't lose chunks of code. You don't lose chunks of data in the middle of it. Concat automatically takes care of putting the big string together and not losing anything. Can we please get like a TypeScript compiler for, but something like that where we transpile some sort of new features in the SQL language to plain old SQL. So we don't have to think about stuff like that.
Starting point is 01:12:32 I agree, man. Like SQL transpiler. It was, it's one of those things where you, you look at it, you're like, why is this,
Starting point is 01:12:41 why is this dynamic SQL failing? And then you're like, Oh, wait a second. It's missing half of its query why is that right this is probably you're doing a dynamic query it's probably for something like crazy like uh i don't know dynamic sorting or some something ridiculous something that should be easy right yes transpiler we should we should get somebody to make one of these i mean why is it that this stupid query language from the 70s still
Starting point is 01:13:08 sucks why isn't it up to date it's because it's standardized down with standards from the 70s i don't know down with standards oh there's the answer uh all right your turn out low yeah so uh i have this cool one so obviously it's going to be a git tip so uh there's this neat little uh repo out there on github called get extras and it adds in a whole bunch of nifty little commands uh and one of my favorites, for example, is and this is kind of what led me down that path to begin with was, let's say you're kind of curious to see just some stats on your repository, just in regards to like, you know, who's committing what, when, how often, you know, things like that, right? So for example, if you have the Git extras installed locally, you could do Git summary, and it'll give you out a little report of everyone
Starting point is 01:14:13 who's committed into your code and by percentage or line count of, you know, how your repository is, uh, is, is getting used or, you know, at least committed to by people. And, you know, you can do it by commits or whatever, things like that. Um, you can do like, uh, what was another one? Um, get effort, Oh, to display effort statistics on a number of commits per file. So this was another part of their, this was actually, now that I think about it, actually, the real reason why I was getting into it, I was trying to look for like, what files are changing the most in my repository, right? Because there was this, I think it was a Google white paper from a long time ago, where they had suggested that, hey, the files that are changing the most often might, or probably are probably going to be the biggest
Starting point is 01:15:04 source of bugs. And so I was trying to find to find like hey what what code in my repository is changing most often and let me make sure that that's the stuff that is well covered with unit tests right um so you you get effort and you can find out these kind of stats on uh on your repository and there's a whole slew of different bugs or not bugs whoops there's a whole slew of different bugs or not bugs. Whoops. There's a whole slew of other commands that you can get. And some of them are, you know, just shortcuts for other features that are already there, but you want to make it a little bit easier, you know, create branch, delete branch, you want to make it a little bit more obvious, delete sub module, because who doesn't want to do that? Right? Get delete tag, right? So a bunch of cool little commands, but there are some extra ones in there that are really going to shine if that's the type
Starting point is 01:15:56 of thing you're looking for. If you wanted to see some stats like that. That looks very cool. It's a pretty neat little project that's out there. And that's on GitHub, and we'll have a link to it in the show notes. Excellent. Hey, so I have one more random topic to bring up, only because you said unit test and it sparked a memory, and it'll be gone forever if I don't get it out now. So I'm curious what you guys think. So typically in a C-sharp project or something,
Starting point is 01:16:22 you'll have like a separate unit test project, right? Like maybe you have this is project A a and here's project a tests and here's project B here's project B tests. And typically that's done for two reasons. One, you know, one, you can keep all your tests in one place and two, you don't have to ship that compiled code to your production environment, right? You can build just the projects you need. So I'm curious you guys' thoughts on what about keeping the test right next to what they are testing? Joe has an opinion.
Starting point is 01:16:56 I have an irrational hatred of that idea. There's something about it that offends me, even though I totally think that it makes sense in almost every way dude that was awesome i cannot wait i'm slow mowing this on the video whatever you know go actually um they expect you to keep your test right next to the code and then they kind of like you know grab them out when you actually do like a deploy so it doesn't uh get compiled in there but yeah i don't know i i think i just hate that idea
Starting point is 01:17:25 because it's so anti the way I've always learned to do things. And I've had such a hard time even doing the things that I've learned to that it just like makes me madder to try and change it now. Well, from a more pragmatic point of view, you got other problems with that though,
Starting point is 01:17:38 because there's realistically, there's assumptions and I'm not saying they're good that many test runners have that they're going to look for tests in the name of what it's going to try to run. So you're going to have problems there. I mean, you could go in and point it to what – that's not going to be a showstopper, but I'm just saying from like an out-of-the-box perspective, there are many that want to look for, because they're not inspecting all of the code, looking for attributes on the code.
Starting point is 01:18:13 They're just saying like, hey, you got to point me at what the DLL is that you want me to go look at. And by default, I'm going to look for ones that include test in the name. So here was where my thought went, and this is why it even came up as something that I wanted to discuss,
Starting point is 01:18:28 is I had also done some Node.js stuff with some Angular in the past, and you typically put the test right there next to whatever it's testing, right? So you'd have like a spec file along with whatever you're doing. And the thing that I liked about it is it's almost a reminder that,
Starting point is 01:18:48 hey, you need one of these right here next to it. Like if it's off in another project, it's real easy to forget to set up a test for whatever you're trying to do. And I guess that's why. Or forget to maintain it. Right, right. And if it's right there next to it, it's almost like, hey, you can't ignore me, right? And that's, I really like that. And it's funny because if you go out and Google for it,
Starting point is 01:19:10 like, hey, should I put my test right next to what's being tested or should it be in another project? You'll see like, it's almost like flame wars, right? Like some people are, you never do that because you don't want that code to ship with your production stuff, even though you can figure out ways to get around that. And then there's other people that are like, no, you should totally do that so that you know exactly what's being tested and where, and that you do have a test. And so I thought that was, I kind of liked the idea of having it right next to it, just from the perspective of, okay, I know that I set it up, right? And i know that i need to maintain that i don't know yeah i think it's a good question to ask and a good thing to think about
Starting point is 01:19:51 like you don't want to go down the path of kind of group think of like this you know i put my tests in the new project because that's you know what the internet told me to do so i do think it's a good question to ask and i i you know i i definitely can think of a few cons but i could think of pros too. I don't really know. Maybe it's worth trying to do a next project like that and just kind of see how it turns out. I can't believe I flipped you that quickly. That's impressive.
Starting point is 01:20:17 Especially after you fell out of your chair almost at the beginning. It's like Neo in the Matrix. Hey, and I will tell you. So i don't remember which episode it was but all i did was go up to codingblocks.net and search for unit tests and i found the little template thing that outlaw had done previously and and i mean it's really helpful if you guys haven't actually seen it like it's it's a nice flow of how he's got it set up for his text his test fixtures and then all the stuff below it so i did actually use that so thank you for putting that code together welcome very cool so yep all right and then did you put the test in a separate project though
Starting point is 01:20:57 or no no it was right next to it by side no it was actually right next to it. And this ended up being painful for me because I've been screwing around with Visual Studio for Mac. And so I was trying to do my own thing. You can go in and create a new test project and it'll set up all your references and everything for you. And everything's dandy. But of course, I wanted to go the path of most pain. And I tried to include it next to it. And so I went into NuGet and I said, okay, give me the latest version of NUnit. Well, Mono with Mac with Visual Studio does not like the latest version of that.
Starting point is 01:21:36 And you have to go back to 2.6 point something. And so, yeah, like 45 minutes into it, I'm like, oh my God, it was just a version thing, right? Like, cause I kept trying to run it and I'm like, why into it i'm like oh my god it was just a version thing right like because i kept trying to run it i'm like why is this thing blowing up so yeah i mean that actually brings you know going back to your question though as i'm thinking about this you know it really depends on the the the language environment that you're in. So like in your Angular example, that makes a lot more sense than in a compiled language like a C Sharp would. Because then in that project, you got to include those other DLLs
Starting point is 01:22:17 that are going to be linked in that in your production app aren't necessary at all. And then as it relates, like you brought up in-unit, for example, as it relates to in-unit, depending on what your build server is going to be, you may need to include the in-unit, what's it called, the in-unit test adapter? Runner. Test runner adapter, something like that.
Starting point is 01:22:41 That's totally not even needed in your production app. So, I mean, even though you could get around, like, hey, you know that's totally not even needed in your production app so i mean even though you could get around like hey you know uh don't include this these files in the release or you know if def them out uh yep but that's still kind of it's dirty right yeah yeah mocking libraries if you have any sort of text files data files files that you use with testing, all that stuff, you have to exclude it somehow. Yeah, it sucks, right? The fact that that's even a thing, because now we're talking more about the way that particular frameworks are set up as opposed to what makes the most sense in terms of, you know yeah see it you know what uh joe just said kind of sparked a thought in my mind too because then like like i could see it making more sense if you were thinking about like like this
Starting point is 01:23:32 from like a c kind of um uh app that you're building that you know you could easily exclude code that you don't want in a particular flag, like debug versus release by if-def-ing it out, right? And in your makefile, you could do similar things to include or exclude which libraries you want. But then that's, one, that's kind of gross because if we go back to the 12-factor app, right, you're totally you're what you're debugging and testing versus what you're shipping which is not doesn't sound great at all right and then if we go back to you know something like a visual studio environment for say a dot net project like like C Sharp, you're typically not touching those solution files
Starting point is 01:24:26 or those project files to that type of specificity where you don't include this under this build or that. Yeah, that just sounds gross. Yeah, I agreed. I mean, it was just one of those things that came up, and I was like, man, it really makes a lot of sense for it to be beside it. But the way that the tooling and the builds are set up for like a.NET, it almost doesn't make sense. In a particular language environment, but it's not a one size fits all rule.
Starting point is 01:25:01 Right. I think is where I'm going to end up on it. Yeah. Yeah. So maybe it's just rule right and i i think is where i'm going to end up on it yeah yeah so maybe it's just insufficient tooling maybe that's gonna you know five years from now maybe it's gonna be doing like that again can you imagine back in the day and don't create a new project and everyone would just forget about it yeah it's i think things like that the reason why they work well in some environments is because there's a lot of things set up to look at names, right?
Starting point is 01:25:25 Like there's a lot of introspection. If it's got dot spec in the name, then you know that you're going to toss it out and not include in your bundle. Right. And I tooling's not there for.net. So yeah, I don't know.
Starting point is 01:25:37 Interesting. Just another random side thought I had. So no, that's a good one. All right. Well, that brings us to the end of our show.
Starting point is 01:25:46 We hope you guys have enjoyed this special episode. Be sure to subscribe to us on iTunes to learn more using your favorite podcast app.
Starting point is 01:25:55 Be sure to leave us a review if you haven't already. We would greatly super duper appreciate it. You can head to www.codingblocks.net slash review.
Starting point is 01:26:04 And if you have already left us a review just know that you definitely put a smile on our faces we super appreciate that we can't express it enough totally and while you're up there at codingblocks.net check out all our show notes examples discussions and more and send your feedback questions and rants to the Slack channel, codingbox.slack.com and you can find a form to invite yourself by going to codingbox.net slash slack. And follow us on Twitter at Codingbox or head over to
Starting point is 01:26:33 codingbox.net and find all our social links at the top of the page. Woohoo! I like how he changed his voice here. There's social links. It started off as an accident, but I thought it sounded so cool, I just kept going with it. It totally sounded.
Starting point is 01:26:51 I should talk about this all the time. Sean Connery. Totally, dude. Sean Connery. I didn't realize that's what you were trying to do. What? It wasn't obvious? Oh, it totally is now. The one person on the planet I would choose to be if I could be anybody other than myself. I'm going to stop the cam before this gets any weirder.
Starting point is 01:27:23 All right.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.