HOW TO SET UP YOUR LINUX ENVIRONMENT – PART II (Learn.co Setup Included)

So now you have your Ubuntu installed and you’re ready to move forward and set up your Coding Environment. We will go through the process of getting a good IDE as well as installing all of the packages that we need. I’ll also take you through the steps of setting up your Linux to interface with Learn.co in case you are a student with the Flatiron School. Lets get started…

First off we need to set up a “Group” that we will name “npm”. This way we can set permissions on packages that get installed via npm. This will allow us to globally install npm packages. Copy and paste both of these commands into your terminal.

sudo groupadd npm
sudo usermod -a -G npm,staff $USER

Lets go ahead and make sure that our system is up to date before moving forward. You can do this by using the following code in your terminal…

sudo apt update
sudo apt upgrade

Essentials Dev Tools

Ok now that we are up to date lets install some of the essentials. (Most of this guide will be simply pasting code into your command line.) So the following code will install Node.js, sqlite3, and Postgres. You will need Postgres for when you hit the limits of sqlite3. If you don’t know what these are for yet, don’t worry you will learn what they are eventually.

sudo apt-get -y install curl postgresql libpq-dev default-jre build-essential phantomjs
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install nodejs

File Permissions

Now that we have that set up lets set up some file permissions, that way we will be able to properly use the tools that we just installed through the terminal.

sudo chown root:staff /usr/bin
sudo chmod 0775 /usr/bin
sudo chown -R root:npm /usr/lib/node_modules
sudo chmod 0775 /usr/lib/node_modules

chmod stands for “Change Command”, and chown stands for “Change Owner”. You can read more about these commands, and what they do, here if you would like. Ok moving on.

Necessary for Learn.co (Flatiron Students only)

This next command is for Flatiron Students specifically, so if you are not enrolled then you can ignore this next command. So at the Flatiron school they have learning system set up that they call Learn.co and it has predefined commands called “learn”. You will need to use this frequently while doing your labs. In order for the learn gem to work we need a netrc file. The .netrc file is a standard location to store login/token info, so that is where we store information needed for learn.

touch ~/.netrc && chmod 0600 ~/.netrc

Touch is a command used to create a file and we just went over what chmod stands for earlier.

Installing RVM (Ruby Version Manager)

Ok next lets install RVM. Rvm is a tool that we use to specify or change the version of Ruby on our computer. Some of the labs will require you to use older versions of Ruby so this will come in handy later if you’re a student at Flatiron. Also, in the future you could be working on a project that was previously done in an older version of Ruby, RVM allows you to change to whatever version you need. You can install it by putting in the following commands, in order.

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

\curl -sSL https://get.rvm.io | bash

echo "[[ -s "$HOME/.rvm/scripts/rvm" ]]" && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*"

rvm install 2.6.1

rvm use 2.6.1 --default

So using rvm install <version> you can install the version that you need, and use rvm use <version> to switch between different versions that you have installed. You can check to see what versions have been install using the command rvm list, and check the current active version using ruby -v.

Setting up Ruby Gems

If you are not yet familiar with a programming language, in Ruby, Gems are basically libraries of code. You can install these and add these chunks of code to your projects, and it can make your life a lot easier. Learn from Learn.co is one of these Gems. Lets set this up now.

echo "gem: --no-ri --no-rdoc" > $HOME/.gemrc
gem update --system
gem install learn-co
gem install phantomjs
gem install pg
gem install sqlite3
gem install bundler
gem install rails

These Gems are just the basics to get you started. You will find more that you like or that you need as you learn and start new projects.

Installing Node Package

Similar to Gems there is NPM, or Node Package Manager. Again, these are just chunks of code that you can install and use in your projects. We need to install NPM as well as NVM (Node Version Manager).

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
restart your terminal after imputing the above code, then enter the below code...
verify NVM was install properly by typing... nvm --version
you should get an output of a version such as '0.34.0'

Now run the following code in your terminal to finish up the installation.

