Spinning My Wheels

For as much time as I spent working on my Python chops, I didn’t feel like I was getting a deeper understanding of OOP and its principles. I’ve since switched to Ruby, and it’s much better–I think? We’ll see. When I did preliminary research prior to the language change, the creator of Ruby indicated that he wanted OOP to be built-in, unlike Python, where it feels like an afterthought. I’m not going to pretend like I know what I’m talking about, but I do see more emphasis on objects and how they can be used all day, e’eryday.

I’m still working on various things related to JavaScript. JavaScript and I still aren’t friends, because it feels like it’s the “Beyond” section of Bed, Bath, and Beyond–it’s not strictly typed, but there are types, and things change from out beneath me, and you can do everything, but you can’t really outside these given rules, and goodness, it’s still taking me a lot of time to understand things that I’ve been working on for what feels like a long time. In addition to basic JavaScript, I’ve been working a bunch on Angular.js and jQuery. Free Code Camp is also going to cover Node.js and Express.js, so those are on the horizon.

Am I getting better at anything at all? It honestly doesn’t feel like it, and I’m glad that FCC makes you do projects, otherwise I would really have nothing at all to show for the work I’ve put in over the past year and a half or so. I began this development journey back in spring 2014, and wow, it’s been a lot longer than I thought and I’m still not where I want to be. Will I ever get there? I don’t know. I got a Skillcrush handout, and the advice was to start before you’re ready.

So I will. I hope to land two jobs, however small, by the end of the year. More would be better, but I just need to begin somewhere, and like the Irish say, well-begun is half done.

What am I doing?

I’m doing a lot of stuff, and I’m feeling overwhelmed with the sheer amount of stuff that I have to learn. Here’s what is currently on my plate:

Coursera’s program is new, and I’m excited to have found an intermediate-level program. It seems that most of what I’ve found thus far is aimed at either complete rookies or experience programmers. I am neither. I might rip out all of my hair if I have to write any more GCD algorithms in any language, but I’m definitely not at the level where I can talk about lambda functions in my sleep, either.

Free Code Camp continues to go well. I’m at to-do item #243. Essentially, all I have left before starting the 800 hours of practical experience building an app for a non-profit is some stuff on AngularJS, Node.js/Express.js, MongoDB, and ten (smaller) projects that put together everything I’ve been working on. This program and its road map was a lifesaver when I got to the point where I felt like I was spinning my wheels, and it continues to point me in the right direction.

John Duckett’s books flesh out the material that I’ve covered in Free Code Camp. Most of the time, what I’m reading is review, but there are definitely things I did not know about (such as which tags are considered syntax markup and which ones were considered semantic markup, despite appearances indicating that the two were, functionally, identical). I’m sure the same material is available for free on the Internet somewhere, but a)I like having physical books as reference (yes, I am ancient), and b)the fact I haven’t come across this information despite several months of working on HTML tells me I might never have learned these things.

Python is my main squeeze (“I see what you did there,” sez my coworker), and I just completed Downey’s Think Python book this weekend. Think Complexity is a continuation of Think Python, so I’m eager to work on my intermediate-level scripting chops while learning a bit about complexity science and basic algorithms.

All in all, I am pleased with my progress, especially after feeling like I was doing the same thing over and over again and not getting anywhere (we all know the key to excellence is deliberate practice, and while I was practicing, it was neither deliberate, nor was it challenging enough for me to make any type of progress). It did seem like everything on the Internet was geared toward front-end developers, so with the discovery of the Coursera program, I’m looking forward to doing even more back-end-related things.

A Quick Update

I’m enjoying Free Code Camp. Due to my prior work in (attempting) to learn web dev, I completed 111 Waypoints (in keeping with the camp theme, exercises are called Waypoints) before slowing down. The Waypoints are now challenging me, and though I think my code could use some work, I am being challenged and am learning many new things. Yesterday, I completed five Waypoints, which covered objects and their properties and arrays.

I have yet to touch The Odin Project, and it remains to be seen if I ever will. I might extract the Ruby portions and complete those, but I’d really rather spend my time on Python.


I was getting to the point where I wasn’t sure where to go next. I surveyed the vast landscape called “learning to program,” and the amount of knowledge that I didn’t have was absolutely daunting.

Enter Free Code Camp and The Odin Project. These are full FREE programs for learning.

