Misc Finds

Hello, and welcome to another week. The last several week’s worth of posts have been more high-level items that I’ve seen prove helpful while trying to excel as an accountant and as a writer, and which I assume will prove helpful as I’m transitioning to full-time developer.

This week’s post is going to be a bit of a change from that, but before I get into that it’s probably worth explaining some of what’s going on. I’m actually several weeks ahead as far as writing posts go. There are several things that play into that.

When I read the Complete Software Developer’s Career Guide and he recommended so highly getting a blog started, I knew that I needed to start writing posts immediately or I would be risking having that idea end up in the trash heap of other great ideas that I never made it around to doing anything with. So, I started immediately. The fact that I don’t have an actual blog up yet (it shouldn’t be too hard in theory given that I’m just planning on using WordPress), combined with the fact that Katie hasn’t had much—if any—time to do an editing pass over the posts means that I can’t post the entries I’ve written so far even if I wanted to.

As it turns out, I don’t want to start posting them until I’ve got a good backlog of entries both written and edited. My theory is that once I start posting I need to do everything possible to make sure that I stick to my announced schedule of one time per week, but I’m very conscious of the fact that life (especially with baby #4 on the way) sometimes gets in the way of those kinds of schedules. By having a backlog of posts (and trying to write more than one post from time to time in a given week as a way of further building up that buffer), I’m putting myself in a position where even if I miss writing for a week or two I’ll still be able to deliver as promised to my blog readers.

This week I finished my Javascript tutorial at Codecademy.com. That means I’ve now been through the tutorials for Java, Python, HTML, CSS and Javascript. In theory that also means that I have the foundational knowledge to start building stuff.

That’s nice, but it also means that I’ve moved from the orderly, incremental world of progressing through tutorials to the messy world of figuring out stuff that I’ve never done before.

I tend to be more focused on the outputs than I am on the inputs (as you can probably tell from my posts so far on goal setting). That works really well for the most part, but when I’m trying to build something from scratch, there are inevitably going to be some times where I put a lot of time into a project and don’t have much to show for the effort—or at least that’s what it feels like.

In reality, there is a lot of learning what doesn’t work so that I can rack up the small victories as I find things that do work, but that learning is a bit harder to measure. Things are further complicated by the fact that I don’t really have any good idea of what will be involved in getting something new built.

I know roughly what I want the end result to be, but I don’t have any really good idea what is going to be involved in getting to that point. That tends to make my victories feel even smaller.

All of which probably sounds like just a bunch of whining, but that’s not what it’s meant to be. There is some pretty compelling research that I saw at one point which indicated that we actually feel emotions first, as far as order of things that happen, and then only after that is it that our conscious mind reflexively tries to decide why it is we feel that way. Given that, I find that it’s really, really valuable to occasionally step back and think about what it is I’m feeling and why I’m feeling it. It’s even more valuable when I do so with the understanding that my first thought around why I’m feeling something — the reflexive response — usually ends up being wrong.

That was a little bit of a rabbit trail, I suppose, but the piece that I was really trying to get across is that with the ever mounting push to try and get my arms around development, and get my first side project app live, it’s getting harder to fit in the time that I’m supposed to be dedicating to writing a blog post each week.

The upside to all that is I now understand what’s going on, so I’ll be better positioned to make sure that I get the blog post written early in the day rather than leaving it until the last minute.

All that being said, as my skill set has started to expand, I’ve been able to rack up a few tiny accomplishments that I’m proud of, and that I want to report back to my readers on. Here are the things that I ran into and managed to solve during the last week.

Firstly, I noticed a few weeks ago that there was a problem with my writing website — the one that is directed towards people who are reading my novels. The homepage is supposed to have this attractive graphic of seven different books that readers can get for free by signing up for my mailing list, but when I went there to fix a couple of other problems that have been lingering on the website for several months while I was working on my provisional patent applications, I noticed that the graphic had disappeared.

I tried everything I could think of to find the graphic on the website in the WordPress backend, but didn’t have any luck. I assumed that word press have fallen over somehow and deleted that image, or that I somehow deleted it at some point in an effort to save disk space and bring down my hosting costs.

I couldn’t find it in my dropbox account (I really love Dropbox, by the way. It’s not perfect, but it’s been hugely helpful when it comes to keeping stuff synced up across multiple computers. If you don’t have an account already, you should try them out. If you use this link then Katie or I will get a little bit of extra storage on our accounts.)

Back to the problem with the website: I asked Katie to dig up the original file from off of her desktop, but she’s been extra busy trying to keep our kids alive lately, so she hadn’t made it to that yet, and I had just chalked it up as something that was going to have to stay broken for a few more weeks or months.

A little while after that, I was trying to get QuickBooks installed on a laptop for a new employee in the accounting department. I don’t remember why I felt like I needed to test the browser on her machine, but at some point during that process I opened up chrome and went to Dean rights.com. Imagine my surprise when I saw the big graphic that I thought had disappeared sitting exactly where it was supposed to be on my website.

To make a long story short, it still wasn’t working on any of my machines but I finally had the thought that I should inspect the site and see if there are any errors on the page. As it turned out, there was an error:

err_blocked_by_client

Some searching online turned up that the likely problem was some kind of ad blocking software, which matched up really well with the fact that I recently installed an ad blocker extension in chrome. I turned the ad blocker off, which fixed it for me, but didn’t address the fact that it would be invisible to anyone else who had an ad blocker running on their browser.

I could live with that if there wasn’t any other solution, because at least some of my traffic would be seeing the graphic telling them about the opportunity to get a bunch of free books, but it still wasn’t ideal, so I did some more digging. As it turns out, if you have a graphic on your site with the word ad anywhere in the name, the ad blockers are smart enough — or at least this one was — to strip that out of what is displayed.

I renamed the graphic, re-uploaded it to my blog, and that solved that problem.

The next problem I ran into involved moving files in the terminal on my MacBook. The development manager at work has been really kind to serve as a resource for me as I’m trying to get my legs under me as a developer, and this last week he agreed to help me set up a skeleton of an app so that I could experiment with it rather than breaking stuff at work.

As part of that process, he told me to from one spot to another, and then got distracted by someone knocking on his front door. I wanted to show as much initiative as I could, so I looked up the copy command online and typed it into the terminal for him to check when he got back to where we were working.

For all of you much more experienced UNIX or Mac OS users, the obvious answer is the cp command to, which I was smart enough to arrive at as the proper route forward, but I used the -r flag on it. I showed the development manager, he looked at it for a second and said he thought that would work just fine (it turned out that when he did the same step he used the move command), but several steps later in the process I wasn’t getting the right outputs.
I still don’t know a lot about programming, but anyone who spent very much time in a controller role in an accounting department inside of a small organization that’s evolving rapidly tends to pick up some pretty good problem-solving skills. A few minutes of investigation while the development manager was dealing with some small fire that was happening back at the office showed me that the files back in the directory that I’d copied from were giving the correct output.

Logically, that seemed to me like an instance where the copy must have gone wrong, so I went online to see if I can find something that would confirm my theory. As it turns out, cp -r doesn’t maintain symbolic links, but cp -a is a recursive copy that does maintain symbolic links in the files that are copied over

Copying the original files into a third directory confirmed that cp -a did the trick, but then I had the problem of trying to figure out how to not have to redo the last hour or so worth of work. I decided to copy the files from my working directory up to one of the earlier versions that had the symbolic links working– doing so with the -r flag so that I wouldn’t mess up any of the symbolic links in the earlier version– and then I copied everything from the earlier version directory — which now also included the latest versions of the files — back into my working directory — this time using the -a flag.

Both of those victories — all three if you include fixing the graphic that wasn’t working my website — were pretty small things, but it was nice to be getting to the point where I can at least troubleshoot some of the problems by myself.

A few other things that I learned this week as well:
If you’re watching a tutorial and they use yarn, there’s a very good chance that you can get the same result just using npm.
If you need to know what’s running on a particular port, you can use this command from the terminal: sudo lsof -l tcp:<port number> where <port number> is the actual port number you’re wanting to check.
A lot of times when you tell a process to run from the terminal it ends up sort of running, but not being quite what you need because you messed up on one of the earlier steps. I didn’t realize when I was happening, that the process was still running, I would just keep opening new terminal windows because I was no longer able to use the existing terminal window to do anything. In those instances, when you want the process to stop, you can use ctrl-C to cause the process to exit gracefully.

Lastly, back when I was working on creating that skeleton with the development manager, there was a piece of the tutorial we were using where I was supposed to build the hit the app on my local box via a browser and get some kind of stock splash screen.

The first time through the tutorial, I didn’t get that splash screen, but for some reason I didn’t think much of it. That’s a big mistake, and frankly I know better than that when I run into a similar problem in accounting, so I should’ve known better than that now when running into that kind of issue in a development context.

If something doesn’t work early on in a process that you don’t understand, and run through the steps up to that point again. It is highly unlikely that something broken earlier in the process will magically fix itself later on in the process.

That’s it for me for this week, but I hope someone out there eventually comes across this post and gleans a few useful nuggets from it.

Leave a Reply