Reinventing The Wheel (Or Why My Thing Is So Much More Special-er)

I created a way to track how you spend your time time and it’s called Root Basis. This project has been a long time coming actually.  For years, I’ve been obsessively tracking how I spend my time but I’d always give up because it took up so much more time than what felt productive.

Imagine having to take almost a whole minute every few minutes to write down what you’re doing. A lot of that was just repetitive too because I have the same routines.

Eventually, I created the antescedant to what would become Root Basis. This was an extremely primitive program (and ugly) but it worked.

Root Basis is a more streamlined and intuitive version of that and I’m very proud of it. I use it almost every single day to track how I spend my time.

With that being said, the best time tracker is Toggl. It’s clean. It’s simple. It’s intuitive. If you’re going to bring a time tracker to market, that’s what it should look like.

Now why am I writing this? Am I just engaging in negative self talk? Moping about how I failed? No.  It’s because I never used Toggl until almost six months after I began developing Root Basis.

To be fair, I never planned on releasing Root Basis. Originally, the plan was to create a way to quantify every aspect of your life. I never really developed it past time tracking but I used it every day. Since I was using it every day, I figured other people might find it useful. (I was wrong.)

A common bit of advice in business is to find the market first and once you have a paying customer then you build the product. Sometimes, I just wanna build something because it’s awesome. That’s why I built Words Prevail, a way to send out a message if something happens to you. In this case, it would have been helpful, not only as a viable alternative to going through the process of building something, but also as a way to inspire me to build something better.  (Toggl’s design is so minimalist and clean while Root Basis’ is clunky and unnatural.)

[As a side note, Toggl would have been completely inappropriate for my purposes. The entire purpose of Root Basis is so that you don’t have to write down what you’re doing.]

 

The Joy Of Consistent Commits

I used to just commit whenever I was done working. If I worked an hour, or if I worked three hours, I would just commit at the end of that time period. This is problematic because you can’t always account for all of the changes you’ve made during a certain time period.

Recently, I’ve adopted a habit of commiting every single time I implement something from my Trello board. Now I don’t do this for extremely simple fixes but pretty much everything else requires a commit.

A few days ago, I had an incident that really confirmed why I do this. I worked all day on various elements of my new app, Root Basis. (It’s a time tracking app that I’d eventually like to extend to tracking everything.) The next day, or maybe on the way home, I noticed this issue with adding tasks to a time period. On desktop, there was no problem, but on mobile, the task menu wasn’t coming up at all.

I immediately thought it might be an issue with AJAX because I’ve had issues with that before. I ruled that out pretty quickly. Then just to see if it was some kind of responsive design issue, I tried it out in Chrome’s mobile view on my desktop. It worked perfectly.

So I knew now that the issue was specifically with my iPhone. Then when I went between the dev enviroment and production environment, the issue disappeared so I knew it was because of something I changed that day. Unfortunately, I did a lot of work that day and I had no idea where the issue could have come from and I really didn’t want to have to look through each commit to figure out where I went wrong.

Then I had this idea, why not just revert each commit until I found out which commit caused the error. I found it pretty quickly after that.

Normally, an error like this would be unremarkable, but this particular error is very odd to me. That day I had added new code that would reset all the other task menus:

$(“.listOfNewTasks”).html(“”);

So all the task menus would be reset and a new task menu would be generated:

