Transcripts

Coding 101 52 (Transcript)

Father Robert Ballecer: The philosophy of assembly with Steve Gibson and Lou Maresca drops by to give us a guest show host spot. Coding 101 is next.

Netcasts you love, from people you trust. This is TWIT. Bandwidth for Coding 101 Is provided by CacheFly, at cachefly.com.

This episode of Coding 101 is brought to you by HipChat Plus. Collaborate, save time and be more productive with your teams. HipChat Plus is IM, video chat, plus file, code and screen sharing all in one place. Invite your team members and get a free 30 day trail of HipChat Plus at hipchat.com/c101.

And by Lynda.com. Invest in yourself for 2015. Lynda.com has thousands of courses to help you learn new tech, business and creative skills. For a free 10 day trail visit Lynda.com/c101. That’s Lynda.com/c101.

Fr. Robert: Hello and welcome to Coding 101. It’s the TWIT show where we let you into the wonderful world of the code monkey. I’m father Robert Ballecer, the digital Jesuit and joining me for a special spot on the show is Lou Maresca. Now you’ve seen him before, but today he is our guest co-host. Lou, thank you for doing this.

Lou Maresca: Hey thanks for having me back, I appreciate it.

Fr. Robert: We kind of wanted to test this out a little bit. We wanted to rotate through people who we’ve had a good vibe with here on the show and of course you’ve done 2.5 modules plus a wildcard episode with so we know you’re a good fit for the Coding 101 army. So thank you for filling in these shoes.

Lou: Yeah, you bet. Love the Coding army and love the G+ community. They ask some really amazing questions out there too, so keep that up.

Fr. Robert: Yeah, they’re good. You know anytime you get a good group of people who want to solve problems, that’s always going to be fun. Speaking of solving problems let’s talk about a little something that involves your company. You’re a senior software development lead over at Microsoft and let’s talk about Microsoft making a bigger move into open source. This happened just last week. Microsoft is acquiring a company called Revolution Analytics. That gives them a company that uses the R programming language. First Lou, what is the R programming language?

Lou: Basically it’s a statistical library or language that allows you to basically model data around for basically machine learning purposes. And so it’s used by mostly computer scientists, mathematicians, right now. But Asure and ML, which is Asure Machine Learning is at its core. So that’s how you can basically build that model using the R programming language. And so this acquisition is huge because Revolution Analytics is a wrapper around the programming language to make it even more affective.

Fr. Robert: Alright. We should note that R is an open source language. So this is in essence Microsoft betting big on open source. But I have to ask, why do we need an entirely new programming language for “big data”? Why can’t I use one of the existing languages to do the same things?

Lou: It’s a good question. So the way that R actually models languages today is different. It does it in more of a set based analysis. So it can basically determine sets of data that meet specific criteria and so the way that it’s more related to a functional programming language than it is really a static programming language. So that’s why it’s a lot better for doing that- modeling large sets of data.

Fr. Robert: It reminds me of 4Tran. An old language, around when I first started programming and it’s great for mathematicians. Mathematicians love 4Tran because it’s close to the way that they do problems. Is that the same kind of idea with R? I mean, yeah, you might be able to do big data analytics with something like C Sharp, but it would mean that you’re using incredibly large registers and you’d be hacking a lot of the language in order to deal with such big data sets.


Lou: Yeah. I mean, R has built in algorithms specifically for large sets of data. Where CC, plus plus you have to acquire these functions and algorithms. But R basically has it all built in. and there’s lots of extensions in R that make it even more possible to use against specific types of models. So like specific types of data structure and data sets. So it’s fundamentally made specifically for big data.

Fr. Robert: Right. Let’s talk a little bit higher level. We’ve seen Microsoft make these moves over the last year. And they’ve made a lot of moves towards open source. Up to the point where they actually open sourced part of the .net library. Where do you see this going? Because we’re seeing more and more that Microsoft is turning more into a services company and so the holding on tight control of all those old mainstay products doesn’t seem as important but where could this ultimately bring them?

