I was recently tasked with migrating a large, legacy, self-managed PostgreSQL 9.6 database hosted on AWS EC2 to AWS RDS running PostgreSQL 12.3.
The goal was to complete the migration in under 30 minutes and I needed to perform the following within that time frame:
pg_dump
and pg_restore
routines.Here are some of the lessons I learned along the way and some tips for those of you migrating a multi-gigabyte database between major versions of PostgreSQL. …
This guide covers configuring Docker for Rails development on your local machine. My goal is to walk you through setting up an ergonomic and reproducible development environment for building Ruby on Rails applications.
The Docker configuration was created with the following goals in mind:
I recently started implementing a highly interactive, web-based productivity tool using Elixir and React. Here’s how I added React components to Phoenix views where needed. You can find the source code here.
Hotwire is a shiny new HTML-over-WebSocket framework developed by Basecamp. Its purpose is to perform real-time DOM-patching using ActionCable
and JavaScript. You can compare it to Phoenix LiveView, but unlike LiveView, Hotwire is stateless.
I took Hotwire for a test drive along with ActionText
and was able to build a real-time Twitter feed in less than 30 minutes. You can find the complete source code on GitHub.
One of my goals for 2020 was to get better at DevOps-related tasks. I had practically no experience with AWS, except for using Rekognition and S3 to implement a facial recognition feature in an application I had built over two years ago.
The biggest reason to run your database out of EC2 would be cost savings. As of writing this article, the cheapest/smallest RDS deployment costs around $30.88 USD/month. In contrast, we can run a t2.micro EC2 instance with 8GB of storage for around $6 USD/month. This cost can be further reduced if you opt for reserved billing.
As a rule of thumb, if budget allows, always opt for RDS. It provides replication via a standby instance in a different availability zone and handles automatic fail-over. This is desirable for two reasons:
Having worked in the software development industry for a few years, I have noticed 2 things: first, app downtime is not cool and it shatters customer trust — and second, monitoring tools are often expensive and difficult to setup.
I wanted a platform where I could simply specify a web address and be notified if problems are detected. I wanted it to be cheap (preferably, free) and easy to setup — and for the life of me I couldn’t find an off-the-shelf solution.
So I went ahead and built one, check it out here.
I was recently tasked with building a web API for fruit classification. I realized that such a product would need to have the ability to detect general objects to weed out images of non-fruits. So I decided that I would start the project by getting my hands dirty by exposing a TensorFlow model to the web.
In this article, I will cover the functionality and architecture of this app from a practical, code-first approach. …
Submitting your first app for review can be an intimidating process. Here are some tips that have helped me get my apps approved by Google and Apple.
Disclaimer: These are tips that worked for me and may not apply to your situation. I am not responsible for any of these backfiring and/or causing you to lose time/revenue.
Having hit this roadblock personally, it delayed my app from being approved for distribution by about a week. In my experience, this change was enforced by Apple — Google Play didn’t seem to care.
You will need to provide Apple with a DUNS number if your app accepts payments via in-app purchases and/or happens to be disconnected from your Apple Developer account in a way that makes it an entity of its own. …
A few months ago I set out on a quest to rebuild my portfolio from scratch. Here are some insights I gathered along the way;
Particularly when you are trying to begin your software development career, its tempting to cast a wide-net by listing a laundry list of skills on your website. This does more harm than good by giving the reader the impression that you are at best, a master-of-none and at worst — a quack.
Start by listing all the demonstrable skills you currently have and picking a handful of them you are confident in. Skills that are not easily demonstrable on a portfolio website (ie; optimization, database design etc) should be either showcased through practical projects (ie; an external link to a high traffic messaging app you helped optimize at your previous job) or not at all. …