nvm install node
node --version

nvm install --lts
nvm install 8.10.0

nvm ls   (this will display a list of all the versions you have installed)

Set up your Github account on your Computer

If you have not set up a Github account already, then before you proceed you need to go to github and set up and account. All of your projects will be stored on your github and you will be pulling and pushing files to and from your Github repositories. So we need to link your account to your pc. You need to set up and SSH key for you computer so you don’t have to put in a password every time you want to send data to your github account.

ssh-keygen

(Only generate an SSH key if you don’t already have a generated SSH key. Just press enter for everything and don’t enter a password.)

cat ~/.ssh/id_rsa.pub

This will display your SSH Key in your terminal. Copy your key and then add the key to your github account. You can do this by following their instructions here.

Finish Learn.co configuration

Ok so we have most of what we need to have a legit Dev environment. Again, learn is for Faltiron students, so you can skip over this if you are not enrolled. We have to link your Learn.co account with your github. You will be doing labs, running tests, submitting code, and all of this gets pushed to your github which Learn can see.

learn whoami

Enter OAuth token when asked…

  • If you have connected your Github account to your Learn account, navigate to learn.co/your_github_username. The OAuth token is at the bottom of the page.
  • If you have not connected your Github account: Go to your profile > Learn Settings > Public Profile. Click on the link under Username. The OAuth token is at the bottom of the page.

You’re now set up for Learn.co. However, even though there is a built in IDE to Learn.co it does not work on Linux OS. So we need to do all of your labs in an IDE installed on your computer. MAC users will eventually start doing this, and it is recommended that you do this as soon as possible anyways. You can find instructions on how to open labs in your Text Editor here.

Download Useful Apps

If you don’t already have an IDE installed on your computer you need one. I would highly recommend VSCode, especially for beginners, but it is your personal preference. I will post links to VSCode download and other good apps to have in your Dev environment below.

Visual Studio Code

Download here

Google Chrome

Download here

Slack for Linux

Download here

Zoom (Essential if you happen to face a pandemic…)

Download here

Spotify (because we all need some music in our lives)

There is not currently a download client for linux, so we will have to install via the terminal. Copy and paste the below all at once.

curl -sS https://download.spotify.com/debian/pubkey.gpg | sudo apt-key add - 
echo "deb http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list

This configured their Debian repository. Now we can install the spotify client.

sudo apt-get update && sudo apt-get install spotify-client

Now we have some tunes!

Optional Files

Alright you are pretty much done and can get to coding! There are some more helpful files that we can install to make our lives easier and I would recommend it, but it is not necessary.

curl "https://raw.githubusercontent.com/flatiron-school/dotfiles/master/irbrc" -o "$HOME/.irbrc"

This file gives you some nice formatting for when you’re in IRB (IRB lets you write ruby code in your terminal)

curl "https://raw.githubusercontent.com/flatiron-school/dotfiles/master/ubuntu-gitignore" -o "$HOME/.gitignore"

Global .gitignore rules. When you add a .gitignore file to a project, it let’s you specify certain files that you DO NOT want pushed up to github (like API keys…)

curl "https://raw.githubusercontent.com/flatiron-school/dotfiles/master/linux_bash_profile" -o "$HOME/.bash_profile"

Your bash profile loads up every time you open a terminal window. The Learn bash_profile is designed to load up a bunch of shortcuts for you as well as make sure that RVM loads up every time you open the terminal. I recommend you take a look at this file and even see if there are any shortcuts of your own that you’d like to add! Note: this will overwrite existing bash profile, so back up if you want to.

curl "https://raw.githubusercontent.com/flatiron-school/dotfiles/master/linux_gitconfig" -o "$HOME/.gitconfig"

nano $HOME/.gitconfig

With this you can edit github username and github email in a few places.

AND THATS IT! You are good to go.

How to set up your Linux Environment – Part I

