What I Learned in 2015

Dec 30, 2015

2015 -> 2016

I learned a lot about web development and programming in general in 2015. It wasn’t just new things I learned, I also worked to expand my knowledge about things I already had a basic idea of. I diversified my skillsets this year by taking on and learning some of the basics of languages like Elm, Java, and C, while also furthering my knowledge in JavaScript, Ruby, HTML and CSS. Let’s talk about some of the languages I’ve dealt with this year.


For a brief period this year, I got interested in Android development. No applications came from it, but I ended up with a better understanding of static typed languages. Before Java, I only used dynamically typed languages like Python, Ruby, and JavaScript. I would consider that the main take-away for me. I only learned the basics of Java, but didn’t go much further than that.


C was interesting, because I didn’t really have any interest in learning it before I started. I wanted to go through Harvard’s CS50 (Computer Science) edX course and C was the language of choice after Scratch. One of the main problems I struggled with in C was the fact that there is no real concept of a string. It really made development difficult, but that challenge was something I enjoyed. Also, it was nice to be programming in a language that was so close to the machine. My usual languages have been abstracted pretty far away from the machine, but I felt quite powerful as I programmed in C. Similar to my Java experience, I didn’t move too far past the basics of C.


Elm was the most recent language I dabbled in. I was listening to the JS Jabber podcast (can’t remember which episode number) and they had an episode about Elm. The thing that peaked my interest was how they kept comparing Elm and React.js. I’ve never written anything in React, but it’s something I’ve been interested in for a while. After the podcast I started researching Elm and it intrigued me. A static typed, functional language isn’t something I had ever dealt with. To get a good grasp of the language, I went through The Pragmatic Studio’s course. It was extremely informative and I learned a lot. Elm is still something I’m interested in, but I don’t spend much time using it, because I love JavaScript and I can’t see myself replacing it for Elm. Who knows what will happen in the future though. I really like Elm.


Ruby is a language that I already had a little experience in. At the beginning of the year I created multiple Ruby web applications and small pieces of software. I really love Ruby and how its syntax is almost like writing normal sentences. I learned a lot about the actual language near the beginning of the year, but sadly I think I’ve lost some of that intermediate knowledge due to lack of practice. Don’t get me wrong; I can definitely see myself jumping back into the core Ruby language, but for now most of my Ruby usage is directed at the Ruby on Rails framework.


Python is another one of those languages that I learned a lot in, but that knowledge has probably faded away. I also really like Python, but it just wasn’t what I was looking for. Django and Flask are great frameworks, I’m just not interested in them. This year I only really used Python to make small terminal based applications and I dabbled with GUI creation with TKinter. I liked building GUIs and I’ll definitely be back to Python for that in the future.


I consider myself a JavaScript developer. JavaScript is my favorite programming language, hands down. I mostly use it on the front-end of web development, but I do have experience running it on the back end. I’ve written multiple applications using it and I’ve recently spent a good amount of time answering questions about it on Stack Overflow. The amount of things I learned about JavaScript is kind of surreal. I’ve learned how to build JS libraries (Easify.js), how to write modular code (PubSub, revealing module, etc.), how to effectively use first-class functions, and the list goes on. I’ve dedicated most of my programming time to JavaScript this year and I don’t plan to let up next year.


As you can see I’ve played around with a few languages, now I’ll start talking about some of the frameworks and libraries I’ve dealt with. Besides Ruby on Rails, this will only be about JavaScript.

Ruby on Rails

Rails is a framework that I’ve used a lot this year. My personal website is written in Rails, along with some of my other personal projects and projects that I worked on with some friends of mine. I’ve gotten fairly comfortable building web applications in Rails and I even found myself contributing a little code to Faker; a Rails gem for inputting large amounts of fake data in an application while in development. One of the main reasons I got so comfortable with Rails was Mackenzie Child’s YouTube channel. That helped me immensely. I’ve also learned a lot from when I add new features to my web apps. Having to make the new code work well with the existing code has really helped me understand the process of maintaining code and picking to right moments to push to production.


I really like Node.js, because it allows me to write JavaScript as my server code. No need to deal with two separate languages when one language can cover everything. Admittedly, I’m not as comfortable with Node.js as I’d like to be, but I can put together a small web application that works well. When using Node.js, I usually write my web apps using the Express.js framework. I still think I need to get a better understanding of Node.js and that’s something I’ll definitely be working on in 2016.


I’ve learned quite a bit about Angular.js. I can put together a basic Angular application fairly easily. Mid-year I started dedicating large chunks of time to learning Angular, but then I kind of let that fall off. This mostly had to do with the fact that Angular 2 will be coming out and it is extremely different from the original Angular. For a while I thought it would be a waste of time to continue learning it so I stopped. Recently, I picked Angular back up and I’ve started to get comfortable with it again. There’s still a lot to learn, but I’m making progress. I’m actually starting to implement Angular into my website for Easify.js.  


To be clear, I do a lot of my JavaScripting in vanilla JS. Since everything I currently do is more of a learning thing, I feel like it’s good for me to make sure I have a strong handle on JavaScript. But, I do also enjoy using jQuery. This is a library I’m quite comfortable with. And even if I do forget some obscure way of doing something, I can quickly and easily look it up in the documentation. I actually surprised myself just today using jQuery. On my website for Easify.js I want to implement a documentation page (something similar to underscore.org). I did some Angular stuff to make some long lists of the method names for my table of contents. Then I realized I wanted them to be collapsible so a user could press the little arrow next to “String Methods” and all the string methods would reveal themselves. I had never created anything like this just from a lack of that need. What surprised me was how quickly and easily I did it. I was so proud I kept expanding and collapsing the different areas in the table of contents (don’t judge me).


This year, I learned a lot more than what I’ve written about. I learned a lot about GitHub, CSS, OOP, MySQL, NoSQL, etc. I also added to my soft skills by reading books like Start with Why (x2), Make it Stick, How to Win Friends & Influence People, The Power of Habit, The 7 Habits of Highly Effective People, and tons more. This was a great year of learning for me and I plan on 2016 being even better.