Programming Pioneers: People You Need to Know

CS467 Blog #6

Image by izoca from Pixabay

After reading through The Innovators by Walter Isaacson and Hackers by Steven Levy, I was inspired to continue to learn more about the history of computer science and its founding fathers. I wanted to lock into my memory the top software engineers in history. Therefore, from the rabbit hole that I went down, I will share with you the top 3 software engineers of the 21st century (in my own opinion):

1. Dennis Ritchie – Creator of the C Language

Dennis Ritchie is considered to be one of the founding fathers of modern computing. His contributions to computer science has paved way to innovations that led to the state of technology we all enjoy today. Dennis Ritchie received the Turing Award in 1983 which is considered to be the highest award in computer science. He received this award, along side his partner, Ken Thompson, for their development of the Unix operating system and for the development of generic operating systems theory.

Dennis originally created the B programming language developed when Ritchie was working at Bell Laboratories around 1969. He then updated the B language to apply to the Unix utilities that him and Thompson were developing. Thus, the C programming language was thus born and became wildly popular in the 1980s and was standardized by ANSI and ISO.

While not typically a household name, Dennis Ritchie has left his fingerprints inside of the majority of our electronic devices today.

More can be learned about Dennis Ritchie through the YouTube channel, Computerphile.

2. Linus Torvalds – Creator of the Linux Kernel and Git

One of the living legends and the top computer science rock star is Linus Torvalds. This 51 year old Finnish-American open-source software engineer is best known for leading the development of the Linux kernel. The first version was released in 1991 and started with a few files of code and now has over 23 million lines of code thanks to it being open source.

Linus is a pioneer of the open-source community. His philosophy on software is opposite that of Bill Gates and Steve Jobs. Linus paved a path for the open-source community and has been a leader of several open-source projects.

With all of these open-source projects, it quickly became a nightmare trying to manage the different files and versions that were floating around the internet. So Linus made the open-source Git version control system. There were other VCS solutions out there at the time, but none (that were robust enough) were open-source. If you are curious like me, the word, ‘git’ means “unpleasant person” in British slang.

To better understand the mind of Linus, you can watch his TED talk on YouTube

3. Guido van Rossum – Creator of Python Language

I may be a bit biased here since I primarily write code in Python, but Guido van Rossum (also known as the Benevolent Dictator For Life (BDFL)), is the Dutch author of the Python programming language which was released in 1991.

Believe it or not, Python was born out of the boredom of Guido. During downtime at the office, Guido needed a hobby project to keep himself occupied and chose to write a new scripting language he had been working on and off on. The name Python comes from Guido’s admiration of Monty Python’s Flying Circus.

Python is based on a programming language called, ABC, which Guido helped develop. ABC language was designed to be an easy to read high-level programming language that could replace the BASIC programming language. The principles of ABC transferred over to Python and over the several years since its initial release, Python is now the most popular programming language .

A Token of Appreciation

Image by StartupStockPhotos from Pixabay

We can all thank the many founding fathers of computer science that shaped the world we live in today. These people paved paths to our careers, our friends, our family, and our lives. Learning about the history of computing is the least we can do to pay our respects.

What Got Me Hooked on ‘Tronics

CS467 – Blog #5

Image by Free-Photos from Pixabay

I’m lucky to say that I grew up in a world where the internet was just a new fad waiting to die out and also in a world where the internet runs our entire lives. I’ve always loved technology and things that go ‘beep-boop’. But the passion for technology only started to spread after I started diving into how computers worked.

The Candle – Windows 98

The candle of my passion for technology was lit in elementary school where playing computer games (mostly educational) was a common occurrence along with being forced to type correctly thanks to Mavis Beacon. I quickly picked up how to navigate the Windows 2000 operating system by just clicking stuff and seeing what happened. It also helped that our family had a desktop PC in 2000 running Windows 98 where I played a lot of PC games such as Pajama Sam, Sim City 2000, Backyard Baseball and Football, and of course, Oregon Trail.

The Kindling – Video Games

The kindling of my passion for technology was fueled by a mild, yet normalized, obsession with video games. Fate (my parents) had decided which ecosystem I would be in for over a decade. That ecosystem was PlayStation.

