Wednesday, April 24, 2019

Day 017: Still in Basic Javascript

I am still having trouble getting the basics to stick. It's mostly the "grammatical" parts of the syntax where I have some difficulty remembering when and where to pull/place parameters, functions, or whatever into where ever to make a line of code work. It gets even more confusing when things start to nest, like functions in objects or what the cool kids call methods. I think I need to make some obnoxiously long names just to help myself remember where things belong.

I know that I need to get used to what they are and recognizing the pattern of where to put things. Or remembering what the definitions of certain things are when an instructor says, "now we call this parameter from the xyz" that I often have to look up what xyz is (again). Ugh. Just all part of the learning process. My coding cheerleaders (the husband and some programmer friends) tell me that I will get used to it eventually and that it will become second nature then.

So I need to just keep at it to familiarize myself with js. With that, I've taken even more detours from FCC and am working through the following:
  • WatchandCode Practical Javascript with Gordon Zhu - who is my freaking hero right now because his teaching style is effective and not like anything I've encountered so far; I will likely work through the same course with him a few more times to hammer the concepts in; I am also heavily considering subbing to his premium course once I am comfortable enough with the the basics. He is just that good and highly recommended for anyone trying to learn js basics from a free resource. 
  • Lynda.com JavaScript Essential Training 
  • W3Schools Javascript Tutorials 
  • Codecademy Intro to Javascript
I am in various stages of completion with each of them but should be done with most, if not all by this weekend. I'm at the point where I don't think repetition is doing enough, so I might as well try to apply what I've learned so far on my own and stumble and self correct as needed.

So far I have the following on the to-do list for this weekend. 
  • Madlibs game
  • Tip calculator 
  • Pomodoro timer
It feels like I've been struggling with this for a long, long time now, but it's actually been less than a week in starting the js basics. I need to be patient and get through the weeds first.

P.S. I guess I need to create some kind of js cheat sheet. MDN on js grammar and types for anyone interested. Also a handy video from DashingD3js on functions and callbacks that I will need to watch a few times. Lastly, read Javascript for Cats to keep absorbing the basics. It's super cute!

Sunday, April 21, 2019

Day 014: Order & Syntax

I started on the Javascript part of the FCC exercises and was going through them pretty quickly due to a tiny bit of experience in js years ago and going over the Programming Foundations: Fundamentals with Simon Allardice.

That is, until I got to the Stand in Line exercise.

I am probably going to get some terminology wrong but I am explaining it in newbie/layman terms as I understand it.

So for this exercise, I knew I needed to push() and shift() - easy enough concepts. But I just could not get it right. It could have been the confusing-to-me instructions or the existence of the testArr. But after about 30 mins of banging my head over it, I am ashamed to admit that I looked at the hint which gave the solution. /bleh

Even so, I was still not understanding why the solution was why it was even after another 30 minutes of trying to dig up the reasoning. That feeling of maybe I'm not smart enough started to creep in so I decided to take a break. After lunch and a quick gaming session, I still wasn't feeling confident enough to go back to figuring it out. So I hopped on the indoor cycle for an hour and watched the first half of the JavaScript Essential Training with Morten Rand-Hendriksen (who is also great as well!). I realized I might be missing something and just needed to keep familiarizing myself with the rules.

I got to this part and just had to take a screenshot. Cue the eureka! light bulb.

Morten is my best friend now.
One of the things that tripped me up was that I was trying to fit the testArr variable into the standInLine function even though they didn't have much to do with each other at that point. I was even including numbers in my push() and shift() even though the code had not even assigned numbers yet!

The initial task was to create the instructions inside the functions first. I should have looked closer on the arr and item parameters from the function. Which is what should be used in the statements inside the function body. /doh!

function nextInLine(arr, item) 

The testArr was defined after the function and then later called upon in the display code that made use of the standInLine function. Remember, the function are instructions that can be used again and again by other variables. Even if you create a new variable of testArr2 and assign 11, 12, 13 to it, you can later use the same standInLine function to remove the first value and add in a new value.

After you get the solution, give the below a whirl after to see what I mean:

