Wait! Do you know what you asked for?

I was going to write an article about the Coronavirus and how it is affecting the world, but I realized that 1) people are panicking enough about it that I can write about something else that can make people nervous and 2) people are apparently at risk of catching the Coronavirus just for discussing the Coronavirus. In fact, there was a doctor in China who died from the Coronavirus after talking about the Coronavirus; I’m not making this up, by the way. But you can look it up. I don’t want to talk about the Coronavirus any more and risk catching the Coronavirus.

Instead, I’ll write about something else. Like the fact that my son is now traveling with his classmates to Canada. They’re going on a very fancy bus, enjoying more comfortable accommodations than I do trying to fit in an airline seat (excuse me, I asked for the SMALL sardine can, thank you). They’re on a class field trip for 8th graders to Quebec, Ontario where the official motto is: Va-t’en, idiot américain / Go away, you American jerk. Remember, in Canada, everything needs to be written in French AND English, to increase the chances that people standing next to each other will be given conflicting information.

While there, the students have the opportunity to see how people from another country, who speak a different language, and a moderately different culture, hate the average American.

I can’t say I entirely blame people from other countries for hating us; after all, we tend to hate them, they tend to hate each other. Realistically, international relations could best be summed up as 195 sovereign nations staring at each other crossly while secretly giving each other the finger.

All that aside, my son is getting to travel to a place that actually has COLDER weather and potentially more snowfall than Buffalo, NY – and quite often, that’s saying a lot. Of course, it’ll be no surprise if after the trip he comes back feeling a bit run down; travel is taxing on the body; my wife and I could vouch for that fact after our honeymoon. That’s a story for some other time; like after getting proper therapy and medical treatment.

For the kids (probably not the chaperones), it’s one of those enjoyable trips where they will get to learn about variations to culture, and the significance of language in shaping the lives of people from a region. Or at least it can lead to miscommunication when you place an order at a restaurant by asking for what turns out to be “Tax Not Included in Price”. At least, that’s what would happen to me.

I was never really good at foreign languages. They always seemed so… different. Which I realize is the point to learning them. But there is a vast difference between being able to understand a few key words or phrases, being able to speak or write less than half of them, and being able to do something other than saying you don’t speak the language, ask where there’s a restaurant (or bar), ordering something, realizing you need to get to a bathroom FAST, and then asking where a hospital might be, because there was definitely blood.

My son and daughter seem to be much better at stuff like this than I am (I mean foreign languages; not bleeding from digestive trauma). I think that my wife is generally better than me at languages as well. Which is good; they all like to travel, and being that they enjoy traveling, the are likely that they’ll be fine. I, however, am not much for leaving my hometown (except, maybe sometimes if it involves trains). Statically, I will be the one in a position to require new kidneys, and perhaps to cause the declaration of a travel ban against citizens of the United States of America. It’ll be entirely an accident, I won’t be trying to anger anyone. I’ll intend to say “I really like your family’s tacos”, but it will likely translate into “I wish to fondle your wife’s taco”. You might see a problem with that statement; if not, do not attempt to complement anyone on sausage, either.

So of course, I’ll need the thing about where to find a hospital, in the local language. When trying to communicate with people who speak different languages, you’re probably in a different country or at least a different region of your own country; or you’re in Hell, where everyone is yelling at each other incomprehensibly until the end of time; or you’re in line at the DMV – which is like Hell, but without the ambiance, and lasts much longer. Chances are, too, that there is also a local water supply that your body is not acquainted with, and you will NEED to have some help with issues of a medical nature.

At any rate, my son is traveling abroad, and in 4 days he will come back and share his experiences with the family. He’ll have explored a new place; he’ll have photos of wondrous sites; he’ll have some gifts, perhaps, for family; he might have a case of pneumonia or hypothermia, because, remember, it’s Quebec. And we’ll all laugh. And then he’ll cough a bit and we’ll all freeze because we’re back to thinking about the c**********… if you know what I mean.

Common Concepts of Programming Part 1 – Terminology


I’ll be forthcoming on this; programming draws a lot from mathematics. And while that may sound scary for some people, the truth is that most of it is no more complicated than the simple math that makes up daily life. For the average program, the math gets to nothing more than Algebra. If you were always one to struggle with math, don’t panic, and don’t let yourself get turned off by the idea of having math being a part of this process. I struggled at a lot of points in dealing with math education, and I can vouch for the fact that most applications won’t get that complicated on you.

At worst, if you have to deal with advanced math concepts, it’s only in developing something like a game. And even there, the computer is set up to help you a lot. You aren’t doing math so much as learning to plug in an equation. The computer will actually solve the problem, you just tell it which problem you want solved.

At any rate, programming comes down to some logic, and solving simple equations. Before we get to doing that, though, we need to understand some core concepts about programming languages.

This article will contain a list of common terminology.

Common Terminology

Most software is fairly complex when you look at it as a whole. But the simple fact is that programming is essentially a forest; and that means that a program consists of individual trees. Yes, trees have some complexity to them, but individually, they’re not so hard to understand. That vast majority of challenge comes from learning how these trees combine to become that forest.

There are a number of concepts that are common to nearly all programming languages. I say nearly all, because there are a few languages that may not have these as readily identifiable concepts. But the truth is, if you’re discussing a language that doesn’t include these concepts, that means you’re dealing with a highly unusual or very specialized language, and not one you’re likely to encounter outside of highly theoretical or advanced development work. I work as a software engineer, and I have for 20 years. I have never used those unusual languages in a professional context. However, what I am covering here is stuff I use on a daily basis.

A variable is essentially a placeholder for some piece of data. As an example, the name of a person can be a variable. So could a value such as X in a simple math equation such as 4 + X. If X is 1, the equation would be equal to 5; if we change X to a value of 3, the result is now 7.
A function is a series of instructions that are used regularly for calculation or action; rather than having to write individual instructions repeatedly, we can build a function that can perform the process we need over and over again.

For example: if we needed a way to calculate your age based on your birthday and the current day, we could do the math for it in a single block of code. But what if we wanted to do that for multiple people with different birthdays, the amount of code we have to write would scale up very quickly, and make our program inefficient, bloated and messy.

A function could be put to take your birthday in as a variable, and return the resulting age.
Objects are part of a concept called object-oriented programming. Building on the idea of reusable code, an object is a sort of structure that can be used to define complex re-usable idea. For example, you can create a person object, which would have space for a first name, last name, date of birth, address and phone number. Then, for each person, you’d create a new copy of this object, and populate it with its own data. The proper name for these copies is instances.
Variables that are a part of an object are generally referred to as properties. They essentially are the same as a variable, but because they form a specific part of a type of object, we call them by this name to indicate that they are “owned by” that object.
If a property is a variable in an object, a method would be a function in one. A great example would be to build that age method into the person object. Then when you needed a particular person’s age, you don’t need to get the date from the object and send it into a separate function to get back the age. You can call the method on the person and get their date back directly. In other cases, instructions for an object that is very specific to a person could be a part of the object. For example, you can have a stand-up function. When it’s called on a particular person, that one stands up.
Conditions are logical rules to help control the flow of information. Programs that can’t respond based on conditions are really not useful, because they would run in a linear way and not allow for different operations based on what a person can do.

For example, if a person’s age is under 5, a person goes to daycare. if they are over 5 and under 18, they go to school. Over 18, and they could go to college, trade school, get a job, and more.