Lou: Like I said, Asure ML, which is Microsoft Asure is a big service obviously that Microsoft has been putting a big bet in. so they have now a new beta for- which is called Asure ML, and it basically allows you to build out models around large, huge, massive data sets and the data can come from anywhere. It can come from databases, it can come from the cloud data storage, it can come from pretty much anywhere and you can feed this data into the ML models which you use the R programming language to build out the models and support and so on. And then you apply these models and then Asure ML can actually develop you – it uses machine learning algorithms to actually make sense of your data. So they’re putting a huge bet into this and that’s why they made this language open source. They used this open source language and the new acquisition to open source because they want to push that because it’s such a huge thing now a days to tackle. Is making sense out of massive amounts, millions and millions of customer data, or billions of dollars’ worth of data that they need to make sense of it all.

Fr. Robert: Last question. And this one is a big serious one. And that is, what are the chances that Microsoft will open source the Hollow Lenses? Because I really want to get a set of that. When will that be available? For people who have been under a rock, Hollow Lenses is the brand new AR product from Microsoft that looks phenomenal. And I want to know when I can program for it and I want to know when I can get a set to put on my face.

Lou: So to be honest, we had a Q&A session today with – and although I’m not allowed to divulge any information from that discussion, what I do know is that a lot of people asked about if there will be an STK or development platform for it. And I’m pretty sure that there’s going to be something coming out. Who knows if it’s around the release time or not? But they’re still saying spring for the release time.

Fr. Robert: Show title, we just got Lou fired. Now Lou, when we come back we’re bringing Steve Gibson back onto the show, we wanted to do something a little bit different. This isn’t a wildcard episode but it’s not a hard coding episode. He is a big proponent of assembly. It’s a very low level language and he wanted to let us into the philosophy of assembly. To let us know why he still uses that language, why he still thinks it’s incredibly efficient and why he thinks it has allowed him to build up a foundation in programming. But before we do that, let’s go ahead and take a moment to thank the first sponsor of Coding 101, its HipChat. Now what is HipChat? It’s fantastic. Its business communications. I know there’s going to be people out there going wait a minute, we communicate in my business. We’ve got email, we’ve got text, and some of us have pagers. We have voicemail, we have video calls. But even though that may work and even though that’s a good way to communicate, there are plenty of sweets out there, HipChat is specifically designed for businesses. And businesses are the ones who are going to love HipChat because it allows you to keep a history of what your communication looks like. I’ll explain why that’s important. When your team communicates, when they use a variety of programs, from email, IM, texting, cloud storage, document sharing apps, they have little bits of pieces of the answer everywhere. And if you’ve ever had to do forensics on your project planning to figure out where a good idea came from, or where a bad idea came from, you know that you want an easy way to look back through time. Through the time of your communications and figure out what happened when. That’s what HipChat lets you do. It gives you a time machine so you can see the genesis of that next great idea. They give you IM, video chat, document sharing, screen sharing, system updates, and code sharing integration, which is important for our audience, in one simple platform. Email is too slow, meetings get sidetracked and regular IM doesn’t work well for groups, but HipChat keeps your team in synch. And it works from any device no matter where you are. The best part is that HipChat integrates with the top developer tools like GitHub, Gira, Zen Desk and more. You go to their website and check out the 57 services that HipChat plays nice with to see if maybe you don’t have to do much integration at all. Just turn on HipChat and start working better. They bring your entire project and team together in one communication suite. It’s easy to set up, it’s fun to use, and it makes you productive. Now here’s what we want you to do. We want you to try HipChat Plus. You can get your team on the same page in seconds. I want you to try them for free, no credit card required. Visit HipChat.com/c101, click on “start chatting” to sign up now. Then invite a few team members and all the features are free for 30 days. After the free trial you can always stick with the freemium version. That’s hipchat.com/c101. Hipchat.com/c101. HipChat, your team, your project, in synch, instantly. And we thank HipChat for their support of Coding 101. Now is the part of the show that I really enjoy. It’s when we get to introduce our guest expert. Our code warrior, and as it was last week, this week it’s Mister Steve Gibson from Gibson Research. Steve, thank you very much for coming back on.

Steve Gibson: Great to be with you guys.

Fr. Robert: Now your appearance on our wildcard episode last week stirred up a lot of emotion within people. There were a lot of people saying, right on, foundations of programming. We’ve got to go back and figure out why our tools work because we’ve gotten to a point where if you take away a layer of abstraction, we’re back in the dark ages. Tell me, is that what you hear a lot from people who are listening to your knowledge? Do they kind of sit back in awe and say yeah, I actually don’t know how my computer works.