Free Code Camp is modeled after the various dev bootcamps that are springing up everywhere. You spend about 800 hours learning and 800 hours working on projects that benefit nonprofit organizations. At the end, you’ll have learned, created a portfolio to show future employers, and done good in the world.

That is pretty nifty.

The Odin Project is an open-source curriculum that claims to be a “proven path to successfully learn web development so you don’t have to wonder if you’re doing the right stuff or wasting your time” [emphasis mine].

The fact that I haven’t found either until now makes me question my ability to use Google.

BUT! It doesn’t matter now, because I have found them, and that is exciting to me, especially given how I was feeling as I wrote my last blog post.

Yes, I realize I wrote about a specific incident, but I would be lying if I said a good part of that uncertainty was because I put my own curriculum together (the blind leading the blind, anyone?). I wasn’t sure if I was learning the right thing at the right time.

I’ve been working through Free Code Camp for the past two days due to its emphasis on JavaScript. I’ve heard good things about The Odin Project, and the emphasis of that program is on Ruby. I don’t know if I should even start it, since I think it’s better to do one thing well, rather than doing two things haphazardly. I may give it a shot in the next couple of days.

I’m really excited.

When you have no idea where to start

I just completed the Object-Oriented JavaScript course at Udacity, and I decided to start the final project this afternoon. At first, I had no idea how to start, so I just dove in, because that usually works. I write a few lines, Google my questions, write some more, lather, rinse, and repeat, and after some time, I have something that works.

This time around, I just had no clue and no amount of Googling was helping me. It turns out I need to take the HTML5 Canvas course to be able to complete the project.

Oh. That explains why I can’t even ask the questions I need to do what I need to do.


I’m so, so, so tired, and yet, I’m trying to show up every day.

To make a long story short, I’m deepening my skills in JavaScript using How to Learn JavaScript Properly, I’m working through the final few sections of Think Python, and I do projects in Codecademy to keep my syntax knowledge fresh. I’ve written one correct program for Project Euler, and I wrote another one that brought my computer to its knees, memory-wise. Udacity has taken a backseat, but I need to keep plugging along. Though the classes aren’t the best, I find that the exposure I get to various topics is invaluable.

Things got a bit hard; the time I have to study is short, the urgent-but-not-import distractions pop up ever more frequently, the things I’m learning are stretching my mind to the point where it is painful, and I just want to quit and be content with where I am now, but I’m still going to show up every day anyway.

I hope this works out.

git push origin master git push origin master

git push origin master…it’s kinda catchy, don’t you think?

As you may have noticed, I’ve been neglecting this space. I’m going to get back on to the blogging train, because it’s good for me. Ideally, there would be people reading this, and they would write back to me and stuff, but that’s kind of not the case and I’m kind of okay with that right now. I just want a place to share my accomplishments and to document the things that I’ve done.

So, what have I done? A lot of stuff. I guess this counts as a What I Did post, but it’s more than that. It’s a What I Did post + update on my [software development-related] life + musings on my progress so far + thoughts on some of the stuff that I’ve used in the past couple of weeks.

First off, I’d like to tell the world that I put up my own website. You can find it here. Yes, I realize that it’s not fancy at all, but I would like you to keep sight of the forest: I have a website on the Internets, and I built it from scratch. Okay? I have some friends that have graphic design skills, and I will be pleading asking for help soon. Anyway. I created the files locally, pushed them to gitHub, where they are hosted, and set them to show whenever someone navigates to my custom subdomain. I’m quite pleased that I made it this far. I still understand almost nothing about DNS and hosting and stuff, but it’s a start.

Speaking of which, I have a new-to-me computer! I’m the now-happy owner of a refurbished 2014 rMBP (with 16 gigs of RAM! I splurged, after someone on Reddit convinced me that “ah, s**t, I bought too much memory,” said no software developer ever), and after the first couple of weeks, where I grumped and grumped about how it isn’t a Windows PC, I think I’ve gotten things (mostly) figured out, so I can focus on development and learning and not How the Hell Do I Use My Computer OMG What Have I Done?

Someday, I would like to work as a Code Wrangler for Automattic, the fine folks behind this blog and its existence on the Internet (’cause come on…have you seen my website? Without them, this wouldn’t exist). I’m trying to learn more about WordPress in general. Step 1: write blog. Step 2: sign up for forums.

Oh, and maybe I should finish learning to code?

