Head Dive into a “new” world
Historical Rant
I have been programming for a long time now. We used to write programs. In DOS. Then Windows called for “cooler” programs, with user interface. We had user interface in DOS too. Anyone remembers Lotus 123? Anyways…
I am not complaining about days bygone, but embracing the future. Who cares that I wrote my first trading application that submitted orders via AJAX before AJAX became an acronym… or that I saw PowerBuilder grow old and die in favor of VB 6, Java and .NET based systems. So we learn, adapt and move on. Like now.
Ruby on Rails seemed brilliantly refreshing after CGI, JSP and ASP. So did Microsoft’s MVC framework over VB-like ASP.NET. Oh, the “big folks” ventured into application server space of Web Sphere, Web Logic, etc., but if you knew Core Java and some financial TCP stack like FIX, well paying jobs were always to be had.
Then, somehow, the “small folk” became big. Really big. Google, Facebook, Amazon… inspiring, really. The UI are now browsers and phones, new development technologies are popping out a dozen-a-minute… Bless you, GitHub!
Just as in the year 2000, when available jobs became not exactly scarce, but harder to land by programmers without passion for the trade, today it is too easy to slam your MacBooks’s screen down in frustration, grab hold of your hair, scream, and go see what’s on — I was going to say TEVO, but probably Roku, Netflix or Amazon Instant Video… Yet, those of us who still have the spirit and some breath left are paddling.
Contemporary Mess (with digression)
So Node.JS, SPAs, JS frameworks zoo, MongoDB (or who-knows-what-else), Cloud instances, Vagrant, Docker. I still remember how cool it was to get a Slackware terminal on your old desktop, now Linux is taken for granted, thanks to the likes of Ubuntu. Anyone recalls Suse or RedHat?
So I still love RoR. The feeling is purely emotional. No other technology has ever had such a hold on me. Even today it is a decent choice for some forms of rapid prototyping, but maybe better suited for APIs, as the Rails community has realized…
My other love is Java. I am deeply attached to C# too, but it has never overshadowed Java’s beauty. It is sentimental. So anything that reminds me of Java, will always be fully embraced, adopted and mastered by me. Like ES6 and React.
What the (near) Future Holds
React just made sense, the moment I met it. Coming out of a formidable source (Facebook) it had a clear future, but also an unprecedented beauty. Well, not exactly unprecedented… I still have my old library of self-made Java UI components that could be composed into cool UIs with minimal bootstrapping, but at least React rings some familiar chords.
Now, I was never a very focused developer. I mean, how can you develop the server but not the client… or the middleware for the server. What if someone else messes things up in the middle and then you are stuck with a failed project? Of course I’m jesting. Large enough projects need all layers developed separately, but I’ve never had a clear preference or limited my skills to one area. So now, I guess, I would be called a Full Stack developer. At least it sounds cool.
I am currently working on a (by now fairly large) Rails application and wanted to integrate React into it. I did, but it has been a pain. Fantastic work of Justin Gordon at ShakaCode has made it reasonable for me to get things moving. That was just a walk on the shore.
The ocean kept calling. As I got into an after-hours project with Express, EJS/React and Mongo stack, I realized I almost missed the wave. Well, not too badly, as it now takes me about a day or two to learn the new stack well enough to be an advanced level user of it. After all, I’m pretty familiar with most the underlying technologies and architectural ideas. It is nothing like having to learn Scala, Akka and Mongo in 3 weeks working on a new project at a progressive group in a bank… EJS after RoR was a breeze, Node I already knew enough about, and Mongo’s behind the belt, more or less.
Overcoming Logistics — What’s Next?
When I was at yet another bank, working in a Java shop with tight restrictions on the technology used, I found that a Rails app can be build with JRuby and package into a fine working WAR file for the Web Sphere. Off I went writing simple tools for internal use in our department. And now, how am I to deal with a large existing application, which I alone am actively developing, to start implementing the new tech stack? Honestly, I was trying. React on Rails was a great start, but the app is changing too vigorously right now for me to maintain two versions of codebase while learning the new technology. There are some complexities in “hosting” React components in an existing site too with jQuery and CSS and all.
Instead, I opted to rewrite a small existing site that is (unnecessarily so) on Rails using a new stack. But which one? I need not only an easy way to build apps, but integrate user registration and management. Passport is great, but I don’t feel like implementing email sign up again. So I come across Arunoda Susiripala’s work on Meteor and get REALLY excited, go through all the tutorials, and find out — he’s done with Meteor. Still, I’m sold, so I follow Arunoda’s move to Zeit — and… OMG… it’s Next.js!!!
“Next”
I have to finish up, or I’ll stop publishing. Just a final teaser till next time. I’ve fallen in love… again… with NEXT (great training here: https://learnnextjs.com/.) In fact, I’m going to keep a close eye on both Facebook and Zeit for their developments. My immediate plan is to re-implement some of the smaller sites in some combination of Express and Next.js with React on the front and Apollo as middleware for GraphQL, where needed. I want to deploy these apps into Docker containers on AWS (probably will use my current EC2 micro instance for that as long as possible), and keep MySQL for the DB layer. I am also likely to start adding microservices (like SSO service) with Zeit’s micro and take it from there.
Stay Tuned
I am hoping to use this place to keep track of my research and progress in navigating the ever-changing technology landscape, being close to the top of my game, and help others in a similar peril. More importantly, I’d like to influence people towards my preferred technology so it becomes more prolific. I only ever settle for the highest standards, so I won’t mentioned half-baked buggy tools and libraries or follow them. Keep reading, and happy swimming.