Steve: I guess my feeling is where I was coming from when we talked about that last week was noticing that educational systems which try to teach coding by skipping over a first building a foundation of understanding for what’s going on all the way down to the machine, have a problem. In that you end up with a programmer that can sort of solve things by route by formula or by cutting and pasting, but can run across problems that they just don’t have the knowledge to solve. Because there’s potentially critical pieces of their understanding of how the system functions that are missing. Whereas if you have somebody who really does know where this came from, who really understands what’s going on below, not only are they able to solve any problem that you give them, because with that understanding there isn’t anything beyond their grasp. But the other thing that I didn’t mention is that they have a better ability to solve the problems efficiently because if you don’t understand what you’re asking the system to do, you can ask it to do things that are really difficult. That there are better approaches for solving the same problem, and you only get that by understanding- for example, in a higher level language it’s easy to express something that is very hard for the computer to do. If you design your solution with difficult for the processor to achieve requirements, you’re going to end up with an inefficient result. Whereas if you design your solution with the way the system actually functions in mind, then what the system actually ends up doing, it’s able to do easily.

Fr. Robert: Steve, let me go ahead and ask this now that is what does assembly do? I remember assembly from my college days. I remember trying to get away from it as fast as possible. I didn’t have a mind for it, I wasn’t very good at it. When we talk about a low level language, how is that different from C Sharp or any of the new languages that we might have?

Steve: Okay, so one of the neatest things about the language C, is that it was originally designed by some really smart guys back at AT&T who had written their first version of UNIX in assembler. What assembler is, is sort of a direct expression of the individual instructions that the hardware executes. For example, you don’t have- you can’t say A plus B = C. you have to load a location and memory that contains the current value of A into a register. Then you need to add the location of memory that contains the current value of B to that register and then you need to store the result into the location of memory where you want the result to be. Which in a higher level language you just label as C. So the point is that you are breaking down the much more easily and generally stated thing you want into the actual steps that the hardware, the microprocessor takes in order to achieve that. It seems like a dumb thing to do. But it’s like wait a minute, if I can say A+B=C, why wouldn’t I rather say that? The reason is that a lot is lost in translation and there are people who argue oh no, today’s compilers are so efficient, nothing much is lost. Well it’s just not true. The fact is, today’s processors are so fast and memory is so fast that I wouldn’t argue that there’s no reason for assembly. I program in assembler, not because it’s faster, or easier, but because it’s what I like. It’s like the classic- the question, what’s the best language to program in? Well, it is the case that there are special purpose languages that excel at specific sorts of problems. But putting that aside, the answer to “what is the best language?” is normally the one you like the best. The one you want to use. The one you’re most comfortable in. so it’s like, if you’re Randall Swartz, and you know Perl like nobody else’s business, then you can probably solve a problem in Perl almost instantly because Perl is so crazy and powerful. Whereas, if I were to solve the same problem, actually Perl is my alternative language to assembler. Because I want to go sort of to opposite ends of the spectrum. But it’s often the case that I just enjoy using assembly language. I like- I came from hardware, I was wiring and designing computers before we had chips and building computers out of relays. So I understand where it came from. And I just never decided that I wanted to do something else. But I mentioned C in the beginning, C, the original C language, is really nicely designed. Because those guys understood that they wanted to create a language that was still really nice to the hardware. And C is very close to the hardware. It’s a powerful and fast language that I think makes a lot of just exactly the right sets of tradeoffs. At the same time it’s got a very powerful pointer structure so you can get yourself in trouble easily if you don’t understand what you’re really doing.

Fr. Robert: Alright, let me ask Lou a little bit about that. Lou, you program for a living, your choice is going to be Microsoft tools. What about that? I want to go back to that question that Steve answered in the middle of that segment, and that is that there a lot of people, we got of emails after his first appearance on Coding 101, that assembly is just silly now. It’s just moot. There’s no reason to use it because modern compilers, and actually a few of them use the example of Visual Studio, will create code that is far more efficient than you can ever make in assembly. Does that sound right to you?

