Important technology for 2016
I wanted to write a bit about the technology I have gravitated towards over the past couple of years and to talk a little bit about their strengths and weaknesses as well as how I have used the technology in the last few projects I have been involved in. Every project has slightly different goals and when I am commissioned to build a project I will almost always choose technology based on what fits the problem space and requirements whilst leveraging my skillset and experience. If I can't find a match that works for the customer I don't take the project.
These are the technologies I currently prefer working with, so lets go into details as to why.
Node JS
Serverside Runtime
Use of Javascript across the stack has many, many benefits to website developers and web application teams.
- Developers need only learn a single language
- Isomorphic/Universal app methodologies require tight coordination between client and serverside development. Ideally you want people to be able to bridge those gaps.
- Reuse of packages clientside and serverside
- Extremely active and changing technology ecosystem and a great community
Some folks hate JavaScript's quirks but personally I find it an efficient language to code in despite the gotcha's it is famous for. Fullstack JavaScript is here to stay, ES2016+ makes for a great programming experience and it is fantastic that we can use such a versatile language in modern web development.
ECMAScript 2016+
Courtesy of BabelJS
With the advent of ES2015+ JavaScript became one of the most feature rich modern programming languages around. The JavaScript community was yearning for a way to adopt modern programming ideas and paradigms so people were experimenting with CoffeeScript and DART compilation but finally we in the JavaScript community have a standard path to the future of JavaScript and this is a huge deal.
With new language features programmers can write expressive concise code that explains to the reader what the code is doing. Also by following standards we can be sure our code will not age as readily as older more verbose code or boutique side-steps like coffee script. This is important factor in finding developers that are willing to maintain our software for us.
One drawback is that different vendors release standards features at different rates and this coupled with users all running different browser and OS versions and the need for transpilation, or compilation to a language of similar abstraction, is understandable.
Babel has grown to be the industry standard for managing this process which is why I use it.
React
Functional view rendering
React is big news. Most large companies are leveraging the paradigm shift towards Functional Reactive Programming that React provides these days. React is great especially when state is shifted off to some kind of immutable state management framework such as Redux or even RxJS. With React it is faster for programmers to reason about how their interfaces work than without it, which saves money for business.
I prefer custom commercial projects that involve React as I think this way of thinking about interfaces makes sense in the vast majority of cases. There are certain performance sensitive cases where a different approach is best but for the most part React is an important tool for use in todays modern Web Applications.
Keystone.js
CMS for Node.js
I have built several projects in Keystone and so far Keystone has performed fantastically.
Keystone is an app framework built on Express and Mongoose and thus has with it the considerations you would have for using a NoSQL backend system. Most of my clients need a site up to power an MVP type app with a simple admin interface and Keystone fits the bill most of the time. Keystone is currently being rewritten using React to render it's page controls so once there is an API to render custom controls Keystone will become an incredibly versatile system and I am excited about it.
Example: http://earthbybike.com
Ghost.js
Blogging for the 21st century
Ghost was built by John O'Nolan, the former deputy lead for Wordpress' UI team, after he became more and more frustrated that Wordpress' bloated backend is no longer a great fit for a pure blogging engine.
Ghost provides an amazing writing experience whilst posts are written in markdown which allows for users to focus on content whilst resolving rendering and copy/paste issues. It is customisable and configurable enough to handle all the needs of a basic content marketing blog. And it is Node so set up, hosting and maintenance is a no brainer. If a client needs a blog in a hurry I usually recommend ghost.
Example: http://rudiyardley.com
Shopify
Buy now buttons
Shopify for e-commerce has turned into an industry behemoth changing the industry with its offering. There are still usecases where the expensive hosting offered by shopify is not worth it so I have found success leveraging shopify's powerful functionality whilst cheaply hosting a small website by using the Buy Button API for shopify. Here is an example: http://pesado.com.au
Shopify Buy Buttons have a limited usecase but if you can fit it to your needs it ends up being a very cost effective build when compared to building out of a larger e-commerce offering.
Here I have written a bit about some of my preferred tools and technology I am using during 2016. There are a couple I will write about more in the future including the following:
- Redux - http://redux.js.org
- RxJS - http://reactivex.io
- Sequelize - http://sequelizejs.com
- Webpack - https://webpack.github.io
- Browserify - http://browserify.org