var testArr2 = [11,12,13]; 

console.log("Before: " + JSON.stringify(testArr2)); 
console.log(nextInLine(testArr2, 14)); // Modify this line to test 
console.log("After: " + JSON.stringify(testArr2));

I forgot that and tried to cram everything together. Judging from the forum, a whole lot more people than just me made the same mistake. The Python tutor tool for Javascript also really helped visualize the computing.

I do have a tendency to put the cart before the horse (like, I'm one of those people who does not mind spoilers and may even look them up myself), so I just have to remember that the order is really, really important in Javascript and every other language out there and I really need to stop trying to get ahead of myself.

Lastly, I included Syntax in the blog title because I am finding that most of my other mistakes are syntax related as opposed to logic mistakes. I am the queen of typos. I also often find myself missing a bracket or quotation here and there that breaks the code. I am not sure if there are ways to improve on this other than relying on the text editors or ide's to help me on preventing name typos and getting into the habit of opening and closing things before adding in the body... I am all ears if you have suggestions!

Friday, April 19, 2019

Day 012: FCC Responsive Web Development Certificate

Hey I got the thing!


Super pumped!

The portfolio project is nothing to write home about. I mostly focused on the overall layout and making it responsive. https://codepen.io/4nn/full/NmMxPQ

I could have put in more little effects here and there with the link hovers, but that's the stuff I already know how to do (for the most part) and didn't really want to spend too much time on that. I do like the look of the minimalism and may even use it as an actual portfolio while I am learning.

So now I finally get to jump into JavaScript! So excited!

I'm still going through Programming Foundations: Fundamentals with Simon Allardice on Lynda.com which I think is an excellent primer. I will probably check out a few more js courses on Lynda as I am working through it in FCC as well. The point is to figure out what works best for me. So far, I am liking the working and reading through a topic on FCC and watching videos in tandem process for learning.

I'm not sure how long the JavaScript Algo and Data Structures section would take, but my goal is to get through it in a month with all the additional materials included. I imagine the bulk of the time will be spent working through the projects. I do have some low level algorithm and data structure understanding from work (lots of spreadsheets, reporting, running simple algos for random selection), so hopefully that will help a bit in those parts.

Onwards and upwards!


Thursday, April 18, 2019

Day 011: I'm not being lazy

The Technical Documentation is done: https://codepen.io/4nn/full/OGvLjj


It's pretty bare bones but it does what it needs to do. I did want to make it more responsive and switch the nav and content to flex or grid boxes, but I knew that would eat up more time.

I'm not being lazy, I promise! I only have a limited amount of time each weekday due to having to work a full time job and all (and it's getting busier at work) so I would much rather not spend too much time on stuff I am already comfortable with. Not to mention, I am dying to get to the JS but I have to be a good doobie/completionist and finish all the projects. I also think I might be more interested in the back-end and really want to get to that point sooner rather than later.

One more project to go and I get my first certification!


Wednesday, April 17, 2019

Day 010: Fear

So I'm done with the product landing page: https://codepen.io/4nn/full/zXpaoY

I probably spent too much time on prettifying it, but I wanted to try out some of the new bits of CSS that came into prominence after I last web designed. It felt kind of like discovering one of those animated logo makers and slapping them all my Geocities page like I did when I was a teen. It's tacky as hell, but I had some fun playing around with stuff.


There was lots of referring to the w3schools site as I had in the past. (And dang, it changed a whole lot!)

Now to move to the Technical Documentation. https://codepen.io/4nn/pen/OGvLjj

Maybe I can bare-bones it and move on to finish up the RWD certification already! Right now, I've got 12/16 of the tests passed and may give it a rest tonight since I am getting sleepy.

Update: Fell asleep to watching/listening to Lynda.com Programming Foundations: Fundamentals with Simon Allardice (who is fantastic, btw!). I am only about 1/3rd through and feel like I am getting a lot out of it (like the difference between a compiler and interpreter language... who knew?) I also think this is a great primer before I start JavaScript on FCC.

Own Worst Enemy

