Every year since 1988 I’ve been saying “there’s never been a better time to be a software developer” and I expect to continue saying it for a long while yet. But it seems that the last year has been especially significant. Several incredibly exciting technologies have emerged recently that are changing everything.
In our 5-year history, Red Badger has never seen a year like this one. The open source movement is truly blossoming and it’s benefits are rippling through the software industry at lightning speed. We recently got together to list out all the tech we love, but there are a few notable technologies that I want to highlight.
The first is Facebook’s React.js. I think this is the most important development in web tech in the last 10 years. Less than 18 months old, it’s managed to turn the web developer’s world upside down. The traditional MVC approach with data binding that we’d been thinking was the best way to build web apps for a decade or more turns out to be be inferior to the more functional approach that React takes.
React is so simple. Simply because it allows the UI to be a pure function of application state. This makes applications much simpler and a lot easier to reason about.
UI = f(state)
There you go. Now you know React! That’s it. Wow. Who’d have thought it could be that simple. When the state changes we simply apply the function again and bingo, we have new UI. That’s at the heart of a new revolution in UI engineering.
It turns out that if we build slightly different functions we can create native UI for mobile devices (React Native) , for TVs (e.g. Netflix), for HTML5 Canvas (e.g. Flipboard), for any rendering surface. And the same team can build all of these. As Facebook says: “learn once, write everywhere”.
How to manage the state is a separate problem. And Red Badger has recently open sourced a new application framework called Arch, which makes that bit easy too, whilst leveraging all the incredible power of React.
React popularity is soaring and it’s rapidly establishing itself as, hands-down, the best way to build user interfaces. As an example of its popularity, Red Badger started the London React Meetup in June 2014. After a few months we outgrew our office and now host the meetup at Facebook’s London office. Already, the meetup has nearly 1100 members and the 250 seats each month get snapped up in 30 minutes. On May 20th we're holding a special meetup at Cargo as part of the Digital Shoreditch festival. Come along. If you can get a ticket.
Big thanks to Facebook for bringing React to the world.
The second technology I want to mention is Linux Containers (LXC). Made popular by Docker.
When you develop an application these days, you really need a Macbook Pro with unfettered access to the Internet and all its open source goodness. But you often have to deliver the application into secure locked-down operational networks. Before containers, you had to work inside these restrictive environments and it’s so difficult it’s enough to drive you insane. Now you can build your application in containers in the open environment of the Web and then ship those same containers to your test environments, then to your staging and production environments. The containers hold everything that your application needs, so they can run anywhere. And I mean anywhere: Circle CI and other test and Continuous Integration environments, public cloud infrastructure like AWS and Azure, and private cloud infrastructure like IBM Bluemix and Red Hat’s OpenShift.
Containers are the enabling technology for true Continuous Delivery pipelines. You can automatically push (and scale) your application into any environment you can think of, regardless of how locked down and secure it claims to be.
The developer’s handcuffs are removed and the business gets continuous improvement with very little maintenance overhead. And because the application is running in the exact environment in which it was created to run (and tested in), it’s more stable and secure. Everyone wins.
ES6 and Babel
We’re now using ES6 on many of our projects and tooling support is already very mature. For example, the amazing ESLint has support for ES6, JSX and React. As does Atom and Sublime Text. It’s always a good sign when the tools converge on a technology.
And other cool things...
There are a ton of other new and exciting technologies that we’ve been using at Red Badger over the last 12 months. We listed them all in our tech round table. Go and have a look and see where our love goes right now.