If statements (sometimes referred to as if-else or if-else if-else) are a common control approach to provide choice control and reaction.
Loops are a control structure that allows for repetition of a task based on a set of conditions. For example, if you needed a person to take steps until they get to a door, you would need one of two things; either you need to know the number of steps to the door and have to program the take-a-step method to happen that number of times or; you could use a loop that checks to see “is the person at the door” and if they aren’t, they take another step. That loop would continue until the condition of that person being at the door is met.
Logical Operations
Commonly used as parts of conditions and loops are logical operations. These can be a bit tricky, but commonly, there are 3 that we start being concerned with: AND OR and XOR (also called exclusive or).

AND is pretty simple. You must meet all conditions for the AND statement to be met. For example: if the person is at the door and the door is closed, open the door. If the person is not at a door, the condition fails at that point and is skipped. If the person is at the door but it is already opened, the step of opening the door is still skipped. Only if the person is at the door AND it is closed can you open the door.

OR (also known as an inclusive or) and XOR are slightly more complicated, but only because the reality is that in a language like English, we tend to assume that we mean OR when we mean XOR. OR means that 1 or more conditions are met. XOR means that only one of the conditions is met.

The best way to understand this is with a “restaurant” example. If you go to a restaurant and order an entree (please get one for me, too), you will probably be asked if you would like soup OR salad. Now what English tells us is that we can have the soup, or we can have the salad, but we can’t have both. In programming, OR means you can. The translation of this would be “You can have the soup” or “you can have the salad”. If the first case is true, then you don’t even worry about the second one..

With an exclusive or, if you have the soup, it is exclusive, so you cannot have the salad. If you have don’t have the soup, then you can have the salad. If you have both or if you have neither, the condition on that fails.

Most programming languages have a direct implementation of AND and OR (in logic, they are displayed as && and ||, respectively). However, not a lot of languages have a direct XOR operation. However, you can emulate that process by saying “if soup is true and salad is false, do something; if soup is false and salad is true, do something else. And if the person tries to say soup AND salad, or neither soup, nor salad, nothing at all is triggered.

Of course, I don’t recommend that if the waiter says “would you like the soup or a salad” that you answer with “sure”! They might not find it funny.
A comment isn’t actually a part of code, in the sense that it doesn’t “do” anything. A comment is exactly what it sounds like; it’s a statement of a generic sort – when you build a project, you can use comments to note what you did and why. The compiler just ignores them, and go right on past them. But if you used a comment properly, then in several months when you go back to look at your code, you can leave a note for yourself on why you did something, when you made or changed something, where things come from and more.

Comments are the most useful ignored feature in programming, precisely because they let you track what’s going on, exactly where it’s going on, without actually doing anything to influence the outcome of the program itself.


This isn’t our only terminology; not by a long shot. But this is enough for the moment. In the next part of this set of articles, we’ll talk about the various types of variables, and their relationship to the concept of functions and methods.

Getting Started with Visual Studio Community 2019

A few quick notes before I dive into the meat of the article.

  1. I will not automatically show you the best technique for advanced programming; not because I want to make you inferior, but because I want to slowly introduce you to more and more advanced concepts over time. So there may be some things I show you now that I’ll later tell you not to do normally. Don’t panic or get upset; those lessons are meant to help you understand important concepts, and it’s just as important to learn what NOT to do as it is to learn what you CAN do.
  2. Most of the stuff I’ll show you will be using Visual Studio 2019 Professional. For the most part, you’ll see the same tools as I would, but if something is missing or seems odd, don’t worry! I won’t use anything that isn’t available for the Community Edition – and if somehow I manage to do that, just send me a message and let me know; I’ll get you the info you need to proceed.
  3. Don’t panic about the complexity of what you’ll see. Remember that a key to something complex is to focus on the small pieces. If you don’t panic and worry about the big picture, you’ll have the Sistine Chapel before you realize it.

Launching Visual Studio

Assuming you’re using Windows 7 or 10, go to your Start menu and look for “Visual Studio 2019”. You’ll get asked if you’d like to sign up for a Microsoft account.

You can skip past (click Not now, maybe later). Then you’ll get presented with this screen:

