I have taken a challenge to learn a new technology every week in 2016. The goal is to learn a new technology, build a simple application using it, and blog about it.
I have decided to discontinue this series after writing 42 blogs. No more blogs will be published in this series. Thanks for your support.
Please contribute if you see an error or something that could be better! Raise an issue or send me a pull request to improve. Contributions of all kinds, including corrections, additions, improvements, and translations, are welcome!
If you would like to write a guest post for 52-technologies-in-2016 series then send a PR with a blog post.
Below is the list of technologies covered in this series:
Week 1: January 03, 2016 Finatra - Build Beautiful REST API The Twitter Way. In this tutorial, we will learn how to write Scala REST APIs using Twitter's open source framework Finatra. We will build an application from scratch covering all the steps required to build the application.
Week 2: January 10, 2016 SBT: The Missing Tutorial. In this tutorial, we will learn sbt build tool. sbt is a general purpose build tool written in Scala. It is best suited for Scala application development.
Week 3: January 17, 2016 Sentiment Analysis in Scala with Stanford CoreNLP. In this tutorial, we will learn how to use Stanford CoreNLP library for performing sentiment analysis of unstructured text in Scala.
Week 4: January 24, 2016 Slick: Functional Relational Mapping for Mere Mortals Part 1. In this tutorial, we will learn how to get started with Slick so that we can interact with relational databases in our Scala applications. Slick is a powerful Scala library to work with relational databases.
Week 5: January 31, 2016 Slick: Functional Relational Mapping for Mere Mortals Part 2: Querying Data. In this tutorial, we will learn how to perform
select queries with Slick. Slick allows you to work with database tables in the same way as you work with Scala collections. This means that you can use methods like
sort, etc. to process data in your table.
Week 6: February 07, 2016 Building A Lightweight REST API Client with Scala and OkHttp. In this tutorial, we will learn how to build REST API client for Medium's REST API using Scala and OkHttp. OkHttp is an open source Java HTTP client library focussed on efficiency.
Week 7: February 14, 2016 Hugo: A Modern WebSite Engine That Just Works. In this tutorial, we will learn how to build a static website using Hugo. Hugo is a static site generator written in Go programming language.
Week 8: February 21, 2016 CoreOS for Application Developers. The goal of this tutorial is to help application developers understand why they should care about CoreOS and show them how to work with CoreOS cluster running on top of Amazon EC2. CoreOS is an Open source Linux distribution built to run and manage highly scalable and fault tolerant systems.
Week 9: February 28, 2016 Realtime People Counter with Google's Cloud Vision API and RxJava. Google recently released Cloud Vision API that enables developers to incorporate image recognition in their applications. Image Recognition allow developers to build applications that can understand content of images. In this tutorial, we will learn how to build a realtime people counter.
Week 10: March 06, 2016 Gatling: The Ultimate Load Testing Tools for Programmers. Gatling is a high performance open source load testing tool built on top of Scala, Netty, and Akka. It is a next generation, modern load testing tools very different from existing tools like Apache JMeter. In this tutorial, you will learn how to write load tests using Gatling.
Week 11: March 13, 2016 Tweet Deduplication: This week I decided to write a tweet deduplication library. The library will give you a stream of deduplicated tweets.
Week 11: March 13, 2016 TextBlob. TextBlob is an open source text processing library written in Python. It can be used to perform various natural language processing tasks such as part-of-speech tagging, noun-phrase extraction, sentiment analysis, text translation, and many more.
Week 12: March 20, 2016 Play Framework. Play framework is a MVC style web application framework for JVM. It provides API for both Java and Scala programming languages. I am maintaining this tutorial in a separate GitHub repository.
Week 13: March 27, 2016 ArangoDB: Polyglot Persistence Without Cost. ArangoDB is an open source NoSQL database that provides flexible data model. You can use ArangoDB to model data using combination of document, graph, and key value data modeling styles.
Week 15: April 10, 2016 Airline Bot Platform with Huginn. This week I decided to build a bot platform using Huginn that can perform a lot of tasks for which we normally use mobile apps. Our goal was to show them that they should think beyond mobile apps and look into the world of bots as bots can be less intrusive, more secure, and does not require installation. Apps are dead, long live bots.
Week 16: April 17, 2016 Building Your "Read It Later" App using Python and Newspaper Library.In this tutorial, you will learn how we can use a Python library newspaper to perform article extraction and build a simple "Read It Later" application.
Week 20: May 15, 2016 5 open source projects that will make working with JSON awesome and fun. This week I will share my 5 favorite open source projects that makes working with JSON easy and fun. I use them on regular basis and find them very useful whenever I am working with JSON.
Week 22: May 29, 2016 Making Sense of Regular Expressions. In this tutorial, I will walk you through a series of examples that will help you learn about regular expressions. I will end this tutorial by covering a library VerbalExpressions that you can use to programmatically build regular expressions.
Week 23: June 5, 2016 Building An Android Application Part 1. In this tutorial, we will develop an Android app that will be used to report and track missing kids. Today, we will only cover photo capturing capability of the application. Like any camera application, this application will enable users to capture photos, save them to an album, and finally upload them to the backend servers.
Week 26: June 26, 2016 Building An Android Application Part 2. In this blog, we will extend the Android application we built in week 23. We will use an Android library Glide to handle the image preview. We will also add sharing functionality using Android's inbuilt sharing support using ShareActionProvider.
Week 27: July 03, 2016 Learn GoLang For Great Good -- Part 1. In this blog, we will learn Go programming language by writing a number of small programs. Go is an object oriented programming language with memory management builtin.
Week 28: July 10, 2016 Build mobile apps using Ionic Framework. In this blog, we will build a hybrid mobile app using Ionic and Cordova. The complete application will have a server side which will send JSON data, consumed by the application. The mobile app is written in ECMAScript.
Week 29: July 15, 2016 Go Language - GitHub System Status API & Slack Notifications. In this blog, we are going to investigate a few more features of the language and combine that into a real life application where we can monitor the status of the GitHub System via its Status API and report its current status directly into a Slack Team page.
Week 29: July 17, 2016 Learn GoLang For Great Good Part 2: Unit Testing in Go. This week we will take our Go knowledge to the next level by learning how to perform unit testing in Go. Unit testing has become an essential skill set for every programmer.
Week 30: July 24, 2016 Dropwizard: Your Java Library For Building Microservices This blog covers how to build Java REST backend using Dropwizard library.
Week 31: July 31, 2016 50 Gradle Tips. Over last year or so I have started using Gradle as my primary build tool for JVM based projects. In this document, I will list down tips that I have learnt over last year or so.
Week 32: August 7, 2016 Groovy AST Transformations By Example. This week I learnt about Groovy AST transformations. AST transformations allows you to hook into the Groovy compilation process so that you can customize it to meet your needs. In this blog, you will learn how to write an AST transformation that will add a
toHash method to a class.
toHash method will generate a hash for your object. You will be able to provide hash algorithm of your choice. We will use Java's
java.security.MessageDigest to generate the hash code.
Week 34: August 21, 2016 Automating Your Static Website Social Notifications with AWS Lambda. AWS Lambda is an event-driven, serverless computing platform that executes your code in response to events. It manages the underlying infrastructure scaling it up or down to meet the event rate. You are only charged for the time your code is executed. AWS Lambda currently supports Java, Python, and Node.js language runtimes.
Week 37: September 11, 2016 Building "Bootiful" Scala Web Applications with Spring Boot. In this post, I will quickly show you how to use Spring Boot with Scala by converting Spring Boot's official Building a RESTful Web Service guide to Scala.
Week 39: October 07, 2016 Docker for Java Developers Part 1. This week I had to give a talk on Docker ecosystem so I spent a lot of my after office hours preparing for the talk. Docker is a container technology that allows us to package an application and its dependencies together in a filesystem so that they can be deployed together on any server. This helps us achieve package once deploy anywhere. So, in the next few posts of this series, we will learn how Java developers can get started with Docker.
Week 40: October 19, 2016 Using Docker Containers As Cron Jobs: This week I was working on a problem that required cron jobs. The use case was that after user registers with the application, we will create a cron job that will track his/her social activities. We will have one container per user. I wanted to keep cron jobs to work in a different process from the main application so that different concerns of the application don't intermingle. In my view, containers provide the right abstraction to solve this use case.
Week 41: December 04, 2016 Understanding Akka Dispatcher: Akka is a toolkit and runtime for building highly concurrent, distributed and resilient message driven systems. This post assumes you already know Akka. Actor needs a dispatcher to perform its task. A dispatcher relies on executor to provide thread. There are two types of executors a dispatcher can have: 1)
thread-pool-executor. In this post, we will understand how you can configure
thread-pool-executor to meet your needs.
Week 42: December 08, 2016 Using Docker Compose with wait-for-it: Today, we will learn about Docker Compose, a tool for defining and running multi-container Docker applications. This post will also cover how to use Docker Compose with wait-for-it.
wait-for-it is a simple bash utility to test and wait for the availability of TCP host and port.
Week 43: December 26, 2016 GraphQL - building a pokedex in React with GraphQL: GraphQL, a query language that is starting to get more and more attention. Facebook, who internally used GraphQL since 2012 and released a first specification and reference implementation of GraphQL in 2015 announced GraphQL to be [production ready] in September 2016. What followed is a trend of more and more companies starting to use GraphQL, such as GitHub, Coursera and Shopify.