Historically, our support and maintenance agreements have been on-demand and initiated by the customer observing a particular problem that needs to be addressed. A relatively new type of project at Atomic is the Continuous Improvement Engagement, or ... more
On any moderately-sized Node.js project you’ve likely already outgrown the package.json “scripts” section. But because the growth was gradual, with no single acute pain point, you might not have noticed. There’s a better way. What Are NPM Scripts? In ... more
What do you do when you need to use a VPN to develop your app but you also need Zoom to stay connected to your team via video chat? If you’re like a lot of developers, you connect to the network and just put up with laggy audio and video. But what if ... more
The release of React Navigation 5 drastically changed how navigation is structured for React Native projects. One major change with this release was the introduction of useNavigation . This React Hook makes it easy to access the navigation prop from ... more
Version 2 of the popular JavaScript package manager Yarn has been here for a year now. Yet try to find information on upgrading from 1.X or how it compares to current versions of npm (especially the 7.x dev release), and you’ll get plenty of well-written ... more
Timer-triggered Azure functions allow you to run a function on a configurable schedule. Unlike HTTP-triggered Azure functions, timing info is stored in an Azure storage account and then passed to the function on execution. As a result, once you add in ... more
Timer-triggered Azure functions allow you to run a function on a configurable schedule. Unlike HTTP-triggered Azure functions, timing info is stored in an Azure storage account and then passed to the function on execution. As a result, once you add in ... more
Timer-triggered Azure functions allow you to run a function on a configurable schedule. Unlike HTTP-triggered Azure functions, timing info is stored in an Azure storage account and then passed to the function on execution. As a result, once you add in ... more
Timer-triggered Azure functions allow you to run a function on a configurable schedule. Unlike HTTP-triggered Azure functions, timing info is stored in an Azure storage account and then passed to the function on execution. As a result, once you add in ... more
Timer-triggered Azure functions allow you to run a function on a configurable schedule. Unlike HTTP-triggered Azure functions, timing info is stored in an Azure storage account and then passed to the function on execution. As a result, once you add in ... more
Timer-triggered Azure functions allow you to run a function on a configurable schedule. Unlike HTTP-triggered Azure functions, timing info is stored in an Azure storage account and then passed to the function on execution. As a result, once you add in ... more
It’s a good idea to have exact version information accessible from within any app you’re building, and it’s easy to put it there with modern tools. Join me for a quick dive through the layers that exist between git and production in a conventional Dockerized ... more
It’s a good idea to have exact version information accessible from within any app you’re building, and it’s easy to put it there with modern tools. Join me for a quick dive through the layers that exist between git and production in a conventional Dockerized ... more
There are many methods for managing styles in web applications, all of which attempt to prevent styles from cascading to elements that don’t need them. CSS Modules are an excellent tool for isolating application styles to the components that use them. ... more
My team has started working on a new web application, and we’ve been asked to use ASP.NET for the backend. We chose to use React for the frontend because we’ve had significant success with React at Atomic, and we wanted to leverage some existing UI components ... more
Have you ever wanted to quickly chart some data without coercing it into a spreadsheet? Perhaps you even want to do something mildly complex, like differentiate the data based on some facet that isn’t being charted, or have the ability to interact with ... more
I’ve been working on a React Native app for a few months now. The project is a particularly interesting one: Take an existing web app and turn it into a mobile app. Given the nature of the project, there have been many decisions to make. One choice I ... more
For my project, we have a Node.js server deployed as an AWS Lambda function. The server’s dependencies (Node modules) are deployed in a Lambda layer. We want an easy process to deploy a new Lambda layer version when we update the Node modules and to ... more
It can take a long time to get a full-stack React and Node.js app off the ground. Fortunately, with the addition of API Routes, Next.js offers a way to do that in just minutes. Next & File System Routing Next.js is a powerful, batteries-included ... more
When clients first contact us about building a mobile app, they often wonder if they should build separate native mobile apps for both Android and iOS platforms, or if they should use a cross-platform framework. In the past, cross-platform frameworks ... more
Many people think of React and Redux as inseparable, despite the Redux author’s own advice to avoid using it “until you have problems with vanilla React.” The bar for “problems with vanilla React” has traditionally been pretty low, though. As soon as ... more
Functional programming is a broad discipline, and this series has only scratched the surface. Like most skills, it is learned through practice. To help you practice, I’ve found a few ideas that are rooted in functional programming and may find a place ... more
Functional programming is a broad discipline, and this series has only scratched the surface. Like most skills, it is learned through practice. To help you practice, I’ve found a few ideas that are rooted in functional programming and may find a place ... more
Working with a cloud of microservices is a fact of life for web and mobile developers. Though some of us are lucky enough to have a team of ops engineers who keep the back end humming, many of us have to do the hard work of envisioning, implementing, ... more
Working with a cloud of microservices is a fact of life for web and mobile developers. Though some of us are lucky enough to have a team of ops engineers who keep the back end humming, many of us have to do the hard work of envisioning, implementing, ... more
Much of the power of functional programming is self-evident, but I wanted to spend some time exploring the reasons for and against using a functional style. Five Drawbacks/Downsides of Functional Programming I’m not trying to sell you some cure-all to ... more
Much of the power of functional programming is self-evident, but I wanted to spend some time exploring the reasons for and against using a functional style. Five Drawbacks/Downsides of Functional Programming I’m not trying to sell you some cure-all to ... more
One of my recent projects required us to make an existing web application work offline. Initially, we considered making a progressive web app. We quickly eliminated this option since PWAs have several limitations, most importantly storage size. Eventually, ... more
One of my recent projects required us to make an existing web application work offline. Initially, we considered making a progressive web app. We quickly eliminated this option since PWAs have several limitations, most importantly storage size. Eventually, ... more
Recently, I had the pleasure of attending the Chain React conference in Portland, Oregon, hosted by the nice folks over at Infinite Red. It’s a React Native-focused conference, hosting talks by those who work on the core team, members of the open-source ... more