Getting Started with Web Development Tools

So I hear you want to be a web developer. You’ve come to the right place to get a head start. In this post I will outline what you need to learn to kick start your journey for the next BIG thing. This by no means is exhaustive of all you need to develop a web app. I will not cover any frameworks or technologies used for the app. This is strictly developer tools.

One quick thing before I get to the details. Everything I’m covering here is free to use & I derive no income from the links I post. There are paid tiers for hosting, but you don’t need to pay for a host until you’re ready to go public with your idea.

Now, as my infamous Intro to Algorithm Design professor said, “Let’s get start.”

Here are what we’re going to cover:

  • Integrated Development Environment (Text Editor)
  • Version Control System
  • Continuous Integration / Continuous Delivery
  • Hosting

Integrated Development Environment (IDE)

Since you will be working with text the first thing you will need is a text editor. My favorite is Visual Studio Code (VS Code). This tool is free, open source, has git integrated, many many plugins are available, a built in debugger, and it is easy to use.

Other editors exist but I stick to VS Code. I have heard goo things about Atom. I do not have any experience with Atom, but I do know that git is baked in.

Version Control System (VCS)

A VCS is a system used to store and backup your code. It tracks changes and allows you to easily revert any breaking code changes you made. Changes are stored as commits. A commit is simply a group of changes in any number of files. Say you find a bug in your code that you accidentally introduced a couple days ago. Working with a VCS you will be able to identify when you broke it and easily fix it.

The most popular VCS by far is git. From here on out when I say git I am referring to your VCS. There are two great options for hosted git repositories: GitHub and GitLab. Both of these offer CI/CD which I cover in the next section. To access your git repo you will need an application. Personally I like Fork because it makes following the git flow workflow easy. If you decide to use GitHub they have a desktop tool available that easily plugs into your GitHub repos.

Tip: Commit often and be descriptive without writing a book in the commit comments.

Resources:

Continuous Integration / Continuous Delivery

These are actually two separate categories, but I’m going to tie them into one section as they both go together like sugar & spice.

Continuous Integration (CI) is the process of a system automatically building and run unit tests for your application when new code is committed to your git repo. What’s good about this is that you and your team can make code changes and once committed will automatically know if there are any breaking changes or bugs. Of course, unit testing should be done locally before pushing to git, but it’s an easy step to skip when you’re pounding out code. CI processes can be used to automatically kick off a Continuous Deliver process.

Continuous Delivery (CD) is the process of a system automatically publishing your app when code changes are pushed to your git repo. As part of the CI/CD process, if the CI fails in any way, including unit tests, CD will not be performed. Including unit tests in your CI will help ensure there are no bugs in production given your unit tests are correct.

The combination of or even using only one of these takes the leg work out of the deployment workflow. I recommend integrating CI/CD wherever possible. GitHub has CI/CD baked in, but I have had great success with Circle CI. Circle CI hooks into GitHub so when you push a commit to GitHub a build will kick off in Circle CI.

Tip: the only way to ensure there are no bugs is to write no code. Don’t beat yourself up if a bug slips through.

Hosting

Hosting is how you make your app available to the world. Once you’ve got the app published to a host it is available for the world to use. There are literally thousands of web hosts available. One personal favorite for anything not .NET is Heroku. With a free account, you can get up to 1,100 dyno hours. Think of a dyno as an app. 1,100 / 24hrs = 45.8 days. This basically equates to one free hosted app forever, or at least until their pricing model changes.

Another option if you have a .NET app is GearHost. This is currently where I host this WordPress blog. On top of web hosting, they also offer database hosting. Like every other host, there are free tiers and paid tiers. The tier you need is determined by host popular your app is.

Note: Heroku has a number of getting started tutorials to introduce you to programming languages and Heroku hosting.

Pull it All Together

One app I have personally used all that is mentioned here was a trading bot written in Python. I used VS Code for programming, debugging, & unit test running, GitHub for git VCS, Circle CI for CI/CD, and Heroku for hosting. I made code changes in VS Code, committed the code to GitHub, Circle CI kicked off a build running the unit tests and if the unit tests pass the app is automatically published on Heroku.

Tip: you can use web hooks to integrate notifications into Discord from both GitHub and Heroku. You’ll notifications on new commits and the status of CI/CD.

Bonus: Unit Testing

I mentioned unit tests a few times in this post. I don’t want you to walk away from this with more questions than you when you got here. Here’s the Wiki article for Unit Testing.

Unit Testing is important because software developers sometimes try saving time doing minimal unit testing and this is myth because inappropriate unit testing leads to high cost Defect fixing during System TestingIntegration Testing and even Beta Testing after application is built. If proper unit testing is done in early development, then it saves time and money in the end.

Unit Testing Tutorial: What is, Types, Tools & Test EXAMPLE

I truly hope this helps you jump start into web development. There are countless tutorials that walk through different technologies and how to build an app. Perform an internet search and get to developing. Have a great day 😀.

Cheaha State Park Primitive Camping

The wife and I have picked up a new hobby, camping. I grew up in the Boy Scouts so I camped out about once every month as a child and a teenager. All the time I spent camping I had built up a collection of equipment growing up which my parents gifted me when I moved out into my own place. We have camped a couple of times in the past, mostly with friends. We enjoy primitive car camping. No shower is necessary as we are only gone for a couple of nights.