So I am a software engineering student at Flatiron School, and unfortunately we had to go remote due to the COVID-19. For the SE program full immersive on campus course they require you to use a Mac. Not a huge fan. So I had to rent a macbook air which wasnt bad for the purposes. Until we went remote. The overpriced hunk of junk was overheating and running ridiculously slow while in Zoom meetings, sharing screens, coding, etc.

I wanted to use my beast of a laptop for this program from the beginning but I knew that I had to set up a Linux environment. So here is how I went about doing that…

First off there are two ways you can do this. You can either Dual Boot Linux onto your windows(or mac -_-) or you can set up a virtual machine. I have tried both ways and I prefer the Dual Boot. That is what I will be going over today. Also I am using windows to dual boot.

Step 1

So you will need a usb flash drive that is > 25GB. We will be using this to make a bootable drive that will have Ubuntu 18.04 (linux) installed on it. You can download the latest version from here. Once that is downloaded and you have your USB drive you can download the Rufus tool to easily set up Ubuntu to be Bootable from your flash drive. You can get the tool and read how to use it (pretty self explanatory) here.

Step 2

Before going any further you can backup your current drive however this is widely tested and most people don’t have problems. Now you need to disable fast boot on your windows. You can do this by going to Power Options > System Settings > Choose what the power buttons do and uncheck the Turn on fast startup box.

Now we need to disable Secure Boot. If this sounds unfamiliar and risky to you, don’t worry its completely safe and is necessary for booting from the FLASH drive with ease.

So in order to do this in your search bar search “Advanced Startup Options”. You will want to select Restart Now and from there Select Troubleshoot>Advanced Options>UEFI Firmware Option Settings>Restart. You computer will restart and take you to the BIOS settings. Go to the Boot Tab and from there you disable Secure Boot.

You can now restart and log back into windows.

Step 3

We need to create HardDrive space for Linux. We are going to set aside a portion of the computers hard drive for this. Using the search bar, look up “Create and Format Hard Disk Partitions”.

You can select the partition that you want to set aside space from and you can click “Shrink Partition” and you can set how much space you want for Linux. I recommend at least 25GB but I put aside 100GB myself since it is where I will be doing all of my future projects. You will see Free Space in green once with the amount that you specified.

Now we are ready to boot up from our flash drive we made earlier with Ubuntu and install it on our computer. First we need to restart again and go into or BIOS settings to enable boot from flash drive. You can access the BIOS in a few different ways, it depends on your computer, but the most common way is to hit F12 or ESC or F2 at the start up of the computer.

You will see your BIOS Menu, go over to boot, and you should see your USB (it should be plugged in…) as a boot option. The menu looks like the image below.

Step 4 – Installation

Now it will boot from your flash drive and it will restart. It might sit on a black screen for a second but it will load up the Ubuntu Installation screen and will look like so…

You will want to choose Install Ubuntu with your preferred language and it will take you to the next menu. You will be asked to choose your keyboard layout, it is default to the U.S. layout but there is a list you can choose from. From there it will take you to the Installation Type.

Here if the option shows up for Install Ubuntu alongside windows 10, choose this option. This will make the installation very easy and most everything is done for you. You will just have to choose the partitioned memory that we set up early for the installation.

If it does not show up choose something else, and I will walk you through the steps. DO NOT choose Erase Disk and Install Ubuntu! If you do this you will erase the windows on your computer and you will only have Ubuntu OS on your computer. If you accidentally did choose this… lets hope you set up a back up or bye bye windows..

Now if you chose “Something Else” follow the next steps carefully. You will come to a screen where you will choose the partition of memory that you set up earlier. It will say “free space”. Something like this picture below…

Select the free space and then you’re going to want to select the “+” button. This will let us set up the Swap Area. The swap area is basically virtual memory. So if you computer ever runs out of memory or RAM, Ubuntu will use this extra memory set aside to help out. Once you click the “+” you will get a menu and you will want to put in an option of how much memory you want to set aside for the swap area. The general rule of thumb is to set aside 1x-2x of the amount of RAM that your computer has. So if you running 8bg of RAM you can put between 8-16GB aside for the swap area.