PlayStation 2 was the first console I received along with EA Sports’ Madden franchise, Need for Speed, and Tony Hawk’s Pro Skater. Since console online gaming was not yet widely adopted, playing video games with friends in person was a large part of my childhood which further fueled the passion for technology and learning how it works. I even received clear wireless controllers so you could see the circuit boards, wires, and how the buttons actuated.

Interacting with digital media (such as video games) left an enormous impression on me which made it seem that anything is possible with computers. In my late teens, I started watching educational videos on YouTube about how computers work and what hardware is required. I would recommend Sixty Symbols as well as Computerphile to anyone who is curious about how computers work.

The Campfire – Supercomputers and Web Development

The kindling turned into a raging campfire during college. In my second year while studying chemistry, I was a part of a computational chemistry research project where we needed to use the school’s super computer cluster to perform various quantum mechanics calculations of which I still don’t understand half of. But what I did understand was how cool it was to type in commands in a console which made a huge computer crunch data.

This was my first experience with Linux. I learned the basic bash commands needed to talk to the supercomputer which in turn gave me data needed for our research project. This is where I started realizing that I truly enjoyed working with computers and it made me want to learn more and more about them.

At the tail end of my college career (well my first college career), I became extremely passionate about renewable energy. So I naïvely created a renewable energy consulting company. I made a website using the drag and drop website builder, Wix.com which was a landing page and provided educational resources for users on renewable energy. I quickly learned that designing the website was far more fun than trying to score clients.

As I struggled to find clients who would trust a 20 year old with “expertise”, I dissolved the company (it was just me), and found a job. It was at this job that I became known to make some sophisticated spreadsheet formulas and was the go-to person to help with advanced Excel functions. My confidence in working with computers and simple Excel programs sky-rocketed; thus throwing fuel on the campfire.

My passion for renewable energy dwindled but my passion for programming and computers became out of control. Out of shear curiosity, I started learning how to make your own website using React.JS, JavaScript, and HTML/CSS. This led me to make a few websites for fun and I quickly realized that if I could make this a career, I would.

The Forest Fire – Python and x86 Assembly

The conditions in my life were just right to produce a wildfire of passion for technology that I enrolled in Oregon State University’s Post-Baccalaureate program and began seriously studying how to control billions of transistors with the end-goal being a career in technology.

Python was the first real programming language that I became fluent in. It took a while to learn the ins and outs of object-oriented programming with Python, but it was worth it. At first, programming languages are complete hieroglyphics. But once you are able to read what the code does, it changes the game.

Being in OSU’s program forced me to talk to computers in a way that I hope I never will need to in my career. The course on Assembly taught x86 Assembly language and forced me to read and write code in a low-level programming language. Had I been self-taught, I would not have studied this on my own. Having gone through this course, I did gain a stronger understanding of how high-level codes is translated to a lower-level programming language which is then turned into machine language where 0s and 1s are flying everywhere.

Being able to create working programs is extremely rewarding and continues to spread my passion for technology. I don’t see this fire being contained for a while…

Feel Like Giving Up? Yeah me too. But Don’t!

CS467 Blog #4

Image by Free-Photos from Pixabay

Feel like giving up? Yeah me too. But keep pushing through.

Over the course of the past few years of this online program, I’ll admit I felt like giving up and throwing in the towel. There have been some challenging courses and specifically challenging assignments where I have run into a wall and was completely stuck.

It was during these moments where the storm clouds began growing over my head and the knot in my stomach grew tighter and tighter physically forcing me to wrench over in agony as I knew the deadline was approaching and I still had a non-working program.

I’ll even admit it, during these periods where I was stuck on a problem, I straight up cried in frustration and anxiety.

The dread continues to grow until it’s unbearable; to the point when you question, “why am I doing this?” Once you’ve asked yourself this question, prepare for the downward spiral of negative thoughts and emotions.

It’s during this phase where you question if you should quit.

When emotions are high and the pain is unbearable, quitting is a tempting offer to escape. Rational thought is diminished and poor judgement occurs making you genuinely consider throwing away all of the current progress you have made.

Don’t Quit 3 Feet From Treasure

Sharon L. Lechter & Greg S. Reid with the Napoleon Hill Foundation

Often it is the case where we get stuck and feel like quitting closer to the finish line than we know.

