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.
- 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
Courtesy of BabelJS
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.
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.
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.
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.
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: