Coding Blocks - ASP.NET 5 – It’s Basically Java
Episode Date: March 30, 2015This week we give away Joe's stuff, we break up with IE8 like a big boy, Joe and Allen get excited about readme files, and we argue about which is worse: bad code or bad architecture. That and more in... this week's episode where we explore the new bits in ASP.NET 5.
Transcript
Discussion (0)
You're listening to Coding Blocks, episode 25.
Subscribe to us and leave us a review on iTunes, Stitcher, and more using your favorite podcast app.
And visit us at CodingBlocks.net where you can find show notes, examples, discussion, and more.
And send your feedback, questions, and rants to comments at CodingBlocks.net.
And follow us on Twitter at CodingBlocks or head to www.CodingBlocks.net
and find our other social links at the top of the page.
And this specific episode will be CodingBlocks.netodingblocks.net and find our other social links at the top of the page. And this specific episode will be codingblocks.net slash episode 25. And with that, welcome to Coding Blocks.
I'm Alan Underwood. I'm Joe Zack. And I'm Michael Outlaw. But first, this episode is sponsored by
Infragistics. Are you developing on any.NET, iOS, jQuery, HTML5, or Android platform and looking to
create your next application
quickly and easily? Infragistics' new sample application library allows you to launch or
download each app for a closer look. And in most apps, you can even get the source code for easy
modification and deployment. So what are you waiting for? Go to infragistics.com
slash sample dash applications and find your inspiration. All right. So I think Jay-Z has an update on our giveaway here.
Didn't we just – oh, my God, this was awesome.
What a great idea, dude.
Yep.
Yeah, we had a lot of fun with this one, actually.
It went way bigger than we thought.
We got some really cool comments.
We even had a little bit of poetry slam.
I didn't realize how many rappers listened to the show.
I know.
It's really amazing. What you got to do is you you gotta do some beatboxing while you
read the comments but you guys should go check them out if you hadn't read um so that was really
awesome i'm totally expecting like eminem's gonna jack one of these and where he's next yeah and
where you can find it is slash episode 24 so definitely go check it out uh there were some
great great ones that were left they were awesome yeah and some
great ideas too uh jorrit um was talking about possibly doing some sort of borrow book club
kind of thing which i thought was really cool but i'm way too lazy to get involved with and you know
really we we talked about it and the only real problem is enforcing that like what's to stop
somebody from just hanging on to the book and being like okay see you guys right i still got
some blockbuster videos in my closet, actually.
And we know how well they're doing.
It would be cool, though, if it did get passed around through the community.
That would be kind of awesome.
It would be awesome.
I mean, if you guys decided to maybe say,
hey, after a certain amount of time,
then whoever's next on the list pays for shipping
and then gets the book, right?
I mean, that's basically all we're doing at this point.
So I don't know.
Take it forward, however you want to do it, man. Yeah'd be it'd be awesome i don't care how it gets where i just
thought like when i forget who even suggested it i thought that was an awesome idea enjoy it and so
who's the winner uh the winner is jp so uh jp if you're listening send us your address at comments
at clothing blocks.net and we'll get that in the mail yep awesome and uh yeah you'll be able to see the the video of the their selection
yep that'll be on this episode at slash episode 25 so definitely go up there check that out um
and also we got some some more just fantastic reviews on both itunes and stitcher fortunately
stitcher was back up and so we were able to look at that we appreciate all these i mean there were
there were some really good ones that came in so thank you very much for taking the time to going up to
those places and leaving the review and if you haven't already please do by going to
www.cuttingblocks.net slash review yep and uh we wanted to call out the actual people who did it
too so uh this time we got jb loves me awesome name the occasional guru which i empathize with
the uh less often than not guru is uh my actual name on twitter but um it should be the daniel
podcast blast off ben e and commander woe yep thank you very much guys and and uh yeah so uh i i wanted i wanted to just mention i think we've talked about before how uh
you know i asked the question like when did chrome start to suck and at some point i think the guys
at mozilla got a little jealous and they were like hey we can make firefox suck as well so it
really feels like like now they all equally suck.
And maybe it's just time that they should follow Microsoft's lead and just scrap it and start all over with Chrome and Firefox.
Because I just, Firefox I've had problems with lately where like if I just leave it open too long, it just crashes.
So what happens with Chrome for you though?
I mean, just a bunch of little random things.
It's not like one in particular, but like, well, one that's been bothering me lately is just inconsistencies with Chrome across operating systems.
Okay, yeah.
That's been one nuisance. But I've had some other instances where like while I have the – I think even Joe mentioned this in one of the last episodes where if I have the developer tools open, you randomly will get like a, oops, I crashed.
Dude.
Although I fixed that by disabling browser link in Visual Studio.
So I noticed I was sending all sorts of crazy – my network panel was just going crazy with all these like arteries, signal arcs.
I like how you saved that for the show.
Yeah,
that's really good.
Yep.
Surprise jerk.
Yeah.
So we've all been struggling.
You know what else I've been having though,
where you're talking about having the developer tools open and this is in
Chrome specifically,
the developer tools just close like randomly.
So I'll be in the middle of debugging something and it just closed.
And I'm like,
really?
Come on.
Well, I haven't had that happen, but I, but like like i said like with where i've had problems with firefox here lately though is that like if i leave it open for too long i've noticed that it's just
it just it's unstable yeah it's frustrating i wish i wish the and i can't be the only one and
yeah yeah so yeah so with that though there was there was uh actually you know. Yeah. So. Yeah. So with that, though, there was actually, you know, what's today's day?
There was, you know, I think last week was the official six-year anniversary of IE8, whose marketing campaign was awesome.
And the days go slow, but the years go fast.
Yeah.
But there was a company uh put out this site i guess they
were trying to like you know pitch to the internet you know collectively hey guys we can do this
let's let's get rid of let's stop supporting ie8 let's get rid of it so there's this great site
called breakup with ie8.com if you haven't um, heard about it or read anything on it, there are just
some awesome things in there. So the idea was that, uh, you would tweet your breakup message.
So like, you know, treat it like a girlfriend. So rather than doing this in person, this is,
you know, modern day. So you just tweet your breakup and, and some of the breakup messages
were hilarious. Like, uh, one of the top ones the top ones is that I'm leaving you because at least five of your action bars are not mine.
And another one of my favorites, though, which in light of what I was just talking about with Mozilla, one of my favorites was, look, I was only using you to get to Firefox.
And that's probably true in a lot of cases.
It's so true.
You know what's really frustrating, though?
The only reason IE8 still exists is because all the companies out there that will only support ie8 like there's a lot
of major corporations that are like internally they say hey you can only use this one and that's
the only reason i believe it even still exists well you say that but actually um there's been
a recent uptick in windows or ieE8 usage that people, you know, like administrators and whatnot across the Internet have noticed that like, hey, why are we all of a sudden like we've seen this downward trend in IE8 usage and suddenly there's this random spike and, you know, bots.
No, it's not a bot.
It's coming from IE8.
That's weird. Yeah. So, like, at first, when I first noticed it, it was around, you know, November timeframe.
So, you know, around the shopping, you know, the beginning of the shopping holiday season.
And the joke was that, like, you know, all the grandmothers are booting up their computer for the first time this year.
And, you know, there's...
That's the internet button.
That might actually be what it was.
Right?
But it's kind of continued, though.
Like, that tick, you know, just kind of stayed there, right?
Yeah, well, you guys know why it's still around anyway,
why the enterprises are sticking on it.
It's because crappy developers like me
have developed all these apps over the years
that rely on all sorts of garbage,
like, you know, ActiveX and stuff like that. And then now, now like no one wants to maintain them and they don't want to change them
because they're all kind of somewhat working so the businesses just kind of stay on them because
they're stuck with these legacy products that would be extremely expensive to rewrite yep yeah
um and before we get in today's topic which is you know the v next stuff uh a couple things first uh pump forgettable hit
us up right before before the show on twitter you know like awesome a new episode coming out
oh man it's about dot net so hey hang around anyways even if you're not dot net guys we
always have something either mildly entertaining or somewhat useful i think all those cross-platform
java guys will beat might find this one interesting.
Yeah, this one's actually exciting.
Not because we're.NET fanboys necessarily,
but because it just really is exciting for coming into the cross-platform world.
Yeah, really.
You know, ASP.5, what this means is it's good stuff for us C-sharp developers.
It's awesome stuff for you Java developers
because you don't have to do Java anymore.
You don't have to.
Oh, awesome.
Well, we'll get to the topic V-next, but for now...
Yeah, and so I have one other topic.
So we get a lot of emails from people asking about,
you know, hey, what are kinds of things
that I need to look out for when programming
or, you know, when I get started down this path,
what are the kind of things? Well, I actually had a topic come up with a good friend of mine
and somebody I actually respect, but we kind of had a debate on this topic and it actually made
me want to crush my phone. Oh God, here come the flame wars. So here's what the argument was.
It was about white space, wasn't it? Oh, man. No, this wasn't white space.
And this person will go unnamed for right now.
But here's what it was.
Would you rather have bad architecture or bad code?
Now.
Wait a minute.
Can I pick neither?
Now.
Is that an option?
So here's where this gets frustrating for me is this is on a new project.
Okay.
On a somewhat new project so would you rather
deal with bad architecture or bad code on great architecture code because the good code's gonna
end up bad after a couple weeks of iterations i'd say my pick here is that if i had to pick
between a bad architecture or bad code i would rather deal with bad code agreed because
architecture is far more difficult to change bad code you can at least start refactoring over time
and and the that cost that it takes to do to implement that at least i feel like that's a
smaller cost than just really bad architecture because sometimes if the architecture is really really bad like you might be talking like a complete rewrite we'll see and that's a smaller cost than just really bad architecture. Because sometimes if the architecture is really, really bad,
like you might be talking like a complete rewrite.
Well, see, and that's where my problem is.
So the particular issue we were discussing,
because of the architecture itself and because it wasn't done right
when the opportunity was there,
the problem is it doesn't matter what amount of code you put on top of it,
you can't fix the problem. You can put on top of it you can't fix the
problem you can hide it mostly but you can't fix let me let me put this to you into a different way
though okay bad architecture versus good or bad code because every java developer they're going
to tell you like if you picked c sharp as your architecture then you already doesn't matter how
pretty that that c sharp code is it's wrong's bad architecture. So you already have started wrong.
So now you're going to have to redo everything in Java, right, in order to get to a good architecture.
And vice versa, right?
Like people that are looking at Java, they're like, wait, why didn't you do that in C Sharp?
Now, that's not the example I was thinking of when I was talking about like, you know, you might have to.
But it certainly does help illustrate the point in a comical way.
But I guess one of my things is this.
So when I talk about bad architecture, I guess if we lay it out real quick,
and I don't want to belabor this too long,
but it was just the kind of conversation that comes up
when you're working on this kind of stuff.
I feel like we're all, like, one of us has to pick bad,
I'm going to pick bad architecture.
Oh, I will totally do it.
Just to argue this out.
Yeah, I'm totally on the side of bad architecture.
So when I say...
Oh, really? I thought you said bad code.
No, I decided to play devil's advocate,
and now I've actually figured out
if you actually have good code,
then it should be trivial to swap out the architecture.
If you've got enough interfaces,
you can do anything.
So check this out, but here's where my problem is.
The bad architecture we were discussing
was the lack of data.
So what I mean is, if you don't have data to support something,
so for instance, let's say that you take-
And it's not something that you could reverse engineer.
Correct.
And it's not something that you could go back in after the fact.
If you missed, there's an opportunity cost there.
And if you missed the opportunity to capture that data,
then that opportunity is gone forever, never to be recaptured.
And that's the architecture I'm talking about.
So you can argue all day long, should you do N-tier application or whatever.
I'm not talking about that type of architecture.
I'm talking about you made a decision at some point in time to where you were not collecting a key pertinent piece of data that you need.
And so now, in my opinion—
Does that count as architecture, though? Would you count that as architecture?
It is, right? If you set it up, if you have
your data design set up that way to where
you're not... I guess now we're kind of like, you know, muddy in the
lines with like, kind of data architecture.
Well, it's all part of an application,
right? But here's my key.
This is my take on this
is
at that point
because you missed that data, as michael put you've lost that opportunity
it's gone no amount of code i don't care how beautiful it is i don't care how solid it is i
don't care anything about it you cannot recreate what is lost and so what he talked about is well
he'd rather have um good code because you can use the facade pattern to hide bad architecture.
The problem is you can hide bad architecture, but you can't make data up.
You can't make things up that aren't there.
Yeah, and that's why I worded it as like opportunity cost.
Yeah, and so that's my problem.
Because that pretty much sums it up.
So my feeling is if you're working on a project and there's ever a discussion of let's skip this if it's at the opportunity cost
of losing data that you then have to try and recreate out of thin air you've lost that's that's
my opinion that's my take on it and this is this is just i'm waiting on java boy over here to speak
up with his architecture uh argument i got lost on the a word i kind of want to do an episode now
um just so i can research it on uh what architecture actually is and what architects actually do.
Oh, okay.
A lot of times you see architecture rules, and really they're just coding rules.
But I have a feeling there's some well-defined parameters there that it would be nice to kind of exfoliate.
I think it depends on the shop.
It could also be just documentation boy or girl.
Well, a lot of times it's what systems are big.
It's such a wide variety of things that it encompasses, right?
Like what technology stack or how many tiers are you doing
or how many layers.
Architecture encompasses so much that you could basically tailor it
to whatever you want it to be.
So am I drawing boxes all day then?
Am I going to meetings?
Potentially, yeah.
I mean, it's a little bit of both, right?
I think it depends on how big the company is.
The larger the company, then you're probably doing less hands-on.
Right.
With a title architect.
Or the number of resources you have.
Smaller company with a title architect, you're probably like, you know,
there's probably not a lot of difference between you and the guy coding next to you.
So it may not even be the large company.
It's how many resources are on your team, right?
Because you could have a huge company with a small team. Or you could have a, you know, I think's how many resources are on your team, right? Because you could have a huge company with a small team,
or you could have a, you know,
I think it depends on the size of your team, right?
Like an architect over a team of 50 people will probably be doing.
Size matters.
That's the takeaway.
Okay.
So what do you want to talk about VNEXT?
All right.
So yeah.
All right.
Let's move on here.
So at any rate, yes, VNEXT, let's get into this.
Alright, so you guys have probably heard about VNEXT if you are a.NET developer or just not living under a rock.
And so I wanted to kind of talk a little bit about VNEXT or ASP.5.
And first I wanted to give you a picture of kind of what the goals were, what the high-level view of ASP.5 is.
And we broke it down here into like seven or so kind of things.
And the first is that it's faster.
It's more performant.
It's also much simpler.
And I don't really care about those, but it's much more flexible,
which we'll explain in a little bit.
None of those are the exciting one.
Yep.
Here's the exciting one.
It's more cloud-friendly.
No, I'm pretty sure that's not it either.
That's not it.
We'll tell you what that means too.
Yep.
All right.
Now we're getting to the actual good ones.
It's cross-platform.
Woo-hoo!
No, no, that's not it either.
Oh, come on.
That's the only one I really care about.
What?
Yeah.
That's not it.
Yeah, that's it. Open source? No, no. Come on, that's the only one I really care about. What? Yeah. That's not it. Yeah. That's it.
Open source?
No.
No.
Come on.
That's kind of cool.
No.
And the last bullet here basically just says that it's MoBetter.
MoBetter.
Now, I was pretty sure that they just wanted to use everything else that's kind of been
used out there in the open source world, and they wanted to just suck that in and be part
of it, too.
So, you think it's more consistent with like um kind
of normal patterns well i was actually trying to you know be funny about it uh about a point that
i was going to make later about like all the different uh tools that are used as part of it
that uh but but you know to your point they did go out and you well not go out but they they did
take in like best practices that other communities were using,
like Rails or Node or Java or whatever,
and take some of those best practices and incorporate it into it.
But that's actually not what I was trying to make a joke about.
Thanks for ruining that.
So more consistent with reality.
I like it.
All right.
And the improvements lie in kind of two major areas,
which we're going to dive into right now.
And the first are runtime improvements.
All right. So I guess the first one that we want to talk about is the fact that the MVC and the Web API have been unified into a single programming model,
which is cool because, you know, previously you had to bring them in separately.
They have their own pass or own, you know,
things or the routing that you had to manage.
Yeah, and they were so similar.
That's what kind of got me.
It's like they felt like two halves of the same coin or sides.
Well, they were actually, they were independently,
well, not independently,
they were completely different paths
where they had to recreate a lot of functionality.
And then that's where confusion came from if you were using one or the other or both.
We were like, well, hey, I know in this other one I could do X, Y, and Z, but why isn't this working over here?
And that's why.
Gotcha.
So they weren't – it wasn't like one was – it's not like WebAPI was built on top of MVC or vice versa.
They went down completely different architectural paths.
So I'm glad this one's there,
but I'm not too excited
because I kind of feel like it should have been that way anyway.
Yeah, well, this is all part of the MVC 6 redo
where it's like unifying all that.
So now they're all together.
Yep, and MVC 6 does require ASP 5.
So there's some numbers
for you. Alright.
Yeah, so actually, MVC6
does bring in together MVC, WebAPI,
and webpages. I don't know if we mentioned that one.
No, we have not. So,
it's all three of those now.
Yep, so I would categorize this
change as making it simpler.
Yeah, I would agree with that.
I would categorize that as making it simpler. Yeah, I would agree with that. I would categorize that
as making it boring.
Outlaw's going to be the excited one.
Alright, the next one
is a no-compile developer experience.
And this one's kind of cool,
and we're going to talk a little bit about it.
So, essentially what they're saying is
it's almost like an interpreted language
if you're coding. Now, here's the only caveat that I found is
it's if you're in Visual Studio so essentially what they've got is Visual
Studios using the Roslyn compiler to enable dynamic compilation so as you
save a file it's compiling this stuff behind the scenes so the next time you
go to refresh your page or something it looks like it you know is working like an interpreted language even though it just
compiled it for you behind the scenes but it does make it a nicer experience so you're not always
going in and running build and then going back to your web page and doing that kind of stuff so
um but it does say it is visual studio integration with roslyn so and it's kind of funny to think
before you know it was always kind of the way of things i never really thought about it but it is Visual Studio integration with Roslyn. And it's kind of funny to think before, you know,
it was always kind of the way of things,
so I never really thought about it.
But it is kind of silly to, like, generate these, you know,
these DLLs, which are then loaded into memory immediately.
It's like, hey, why not skip the middleman
and just kind of shove that straight in memory?
Well, it was also more frustrating than that
because it was, like, halfway done.
Like, if you were working on something that was, you know, front-end,
so it was in, like, your ASP or csh html page like then you you didn't have to compile but if it was
in a cs file right a c sharp file then you'd have to compile so it was kind of like oh man this is
like oh i forgot i was actually not in the front end code so yeah so i haven't tried this yet but
i think it'd be really quick.
I mean, C Sharp is kind of jitted anyway,
so as long as it can keep those compile times quick,
then this should be really awesome.
Yep.
Who's got the next one?
I think we should be careful about making jit a verb.
It was just in time for those of you who are not aware of what he was talking about.
Sorry.
Yeah.
And I would classify this change in no compiler developer experience as making it faster.
Well, except for like every PHP developer is like, wait, wait.
Yeah.
Yeah.
You didn't already have that? Wow.
Next one is environment-based configuration,
which actually there's a couple different ways
that you can get configurations now.
What that means is rather than kind of having
this one web config file to kind of rule over things
where you can get your key value pairs for basic settings,
you can now get them from a variety of places,
including a JSON file.
Like machine config.
Yes, or machine config or environment. I was making a joke. Well of places, including a JSON file. Like machine config. Yes, or machine config or environment.
I was making a joke.
Well, yeah, it works, though.
Well, that's the same thing as your web config.
Right.
It is.
But you'd use the machine config if you didn't want to have to transfer it around as part of your project, right?
Yeah.
But I don't even know how to change things in machine like via script or something well i know in like the java world i can set all sorts of you know it's kind of common to kind of set like catalina
variables or just you know environment variables for your application well the machine config sets
defaults and then you you can start overriding well that's in windows right now here's here's
another thing this is cross platform windows right that's a big deal so so i don't know if you
finished so you got json files xml files files you can do in addition to your web config,
but also environment variables.
Can I do an I&I?
I don't know why anybody would.
So it makes me wonder what you just said with the Catalina properties
and that kind of stuff.
You can set environment variables in Linux fairly easily in OSX.
So I wonder if that's going to tie in seamlessly.
You can totally do it easily in Windows too.
You just kind of like open up Explorer,
right-click on my computer, go to properties.
Environment variables, advanced.
Go to advanced system variables.
Man, if you're a PowerShell,
it's probably got like a set path variable.
But I also see this as kind of being tied
into like the Docker future that we hear
coming from Microsoft.
So they are working on some sort of
Docker Windows implementation.
And I know Docker for Linux kind of specifically relies on,
or it doesn't rely on, but it plays really nicely
with environment variables.
Coolness.
So we'll see how that goes.
Yeah, here is one of my favorites,
is that DI out of the box is a big part of the next version of visual studio and asp.net
yeah and this is interesting so now we've got microsoft.framer.dependency injection um so new
name is base and they say it's really minimalistic and i try to do a little bit of reading to see
kind of you know what they were going for here and um it's as far as i could tell it's basically
just the generic reasons why you normally want dependency injection which is kind of what they were going for here. And as far as I could tell, it was basically just the generic reasons
why you'd normally want dependency injection,
which is kind of separation concerns and testing.
But the reason why I like this one so much, though,
is that because this is a very good practice, right,
that is now going to be core to the environment.
Like dependency injection is a good practice.
Why are you rolling your eyes? I'm not rolling my eyes i'm thinking so there's there's arguments on both sides of heat is that
what it was no there's arguments on both sides of it right like you'll see some people say that if
you get your dependency injection stuff that like it's having to new up those objects for you every
single time right if you don't use it in your code there's a performance hit on that so it it
boils down to what you're trying to use so when you say it's a good practice i agree to a certain
extent um but on the flip side if you're writing something that's just based purely off performance
and you don't want to new up a bunch of objects that need to be garbage collected later then that
may not be the route to go so i guess i I just didn't want the overall statement to be like.
Yeah, but again, we're talking about an ASP.NET app,
and you're talking about for performance.
So now you're only going to wire in those services that you want, right?
We might.
But I guess that's what I'm saying.
If you start going crazy and you have a bunch of dependencies in there,
you can start getting bloated.
Then you're,
then,
then your apps bloated and you're no longer performing anyway.
So you have other problems.
Right.
That's what I'm saying.
Like if you're talking about from a performance point of view,
this is still awesome because you can still,
you can still only wire in the pieces that you want.
And now you allow someone else to be able to replace those as needed in the
future.
So I,
my only point is that I think that dependency injection in general is not a bad practice,
let's put it that way.
And the fact that it's now wired in as a core component to your ASP.NET 5 app, I think is a good thing.
Yeah, no, I agree. net five you know app i think is a good thing yeah no i agree right now i know like i think it was uh
when is it fowler it famously has a discussion on why dependency injection is crap is bad yeah
and we brought it up on one of the previous episodes we did yeah i've definitely done some
dirty things with an inject well that's so bringing that up that's actually really cool so they have
their baked in one that they said is a fairly simple um container that they have um but they said
it's easy to swap in your ninja eggs and those things as well so yeah structure map whatever
that but and then again you know i like i said i'm not it doesn't matter that there's a minimalist
it's just the fact that it's now core to it yeah um and then this is where all the java guys are
be like well we had spring for you know ever right so congratulations since the fall okay yeah all right so moving on to that ah
everything is new get it and that's actually really kind of cool so one of the cool pieces
about aspv next is instead of having like everything you really only have to include
what you need well that depends though depends on what you're targeting right yes
if you're doing if you're targeting for full clr then that's not a true statement yes if you're
doing the new um watered down core uh then at that point everything's like a new get package
that you bring in and and it's really kind of cool because when you're going to include these
you have intellisense so that when you're trying to include something, it will automatically link into the NuGet library.
And it will even do versioning, which is really nice.
So I guess I kind of skipped ahead then by that statement.
So just for clarification, there are now going to be three different runtimes that this is supporting, right?
One is the full.NET CLR.
This is the CLR that you've come to know and love,
unless you're a Java developer.
And this is the one you're used to.
Everything is there.
It's all in the GAC.
And you have hell with the GAC.
Yes.
They tried to solve the DLL hell problem,
and I guess it didn't happen.
It didn't really happen.
Now, so then there's the core CLR,
also known as the cloud-optimized runtime,
and this is the version that you're talking about, Alan,
where you only get the things that you specifically request,
and they are brought in as NuGet packages.
So, for example, if you want, I don't know, give me something.
You know, if you want NBC, you got to bring it in, right?
You're not getting any of those types that you're used to getting for free,
like, I don't know, list or generics or, you know, whatever.
All of it, yeah.
You're not getting those for free now.
You have to include the library and then bring it in,
which, I mean, some will argue that it makes things a little bit more complicated,
but it also keeps your app a lot more lightweight, right?
Yeah, and it also keeps it all together,
because that means you can copy the whole folder.
You don't have to worry about the GAC.
Now we're totally skipping ahead.
You don't have to worry about what's installed, what's not.
And I think that's another kind of move towards this Docker-fied future.
Right.
So, again, if you're doing the core CLR, then you can install that CLR side-by-side with your app.
So now you don't have to worry about system-wide.NET updates affecting your application.
It's awesome.
And that's key.
You can update each application independently as needed.
And you may not even ever have to update those applications.
That's really the key, right?
Like you can have three versions.
Well, I'm not going to say that, though.
I mean, security hacks, they happen all the time.
Security.
So you're going to have to update your.NET version.
But it doesn't affect any of the others.
And I guess that was the key, right?
Like if you have 10 applications on there, one's running 4.5, one's running 4.5.
The scenario that you've got to worry about is is that like and and i'm sure developers around the world have
been in this scenario where there's some legacy app that the original you know contractor that
wrote it 10 years ago has left and this thing is still running and nobody quite knows how it works
but it still gets the job done but we can can't change anything on that system because this mission-critical app is still needed.
And it's the only app on that server.
Yeah.
So now when someone says, well, hey, but it's running on.NET 2.0.
We need to upgrade that.
There's all kinds of security patches out there, right?
That's problematic in that scenario.
Now going forward forward though,
with this one, because the.NET version can be installed side by side with the app,
it's no longer an issue. You can update only the apps that you want to update.
Yeah, it's all sandboxed, which is excellent.
So just to wrap up the different runtimes, the third one is the cross-platform CLR. Now, let me put an asterisk on that, okay?
Because technically Microsoft hasn't developed this yet.
They said the preview's coming out soon.
I believe them.
I actually do in this case because this is probably a huge selling point.
And if they fall flat...
Here's why I believe them.
This is not your daddy's Microsoft.
That's a good point. All Microsoft. That's a good point.
All right?
That's a good point.
The Microsoft.
This bummer is my daddy?
The Microsoft right now.
The Microsoft right now.
This is not the Microsoft that we grew up with, that we knew, right?
That used to always be, well, it's got to run on Microsoft.
It's got to support this Microsoft-specific platform.
They are way more open about things that they're doing now and supporting.
And it's because they were forced into it.
It's not because they chose to.
They wanted to.
They would love to have their monopoly back if they could.
There's a whole consistent with reality thing.
Yeah, exactly.
So I have no doubt that they will because, and here's the reason why,
because right now the cross-platform comes at the cost of relying on mono.
So there's no way that you're going to convince me that Microsoft would want to be beholden to someone else reverse engineering their APIs so that it could run on Linux or OS X.
So I suspect that they will come out with one, but it's just a matter of when.
Yep.
Just real quick, I wanted to wrap up.
We talked about NuGet.
We kind of went off on a tangent there,
but I wanted to mention that because of NuGet,
it's really easy to kind of specify your version
in a file there.
So if you want to say, you know,
I'm fine with anything, then you can do that.
Or if you want to set a specific version,
you can configure that as well.
So that's really nice.
All done through IntelliSense.
If you're in visual studio.
So man,
we were skipping all around.
Cause one point I wanted to wrap up with,
with the cross platform was that if you caught what I was saying,
that means that there's the flexibility to be able to swap out CLRs.
Right.
Right.
CLR vendors,
right?
Java has had this for a while.
If you back
IBM would have their own version of
their runtime. Oracle had their own version.
It was like
whoever you want to use. Wasn't that
the whole lawsuit between Google and Oracle?
Was that Oracle
was claiming that they had
reinvented it? Maybe I'm remembering that one wrong.
I know they got sued for using Java without paying licensing fees,
but I don't remember how deep that went.
I thought it was because they reconstructed.
Or they were accused of reconstructing it.
But, yeah, that is cool because you could really, because it's open source,
you could basically take the CLR and make your own, fork it, do something.
It's not that I'm going to, but it's cool.
No, no, I'm not. Well, but, I mean, I something. It's not that I'm gonna, but it's cool.
Well, but I mean,
I guess where I'm thinking about this, though,
is that maybe you have some specific use case, right?
So one of the cool things that's actually come out is that, and by come out,
I mean that people have done,
announcements that have been made,
is that someone actually had this thing
running on Raspberry Pi.
That's really cool.
Yeah, that is awesome.
So what if you wanted to make your own CLR
that was optimized for some kind of small
Internet of Things type device, right?
And maybe you want to make the instruction set
as small and as simple as possible, right?
Then that's a reason why.
So embedded programming.
Yeah.
And you don't want to, for whatever reason,
maybe because of bureaucracy, maybe Microsoft's too slow to move forward or whatever.
And you're like, you know what?
We got this.
We can do it on our own.
We're going to release the mini.net CLR.
That is kind of cool if you think about it because most of distributed or embedded type devices right now run Javaava because it was you know easy to do that
kind of stuff so now you might actually see dot net things running on like you said the internet
of things my router might be running asp that's kind of cool right here's another idea just
brainstorming things off the top but like um what's that what's the android phone that uh
oh shoot that that was uh secure like everything about it was secure. Oh, man. Did it ever get popular?
I know they were working on it.
What was it called?
Something black.
The black, yeah, something.
But what if you wanted to have a secure CLR
where everything about it was,
anything that was written to memory
was going to be encrypted?
I don't know how you would do this.
I'm not claiming to be the cryptography security expert to do that.
But I'm just brainstorming ideas why it might be valuable to have others developing the CLR.
Yeah, and it was the black phone is what it was called.
So we'll leave a link in the show notes.
So if you have like for ATM purposes and you're like this other company developed the secure.net clr where
nothing is written in the clear whether it be to mem in memory whether it be to disk whatever it
is cool yeah i mean it opens up a world of possibilities and it might actually spread
dot net a little bit more right which i mean i would be a fan of and also my favorite part is
just cheaper hosting oh no doubt right, a couple extra dollars a month.
Throw it on a Linux box.
Oh, man, it's beautiful.
I can't wait.
The next one was you can run in IIS or you can run self-hosted in your own process.
That's beautiful because previously you were tied to a Windows machine.
We've already mentioned that it's going to be cross-platform,
which means that it needs to be able to run in another process other than IIS
because it doesn't exist on OS X and Linux and all that.
So that's excellent.
I mean, you can literally have your self-deploying application that you just run.
No IIS.
I, for one, will not miss IIS.
I kind of like IIS, but whatever.
I feel like right-clicking, I guess.
One thing that I haven't looked into this, though, because the self-hosted one that comes with that you would run on a Windows is, maybe for obvious reasons, not the same one that you would run on OS X, for example.
Right.
So those are built off of – I think the self-hosted one for Windows is built off of HTTP Sys.
And I forget what the one for OS X is based off of.
But basically in your config, one will be called web and then for OS X it will be called test role that you're going to run to execute that.
But I wonder if you – it may already be plugg for this, and I haven't taken the time to investigate, but, like, if you could, maybe in the future, if there's an Apache version or an Nginx version, you know, that you'd be able to specify, like, hey, I want to run on this particular, I imagine that that would be coming, but I have no idea.
It's awesome you brought that up, because one of the things that's key about this is supposedly the HTTP process is supposed to be a lot faster on this because you can kind of pick and choose what goes into it,
and I'm probably jumping ahead again.
Because there's so much exciting things to talk about.
What I'm curious about is, you know,
as soon as Nginx came out,
benchmarks galore of how it destroys Apache.
And, you know, LightHttpd, also same thing.
Like, I'm wondering how this is going to stack up against
those in their own lightweight processes so i don't know i'm really kind of excited to see how
this goes because again to joe's point this could be much cheaper hosting right you're not having to
run windows to run your website which cuts your cost tremendously oh yeah um could be huge and
but you can code it in C sharp.
Is that the best of?
Yep. That's awesome.
I actually just bought dollarhosting.net, so I'm ready.
And if you didn't, it's gone now.
Yeah.
Although, you know, if you go to our site, there is some, you know,
inexpensive.net hosting that you could, you know, use.
You just click on that link and, you know, foral and there you go. That is a good point.
Alright, so our next one is the project structure, right?
Yep, so that's kind of the second part. So first we talked about run time
and basically the kind of changes that were involved there.
But these are the ones that are coming up that are going to affect my day-to-day life.
So I'm excited about this. These are the things that actually change what I do.
I'm going to blow your mind here.
Mind blown.
Do you know the most exciting?
Wait.
Before I say it, go ahead and intro what is different about this structure.
We'll go slowly.
It's JSON-based, right?
You're going too slow for me.
My excitement level is waning.
There's a Kpro K project file now.
K stands for Katana.
No, it doesn't.
No, it doesn't.
Project Katana, it's related.
No, it's not.
The K, from everything I've heard, the K has nothing to do with Katana.
That's just coincidental.
Okay, what's that have to do with it?
I'm pretty sure, well, at least in my mind...
I just won that argument.
No.
Actually, I honestly have heard it wasn't Katana, but I could be wrong.
I'm willing.
Hey, you know what, dear listener?
Please write in, prove me wrong, leave some comments on the site, email some feedback, tweet us, whatever you prefer to to you know pound me you know if you want it to be public then twitter or uh feedback on the on the site but i'm pretty sure
like from what i heard what i read it was not katana but what i like to believe the reason why
because everything about this now is is going to be k so there's the um kvm the uh you're going to run commands you do k and then run
or k build or k whatever what i like to think is that whoever was in charge of the project
he or she had a name that began with k kenny keith whatever it might be
and when they weren't working at Microsoft, Kiefer,
their rapper pseudonym,
Get on the ground!
Their rapper pseudonym was Special K,
and this is in reference to them.
So, yo, make it real, Special K!
Very nice.
And yeah, let us know what the K means,
and we're not talking about clustering.
Donuts?
All right, so Project is a JSONson file i'm actually excited about that because i don't like the project files as are yep but the reason i'm excited about it has nothing to do with
it about it being json it's the fact that you don't have every single file in there right i mean let
me skip ahead before you guys steal mine you were about to read mine you're about to steal it that's
what you get for
disagreeing with me about the case no way man the most exciting thing about this no more merge
conflicts no more cs proj merge conflicts because you and three other guys all made a change to it
to add a new files and now gets like wait a minute one of these has to go man it's so killer like
instead of all your files listed,
which is why our merge conflicts come in play,
you can literally say, hey, include star.cs.
Have you ever been in a situation
where you actually had to read line by line a csproj file?
It's horrible.
And everything's GUID-based,
and then it's like a file is set to a GUID value,
and then that GUID value is included in as another GUID value.
Before you realize it, you're like three or four GUID level references deep,
and you're like, wait a minute.
What GUID was this again?
What did this mean?
Dude, that is the worst.
So now this is where all the Java guys are going to go,
wait a minute, we already have that.
Yeah, yeah.
Because now the project structure is going to be, wait a minute, we already have that. Because now the project structure
is going to be like whatever, it's file system
based. If it's in that folder,
we'll take it, we'll compile it.
You might not admit it, but we're going to do it.
But you can exclude
those. You can exclude items if you want.
You can exclude files, you can exclude folders,
you can include asterisk
files. It is
the way that you would expect things
would work in a sane world yes so it's about time no more like right click add to project
include existing how in the world did it take this long to do this that like seriously why
has this been like this for this long i think someone there really likes guids you know what
it is there's probably probably someone at Microsoft who's
getting royalty checks off of GUID
generators.
They came up with the
intellectual capital on how to
do it. They have the patent on
it. Every time someone uses it, they get
some money.
That's just my guess. What's the
solution folder source thing? That's what we
just talked about. Well, it's a little bit different.
There's basically a source folder where all your kind of source code goes,
and there's other folders for things like static content and stuff like that.
So, cool.
So now, like we say on that, but now it's like,
didn't we exactly go against this exact thing in Java a few episodes,
many episodes back about how you had to go like 18,000
directories deep. Because, you know,
you're into your source, www.com.
com.com.com.
You know, company.subdomain.project.
It looks like your folder structure stays the same
for your solution. It's just the management
of those assets now
is easier. Yeah, and so
I do like this. it also um makes it
easier to say like only serve stuff out of this folder and not necessarily the project root which
you know has your config files and stuff i mean think think about applications right now where
you do builds and it generates all these files and then all of a sudden you go to do a web deploy
and those files aren't there and it chokes about it like Like, you can easily manage that now. Oh, yes. Oh, yes. It's going to be beautiful.
All right.
Like, get ignore just got a lot easier.
Seriously, it's going to match your project file just about.
Yep.
And there are ways to, like, exclude files and things like that,
but I don't see that happening a whole lot.
Nah, just include it.
Anything, anything, I'll tell you how we'll exclude stuff.
We'll just comment it out.
Yeah.
We'll just comment out that file.
Let it compile.
It'll compile to nothing.
Control K, C.
Please don't do this.
All right.
We have a dependency folder for packages.
Yeah, it's the next couple words that scare me on this one, though.
So I get dependency folders.
You know, I get the whole packages directory.
It's kind of invisible now in Visual Studio.
But they're talking about actually having that show up.
But what scares me is NPM and Bower.
So they're talking about different kinds of package managers.
And, you know, this is a good thing.
Just, you know, I know those are JavaScript related.
Oh, man.
This is actually one of the things that I thought was kind of humorous about this.
And this is where I was talking about earlier.
You know, I don't even remember what the reference was,
but I was talking about like a comment that I had that was coming up was that,
oh, when I was talking about like them bringing in everything, you know,
that standard tools that other communities are using.
Because now it's like, oh, you want some package managers?
Oh, well, you better be careful what you ask for because we're going to bring you some
package managers.
Yeah.
And this is a really good thing.
You know, like who's doing websites now without JavaScript, right?
So you're probably using, you know, some sort of package management on that side anyway.
But now you just don't have to kind of go out of your way or install plugins or do
any weird stuff. It's just built in for you.
Yeah, so not only do you have Nougat
to worry about, now you've got NPM, you've got
Bower, you've got Grunt. I mean, you've got
your package managers to deal with.
Well, Grunt's a task runner. Okay, fair
enough. Sorry.
Yeah, but
at least they're moving into the next century, right?
They're not depending on postbacks anymore.
You can actually have JavaScript stuff.
There's Chocolatey and OneGate.
Don't forget those.
Oh, man.
All right.
Static files in the wwwroot folder.
Pretty cool.
Yes.
Super excited about that, apparently.
Yeah.
Sounds like.
So this one's brought to you by NPR.
So there's static files in the www.brute folder.
How do you feel about that, Joe?
I'm slightly more excited about command line scaffolding.
All right.
Let's hear about it.
Scaffolding is kind of cool for demos, uh i don't know many people that really use it
you know my next one is way more interesting than that i don't know scaffolding is useful
in the beginning but it's like how long until some project has some sort of weird quirk that
doesn't let you really use scaffolding it always happens like it's like day two but hold up that's
one of the beauties of c sharp that we've pointed out before though is you can have the partial
classes right so as long as your scaffolding builds partial classes, then maybe you can read Genome all the time, right?
I think it generates HTML and all sorts of stuff.
It's kind of like the whole Ruby blog in 10 minutes thing from 15 years ago.
Gotcha.
So that's cool.
The next one, though, is about to blow your mind.
I don't like it.
They're bringing – hold on now now they're bringing readmes into the now i like readmes but it's got the wrong file extension it's an html file yeah it
should be a dot md i don't even know why what do you guys put this one in there i think that that
was probably copied and pasted from somewhere i don't even know like really who why what do you guys put this one in there i think that that was probably copied and pasted from somewhere
i don't even know like really who why what do you guys put this in here to talk about and this is
like of everything in here this one's probably the least oh come on you're not excited about that no
i don't know if you recognize by my sarcasm well actually i do like this because like in
my github projects i tend to put a readme file
because I want it to show up in GitHub correctly.
But now it's like this weird readme.md file
that's mixed in with C Sharp files,
which I don't like.
Yeah, it's your markdown file.
Yeah.
But now it's going to be your HTML file.
And it's going to be at a higher level
than my source code.
Yeah, I don't know.
It's pretty cool.
Yeah, that's pretty lame.
Nobody's really excited about that
you gotta read me by default this is this one a this is not exciting
okay i mean if they were going to do this then i agree it should have been a markdown file not
an html file but you can whizzy wig it you just haven't seen a good readme file that's what i've
written some good readme files but i did it in markdown not html
this is crazy i don't even know why what do you guys put this in here you can have your build
instructions inside of your project what do you put this in here should feel bad you're a bad
person and you should feel bad i think outlaw did it actually blame yep get blame is that what you
said yeah i don't think that's available in the google doc that's fantastic awesome all right well
let's take a moment here because you know we've said this before but uh you know to everyone who
has already taken the time to leave us a review on itunes and uh or stitcher and you know all that
we really appreciate it it means a lot to us and if you haven't we would really appreciate it. It means a lot to us. And if you haven't, we would greatly appreciate it if
you would. You can go
to www.codingbox.net
slash review. Review or
reviews.
And pick your
platform of choice and
you can go there to leave us
a review. Like I said, it really means a lot
to us. It helps other people to find us.
So it adds to the credibility and it really means a review. Like I said, it really means a lot to us. It helps other people to find us. So, you know, it adds to the credibility and it really means a lot. And spread the word,
you know, if you got some friends that aren't already listening to the show,
be sure to, you know, tell them about it. Let them listen in. You know, hey, if nothing else,
it will give you guys something to discuss during lunch so that you can say how wrong I was.
And that could be entertaining
in and of itself it could the whole case situation will come back around oh my god yep so awesome
all right now what's special k what's next on the agenda here
so again i think we already said once once you have this thing with the core CLR, you can now host it anywhere.
I think basically now we're just kind of talking about some of the more important things.
We went through kind of a list before, so we wanted to call it things that we're actually excited about and highlight them.
Like the Project Readme.
Dude, seriously cheap hosting along with this, but being able to code in C Sharp is fantastic.
Because right now, if you want to do,
if you want to host on Linux,
you're probably coding in PHP or we're all on max right now.
So it'd be nice to be able to stay in that experience.
I prefer max,
you know?
Oh,
hold up a second.
Did we even,
so,
so,
okay.
So if we want to discuss this cross platform runtime,
hold on,
hold on before we go,
what else do we have?
God,
we have a long document.
Yeah.
Well, let well let's get
into the the cross platform because i don't know have you if you guys have played with this yet but
no it is uh let me put it to you like this okay like if you if you want to develop on your mac
right uh asp.net vnext app and you have let, just a clean Mac. Let's go over the list of things that you need to do to get that Mac set up.
Let's do that.
Oh, my God.
All right.
First, you're going to have to install Xcode.
Wait half your lifetime for that to download,
because I think that's like 1.8 gig or something like that.
That's big.
And then every stinking time there's an iOS update,
guess what you're getting a new copy of.
But it's not 1.8 gigs anymore.
They actually did cut that back down
because it used to bring the whole thing every time.
It doesn't do that anymore.
Oh, are they using the core, the cloud-optimized runtime?
They must be.
All right.
But you're going to need to...
A key part of this is being able to use the command line tools that come along with Xcode.
But in order to do that, you need to be sure to accept the license.
And you can do all this by command line.
Then, to make life easy on you, you're going to want to use Homebrew.
If you're not already using Homebrew, it's another package manager. It's another tool that you could use to like chocolatey to download things
automatically and install them on your platform of which you're going to want
to use that to install mono and the KVM,
which has now been renamed.
So I think special K his rapper pseudonym,
he must've gotten outvoted.
Because now it's the DNVM, right?
So D for dot, N for net.
So the.NET VM.
So use Homebrew to install both of those. It'll do it all together for you.
And then if you don't already have Node, you're going to need to install the node so that you can get the NPM.
And then you're going to use NPM to install Yeoman and grunt and Bauer.
And then which Bauer is another package manager and Yeoman is as well.
Oh my God.
Well, Yeoman is a generator.
Okay.
Oh yeah, yeah, yeah.
So, so now that you've got all that what i had to do
consistently for some reason i don't know why but like every time i would want to run kvm if i just
restarted terminal inside of os10 i would have to source my kvm.sh file every time every time
so now you want to build an app right so you So you could do, you could use Yeoman.
So you could do like a yo space ASP.net.
And then it'll ask you, it'll bring up a prompt saying like, hey, which one of these do you want to do?
Do you want to do an empty application?
Do you want to do a console application?
Do you want to do a web application?
Whatever.
So let's say you pick web application.
So you pick web application.
Then you're going to do your KPM restore.
Then you're going to do your KPM restore. Then you're going to do your KPM build. Then you're going to do your K space Kestrel to start the, the web
server on OS 10. And you're going to get an exception, too many open files, or at least I did
you, you might be lucky enough that you didn't. So then I had to go dig around and find out why am i getting this
stupid exception there's a bug in mono right and this is another part of the reason why microsoft
will not want to be beholden to someone else to to develop their runtime or else this thing is not
going to take off but there's a there was a bug in mono so what i had to do was and this is the
beauty of environment variables, right? I
could just simply from the command line, say export. And then there was this mono managed
watcher, just disable that. And I was done. Then I could start, uh, run the K Kestrel command again
to start the web server. Now I could actually go into that. Uh, I could actually go into a browser,
you know, local host and see this generic application
that i built very cool but that's a lot of steps you know to go from start to finish right to get
you there you know if you're on a clean mac but the beauty is like all that except for the except
for the x code right there's a one-time. And except for the very end of launching this thing in a browser,
everything else was command line.
Well, that's like Java, though.
No, but when you use the Yeoman generator to generate the empty shell
of your web application, right?
It's going ahead and creating all that structure for you, right?
So then once that was done, then I could just go in and VI everything. And, you know, if I wanted to
make any changes to it, you know, I could just do it through VI. I could stay within terminal
and do the whole thing, right? That's unheard of. A C-sharp developer has never spoken those words
before. No, they want to. That he stayed in a terminal and created an app from start to finish
and it worked. All right, but hold on. Let's take a terminal and created an app from start to finish, and it worked.
All right, but hold on.
Let's take a step back here.
That's actually one of the reasons why C Sharp developers like C Sharp,
because they have an IDE that does all that stuff for you, right?
But now I'm saying that you had the flexibility that before, okay, sure,
I'm sure there's some MSBuild expert out there that's like, hold on now.
You could totally do this.
You run an MSBuild with 18,000 arguments now, you could totally do this. You run an MS build with 18,000
arguments and I could totally do it. But now what I'm saying though, is that they've simplified
things, at least in my opinion, to where it was, it was a lot easier. So I might've listed off,
you know, a dozen or more steps, but that was all it took. And the majority of them
with the first one of installing next code and the last one of actually viewing it in a browser, everything else, I probably could have curled it too if I wanted to stay in command line to see it.
I probably could have done something like that.
So I thought that was kind of awesome.
But to your point, though, there is a Sublime plugin.
Yes.
Now we're starting to get somewhere.
So you could, and Sublime is cross
platform. So if you wanted to, you know, you could use Sublime to do your editing and that plugin,
uh, there's IntelliSense now within Sublime for C sharp. Yeah. And on top of it as well,
and we'll have a link in the show notes. Um, this guy that was doing it, he actually has inside Sublime where he's calling Kay Kestrel to start things up from within Sublime.
So you can actually, without having to go back and forth.
Oh, right, right, right.
You're speaking of Scott Allen.
No, this is Syed Ibrahim Hashimi.
It's really easy.
Oh, that sounds easy.
How do you spell that?
Is it like it sounds?
It's actually really easy to set up in Sublime. Yeah, so it's really easy. Oh, that sounds easy. How do you spell that? Is it like it sounds? To build.
It's actually really easy to set up in Sublime.
Yeah, so it's pretty amazing. So what all Outlaw said, yeah, it might take a little bit of time to get it up and running.
But once you do, you're done at that point.
You could edit it all within VI, which if you're crazy a little bit, you can.
Or you can go into Sublime where they have fantastic templating and all that kind of stuff and actually be sane again but you could now in a decent productive way work on a mac to
code c sharp which is fantastic now here here's one weird thing that i ran into too and i don't
know if like uh i didn't bother to go look to see if this was like um oh actually no i did i did go look into this one it was a
known bug um but if you okay so now that you're running kcastrol right and let's say you want to
stay in the command line and you're like hey that's awesome well let me just shut down this
web server oh which button is that is that command, Apple-Q? Wait, why is this thing not stopping?
Escape?
Which one of these stupid buttons do I press?
It's the inner key.
Wow.
Yeah, so there's actually like an open,
if you go find the GitHub repository,
there is actually an open request to make it more clear that the enter key will quit the Kestrel web server once you start it.
Awesome.
Right? effect though what at least from my own experience if you pressed anything else like in all those
examples where i was like control c command c you know escape all that kind of crap i had to kill it
by doing like you know the old-fashioned units way kill minus nine and find the pid
that it was running under because it wasn't responding to anything else. Oh, no. I mean, the web server was still working,
but as far as the ability to stop the web server by use of the inner key,
it wasn't working for that.
Interesting.
So hopefully that will get sorted out at some point.
So your mileage may vary.
He actually did, though, get – we saw the website.
We saw proof that he had on his mac
running osx he had an aspv next application running well and i also did i didn't mention
this one too but or show you this one either but i also did uh the command line too because like
that was the more that was one of the things i was more excited about too was like from a server
side point of view i was like hey think like the little – like how many shell scripts have you written in your life or little scripts, you know, PowerShell scripts, Bash shell scripts, Perl scripts, whatever, to do like little tasks on the server side, right?
Now you can add C Sharp to your arsenal of things that you could do on any platform to solve those little problems yeah
that's right cool so so that was another one of the things i did was i used the yeoman generator
let's bring up on os 10 a uh a c-sharp console application and let me play around with that
and of course i used vi to do all the editing because i'm insane but but the one thing though that that i haven't done and this was
originally like my my ultimate one of the things i was setting out to do with it was like if you
think about this like what's the long-term your ideal goal here you're you're what's the ultimate
uh you know fantasy about being able to be work on this cross-platform right once deploy everywhere
no that's mine you thinking dude that's windows everywhere no god no you guys are crazy listen
here it is you you are at the office on your company provided pc you do some work there right
now you're like hey uh i'm at home and i'm on my mac and you know it'd be really cool if i could just
do that job from here on this mac and so let me just clone the repository do some work and i can
keep working from home you know i don't have to go into the i can go into the office a little later
or whatever right that's the that's you know the cross-platform development, right, is one thing that was key.
And I haven't gotten to that part yet.
I had originally set out to do it and then developed an app in the CTP, which I don't know what that even stands for.
Capture the protocol.
Yeah, whatever.
Capture the protocol. Yeah, whatever. Capture the packet.
Whatever the latest version of it, I think it was like 6,
Preview 6 of Visual Studio 2015.
Yep.
So I developed that on a PC, and then the idea was,
well, let me just copy this whole structure over to my Mac
and then compile it so i didn't do that i just because
like i was just time constraints but what my suspicion is and this is unproven yet ctp community
technical preview oh right there you go yeah so it rolls right off the tub there it is uh my my my suspicion though
is that the only thing that would be required to make that cross-platform work would be
modifications to the project.json to specify specifically uh like os10 commands right so
so when you look at the um the project. JSON, one of the stanzas that's
in there, uh, is a commands section. So when I said, um, K space Kestrel, and it would start it,
that's because specifically in the project at JSON, there's a Kestrel command that's telling it what the web
server should be, right? And what URL it should respond to, what port it should respond to,
or you can exclude some of that if you wanted to. But that's how that's working, right? And if
you're on a PC and you want to do the self-hosted, right? Like I said before, you would do a case-based web, and that's because in that project.json,
there's a web configuration section within,
or line within the commands object structure
that specifies the Microsoft.asp.net hosting,
and then includes, you know, server URL.
Is there a way to do a switch in there
based off what platform you're on?
I mean, that would be the key, right?
No, that's what I'm saying.
You wouldn't need to.
You could have both.
You could have both commands.
Oh, and it would know how to run the correct one.
In the project.json,
and then depending on what environment,
you would just say,
hey, let me do k.web because I'm on my PC.
Hey, I'm on my Mac.
Let me do k.kestrel.
So I haven't tried it,
but i think
that's all that's necessary that's my gut well i think he's saying it's like he wants to run k and
have it figured out right well but no that's not how this works though because k is more like think
of k more like uh like git right like it's the command you can't just run git by itself and do
something you got to give it a command k mic andMake. And so you're deciding what those commands are
in your Project JSON.
So if you wanted to have,
and this would be a gross way to do it,
I suppose you could make a command saying,
like, run, for example,
and have the syntax of that different per each platform but
we're over complicating things there anyways well worse you wouldn't be able to commit that
right right because because then you know any windows users command is going to override yours
but you're saying you can have multiple commands in there and you just know which ones to run based
off what platform you're yeah absolutely absolutely yeah so. So I want to keep playing with that, though,
but I think that that's all that would be necessary.
That's my gut suspicion is that's all that's necessary,
but we'll find out.
So your takeaway is you'd like to be able to continue
writing the same application across multiple platforms.
I'm saying cross-development is just as important
as cross-runtime.
I actually, the host anywhere type thing is exciting to me.
And that's actually pretty cool.
I don't know how much I would do that, but.
Oh.
So the next one that we have marked down
is there's no more worrying about the GAC.
And that's huge.
The Global Assembly Cache, right?
Yes.
And what they used to be is basically a place for your.
That sound that I made whenever somebody mentioned there was a problem with a version, I'm like, The global assembly cache, right? Yes. And what they used to be is basically a place for your –
I thought it was that sound that I made whenever somebody mentioned there was a problem with a version.
I'm like, oh, God.
Well, it's kind of both.
That's what eventually happened every time.
Yeah, and it's a really convenient folder that has basically shared assemblies that different programs can use.
But the problem is that you don't really know what other people have.
And so one person may have a DLL in their GAC and the next person doesn't.
So you kind of commit, it works on your machine,
the next person gets it, and it's not in the GAC.
And they've got to try to hunt down some DLL
from really dodgy websites.
Yeah, and then you deploy it to X number of servers
and half of them have it.
Some of them have a different version.
They don't line up.
And originally, though, this was intended to be
that side-by-side deployment.
Because originally the idea was, hey, we'll look first next to the executable.
And if we can find the DLL there that we're looking for, then we don't have to go any further.
But if we need to, then we can go searching for in a global namespace to find it,
and that's what the GAC was supposed to be.
I mean, it's almost the same type thing
as if you go over to somebody else's house
and you expect them to have shoes that fit you, right?
I mean, that's really kind of what this is.
So let's think about it, right?
The GAC was...
Why do you guys keep bringing up these...
I'm putting clothes on.
I'm putting clothes on.
What is it?
I am not coming over to your houses. it's just like that right like you wouldn't you wouldn't go over somebody else's
house bare feet and be like hey you got a size 11 there right that's not going to happen and
that's kind of what the whole gack was was hey you can run 10 different versions of the same
thing right like if you've got this newton package, you can run all 10 versions of it.
But let's say that you put your application out there
and they just didn't happen to have the 11th.
Well, now you're messed up.
And so that was the problem with the GAC all along
is they had to install these things
for you to be able to use them.
It was a good intent,
but at least now you just bundle what you want
and you send it across.
And that's huge.
So GAC, you know, you did your best.
I appreciate you.
Goodbye.
Yes.
It's not gone forever.
No, it's not gone.
Don't say goodbye.
This isn't goodbye.
We're talking ASP5.
Like I said before, if you're using the full.NET CLR, you're still using the GAC.
You can.
You don't have to.
If you're using the full CLR, you're still using the GAC. You can you don't have to yeah if you're using the full clr
you don't still using the gac you still have to use the gac today even with the full clr you can
still bundle your dependencies it's just that a lot of no one bundles system in with their app
correct okay fair enough yeah so yeah so if you're using the that's a good point full clr you're
still using the GAC.
So don't say goodbye just yet.
I feel like that should be a meme. We need to get a picture of your face looking really intense saying that.
Saying what?
Don't say that.
It's not goodbye.
No one bundles system.
He did have an intense look, didn't he?
He did the whole get off like, you shall not pass, but the one bundle system.
That's awesome.
I feel a meme coming.
Oh, God.
A memmy.
Oh, my God.
A meme-y?
A meme-y.
Wait, what was the I am grr?
You know, there's always that.
I am grr.
Imager.
Oh.
Yep.
Yes.
All right. That was not mine. Too clever. All clever all right so set the care runtime info so so i want to
go to one of my favorites though wait what's this one what's set the carry runtime info
uh i don't know that was one of joe's uh it's basically just specifying the clr again which
we've talked about quite a bit okay we're done with the clr uh yeah and then and then
well one point that i did want to make about this side by side.net that nobody has mentioned though
is that now for the first time finally upgrading.net on your server can become even more
of a pain in the but how's the way it's? It's a copy-paste. Because now you got to do it like,
you know, if you have 64 apps,
you got to do it 64 times.
No, I don't have 64 apps.
Well, it depends on what your server is, right?
Yeah, that's true.
Oh, that's an interesting take.
Hey, but you can always write your script.
Well, this is the dark side.
This is the dark side of me
that's thinking like, you know,
where's the negatives here, right?
Like, everybody's all, you know,
rainbows and kittens about this, you know, side-by- and i'm like wait a minute come on now it's kind of
interesting so if you're a hosting company rather than being like hey guys you know tonight midnight
we're installing the latest patch it's more like hey you guys figure it out yeah it's almost like
linux is handled nowadays right like you got all these vms out there right it's like oh you patch
your own stuff that's that's kind of what. Well, that's not exactly what I was going
with, though, but I mean, I kind of see where your
point is, like them putting the onus on you, but
I just meant like, let's say that you have
some server out there and you have 64
apps on it. Now it's not a matter
of, well, they all support
the latest version of.NET, so let me just
install this patch and done.
Now it's, oh, crap, they're
all side by side. Dude, somebody's going to employ.
There's going to be a tool for that.
There will have to be a tool for that.
But you're right.
There's no more Patch Tuesday kind of taking care of that little stuff, right?
Yeah, now it's –
If you've got a specific version specified, then how does that – yeah.
Yeah, so, I mean, specifically to Patch Tuesday,
it's going to be interesting to see how do security deployments get handled.
They don't.
To Alan's point about the tool,
they'll do this like,
how is this going to happen?
Yeah, there will have to be some way.
Is the system,
I mean, this is no longer dependent on like a GAC or anything like that.
Right.
It's just a file system.
So I don't see anything that's going to know
that, oh, you have three different versions of.NET
already installed on the system or not installed. Let's be careful
with the wording here. You have
three different.NET
files
on the system.
I don't know how that's going to work.
There's going to be new positions at every company that are
just PowerShell scripters that will
be copying files all the time.
I think Joe just applied
something. One of the cool things, though, that we didn't mention,
did we say this, though?
The core CLR,
also known as the Cloud Optimized Runtime,
is super small.
Yeah, it's tiny. I think 11 megabytes.
Yeah, compared to 200,
over 200 for the full.
Yeah, that's pretty amazing.
And that's why the Raspberry Pi thing is even possible, right?
Yeah. Well, it's pretty amazing. And that's why the Raspberry Pi thing is even possible, right? Yeah.
Internet of Things.
Well, it's possible, but it's not by any means usable.
I mean, that one that I was specifically referring to was slow.
Okay, well, you know.
And that's why I was saying maybe somebody else might want to come out with a CLR of their own
that's more specific to embedded environments.
Who knows?
But still, still made possible because it's being shrunk down to just the core necessities.
So, so I wanted to bring up something that I haven't heard anyone talk about this one before,
you know, from any videos I've watched, things I've read, but I thought it was kind of interesting. So, because I do, um, like, okay,
so let's go back to, you know, current, uh, visual studio, you know, 2013 and before environments,
right. Where you could have, um, build configurations for different environments.
So by default, you're getting a debug and a release but you might have ones for different cpu architectures whatever you might have some that um you're setting different
directives i don't i can't even think of all the different examples why you might but you know
there's a bunch of reasons out there where you might have multiples so i got into a habit of
i like to do batch builds just like before i before i um you know push up my changes to the remote repository
just to make sure that like everything's still good like i didn't break some other obscure
build that i'm not using right so i got into this habit a long time ago of just doing the
batch builds just to make sure like every version builds fine right and now with this you know the new Roslyn compiler that you
were referring to earlier that where like as soon as you're saving the file
it's building it it's building all the versions oh very cool so so if you want
and by that what I mean is like so now when you look into your references folder, right?
Remember how you used to see like a whole bunch of different DLLs named out by namespace?
So you might see like a system.math or whatever, right?
You would see all of these different ones specified out, right?
You don't see that now.
What you see right away is you're going to see the frameworks that you're targeting.
Oh, nice.
Right?
So if you're supporting the full-on CLR, you're going to see ASP.NET 5.0.
If you're supporting core CLR, the cloud-optimized runtime, you're going to see ASP.NET core 5.0.
And now when you do your saves, it's compiling both of those versions.
Now, when I mentioned about the batch build, you still have your batch build.
So I haven't bothered to look to see if both release and debug get built, which is really the reason why I do that.
Yeah, but it is building both of those targets for you, right?
So that then brought up the point that it was like,
well, wait a minute, is it doing the,
what if you needed to have something that was specific to one platform
but not the other?
So in other words, maybe I want to write this application where when you're running on the
full CLR, I can use generics or link.
Let's say link, for example.
And but for if you're running on core you know the cloud optimized clr i don't
want to have that dependency be required and so i can just do this one call and and be done with it
right so there's these uh the compiler directives are back right we we set it back to c regular c
i don't know why we're doing that i don't i that. I don't know why you're not with me here on the excitement level because you can pound if stuff.
Yeah, awesome.
Yeah.
I was actually making a joke.
Like, that wasn't – don't take me serious there.
That wasn't like – I didn't – I mean, you can.
Yeah, I got a little sad there.
I thought you were for reals.
Yeah, I did too.
No, totally.
I'm not a fan of that.
Like, well, totally. Totally wasn't for reals. I'm not a fan of that. Like, well, okay.
So in C, we had to write our own bugs.
In C++, we can inherit them.
Nice.
So now we fast forward to C sharp.
Now we can still do like, you know, those pound if ASP.NET 5.0 and then do your core.
Yeah, I'm sorry.
Do your full CLR specific code and then pound end if.
Or you could do pound if ASP.NET core 5.0, which would target the core CLR.
So obviously the compiler is going to be smart enough to know which one of these
need to be targeted.
That's crazy.
The first time I see some code
that's going to have that crap in it,
I'm going to be a little bit upset.
It better be
because you're writing
something that absolutely requires
being cross-platform.
That's the only reason why I could see that you would want to use those directives.
That's insane.
You're going to reject that pull request.
So to finish up on a few of these here,
one of the other things was previous versions of apps
would just automatically work on the framework without any modifications.
That's a promise that they made.
Hopefully that is true.
And, well, no, that's what they said.
There was something about routing, I thought, though.
They say that they will work without any modifications.
That's if you choose to run on the newer platform.
Now, that doesn't mean that you're going to the core CLR.
If you do that, you have to change a lot of stuff. However, if you're just going to the to the core clr if you do that you have to
change a lot of stuff however if you're just trying to run on the full.net framework it'll
just plop in and work hmm i could have sworn there was something there was a gotcha if i remember
correctly i i don't i'll never find it now if we do it'll be in the show notes that there was uh
at least one scenario where,
and I thought it had to do something weird like MVC routing or.
It would make sense because it's unified now, but that's what they say.
That's even one of their bullet points directly off ASP.net slash VNEXT.
Another thing, you can play with this stuff right now.
You can go, if you want Visual Studio, the CTP6, which was Community Technology Preview 6, you can do that.
We recommend doing that in a VM, though, because it is new and it's not ready for production yet.
So if you do that, put it on something that doesn't necessarily need to be ready to go.
Did you find it?
Yes, I actually did find it.
I can't believe I did.
Okay, so there's a blurb at the end of,
there's an ASP.NET page that has an overview of VNEXT,
and at the very end, there's this little blurb that says,
MVC6 and SignalR 3 apps use the new HTTP pipeline,
so they are not compatible with apps that use system.web.
Right.
That's using a different CLR.
It doesn't even mention CLR.
It's not even talking about CLR here.
It says that those use the new pipeline, right?
So it's implying a CLR there,
but they are not compatible with apps that use system.web.
Well, that's fine because we were talking about old apps.
To upgrade. It says to upgrade existing apps. Yeah fine because we were talking about old apps. To upgrade, it says to upgrade existing apps.
Yeah, but we were talking about existing apps running on this, right?
Right.
So it says to upgrade existing apps to MVC6 or SignalR,
you must create a new project through Visual Studio 2015
and then port your code to the new project.
When porting, you'll need to modify the unsupported code.
But that's if you're upgrading your project though
if you just want to bring it straight over you can do it without any changes right because what
you just said was key if you want to upgrade it to run on mvc6 and all that then you have to touch
it otherwise you can just move it straight over it runs well i mean what are you talking what are
you calling support then are you telling like if I just leave my old legacy app running
and install the next version of.NET?
Because that's not what I would have meant.
No, no, that's what they were saying.
If you have a new server set up that's running the.NET framework or whatever,
you can bring this thing straight over without any modifications.
No, I think what they're talking about is can I just take my legacy app
and open it up in 2015 and compile it and it work?
And they're saying, saying yes that'll work
except in these scenarios that's if you bring it in 2015 if you don't want to do that just want to
put it on a server that is running the latest stuff that's the way they make it sound what
you're talking about is actually upgraded the project which you have to do anytime you upgrade
a version of visual studio anyways so I think it's two different cases.
I believe it is anyways.
And email us if we're wrong.
Yeah.
Hey, let's get on to the next thing because we are definitely running a little long tonight.
Surprise, surprise.
Yeah.
This was a big topic.
So web forms.
Yep.
Are web forms dead?
And the answer is no, Wink. Right? So web forms 4.6 Are web forms dead? And the answer is no, wink.
Right?
So web forms 4.6, new version coming out.
It's kind of come along with this.
Alcohol.
Outlaw is making some funny faces over there.
I think I just blew my brains out.
He loves web forms.
All right.
Oh, my God.
Not really.
But HTTP2 is supported in web forms uh also some async
model binding and some legacy features so um what web forms aren't legacy oh i'm sorry i was reading
ahead yeah so um you can continue developing your web forms after we got a little blurb here so
um you're still pretty good and web forms aren't dead,
but they're dead.
To us.
Yeah, yeah.
So, you know,
they're on their way out.
So start thinking about it.
And we'll run without modification,
it says again.
Yep.
And there's a couple new features
like support for HTTP2.
So it's not completely unsupported.
Yep.
How long till Visual Studio goes cross-platform?
Yeah, that's the real question.
Never?
It's not happening.
Well, who would have thought Core CLR is going cross-platform?
That's a little bit easier.
Well, I think that was the hope that we always had, though.
I mean, right out of the gate when Microsoft came out with.NET,
they open-sourced the, that might be the wrong word.
But they opened up the.NET's CLR specifications and just no one else decided to implement it.
Yep. So they wanted it to be cross-platform in the beginning.
Well, I'll tell you, if Visual Studio goes cross-platform –
Or at least that was the image they projected.
If it goes cross-platform, I'll get a tattoo.
A Microsoft tattoo.
Wow.
I think it's got to be like a big picture of Bill Gates.
Wait, do you want to have this in any particular given time frame?
Because, dude, you left that open for a long time to come.
Is this like an Adam Sandler thing?
Like, you know, Waterboy?
Where are you getting this? On the forehead.
Wait. Oh, God.
You're going to have like Drake. Wait,
seven years? Yeah, well, what we're going to do
is, see, I haven't told you guys, but I've already got a really
embarrassing Zune tattoo.
So, I'm
just going to kind of overwrite that one. Here goes
another uncomfortable conversation.
Oh, my God. You know,
I'm surprised that no one brought up
when it's being released.
It's this year, right?
It's pretty much already there.
No.
Well, right now,
it's just in like beta.
They're talking about with Windows 10, right?
Same time?
It officially comes out with Visual Studio 2015.
That's right.
Which,
from things that I've read,
the target, if I remember correctly,
was second quarter of this year.
Soon.
Yeah.
Well, that could be like – All the way up to June, right?
Yeah, into June, right?
But one post that I read from someone who claimed to be a Microsoft employee
was that most of the bits were
already locked down.
They already had it settled.
Surprisingly, this is
being done from multiple teams.
There's
the ASP.NET VNEXT team
that's doing their part to implement this, but
then there's the whole Visual Studio
team that's building the
support for this thing. That's a whole other team.
Yeah, that's a lot of work.
So, yeah.
So it's supposed to be quarter two from things that I've read.
Hopefully that'll be consistent.
But if it's anything like you mentioned Windows 10, Windows 10, there was an announcement.
Was it a couple days ago or last week?
I think it was last week where
the announcement was that it would come out in summer but if you read into that that could be
all the way into september yeah and i will say i am using windows 10 preview it's fantastic
although i remember um microsoft is based in redmond so washington state so their summer
is like three weeks so it's actually not that bad i think it's only it's actually like three days it's a small window um so that so in summary real quick
you know really when you boil it down to asp5 uh it's basically java there it is there it is
everybody who wanted to leave the show was waiting for that. Bring on Jay Sharp.
There it is.
It's back, baby.
How fast can you say this, Alan?
It's faster, simpler, more flexible,
cloud-friendly, cross-platform,
open-source, best practices.
Basically, everything is better.
Wow, that was a mouthful.
That was pretty good, right?
That was really good.
I need a drink.
All right, so resources we like.
We're going to have a ton of links
in the show notes,
but just real quick, there was a Scott Allen video on Pluralsight that just came out. I want
to say like 12 days ago that goes over ASP.NET 5. A lot of great information there. Visit ASP.NET
slash vNext. You'll get a lot of great information. One of the links in there is for the overview.
We'll have that link in there as well.
And, uh, there was another link that I found or a blog entry that I found on one of the, um, ASP.net blogs by Scott Gu that had, um, some great information on ASP.net five.
So we'll have those links in there.
So let's skip on to the tip of the week.
All right, let's do it all right so you remember me dogging on firefox earlier yeah well i'm about to make it
real all right so my actual tip is for firefox so there's a this is not a new extension, but if you're not already using it, then it's a cool one.
It's called Tilt 3D.
And if you're doing any kind of web development and you need to be able to see – sometimes being able to see the Z index or just how the different components are stacking up on one another can be helpful.
Tilt 3D is an add-in to firefox the thing is based on lpl could be
wrong but it it makes a 3d representation of your web page that you can spin and turn around
and flip end over end and you can actually see how everything is stacking on top of one another
he doesn't use it he likes to look at it okay i saw this like a couple years ago i was like hey
it kind of looks like city a little bit. It does.
Like I said, it's not
new, but some people might not have heard
about it, so I thought, hey, why not? It's really cool.
You'll use it once and then you'll disable the plugin.
It's a good once.
It depends. Like I said, it depends
on if you're doing things specific
with Z-indexes where it can
be helpful. Yeah, and just
be prepared. depending on what
javascript framework you're using to generate all your divs this thing could probably kill
your computer that's right i mean this is probably more graphical intense than call of duty or or
even uh shadows of mord, this one's actually,
Outlaw and myself have shared this frustration.
We program on Macs and we're using Boot Camp
and the newer retinas have, you know, they double the DPI.
So the way that it's handled in OS X is they basically,
instead of, you know, trying to show it at the actual pixel, they scale it up two times.
Well, the problem is going to Windows, and they don't handle scaling quite as well.
Not Windows 8.
8.1 doesn't, and even 10 isn't great so far, if I remember right.
I was pretty sure Windows 10 had this problem solved.
It may have. I'd have to go back and check.
This is only a Windows 8 or 8.1.
Specifically 8.1, we should say.
Yeah, 8.1 is frustrating because what happens is if you plug in a second monitor, it tries to scale them both the same.
So if you try and increase the...
Well, not scale.
It doesn't scale it.
That's the problem.
No, you can.
You can.
And here's what was frustrating. No, I'm saying by default. By default, it doesn't scale it that's the problem no you can you can and here's what here's what was
frustrating i'm saying by default by default it doesn't but even if you try and set it up to where
it does you might get your laptop looking good but now your bigger monitor over there is going
to be just ginormous right your font's going to be like an 80 point font so right your dad your
dead grandmother came back to life and can read it seriously like it's insane so there is a
scaling issue well one of the things you can do and this is not ideal but i thought it'd be a nice
tip i actually saw somebody using it for a presentation one point is if you want to use
the zoom tool and again this is not ideal but if you need to see something on a screen that's just
the font's too small you can hit the windows key and the plus button and it'll automatically zoom in um i think it goes to 200 by default and then that
way it doubles it and so if there was something you needed to look at more closely you can do that
and then if you want that zoom to go away you just hit the windows key and escape it's fantastic for
doing presentations in a room where you're trying to to key in on a piece of code or something like that.
But I found it fairly useful, and it's a nice little tip anyway.
So Windows Zoom, the Windows key and the plus, and Windows key minus will zoom back out also.
So pretty interesting.
Very cool.
And my tip of the week comes from Lee Inglesestone, who we've mentioned on the show before.
He's at ManchesterDeveloper.com.
And I saw a tweet from him a little bit ago talking about a new project he was working on called SQL Pen.
And as soon as I heard the name, I kind of knew exactly what he was going for.
I think it's awesome.
And what it is, it's a simple WPF.
Well, I assume it's simple. I don't know.
Didn't mean to offend you.
No offense.
I'm sure it's awesome.
But it basically will kind of like run a query periodically,
and you can kind of pin this to your desktop so it has a little window open.
So if you are, you know, maybe doing a scary deployment or something like that,
you could have a couple queries up there that are kind of refreshing
to see if anything crazy is going on.
You can just kind of keep that on your desktop and go about your day.
So you can kind of pin these queries.
And yeah, I just think that's awesome.
How much you want to bet one of the ones that he has
is SP who to active?
Yeah, no kidding.
That's probably running like every two seconds.
Yeah, so it's not open source,
but you should go bug him about it
because it sounds awesome.
Very cool.
Yeah, so with that, like I said, we'll have lots of great information in the show notes. you should go bug them about it because it sounds awesome. Very cool. Yeah.
So with that,
like I said,
we'll have lots of great information in the show notes.
Be sure to check those out.
Leave some feedback.
We love it.
Go to iTunes,
go to Stitcher,
leave us a review.
We greatly appreciate it.
And,
uh,
right.
Where are we at?
Oh yeah. So contact us with a question or a topic we actually really like it when we get the emails on the topics because it helps us actually give you what you
want leave your name preferred method of shout out website twitter whatever and we'll mention
you on the podcast and also please do go to www.cuttingblocks.net slash review to leave us a
review and you can find all the show notes for this particular episode at www.codingblocks.net to leave us a review. And you can find all the show notes for this particular episode at www.codingblocks.net.
And send us your feedback, questions, and rants to comments at codingblocks.net.
And follow us on Twitter.
Because we're funny at Coding Blocks.
Funny guys. Yes. Alllocks. Funny guys.
Yes.
All right.
Funny looking.