Photo of a distressed-looking man in a dress shirt and blazer standing in chest-high waves in the ocean

Where I’ve Been

Since quitting the 100 Days of Code challenge, I have realized the value in adhering to such a strict schedule of not only coding daily, but writing about it. In a way, I considered that a job, and one that I wanted to keep, so I kept showing up (because my goal was to follow that path to an actual job doing what I really wanted to do). But I found the rigor of it to be in conflict with the other things going on in my life; I began focusing on my perceived future and quit living in the now, which slowly started leading me to neglect my responsibilities. I decided that I needed to slow down and readjust my focus for the sake of my mental health as well as those who I love.

I am a Dallas transplant living in Houston with my girlfriend and our baby. I work in the legal field and have absolutely no passion for what I do as a day job. My relationship is also still pretty new, all things considered, and when I landed here in a strange city I’d only visited maybe once or twice before uprooting and permanently moving here, I found myself unemployed. It took me three months to find a job, and I drained my savings in the process. When I found a job, it was a job I hated. I know that’s a first-world kind of thing to complain about, because how many of us can truly say we love what we do for a living? I know you’re out there, but I suspect you’re in the minority.

So I found myself in a new situation, in a new relationship, with a new kid, all of us crammed into an apartment that would’ve suited me alone just fine – but with another adult, a baby, and two dogs, there wasn’t a whole lot of room to breathe. Since the relationship was also pretty new, we experienced a fair share of conflict in the process of living closely with one another and figuring out how to be together harmoniously without wearing each other out. For most of my life I’ve dealt with a waxing and waning type of mild depression which I didn’t identify until my late teens, but in retrospect it was there for much longer than I could put a label on it. The totality of the situation I found myself in caused me to fall back into depression. In the midst of my struggle with coming to terms with everything, I found solace in the logical black-and-white nature of coding. I had control over everything, and if something went wrong it was entirely my fault and within my means to fix it. Even when I’m not depressed, this is something that appeals to me very much about coding. Controlling a computer to do what you want is something that has always had a magical sort of appeal to me.

Anyway, before I go too much into my woes, I’ll sum it up by saying that I became absorbed in my mission to become a professional coder. Podcasts, articles, videos, and nearly everything else I did in my free time was aimed at my end goal of being a coder for a living. The problem is that it’s not possible to be a good father and boyfriend and dog caretaker while simultaneously staring at your computer with your head wrapped around some abstract concept (I know this, because I tried). My personal life began to suffer even more in the midst of my obsession with my career goal, so I pulled back and began focusing on the people and things that matter most to me right now. This meant less time spent coding and learning new concepts, and essentially no time for me to log my progress daily (because, as you might be able to glean from this post, I am a long-winded person with a weakness for my own tangents that usually never make it back to center). And since the whole point of the 100 Days challenge is literally to do it daily, I decided that it would be disingenuous and maybe even a little insulting to those who were really pulling off 100-plus day streaks to keep taking part in it.

I told myself I’d still post about my progress for the reflective value inherent in thinking back on your day and putting into words what you learned, but without the compulsion to do it every day, I found myself lacking the momentum to even start a post. With my coding time reduced, I opted instead to use it for actual coding and learning about coding rather than sitting and writing about it. But I did continue my journey: I continued reading, listening, and doing, almost daily, though I didn’t verbalize my progress as adamantly as I’d been doing before.

At a certain point, I hit burnout status. I didn’t give up, but I had pull back from everything and give myself some breathing room lest I get so frustrated that I give up altogether. I knew that to be a distinct possibility, because I’ve been down that road on more than one occasion. The urge to be a programmer is not a new one to me. I’ve been chasing this dream since I was a kid, with varying degrees of dedication. The difference is that this time, I really mean it. It’s what I want to do. No matter how many walls I hit or how slowly it feels my progress is coming, underneath it all I know that I want to make my living working with computers and making them work for me.

I started allowing myself leisure time in my free time rather than spending it all working (because, as much as I love to learn, learning is still work). My relationship with my girlfriend slowly started to improve, I found myself climbing back out of depression, and I worked to be more present when raising my kid, to really notice the beautiful little moments in his daily progression as a human, moments that I would not be able to get back if they passed me by while I had my back turned, engrossed in some Python program or web development tutorial.

I write this now from the comfort of our new home, which my girlfriend did almost all of the work in securing for us. It’s more than double the size of our apartment. Our baby has a room of his own now, and we have a room of our own, and my girlfriend has an office of her own from which she can work her remote night shift. I even have my own little area to work in undisturbed. The process of packing up the apartment, moving everything, unloading it, finding a new place for it in our new home, and generally balancing all the responsibilities that come with home ownership has been exhausting and required almost every free moment we’ve been able to spare for the past month or two. Through it all, I haven’t given up on my dream, but I’ve had to focus even harder on the immediate now rather than a nebulous future vision of where I want to be, though who the hell knows when I’ll actually make it there?