For all the times I was stuck, I took a 5-10 minute break to cool my jets and then got back to it in a lowered emotional state.

Through the times that I felt like quitting the assignment, the course, the program, I kept pushing. I sometimes failed to come up with the correct solution when I submitted the assignment, but I submitted it knowing I did my best. But I never gave up.

Just know it will be okay

It seriously will be! Just take things one at a time. Start with the hard things and if you get stuck, move onto another task, preferably one that is easier (like writing this blog!)

And always keep the big picture in mind.

Love Python AND Web Development? Try this!

CS467 – Blog #3

Image by Michael Schwarzenberger from Pixabay

You don’t live as long as I have without a healthy fear of snakes, Bobby.

Creed Bratton

Meet Django

Django is a full-stack web framework that makes it quick and easy to create highly extensible web applications. Django is a framework written in Python that allows developers to make fast, scalable, and secure websites. Django comes pre-loaded with modern security features that help prevent SQL injection, clickjacking, cross-site scripting and others. Since Django is an open-source project, security patches are continuously being released and vulnerabilities are often found quickly.

Django is one of the most popular Pythonic web frameworks around. (Flask is the other most popular Pythonic web framework. Perhaps another blog post will discuss the differences and when to choose one over the other…)

A lot of popular websites use the Django Framework or part of the Django framework.

Popular Sites that use Django

  • Instagram (ever heard of it?)
  • Spotify
  • YouTube
  • The Washington Post, The Guardian, and The New York Post
  • BitBucket (like GitHub)
  • DropBox
  • Mozilla
  • Pinterest

Source: djangostars.com

Structure of a Django Project (Model-View-Template)

Django utilizes a Model-View-Template structure which standardizes the way that a Django project is structured. This helps keep project files nice and organized as well as makes the logic of how Django works compartmentalized. The MVT structure is based on the Model-View-Controller (MVC) structure found in C#/.NET web applications as well as AngularJS and ReactJS libraries.

The Model (Think Database)

The Model is a Python class that is used to set up the structure of a single table in a database. With the models.py file within each Django application directory, you can structure the table any way you want. But instead of creating tables in SQL, you use Python and have Django’s Object-Relational Mapping layer do the heavy lifting.

The View (Think Backend)

Views contain the “business logic” which handles how data is created, stored, and changed. In other words, it handles the backend logic that takes data from the database and sends it to the frontend for the user to view/mess around with.

For example, the views.py file for each Django application directory handles the CRUD. That is, Create, Read, Update, and Delete operations on the data. The logic for handling the CRUD is housed within the views.py files.

Also, the views.py files handle rendering the templates and passing data into the templates for the user to view.

The Template (Think Frontend)

Templates are HTML files that contain the code that the user sees and interacts with. All of the forms, images, text are housed within the template files.

Django utilizes the Jinja2 templating engine which allows data from the views.py file to be passed into the frontend HTML pages. For instance, if you had a list of Employee names stored in a database and wanted to display them all in a table format, you would have an HTML template that contains a for loop requesting data from the views.py file which in turn requests the data from the models.py which in turn gets that data from the data base.

Like I mentioned, the Jinja2 templating engine allows for Pythonic for loops and conditionals to be inserted into HTML files bridging the gap between the front and back end.

Image of Jamie Foxx from the Motion Picture Django Unchained from Columbia Pictures

Tutorials

Corey Schafer makes a wonderful Django tutorial where he will guide you through making a full-fledge Blog website!

Here is Django’s own tutorial and documentation which is not as fun to go through as a video tutorial, but provides great insight on how Django works and where to go for help if something isn’t working quite right.

Give the tutorials a shot to learn how to use Django! If you run into any issues, leave a comment below.

Need a Way to Track Your Job Applications? Use This!

CS467 – Blog #2

Introducing….. Job Tracker!!!! (Name yet to be determined)

Yes, you read it correctly. A web application that helps you track all of your pending job applications and helps you get hired is currently under development!

As this project is my capstone project (and my teammates’ capstone project), we will be designing and developing a fully-fledged Job Tracker website where you can create an account, enter your jobs/internships that you are interested in applying to, track your skills to see which skills/tools you are listing the most in your applications, and you can keep track of your contacts for some next-level networking.