Lou: Not necessarily. Honestly, there are a lot of programmers, even here at Microsoft, there’s a famous one by the name of Raymond Chan and he’s an old Windows programmer that’s been around for a long time and he swears by the assembly language. He will write assembly in his C code because compiler can handle assembly and it will literally- he swears that its better. And that’s the reason is, because he just knows that he’s more efficient in writing that. He could probably write more efficient code, updating the registers and the stack on the CPU than the compiler can. Because he knows the tricks, the trade. And the compiler doesn’t necessarily know all of them. But the other side of things, yes, compilers and assemblers and linkers are getting better to the point where now, depending on what platform and what CPU type you’re on, it can optimize the code better than potentially somebody can write it in assembly themselves. Unless you’re a wizard like Steve. You’ve been doing it a long time, you know all the tricks of the trade and you don’t necessarily have to worry about a compiler doing it for you. But if you’re just learning and sometimes you need to know the tricks, sometimes using a really efficient compiler and looking at the machine code that it actually dumps out and comparing that to what you’re writing, sometimes helps you learn too. So it’s all dependent on where you’re coming from and how much experience you have.

Steve: I’ll just say that one way I might rephrase that question is it sounded like the person who asked might have been implying or maybe I’m reading more into it, that in a higher level language, you can sometimes write a more complex and better solution because you don’t have to spend all your time at the lower level. That is, it’s clear that anything you can do at a higher level language, I can do in assembler. Because the higher level language into assembler. So by definition, anything you can write. But there are things I would never want to write in assembler, because I’d just lose my mind. Because – so there is absolutely a place for a compiler, that is for a higher level expression or type of express ability. Look at regular expressions for example, I don’t ever want to have to write a REGEX parcer in assembler. They already exist so I don’t want to do that. And the other thing I would say is that when I’m writing- I write a lot of code for Windows, it’s actually the case that most of my code is a script calling the Windows API. That is, my code spends most of its time in Windows that is in the API calls and basically I’m stitching those together with assembly language. So it’s not as if I’m writing to the bare metal for example, SpinRite, where there is no OS underneath. In a contemporary environment, most of what’s going on is you just calling the operating system and asking it to do things for you. I just prefer to make that scripting in assembly language.

Fr. Robert: Steve, we’ve got a question from the chatroom for you, from Dallas who wants to know if assembly has any place in web programming.

Steve: Look at all the competition we have for client performance. Everybody is benchmarking Chrome vs. Firefox vs. IE. Now client side performance has become crucial. And again, if you had to write a rendering engine or even a JavaScript parcer in assembler, you’d just rather shoot yourself. Because they are so complicated that you need the aid of a higher level language to buffer you from needing to deal with all the details. On the other hand, if you did write one in assembler, it would blow the doors off of everything else for the rest of time.

Fr. Robert: Okay, we’ve gone 20 minutes in and we haven’t actually seen any assembly code. So I’m going to pull something up. I’m hoping that it’ll lead us into explaining why this actually works. Because the first time people see assembly, it does blow a lot of heads. I did not write this, I got it straight off of Wikipedia, this is a sample of code for an X86 assembly. So Steve, this should start looking familiar. This is the first one that actually gets executed. Org 100h. I remember this with a passion. I hated it with a passion. What is this doing?

Steve: Okay, so I can read that. That’s just English to me. I’m completely comfortable. So at the chip level, remember I was talking about memory locations. So memory locations can store in a so called- well there are many different architecture names. But the architecture that has generally has won the war is where instructions and data occupy the same space. So you have locations in memory that contain data. And also locations in memory that contain instructions. So what that org 100h says is you’re telling the assembler that the following instruction which is that move the value 3 into the ax register, you’re telling it, start assembling the program from location 100 hex. So that the op code, which is move, is shorthand for some random hex. And I don’t even know what that is. If I had to I could look it up. But I program at that level, I know that move means copy what’s on the right hand side of the expression, that’s the number 3, into what’s on the left hand side, which in this case is one of a number of registers in the chip itself, which is different from memory. Memory is outside the chip. Registers are inside the chip. And the reason is, its time consuming to go and fetch things from outside the chip into the chip, or to store them outside the chip. So you have on chip registers where you can work with the data much faster. And actually, this little example is a perfect example of what I was just saying where we are moving a 3 into the register ax, and then that next instruction is a so called software interrupt. We’re saying generate a software interrupt number 10 hex. 10 hex is a call to the original PC bios for video functions. Where the value that is in the ax register when that call is made tells the bios, the 10 hex bios functions what to do. And in this case it says place the screen into 80x25 16 color text mode. Which basically says how should a region of memory be displayed to the user.