On top of all that, I quit the job I was miserable (and frankly, pretty bad) at and began working at a new law firm. It’s more in line with my experience, but I still don’t really enjoy it. I get by well enough, and the pay is good enough, and health care is actually provided, but the first month was unbelievably stressful. I’m not exaggerating when I say that they expected me to do the work of two people when I started; I did my very best, thinking that if I just put my mind to it and worked hard enough that I could find a way to succeed, but I quickly had to put my foot down and tell them that no matter how much experience I have, no matter how fast I type or how good I am with technology, there was no way I could get the work done short of pulling 70-hour weeks (on salary, with no overtime). So they gave half of my work to another employee, which helped greatly, and installed a piece of software on my computer which made generating batches of documents unbelievably faster than the previous process I had to follow (saving me hours of work a week), and I find myself starting to level out again.

I don’t hate my job, but I know I am in the wrong line of work. I don’t have any real interest in or passion for the law, but it’s a path I’ve been following for over half a decade since I landed my first legal assistant gig simply because it’s something I can do and it’s what I know. But this is not what I want to do until I retire, and I think about that almost every day (when I have the luxury of finding time to think about such extraneous things).

So things were bad, then they got worse, and now they’re steadily improving and approaching what I’d consider to be pretty great. I know without a doubt where I want to end up in my future career, even if I’m not currently there (or on a direct track with my present line of employment). I see the way forward. It’s going to take a lot of work and, most likely, a lot of time. But if it takes another year or two for me to secure the skills necessary to build up a portfolio, line up a job interview, and land the gig, so be it. That’s just the price of admission, and I’m willing to pay it to end up where I truly want to be.

But I’ve got to be a dad and a boyfriend first. The coding and dream career aren’t going anywhere. I have the desire and the will to make it happen, but maybe it’s better after all not to rush it.

I’ll check back in in a week or ten. 😉

Advertisements
Close-up photo of Nintendo Gamecube reset button

100 Days of Code, Day 1: Hitting the Reset Button

Sometimes you need to unwind and hit reset.

I’ve been feeling the creeping sensation of burnout lately. For months, I’ve been spending the majority of my waking hours listening to podcasts, reading articles and tutorials, watching videos, taking courses, talking about, and thinking about coding – when I wasn’t actually coding. I’ve learned an immense amount and feel pretty confident in my abilities, but I haven’t allowed myself much breathing room. I felt the burnout coming, and I knew I needed to give my mind a rest.

This was a little bit of a bummer because I missed over a week of 100 Days of Code logs, but I’ve been sporadically missing logs and generally playing by my own rules rather than Alex Kallaway’s official version. I kept the count going because the challenge often really pushed me to sit down and code even on days when I just wanted to be lazy and mindless. I figured, once I’d unwound a little and rebooted my mind, I’d come back and resume the 100 Days challenge where I’d left off (over 80 days in).

But I felt disconnected from my last update (because I’d done quite a bit worth writing about in the meantime, whether I’d been logging it or not), and the time gap was so large that I decided to do what I’d been thinking about doing anyway – switch back to my WordPress blog for logging my progress – and restart the challenge on this platform rather than a Markdown file on Github.

So without further ado, here’s my log for the 100 Days of Code, try number two, day number one.

Day 1: December 21, 2017, Thursday

Today’s Progress

There’s a lot I’ve done that I haven’t logged about, and I don’t particularly feel like backtracking to catalog it all (which demonstrates the value in logging daily/more regularly), so I’ll just start with my most recent updates.

I’m currently focusing on learning MySQL. I tweeted about this and received a response from a couple of followers suggesting that I should opt for another database, namely PostgreSQL. I definitely want to learn it, especially after reading a comparison of the two databases’ features, but I’m currently working in WordPress, which is based on MySQL. Even if I end up relying on another database in the future, I do believe that having MySQL skills in my tool kit will benefit me.

On a related note: after much deliberation on the matter, I’ve decided to base my portfolio in WordPress. I feel kind of like a traitor, since I’m currently learning how to code in scratch HTML/CSS/JS, but past experience with the platform leads me to believe it’ll be faster and easier to get running and maintain, even if I intend on hand-coding websites for clients otherwise. Shouldn’t I  be showing off the kind of work I’ll actually be doing? Well, maybe. But in the real world, most clients won’t be inspecting my source code to detect whether my content is WordPress-based. The most important things, I believe, are presentation and results. Furthermore, there will likely be many clients for whom WordPress is a more suitable option than a hand-coded site which I’ll have to update for them whenever a change needs to be made (though I’ll still need to check in periodically to update WordPress and fix any issues caused by potentially breaking changes, one of the clear downsides of the platform).

