Putting the FERN into development

in which I talk about the FERN stack: Firebase — Express.js — React — Node.js

(On stacks… webbish types are fond of referring to how they create web things using an acronym of the technologies involved; so a Linux machine running the Apache webserver, using a MySQL database running the PHP language would be a LAMP stack)

Hey everybody, immediately bin all your MEAN, LEMP, LAMP, WAMP and WIMP stacks!

Give me an F….


Just a database, right? And some other stuff that Google have rebranded like their cloud storage and messaging services?


Firebase’s services, excellent on their own, get all zen-like when you hook them together. Here’s the Firebase goodies I’m currently using:

Firebase Database — not so much a database, more a Cthulhic data entity. Make a change in one place and every connected mobile and desktop app instantly updates with that change. They call it Server-Side Events, I call it Voodoo.

Firebase Authentication — I don’t have to store passwords and never have to write another forgotten password email generator and validator? I get Google, Facebook, Twitter and SMS logins with, like, no code? Yes please.

Firebase Storage — A file bucket that, like Firebase Database, is connected to Firebase Authentication access rules. That’s cool: access rules baked into the structure cool. No need to validate who sees what, I could hand you the URL of my holiday photos and you’ll get ACCESS DENIED and no speedos.

Firebase Notifications — okay, this is just Google Cloud Messaging rebranded to Firebase, but that was already pretty great.

Firebase Analytics — I don’t know about you, but half of my Google Analytics page views are “Get Viagra” or “Vote Trump”. I’ll take events that are non political and just fine with their virility, thankyouverymuch.

And that’s just the bits of Firebase that I’m currently using. There’s Hosting and Functions and Dynamic Links and Test Labs and Invites and, and, and…

tl;dr get Firebase in your life

(ps Google, if you add emailing and SMS to Firebase, I will ditch Amazon’s SES and SNS in a heartbeat)

give me an E….


What a nice small Node.js webserver Express is. I’m sure someone somewhere wanted to call it XPRSS, so it gets extra points from me from having resisted that.

It’s all so tiny weenie I keep expecting to have to write more code given what I need to do, only to find I don’t have to. I look at half a screen of nothing and it does server side rendering, handles file uploads and static content, when I’ve written longer programs in LOGO that draw a badly drawn house with a turtle.

(Yes, don’t expose an Express webserver to the world because of horrendous security exploits, reverse-proxy Express sites via Nginx like the cool kids do)

give me an R…


I’ve been Object Orienting for a lifetime, yet 1,000 hours into React development, I have used inheritance precisely once; and I’m not sure I should have used it then. Where has compositional development been all my career? (Answer: with bearded functional programmers who are now in fashion and smug about it).

Add in the joyousness that is Redux, eye watering performance and a community locked into an arms race of who can make the most beautiful and performant UI and it’s game over for jQuery.

Do Firebase and React play nice together? You bet they do

(If you’re now using Vue.js instead, can you wait a bit before telling me, as I’ve already relearned all of development once this year.)

Give me an N….


Underneath all that is the what-the-hell-version-am-I-running-of-what-now Javascript runner Node.js.

“But why would you want to run horrible typeless Javascript on your server?” someone cried to present me with a strawman argument. Because isomorphism, that’s why. And with ES6 and Flow, it’s actually a tiny bit better than PHP and Docblocks, so there.

Node.js’ package manager npm is the biggest software library on earth. Like Stack Overflow, if it disappeared, developers would be forced to retreat to the trees and start working things out for themselves. Why would that be bad? Because good programmers are lazy as well as smart and know not to bother doing something that someone else has already done to a perfectly acceptable standard.

And what have you got…


My original name for this post was going to be “FERL stack developer”. which is a better pun, but the Node.js bit is more important. Sorry Linux.

Actually given everything above, maybe the proper name for the stack should be FERNNL (Firebase-Express.js-React-Node.js-Nginx-Linux).

Is it too late to rechristen this the “FERNNL kernel”….?


Yes it is.