$(“#listOfNewTasks” + timePeriodID).html(getData);

This created a flickering effect that I found jarring so I changed the reset code to:

$(“.listOfNewTasks:not(#listOfNewTasks” + timePeriodID + “)”).html(“”);

Apparently, this works fine on Desktops but is broken on iPhones. Maybe I messed up on the formatting? I plan to research this later and find out.

Noobs, Impostor Syndrome & Arrogant Asshole Syndrome

Impostor syndrome is the overwhelming feeling that even if you’re employed at something, you aren’t, actually, that. You could be a programmer for ten years and still feel like some phony that lucked out into no one noticing how horribly, horribly incompetent you really are. Due to the changing standard of programming competency and the requirement that you be learning constantly to stay afloat, programmers are prone to this kind of syndrome.

Because programmers are always trying to stay relevant, we’re often always asking questions. In forums. In IRC. Wherever. If you’re stuck on a particular problem, it can be helpful to get a different perspective on the matter.

So often, when asking a question, you’ll receive some sort of condescending remark, like “OMG N00b, htf do u not understand this? rtfm much? lol”. It’s a given. I used to chalk that up to the inherent social and empathetic deficit that occurs when sitting at a computer for an extreme amount of time, but I recently stumbled upon a different perspective.

Because programmers are so prone to Impostor Syndrome,  they are also prone to Arrogant Asshole Syndrome. If you believe that it is almost inevitable that someone will eventually discover your incompetence, it is natural to want to jump on anyone else who you believe to be incompetent because it takes attention away from yourself. By focusing the attention on others, you’re able to ignore your own deficiencies as a programmer and as a human being. So what many of us have assumed is simply just a lack of social skills or empathy is actually something much simpler: an outward manifestation of Impostor Syndrome.

In closing, I’d like to say that we all fall prey to Impostor Syndrome at least once, but falling prey to Arrogant Asshole Syndrome is a choice.

The Shame & Shitheap That Is PHP

I made the decision to become a PHP programmer because it was easy. LAMP was easily installed and the PHP docs, regardless of whatever anyone else says, are fucking top notch. I tried C and Java before PHP and they just didn’t take with me.

But if I had known that PHP was so widely disregarded, I probably wouldn’t have picked it as my programming language. During the process of becoming familiar with PHP, I immediately noticed how weird the language was. Naming conventions were all over the place and parameter order within functions was sometimes unintuitive or inconsistent, but I’m just a noob, so what did I really know?

One of the main arguments I seem to hear about PHP is its lack of design. That, it is, essentially, just a shitheap of functions that were built up over time to accommodate its users. If I’m remembering correctly, it also wasn’t built with the idea of being an actual programming language. It was merely a way to run scripts dynamically back in the early 90s.

I’m not sure what bothers me more about the vitriol towards PHP. The people slinging it or the kind of victim mentality that PHP programmers have adopted in regards to it. Much like someone who has been repeatedly pummeled by schoolyard bullies, there’s no fight in them.

In /r/php, someone asked some kind of question about keeping up with the joneses. Someone responded along the lines of, “first, stop using php.’ I responded,”Even in our forums…” and was downvoted. Now maybe it was just the troll downvoting me, but I tend to think there’s some universal shame towards being a PHP programmer.

Even now, I dread having to tell people my language of choice at meetups. Maybe it’s just the impostor syndrome talking but I imagine they’ll respond in this polite, condescending way,”Oh, PHP, huh? Well, Facebook uses it, so it can’t all be bad, I guess.” Later, they snigger to their friends about it. “PHP? lol”

But Facebook doesn’t use PHP because it’s the best choice. They use it because they have so much code in PHP it’d be infeasible for them to switch to anything else.

But maybe there’s a dignity in using PHP. Beyond the techno-circle-jerk that programming circles are so prone to, does any programming language really have to be the best? When you’re building houses, are you building castles from stone dug from a quarry or are you building some boxes out of wood, drywall and insulation? Real life isn’t about being the best. It’s about getting shit done. Now I might always have that sense of shame at meetups, but I’m proud of every nearly every fucking thing I’ve built, even if it is in PHP.

 

Why Another WordPress

After browsing /r/forhire, it became clear that there were two required skillsets I was inexperienced in: WordPress and SASS. The former is a “CMS” (great top comment in this reddit thread about why it’s not a CMS) and the latter is a stylesheet language.

There seems to be a lot of demand for a WordPress Plugins, but there also seems to be a lot of people who are able to fulfill this demand. Since demand and supply are relatively equal, it almost negates the purpose to even bother learning it. But I figure it can never hurt to learn something new, right?

The thing is I have very little experience with WordPress. I’ve, of course, used it before (though sparingly). So how do I build a plugin for WordPress when I don’t actually use WordPress?

That’s the problem that I’m trying to resolve, I guess. I’ve tried my hand at a personal blog before, but I always gave up pretty quickly, because, ya know, inertia. But having a blog, though a pretty outdated concept at the point, could help in some kind of way to get a gig and I always have a lot to say, so why the hell not?

I am genuinely wondering if I’ll be able to come up with a plugin idea though, which, of course, is the reason why I’m writing this. Only time will tell.