</2017><2018>

What I learned in 2017 and what I set my sights on this 2018.

John Paul Ada
9 min readJan 17, 2018
2018 is going to be AWESOME!

Last year was a great year to be a developer. So I’m looking back on what I did last year and looking forward to what I’ll be doing this 2018.

2017

Looking back, my theme for 2017 was Open Source, JavaScript and Artificial Intelligence.

Open Source

2017 was the year I seriously got into Open Source. Contributed to a few projects, built my own, and had others contribute to my projects. I slowly realized that Github was also a community and a place to learn — not just a place where I can stash my code. This was also the year when I started posting some projects to Hacker News to showcase the things that I build.

JavaScript

This year, I also strengthened my knowledge on JavaScript. I learned ES6 and used it in all of my JavaScript projects. Most notably, I used JavaScript to build my own programming language, WarayLang — a language with Waray-Waray reserved words, in order to teach programming to my province. I also kept up to date on the latest developments in the JavaScript ecosystem: tooling, libraries, techniques, front-end, back-end, etc. By the end of last year, I instinctively knew how and where to start when building any JavaScript project, or at least I knew where to look for help and what to look for.

Here are some of my favorite JavaScript projects I built last 2017:

Functional Programming

2017 was also my year of functional programming. I started learning immutability and learning how to program in a more declarative manner. I started to use recursion and map-reduce more than iterative control structures. I also started learning about Functors and Monads — even implementing a simple Maybe Monad in JS.

Artificial Intelligence

I started playing around with AI a few years ago with scikit-learn and the Microsoft Machine Learning Studio then I stopped for a year, but data science and AI totally overtook the whole tech space last year. An overwhelming amount of research were conducted and released last year and it was difficult to keep up. So I decided to stop dipping my toes in and just jump into the deep waters of AI headfirst. I started playing around with more scikit-learn, discovered Jupyter Notebooks, then tried TensorFlow and Keras. I tried building classification proof of concept apps like my emotion recognition command-line application. I also learned how to build recommendation systems with matrix factorization, which I used to build my anime recommendation proof of concept site. I also learned to build a simple markov chain and built a lyric generator from it.

GraphQL

They say 2018 is the year of GraphQL but 2017 was already a great year for GraphQL. GraphCool released the GraphCool Framework. I also tried the graphql-yoga which offers more control. I think all the APIs I built for my side projects are all GraphQL APIs. I’m pretty satisfied so I’ll continue building more GraphQL APIs as back-ends in the future.

React and React Native

The React ecosystem just blew up over the past two years, but that didn’t stop me from using it in quite a lot of my projects, especially with building mobile applications. React Native has been my top choice for building cross-platform mobile applications and that probably wouldn’t change soon.

Containers

This year was also the year I learned more about containers, more specifically, Docker and Kubernetes. It’s easier for me to setup and simulate architectures with this. It’s also easier to plug services into existing applications. Last year, I built a couple of Docker-based services like a compression service and a Microsoft Machine Learning Server image.

Website Optimization and Progressive Web Apps

This year I finally started learning about website optimization, which basically boils down to the mantra “measure, optimize, test”. I poured everything that I learned into what I call Project Savitar (The Flash reference), which is a hyper-optimized static web page starter. Along with optimization, I learned about Progressive Web Apps and also applied it to Project Savitar.

Community

I got more involved with the community last year compared to the previous years. I got involved in more tech communities all over the country and especially locally in Region 8, Philippines. I look forward to learning more from the community and sharing what I learn in return.

2018

This year, I’ve set my sights on being T-shaped (expert-generalist), bleeding edge and building more.

Snowflake

For improving as a developer, I choose Medium’s Snowflake tool as a guide. It’s actually an evaluation tool from Medium but I think it’s can be an awesome guide to anyone who wants to improve our career as a developer. Check out my article, Level up your programming career with the Snowflake app by Medium if you want to learn more.

For improving web development, I think it would be okay to follow this developer roadmap, with slight differences in preference:

ElasticSearch

ElasticSearch has always been one of the things I’ve always wanted to learn. I have used it before but I have no idea how to set it up. This year I hope to finally learn it.

Blockchain

Ah Blockchain. The technology behind Bitcoin. Who doesn’t want to learn this? Although, the usefulness of this technology doesn’t end with cryptocurrencies. If you have need for decentralization, you’re going to need this, and fact is, we all need it. With the increasing threat of free internet being take from us, we need the technology to move our resources away from centralization. We need to take back the power that belongs to the people and keep it that way. That’s why we need it, and that’s why we need to learn how to build upon it.

Computer Science

Question: Do we really need to know computer science to enter the IT industry?
Answer: No, you don’t.
BUT! If you want to stay in it, it’s definitely something that you should learn. Graduating a Psychology major, there are a lot of things I don’t know about computer science. Last year I took a bold step and learned how to build a language from scratch. This year, I’m going to venture further into the depths of computer science and learn the things that I might think I never really needed but actually do, like advanced data structures, algorithms, architectures, networking, operating systems, etc. Learning things in computer science somehow opens my mind, allowing me to see things in a different perspective.