I may, at some point, decide to overhaul my site by hand. For right now, I just need something that’s live. I want to have some business cards printed, but I first need to have a website I can put on ’em. WordPress is going to help me achieve that goal much more quickly, even if it makes me feel like a phony.

Those who have been following my logs may remember me talking about my first potential client in half a decade (a friend who saw me cursorily post on Facebook that I’m back in the development game). I consulted with her via phone, sent a quote for a redesign, and then she notified me that her company had decided to put the project on hold. I was a bit dismayed, and I wondered if my pricing had something to do with it. I quoted a much higher price than I ever have before, but I was previously quoting such a low rate that I was lucky to scrape by at minimum wage after taxes and other expenses were taken into account. I felt that the price I presented was both fair and lower than most other developers/agencies (outside of Upwork) would offer. She actually admitted to me that the quotes they’d received were in the tens of thousands of dollars, which gave me confidence when I presented my own.

Earlier this week, she emailed me again to get a quote on building a new site for another branch of her organization. We had a brief phone call yesterday to talk about some of the details, and I’m waiting on her to get back to me with information she promised to provide to aid in generating my estimate. She also said that one of her coworkers may be contacting me separately for a personal website. I don’t want to get my hopes up, but this is a very promising lead (two, actually). I’ll keep you guys posted.

Thoughts

It’s good to be back logging, especially on WordPress. The process is still a pain in my ass, because it’s time taken away from doing actual coding/research stuff. But I do believe in the value of reflecting on what I’ve done for my personal benefit, and I’m hopeful that the people who read my logs will be able to take something away from them (assuming said readers are on the same journey into developerhood that I’m on). Soon I’ll return my focus to freeCodeCamp to finish styling my weather app for submission. I can’t wait to finish up that curriculum, close the chapter, and get my front end certification.

Link(s) to Work

None yet, but soon.

Breaking Linux and returning to Windows

For the past couple of months, I’ve been using Ubuntu Linux. I love it. I’ve been using Windows almost exclusively since 3.1, but I’ve found that Ubuntu 16.04 LTS is amazingly good for development purposes, and so good that I’ve been using it for everything else, too (even though I have my machine set up to dual boot with Windows 10).

I decided I’d try switching from the default Unity GUI to GNOME, which is older and preferred by quite a few longtime Linux users. I used it for a few days and just didn’t get a good feeling from it, so I tried switching back…but I did something wrong and am currently unable to access my Linux installation via GUI (and when I use recovery mode to login as root, it keeps automatically running and returning to the recovery menu). I’m sure I can fix it with enough time and energy, but for the time being I am back on Windows. Oh well. It’s not as fast or convenient, but it works well enough. I already find myself missing Linux’s terminal.

I haven’t been blogging as frequently lately, but I haven’t fallen off on programming. Save for about a week where I was temporarily dealing with Hurricane Harvey (which, thankfully, I made it out of without loss of life or property), I’ve still been working on something code-related every day. I’m about 26 days into the 100 Days of Code challenge as of writing this post, and that’s the primary reason why I haven’t updated here more.

Between logging my progress for that project (which you can read here), actual coding, reading, raising a baby, applying for jobs, interviewing for jobs (not code-related, at least not yet), and doing everything else required of me in the Real World™, it’s hard for me to get around to posting here as often. Speaking of which, I’ve got a third interview today with a law firm (following a positive phone interview and in-person with the firm’s owner and associate attorney). After three months of unemployment and a diligent effort to get a job in an unfamiliar city, I’m hopeful that this will be my way back into the work force. The good part about it is I’ll no longer be stressed out about having no income; the bad is that I’ll have less time overall to devote to advancing my skills, but I’ll still try to squeeze in at least an hour a day. I’ve developed a pretty good habit of near-daily learning and I wish to keep that going so I can achieve my ultimate goal of breaking into development as a professional.

I’ll write a post in the near future detailing what I’ve done on my first game, Chicken vs. Egg!, but in the meantime you can catch up via my 100 Days log or try it out yourself via Github. It’s bare bones, but as it stands it’s an actual playable game. I’m pretty proud of my progress so far, but there’s still quite a lot of stuff I’d like to improve upon.

I’ve got to go get ready for my interview now, but I’ll be back with more updates soon!

P.S. Fun fact: WordPress just informed me that this is my 10th post!