After you put in the size, remember 1000mb = 1gb, you want to make sure to choose “Logical”, “Beginning of this space” and on the drop down menu choose swap area. Then click ok. Next we will repeat this process but for setting up the rest of the allocated memory for the hard drive. So now your going to want to select the free space again and click the “+” button. You will get the same menu but you want to leave the “size:” at what it is at, because that is the remaining space after allocating your swap area. Choose “logical”, “Beginning of space”, and on the drop down menu select “Ext4 journaling file system”. For the mount point, select “/”; this is your Root directory.

Click ok and then you can go ahead and click “install now”. A menu will come up, double check to make sure you’re installing to the correct drive and then click “Continue”.

You will come to a screen to select your location, so go ahead and choose the time zone that you’re in. At this point you will come to a menu to custimize the name of your computer and set up your password. It will finish, and you will have to restart your computer. At this point, remove the USB so it wont boot from the USB. When it restarts it will come to the GNU GRUB interface menu. You can choose which OS to jump into. It will be Ubuntu on the top but you can always go down and select windows.

Now you’re ready to use Ubuntu! You will go through some “how-to” menus but you can skip all of that. Now we can get into the fun part. Lets set up your programming environment. Click the link to part 2 of this post to see how.

Continue setup with Part 2 here.

Also here is a YouTube resource for setting up Ubuntu in case you need a visual representation. I used this when first learning how to do this…

Data Scraping – What is it?

Everywhere you go on the internet is filled with Data. If you’re looking at an image on Instagram, that is data behind the scenes displaying that image for you. If you’re reading an article on a new platform, there is data behind the scenes displaying that data as well. If you’re reading this article, this might seem very elementary for you.

This Data is used and shared throughout the web. I’m sure you know that when we want to access some data for an app or project that we are working on we will look for an API to use. However, what if we can’t find an API that is providing the specific type of information that we need. Ahhh that is where Data Scraping comes in. Now API’s basically are “scraping” data, or pulling data, from the source that they intend. But it is just another method of Data scraping. API’s working differently in the fact that an API, application programming interface, is an intermediary that allows one software to talk to another software. Basically, an API allows the user to open up data and functionality to other users and developers.

API’s are the most popular, and easiest, ways of gathering the data that you need. However, it has some downsides. First of all, an API does not have access to ALL of the data, it is very specific. Also, there are limits to the amount of times you can “call” and access this data. These rates vary from one API to another. Most of the time to get more usage out of an API you have to pay a monthly or yearly rate. Also there is an issue of legality. Now, arguably, it is not illegal to use an API and get data and is not copy-rightable. However, the database where that data is stored that you are accessing can, arguably, be copyrighted. So this is something that should be considered when using API’s.

Now the other option for getting data that you need, is Web or Data scraping. These are the best options for you for many reasons. For one, you always get up to date data. You are not relying on the providers of an API to keep their information up to date.

Second, you can customize and specify the exact data you are looking for. Sometimes an API just won’t cut it and you can’t find the right API to get the information you are looking for. So with Web Scraping you can specify exactly what you need.

Third, there are no RATE LIMITS!! You control everything. You don’t have to pay someone to make more “calls” for the data or to just gain access in general. You are implementing the scraper and getting the data yourself. (Assuming you make the scraper and don’t outsource to a web scraping service. Yes you can do this… Lazy!)

Also, you can stay anonymous. You can gather the data that you need and stay private without providing your information to a websites Administrator. With an API you must register and account and get your own key, and they track every request for data that you make. So it is practically impossible to stay anonymous while utilizing an API.

Both options, API’s and Web Scraping, have their purpose and are very powerful tools. You must decide which one will better suit the needs that you have.

Next post I will be going into detail on how to make your own web scraper utilizing a Ruby on Rails app.

“5 Years later” – My Journey into coding