This will let you select the configuration options for using the software in an optimal way. for the “Development Settings:” drop-down menu, choose Visual C#. You can choose the color scheme you think you’ll like. You can always change it later if you like. At some point I will do an article on playing with the preferences for the IDE; and there are a LOT of options. For now, I’m going with Dark. It’s easier on my eyes, so that’s what I tend to stick with. The theme won’t affect what tools are available, so just pick whatever seems best to you for now.

Welcome to… another menu screen…

OK, this is actually a good thing. From here, you’ll be able to start building your first application. You won’t initially see anything on the left side of the screen under “Open recent”; that’s because you haven’t done anything yet. In the future, programs you’ve written will be available here for you to reopen.

For now, we’re going to Create a new project (the button on the lower right of the screen). Good grief! What is all this?

Again, relax. This is where we select the type of project we’re going to work with. This give you an idea though of what sort of capabilities you’ll have for development. You may not see as much as I have here, but you’ll still likely see a lot of options in that right-hand list. Let’s filter down to something more manageable. Under “All languages”, select C#. Under “All platforms” select Windows, and under “All project types”, select Console. At this point, you should see a MUCH smaller set of options. The ones you’ll most likely see are “Console App (.NET Core)”, “Console App (.NET Framework)” and “Workflow Console Application”. As long as you see the first two options, we’re in good shape. Select “Console App (.NET Framework)” and click “Next”.

This is the option to set up a project that will work specifically on Windows, and run in what you may recognize as a command-line interface (some people will call it a DOS interface, and while that’s fine, understand that DOS really refers to an operating system that is really no longer in use). Regardless of whether you call it command line or DOS, this will let us build a simple text based application.

Egads, another screen?! Yes!

Yes. But don’t worry, we’re almost through this initial set of steps. On this screen, we’ll have a few options for what we can do. First, let’s give our project a name. It default to ConsleApp1, but that’s not an entirely useful name. You’d like to have SOME idea of what the app is for. It’s not going to be much, in this case, but we should have something better than ConsoleApp1. Change this to say HelloWorld. Note, there shouldn’t be any spaces in this field if you can avoid it. You will probably notice that as you renamed the project, the Solution name field also changed to HelloWorld. Let’s explain this just a bit.

Projects? Solutions? Huh?

OK, this isn’t really all that bad, but it’s valuable to know. Most of the time when you want to build a larger sort of application, you won’t want to slap everything into a single big file. It makes it hard to sort through problems, it makes the program potentially WAY larger, and if you want to make some of your code re-usable, this isn’t going to make that task easier.

A Solution is a container for a series of related projects. Some projects will be actual applications. Some will be collections of functions you may choose to reuse later. Some projects might be for building a website. So you could, for example, say you have a project for an application, a project for a website, and a project that has some code used by both. Each part is it’s own project, but they are all part of the solution. Later, you might have an entirely new solution, but you’ll want to reuse the library project; can you can do that, by copying it from one place to another.

If you want an analogy: imagine you’re hungry. You want to make dinner, and a dessert. You have ingredients in your fridge. Well, some ingredients (like milk or eggs) are used in many different recipes. You probably don’t keep separate batches of eggs and milk in different fridges. You keep them together, and when you need an egg, you get it. When you need milk, you get it. What about salt or sugar? Well, you don’t need to keep them in the fridge, but you’ll have them in another cupboard. Again, not all recipes need sugar or salt, but if you do, you can get them out of the right place. You’ll have a recipe, which is the instructions of how to use those ingredients to make your recipes. And you don’t just mix all the ingredients for both recipes together (if you think strawberry jelly goes well with fish, maybe you would, but frankly, your nuts).

So you follow your recipes, produce each of the parts of your meal. And when you’re done, you can now enjoy the fruits of your labor. Congratulations; you solved the problem of being hungry.

