Alex's Undercover Blog

Checking in...

Posted: 2018-09-16T22:40:38Z[UTC] by Alex

Every now and then I'll open up my blog (if you can call it that) to see when the last time I wrote something of use. I've always liked writing, but have been horrible at getting in the habit of doing so. This is clearly the case since I haven't written since early 2013 (more than 5 years ago at this point) and, embarrassingly, was me proclaiming I was going to get"this and that" done by the end of the year. While setting goals is good, I've learned from experience that the goals that I need to set need to generally be smaller in scope and be shorter term. I set a bunch of goals for the year, but those goals weren't broken down into smaller chunks or time frames which made it hard to track my progress with them (not that I was tracking their progress).

In my previous post I wrote about wanting to read a laundry list of books, some technical, some not. The list seems fine enough, but the fact is the mood that I'm in shifts regularly enough that thinking I would be interested enough in those books, whenever I got around to them, was wishful thinking. Especially if I was going to be reading them over the course of the year. Over the last several years I've started to get into the habit of reading one technical book, to read when I have an hour or more by myself to spare, and one non-technical book, to read before bed or while I'm driving (in audio format), at a time. Basically I let whatever mood I'm in drive what it is I'm reading. It seems simple, I know.

With respect to reading, I've been trying to use Good Reads to track my reading progress (using my Kindle) and to keep a list of books that I want to read at some point in the future. That way I should be able to jump straight into the next book, once I've completed one. This is much more visible then keeping all the books I want to read on my kindle and then trying to find the one I'm after. It's not perfect but it's a step in the right direction.

As far as technical books go, my ability to tackle them has been a bit hit or miss, especially now having a toddler running around the house. In order for me to really absorb what it is I've been reading, I need to be able to apply it on a regular basis. There are so many things that I want to learn, but the fact is if I don't come up with a project to apply what I'm learning as I go, I essentially lose it. The books that I've been the most successful with have been those that have a book-long project that is built up and improved as you read the book. Two books that come to mind are:

Both of these start you off with the very simplest knowledge you need to get some basic functionality implemented, and then build on top of the initial codebase, a lot of the times starting you out with less than stellar coding patterns, but backing those things out in favor of more improved ways of doing things once you have the knowledge to do so.

Both of these books I've been able to stick with because the projects are compelling.

I've also found success reading books on those subjects that I use on a daily basis at work. The most recent being Functional Programming in Java. Java 8 introduced lambda functions and functional programming facilities to make code cleaner, more efficient, etc. Because the codebase I was working on was starting to use these facilities, it was important that I be able to use them effectively. It was easy to read a chapter or a half, and then apply it the next day at work.

So what am I doing to try and actually accomplish things that I want to accomplish?

  • Jotting down ideas as soon as I have them, and taking notes whenever I think of new and interesting details. In this way I can capture enough details to help kick start whatever it is that I'm doing.
  • Planning things as much as I can. Organizing the notes above and coming up with a general plan of execution and then tracking these tasks somewhere. I've been using Trello.com for this as I can define swim lanes for each step of the development process. The planning step is hard but worth it as it allows me to focus what little time I have on specific tasks.
  • Doing my best to get a project that I'm working on to a stage where it's actually working so I'm not left with a bunch of half-implemented code. This blog is a good example. Written from scratch and has enough functionality to be useful but could easily be extended in a number of different ways to make it better.
  • Making sure the project is useful to me in some way. This will give me more incentive to actually get it to a working state.

I've only found success with this process once so far, but I'm happy with the results. I have lots of notes written for a number of project ideas to pursue at some point, and also have a mostly finished Alexa skill that provides me some benefit. My hope is to keep working on it until it's fit for consumption by other Alexa-using customers (right now it's hard-coded for just me, but the base of the skill is there and working well).

One last thing. I want to pursue writing a bit more, technically and personally; a journal of sorts. Even if they're only small bits of writing, it's nice to be able to look back and see what it was I was doing at the time, and I'm not super keen on Facebook or Twitter anymore, what with all the privacy-related crap that's been going down.

This was definitely a hodge-podge of stuff and not super organized but just wanted to get something on the books.

  • goals
  • projects
  • update