52projects

One project every week in 2017 to learn about new stuff

Background

The new year typically brings with it reflection on the past and a renewed sense of goals in which to complete. I am getting too comfortable in my skill set and I think I need a bit of challenge. Inspired by a presentation by Jefferson Lam and 52 technologies, I’ve decided to do a project every week in 2017 to learn about new stuff. It could be frameworks, programming languages, development tools, making use of APIs, or other things. Or, it could be things that I have done in the past that I would like to revisit, for example, C programming in 2017.

A project should result in something, whether it’s a web app, a CLI app, APIs, an editor plug-in, or whatever. It should be big enough that we can learn new interesting stuff through the project and yet it should be small enough that it can be done in one week. A project will be in a separate GitHub repository and the list is kept below.

Wish me luck, hopefully I do not stop in the middle of the year 😀 (update in July 2017).

Week 1 (1 Jan - 7 Jan)

Avocet - A Visualisation Of Collected Enteresting [sic] Things (Avocet) is a single page web app written in Elm that displays various user-defined information in JSON as cards (like a status board). The new stuff that I learn through this project: elm-mdl, elm-decode-pipeline, and better understanding of Elm.

Week 2 (8 Jan - 14 Jan)

Bittern is a command-line interface (CLI) multi user chat system written in Crystal using TCP/IP socket connection. The new stuff that I learn through this project: the Crystal programming language.

Week 3 (15 Jan - 21 Jan)

Cardinal is a Python Google App Engine app that checks a popular Australian bargain web site and emails deals that match users’ keywords. The new stuff that I learn through this project: Google Cloud Datastore and Google App Engine (revisit).

Week 4 (22 Jan - 28 Jan)

Dipper is a Star Wars Trivia Generator written using React and deployed on Netlify. The new stuff that I learn through this project: React, Netlify, and SWAPI.

Week 5 (29 Jan - 4 Feb)

Eider is a command-line interface (CLI) implementation of Conway’s Game of Life written in Io. The new stuff that I learn through this project: the Io programming language.

Week 6 (5 Feb - 11 Feb)

Finch is a simple CLI calculator using a small ANSI color printing library built using Autoconf, Automake, and Libtool. The new stuff that I learn through this project: Autoconf (revisit), Automake (revisit), and Libtool.

Week 7 (12 Feb - 18 Feb)

Gallinule is a small React app to browse iOS App Store reviews for popular Australian property apps. The new stuff that I learn through this project: Redux and styled-components.

Week 8 (19 Feb - 25 Feb)

Hummingbird is a Trello read-only client for macOS written using Swift 3 and AppKit. The new stuff that I learn through this project: Swift 3, AppKit (revisit), and Trello API (revisit).

Week 9 (26 Feb - 4 Mar)

Ibis is a web site using Kitura that displays tone analysis of iOS App Store reviews using IBM Watson Tone Analyzer and hosted on IBM Bluemix. The new stuff that I learn through this project: Kitura, IBM Bluemix, and IBM Watson Tone Analyzer.

Week 10 (5 Mar - 11 Mar)

Jaeger is a Swift library for the Buildkite API using the Swift Package Manager. The new stuff that I learn through this project: Buildkite API and Swift Package Manager.

Week 11 (12 Mar - 18 Mar)

Kestrel is an idea board web app for sprint retrospective meetings implemented using Ember and Firebase. The new stuff that I learn through this project: Ember (revisit), EmberFire, Ember Paper, and Firebase Web.

Week 12 (19 Mar - 25 Mar)

Linnet is a small Python script for Scroll Bot that displays current time and weather observation data using PyOWM. The new stuff that I learn through this project: Scroll Bot and PyOWM.

Week 13 (26 Mar - 1 Apr)

Magpie is an idea board iOS app for sprint retrospective meetings implemented using Firebase. It is the iOS counterpart of Kestrel. The new stuff that I learn through this project: Firebase iOS, Eureka, and APESuperHUD.

Week 14 (2 Apr - 8 Apr)

Nightingale is a React Native app to display jokes from the Internet Chuck Norris Database. The new stuff that I learn through this project: React Native, React Navigation, Create React Native App, and Expo.

Week 15 (9 Apr - 15 Apr)

Ovenbird is a small React app that shows the map of Melbourne and its suburb boundaries. The new stuff that I learn through this project: Mapbox and react-mapbox-gl.

Week 16 (16 Apr - 22 Apr)

Peregrine is a Google App Engine app that fetches Australian share prices and save them to Google Sheets. The new stuff that I learn through this project: pygsheets and yahoo-finance.

Week 17 (23 Apr - 29 Apr)

Quail is a Serverless app that fetches new properties for sale from Domain and save them to Airtable. The new stuff that I learn through this project: Serverless Framework and Airtable.

Week 18 (30 Apr - 6 May)

Raven is a CLI app written in Elixir to display GitHub issues for a particular project. The new stuff that I learn through this project: the Elixir programming language.

Week 19 (7 May - 13 May)

Starling is a CLI app written in Elixir to search for new properties for sale from Domain. The new stuff that I learn through this project: TableRex.

Week 20 (14 May - 20 May)

Tern is a simple web site implemented using Phoenix that gives a random excuse for a sick leave. The new stuff that I learn through this project: Phoenix.

Week 21 (21 May - 27 May)

Upland is a web site and API using Micro that displays landscape photos from Reddit and deployed on Now. The new stuff that I learn through this project: Micro and Now.

Week 22 (28 May - 3 Jun)

Veery is a simple machine learning model for MNIST using TensorFlow. The new stuff that I learn through this project: TensorFlow.

Week 23 (4 Jun - 10 Jun)

Woodpecker is a simple web site implemented using Vue.js that shows a random joke from Reddit. The new stuff that I learn through this project: Vue.js.

Week 24 (11 Jun - 17 Jun)

Xantus is a simple API.AI agent for Google Home. The new stuff that I learn through this project: API.AI.

Week 25 (18 Jun - 24 Jun)

Yellowthroat is an Electron app to browse predefined Reddit's subreddits. The new stuff that I learn through this project: Electron, Photon, and jQuery (revisit).

Week 26 (25 Jun - 1 Jul)

Zitting is a small AWS Lambda using Gordon that displays top 10 stories from Hacker News. The new stuff that I learn through this project: Gordon and Haxor.

Epilogue

Update in July 2017. Well, I guess I jinxed myself 😀 After 26 projects in 26 weeks, I've stopped doing this due to other higher priority commitments. I had fun and learnt a ton doing this. But it's very hard with limited amount of time available. Maybe next time. At least I managed to get this:

GitHub