Fr. Robert: You know Steve, its- lets describe these registries a bit more because I actually grew up at a time where the very first hardware I got my hands on, because I was a dumpster diver, were these old computers where I could load one bite at a time. I had switches. So I would flip the switch to make it do the instructions. And then I had an execute button, and it would take all those switches and turn it into something that would happen. That’s essentially what we’re doing with assembly right? That’s the idea of the registry. I load something into the registry and then when I hit the interrupt, it says, okay, run that.

Steve: Um, yes. The original computers were like the panels I have behind me. They were sometimes called blinking lights or switches and lights. And the idea was that an instruction, originally, generally had a fixed length. It was always 12 bits for example. In the case of those PP8s I have behind me. It was the first famous minicomputer that digital equipment cooperation made. And so that 12 bits had 3 bits on the – the most significant 3 bits were the so called op code. Something like load, store, add, jump and so forth. And because you had 3 bits, you had a total of 8 op codes. Only 8 different things it could do. And then the balance of those bits of the 12, because it had a 12 bit instruction, that was the argument. For example, if it was a load instruction, then the rest of the bits would say load from where? If it was a store instruction, then it would be store to where? And so forth. And so the idea was the actual bits in memory were read one by one by the hardware of the processor and it would look at the bits and figure out what to do. Then it would do that. and then unless it was a jump instruction, the program counter would increment by one to point to the next location in memory, and then the computer would get those bits and decide what to do next.

Fr. Robert: The marvelous thing about assembly is, you just told us what the move command does. So the move command takes something on the left hand side and moves it into the register indicated.

Steve: Yeah, I was careful to say it takes what’s on the right side and moves it to what’s on the left side. Because you could have two registers. You could have AX, BX. Or you could have a memory location, AX. In which case the contents of the register AX would be stored essentially into the location over on the left. So for example, the intel- and this is Intel code we were looking at- it doesn’t have an explicit load and store. It has a move, and whether you’re loading or storing is implied by what’s on the left and right sides. The source and destination essentially.

Fr. Robert: So what’s the difference between

Lou: Steve, each register has a specific meaning too right? They do something very specific when you’re storing data in those registers?

Steve: Yeah it’s funky. The original designers gave some of the registers special powers. For example, they can be used sort of as general purpose registers. In the original 80 88 chip there is ABC and D. AX, BX, CX, and DX. But for example, there is an instruction called loop which is used for iteration. And it always uses the value in the CX register which it decrements. And if it did not decrement to zero, that is if it’s not done looping, then that instruction jumps back up to a certain location. Back then, memory was very expensive. So if the loop instruction didn’t imply what register to use, then you’d have to specify it. Like loop on CX. But that would have taken up more space. So the designers said let’s just make the loop instruction assume or imply that the CX register. Because that’ll save a few bits. And back then bits were expensive.

Fr. Robert: Steve, looking back at this code, how much of assembly is moving things into registers? Because this program is actually hello world. So this is the basic program you would get, I move these, which I’m assuming those are characters. Into a register. And then somewhere along the line I’m going to have an instruction to tell it how to output the screen. Is this essentially what I’m doing when I’m doing assembly, is just this over and over again?

Steve: Sort of.  I’m wishing I had given you beforehand a link to some of my assembly code, it’d be just perfect to show it. I have a chunk of it, I just wrote a really nice binary search about a year ago for looking up the contents of string values. There it is. Its www.grc.com/miscfiles/bianarysearch.png. And that’s what my code looks like. So you can see that it doesn’t look like a string of op codes running down the left-hand side of the screen. I also use all Microsoft tools. That’s Masm, which is Microsoft assembler. And notice that it says while EAX less than or equal to ECX. You can see this is very legible. I use meaningful variable names like target for example. And some of my other little things like “halve edx”, that’s not actually an instruction, that’s a macro that I wrote which shifts edx right by one. But what I’m actually wanting to convey is that I’m dividing it in two so I use my own macro, says halve. There is a different instruction, but it’s not as obvious why I would be doing that. Here, by saying halve, it’s much more clear. And look at that, if, else, if, else and if. So those are higher level- its why I love programming in assembler, its higher level structures in assembler and what’s beautiful about masm, its zero overhead. That is, that if instruction exactly evaluates to one op code. One instruction. So there’s no penalty. I wouldn’t use it if there was a penalty. There is no penalty to expressing it that way. But look how much more readable that is. So my point is, it is possible to code beautifully in assembly language and have absolutely no cost in terms of overhead in size or in performance.