As for the blog title -- I've been getting hit with bouts of fear and self doubt throughout the day, wondering if I can make it through all the FCC certs or if this is just a pipe dream? or if I do make it through but then won't be able to transition? I mean, I would probably have to take a pay cut for the first few years, but what if I won't be able to make up the difference even after getting enough experience? Or maybe I just won't be able to find a job at all?

While my husband knows I am working towards this goal and he started offering some advice, I kind of told him to back off. It's partially because I don't need his help in the RWD section, but mostly because I am feeling embarrassed? Should I be farther along than I am now? And if he doesn't know what I am working on, he wouldn't be so clued in when I get to the frustrating parts and fail, right?

Yes, it appears I am putting the cart before the horse here and these hypotheticals do not help. I am trying to avoid these thoughts by occupying my headspace with coding related stuff, trying to absorb information, and listening/reading the more motivational content from other folks who have been here before. The self-fear is real, since you can be your own worst enemy and all.

Update: Reading this post from Quincy Larson at FCC really helps fight the demons: One does not simply learn to code


Tuesday, April 16, 2019

Day 009: FCC RWD Landing Page & Background Info

It's late right now, I kind of have a headache, and I am punching out some bits of code before bed.

I am using my 2012 Macbook again. It can be my dedicated development computer even though the lack of screen real estate takes some getting used to. At least I can write some lines in bed before dozing off.

Here's the latest in all its glory. The 3rd Responsive Web Design project - creating a landing page: https://codepen.io/4nn/full/zXpaoY


I focused mostly on passing the tests first before actually putting some time in to pretty it up tomorrow when I can think straight. I probably won't spend much time on that particular task because I am really itching to get started on the JavaScript. The process I went through was creating what I needed to as I went down the user story list. I think the prettifying part of it would be better/more enjoyable if I wireframed it to at least figure out where to place the tags as opposed to cramming in a design after the fact. I'll do that for the next project, I promise. Either way, I do want to present a somewhat nicer looking page when it's done, so stay tuned.

The first two projects can be found here:
  • Tribute Page - https://codepen.io/4nn/full/WWZOxG - It's a basic project and I did some simple CSS to make it look somewhat presentable. 
  • Survey Form - https://codepen.io/4nn/full/MROQZK - I did the bare minimum in design here; it was an annoying project because I didn't realize you can hit the test button to see where your errors are. I was fumbling through the whole thing just figuring out which user story it was that I screwed up on (most of them were due typos); I spent way too much time on that so I was ready to move on once the test was green-lit. 
Click the goddamn "Tests" button to get the errors!

Background & History

I actually started this coding journey on April 8th, 2019 so it's day 9 right now. I have been putting in at least 1 hour each day (avg of 2-3 hrs on weekdays so far) and I intend to keep coding everyday until I get a job as an honest to goodness developer.

I'm in my mid-30s now, so you can do the math. I got my feet wet with Angelfire/Geocities and created things on the internet there. Making shit on the web sparks joy. I've always loved and still love video games and technology and this is just an extension of that.

Sometime in the early 90s, my family visited my cousin's house. He showed us this computer thing his dad just got him. He showed us a chatroom and how he was chatting with people from across the world (what's your ASL?). You mean to tell me you can instantly talk to all these people at the same time from around the world? He showed us an ASCII game. I was mesmerized. Since then, I always felt my calling was to be a programmer; someone who can create something out of nothing with these machines. I was probably 9 or 10 years old then.

I started as a CS major in college but switched to Econ and Psychology after a semester (double major to make up for my inadequacies, keep reading). I didn't know WTF was going on in these CS classes and withdrew from them. I was a shy kid and was a very good and self-sufficient student in high school, so it never occurred to me to get some help/tutoring in the subject matter and keep at it. These classes made me feel so stupid. CS was for smart people and I was not as smart as I thought I was. I remember how utterly crushed I was when I changed majors. It was like a punch in the gut and I fretted about for a long while. I was so sure about CS and thought it was what I was meant to do, but I couldn't grasp it. That insecurity carried on with me for a long time.