Tracking Jobs

I used to use a spreadsheet to keep track of all of the applications I had submitted. But this was a huge time-waster as I spent more time formatting the spreadsheet than searching for jobs!

The idea behind our website is that you can simply add a job/internship opportunity and keep track of which jobs require which skills and you can see how frequently those skills are noted within your applications.

Let’s say you found a cool job at an electric car company that rhymes with “Pesla”… You can create this job in your job tracker and perhaps mark it as, “application not started”. Based on “Pesla’s” job description, you can enter in the skills that are related to that job. If you are keeping track of multiple job opportunities, there will be (maybe) a dashboard showing you how frequently your skills are mentioned which can be an indication that you may need to brush up on certain skills over others.

When will this be released???

Drum roll please….

Image by Jill Wellington from Pixabay

This website will be released in December of 2021!

Where can I find it???

No idea. Check back in December for a link to the website.

How YOU can help???

Image by PublicDomainPictures from Pixabay

Leave comments below on what features you’d like to see in this website. Who knows… maybe we will decide to implement it and your input will be made into a feature!

Or Better Yet….

Help choose the name of the website! Leave a comment below with name suggestions. They’re just suggestions… and not a public poll. Those are definitely trollable…

If you are wondering who I am and why you should or shouldn’t care… click here.

About Me

CS467 – Blog #1

Image by Martine Auvray from Pixabay

Well, howdy. You’ve stumbled upon a dandy of a blog.

I’m Nick Reitano and I have been converting caffeine to code for about two years now. Whether it’s coffee, tea, or pills, I’ve been dabbling in code since 2010 but became obsessed with it in 2019.

This is the first blog post in a series of blog posts for my OSU capstone course. For this first blog post, I thought it would be fitting to give a brief background of who am I and how I got here and why you should care.

Addressing the ‘why you should care part’ first…

You really shouldn’t! That is… unless you want to learn how an average joe with an average intelligence, with an average life, and with an average addiction to caffeine came to switch careers in his mid-20s.

Brief(ish) Background

I’m currently living in the Denver, CO area with my wife and mini-Goldendoodle named Milo. The image above is not Milo.

I’m originally a cheese-head from Wisconsin and moved out to Colorado with my wife to start an exciting and adventurous life as newlyweds.

Then…. I was laid off (due to budget cuts and downsizing).

This made me re-think my career options as I wanted need to have job security. Right when I graduated with my first Bachelor’s of Science in the field of Chemistry, I realized I didn’t want anything to do with Chemistry. Well, that is, I didn’t want to work in a lab the rest of my life. So, I did some exploring and began to seriously dabble in programming.

Model 3 or Degree?

I researched if a degree was needed to become a software engineer/developer and came to the conclusion that I could go the self-taught route, but then when it comes time to interview for software developer roles, would I have a level playing field with someone with a Computer Science degree?

I didn’t think so. And I still don’t think so. Sure, there are companies out there willing to hire anyone who can get the job done. But I’m highly prone to imposter syndrome and mixing in my resume with a Chemistry degree in with a towering stack of resumes with Computer Science degrees just doesn’t sit well with me. And besides, learning from a structured curriculum forces me to learn things that I really don’t want to learn (I’m talking about you x86 Assembly Language!) But it was all worth learning.

Is the investment worth the price of a Model 3 worth it for me? YES. I’m expecting a great Return on Investment by switching to a tech career. Not to mention the job security of having a hard skill that is in high demand across the globe.

Image by Steve Buissinne from Pixabay

Turn Caffeine into Code! (What this blog is about)

Don’t like the taste of coffee?? Don’t like tea??

Introducing… PILLS!!!

I justify my addiction to caffeine pills to my friends and family by reassuring them that I only take as much caffeine that is in 4 cups of coffee which is (anecdotally) the average amount of coffee per day.

But I, like many others, have found the world’s most popular stimulant to be immeasurably helpful to stay focused and to write good code. I obviously don’t encourage anyone to become addicted to anything (everything in moderation) but hey! we’re programmers and have a weird ability to turn caffeine into code.

This blog is fairly free-flowing. Topics could range from technical mumbo-jumbo to my personal experiences.

If you have any suggestions for what to write about next or if you have something interesting to say, please leave a comment below.