Fr. Robert: That was completely unknown. I had never used masm before. Now I really want to check it out because those little bits of higher level programming take out so much of the grunt work because now I’m just worried about logic.

Steve: Well, for example, one of the things you have to do if you don’t have this kind of flow control, is you have to have what’s called branch targets. You have to have a label to jump to, even if you really don’t want one. It’s like if I have 2 blocks of code, I want to say if this, else this. I don’t want to have to say if this, then jump to something else, and at the end of the code I don’t go to, jump around the other stuff. You end up having to create these temporary labels and then it’s like okay, what am I going to call this thing that I really don’t want to name, I just want to execute this block or that block. And so masm allows you to do that. And so it makes for beautiful code.

Fr. Robert: Steve, when we come back we’ve got to have a little bit of a wrap up session because we need to move on. But I want to leave people in a good place with assembly. Hopefully they’ll be able to get a copy of masm from Lou. Lou can you hook that up?

Lou: Yeah. Visual Studio Express, do just a C++ package project, you can actually start assembling using the masm.

Fr. Robert: We’ll talk about that in just a bit because I’m feeling there’s a lot of burning brains in the audience right now so let’s take a break to thank the second sponsor of this episode of Coding 101, and it’s the repository of all knowledge on the internet. Also known as Lynda.com. What is Lynda.com? Lynda.com is a one stop shop. A repository for knowledge. Both of new knowledge and knowledge that you just need a refresher course on. Lynda.com is an easy and affordable way to help you learn. You can instantly stream thousands of courses created by experts on software, web development, graphic design, and more. Lynda.com works directly with industry experts and software companies to provide timely training, often the same day you get the new releases on the new versions on the street. You’ll find new courses on Lynda. So you’re always up to speed. All courses are produced at the highest quality. Which means it’s not going to be like a YouTube video with shaky video or bad lighting or bad audio. They take all that away because they don’t want you to focus on the production, they want you to focus on the knowledge. They include tools like searchable transcripts, playlists and certificates of course completion, which you can publish to your LinkedIn profile. Which is great if you’re a professional in the field and you want your future employers to know what you’re doing. Whether you’re a beginner or advanced, Lynda has courses for all experience levels, which means they’re going to be able to give you that reference that place to go back to when you get stumped by one of our assignments. You can learn while you’re on the go with the Lynda.com apps for iOS and Android and they’ve got classes for all experience levels. One low monthly price of $25 gives you unlimited access to over 100,000 video tutorials, plus premium plan members can download project files and practice along with the instructor. If you’ve got an annual plan, you can download the courses to watch offline. Making it the ultimate source of information. Whether you’re completely new to coding or you want to learn a new programming language, or just sharpen your development skills, Lynda.com is the perfect place to go. They’ve got you covered. They’ve got new programming courses right now including the Programming the Internet of Things with iOS, Building a Note taking app for iOS 8, and Building Android and iOS apps with Dreamweaver CC and Phone Gap. For any software you rely on, Lynda.com can help you stay current with all software updates and learn the ins and outs to be more efficient and productive. Right now we’ve got a special offer for all of you to access the courses free for 10 days. Visit Lynda.com/c101 to try Lynda.com free for 10 days. That’s Lynda.com/c101. Lynda.com/c101. And we thank Lynda for their support of Coding 101. Steve, we’ve now seen a little bit of bad code. We’ve now seen some of your code, and Lou will be giving us some links so that people can go and get Microsoft assembler. With the Visual Studio so they can try it out for themselves. What would you say is key for them trying it without becoming completely discouraged?