State Machines

If you’ve learned some computer science, you might be familiar with state machines. If you’re a web developer, this is definitely something worth taking a look at. If you think about it, almost all applications have states, and if they have states, we can model them as state machines. Web applications are no exception. I’ll be exploring the applications of state machines in web development and see if it works for me.

Web Components

If you’re a fan of component-based web development, you’ll love web components. Web Components allow you to create custom HTML elements which you can import into your HTML files. It’s a web standard, so the way you build would be the same for all platforms and you don’t need external libraries (except if your browser is not yet supported so you need to polyfill). I want to learn to build Web Components from scratch in order to prepare for the day where all the major browsers support it.

Reactive Programming

In this world of real-time, interactivity, and async, we need reactive programming. Reactive Programming allows us to define what to do with data, even if it doesn’t exist yet. It gives us a way to elegantly and declaratively work with data streams, so for us to use it properly, we need to know how to think in streams. That’s one of the things I’m going to try and learn this 2018.

Serverless

Containers took the world by storm as lighter, more manageable alternatives to VMs as compute. Serverless, also known as Functions-as-a-Service (FaaS), takes us into a whole new level of light by serving functions. These things can run as fast as a few milliseconds and that’s just how much you pay. This keeps them very light and very fast and very manageable. It wouldn’t come as a shock that I would be experimenting with it this 2018.

Electronics and Internet of Things

I won a Raspberry Pi as the winner of the last GAPLabs Engineering challenge last year. I also procured an Arduino that year. I’m pretty prepared to start with Internet of Things (IoT) now. But the problem is I only know about the Internet part of IoT. This year I started learning about the Things part, i.e. Electronics. The goal is to be able to be good enough to read and build simple circuits from schematics, then connect them to applications. The RasPi GPIO pins would go to waste after all.

Building iOS apps with Swift

A few years ago I tried out mobile app development on Android. I also wanted to learn how to build applications on iOS. That was realized when I learned React Native, but I still have this that (I think) can only be scratched by learning how to build iOS apps with Swift and XCode. Hence, I’m going to try and learn it this year.

Mixed Reality

Mixed reality technologies like Virtual Reality and Augmented Reality have been around for a while but it’s just recently that people have been building them for the web and with JavaScript. This makes it easier for me as a web developer to start learning mixed reality immediately because I’m already familiar with JavaScript. And who doesn’t want to learn this? It’s so damn cool!

Data Science

Although I’ve learned some Machine Learning and AI last year, it’s less than half of the story. It’s only a fragment of data science. This year, I want to broaden my data science learning by studying data processing, storage, distributed data, and more, so I’ll try to learn the Hadoop and Spark stacks this year. This way I’ll become a little bit closer to building solutions using data.

Bleeding Edge AI

AI has seriously gone a long way and there are already better versions of the architectures we are just getting started to know. This year I’ll try learning reinforcement learning, capsule networks, attention networks, and other things that might appear this 2018. This is probably the most ambitious objective in this list. Oh well.

Revisiting Nature-based Algorithms

Evolutionary Algorithms like variations of the Genetic Algorithm and Nature-based Algorithms have also started getting a comeback by the end of last year. I’ve known some of these algorithms in theory but never tried them out before so I’m excited to actually try and implement them from scratch. I’m sure I’ll be able to use them someday.

Programming Languages

This year I’m going to try to learn a bunch of languages that I find interesting, namely: Haskell, Go, Elixir, R, Julia, F#.

I’m going to learn Haskell in order to get a feel for a hardcore functional programming language. Then I’m going to strengthen my knowledge on Elixir by building web applications with it. Same with Go — I’m going to learn enough to build fast web APIs. After that, I’m going to relearn R to see what makes it one of the top languages for scientific computing. I will then try out Julia and see if it actually is the dream data science language. Lastly, I’ll try out F# to see what Microsoft brings to the table in terms of languages for scientific computing — comparing it to Julia in the process.

More Community Involvement

This year I hope I’m aiming for more community involvement, especially in my region — teaching and sharing what I know. I’m also interested in collaborating on fun projects, since I’ve a got a ton piled up. Thinking up code challenges for the Programmers,Developers group might also be nice. I’m thinking about getting Dev8 more involved since most of the developers are nearing maturity as professionals anyway. I’m also hoping that FreeCodeCamp recognizes FreeCodeCamp Tacloban as a legit group this year, so people who do FreeCodeCamp challenges like myself can code and help each other solve problems together to build something amazing.

That’s it! How about you? What did you learn last year and what are you planning to learn this year? Comment it below! If you liked this post, please hold the clap button below. Thank you!

--

--