I can’t believe it has been 5 years since my first blog post. And, wow… how things have changed. I originally started a blog to practice writing. I still have a desire to write a book. I keep on having more and more fictional inspirations that I will write down and store for later. Writing is difficult, and I admire anyone that can sit down and actually finish writing a book.

Besides my desire for writing a book, 5 years ago I was in a completely different… world. 5 years ago I was a new father, a CAD Designer looking to go back to school for engineering, and in a toxic relationship that I stupidly fought for, for way to long. Now I am 6 weeks in at Flatiron school bootcamp, well on my way to becoming a Software Engineer! I am married and have two kids. Life is good. How did I get here?

It’s crazy to think about the past, decisions you have made. Maybe ones that you wish you hadn’t made or ones that you’re glad you made. Either way, the passing of time can be a strange experience at times. My life has been full of its “ups and downs” so to speak. I used to be a very pessimistic person, hiding under the guise of optimism. I am always hard on myself when meeting with the helping hand of failure. I say helping hand.. This is a lesson that took me a long time to learn. Failure is one of the best experiences that life can give you. It’s how you adapt and learn from it. It is life’s Teacher.

I have had many jobs as a drafter/CAD designer, and I enjoyed it for the most part. The love for coding and problem solving that I found steered me away from my engineering ambitions. It is still a subject that fascinates me, but I don’t think it is something that I would want to do as a career.

I have also tried my hand at other things. My dad was an Air Traffic Controller. This was something that amazed me as a kid. I remember my Mom and siblings going to the Tower to meet him for lunch and being able to look at all the instruments that they use and the planes flying in. It was an incredible experience. Mind you, this was before 9/11 and then security got extremely tight, and we had to take a step back from the adventures in the “tower”. My dad encouraged me to take a test to see if I qualified for air traffic control “school”. I don’t like studying… It is not my forte. So like most tests I would take, lol, I winged it. I made a 94, which then my dad proceeded to reply, “well that isn’t a 97″…. Which was what he made on it back in the day. I think I get my sarcastic humor from my dad lol.

Anyways, long story short, even with a high test score I didn’t make the cut. This was disappointing to say the least. I was looking forward to following in my dad footsteps. From there I just continued my career within the Engineering field. I learned a lot from some amazing engineers. You might think that you are intelligent, until you work next to some truly “genius” level individuals. It was a really humbling experience, and motivating as well.

After going through a really bad break up with before mentioned toxic relationship, I was in a dark place. I had been laid off multiple times over a 3 year period, had to move back in with my parents (something that feels humiliating at my age), and lost the person, who at the time I thought was the “one”. If you are not a stranger to the feelings of depression, you can probably imagine how I felt. It took a long while, and my close friends being there for me to pull myself out of it. I remember some days sleeping for 16 hours straight and then still not wanting to get out of bed. It was a tough time.

Life throws you curve balls. You just need to learn how to hit it. There are good times and bad, but thats what makes life, well.. LIFE. After going through all of these “dark” times, I met the real love of my life. I say met, but actually I’ve known her all of my life! It’s crazy how life works out sometimes. I married my best friends older sister, who I had a crush on since I was like 7 years old. (high five!) There is a lot of history between our families. My best friend was actually named after my dad. My dad and my wifes dad were best friends growing up. I couldn’t be happier and I can’t wait to see what the future holds for us.

I am now in the Software Engineering program at Flatiron school. It is tough! It is tough, but rewarding. I have learned so much in a short period of time and I am loving every moment of this journey. I have made good friends and met some amazing people. I look forward to writing some more and keeping you apprised of my progress, accomplishments, and even failures.

~ Peace, Mitchell

‘AFPlay’ – Definitive guide to manipulating Audio in your CLI Application (Ruby)

I have learned a lot in my brief time at Flatiron school. The journey so far has been intense, exhausting, and rewarding all at the same time. The Software Engineering program lasts for 15 weeks and consists of 5, 3 week modules. It’s crazy how much, and how fast you learn! I have only been a student here for a month now and have only just completed module 1. I learned a lot and I would like to share a little bit of what I learned here with you.