Further experimentation in Python and OOP

While there are no notable updates regarding my first game, Chicken vs. Egg, I did write a new Python script today in an effort to hone some of the skills I’ll need to use as I move forward.

It’s called “Dogs,” and it serves no real purpose aside from being a teaching tool for myself. It’s a command line-based demo which works like this:

  1. It prompts you to enter a dog breed and a name
  2. It creates an object instance of the Dog class using the provided parameters and adds it to a list of dogs you’ve created during the program
  3. A menu prompts you to list all created dogs, to create another dog, or quit

You can check it out on Github if you’d like. There’s no real-world application for this program that I can tell, but it was a valuable learning experience that helped me work through a problem I encountered when thinking about the CvE source: how to create an undefined number of objects without explicitly declaring a variable in which to store each one. What I mean is, using the Dogs program as an example, I wanted to find out how to avoid doing something like dog1 = Dog(“collie”, “Sparky”) for each dog I wanted to create.

It turns out that the solution is to create a list and append a new class instance to the list each time it’s created. This will be indispensable as I develop CvE – I have no idea how many different eggs I’ll need to create for any given game, so it would be impossible for me to manually instantiate the various Egg objects. However, if I can populate them into a list as they’re created, I can easily cycle through and update their positions, check for collision, check when they’ve gone offscreen, and remove them once they are no longer needed.

I’ve been missing JavaScript these past few days, but I think it’s best for me to focus on one thing at a time. I’ve made some good progress in JavaScript in the past month or so, and now my goal is to make a game. I do want to continue my journey toward JS mastery, but I think the path of least resistance for my current goal will be Python using Pygame. If I decide to create another game after that, there’s a really cool JavaScript game framework called Phaser which I’m interested in trying out; it would allow me to make a browser-based game using HTML5’s canvas, but I think it would also require a lot more overhead to learn.

Before I wrap up the post, I’d like to add that I’m 10% of the way through my 100 Days of Code challenge (I just posted the log for day 10 here). I’ve still got a long way to go, but I’m encouraged that I’ve made it as far as I have already.

100 Days of Code Progress: Day 5

It’s been a while since I’ve posted here, but I’ve been actively working on code every day all the same. I’ve been pouring most of my thoughts into my 100 Days of Code log in lieu of  posting here (but I’m now seeing that I’ve got a handful of readers, so I wanted to check in and let you know what I’ve been up to).

When I first heard of 100 Days of Code, I thought it was a series of code problems you had to solve 100 days in a row. It’s actually much simpler: you code whatever you want, but you do it for at least an hour each day for 100 days straight. I am in the process of securing a full-time day gig, so I’ll no longer have as much free time as I have had up until now to work on my coding skills, and this sounded like a great way to keep my momentum going.

I forked the official repo on Github and got started about five days ago. Lately, I’ve been going through the coding challenges on CodeWars.com using JavaScript to solve them. Each problem is called a “kata,” and I was making pretty steady progress until the kata I started on around the time I started the 100 Days challenge. (As a side note, you can click here to join my team on that site!)

I worked out all the syntax errors and got the program to run, but the output was totally wrong. I struggled to modify the logic to get it working, but kept hitting a brick wall. So I just decided to erase the meat of the function, work through it in plain English via pseudo code, and start again. And it worked! It’s such a great feeling to finally break through after being stuck on a persistent problem. Part of me wishes I picked everything up without getting stuck in the first place, but another part realizes that perhaps getting stuck is a valuable educational experience in its own right.

I am gearing up to create my very first game in Python using the popular Pygame library. The idea of creating video games is what piqued my interest in computer science/programming in the first place, and even though I know what I crank out will inevitably be rudimentary, I’m still excited to get my first little demo up and running. I’ll be sure to keep you posted as it develops. It won’t be anything innovative or revolutionary, but it’ll be mine, and I’ll be proud of it all the same.

I don’t know if I’ve mentioned this previously, but about a month ago I installed Ubuntu on my laptop alongside Windows 10, and I haven’t logged back into Windows since. The overall environment is so much more amenable to programming. I love it. I have to Google how to use certain features a lot more regularly than I did with Windows, but I’m excited to be learning new skills. I actually wrote my latest log for 100 Days using a very stripped-down editor called Vim; it’s anything but intuitive, but from what I’ve read, it’s very powerful. I’m looking forward to getting further acquainted with it, though I’ll probably still be heavily using Atom for the foreseeable future.

As for now, I should probably try to get some sleep. I’ve got to return to my week-long temporary day job tomorrow. Believe me, I’d much rather be coding, but I’m still not to the point of getting paid to do it.

Not yet, at least.