The places we store ingredients, and cookware and whatnot; those are all library projects. The recipes might also be a form of library. The actual process of preparing the recipes are also projects, but instead of being libraries, they’re programs. They are the direct control over the process of making your meal. And the entirety of making the meal and dessert? Well, your problem was that you were hungry. The solution was to make the recipes.

So a solution is a container for projects. In the case of HelloWorld, we don’t need to separate them any more than this, because we’ll only have one simple project in here. They can have the same name and it won’t be an issue.

For the Location, you can leave it to default to wherever it is. More than likely you’d see something like “C:\Users\someuser\sources\repos”. For the time being, that’s just fine. Later on we can look at other ways and places to store things.

You may have noticed a checkbox that says Place solution and project in the same directory. Frankly, I don’t recommend that. If you leave it unchecked, you’ll have a folder for the solution, and then each project will have it’s own sub-folder. I find that easier to deal with, personally. Finally, you’ll see a drop-down box that is labelled for Framework. If you click on that, you’ll see a ton of entries like .NET Framework 2.0, .NET Framework 3.0, etc. It’s not likely you’ll ever need to go to a much older version than what’s current, but it is useful to have all of the options in there in case you later download a project from the web and want to try to update it to what’s current. As of this article, the current version is .NET Framework 4.7.2. If you did your install of Visual Studio right in the last article, you can just select this value if it’s not already set, and click “Create”.

You’ll now have a much more complex looking screen, with a big window in the center with a lot of text in it.

Before you can say “What is all this?” let me explain what all of this is.

The Visual Studio Interface

Remember, first, that Visual Studio is an IDE (integrated development environment) and that means that it’s a collection of tools related to the task of writing programs. So there’s a lot of stuff that will show up on your screen. I’ll cover the important ones to be aware of here; don’t panic if you see some additional stuff on my screen and you don’t have it on yours. I do a lot of development in here, so I’ve moved some stuff around for convenience. You’ll be able to see the most important stuff right away, and at another point, I’ll describe what you can do to switch things around. Don’t worry, it’s not likely that you’ll hurt anything by doing this.

Across the top is a typical menu bar. File, Edit, View, etc… all things we see in most of the programs on a computer. Below that is a toolbar with a set of icons. Initially you’ll see ones you recognize, like new, open, save and the undo and redo buttons. Next to that you’ll see a couple of drop-downs. Once will probably say “Debug”, the next will say “Any CPU”. Then you’ll have a Play button (a green arrow on my screenshot) and the word “Start”. And then there will be some more icons. The biggest one to be aware of is that Play / Start button. We’ll use this to actually run our first program. Over to the right of the screen, you’ll see a panel called “Solution Explorer”. You may also see a tab for “Team Explorer” and “Properties”. You can switch tabs if you’d like just to see what’s in them, but make sure you’re back on Solution Explorer when you’re done.

If that panel looks like the next image, you can click and drag the “Properties Tab” down; you’ll see a little set of icons appear, shaped like a plus. Drag over the lowest box, and it’ll separate so you can see it AND the Solutions / Team Explorer tabs separately.

On the left side of the screen, you’ll see a panel labelled “Toolbox”. That’s something we’ll cover later. At the bottom of the screen you’ll see “Output” with two tabs. One is called “Output” and the other is “Error List”. You might see some more tabs, too, but again, we’ll worry about that all later.

Finally, smack in the middle of the screen, you’ll see a window labelled “Program.cs” and have the results of a cat running across your keyboard… no, not really. You’ll see a bunch of text with some different colors and a series of numbers down the left side.

This is called the source code of your program. If you have a solution that has lots of libraries and files to it, you’ll see more tabs open across the top bar over time; but for now, we’ll just focus on what’s here.

The numbers on the left side of this window are actually line numbers. If you’re writing a program and something fails, this will help you to find where your mistake is.