Our first camping experience was at Oak Mountain State Park in Birmingham, AL. The park is fun but the primitive campsites are right by the RVs and all sites are close together. Our experience here put us in a campsite next to a family with 2 children under 10. Needless to say that we did not get the peace and quiet we signed up for.

This leads me to Cheaha State Park just south of Anniston, AL. The park is beautiful and is situated 0.5 miles from the Pinhoti Trail. In search for an adventure outside of our house during Coronacation 2020 we came across primitive camping at Cheaha. Normally there are 2 primitive campgrounds available but during our visit the CCC Primitive Campground was closed for construction so we spent 2 nights at the Upper Primitive Campground.

Upper Primitive Campground
$19.00 per night Lodging tax NOT included
Primitive sites are located along Tower Road, Alabama’s highest point. There are 26 sites available. Each site has a picnic table, fire ring, shared water spigots,  and access to public restrooms (no bathhouse access).

CCC Primitive Campground
$15.00 per night Lodging tax NOT included
The CCC Campground is on the site where our last Civilian Conservation Corps Co 2420 camped as they built the park. We have 28 rustic sites available. With a tent pad, fire ring, access to a vault toilet, and access to community water spigots (no bathhouse access).

https://www.alapark.com/parks/cheaha-state-park/campgrounds

The campground was nice and we had a good time. What we enjoyed most was the food and the hiking. There are a number of camp sites and we wound up at P111 which is 10ft from P110. It turns out that there were 2 families with a total of 5 children under 10. Once of which would not keep quiet from the hours of 9 am to 8 pm. Thank goodness we were hiking until 3:30 and were able to grab a quick nap until she got back to camp.

All this to day that make sure you pick a campsite that is not close to the one beside it. From our walk through the campground we found that there are a number of sites which we would enjoy staying in because they are not in close proximity of other sites. Below are a few notes about camping at Cheaha and campsites I recommend.

If you have any recommendations for primitive camping where campsites are dispersed in Alabama, East Georgia, or South East Tennessee I’m all ears.

Notes:

  • You can bring your own firewood
  • Water is available on site
  • There is no shower
  • There is an indoor restroom
  • There is plenty of hiking available
  • Max 8 people at each site
  • Recommended Campsites in Upper Primitive
    • P105 & P106 look big enough for 2 tents
    • P112: no campsite next to it
    • P125: away from any campsite

Steps to Become a Bad Developer

Every developer knows that the tools is what makes or breaks a project. In this short post I will explain a few steps which will make you a bad developer. This might seem silly but right out of college I invested no time into studying these key points. Hindsight is 20/20 as we all know but I want to keep you from looking back and kicking yourself. Let’s take a ride on the knowledge express.

  1. Forgo Source Control
  2. Do not use a Password Manager
  3. Use a free hosting provider

1. Forgo Source Control

This is THE MOST important step in being a bad developer. Source control is easy to use and will save you in no time. Say you have just finished a feature on in a service on your app and you want to expand said service to add another feature. You start working on the new feature and the service quits functioning as it should. Your first thought is to hysterically hit ctrl+z and watch the text cascade to what you hope will take you back to a functioning service. Unluckily for you ctrl+z took you back too far or you had to close your editor and lost ctrl+z magic.

With the use of source control you can be back in time to a working service in just a few clicks. Never work outside of source control. My preference and that of the developer community is Git. Git is simple to use, it is quick, and can will save you time developing. Not to mention that you can setup auto CI/CD via Git commits. Purists prefer to use the command line for Git but I prefer the simple UI of Git Fork. There are some links below to get you started.

2. Use a Free Hosting Provider

This combined with 1. is the worst mistake I have made in my development career. Early twenties me was working on a state of the art meal tracker application which allowed you to track your meals macro nutrient ratio and add foods from a 3rd party source. I spent many a night working on this project all without source control. Mind you all through my college career (2006-2011) none of my professors mentioned using source control. I do not blame them as simple research would have led me to this path. This section is on free hosting provider.

I chose to use a free hosting provider as I was jobless and broke. My internet search led me to a site 000webhost which provides free web hosting. The price was right. The hosting service worked and I was happy. That was until I learned that to keep your website live there must be active visitors which I currently had just me. A few weeks went by and I landed my first job and in the hustle and bustle I quit working on the project. This was when I learned of the terms and conditions of 000webhost that if your site becomes stale it will be deleted.

3. Do not use a Password Manager

A password manager is great by giving you 1 password to rule them all. It is also bad, giving you 1 password to rule them all. Password managers are applications which store your passwords encrypted using a single password. You must remember this password or else your data will be gone. When you setup your password write it down and store it in a safe place. Preferable multiple places so that an unwelcome fire will not blow your data away.

Say you are hosting a data driven web app that provides a service to users at a competitive rate. Users data is protected via keys and there exists admin passwords. If you lose the keys and/or admin passwords you might have trouble accessing the service in the event of an issue. The hosting provider has password access which you will lose if you misplace your password.

Below are a few password managers. KeePass is the most trusted being open source and you host your data so make sure you have a safe backup solution. Bitwarden is my favorite as it provides end-to-end encryption and you can host the service. I’ll leave the rest for you to research.

I want to end by telling commanding you to be a good developer: use source control, a password manager, and paid hosting. It can be cheap.