After college, I worked in higher ed admin, had a brief stint in online marketing when that was a new up-and-coming field and hated it (my marketing budget was $10 million per year, so that was a lot of pressure for a 25 y/o). I went back to non-profits and education admin again and here I am. All the while, I've dabbled in freelance web design and have some weekend-warrior experience in HTML, CSS, and a teeny bit of PHP then (all the sites I set up were with Wordpress so I had to know enough to customize things). I occasionally thought about delving deeper in coding, but the insecurity always won out. Why bother wasting your time? You're not going to get it!

About 6 years ago, I started to focus more on my career. I went back to school and got my masters in management, a job change, a promotion, some "prestige" and left the web design to the professionals.

Fast forward to now. For the past 9 months or so, I was at a crossroads. I was agonizing over deciding on whether or not I should go back to school again, but for an EdD this time. I became increasingly aware of the fact that I needed another degree to move up in my career trajectory. People like me were not lucky or well connected. I had to make my own luck and another few letters after my name seemed like the next step. But I already endured grad school while working full time and the thought of having to do it again (but for longer!) made my stomach turn. It meant suffering through a subject I didn't give a shit about to advance in a career that I cared less and less for.

I actually have a cushy job that pays well for what I do and I work in Prestigious Well Known Place. But it feels so soulless. I'm not miserable at work, but I can't say I am happy, fulfilled, or satisfied in any way here.

Then a few things happened 2 weeks ago that served as a catalyst for change.

At work, I attended a workshop on networking that turned out to be a thinly veiled self-promotional presentation from this local business owner about marketing. While my colleagues seemed annoyed at the presenter, I actually found myself enjoying it because his enthusiasm for his business reminded me about my freelancing days. I remember how much I relished having my own thing and making money from some code and my skills. Gosh, I miss that.

A few days later while at work, I was complaining to my husband on gchat about work per usual. He made a facetious comment about how hard his day was going as a dig at me. It was a dig because he is an actual programmer who works from home, he sets his own schedule, and earns a huge salary for his trouble. I mean, are you shocked I married one? Trying to live vicariously through him or something...

"I wish I knew how to program," I told him. His response was simply, "You can still learn!" We've had this same interaction many times before. But I mulled over that last exchange for several days after. Can I still learn? Don't you have to have a natural aptitude for this kind of thing? 

So I  researched on the internets. I forgot what the exact search phrase was, but I stumbled on a Reddit comment (because of course I did). The commenter was in their 30s, was working some menial job 2 years ago, learned to code from free resources in their spare time and is now a developer making six figures.

I started getting into the black hole of searching "is it possible to learn to code and change careers after the age of 30?" That led me to all sorts of inspiring stories of people from non-traditional careers, of all ages who learned to code and are now working as programmers. The most impactful stories were from those who made the same assumption I did about needing a natural talent for coding, but after time and persistence in learning, they made it where they were today. These posts always seem to end with "If I can do it, so can you!"

Fuck it. I am going to do this. 

After some research, I settled on FreeCodeCamp and got started right away refreshing myself on HTML, CSS, and learning all the new stuff that developed since I turned away from it years ago.

So I am now doing sort of a 100 day of code where I must code for at least 1 hour per day, by going through a self imposed coding bootcamp. Eventually, I will move into multiple cycles of 100 day of code and into non zero day, meaning, there will be no 1 day where I will not be coding for the foreseeable future.

The goal is to complete the FCC full stack certification in 6 months. While I am going through FCC, I will be checking out videos on Lynda.com (I get free access from work!) and going through the 101 and JavaScript parts of the Odin Project (not sure if I want to dedicate time to learning Ruby on Rails yet). I want to explore different materials to see how I learn best. When I am done with the FCC full stack certification at or earlier than the 6 month mark, I may consider enrolling into an actual coding bootcamp. Thereafter, I want to volunteer as a coder through FCC and/or the TapRoot Foundation to get some experience working in a dev environment. I want to be transitioning to a coding career by April of next year.

I don't remember the last time I was ever this excited. I am not trapped in my job after all. I have a spring in my step. I feel so optimistic. I feel so free. The internets inspired me. It is possible to learn. It is possible to transition. It takes time, consistency, and persistence. I am so ready for this.