Lines 1 – 5 on my example start with the word “using” followed by a few more words, and then a semi-colon. These are usually called “directives” or sometimes “includes”. Essentially, this is a collection of libraries of common code that your application may (or will) need. They’ll probably all look kind of dim-colored; that indicates that we aren’t actually using any of them just yet. This program will only really use one, but we can leave this as is.

Next, you’ll see the word “namespace” followed by “HelloWorld”. A namespace is a sort of container used for coding. We’ll get into more detail on that later as well.

Next, we see “class Program”. This the starting point of the actual application. We’ll discuss classes more soon, but something you’ll here in a lot of languages is the phrase “everything is a class” or “everything is an object”. What this really just means is that every part of a program written in these languages is essentially a sort of component that is used for operation. The initial class for C sharp is Program. That indicates that this is the program container.

Next, you’ll see “static void Main(string[] args)”. If you’re wondering what all this means, don’t worry, we’ll get to it when we’re ready. Lastly, you might notice a series of characters that look like this: { } Commonly they’re referred to as curly braces or brackets. Note how they’re placed. They indicate a sort of start and stop to a logical “container”. As we expand our skills, we’ll see their relevance quite quickly.

OK. What does this program do? Nothing! If you tried to run it now, it’d start and end… and chances are it would happen so fast you might not even see a window show up for it. If you do, it’ll be a sort of black box, and it’ll immediately disappear.

Let’s actually make something happen.

One Quite Note

Be aware that programming languages are typically case sensitive, especially when it comes to the names of functions, variables, and the like. Make sure you’re careful about names and spacing when you type things in, because quite often you can make a mistake by forgetting to make something uppercase. A key example will be the commands “Console.WriteLine” and “Console.ReadKey”, which we will use below. If you forget to capitalize the L in WriteLine, or the K in ReadKey, the program will NOT work.

One nice feature that helps with this is called IntelliSense. It’s a feature in Microsoft products (along with numerous others for programming) that will help you to select the right command and instructions. As you type, it will pop-up a list of possible values and try to guide you to the best choice. I’ll cover that in more depth at another point, but based on some feedback I received, I figured it was important to note that before we got too far into this.

Adding To The Code