Steve: Okay, so there was something I was going to suggest. First of all, I use Microsoft tools. They’re what I want to use. There’s an interesting multi-platform project called Pep 8. And I meant to send you an email about this. It is available for Windows, Mac and Linux. It is a synthetic CPU with a beautiful IDE interface gooey, the works. It’s over on code.google.com. Pep 8-1. And I think it may be a perfect place for people to start. I don’t think they have any screenshots of it, but there’s a bunch of tutorial stuff and it allows you, in this very gentle- it is used for teaching people how to code at the machine level. Basically to explain machine level concepts of registers and cashing and architectures and so forth. So I think that is a great place to start. Switching to the real tool is certainly something you could do, but I would say that’s more for a production mode than for an educational mode. And I did spend some time poking around, looking for- there are a number of emulators that only run under Windows, but I thought for this audience, especially since you’re standing in front of a Mac, that having something that was multi-platform going forward made more sense.

Fr. Robert: Steve Gibson, from GRC.com. That’s Gibson Research. We do actually have one more bit with you next week before we move into our embedded programming. Every time we start I think we can get through a lot of material, then I realize, he’s just unpacking everything. And I absolutely love it. So thank you so very much. Could you please tell the folks where they can find you? Because of course they’re going to have to pick up Spin Rite. I will say this, I’m not getting paid for this, but Spin Rite has saved my butt more than once. If you have a computer. If it has a disk. Be it a rotating disk or an SSD and you don’t have Spin Rite in your toolbox, I don’t understand what you’re doing with your life. But could you talk a little bit about another project you’ve been working on a lot, you’ve got sqrl coming up, where can they find information on that?

Steve: So sqrl is an acronym for secure quick reliable log in. if you just put it into Google, it’ll find it. Or you can go to grc.com/sqrl. The demo is now up and running. So if you went to grc.com/sqrl/demo, it would take you to a page that would be a little confusing at first, because you have to have a client. I’ve written a client, but we’re still in the process of smoothing off the rough edges. But for example, click down there below and you’ll see what happened is it noticed you don’t yet have a session ID assigned. So if you refresh or click that you’ll see a traditional user name and password log in and a QR code. If you had a sqrl client and they’re underway now for IOS and Android, Windows phone and I’ve written one for the Windows platform itself. And it’ll run under wine for the Mac or Linux. You would simply click the mouse on the QR code and you’d be logged in. basically it’s a very simple and straightforward that basically the idea is it’ll replace user names and passwords on the internet. Sounds like a big deal. And it’s why I’ve given it the last 15 months of my life is that even if it doesn’t get adopted, I had to create it to give it a chance. Because a user creates one ID once, and then they can use that same ID potentially for the rest of their life on every site they visit. Every site sees a different token so there is no tracking among people and it really can replace user name and password log in. on vimeo is a presentation I gave last November that’s a great place to start if anyone is curious. I’m not sure how you’d find it. I’ve been so busy coding, keeping up with the housekeeping has fallen behind. But I’ll be pulling everything together here soon.

Fr. Robert: Fantastic. That’s Steve Gibson, GRC.com. Go there and follow on twitter, @sggrc. Again, it’s always a pleasure and an honor. We’ll see you next week where I want to get some of your assembly code because it makes a lot more sense to me.

Steve: Thanks Padre.

Fr. Robert: Also want to thank my guest show host, Lou Maresca, Lou, we’re going to try this out a lot more over the next couple of weeks. We’re going to get the flow going and of course you’ve got your sombrero. Could you tell the folks where they can find you and your work when you’re not here?

Lou: On twitter @LouMM, also on about me, LouMM as well. And all my work that I do here at Microsoft is at crm.dynamics.com.

Fr. Robert: Gentlemen, thank you very much for entertaining and informative foundational episode of Coding 101. Sirs, I salute you. Don’t forget that even though this episode is over, you can find all of our episodes at our show page. Just go to twit.tv/code. Or coding101. And you’ll find our entire back catalogue. If you want to download the episodes you can find it there. You can also find the show notes and links where you can download the assets from each show there. If you want to program along with us we make it as easy as possible. You can find me on twitter at twitter.com/padresj. If you follow me you can find out who will be on each episode of Coding 101 and what we’re doing on the other shows I do here on the twit network. Twitter.com/padresj. We also have a google+ group, go to google + and look for coding 101. It’s filled with geeks. Beginner, intermediate and expert programmers. We do the show live every Thursday at 1:30pm pacific time. live.twit.tv. and jump into the chatroom at irc.twit.tv. Until next time, I’m father Robert Ballecer, end of line!

All Transcripts posts