Azure for Developers
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 133 | |
Author | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/49589 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
NDC London 2016129 / 133
2
6
10
12
15
17
23
24
28
30
31
32
35
36
39
40
43
44
45
47
51
52
55
58
59
60
61
62
63
64
67
69
71
73
74
75
82
84
86
87
97
103
107
108
111
112
114
115
117
120
123
126
128
129
132
133
00:00
Software developerPoint cloudBitExpert systemLevel (video gaming)Goodness of fitComputer virusInheritance (object-oriented programming)Computer animation
01:07
GoogolSoftware developerData storage deviceStapeldateiMobile WebScheduling (computing)Service (economics)Computer iconData storage devicePoint cloudService (economics)Computer fileNumberFile archiverMiniDiscRAIDData centerLine (geometry)Lattice (order)Basis <Mathematik>CuboidMedical imagingMultiplication signEmailDiagramAreaGroup actionInternetworkingWeb pageWordRow (database)Single-precision floating-point formatWebsiteVirtual machineRight angleBitCASE <Informatik>Computer architectureGod
06:01
Software developerExecution unitWeb pageFile archiverMultiplication signTable (information)Uniform resource locatorHand fanEmailMedical imagingWebsiteHome pageAuthorizationType theoryNumberSystem callRight angleProcess (computing)AuthenticationData storage deviceFront and back endsDebuggerGame theoryHypermediaLoop (music)DivisorPoint cloudFamilyComputer animation
08:54
Software developerBlogUniform resource locatorData storage deviceWindowCuboidContent delivery networkMedical imagingElement (mathematics)Open setUser interfaceWeightWeb browserPoint cloudDemosceneComa BerenicesDomain nameComputer animation
10:16
Software developerFile Transfer ProtocolCache (computing)Medical imagingData storage deviceException handlingPhysical systemMathematicsComputer animation
11:07
Software developerMultiplication signMathematical optimizationScripting languageView (database)Medical imagingBitWeb-DesignerConnected spaceOrder (biology)Client (computing)Data storage deviceCalculationInternetworkingJava appletService (economics)2 (number)Structural loadCausalityPoint cloudFront and back endsComputer animation
13:20
Software developerScheduling (computing)Data storage deviceStapeldateiMobile WebService (economics)Local ringGroup actionMiniDiscData managementOnline helpInstallable File SystemComputerView (database)Computer fileSet (mathematics)File formatSanitary sewerServer (computing)Maxima and minimaResultantEvent horizonOperations researchVirtual realityWindows ServerData storage deviceData centerCalculationPoint cloudVirtual machineProduct (business)Mobile appVirtualizationMultiplication signMedical imagingMiniDiscStructural loadReading (process)Data managementTerm (mathematics)Web pageComputer fileVariable (mathematics)Datei-ServerWindowLocal ringReal numberEmailNeuroinformatikBlock (periodic table)Different (Kate Ryan album)Volume (thermodynamics)Hard disk driveDatabaseSoftware testingDegree (graph theory)Right angleBlogInformation retrievalDrop (liquid)Source codeComputer animation
17:56
Service (economics)Scheduling (computing)StapeldateiMobile WebData storage deviceSoftware developerUser interfaceWeightData storage deviceVirtual machineEmailNewsletterCartesian coordinate systemDatabaseMobile appProcess (computing)SequelMereologyWindowVirtualizationComputer animation
18:56
Software developerComputer fileBefehlsprozessorConnected spaceVirtual machineMobile appPasswordSemiconductor memoryPlanningCartesian coordinate systemElectronic mailing listBitEmailPoint cloudRemote procedure callPoint (geometry)Core dumpLine (geometry)Standard deviationTouchscreenImage resolutionSource codeComputer animation
21:01
Software developerExponential functionExistenceVirtual machineLoginPhysical systemFrequencyMiniDiscSoftwareSocial classData managementDatabaseLocal ringVirtualizationFiber (mathematics)Content (media)Point cloudProcess (computing)outputMultiplicationSubject indexingDensity of statesOperating systemBitRight angleNumber2 (number)SineConnected spaceInheritance (object-oriented programming)WindowSequelOperator (mathematics)Metropolitan area networkMathematicsLevel (video gaming)Revision controlData storage deviceComputer animation
24:28
Software developerMIDIWindowMultiplication signAreaSparse matrixData storage deviceMiniDiscNumberLevel (video gaming)Virtual machineMaxima and minimaSoftware engineeringNeuroinformatikData centerIntegrated development environmentServer (computing)NewsletterFreewareCoprocessorHookingDatabaseComputer fileArithmetic meanPersonal identification numberOperating systemBlogProcess (computing)Optical character recognitionBand matrixHeegaard splittingBefehlsprozessorParallel portPhysical systemPhysicalismVariable (mathematics)CodeSequelRight angleMathematicsPoint cloudSoftware testingLogic gateDot productComa BerenicesDressing (medical)Musical ensembleLocal ringFigurate numberDistanceLoop (music)Host Identity ProtocolComputer animation
30:42
Software developerRule of inferenceSemiconductor memoryVirtual machineWindowInternetworkingPoint (geometry)Multiplication signRight angleMetropolitan area networkPhysicalismComputer animation
32:12
Software developerBuffer solutionTotal S.A.WeightGoodness of fitVirtual machineMessage passingRight angleSign (mathematics)Semiconductor memoryDensity of statesRevision controlSound effectPasswordComputer animation
33:13
User interfaceSoftware developerVirtual machineSemiconductor memoryTesselationMiniDiscSet (mathematics)FrequencyRight angleKeyboard shortcutSystem callMobile appHypermediaMultiplication signComputer animation
34:36
Software developerVirtual machineMedical imagingTemplate (C++)Keyboard shortcutBlogScripting languageComputer fileFreezingMultiplication signData storage deviceComputer animation
35:57
Windows AzureSoftware developerStructural loadVirtual realityMetropolitan area networkMotion captureBlogUniform resource locatorVirtual machineMultiplication signMetropolitan area networkRevision controlArtificial lifeWeb pageScripting languageLastteilungIP addressData storage deviceWordGame controllerShift operatorTemplate (C++)Point cloudSource codeComputer animation
37:36
StapeldateiData storage deviceMobile WebSoftware developerScheduling (computing)Service (economics)Revision controlLoginComputer configurationComputer networkWebsiteAsynchronous Transfer ModeElectric currentFunction (mathematics)NeuroinformatikVirtual realityWeightComa BerenicesAddress spaceData managementMiniDiscComputer-generated imageryStructural loadBit rateElectronic mailing listInformationDemo (music)CuboidLoginIP addressUniform resource locatorMiniDiscAddress spaceHypermediaLink (knot theory)VirtualizationVirtual machineMultiplication signData structureStapeldateiWeb portalInstallation artComputer fileType theoryDensity of statesElectronic mailing listCartesian coordinate systemWindowPhysical systemDebuggerScheduling (computing)Game controllerShift operatorPoint cloudDifferent (Kate Ryan album)Scaling (geometry)SoftwareData storage deviceRemote procedure callProcess (computing)Direction (geometry)BitCalculationWeb browserComputing platformCodeBus (computing)GodPoint (geometry)TouchscreenWebsiteNumberPower (physics)AuthorizationKey (cryptography)Service (economics)Source codeComputer animation
43:09
Scheduling (computing)Software developerStapeldateiMobile WebData storage deviceScale (map)Java appletErlang distributionVirtual realityService (economics)Computing platformWebsiteVirtual machineWindowGame controllerPhysical systemBoss CorporationMedical imagingMiniDiscSoftware testingLevel (video gaming)Patch (Unix)Data storage deviceSource codeComputer animation
44:30
Software developerWebsiteInformationRepository (publishing)Virtual realityAngleAsynchronous Transfer ModeWeb pageSoftware testingWebsiteDirectory serviceBranch (computer science)BitPoint cloudRight angleCodeUniform resource locatorSource codeRepository (publishing)Local ringRevision controlFile Transfer ProtocolComputer fileDirection (geometry)Source codeComputer animation
46:34
Software developerAsynchronous Transfer ModeWeb pageComputer virusAnglePasswordSingle-precision floating-point formatFreewareVirtual realityObject (grammar)Computer fileLine (geometry)Error messageRemote procedure callCuboidRight angleMoment (mathematics)CodePoint cloudMessage passingComputer animationSource code
47:56
Software developerInformation2 (number)Web 2.0Point (geometry)Computing platformPoint cloudService (economics)Server (computing)Type theoryLastteilungBlack boxVirtual machineRight angleCountingWebsiteSource codeComputer animation
49:16
Software developerCurve fittingWindows AzureExecution unitWebsiteComputer fileRight angleWindowInheritance (object-oriented programming)WeightClassical physicsConnectivity (graph theory)Application service provider2 (number)Entire functionFluid staticsComputer animation
50:34
Virtual realityAngleDedekind cutLine (geometry)ACIDSoftware developerMaizeMach's principlePoisson-KlammerFunction (mathematics)Numbering schemePasswordInsertion lossCorrelation and dependenceMetropolitan area networkWebsiteSource codeComputer animation
51:23
Software developerWebsiteVirtual machineWeb browserRight angleProduct (business)Type theoryDensity of statesLevel (video gaming)Scripting languageCuboidMereologyRevision controlComputer fileScaling (geometry)Source codeComputer animation
52:33
Software developerBuildingSimulationIntegrated development environmentProcess (computing)Normed vector spaceModule (mathematics)HyperlinkModul <Datentyp>Revision controlInstance (computer science)Software bugProcess (computing)Point cloudWebsiteRight angleVirtual machinePhysical systemThread (computing)Computer fileState of matterRepresentational state transfer2 (number)DatabaseService (economics)Loop (music)Point (geometry)Remote procedure callChemical equationLevel (video gaming)Web 2.0Computing platformData storage deviceUsabilityComputer programmingMeasurementMilitary baseData managementModule (mathematics)Web applicationLatent heatComputer animation
55:30
Software developerVideo game consoleDefault (computer science)BlogPhysical systemInstance (computer science)Uniform resource locatorDemo (music)WebsiteWindowTotal S.A.Point cloudMobile appStructural loadEmailComputer animation
57:01
Software developerLimit (category theory)WordInternetworkingWebsiteFrequencyStapeldateiComputer fileMobile appCartesian coordinate systemPoint (geometry)CodeEmailGeometryData centerC sharpLastteilungoutputConnected spaceSuite (music)Product (business)Scaling (geometry)Different (Kate Ryan album)2 (number)Formal languageComputer animation
58:56
Software developerWebsiteFirewall (computing)Point cloudApplication service providerScaling (geometry)Web 2.0Shared memoryWordPhysical systemProduct (business)WeightPoint (geometry)Email40 (number)Computer animation
59:52
Scheduling (computing)Software developerStapeldateiMobile WebData storage deviceService (economics)Process (computing)StapeldateiWeb 2.0Multiplication signPoint cloudComputer fileRight anglePower (physics)Gastropod shellFlow separationType theoryApplication service providerWeb applicationMobile appCartesian coordinate systemReal-time operating systemThread (computing)Open sourceData storage deviceWorkloadVirtual machineWebsiteComputer animation
01:01:22
Scheduling (computing)Software developerStapeldateiMobile WebData storage deviceService (economics)Service (economics)VideoconferencingStapeldateiPhysical systemVirtualizationHypermediaVirtual machineData storage deviceWorkloadNumberLevel (video gaming)MultiplicationMultiplication signComa BerenicesTranscodierungInternetworkingFitness function
01:02:23
Software developerDifferent (Kate Ryan album)1 (number)TranscodierungInternetworkingMultiplication signMedical imagingVideoconferencingWebsiteSelf-organization
01:03:26
Scheduling (computing)Software developerStapeldateiMobile WebData storage deviceService (economics)Mobile appJava appletWeightErlang distributionTwitterComputer animation
Transcript: English(auto-generated)
00:05
Hi, everybody. Hi. That was not very good at all. That was a very English hello. Hello. Hi, friends. Thank you very much for coming here today. This talk is kind of Azure for developers.
00:21
Could we call it Azure 101 a little bit? If you're an Azure pro professional, if you're a super expert in Azure, you might find this to be a little bit boring. If I make any mistakes, though, if you are an Azure pro, feel free to interrupt and say, I don't think it works that way or whatever because, you know, Azure's a big thing and I'm learning it as much as the next person.
00:41
But this is a good intro level of how I think about Microsoft Azure and also just a good general what a good cloud should look like if you're an Amazon person or a Heroku person. Some of the concepts that we'll talk about will apply to those clouds as well.
01:01
The talk has had many different titles. I think it's listed as Azure for developers. I like this title, you know, because when you're losing to a bookstore, you really have to...
01:22
I'm not in those meetings, but I'm sure there's some meeting with some VP. I said, we're losing to a bookstore. God damn it. Actually, we're not. We're doing really great. They're doing some pretty amazing stuff with Azure. Azure diagrams that the marketing people show you
01:40
are really bad. I actually emailed one of the marketing people for a diagram, and it was so small and he had a little icon for every single thing in Azure and it literally just was a grid of icons with all the crap that Azure comes with, and then they wonder why people think that it's too complicated.
02:02
So I made a chart that is, you know, what is it, three, six, ten boxes, not the 50 or 60-odd services to make Azure a little bit less overwhelming. Now, with all boxes and lines and architectural diagrams,
02:21
there's oversimplifications, but this is the way that I think about it so that I don't get overwhelmed, but it's also a good way to think about the cloud so that you can understand how to move your stuff to it. So let's talk about the basis storage. That's the base of the pyramid, and Azure storage is like Amazon S3.
02:42
Any Amazon people in here? No? Amazon person over here? So this is storage that you throw up in the cloud. Now, a lot of times I'll talk to user groups. I actually talked to the Portland area Linux users group recently where the average age of the attendees was about 63,
03:03
and as I was explaining Azure storage to them, one of the older people just shouted out spontaneously, because apparently when you get older, you just start yelling stuff. That's just FTP! And I was like, well, it's not really FTP, you know,
03:21
but the idea was the word cloud gets completely overused, right? He was like, I was running a cloud in my garage. I had a Linux box 40 years ago. I don't think Linus hadn't written it then, but okay. People have clouds in their closets.
03:42
I've got a Synology NAS. It's like a little portable cloud, you know. You can go and buy a cloud from Western Digital and plug it in. You know, cloud for a lot of people is what hipsters call hosting. But for me, a cloud is a promise of elasticity, okay,
04:00
so flexibility, the idea that you can get more capabilities and more performance just by paying more money, but then also a promise of reliability. If I had some disk on a machine, and I exposed that machine to the internet, and I put FTP on it, yeah, I could call it a cloud.
04:20
I could upload files to it, and I can serve files from it, but if those bytes, that image or that zip file exists in one place, it's not really reliable. So then you've got to start thinking about things like RAID and stuff like that. So with Azure Storage or Amazon S3, this is reliable storage that is replicated in a number of ways.
04:42
When you decide to put something in Azure Storage, you can say, I want it locally replicated, or I want it replicated within the region, or I want it geographically replicated, and each one of those things costs more and more pennies. So you upload something into Azure Storage, and they'll put it on a disk somewhere, and then they'll put it on three total disks,
05:02
and then you can decide how far away you want those disks from each other. When you put something in Azure, it is going to live on a disk somewhere, in a rack somewhere, in a warehouse somewhere, in a region somewhere. But how close will it be to the other copy of that thing, right?
05:23
If it's locally replicated, it might be in the same data center, but many rows away. So if a row goes away, your files are going to be okay. And then if you are going to geographically replicate that, you can say, well, I want it to be in West Europe and Northern Europe,
05:41
and then I'm going to pay a little bit extra for that, and then I'll pay a little bit extra on top of that to say if the one primary goes down, I immediately want to fall back to the secondary. So storage gets increasingly more expensive, and again, we're talking about pennies, when you start storing stuff in it.
06:00
So let me give you an example of some stuff that I did. I've got this website called Hansel Minutes. It's a podcast that I would encourage you to check out. I like it very much. I've done 500 episodes, and I recently redesigned the archives page to feature other people,
06:21
because for a long time, the show had my face as the logo, which was just stupid. It wasn't my idea. And I wanted to feature all the really cool people that come on the show. So I go and I make this great page here with all the people that have come on the show, and I just have a two-page website here, right? This is not a fancy website.
06:41
It's a home page and then the archives page, and the archives page is basically a for loop, right? And there's like one table called shows. So this is not a complicated website. But I put it up in Azure, and then I put all of these images in Azure as well, and they lived in the same website
07:02
where the website was serving these images, right? But then I got complaints that it was really slow. People in Australia were saying it's too slow. I don't want to visit this page at all. You're an idiot. Just, you know, the kind of typical fan mail that you get. And I went to the page and I hit F12 to see how big the page was,
07:21
and it turned out that 500 images is like eight megabytes. So this is an eight-megabyte page. So I started looking at ways to fix that. First, I realized that maybe it's not really the job of the website to be serving the static stuff. So I throw it into Azure storage,
07:40
and there's a couple of ways that you can talk to Azure storage. One of them is a thing called Azure Storage Explorer. There's another one that's called Cloudberry Explorer. And these are basically just front ends on top of Azure. Oh, great. It's going to make me log in again.
08:02
Of course, two-factor authentication. I'm starting to be one of those. I'm getting so old I can't type the number in, before it expires.
08:21
I'm like, I wish they would make it a minute. So I just logged into Azure. Of course, two-factor auth is optional. And it's making a call right now. You see it's spinning. It's talking to the back end. And here we've got Hansel minute CDN, blob containers, images.
08:45
So I throw these images up into Azure. And these images live. Let's take a look. Copy URL to clipboard at this location.
09:07
Something, you know, some storage account, .blob, .core, .windows, .net. And then I get all of those served from wherever that storage location is. But then I can go into a check box and I can say, well I want to geographically, to make these, you know,
09:26
geographically distributed. And then I can go into the Azure CDN, which sits on top of storage. And then say I want it to be cached at the edge. So this would make it so these images are going to be cached in Australia.
09:40
Everything sits on top of Azure storage. The CDN sits on top of Azure storage. So I go and I do that. But then I realize that, you know, this URL sucks. And I don't necessarily want to have Azure be my primary thing. Like I might want to use a different CDN. I might want to use Cloudflare. I might want to switch to Amazon. I don't want to lock myself down. Plus, I personally believe that the URL is kind of a user interface element.
10:06
And I don't want to advertise in my URL, I guess. I don't know. Maybe I'm the only person that thinks that. Don't you like tidy URLs? I do. So we want to right click here and say open image in new tab.
10:21
So I could set up a CNAME. So images.hanselminutes.com is owned by me, controlled by me, my domain, my subdomain. It then points to the Azure CDN, which then caches it on the edge. And then that pulls from storage. The CDN and storage are separate things. Okay?
10:40
If I change something in storage, it's going to take a while to expire that cache. So it might take a couple of days. Or I could go into the control panel and expire it immediately. So you can serve stuff directly from storage. It's just literally like an FTP system except not using FTP. Or you can add on top of that CDN and then you get edge caching.
11:01
So all the Australians now get these images from Australia. But it's still eight megs, which is still stupid. And this is totally unrelated to Azure. This is just me learning. Okay? So bear with me. And if you think this is stupid, totally leave and I won't tease you until you've left.
11:22
So it turns out that you can go and do a little bit of JavaScript that says don't load these images until they enter the view port. So you see how I scrolled really fast and now those are gray? And now we've got the wonderful NDC internet connection here at Excel that finally caught up.
11:41
There I'm only loading. See how they turn gray? We're only loading those images when they enter there. So I got actually more speed up from that little bit of client-side JavaScript than I did from the CDN. But I got to learn in both times, both experiences. But it was interesting because depending on how you architect things, depending on how you solve problems,
12:04
some of you may have said, oh, that's intuitive to one or both of those things. Bear with me here. Think about that for a second. Some of you who are maybe server-side people, CDN people may have said, oh, yeah, we could put that on a CDN, of course, Scott. Yes, that's intuitive.
12:21
Other people who may be front-end developers or JavaScript people may not have thought about the CDN thing, but you may have been thinking, oh, yeah, you should totally do the view port trick and then not go and load those images. But you kind of have to have that full stack understanding about how web development works in order to solve the problems. And both of those are good things to do and it's good that I did both of them and now I win.
12:40
And each of those things causes me to also save money because whether or not it's slow for the user, that's a problem, but eight megs times a million people a month adds up and I'm pinching pennies in the cloud. And that's the other thing that you want to think about is that you can do all of these little optimizations to save yourself money.
13:03
It's very easy to go and put something in the cloud and spend too much money. The pricing calculators on Azure suck and I've been working with them to make them better. But it's very, very easy to go in there and think that, oh, wow, this is way too expensive
13:23
because you'll go and say, you know, I need some storage and I'm going to store this much stuff and then you end up saying I'm going to need like a bajillion of this and then you say, wow, that's way too much. Is that like 800 bucks for 34 terabytes? But you have to ask yourself, do I really need to serve that much in the first place?
13:40
We're going to come back to this storage calculator again because I think people have a tendency to move their existing resources up into the cloud and they price them as if it's the same physical machine that they were running in their data center and then they assume that the cloud is going to be expensive. But it turns out it's actually not that bad. It's also worth pointing out that I pay for Azure with my own money.
14:03
I'm not an evangelist. I work on the product team. Don't trust anyone from Microsoft that doesn't actually have production apps and pay for it with their own money. Because if I got like free Azure, then it wouldn't behoove me to explain to you how to save money in Azure. Does that make sense? You know what I mean?
14:21
Like I have woken up to expensive bills that were my own fault and then fixed it and then I learned that and then I bring it to you all. So there have been a couple of times where it cost me a hundred bucks and I was like, oh, that was dumb. I made a large VM and I left it on all month long. I should have probably not done that. So I want to make sure that you understand that this is my own account that I'm paying for with my own money.
14:44
So I can take an image and I can drag it into the Storage Explorer and I can drop it in Azure Storage and depending on how my account is configured, it gets locally or geographically replicated and then with the CDN, it bounces off to the CDN. Those images, when they are served, are served kind of forward only.
15:03
If you think about it in terms of a database, it's a forward only cursor, right? We're not seeking around in the image. I'm grabbing byte zero and I'm seeking to the end of the image and I'm giving it to you. So those blobs in Azure are optimized for forward only retrieval, right? Read it, pass it on.
15:21
That's different from what a disk would need to do where it seeks around. In Azure, there are page blobs and block blobs. And when you put something in Azure, you tell it which one of those things it is because either you want it to be seek once and serve it like a file server or whether you want to seek around on it.
15:42
You can make a VHD, right, a virtual hard drive and drop it into Azure and then mount it and that's a virtual machine. Virtual machines talk to disks that aren't real disks, right? Obvious thing to say but an important reminder. Did you know that you can go into Windows and go into computer management
16:03
and then down here to disk management and here are my local disks, okay? And I can say create VHD. This has nothing to do with making a virtual machine, okay? This is just making a virtual disk.
16:23
So I could make like a one gig or two gig virtual disk and I could put it on my desktop and I could double click on it and I could mount it, okay? C colon user Scott desktop poop VHD.
16:41
I actually got an email from someone who watched one of my talks that said that it was unprofessional that I named variables and things like that poop. I do that all the time so that I know what to delete, right? Because if there's something on your desktop that says poop then you probably don't want that so then you delete it.
17:01
But they said it was unprofessional and I said poop on them. So I'm going to go and initialize that disk, make it a volume, blah, blah, blah, blah, blah.
17:21
Okay, now I have a D drive, okay? So there's a file on my desktop. There it is. That is a gigabyte in size and it is my virtual disk. Now, again, it has nothing to do with Hyper-V and virtualization. It's just the disk is virtualized. I could then put stuff in that, load it up with images,
17:42
load it up with data, CSV files, whatever makes me happy, stuff I want to process and then take that up into Azure and put it into Azure storage and then I could attach a disk to that when I made a virtual machine. So virtual machines sit on top of stuff that lives in Azure storage.
18:01
So if I go over to the portal and let's take a look at, let me see if I've got some virtual machines here. Here we go. I've got these two virtual machines. This is, again, part of my learning process. I consider myself kind of a professional amateur.
18:22
I have a newsletter that I send out occasionally and I use a PHP application called Sendy to send my emails. And it's this little app you pay $30 for and you host it in a Linux VM. So I made Hanselman Sendy, which is a Linux VM, and then I made Hanselman MySQL to make the MySQL database. I could have put them on the same virtual machine,
18:42
but I wanted to learn how these things work. So this is Linux and this is Windows, okay? So if we look at the Hanselman MySQL virtual machine, I can see that it's pretty much chilling,
19:01
not working very hard because I haven't sent any mail out, right? And I can go onto this machine and see how, sorry, the mouse is sliding down and that's why it's a little bit crazy here. There we go. See, it's a standard A0. It's a quarter of a core. That means that it's a shared CPU, okay?
19:22
And it's got 0.75 gigs of memory, so three-quarters of a gigabyte of memory. This is a tiny little machine. This has less memory and CPU than my phone. This is where people get into trouble. You would think, you would go and say, oh, I want a small or a medium looking VM
19:42
and then you'd put your application up there and then your bill would come and it would be $60 or $70 and you'd go, this sucks, this cloud sucks, I'm going to Linode or whatever and I'm going to buy a $5 virtual machine. But this does one thing. This does one thing. It has one app on it, right?
20:00
It has my mailing list app and my mailing list app only runs for a couple of days a month. I don't even need that much memory, okay? I'm using this VM as a kind of a container. If I could get away with a half a gig of memory, that might be appropriate as well. But remember, I only run for three days a month,
20:20
so I can keep it small. I think this is like the $8 or $9 plan. It's the nothing plan. And then for three days, I fire it up to medium, I do my work for three days, and then I bring it back down. And it's totally cool to do that. You only pay for what you use. So let's click this button here that says connect.
20:40
And what this is going to do is download an RDP file, a remote desktop file. And let's see if I remember my password. And we're going to remote into this machine. It's probably going to be stupid small
21:00
because I have a high-resolution screen, so just pretend. Here we go. So we're remoting into this machine, running off somewhere. And while that logs in, okay, I'm going to let that do its thing. I'm going to click over here on disks.
21:22
When I first set this up, I put MySQL on the machine. It's a super wimpy machine, and I was totally disappointed with the performance. I was like, man, the cloud sucks, Azure sucks, I suck, everything sucks. I was really depressed. Why is this so bad? Well, it turns out there's this thing called IOPS. I talked about it in the keynote a little bit, right?
21:42
It's input operations per second. And it's just a number. It's an index that gives you a sense of how quickly you can talk to the disk. Some of the disks in Azure are spinning Rust, and some of them are SSDs. It depends on, again, how much you want to pay. And each virtual machine has different levels,
22:00
so like an extra small gets 300, and a small gets 500, and then you move your way up. And you can go from a little tiny virtual machine, like I've got here, with less than a gig of RAM, all the way up to what's called a Godzilla machine. Literally, they're called Class G for Godzilla, and they're like 64 gigs of RAM, 64 terabytes of local SSD.
22:22
I mean, they're just stupid huge. And you can go all the way in the gradient between small and up to G0. So I've got an A0 here, and I can go up to a G0. But I don't want to pay any kind of money like that. You know, I don't want to make it faster. I want to pinch pennies. So I have to think about how the cloud works, right?
22:40
There's this sending MySQL VHD here that's living in Azure storage, okay? So that disk probably doesn't even live on the machine in that rack, right? It's actually mounted that disk, just like you saw me mount the disk in Windows, right? I double-clicked on it, and I mounted it, except it was local.
23:00
In the cloud, it's actually mounting it over a network connection, right? So it's going over some kind of fiber optic to wherever those disks are, and they're also routing it through software networking to throttle it to a certain speed. How can I make this faster? I was disappointed in my database, but then I realized that you can have multiple disks per virtual machine.
23:25
Small virtual machines can have two disks. The additional disk is free. Mediums can have four, and then you can go eight and then 16, right? So even if I made this like a Godzilla class machine, the disk could only get so fast, because it's one disk, and one disk has this many IOPS.
23:42
So I made another small data disk, just like we saw me do in disk management. I made a little five-gig disk, and I mounted it as the D drive, and I put the database on it. Didn't change the size of the virtual machine, but doubled my IOPS, right, because my operating system's on C and my data's on D,
24:01
which is what they've been telling us to do since DOS days. Again, a duh kind of thing, and I apologize if I'm boring you, but this is the thinking process that you have to be going through when you're learning how to go into the cloud, and this was helpful to me. Immediately things got better, because there was no contention between the operating system and the database.
24:22
So if we switch back over here to our remote desktop, which is about as small as it could be, and I apologize ahead of time, you can see, let's see if I can zoom in here. This is probably going to go badly for us.
24:41
Yeah, maybe I will zoom in on the window. There we go. I've got my local disk, and then I've got my MySQL data disk. That's that five-gig one, so all the data's on there. So then I talked to this fellow at Microsoft about how big I should size my disk, and I said, I made it five gigs, because I figured that it'll never get bigger than that,
25:02
which is stupid, because it will always get bigger than whatever the highest level you think it could get is. And I said, I didn't want to pay for the storage of that five-gig disk. But he reminded me that the storage is what's called sparse. You're actually only paying for how much storage is used.
25:21
So I'm paying not for five gigs, I'm paying for three. So I should have made that disk like 100 gigs, because I'm not really paying for 100 gigs, I'm paying for the number that's on it right there. So the number that you should always make the size of a disk would be like 999, whatever the max is, because you're not going to pay for that unless you fill it up with data.
25:42
So then I discovered there's also a D drive on Azure virtual machines. That's not the data drive, it's another disk. It's called temporary storage, and it is actually a physical disk on the machine in the rack. So C and F here are Azure storage disks.
26:04
Temporary storage D is an actual local thing, and then every time you reboot it's getting cleared out. So I went and I changed my temp environment variable to point over to there, and when I write my code, I could potentially, if I was doing work that was very disk intensive, I could tell it go to where the temp environment variable is,
26:22
and now I could potentially triple my throughput, because I've got my operating system in my C, my database, and my persistent data on my F, and this temporary disk for thrashing around, which is actually local. Does that make sense? So once I had that understanding of that,
26:40
I could start architecting my system more differently. So let's look at how you would do something big. I gave the example of the New York Times kids that did some great work where they took a bunch of TIFF files, terabytes and terabytes of it, OCR'd the TIFFs that represented the New York Times over the last 100 years, and then turned them into PDFs.
27:03
So imagine if someone gave you some physical disk with terabytes of data and said, handle this, right? So you've got a couple of things to think about. First, how do we get it up into the cloud? Do we copy each file individually? That would be interesting, right?
27:21
We could take each of those million files, say, and Azure storage them, and that would be like one file at a time. Or I could make a VHD, put them on that, and then copy the VHD up. And then once I'm doing that, all of the transferring and all of the talking back and forth between disks is happening inside of the Azure data center.
27:44
You're charged for bandwidth that leaves an Azure data center. You're not charged for bandwidth in. It's called egress and ingress. So ingress is free. Data coming in is free. Data going out is charged. So there's clever ways that you can get away with
28:02
not talking between data centers. And an example would be putting a bunch of data on a VHD, copying it in, and then just working on it. Troy Hunt did some really great stuff. You could take a look at his blog at troyhunt.com, where he wanted to really chew on some data and do some SQL server experiments. He just fired up a SQL server in a data center in the western US
28:23
because that's where the data storage happened to be, messed around for a couple of days, and then deleted the VM. But he did that after he made the mistake of trying to work on it remotely from Australia. He kept trying to connect to the data and bring the data back and forth. He's like, this is stupid. I'm just going to make one locally, remote in, and then do all that work.
28:44
And then you don't pay for any of that egress. So let's think about that problem that the New York Times folks would have to do. They're going to then four-loop over these tifs and OCR them. They could put them on a disk and then do that work, but they're limited to the disk.
29:02
And then they might say, well, once we've solved that, we're going to be limited to the CPU. So they've got to start thinking about parallelism. With a small virtual machine, I can have one additional disk. Remember I said you can go and have two total, four total, eight, 16, et cetera. If you make a larger VM, you get more disks. They could get a Godzilla-style machine, have F through whatever F plus 16 is,
29:26
like 16 disks, split up all those tifs, putting one sixteenth on each of the disks. Kind of the phone book problem. I don't know if you remember phone books, but like A through L and M through Z, that's like a phone book. They would shard that. They would partition that up.
29:42
And then they could fire up 16 processes, pin them to a processor, right? So then each process has its own dedicated processor and its own dedicated disk. And you could scale those things up and down as you like. If they didn't want to spend 16 processors and 16 disks,
30:01
they could do eight or they could do 32. And that's the kind of thinking that we have to be thinking about as software engineers when we put stuff in the cloud, is that it doesn't mean anything to add a bunch of disks or add a bunch of processors. It's a slider bar, where in the past it was a trip to IT to get another computer and hook it up onto your desk.
30:22
So when equipment is so cheap and so ephemeral, you know, I don't like that VM size. I'm going to change it, reboot, now I've got a large. That's what I do every month with my virtual machine when I'm going to go do a sending of my newsletter.
30:40
So this Windows machine here that runs the SQL database is pretty much chilling most of the time. You can see it's not super fast because of the internet and also that it's not meant to run a UI here. Physical memory, you can't see it, but physical memory used up is only 59%.
31:04
So remember, it only does one thing. That is the Windows machine. The Linux machine is called Hanselman Sendy. It is also small, and I'm going to go and try to connect to it.
31:26
I've got SSH running on it, and in VMs you have these things called endpoints. SSH runs on port 22, of course, right? I have mapped the internal port 22 to a public port, 12231, okay?
31:42
So let's try to SSH into that machine. Shush into that machine, thank you for that. We're going to make that a thing soon. I can never remember how to do this. Hanselman sendy.cloudapp.net 12231.
32:03
What's the user name? User's at Scott at. Let's see if that works. No? Forget you. Hanselman sendy.cloudapp.net 12231.
32:32
Pause for effect. I hope this is the password. That's a good sign.
32:46
Or not a good sign. We may be booting DOS here. I don't know what's happening. Okay. Run top. So 400 megs used, 200 megs free, right?
33:03
There's basically nothing going on here. This machine is also chilling. And that version of SSH that I was using sucks, so that's why I wasn't getting a good top there. This machine is doing effectively nothing.
33:22
And again, has basically no memory. But scaling it up is totally trivial. I'm going to go to settings. And from within here, you can go and search for whatever you want. So if I want to like find like disks, go like that.
33:43
And then each one of these blades, it's kind of like the old Xbox, can be individually pinned. And also you can have tiles that you can add to these dashboards. And I've actually gone and made like a custom dashboard here. So for example, this is a website. I can right click and say customize.
34:02
And I can move this around. This is all HTML5, which is kind of sweet. The Azure portal is one of the most cool and complicated HTML5 apps that I've ever seen. I can go like this, right, and resize this. And I've seen companies go and make dashboards with the things that they're interested in, right.
34:21
So if I'm interested in like disk IO on a particular VM for a short period of time, I could go and pin that tile directly onto the dashboard. I could also go and find like the amount of money that it was costing me to run a particular VM. And I could run that. I could have that dollar amount sitting there as well.
34:40
The other thing that I can do is bind together a bunch of virtual machines. So from here in the dashboard, it says search resources at the top. I've got a bunch of machines called Linux. I made this thing called Hanselman Linux Farm. I've got two extra smalls and a small.
35:01
And you see how they're called Hanselman Linux Farm and then dash two and dash three. What I did is I went and made a new Linux machine and set it up the way I wanted, and then I freeze-dried it and made it an image. And then now I can file new and make one of those from my existing image.
35:21
Does that make sense? So I got my own fresh Linux machine. I put PHP and Apache on it. I got it all set up exactly the way I wanted, and then I freeze-dried it, made it an image, and that image sits in my storage account. So there's a file called Hanselman Linux Farm image that is a VHD set up the way I want it to be.
35:41
So then when I go file new and make a Linux machine, I can pick from an existing template or I can use the one that I made. And then I can script all of that. So I'm going to go out to my blog. I recommend that everyone have a blog so they can Google themselves later. I've been blogging for 10 years. So any time I do anything that is in any way impressive,
36:03
I know I'm going to forget it the next day. So I just write a blog post about it because I don't remember how to do any of this stuff. So I wrote a blog post about how to set up a virtual machine. And people always tease me about my URLs because my URLs are awesome. But, man, I can Google them after so you don't get to complain.
36:24
So what I did is I get it all set up, my little test.php page, and then I use this command line tool and I shut down the thing and I captured that machine and named it as a template. And then that VHD just sits somewhere in my storage unattached to a virtual machine.
36:45
Does that make sense? So then later I can go and script how to make a bunch of them, like this.
37:01
So I went and just made one after the other. And then I add them all to a container and automatically load balance them on port 80. So then I have three Linux machines that are load balanced. And I can make it like that. But they're still virtual machines, so I have to keep them alive, and I don't like virtual machines.
37:21
But here is that back end. And then each time I hit it I'm going to get a different VM depending on whether or not the load balancer is sticky. So that's the IP address of that particular virtual machine.
37:40
But virtual machines are no fun, and I don't like them that much. You use virtual machines when you want total control or when you're learning or when you're doing what we call lift and shift. You've got an existing VM at work and you want to throw it up into the cloud. It's a good thing. And it also guarantees that you have total control of the machine. So if there's some custom thing that your software does,
38:01
you put it in a virtual machine and you throw it up in the cloud. If you just naively throw it up in the cloud, you'll probably hit performance issues, and you're going to want to think about things like disks and separating the data drive from the C drive. And those small things can make really big differences. You can also go and have auto scaling and scheduling
38:20
of how you want to scale these virtual machines. So you might say Monday through Friday it'll be a medium, and on the weekends it's a small. And then you can go and do the calculations, and you can find out that that means that like ten days out of the month, it's going to save you money. It's going to cost half as much, and if you had a whole bunch of virtual machines,
38:41
scheduling and automating your systems can save a company thousands and thousands of dollars. So what you can do is use this command line we've got. It's called Azure, and you can get this.
39:00
This is actually written in Node.js, and if you say npm install azure-cli, you can go and get this thing. And we've even got a really nice login process. Now you just say azure login, and it launches a browser, and then you log in and give it a code, and it authorizes. And there is a PowerShell front end on this,
39:22
but I think this is way easier. If you just type azure, it shows you all of the different commands that you can use, like azure-vm or azure-site. And the general structure is azure-noun-verb. So azure-vm-list, azure-site-create, azure-vm-delete,
39:42
azure-site-delete, azure-storage-delete. You already know how to do it. Literally, that's how easy it is. Does that make sense? So I could say azure-vm-list, and it's going to go and talk to the back end and get the virtual machines and make a list of them. Now this is really, really, really important.
40:00
The API that this is calling is totally public, and it is the exact same UI and the exact same API that is used by the Azure portal itself. There is nothing that the Azure portal can do that you can't also do in code. We have SDKs in PHP, Ruby, Java, .NET, Node.
40:24
So if you don't like the portal, we've had people write their own portals that are accustomed to their companies, accustomed to their applications. But more specifically, once you've made a couple of VMs after a while, you're going to be like, this is boring. I want to go and do it from the command line, and you'll bust those out. So here I've got those Hanselman Linux farms.
40:43
I might say, and I'm guessing here, azure-vm-stop-hanselman-linux-farm. So I don't say stop is not a command. It's probably shutdown. So here's the list. VM shutdown, okay?
41:02
I could even go like F7, which freaks young people out. I did that once, and they were like, oh, my God, is that Windows 10? I was like, no, it's DOS key. It's been around for 20 years. Azure VM shutdown, Hanselman Linux.
41:22
I can't even type my own name because you're all looking. Farm. Executing command. Shutting down VM, right? So remember how I told you that there was a time when I left a demo VM running? It was a large, and then I woke up, and it cost me money? I could have scheduled something to go and shut
41:41
the thing down itself, right? I could even make a batch file that would, like, clean up demos and delete everything that had poop in the title or, you know, whatever appropriate thing I wanted to do is. If I go in, I'm going to run another DOS box here, and I'm going to say azure-vm-list dash dash JSON.
42:03
This is going to show you what the JSON looks like at that API endpoint so that you really understand that this is an API that you all can call, okay? Remember that Sendy? So there's Sendy. There's the IP. There's the disk, see?
42:22
Now, you see it says media link right there in the middle of the screen, and it's got the list for the, it's got the location of the VHD. Just because it has HTTP in the front doesn't mean that you can go and take that URL and download my disk. But that's the addressable ID of that disk.
42:40
That's the addressable ID that Azure is using to then mount that disk, just to really, like, hit it home that these are VHDs sitting in storage, and Azure mounts them in storage directly. You've got your IP addresses inside and outside. My endpoints, remember how I told you that I had
43:01
mapped the local port to the remote port? So let's try something a little bit more interesting. These are, I've been talking about VMs. Let's go up to websites, okay? So websites are platform as a service instead of infrastructure as a service.
43:21
So virtual machines sit on top of storage, and you manage them, and you can do anything you want. You have full control. They are yours. You own them. Even if you delete a VM, if you don't delete the disks, you can just make another VM and then attach the disks. If you have Hyper-V or a VHD on your own machine or a machine at work, you can upload that disk,
43:40
make a VM, attach the thing, and then boot off of that virtual machine. Websites are totally managed by Azure. They do run Windows. They run a custom image of Windows. They automatically update themselves, but they guarantee that your website never gets rebooted, right? With a virtual machine, once you've made it, you own it.
44:02
It's like a puppy. You have to keep it alive. You have to run Windows Update. Websites will be always up and always up to date, and it's done with magic, and there is an underlying virtual machine, but you just think about the higher-level stuff, and I like that because I know how to install Apache and stuff.
44:21
I don't want to sweat it. I just want to run the expense reporting system that my boss told me to run. I just want to upload the website, and I don't want to think about the virtual machine. So I've got a thing here. It's called All-in-One. Let's test this here. This is a website with an awesome directory.
44:45
All of my direct... You know, they give you long file names. You should use them, right? All right. So here's a bunch of stuff, and I don't think I have anything hidden in there, and I'm going to say,
45:01
azure-site-create-location-west-europe-get.
45:20
This will probably work. So that's going to do the exact same thing as if I went into the Azure portal and said, create a website. I said, dash, dash, get, because I'm going to use get to deploy the website. I could use FTP, but get is FTP for code already, so I'll just use that instead.
45:46
Now, it called get remote ad. People know get, right? So I've got a local repository, and there is also a repository up there in the cloud with the same name,
46:00
and then it has .scmsourcecodemanagement.azurewebsite. So my website is londonpoop.azurewebsite.net. The source code one is like a sidecar website made just for the source code stuff, okay? So now I'm going to say, get ad, add all this crap, get commit, yay, okay?
46:24
So I just committed that. Get push azure, and then the master branch, and before I do that, though, I'm going to go back over into my portal, which I got logged out of because I waited too long.
46:46
I'm going to go and search for that website. You laugh now, but you're going to find yourself doing this because it works, okay? See, it says requests and errors.
47:02
There haven't been any requests, right? I'm going to come down here to continuous deployment, okay? No deployments found. Get push azure master.
47:24
So you see it says writing objects. So it's spitting out that code there, and you see on the right here, it said pending. I didn't do refresh. It automatically picked that up, see? So it knows something happened. You see on the left there, it says remote. That's messages coming from in the cloud.
47:42
So the cloud is now reporting back to my dash box there. Deployment successful, master to master, and on the right-hand side, I would anticipate it will update in a moment, and now there is an active deployment. I can click on that deployment there and see all the details.
48:04
And this is really, really important, okay? Because most platform as a service type situations are magic, right? They trust you. The whole point of platform as a service is to hide the virtual machine. There's still a VM here.
48:20
I haven't done anything I couldn't have done in a VM, but the VM I would have to set up IIS and set up Git and set up deployment. This is yak shaving. This is what I talked about in the keynote, right? All the crap you've got to do before you do the thing you want to do. Just kind of shave that yak. And once the yak is shaved, then you've got your website up.
48:42
But things like load balancing and setting up web servers and making them secure, these are known things. Like we spent the 90s learning about these things, and what I count on a cloud or a good hoster to do is to codify these and make these best practices just work. So now I've got a website that's running in the cloud on a virtual machine,
49:03
but I can, if I want to, dig in and look at all the logs and see the internals. So it is a black box until it's not. You can crack it open. I can debug this deployment, okay? So now I want to go to londonpoop.azurewebsites.net.
49:21
I want to find that there's like a club or something that's called London Poop. It's like super popular with the kids, and then it's going to screw up my entire startup here. London's hottest club is. Now, this is a really cool website because it has a static HTML component,
49:42
classic ASP because I can, Node.js and PHP. That's a static file. That is actual classic ASP, a .ASP file. That's ASP.net. That's Razor. That's Node.js, and that's PHP, all running in the same website because you can, of course.
50:02
Why not, right? IIS runs all these things. Windows runs all these things. There's no reason that they have to be separate websites. You can mix and match these technologies as it makes you happy. Now, let's say that a bad guy quits the company in anger.
50:29
They go and they go do something, and they check in something in anger. So here, git commit, and they've defaced our website.
51:02
So now, I can go back over here, and I can press the oh shit button, and then redeploy the previous deployment and undo it.
51:23
I can also go back into the log, and I can find out how these evil people did this thing. Again, not having to think about the virtual machine. But if I want to see what's underneath the virtual machine, I can. You can even, again, I remember I'm in a browser here.
51:43
Go to, where is it? Yep. Where is my console? Oh, it's under tools now. Tools. All these performance tools.
52:00
Thanks. Check this out. In the browser, a little console. So I can really see what's going on there. This is really kind of weird, because I understand, I'm trying to juxtapose two things. I'm showing you how high level you can think about stuff. You can go and script the creation of all these websites, scale them out, send them all over the world.
52:23
But if you need to, you can get down into a little DOS box here, and make sure that the file you think is in production is in production. But even more than that, if I go to London Poop and type in .scm, source code management,
52:40
I can actually see the sidecar website. This is called Kudu. Kudu is open source, and if you want to run Kudu and do all of this stuff yourself, internally you can. Additionally, if your company doesn't want to use Azure, the public Azure, we have a thing called Azure Stack, where you can run Azure,
53:02
an instance of your own personal Azure, in your own company inside. You get the same dashboard, you get the same APIs and tools, and you can run storage and SQL databases and websites and virtual machines. So in here, I can go and explore the running processes, a little process explorer here.
53:23
See? There's node and there's PHP hanging off of the side of IIS. I could then click on properties and see what modules and handles, exactly what files are loaded. If there's any concern about like, oh, I think the DLL with the wrong version got deployed,
53:44
how do we find out? I can go and do that. But again, everything that you can do for real here, you can also do programmatically. Because programmatically is where it's at. So what if I did this? See? It's a REST API over the files.
54:05
You can also do a REST API over the running processes. So there's node running on my system. And there's the PID, the process ID. So there's node and its threads and the state that those threads are in.
54:21
And the files and their specific versions. So I'm showing you this because I want you all to stop shushing into machines and remote desktopping into machines to answer questions. Because that's what we find ourselves doing, right? And that only works when you have to manage four or five machines. But when you're in the cloud and you have to go and manage 1,000,
54:42
then things start turning into programmatic issues. If you've got 1,000 websites or 1,000 instances of website and a flaky bug is coming out and you're like, I don't know, is the right version of foo.dll everywhere? And you need to answer that question. You can't remote into 1,000 machines. You don't want to redeploy to 1,000 machines.
55:02
What you're going to do is for loop over those machines programmatically and ask the question, is the right version of that file installed? Does that make sense? So my point I'm trying to make is that websites or web apps, this platform as a service gives you the right balance between being able to access the low level
55:22
but also being able to completely hide it if you don't even want to think about it. Does that make sense? The last thing I want to show you, which makes me happy about the cloud, is that not only can I go and scale up, I can scale out, right? I could say I want three instances of this website, but I can also put them in multiple locations.
55:42
So I've got a little startup that I'm hoping will make me rich, and then I will quit and you'll never see me again. Because seriously, when this thing pops and becomes awesome, I'm gone. I'm just going to delete my blog and it's over.
56:01
So here are three websites for my little startup. It's me and another guy, and we've got systems in Southeast Asia, West Europe, and North Central US, but it's the exact same website. And this is what's so cool about the cloud. It's two of us. We have no money.
56:22
We're paying $47 a month total for this whole thing, and we deployed it into three countries and then geographically load-balanced it. So if you hit hub.myEchoApp, if we were here, we see West Europe.
56:40
If I was in the US, it would say North Central US, and when I was in Japan earlier, it said Southeast Asia. Like, that's amazing. And I'm just two people. This is the kind of stuff where like ten years ago, it would be a huge deal. So what this allows us to do, and I'm just going to give you a demo because I like my app,
57:00
is I have an iPhone, but I like Windows. So I always do my stuff on dictation. I dictate my email on my phone. Siri has amazing dictation. And what I would end up doing is I'd dictate it into an email and then email it back to myself and then paste it into Word or whatever. So we made this app where you can take your iPhone.
57:24
We wrote this in Xamarin, and I can scan the code. So I just paired. See, it says connecting if we have Internet here. There we go. Scott's iPhone just joined.
57:41
And now basically I can just talk, comma, using punctuation correctly, period, and it's hashtag awesome. You can talk for as much as about 30 seconds, comma. It's extremely accurate,
58:00
and it works in 30 different languages, period. I can also automatically paste the data directly into Microsoft Word or any application that accepts clipboard input, exclamation point. So it missed accepts, accepts versus accepts.
58:21
Other than that, it's 99 percent, okay? So I'm abusing Siri. We've got a C Sharp app here. And true story, I went to Japan, and it wasn't fast enough to go to Southeast Asia. So 15 minutes before the talk, I fired up another website in the Japan data center
58:43
and then uploaded my app with a Git deploy because it's all done in a batch file and then did the geo load balancing and then ran the whole thing in Japanese. Isn't that crazy? So if we become popular in Japan, right,
59:00
you know, just slider bar. And this will happen. Every once in a while, my partner will e-mail me. We got written up in a German newspaper. You know, scale up, woo! You know, and then for a couple of days, we spend like 10 bucks, and then, you know, nobody cares about our product. So it hasn't like, we've made like 400 bucks. But the idea that the infrastructure is there,
59:22
like that's the point. We're doing this on the cheap. It's a bunch of small websites. We've done over a million words dictated, but we're hoping that we'll be able to scale as big as we want. And the system is architected as it is here with SignalR and ASP.NET and Web API, and it goes across firewalls. And you saw it just worked.
59:41
I actually didn't even plan to show that. And it was just two of us. That's why I'm excited about the cloud and why I wanted to kind of share how I think about these things with you all. Other things that live in Azure that we haven't had time to talk about, but I'll give you some resources.
01:00:00
is to look at are things like web jobs. Web jobs are like background processing jobs that are happening in the background, and they can be written in whatever you want, PowerShell, Node, batch files, Python, whatever. For example, I've got a background job that is pulling data from a cloud,
01:00:22
and this right here is a real time chart of my blood sugar. I'm a diabetic, a type 1 diabetic. I have an implant. It's a battery, a Bluetooth battery that's implanted in my stomach.
01:00:40
And it talks to my phone, which then sends the data up to the cloud, which then gets pulled down into a Node application. And a web job runs regularly, and it predicts my blood sugar and shows what it's been historically. So that's an open source app running in Node that keeps me alive, which is pretty cool.
01:01:02
And the web job is separate from the web app. It's a background thing. We've always done that before. We've spun up a background thread in an ASP.NET app to do some thing. It's not meant to do that. Why not have a separate little process that's running that can be individually managed?
01:01:20
And web jobs can be written in anything that you like. So those sit on top of websites, would sit on top of virtual machines, would sit on top of Azure Storage. Azure Batch is for doing big batch level workloads across thousands of virtual machines. That example I gave about the New York Times, they could have done it on virtual machines. They did. They did it at Amazon.
01:01:41
The smarter thing would have been to do it as a batch job and let Azure Batch manage the number of virtual machines that would get spun up to do that. An example of a really cool batch job would be media services, like transcoding multiple terabytes, thousands of terabytes of video.
01:02:01
So we've got a services system on top of that where media services, you send it a bunch of high def video. It squishes it, makes it work everywhere. That's using Azure Batch, which is using virtual machines, which sits in Azure Storage. So you start seeing, hopefully, how the LEGO pieces fit together. To learn more about this stuff, take a look
01:02:21
at friday.azure.com. This is a show that I do on Azure, and I've done hundreds of them. What's different about this show from most kinds of things that you'll see on the internet and Channel 9 is the shows are 10 minutes long. I don't do half an hour, hour-long stuff,
01:02:42
because I'm amazed you all are still here, frankly. An hour is a long-ass time to listen to anybody talk. Sometimes you just want to know how to do something. And you don't want to hear from marketing people. So what I do is I go into the Azure organization, and I find the engineers that worked on the thing, the ones that are totally geeked.
01:03:00
And they're not always awesome speakers, but they're geeked because they wrote the thing. And then I'll ask them to show me that thing in 10 minutes. And I've done hundreds of them. So if there's a topic that you're interested in on how to scale out Azure or how to make a website or how to transcode images or whatever, there's probably a video up there. And you can also get it on iTunes
01:03:21
and watch it on your iPads. Cool. So I think that's our time. And if you all have any questions, you can ask them now as people file out. Thank you very much. And do try to follow me on the Twitters. Thank you.