2014 was quite a year for me, just like any other year. Before I get into the specifics, I learned one big thing:
Despite thinking I had slowed down on my learning endeavor, I’ve sped it up to tremendous velocities.
What I mean by that is that, when you start programming, everything is new. Before you know it, you go from “no programming knowledge” to building your first blog, launching your first website, and using the “Terminal” whatever that’s supposed to be. As you mature, the crazy changes slow down. Or so it seems. You see, programming has a way of getting people used to radically changing their toolsets and learning at a rapid pace. In essense, any bit of development work you do is a learning experience. And everything you do can always be done better.
Believe it or not but I rarely ever use jQuery, despite it being my first go-to two years ago. Last year, I coded an entire KnockoutJS application. This year, I coded an entire AngularJS framework.
So we get used to learning and changing things but that also means that we give more into that “imposter syndrome” which tells us that we haven’t done enough or that we’re not really good at these things. And because changes and learning become a norm, it doesn’t feel as special as our first year developing. Which is why year reviews like these are great to get a realistic gauge of what I’ve learned and done. You should try the same! 🙂
The year of JS
At the beginning of the year, I spent several months architecting and perfecting an API server which served data to several high-volume sites. The beauty of it was learning NodeJS in-depth. From properly architecting the application, to a full-suite of tests, and finally, to caching and performance. One of my achievements was building a JSON structure validator which allowed an empty map to serve as a blueprint for an API and test against it.
I used a great deal of jQuery to make that API come alive but most importantly, I dove into AngularJS. I’ve used Knockout in the past and was very much used to it. I’ve also played around with AngularJS but not as much as I did this year.
In fact, I got so good at it that I ended up doing a talk and writing a guide on the topic and finally, getting hired by Zurb to architect and write their Foundation for Apps angular code. That subsequently lead me to learning about Node streams and a bunch of other cool stuff.
JS radically changed my career for sure.
One of the bigger things that I’ve changed about my development workflow was going platform-independent and minimalist. I was really hating the fact that I had to switch between programs that I used on different computers, that I had to involve a long and horrendous setup in order to work on a new machine and that steadily, over time, my machine required better and better specs.
On top of that, every new IDE had some catchy feature and I wanted them all. Until a few things happened that changed my outlook on things:
- I kept switching from typing to using my mouse and it got annoying because I had to do this when I produced a LOT of lines of code.
- I worked on a server at times which meant that I had to use server tools to edit files and change stuff.
- my laptop used a different OS so some tools were not interchangeable, my new laptop was low-powered linux machine.
- Gulp and grunt taught me that many tools that I used apps for previously didn’t need apps and were cross platform. (Oh yeah, I totally got into Gulp and love it).
Anyways, after meeting with a developer that worked solely in VIM and seeing his magic, I decided to get into it. Before I knew it, I coded solely in VIM and started my own dotfiles. A few months later, I got into TMUX and worked solely in that environment for a while.
When I switched to a windows machine, TMUX got dropped off but luckily, cmder replaced the tab switching for me.
But anyways, I currently have three separate machines setup identically because of my dotfiles and my dev workflow. And I can work on all of them identically. In fact, I’m writing this article SSHed into my server via Chrome extension.
My productivity has never been higher and I absolutely love the fact that my mouse is now for reddit and gaming only! 🙂
My current setup includes:
- a Windows machine desktop running CMDer and VIM (also I have Ubuntu dualbooted). Checkout my writeup on it.
- Chromebook which I can use to SSH into my VPS or use Linux to develop straight on it.
- My VPS with my dotfiles setup on it.
I should mention that my Windows machine is my MAIN machine and I love working on it.
I already mentioned working for Zurb (consulting) and developing Foundation for Apps on the Angular side. I’ve also worked on a bunch of other projects (though with less clout). One of them was Genesis Framework for WordPress, a WordPress workflow and deployment tool that truly gave me an insight into DevOps. It runs my website by the way, and it runs several BIG Wordrpess websites.
I’m also a proud contributor to an NPM package (that structure validator I mentioned) and a bower package with my custom CSS framework.
Let me give you some background on Tseczka though. It’s a WordPress theme that I built 4 years ago (initially) which was based on my WP practices and featured the basic style elements of the designers I worked with. He often reused several design patterns which helped me build up a boilerplate WP theme.
This year, I took it a step further by separating the style from the theme (meaning that I could use my basic design patterns and styles for non-WP prototypes). This evolved into my Tseczka CSS framework and subsequently the full overhaul my Tseczka Wordress Theme that my current antjanus theme uses as boilerplate.
I’ve also used teh CSS framework for my PopStar CMS, a file-based Node CMS.
My site has always been my baby and I have always strived to keep it up to date with my skills. Though no longer as possible as I’m working mostly with JS instead of PHP, I do my best.
One of the best decisions I’ve made this year was migrating away from shared hosting and to a VPS. I used to use StableHost (a great host by the way, and yes, that’s an affiliate link) and now I’m on Digital Ocean. Using that Genesis Framework I mentioned which also, by the way, runs Varnish for super-duper caching.
This put me on a path of working with servers often. Earlier in the year, I had the pleasure of working with Ansible and Bash in order to create Vagrant setups.
Anyways, I also redesigned my site fully, basing it on my Tseczka WP theme. You can check out the evolution of design of my site on my ever-updating Throwback Thursday article. I’m really excited about it.
I’ve also started getting into a making videos for my blog, such as with the Foundation for Apps intro.
I talked about my shift to JS. But it wasn’t an all of a sudden thing. I worked with PHP for half the year and JS the other half (or a mix of the two rather). The biggest thing I did with PHP this year was driving major feature additions to an enterprise Symfony app.
In all honesty, this was the biggest, most complicated piece of work I’ve done. It involved DB architecting, migrations, augmenting existing logic as well as adding new logic. The two feature additions were monumental projects for me and took up most of my time this year. But in the process, I’ve learned how to refactor well, it got me into reading and learning about algorithms and design patterns, and made me hate while loving Symfony.
It gave me an insight into the bigger enterprise apps. The faults and the positives. I had written large apps before, just never with such performance demands and on top of an existing platform.
Lastly, I wanted to talk about the development community. I’ve always stayed away, and participated only a little. A comment here and a comment there. That is, until this year.
This year, I got actively involved in Tavern, a product design community that discusses various topics, one topic a day. Along with that, I also ended up doing two different talks, my first ones.
The first talk I gave was to a room full of developers wanting to learn about the basics of AngularJS. My presentation is available online, along with my exercise files. It was a success and the guide I wrote based on the talk was even a bigger success, getting recognition all over the internet (and currently my most viewed article).
I also gave a talk on tech employment at a local university (University of Houston) in front of a group of aspiring designers and programmers. It was quite a thrill and I was happy to answer all of their questions.
Outside of that, I finished writing a new book called WebDeveloper.META that’s supposed to be a great intro book for new developers and a great book to read as a more advanced developer in order to figure out what to do next when you hit that plauteau.
Strangely enough, one of my repos took off this year. A joke one actually called Programmers’ Proverbs. Check it out for a laugh.
But that’s about it.
What about personal stuff?
My personal life is as riddled by accomplishments as my professional one. I’ve been to four vacations this year. My wife and I are expecting a child. And much more.
The most notable event (other than life coming into this world), unfortunately, is the death of an amazing individual, my friend Raphael Caixeta.
Raphael died suddenly earlier this year and shook up my life from ground up. I did an interview with Raphael just last year and to provide you with some background, this guy is responsible for me being a developer in the first place. I have never met such an encouraging fellow.
It was at that point when I decided to take the ads off my website and write the book I mentioned earlier.
I wish he was still here but since he’s not, I’m doing my best to cary on what he started: encouraging young developers to pursue their passions, and helping others.
So what now?
I’m about to start writing an article on my goals for 2015 but before I do that, it’s time to check out my previous articles. If you’re up for it, here’s a list: