Things About Which The Viget Devs Are Excited (May 2020 Edition)
Here's the technology that's captured our interest coming out of our team offsite meeting. (Remember those?)
A couple months back, the Viget dev team convened in central Virginia to reflect on the year and plan for the future. As part of the meeting, we did a little show-and-tell, where everyone got the chance to talk about a technology or resource that's attracted their interest. Needless to say, plans have changed, but what hasn't changed are our collective curiosity about nerdy things and our desire to share them with one another and with you, internet person. So with that said, here's what's got us excited in the world of programming, technology, and web development.
I’m excited about Wagtail CMS for Django projects. It provides a lot of high-value content management features (hello permissions management and photo cropping) so you don’t need to reinvent the wheel, but it lets you customize behavior when you need to. We’ve had two projects lately that need a sophisticated CMS to manage data that we serve through an API, and Wagtail has allowed us to get a solid CMS up and running and focus on the business logic behind the API.
Svelte is a component framework for building user interfaces. It’s purpose is similar to other frameworks like React and Vue, but I’m excited about Svelte because of its differences.
For example, instead of a virtual DOM, Svelte compiles your component to more performant imperative code. And Svelte is reactive, so updating a variable is just that: there’s no need to call
setState or a similar API to trigger updates. Differences like these offer less boilerplate and better performance from the start.
The Svelte community is also working on Sapper, an application framework for server-side rendering similar to Next.js.
I've been researching the Golang MVC framework, Revel. At Viget, we often use Ruby on Rails for any projects that need an MVC framework. I enjoy programming in Go, so I started researching what they have to offer in that department. Revel seemed to be created to be mimic Rails or other MVC frameworks, which made it very easy to pick up for a Rails developer. The main differences come in the language distinctions between Golang and Ruby.
Namely, the statically-typed, very explicit Go contrasts greatly with Ruby when comparing similar features. For most cases, it takes more lines of code in Go to achieve similar things, though that is not necessarily a bad thing. Additionally, standard Go ships with an incredible amount of useful packages, making complex features in Go/Revel require fewer dependencies. Finally, Go is an incredibly fast language. For very large projects, Go is often a great language to use, so that you can harness its power. However, for smaller-scale projects, it can be a bit overkill.
I’m excited about Manjaro Linux running the i3 tiling window manager. I picked up an old Thinkpad and installed this combo, and I’ve been impressed with how fun and usable it is, and how well it runs on a circa-2008 computer. For terminal-focused workflows, this setup is good as hell. Granted, it’s Linux, so there’s still a fair bit of fiddling required to get things working exactly as you’d like, but for a hobbyist OS nerd like me, that’s all part of the fun.
The improvements to iOS Machine Learning have been exciting — it’s easier than ever to build iOS apps that can recognize speech, identify objects, and even train themselves on-device without needing a network. The Create ML tool simplifies the model training flow, allowing any iOS dev to jump in with very little experience.
ML unlocks powerful capabilities for mobile apps, allowing apps to recognize and act on data the way a user would. It’s a fascinating area of native app dev, and one we’ll see a lot more of in apps over the next few years.
I’ve been building a “Connected Chessboard” off and on for the last 3 years with my brother. There’s a lot of fun stuff on the firmware side of things, using OO concepts to organize move detection using analog light sensors. But the coolest thing I recently learned was how to make use of analog multiplexers. With three input pins, you provide a binary representation of a number 0-7, and the multiplexer then performs magic to pipe input/output data through one of 8 pins. By linking 8 of these together, and then a 9th multiplexer on top of those (thanks chessboard for being an 8x8 square), I can take 64 analog readings using only 7 IO pins. #how-neat-is-that
I'm a self-taught developer and I've explored and been interested in some foundational topics in CS, like boolean logic, assembly/machine code, and compiler design. This book, The Elements of Computing Systems: Building a Modern Computer from First Principles, and its companion website is a great resource that gives you enough depth in everything from circuit design, to compiler design.
I’ve enjoyed working with Administrate, a lightweight Rails engine that helps you put together an admin dashboard built by Thoughtbot. It solves the same problem as Active Admin, but without a custom DSL. It’s easy to quickly throw up an admin interface for resource CRUD, but anything beyond your most simple use case will require going custom. The documentation is straightforward and sufficient, and lays out how to go about customizing and building on top of the existing framework. The source code is available on Github and easy to follow. I haven’t tried it with a large scale application, but for getting something small-ish up and running quickly, it’s a great option.
I'm excited about Particle's embedded IoT development platform. We built almost of of our hardware projects using Particle's stack, and there's a good reason for it. They sell microcontrollers that come out-the-box with WiFi and Bluetooth connectivity built-in. They make it incredibly easy to build connected devices, by allowing you to expose functions on your device to the web through their API. Your web app can then make calls to your device to either trigger functionality or get data. It's really easy to manage multiple devices and they make remote deployment of your device (setting up WiFi, etc.) a piece of cake.
I’m excited about old things that are still really good. It’s easy to get lost in the hype of the new and shiny, but our industry has a long history and many common problems have been solved over and over by people smarter than you or I. One of those problems is running tasks intelligently based on changed files. The battle-tested tool that has solved this problem for decades is Make. Even if you aren’t leveraging the intelligence around caching intermediary targets, you can use Make for project-specific aliases to save yourself and your coworkers some brain cycles remembering and typing out common commands (e.g. across a number of other tools used for a given project).
TL;DR Make is old and still great.
So there it is, some cool tech from your friendly Viget dev team. Hope you found something worth exploring further, and if you like technology and camaraderie, we're always looking for great, nerdy folks.