[001] – Server Setup, DNS, and Key Decisions

There is quite a bit to catch up on since my last post so let’s get right into it!

CSS Framework

As a FrontEnd Developer, it’s hard to resign myself to using something like a CSS Framework. Initially, I intended to custom style all the things for this project, but the more I thought about it, the more I realized how much time and energy this would consume.

For this reason, I have decided that I will use a CSS framework. For now, my choice is going to be Bulma.io. I’ve known about Bulma for a while and the thing I really like about it is that it is right in the middle when it comes to CSS frameworks. Not too heavy, not too light.

Tooling

Another major decision I made this past week is that I will be using create-react-app to scaffold the React frontend.

I love Webpack, and for some weird reason, I like configuring it. However, it can be time-consuming to configure and I need really focus on saving time and mental energy especially at the start of this project.

Server Setup

I admit I am a complete noob at DevOps. I know barely enough to be dangerous.

A lot of the server setup and configuration I am using comes from a great course I took over at https://jsfullstacker.com/.  I found this site by watching the awesome videos Rem Zolotykh puts out over on YouTube. Rem is a great teacher and really knows his stuff!

I’ve decided to use Digital Ocean for this project. This is my first experience using it and so far it’s been really great.

Right now, I have a staging and production environment setup. I really have no idea how this workflow will work, but I’d like to try it. Staging will be for active development and once a feature is complete, it will be pushed to prod.

Here is a quick list of things I had to do to get this setup and working:

  • Create a new droplet on Digital Ocean
  • Set the droplet up to use SSH
  • Create a non-root user
  • Install/configure NGINX
  • Create two new A records for my domain. One for @ and one for staging.
  • Setup a virtual host for handling the staging sub-domain
  • Install NodeJS.
  • Install and configure PM2 to manage a super, simple web server instance.

Repos

I set up two repos for this project as I want to keep the server/api and frontend separate.

Server/API: https://github.com/efuller/learningtracks-server

FrontEnd: https://github.com/efuller/learningtracks-client

Deployments

These are something I still need to get setup. I will probably just use a Rsync to push my files to the server. Eventually, I’d like to get something a bit more elaborate setup.

 

[000] – Introducing the LearningTracks.io Web Application Journal

As I stated in my recap post, I have a passion for building web applications. It’s part of what has been driving me to learn as much as I can about the full stack over the last few years.

Well, I think the time has come for me to put what I’ve been learning into practice and attempt to build out an actual web application.

Say hello to learningtracks.io! You will learn more about what this site will be all about as we move forward.

Disclaimer

Before we start this journey, let me first start by listing out a few disclaimers:

  1. I don’t know everything!
  2. This project is a learning exercise.
  3. Some of the time I’ll have no clue what I’m doing and will rely on doing what Google search tells me to do.
  4. Do I really think I’m ready to take on this kind of project? Hell no!

Journaling the Process

Initially, I intended on making this project a huge series of tutorials.

After some thought, I’ve decided that would be way too time-consuming and a huge mental blocker that would continually cause me to freeze and do nothing!

Instead, I am going to take the approach of journaling the process. I’ll include my thought process behind decisions I’ve made, resources I’ve used, and any other tips and tricks I’ve learned along the way. Basically, these journal entries will be filled with lots of golden nuggets!

The main reason I am choosing a journaling approach is that it’s a huge time saver. I can sit down and write out a journal entry in an hour. Whereas a tutorial can take days to write.

These journal entries will be a quicker read as well. No BS, just the good stuff!

Finally, I am still going to write detailed tutorials about different concepts along the way!

In the End

This experiment could end up being a complete failure and I’m OK with that. It’s all about learning.

If by sharing this experience I help even just one person along the way, then it will have been worth it!

 

A Recap, What I’ve Been Learning, and the Future

Over the past two years, I’ve been working tirelessly doing everything I can to figure out my way as a developer all while trying learning what seems to be a never-ending mountain of different technologies.

Although I have not yet achieved all of my goals I feel like I’ve grown and learned enough as a developer that I need to start focusing on building and sharing.

This post will serve a couple of different purposes.

First, just hitting publish will be a huge accomplishment! I’ve been ‘talking’ about starting to write for a very long time.

Second, it will give a recap of the journey I’ve been on for the last 2 – 3 years. I’ll list out the technologies I’ve spent time learning as well as list out things I’ve learned about myself.

Third, I will layout plans I have for the future. I really want to start building things and writing about it. I’ve wanted to write long-form tutorials for a long while and I think it’s time I start.

The Recap

In December of 2014, I took a long shot and applied to WebDevStudios for the position of a Front-End Developer. Crazy enough, I got a callback (see what I did there:) and started in January 2015!

This marked a huge change in my life as it completed a career transition from the IT Industry to becoming a Front-End Developer.

Up to the point of getting hired, I had been learning HTML, Sass/CSS and a bit of JavaScript. I can distinctly remember that during my interview it was mentioned that my learning curve would skyrocket during that first year, and that was completely accurate.

It took all of that first year at WebDevStudios to realize what my true passion was, and that was JavaScript. It was around this time that I made a commitment to myself that I was going to learn everything I could about JavaScript language. This meant more than writing a bit of jQuery to manipulate the DOM. I wanted to learn the how and why behind JavaScript.

Over the next few months, I began to dive in. That’s when I came across JavaScriptIsSexy.com, the website from the great JavaScript’er/Writer Richard Bovell.

JSIS is where I learned about Bov Academy, the online platform Richard was launching to help people learn JavaScript. I took the dive and made the investment to become a member of the first cohort in the full-stack path.

Overall, Bov has been great and very demanding at times. I’ve been taking the approach of working through it at my own pace while balancing it with life and (a lot of) other supplemental learning.

For more perspective, below is a list of other technologies I’ve dedicated time to learn:

  • HTML
  • Sass/CSS
  • JavaScript/jQuery/ES6
  • WordPress
  • PHP
  • Backbone
  • JS Templating
  • Webpack
  • Express
  • React
  • Redux
  • React Router
  • Axios
  • MongoDB
  • PassportJS

I’ve also learned a thing or two about myself over this time as well:

  • I learn slower than others. I’m not someone who can study something like React for a week and proclaim to have ‘learned React’!
  • I do not fall into the WordPress (although it is great!) is the be all, end all. I keep a very open mind because there is a great big world of awesome things out there. I like to take the approach of using new technologies with WordPress. The addition of the API has certainly helped in this regard.
  • I don’t love PHP. It’s not my passion. But it can be enjoyable to work with.
  • At times, I feel like I focus too much on learning and not doing.
  • I have a real passion for building web apps from the ground up, preferably with JavaScript.
  • Two years into learning JS and my passion seems to be even stronger. There is still so much to learn.
  • I’m not a designer.
  • I consider myself a Front-End developer, but I like Back-End things too. I think a 70/30 split is probably the sweet spot for me.

Here are a few projects I’ve built that I’m pretty proud of:

The Future

One of my goals for 2017 was to be able to call myself a Full-Stack JavaScript developer by the end of the year. Have I met my goal? The short answer is no, but I’m close!

I’m in a place where I know enough in terms of being Full-Stack, I just need to put it all together and build something to showcase my skills, so that’s the plan!

The theme for 2018 is going to be all about taking action in all facets of being a developer.

Learning

The learning never ends. Just because 2018 is going to be all about taking action, I will still need to set time aside to learn.

I plan to finish out my studies at Bov Academy and continue to deeply learn all things JavaScript. As of right now, I’m really going to dive deep into the React/Redux/ES6 stack. I want to achieve expert level knowledge.

Portfolio

I’ve never really taken the time to create any type of portfolio so I’m planning to build out a few projects that I can officially add to my portfolio.

Write

As I stated earlier, I’ve been thinking about starting to write for a very long time so this is something I plan to do going forward.

I plan to write long-form, technical tutorials as well as really dig in and dive deep into different JavaScript topics.

On a side note, I’m over giving a care what others will think of the articles or code that I write. This has been a huge blocker for me and it’s time to break that blocker into smithereens.

Projects

I have quite a list of projects I’d like to work on over the next year. The main thing I’d like to focus on is writing about these projects as I build them.

One of the first things I’d like to build a new WordPress theme for this site that is built with React! Things have changed quite a bit since I built out api.ericfuller.net.

I have a couple of WordPress plugin ideas that I’d like to build out. Of course, they will be focused on JavaScript and using modern technologies.

As I stated earlier, I have a huge passion for creating/developing web applications. I have a few ideas that I hope to build out to an MVP level. I recently reserved learningtracks.io and plan to build out an idea I have for it so stay tuned.

I plan to treat this project as if it were a startup and document the process of taking it from idea to a useable MVP.

This project will be built on all things JavaScript.

Conclusion

I hope that this first post is the beginning of an amazing year ahead.

Writing about complex topics and presenting them in a simple way will not only help me solidify my knowledge but will hopefully help others along the way.