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.

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.