After starting in my current role, I quickly found myself quite busy. The last 10 months have been an incredible period of growth as a developer for me. To give you an idea, here is a list of the frameworks and technologies I have had the pleasure to work with and learn.
- D3.js – D3 is an amazing library for managing and creating html and svg visualizations that are data-driven. The API is extremely deep with a steep learning curve. I found some of the conventions to be different. However, once I was comfortable with how data was bound to elements and the common conventions used to manipulate the DOM using the bound data, I was able to pick up new parts of the API easily. Also, there is an amazing community and an incredible amount of resources available to help you along.
- Crossfilter – I love this little library. It may be small, but it provides an incredible bit of functionality. With Crossfilter, you can create dimensions in your data and apply filters to each dimension. The resulting data in each dimension only includes the data that satisfies the filters applied to the other dimensions. But, that’s not all. Crossfilter allows you to do groups (map/reduce) on each dimension. For example, I could create dimensions for account balances and transaction dates. I could apply a filter for transactions during the last week over $200. Using the map/reduce functionality, I could determine how many accounts were used during that time period, the sum of those account balances, and the average account balance. If I adjust the range of the transaction date filter, Crossfilter will reapply the map/reduce functions on the new resulting set of data. This allows us to do an incredible amount of discovery on the browser without having to do tons of back and forth between the server and browser. Performance, you ask? I have done tests running a million records in the client with 6 dimensions (Disclaimer: this was in Chrome on a computer running an i7 and 16GB of RAM). The lag was about 500ms – 1sec. As you begin to filter out records the lag drops appropriately.
- DC.js – This is the framework that combines D3 and Crossfilter. Using this framework, you can quickly build a dashboard for easy data discovery. Each chart is set with a Crossfilter dimension and associated group (map/reduce). When a user interacts with a chart to apply a filter on the associated dimension, the rest of the charts are updated to show the resulting set of data.
- NLP Compromise – NLP Compromise is a library for natural language processing. With this library, you can do analysis on blocks of text like determining the number of phrases, the structure of a sentence, etc. I used it in a project to build a rudimentary sentiment analysis tool by taking a block of text and breaking it down in to phrases. Then each phrase was broken down in to adjectives, adverbs, and nouns. The adjectives and adverbs were compared with a lexicon for positive and negative sentiment. The resulting sentiment score was then mapped to the noun to determine likes and dislikes of the writer.
- Angular.js – Everyone knows this one. Angular is undoubtably the most popular client side framework for single page applications. The learning curve is a bit steep when compared to other frameworks, but it provides an all-in-one solution. It took me a couple months and I finally consider myself capable with the framework.
- Express – Express is a web application framework for Node.js. I’ve used it in a couple of project to mock APIs while working on UI concepts. This allows me to build my client-side code against mock services while server-side developers work on the real services.
This should give you an idea of my last 10 months.