Getting Started Programming

UPDATE April 2018:
I found a really nice MIT course at edX.org “Introduction to Computer Science and Programming Using Python” and jumped into that.  I’m still deep into that in my spare time and it’s going great! I do recommend it.

I’ve recently become a little interested in getting my feet wet with programming, more specifically, web application development.  This is my experience learning to program.

It was hard for me to figure out which language I wanted to use.  Several people over at the MangoLassi.it community helped guide me into making my final decision.

From what I understand, a good approach is to use Python on the server, such as to receive REST requests, connect to databases, serve JSON data, etc… and then use JavaScript on top of that and on the front end.  I also decided on Python because it’s probably the best programming language for IT specifically, as in it can even fully replace scripting languages like PowerShell, and is also what SaltStack is written.

With all that in mind, I had decided on Python with Django, followed by JavaScript.

However, at the very last moment, I actually decided to start with PHP as my main programming language, then followed by JavaScript.

My main driving factors were that it hits all of the spots I need for my ideas in web application development, plus, it ties in well with a lot of things I already use, such as WordPress.  On top of that, it’s an easy language to learn the concepts of programming.  From there, other languages will be a little easier and I’ll likely move on to Python afterwards.

Setting Up

I like to run Fedora Workstation, so this post will be in that context.  I set things up to support PHP, Python, JavaScript, CSS, as well as a few other things I use for other purposes.

Prerequisites

  1. Install the following packages to better support the setup:
    sudo dnf install nodejs python3 python3-pip pylint
  2. Run the following command to install tsline and typescript support for JavaScript:
    npm install -g tslint typescript
  3. Install Pylint:
    sudo pip install pylint

Windows

On my Windows Laptop, I installed XAMPP:  https://www.apachefriends.org/index.html

Set up LAMP

If running this on your workstation desktop or laptop, you’ll need to install a web server stack.

To set this up, see my blog post here:  https://www.timothygruber.com/linux/creating-lamp-server-fedora-27-ssl/

Note any differences you need to adjust for being a workstation.

Installing Visual Studio Code

VSCode is by far the best dev platform I have come across, and this seems to be the case for experienced programmers as well.

I set it up to work with my GitLab for version control and the other benefits.  That’s been working out very well.  I’ve been using GitLab for a while now with SaltStack, PowerShell, and Bash scripting… so why not for learning to program?

  1. Install the key and repository:
    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
  2. Update the package cache and install the VS Code package:
    dnf check-update
    sudo dnf install code

 

VSCode Extensions:

I installed the following extensions in VSCode for both learning to program (PHP, Python, etc) as well as my professional needs:

Learning to Program

Moving on from getting set up, the rest is learning from books and practicing what you learn.

I chose this book to get started: PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide (5th Edition) 5th Edition

I’m now a few chapters in and have already completed my first side-learning project that covers the first few chapters, and a little skipping ahead here and there for couple things.

I have found that to help keep what you learn, working on a “learning project” that has real value and usefulness to you will go a very long way.

Leave a Reply

Your email address will not be published. Required fields are marked *