Our first major project was to design a CLI App utilizing Ruby and SQLite3. Basically a ‘CRUD’ app. My partner and I decided to make a Typing Speed game that would keep track of your WPM and also track highscores. It was a fun learning experience, even frustrating at times. My biggest challenge was adding audio/music that would play in the terminal… This is when I came across ‘afplay’. **DISCLAIMER – This only works on MACS** -_-

‘afplay’ is a built in function with Mac systems. You can simply use the function to point to an audio file, and it will create a Process to play that file.

pid = fork{ exec 'afplay', "../filename.mp3" }

So make sure that you have the right file path (you can upload your audio file to github and use that file path). Now this bit of code will create a Process, fork/exec, that will play your audio. Now it will play until it finishes the audio file or if it is a long audio file it will keep playing even if you exit your CLI application. So what do you do?

We have to kill the Process we started. We can do this with a similar line of code.

    pid = fork{ system 'killall', 'afplay' }

Where ever you put this it will immediately ‘kill’ the process you started to play the audio. (I used ‘system’ in this code snippet above, you can use exec or system, they are interchangeable.) I would recommend putting the kill command to execute on exit of the application.

GREAT!! Now we have auido/music working with our CLI Application! WOOT! … but wait… What if you want to play multiple audio files and switch between what is playing based on certain conditions. Can we do this? This is where it got tricky for me! I had a hard time finding any info on ‘afplay’ and switching audio files. I tried many different “solutions” that I thought would be obvious, like the below code…

if condition1 == condition2
        pid = fork{ system 'killall', 'afplay' }
        pid = fork{ exec 'afplay', "../filename.mp3" }
    elsif condition3 == condition4
        pid = fork{ system 'killall', 'afplay' }
        pid = fork{ exec 'afplay', "../filename.mp3" }

In my mind I thought this should work. My thought was that if a condition was met you could kill the previous Process, then start up another one and play a different Audio file. Makes sense right?? Well Ruby would read the ‘killall’ command and it would successfully kill the music that was playing when ‘said condition’ was met, but it wouldn’t execute the next line and start the new Process!! This was very frustrating. So I had to dig deep… DEEEP into google lol. Ok maybe I’m exaggerating, but it took me a while to find out why this wasn’t working.

So I’m sure you have noticed that I have emphasized that this line of code will create a PROCESS. So the more research I did, for I didn’t fully understand this code and how it worked right away (I just copy/pasted pretty much), I found out that ‘fork/system’ creates a built in Ruby class called Process. You can research this if you would like, I could spend a whole other blog post talking about Process. However, this got me thinking. We started a “Process” and were stopping it by using the ‘kill”ALL”‘ command… and PID actually stand for Process ID. So what if killing-all was KILLING ALL the processes and this is why I couldn’t switch audio?! This was my EUREKA moment!

So turns out you can kill individual Processes by their ID!

Another nice tip that I learned in this process was that “fork/system” could be replaced with one word => “spawn”.

pid = spawn( 'afplay', file )

Make sure that when you use “spawn” you use parentheses “()”, and not “{}” or it will not work. (I made this mistake and it kept me up at night!) Ok so now you can make this into a method so you can pass in an argument, aka the audio file you want to play!

def play_music(file)
    @pid = spawn( 'afplay', file )
end

This was the method that I used to make it easier to switch audio later. I made the “pid” an instance variable (‘@pid’) so that I could call on it later. Now how do we kill the individual process so we can start another? Try this…

def switch_song
    Process.kill "TERM", @pid
end

Notice, I put this in a method as well. I think you can probably start piecing together how I made this work now. So Process.kill (not ‘killall’) and the “TERM”, which means “TERMINATE”, and then you specify the process that you want to end. Since we made our process id an instance variable we can call on that here to end the process. This is how I used these two methods together to switch between different songs based on conditions met…

