Project 4 (times 4)

What is project 4 you ask?   I've been working on my Full Stack Developer Nanodegree from Udacity.  To pass the class there are a series of projects that you have to work on independently and submit for code review.  If you your application meets the specifications, is written well, etc.  You pass that project.  I'm starting Project 4, and "Item Catalog".  

The item catalog has a few reqs.  

  • Has to CRUD (Create, Read, Update, Delete).  Which means persistence must be maintained in a database.
  • Users need to be authenticated via OAuth2.
  • Authorized users should be able to create, update, or delete items.  
  • It doesn't require the ability for users to create categories, but I'm adding that (seems silly to be locked into a set of categories).
  • Must have RESTFull endpoint delivering JSON output for the items and categories.
  •  Styled with CSS/Javascript.  
  • I *may* add comments as well (not a requirement)
  • Delivered as a Flask app in Python with CSS and JavaScript

An "Item Catalog" sounds super boring.   They gave a sporting goods catalog as an example.  So, instead, I'm going to write a Pintrest type clone.   My items will be images and I'll categorize accordingly and I'm going to attempt to style similarly to Pintrest.  I figure that will add to the challenge.  I'm ahead of schedule at this point, so I have some extra time.  

To add even more of a challenge and give some good real world experience, I'm going to develop the application in four frameworks in parallel.  

  • Flask  This will satisfy the class requirement.  It's Python based and is more of a bare bones framework with very little "magic".  I will have to pretty much code everything.  
  • Django.  This is the most popular Python based web framework.  Pretty feature rich with quite a bit of automation, but not really "magic".  While flask is awesome, I'll probably encounter Django much more in the real world.  
  • Ruby on Rails.  Probably one of the most popular and successful web frameworks out there.   I've not written a stitch of Ruby (other than the DSL from Puppet).  So this should give me some exposure.  Lots of Magic.  Convention over Configuration.   Kind of opposite of the Python idiom.
  • Express or some similar NodeJS based framework. My boss is big on NodeJS.  After playing with it a little and reading the docs, I can see why.  Certainly seems like a very fast platform.  Also makes for great RESTful services.   First goal of this project is to pick a framework.   I'll post what I chose later.

So... I'll maintain the code on my github profile if you'd like to follow along.  I may spin up some AWS instances to demonstrate each later.   Wish me luck!

2016 New Year Goals

I don't like to use the term "New Year Resolution" because when you resolve to do something you are pretty much saying you have to do something.  This puts you in a success or fail scenario.   No one wants to fail, so that means you typically create resolutions that you can achieve.   We don't always achieve them, but we can.   

I prefer to set goals.   Goals are a bit more fluid.   You can set goals for things you are confident that you can achieve as well as goals that will stretch you.  The good thing about goals is that even if you don't achieve them, they may still move your forward.   That's at least how I see things.

So...  here are my goals for 2016.

  1. Get in the best shape of my life.   I started this goal a year and a half ago when I was diagnosed with Type II Diabetes.   It was a shocker and an eye opener and I started my journey to getting healthy again.  I started hitting the gym and eating better and now my blood sugar is under control.  It's time to take it to the next level.   So.. what will I do differently?
    • Eat better.   I started eating better after my diagnosis, but not as good as a could.  My goal is to eat less bread, less simple carbs, and more whole fruits and veggies.   This will not only help control my blood sugar, but will also allow me to burn fat easier.  Your body won't burn fat with exist insulin in your system.  So, the diabetes is fighting against my efforts to lose weight.   It's time to fight back harder!
    • Better endurance.   For the least year and a half I've been hitting the gym 4 days a week and lifting heavy.  This has done wonders for my metabolism and how I look and feel.  However... I still have about 30 lbs to lose and I don't feel overly athletic.  I can squat 315, but I can't run a mile without stopping.  Time to change that.   This means more athletic type exercise like Tennis, running, swimming, and maybe even martial arts.  I'd also like to incorporate some yoga as my flexibility sucks!
  2. I want to become a software developer.  This again is an extension to another goal.  (It's good to have longer term goals!)   About two years ago I decided I was going to teach myself how to program.  Now, I've been in Info Tech as a UNIX Systems Admin for about 18 years.   So, I've done my share of scripting (shell, perl, etc).  However...  I wanted to learn how to properly write programs.  Plus, I needed to do more advanced things as part of my job so it just made sense.  So, I chose a language to start with (Python) and started learning.   I quickly fell in love with programing and I'm still learning as much as I can on a daily basis.  This year, I want to move to more development heavy tasks at work.  What will it take to reach this goal?
    • Learn, learn, learn.   I've been taking courses online and I typically spend about two hours every afternoon taking the class, studying, and programming projects for the courses.  I have committed to the most aggressive part of my training yet for 2016.  I'm aiming for becoming a full stack developer, although it's the middle & backend work that interests me the most (writing API's, automation, application logic, etc).  
    • Convince my boss to let me do more development work.   We have a broad range of skills in my team.  We have system admins, architects (me), and developers.  As an architect, there are a lot of development to be done.  I need to either convince my boss to give me more of those development type tasks OR convince him to move me to the development side of our house.  
  3. Kick butt at work.  2014 was a pretty good year for me at work.  2015 was weird.  We went through a lot of transitions at work and I don't feel like I did my best work.  I don't do well when I'm not doing my best.  It's kind of a downward spiral for me.  I tend to feed off my own successes or failures.   In the case of 2015, I just felt a bit stagnant.  So, regardless of goal #2, I need to do great at whatever tasks I'm given.  This will also pave the way for the direction I want to go with my career.