Global Bob Show

Episode 18 - What is Software and Source Code?

Global Bob Season 1 Episode 18

In this episode Global Bob talks about his earliest recollection of using electricity to solve problems which is essentially what a computer does.  He gives a real world example of working with his dad (Herbie Varner) in the groves utilizing rudimentary industrial control systems to irrigate and fertilize Citrus Groves.

Transcripts are automatically generated.  Music is licensed from SoundStripe.com

Unknown:

The Globalbob Show, episode number 18. Let's rock and roll. So crazy that we are already on episode number a team. And if I would not have contracted the COVID virus, we would be rockin and rollin on chapter 19, or episode 19. So enjoy the music and enjoy the show. This is your field commander Globalbob. In each week, we either cruise the highways and byways of cyberspace. Or we set sail on the Digital Ocean as a couple pirates without a cause. As always, thank you so much for everybody that tunes in, by now, I'm sure you guys know, you can reach me at Globalbob show on Twitter. Email me Globalbob show@gmail.com. You can messenger me on Facebook, via the Globalbob show, do the search for Globalbob show. And of course, those that have my phone number are more than welcome to always call me. And I don't say that just hope no one calls me just last week I had a listener contact me and had a friend of theirs that had an issue going on with their corporate site. And I'll leave the names of the parties involved. Just for, you know, I don't want to broadcast it. But basically, this was a pretty good scam they were trying to accomplish, they contacted the gentleman and said there was a problem with their corporate website. And don't bother looking for the problem. But they'll never find it, and that they needed to pay this company to ensure the website is perfectly clean. So one of my listeners heard about this, and quickly got a hold of me, put me in contact with the individual. And I gave him about 10 minutes of pro bono work. And I'm just happy that someone took me up on my offer. Now don't call me to ask me to fix your computer because I don't do those kinds of things. But if it's in the realm of cybersecurity, cyber extortion, that kind of stuff, I can give you some tips and tricks that will maybe get you pointed into the right direction. So I appreciate that. All right. We have a good show in store for you today. Now, this particular show I was thinking about this past week. And as you can tell my voice is a little better. I'm actually a little more when it whenever I get excited, I talk fast. So I'll try to slow it down. But this is something I get asked all the time. And it is kind of twofold. One, what is software, what is source code? What is this stuff? And today we're going to talk about it. But I think what's really neat is what dawned on me just this week, because another question I get quite often is how did you get started doing this? When's your first recollection of being involved with writing code? Writing software, writing scripts. And pretty often I'll tell the story, you know, it comes back to whenever my dad who has always been a very integral part of my life. My closest confidant, my advisor, my best friend, sometimes other times would tell me stuff that I didn't want to hear, but I had to hear. And so, you know, my dad, he always made sure I had and my mom also made sure I had the finest computing products of its time. I mean, I know whatever I was a small kid, I convinced him why I needed two phone lines at my house. And it eventually grew to three phone lines at my house. That's for another story, but I always kind of hone in on this Commodore 64 that he bought myself and my brother and we've talked about in previous podcast, but then I thought like wait a second. Hold on. I actually got my start. Way before I even got my start. And that was with my dad And I'm going to tell you a little backstory. And this will help us segue into how we got to the modern software that you all know it today. Whenever I talk about software, most of my listeners probably think of software, as in Microsoft Word, or maybe software as an application that's on their phone, or even software. That's something they use at work. But that is one part of software that is the part where the person interacts. But it took us a long time to get the software as we know it. Now, when you think about when the computer was invented, and we'll talk about that, and a little bit, but it was basically used to solve problems. And the first ones were with math problems. But problems that needed to be solved wasn't spellcheck, and connecting you up to a mapping system like Google Earth, or whatever. I mean, those all come later, but they were using computers to solve problems. And so whenever I think about my first time that I was interacting with problems was with my dad. Now my dad, and my grandfather and his brothers and some of my extended family. They owned a lot of orange groves down in Arcadia, Florida. Now, where we lived at up here in Winter Haven, Florida, was about maybe one and a half, two hours away. And so all of my dad's orange groves were down in Arcadia. And whenever I was a real little kid, I remember my dad, at his office in Winter Haven, he had all of these control systems laid out on his desk. And I would watch him. And he had basically constructed a, for all intents and purposes, his own industrial control system. Now, that's just amazing. My father and his brothers had been in the electrical business for quite some time. And as you know, in the electrical business, especially now with all the home automation and stuff. I mean, that was just amazing that, you know, we have home automation here at our houses, and it's very cheap, but back then, he was actually creating his own industrial control system for automation of the fertilizer for the orange trees. Now see, he had figured out him and his colleagues and industry that there was a new system that had come out, and it could help with the production of oranges on the trees. And I never will forget the name of the system, it was called a fertigation system. Now, this fertigation system would have a control circuit, and this control circuit would turn on the pump. And so you had mechanized relays, and all of these components would put to be put together, and you would have a time clock and relays it would turn on the pump. And you'd have special relays that would rotate through the different rows because you couldn't water the whole orange grove at one time, you can only water certain roads, because that's all that the pump could produce. And more over this new fertigation system, I never will forget it had a pump that would run off the water pressure. And I remember he would start his stopwatch. And he would time every time that little piston went up and down. And I never will forget the silver thing that was over to the side. And it had another tank. And so every time that system would go up and down. Then his industrial control system that he created, it would measure the amount of fertilizer liquid fertilizer going inside of the main irrigation. And so that was the fertigation system. Now when you break it down, what had Herbert come up with? Well, he solved a problem using electric City, because that's essentially what computers do. He knew that every time that piston went up, it would draw the liquid in, and it would put it into the pipe. And he knew what the water pressure was and the water flow. And so he could calculate the amount of liquid fertilizer being sprayed on those orange trees. And then of course, with us live in an hour and a half away, he needed to water the complete Orange Grove. So his time clock wouldn't measure. And then it would take a solenoid because you can imagine, remember, these valves, these big big valves, and it would take a lot of strength to open and close it. But there was a little solenoid and it would use the water pressure to open and close these big valves nice and slowly. And it would use the timing to get it. All right. So essentially, that is all of the manual inputs, like on a computer that was solving a real world problem. And so, to me, once I thought about it, I was thinking to myself, Wow, that me being a little kid and my dad's little truck, that we would go through those orange groves and cook our lunch of the exhaust manifold. So he was he is still is very engineering, and very good at coming up with solutions and little side rant on that, you know, we would stop and pick whatever canned lunch we wanted. And we would pull the wrappers off and put them on the exhaust manifold of his little truck. And we would have hot food as we rode through these orange groves. And so that's really, I think that's about as far back in my memory of me using electricity or being around people that were using electricity to solve these problems. Now, fast forward, whenever I got into high school and get my first automobile, my dad put me out in the field, what we call the field, and that was working for the electrical company. And there, I got, you know, another taste of using outside environmental systems to regulate things. And with that he did a lot of electrical work for some of the major grocery store chains, and some of the big chains that are still in business today. And they use these things called thermistors. And they would take the temperature and change the resistance on the wire. And that would be an input that would turn on the refrigeration system. And of course, in the electrical company. They were responsible for the fire alarm system. So I spent many, many days and a whole summer hog, fish and wire around and we have pull stations on fire alarms, and there's little things that can detect the smoke. And so, you know, just thinking about this podcast, and really what software is, is that it is things that are solving either environmental issues around the environment, or actually solving problems. And so with that, I never knew it, but really, that's kind of where I got my start. So I think about the Commodore 64. And that was kind of cool. But really, I think that what really set the foundation for everything I've done is really working with him and seeing how electricity with relays and time clocks and switches. And in software, we're getting ready to talk about it. Well guess what we use in software, we use schedulers will schedulers just like a timer, and we use switches really in programming languages or something called a switch. And we have a loop, which means go around in circles. So that's really cool. That's what I really love about these podcasts is that not only do I get a lot out of out of it and producing it, but really it's like taking a taking a little walk down memory lane. So throughout my podcast, and through this series and stuff, you hear us talk about malware, and Trojans and viruses. And we talk about Bitcoin. And we talk about a lot of stuff. And all that stuff is is just software. And when you think about it, really software is simply the interface between the outside influences, right? So there's an interface that's receiving temperature and humidity and things like that. And also the human because we have a mouse reroll or Now we get output through the computer screen. And now we get output through virtual reality we get output on our phones. So computer software is simply the interface between the human and the machine or the system. It's pretty straightforward. Now, my dad used, you know, very rudimentary basic building blocks to solve the problem and the orange groves. And they use the basic building blocks of software to make fire alarm systems work. Now the first piece of software was written. Now this is the very first piece of known software was written by a fella named Tom Kilburn. And he ran his first computer program at 11am. Greenwich Mean Time, June 21 1948, at the University of Manchester in England. Now, this is back in 1948. And if you think about where my dad was in the early 80s, you can see that even though we had software since 48, and 50, this was very, very, very rudimentary software. Now, Kilburn and his buddy Freddie, good old Freddie Williams had built one of the earliest computers. So if you're gonna think about it, which one came first, the chicken or the egg? Well, which one came first, the computer or the software. And I would have to speculate at this time, they were probably developed in tandem with each other. Now, fast forward to today, when you have computers that are running very specific software, which we heard a little bit about when we talked about Bitcoin mining. That's called an ASIC. an ASIC is an application specific, integrated circuit. And so the first computer was actually probably an ASIC. Now, if you're going to invent a computer, and these things were very, very large machines, very big, and they called there's baby, and I'm sure they probably walked into their lab, and every day baby had something to say. And they probably said, Never put baby in a corner. Y'all remember the joke from Dirty Dancing? I'm sure it probably went over everybody's head. But anyway, so they had their computer name, baby. And today, when we think about what baby was developed to do, they were highly impressed. That baby only took 52 minutes to compute the largest divisor of two to the power of 18. Now, I don't know why they would need that. I don't know. But it took 52 minutes. And I can tell you right now, with today's standards, then it would take longer for you to hear the click in your ear of the mouse to run the program to when the program would finish. Now, that's pretty impressive. Now, a lot of times when we talk about software, so that was the first 119 48, we kind of got the first computer, we kind of got the first software. But we hear the term all the time that there was a bug in the software, there's a bug in the code. So while we're talking about software, and what is it where did it come from? And how did we get to where we're at today, we should talk about where the word bug came from. And the word bug was first talked about, and one of the world's first major computers, and it was called ENIAC. Now ENIAC was a computer that was the size of two city blocks. And they noticed that ENIAC was putting gibberish out that just did not add up. Now, if you all have seen the NASA movie about the the ladies that calculated made all the calculations and stuff, you know, this was about the time of ENIAC. And what they were doing was was feeding numbers into ENIAC, and they were having the ladies check the numbers. And they found out that something wasn't jiving. And they later found out that it was an actual bug that had went across to have the contactors have this massive computer called ENIAC, and that was what was causing the gibberish so I guess we get a twofer this week. So we're gonna learn about software. And we learned about a bug. Now, as we march forward to today's time, we don't really think of software as in today's terms, of course, iPad, mobile, iOS, Android, I mean, that's all very recent, as far as in terms of time. And that's why they call those the modern operating systems. But really software. As we know, it did not come into existence, until the personal computer revolution that began in the 70s, built up steam in the 80s, and exploded into the 90s. So for the rest of the podcast here, whenever I refer to software, I don't want you to think of the old punchcard systems and the old floppy disk, and the tape drives and all of that, what I'm going to be talking about is kind of setting the foundation for future podcast. And so you know what software and source code is, and the difference between the two. Now, when you're looking at a computer, and you're interfacing with it, you have the user area, and that user area is kind of combined into two different input outputs, you either have input output to the human, which would be the human interface, or you have the input output to some kind of process that's processing environmental inputs. So think of this as systems that are monitoring voltage monitoring, temperature monitoring fuel flow, like in your car. So two kinds of software. And they do make a pretty big difference, because I know that the world that I mostly have programmed in, mine has been low level control software, and low level driver type software. And so I don't care about the pretty colors. And it really didn't matter how it looked. It only mattered about the computations where these folks that are programming user software, not only are they having to have it function very well, but they get what they call UI, which is user interface, and UX, which is called user experience, they get professionals and these folks are artists, and all the rights. I mean, they are they know the perfect colors, and they know the perfect placement. And those UI UX folks work together in that user area to create the user experience. Well, then you have the actual piece of software or the application. And this is kind of where the rubber meets the road. And this is where you're doing your development. And this may interface or does interface with the operating system. And think of the operating system is nothing more than a bunch of software that helps the application software, provide the user experience or the environmental input output. And then it's the operating systems job. In most cases, like I say, I'm trying to keep this simple for the audience that interacts with the hardware. And so that's kind of the top down layer approach of what software is. So when you think of software, think of it as all of this together that works on your computer. Now, sometimes you all hear source code, and you hear the word script, there's a little bit of difference between the two source code is up in the application software layer. And it can be down lower, but for all intents and purposes, and that's where the developer is programming, the experience. Now, a little bit lower into the operating system, that can be a collection of software that has ways to interact with the hardware. So case in point, if I want to make my program go Dane up in the high layer, I may just put the word Dang. But once the operating system understands that, and it ultimately gets made into bits and bytes that comes out the speakers to make that little ding sound through the hardware. So I'm trying to keep this simple, but just follow me how you have that top down approach. Now the source code is the code that makes that happen. So we need to go just A little bit deeper here. Whenever I write my source code, regardless of the language I write it in. So there's another term their language, it may be written in Python, it may be written in C plus plus two pluses, I guess it's better than one. And maybe written in C, those are the two, actually the three that I kind of dabble in. So that is called source code. And that source code is mostly written in something called an IDE, or integrated development environment. And if you look at source code, it is very much human readable. If I were to open up some source code, you will see some things that look familiar. Let's go back to the orange grove analogy that I'm wanting to use. If you open up my source code, you may see an if, then, and that if then may say, if piston goes up, then put this much liquid into the counter. Oh, let's do this. And so I'm trying to keep this super simple. But going back to what my dad would do, is time that piston going up and down and that counter, he didn't know necessarily how much liquid but if he knew how much time, or how many times that piston went up and down, then he could write code that would put that out. And so in the IDE in the source code area, it's very much human readable. If I needed a timer, say I needed to wait right that pistons going up and down, and I need something to wait for 30 seconds, I may just do timer equals time, wait 30. Now, that's what we call pseudo code. But that's the general gist of it. So all that up is in the IDE, and that is my source code. But some of the languages, they have what they call JIT, which is just in time, and it will read that source code and, and, and go. But most of the time source code gets compiled. And I'm sure a lot of y'all have heard this before, oh, I got to compile my source code. So what happens with the compiler, and I'm just going to put this out there real quick, because I want you to understand that no matter what problem we're solving, whether it's the simple ding of our sound card, or putting some calculation on the screen, your source code kind of goes down this path to get to what is called an executable. And we call this compiling the source code. And so the source code, you run it through a compiler, and that compiler outputs assembled code. Now assembled code, how many times have y'all heard of the 386 processor, the 46 processor, the Pentium two processor, all these processors, right? The new MacBook runs the new M two processor? Well, the processor only has a certain amount of instructions that are included. Now. The first one, if you look back with Baby, Baby holy process, looking for divisors I mean, that's it, that's all the machine understood. But with modern operating systems, the the machine code, it has an instruction set. And that's all it can do. So that's why when the 386 came out, you couldn't run four a six code on a 386 because it did not understand it. And a lot of times it was backwards compatible. Now I'm dating myself, and I'm sure my dad one know this, but back in the day, there was bunches of different processors. I remember he had an old Texas Instrument computer there that was useless because the guy that programmed it, he passed away, bless his heart. But the thing is, is that all of a sudden the revolution took off when the IBM compatible and so where I'm going with this is, is that what's your source code that human part, it goes through a compiler and then it gets interpreted into that code that is a machine code and that will be the last time it is somewhat human readable. And if you look at this code, it will say JMP for jump in mov to this and we're not going to get down into the nitty gritty too much, but just know that it kind of is like a funnel. So then that gets put in into object code. Now, object code is nothing but ones and zeros. And that's really what computers understand. Remember me talking about the fire alarm system, and you pull that pull switch, once either on or off. And in its basic form, that is all a computer understands either the electricity is on, or the electricity is off. And we'll talk more about this and communications. But that's it, zeros and ones. So now that the code has been assembled, and now it's down in object code, the last part of it is linking. And now linking is just a way for the code to use different bits and bytes of other code to ultimately end up into a DLL, which is a dynamic link library. And for all intents and purposes, that is like a little piece of helper code or an executable. And so I know that that was a lot to take in. But I just wanted to kind of show you the path of what things take. So when you talk about software, and you think about software, just know that the part that you're interacting with, you're at the top of the birthday cake, but really what's all going down up under the hood is nothing more than the processors code, and the processors functions that are pre programmed in, and ultimately, it gets turned into ones and zeros. And ultimately, it gets turned into ons and offs with electricity. So I know that we're at the bottom of the half hour. And I know this was a lot to take in. But hopefully at the end, you guys understand and ladies understand that software is nothing more than input, output. And either it's inputting and or inputting outputting from environmental factors and physical realm, or it's inputting and outputting through visuals and human interaction. And all of this comes together, because we need computers to solve problems. And just like out in my dad's orange groves, he used very rudimentary building blocks. But that whole system, which he come up with, could be replicated inside of a very simple, probably $80 computer now, and that would be overkill. And he could very simply put these various timers and measurements and counters, and water pressure sensors all inside of a little box that can control those relays. And whenever I think about where did I get my start in programming, it wasn't with that Commodore 64 It wasn't with the first 286 and x86 computer that he bought me really the foundation for programming was instilled in me by my father out in those orange groves. So for the younger listeners out there, always try to keep your ear to the ground. And you never know where your foundation may be set. But I will tell you, one of the things he did instill in me is that one problem don't go away to you have to admit you have a problem. And three, the only way for the problems to go away is for you to work the problem. So with that, I thank my father for setting the foundation for me to have a very successful career in computer development. Also in software design, and ultimately cybersecurity. All right, well until next time, everybody stay safe, make sure to stay sanitized. And we will see you on the next show. And as always, please give me feedback on the show. Let me know what you'd like for me to talk about because the reason why I do this is for you all and I hope you enjoy listening to it as much as I enjoy producing. So with that we will see you all next time.