def play_theme_music
    if @current_theme.name == "The Office"
        switch_song
        play_music('music/the_office.mp3')
    elsif @current_theme.name == "Coding"
        switch_song
        play_music('music/tetris.mp3')
    elsif @current_theme.name == "Runtime Terror"
        switch_song
        play_music('music/halo.mp3')
    elsif @current_theme.name == "Russian"
        switch_song
        play_music('music/handball1.mp3')
    elsif @current_theme.name == "Numbers"
        switch_song
        play_music('music/mario64.mp3')
    elsif @current_theme.name == "Jibberish"
        switch_song
        play_music('music/mario64.mp3')
    elsif @current_theme.name == "Star Wars"
        switch_song
        play_music('music/dual_of_fates.mp3')
    end
end

Now this is the exact code from my final Mod 1 project at Flatiron. (I will post a link to my GitHub repository for this project in case you’re curious how this method worked with the rest of the project. I will post a YouTube video as well to give you a quick look at how the CLI App worked.)

I still utilized the original “killall” method (referenced earlier), but I only had it execute on the exiting of the program. There was one other thing that I was playing around with that I didn’t figure out before I ran out of time to complete the project. I wanted to play an audio file and have it loop. Now I didn’t try this once I found out the right way to switch between audio files, so It will probably be easy to figure out. I will update this post if I have the time to go back and figure it out, or if you figure it out leave a comment and let us know 🙂

I have really enjoyed my journey so far and I can’t wait to share with y’all all of the amazing stuff I learn. Thank you for reading 🙂

Enjoy the music! PEACE! MITCH OUT!

P.S. GitHub link and youtube video below of my project.

https://github.com/timothyalton/module-one-final-project-guidelines-houston-web-012720

Hello There

First off, I just wanted to thank you for stopping by to indulge into my random thoughts that I have decided to pen. I’m not entirely sure why I wanted to start a blog, because I wouldn’t consider myself a “good” writer, however I do enjoy it. I have attempted to write a few books from a few Ideas that came to mind, but I never kept up with it to the end. So maybe this is my attempt at trying to become a better writer? Or, rather, I just feel the need to express myself in a realm without judgment. Somewhere to vent, and be myself.

My name is Mitchell, as you have probably figured from my clever title. I have many ambiguous ambitions in life. I say that due to the fact that a lot of the “things”, for lack of a better word, that I want to do are unclear to me whether I want to give it my full attention, or if I would focus on something else. For example, my aspirations of becoming a pro-gamer. I would love to get paid to play the games that I love, whether casually or competitively. However, this takes hours of dedication and time to get to that level. I would happily dedicate the time to do so, but I have to be reasonable. So, perhaps, “ambiguous”  was the wrong word here. Tantalus… Yes, Tantalus describes this quite nicely.

I do want to make something of myself, that is definitive. My plan, the one that is most logical, is to go back to college and get my degree in Engineering. This is the field that I work in already; I am a CAD Designer. As much as I would enjoy being an Engineer, I don’t feel like it is my “dream career”.  Of course one of my “dream careers” I mentioned earlier. Another Ideal career that I have put much thought into, and would enjoy immensely, is becoming a writer. I have had many adventures within my thoughts that I find would make a great story. However, I can never seem to get around to actually writing them down. So maybe I’ll use this blog to “publish” some of my short stories, or even parts of a novel. I don’t know yet.

My Ideal life as a published author, would be living on the coast, or at least near it, in Oregon. I can see myself walking the coast line just to enjoy the day and get some inspiration. Going to the local coffee shop and working on the next novel, or whatever I happen to be working on. That would be an amazing life for me that I would tremendously enjoy, but then I get realistic. You never know, maybe one day I will be a well known writer.

That is just a little about myself. I have no particular “theme” for my blog, just the accumulation of my thoughts will have to do for now. Hopefully something will come of this, whether I become better at writing, or I will finally be able to piece together a Novel. Only time will tell.

Thanks, again, for stopping by and making it this far. I will be posting something new fairly soon, so feel free to follow me and see where this takes us.

~Mitchell