I’m making slow and steady progress through Udacity’s Front-End Web Developer nanodegree program. I’m glad I’m not paying for it, since some of the courses present topics in an…interesting manner. I’ll probably write a detailed review about the courses I’ve taken sometime in the future, but for now, let’s just say that, while I find the courses helpful, they aren’t to the standard where I feel comfortable paying as much as they’re asking. Yes, I realize the money really buys staff assistance and blah blah blah, but hello, isn’t that what the Internet is for?

I’m still writing Python, because I love it.

The bigwig at work has suggested that I take edX’s course on C#, which is as good as “take the damn course.”

So that’s where we are. C#. CSS. HTML. JavaScript. PHP. Python. T-SQL. VB.NET. It’s all kind of mixing together into one big mishmash of error messages, but I’m starting to be able to keep things separate.

Slow and steady wins the race, right?

My Computer Issues

Right now, I do all of my work (both personal and professional) on a Lenovo ThinkPad T440 that’s hooked up to all sorts of external peripherals. On it, I dual boot Windows 7 (I’m eager to see Windows 10) and Fedora 22.

You know what annoys me? Some of my stuff only works in Fedora (coughTrimagecough) and some of my stuff only works in Windows (coughDisplayLinkcough).

The one place where all of my stuff (or close alternatives) work? OS X.

In Lean In, Sheryl Sandberg writes that her grandmother’s business acumen resulted in a “profit margin that Apple would envy.” It is comical, and the story of Ms. Sandberg’s grandmother is one of the anecdotes I liked best from Lean In, but it is less comical when you’re considering a Mac to keep you keeping on.

And so, after much spelunking on the Interwebs and a weekend spent futzing with compatibility issues and the like, we are now saving our pennies for a mid-range MacBook Pro. There is something to be said about using what everyone else is using, and by not doing so, I more time that I would’ve liked trying to figure things out on my own.

What I Did, Volume 5

What I Did is a series that documents software development-related work I’ve done the previous week. As the old adage goes, that which is measured gets done, and there’s nothing like broadcasting to the world that you’ve done nothing to motivate the self, right?

This week:

  • My SQL-to-RTF project passed QA. Praise the Lord.
  • I finished Udacity’s Programming Foundations with Python. I’m new to neither Python nor OOP, but because I felt that my grasp of the latter was severely lacking, I enrolled and completed this course. This course was great, because it wasn’t for complete beginners (and thus, no lessons on what a string is or how to print integers), but it was simple enough that, at the end, I think I *finally* grasp the basics of OOP, how it is useful, and how to implement in Python.
  • I began the next course that’s part of Udacity’s Front-End Web Developer Nanodegree, which is Responsive Web Design Fundamentals.
  • I began looking up blog/website themes to see what I’d like to do. It’s kind of overwhelming, so I’ve started to skim the samples and clicking only on those that appeal to me immediately. It’s not the best system, but if I succumb to Decision Paralysis, this might never get done.

Areas of Improvement as of May 2015

This morning, I put the finishing touches on a script I’ve been working on for the past couple of weeks. This was the second large project I’ve worked on this year, and it was far deeper in scope than the first project. Given its immensity (perceived or otherwise), I’ve noted several areas where I can improve:

1. Planning

Whether it is during the development phase or during the QA phase, I need to be better about working in a systematic manner. So far, my methods are more haphazard than I care to admit (“Oh, I need to code this! Wait…let me write this section first! Crap…I don’t have this function available.”) This scatterbrained method of writing code is inefficient and makes it hard to work in a logical, linear way.

2. Testing

So, this is related to the need to plan, as discussed above. Above all, my issues stem from laziness, but we all know that, in the end, there aren’t shortcuts when you want to do well. I used to write test plans, and they were super helpful. They don’t have to be extremely detailed, but I do work best when I give some thought to how I am going to test something.

In addition to test plans, I need to remember that there is no substitute for using the debugger, even if the way the script is written makes testing cumbersome. I can’t just read through something and find what’s wrong that way, especially when I’m the person behind the code.

3. Estimation

I understand there’s no way to get around providing estimates regarding how much time things will take, but goodness, I was off by about 60 hours for this project. Granted, I don’t think anyone else realized the enormity of this task, but above all, I just need to realize that I can’t always make a solid promise. This is annoying, I realize, but better to say admit ignorance than to apologize (repeatedly) for missing deadlines.