In between the curly braces under the “static main” line, hit your enter or return key a few times. Go to the first line after the opening curly brace { and type in the following:

Console.WriteLine(“Hello, world!”);

Your program will look like this:

Go ahead and hit that “Start” button at the top of the screen.

Congratulations – you just wrote a program. It doesn’t do very much, but that’s not a problem. It actually did something. To exit, you can either hit the “Stop” button in Visual Studios, click the X on the windows to close it, or press any key on your keyboard and it’ll finish and close itself.

Down at the bottom of the screen, you’ll see in the “Output” window something like this:

This indicates that the program ran; when our programs get longer, we’ll see more information here that we can use to track through steps and do what’s called “debugging”. If you look at your code window, you’ll notice now that the first line “using System;” is now brighter than the other lines. That’s because we’re actually using code from that library. The Console.WriteLine and Console.ReadKey code is part of a general library called “System”.

We’ll dissect this program in more depth in a few articles. But for now, “Hello, world!”. Go ahead, and show it off! You made a computer program.

Preparing to Get Into Programming

If you’re entirely new to programming, this post will help you get set up to do your first project. We won’t do any coding just yet; for one thing, we have no way to turn the code we write into an actual program. To perform this process, we need a tool called a compiler. Compiling is a term that defines the process of transforming human-readable code from a language like C# (read as C Sharp) into machine usable code. If you’ve ever heard of the terms “binary code” or “machine code” or even “assembly language”, these are the low level instructions that the physical hardware of your computer understands. You could write programs in those languages, but frankly, it is a very slow process at best, and most of the time, there is no need to use a language so granular as that.

What is C#?

C# is a programming language that follows a general series of structural rules and approaches that make up what is known as the C family of languages. These languages include: C, Objective C, C Sharp and C++. The structure of the code written in these languages (referred to as their syntax) is relatively similar, but while some (C Sharp and Objective C) are relatively easy to use, others (C and C++) are far more elaborate. The complex languages are commonly used for building the operating software of your computer (Windows, Mac OS, etc), advanced video game development, and especially intensive mathematical or scientific programming.

There are a lot of other languages that also share the style and format common to the C languages, so once you’ve started using this format, it becomes much easier to start learning the other languages.

Why are there so many other languages if they all work in such a similar fashion? In addition to the uses I mentioned above, some of the languages are specific to working on certain platforms (Windows, MacOS, iOS, Android, etc) and some of them are meant for uses for specific types of development (desktop applications, websites, mobile device applications, and more). As a result, different languages evolved to specifically handle those various needs.

Think of it this way: why are there so many different types of road vehicles? Cars, pickup trucks, tractor trailers, tanker trucks, fire trucks… each of these vehicles serves a different purpose; they are used for personal transportation, moving heavy loads, or carrying the equipment to handle emergencies. I doubt very much that you’d want to try to plow snow in a place like Buffalo, NY or Denver, CO with a small sports car with a giant plow mounted on it. By the same token, you aren’t going to be taking a person who was in an serious accident to a hospital using your motorcycle.

Setting up an IDE

While it is possible to write the code for most languages in a simple tool like Notepad or another simple text editor, the fact is that you’d need another set of tools to actually perform the steps for compiling that code into an application; and the process can be lengthy, to the point that it can be a nightmare to manage.

It can be done that way, but it’s a painful process. Fortunately, there is a much easier alternative; the IDE – Integrated Development Environment. An IDE is a program that is generally graphical in nature that allows you to write your code, correct syntax errors (like spell check in a word processor), and test and fix logic (debugging). An IDE will almost always come with a compiler (or will help you to set up an external compiler program) that will then take your code and perform the necessary transformation into an actual program. In more advanced IDEs, they may have built-in tools to help you optimize your program, connect to other systems for more extensive development, and provide many more features to make advanced development much easier to handle. One of the best features of an IDE is that they usually perform things like syntax highlighting and color coding – they will actually display the language with colors to help denote what you’re seeing, which makes it easier to tell if you’ve made a mistake.

There are many IDEs on the market today. Some can be VERY expensive, and others are free. In some cases, like the one we’ll use, there is a free edition and more advanced professional versions you can upgrade to if you need the advanced functionality. Chances are, if you’re working through this material, you’re not a professional, so the free edition is all you need. In that case, you can use the tool I’m introducing here.

Microsoft Visual Studio Community Edition

Microsoft released Visual Studio was first introduced in 1997, and supported several languages. At the time, there were only professional or enterprise versions of the software. Since then, Microsoft has released many updates and new versions to the software. As of now (February 2020) the most recent stable build is Visual Studio 2019.

One of the great things about Visual Studio is that there are versions for all of the major computer platforms, so you can technically develop along the same vein if you’re an Apple user instead of a Windows person. There is a catch, however. You are limited to the types of projects you can do outside of Windows. Simply put, the graphical applications you use on a Mac require libraries and functionality that is different from Windows, so if you want to write applications for Apple machines, you’ll need to do a bit more.

Getting Up and Running

For now, I am going to run with the assumption that you’re a Windows user. Keep in mind, if you have a relatively modern Mac, there are options to set up Windows on the machine. One approach is to use a Virtual Machine. This is a program that lets you create a “virtual” computer that resides on your physical machine. In essence, you simulate having a computer with it’s own disk space, memory, programs, etc. That machine can be turned on and off at will and can be set up with any number of different operating systems and virtual hardware configurations. The best part about a virtual machine is if you royally screw up, you can delete the copy of the system and build a new copy. That approach to doing all this is beyond the scope of this article, but you can easily find a TON of information on the topic by going through you’re preferred search engine and looking for the term Windows virtual machine on MacOS, or Linux, or whatever you may be using.

But assuming that you are either on a Windows machine or at least a virtual machine, we can get ourselves started. Go to your preferred search engine and look for “microsoft visual studio community edition” or you can go directly to https://visualstudio.microsoft.com/downloads/.

Select the option to download Visual Studio Community edition. The file that downloads will help you set up the program, so once it finishes downloading, open it and you’ll get a screen that contains a list of options.

It will then be replaced with the following:

These are the general groups of components you can install. If you have the room, you can feel free to install the whole package, but that’ll take up a SIGNIFICANT amount of space on your hard drive, so check to make sure you have the space to do that. As you click on options, a small label at the bottom of this screen will tell you how much space is required. If you check against your C drive, you’ll see how much you have available.

Start by selecting .NET desktop development, Universal Windows Platform Development, Data storage and processing, and .NET Core cross-platform development. Then, up near the top, you’ll see “Individual Components”. Click this and you’ll get a VERY long list of individual features.

Make sure to check all of the options in the images above. There are actually more options beyond that third image, but we don’t need to concern ourselves with that for now. In the lower right-hand corner of the window is a drop-down box that will default to Install while downloading; the other options is Download all, then install. In theory, if you have a slower machine / connection, the second option is better, because it won’t slow down the overall function of your machine trying to do both at the same time. Now, just click the “Install” button to the right and the process will start running.

This will take a while, especially depending on your connection and computer. I hope you’re not still on a dial-up connection. There’s a LOT there to download and you’ll be at it all day. If you’re on a better connection though, the typical install time is somewhere between 5 minutes and half-an-hour. You can do something else in the meantime; maybe read and try my article on baking a loaf of bread; or if you do have that slow connection, consider something that’ll take a bit more time… like learning to play the violin flawlessly, or drafting a workable peace plan for the entire world. OK, I’m just kidding, those things aren’t nearly as slow-moving as a dial-up internet connection.

Wait, what if I need something else?

The nice thing about the setup for Visual Studio is that you can always add on functionality later on if you need some additional tools or libraries. If you used the pictures above as a guide, though, that’s it! You’re ready to go.


If you’re disappointed that you didn’t actually write a program, don’t be! You can’t learn to write software if you don’t have the tools to do it properly; and you want to learn to do this properly, so one thing at a time. In my next article, I’ll give an overview of the program we just installed; then we’ll make a simple console app. It won’t do much, but it’ll hopefully start you on the path to having a neat hobby and some useful skills.

One Month Later…

Well, if you’ve been following my posts lately (and judging by the site tracking, you haven’t)… wait, I haven’t MADE any blog posts in nearly a month. OK, I will level with you, I just was too preoccupied with work and household stuff to get to much here; so it’s really no surprise that my traffic took a nose-dive, because my work on this site did first.

Right now I’m in the process of getting another site project wrapped up, so for at least a little while longer, there won’t be much to see. I haven’t really had an opportunity to do anything with the West Seneca Valley Railroad; I definitely don’t do woodworking during this time of year (winter is NOT a great time for me to try this stuff without a proper shop environment)… so that leaves me with time in the kitchen.

I’ve tried out a few small new things recently. I have improved on the approach I take to doing cinnamon rolls; mostly I just do them as freestanding rolls now instead of in one of those pan setups.

I’ve made some sour cream glazed donuts which turned out quite nicely, some pizza dough that was not too shabby, and I’ve pretty much stopped buying any bread at stores. I’m not supposed to have much of that anyway, but since the kids still can have some, the home-made stuff is a lot better than having God-knows-what stuff put into the bread in factories.

So anyway, I’m going to try to wrap up some work I have pending now and maybe in a month or so I’ll be able to get back to something else more – interesting. I’ll try to post up some other things in the mean time.

One side-note, I have been playing around with the Unity development engine, just for fun, so when I have a bit of time and experience, I might try my hand at making a small game. If I do, I’ll post it up for download from the site.

That’s it for now.