2019 Tech Radar
July 4, 2019
The 2019 Tech Radar is a list of web technologies that I've become interested in this year. While I am very well entrenched and comfortable in the Laravel-Vue ecosystem, I can't help but peek at what the neighbor is up to, or what promising new things are around the block.
Basically these fall somewhere between "man, if I just had an extra 8 hours a day, I'd totally give this a whirl" and "I wouldn't be opposed to working with this technology", and even "there's a good chance I might switch to / adopt this at some point in the future".
So let's get started.
Because I recognize some of the speed and bundle size advantages of Svelte. Going through their examples and interactive tutorial, it seems easy enough to learn, on par with Vue.JS. At version 3.x at the time of this writing, it is also mature enough that it can be strongly considered for production.
The Rethinking Reactivity video by Rich Harris, Svelte's creator, was kinda of an eye-opener and really brought it front-and-center for me.
While I'm not about to abandon VueJS for Svelte, it's worth keeping close watch on it, and I'm very interested in the direction it's going to evolve. I am itching for a spare moment between my day job and all my side projects to give it a spin.
Since I haven't dug into it a whole lot, I don't want to speak out of turn but my understanding is that the tooling around Svelte is not yet mature enough or at the level of Vue or React's ecosystems. For example, a lot of folks seem to have had issues trying to use SASS with Svelte.
Svelte is, in 2019, one of my top contenders for new technologies that I find very promising. Time will tell if that is the case.
GraphQL is a language for querying your API.
While it has been around for a few years, GraphQL was treated as more experimental than anything, though it has been picking up steam, and deservedly.
A while back I worked on a project that made use of a GraphQL API and it took a while to wrap my brain around it. Only much later did I realize the benefits. What I like best about it is that it greatly simplifies your API endpoints and allows complex querying directly from the front-end.
If I needed to build a Single Page App (SPA) driven by an API that I control, I will almost certainly create a GraphQL API server.
Web development is hard enough on the desktop. But when we entertain the possibility of building native mobile apps for our product or service, it feels like a lost cause. NativeScript seeks to mitigate a lot of that pain, by making it easy for non-mobile developers to build mobile apps, with the technology they already know.
As a Vue developer, I'm happy that NativeScript officially supports Vue. I skimmed the documentation and it seems pretty thorough. More importantly, there's a sandbox environment that you can use to quickly build a demo app that actually runs on your phone!
Now, building a cross-platform mobile app with NativeScript + Vue is definitely more involved than simply building a Vue web app, but this is a light at the end of the tunnel for those like me who don't have the time/resources/energy to learn how to code for Android and iOS. `` If I needed to build a mobile app, I would very likely use NativeScript as my first choice.
Cypress.io is the new hotness in UI/browser testing.
I'm a big proponent of testing in general so anything that makes this easier is an instant win. There's been a lot of hype around Cypress lately and from what I've been told, it's the new gold standard in front-end testing.
Until recently, Selenium has been the goto end-to-end testing framework, but there are a lot of problems with it and it just doesn't make developer's lives easier. Apart from being slow and cumbersome, it also requires learning a new language/paradigm (Java) - and in many cases dedicated personnel.
Honestly, the only thing that prevents me from using it right away is the fact that the projects I'm working on are in continuous flux, meaning the UI and behavior change often, meaning I just don't have the bandwidth to create end-to-end tests in addition of the back-end tests I usually write.
But then again, it all depends what kind of projects you're working on. For quick prototyping and MVP-style products, writing too many tests can be detrimental. Once the product becomes more established, that could be a good time to employ a tool such as Cypress.
Ruby on Rails is a modern application framework for web apps. I've never used Ruby and the syntax looks odd compared to PHP. I've included it not because it's a new or emerging technology, but because recently I've become more interested in it.
My love for Laravel is limitless for the time being, yet Rails feels very much like a spiritual predecessor. I've listened to DHH, the creator of Rails, many times on various subjects and everything he's said so far resonates with me, including his philosophy behind Rails.
Taylor Otwell, Laravel's creator, has imbued his framework with a lot of the same underlying principles as Rails: ease of use, getting things done, developer happiness, beautiful API, great documentation, and on and on. It leads me to believe that programming in Rails would be just as satisfying as Laravel.
Finally, as a petty reason, DHH is a co-founder at my favorite tech company Basecamp, whereby the product is naturally built in Rails. In a parallel universe I can see myself working there.
SwiftUI is the latest application framework revealed by Apple this year.
While I'm not an iPhone user (I do use a Mac for coding and I wouldn't have anything else), SwiftUI brings a lot of good vibes and seems to have developers very excited. It claims to offer a unified way to built apps for the entire Apple ecosystem which is always a good thing in my book. Yet more proof that modern tools continue to get better and make developers' lives easier as we go along.
If I had the need or urge to code anything exclusive for Apple's ecosystem, SwiftUI would be my first choice.
Gatsby is a static site generator based on React.
I'm a big fan of static site generators. Omigo.sh itself is a statically-hosted site. Gatsby is fairly new but has started to become more popular and, if I'm not mistaken, is the first choice for anyone wishing to build a static site with React. I've never touched React but it is the most popular front-end framework at the moment, and I am at least marginally interested in learning it.
Gatsby uses some interesting technologies, such as intelligent prefetching of resources and GraphQL. It's unlikely I'll use it anytime soon but I'm definitely keeping an eye on it.
.NET Core is an open-source (gasp!) framework from Microsoft.
I never saw myself as being interested in Microsoft's stack, simply because I love open-source so much. Over the last few years, however, Microsoft has surprised everyone by embracing open-source with (dare I say?) a vengeance.
Between VSCode, Github, and now .NET Core (as well as others that I don't currently recall), Microsoft is going full steam ahead on open-source technologies. That's very commendable and I hope they keep it up.
I recently heard about .NET Core from an old friend who mentioned he's using it at work. When he told me it was open-source, it immediately piqued my interest.
.NET Core is pretty far down my list of technologies but, based on everything I know, I wouldn't be opposed to learning it if the opportunity presented itself.