DevOps

Configuring server-side infrastructure, cloud architecture, and sometimes networking. Even automate your DevOps workflow with products from Hashicorp.
NodeJS
06 May 2019

Fixing your NPM Installation

Fixing an npm installation gone wrong when 'sudo' is misused.
Fixing your NPM Installation

There's a bit of a headache going around in respect to global npm permissions. For those of us working on Unix-based systems, it's not uncommon to come across error messages complaining about your user permissions whenever installing new npm packages, especially when installing them globally. If errors like the one below  look familiar, you're not alone:

npm WARN checkPermissions Missing write access to /Users/toddbirchard/.npm-packages/lib/node_modules
npm ERR! path /Users/toddbirchard/.npm-packages/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/Users/toddbirchard/
Continue Reading
Data Science
14 Apr 2019

Upgrading to JupyterLab on Ubuntu

Improve your Jupyter workflow with JupyterLab's powerful interface & customizations.
Upgrading to JupyterLab on Ubuntu

Last we chatted, we walked through the process of getting started with Jupyter notebooks on a Ubuntu server. The classic Jupyter notebook interface is certainly well-suited to the job done. That said, it only takes some time of getting lost in the interface to start thinking we can do better. That's where Jupyter Lab comes in.

Why JupyterLab?

JupyterLab is sometimes referred to as "the next generation of Jupyter notebooks," which is a statement I can attest to. JupyterLab offers an improved interface for Jupyter notebooks which is both available out of the box, as well as highly customizable for

Continue Reading
DevOps
11 Mar 2019

Serve Docker Containers With A Custom Domain and SSL

Do even less work to deploy your Docker apps to production.
Serve Docker Containers With A Custom Domain and SSL

The past few years of software development and architecture has witnessed multiple revolutions. The rise of containers, unruly package management ecosystems, and one-click-deployments holds an unspoken narrative: most people probably don’t care about how things work beneath the top layer. Sure, advancements in application infrastructure has undoubtedly made our lives easier. I suppose I find this lack of curiosity and unwillingness to dig deeper into the innards, an unrelatable trait. Yet I digress.

I’ve never found web server configurations to be particularly difficult, but apparently most consider this enough of a nuisance to make something even easier to

Continue Reading
Data Science
01 Mar 2019

Running Jupyter Notebooks on a Ubuntu Server

Configuring a VPS from scratch to host Jupyter notebooks with Anaconda.
Running Jupyter Notebooks on a Ubuntu Server

It dawned on me the other day that for a publication which regularly uses and talks about Jupyter notebooks, we’ve never actually taken the time to explain what they are or how to start using them. No matter where you may have been in your career, first exposure to Jupyter and the IPython shell is often a confusingly magical experience. Writing programs line-by-line and receiving feedback in real-time feels more like painting oil on canvas and programming. I suppose we can finally chalk up a win for dynamically typed languages.

There are a couple of barriers for practical devs

Continue Reading
Python
18 Feb 2019

S3 File Management With The Boto3 Python SDK

Modify and manipulate thousands of files in your S3 (or DigitalOcean) Bucket.
S3 File Management With The Boto3 Python SDK

It's incredible the things human beings can adapt to in life-or-death circumstances, isn't it? In this particular case it wasn't my personal life in danger, but rather the life of this very blog. I will allow for a brief pause while the audience shares gasps of disbelief. We must stay strong and collect ourselves from such distress.

Like most things I despise, the source of this unnecessary headache was a SaaS product. I won't name any names here, but it was Cloudinary. Yep, totally them. We'd been using their (supposedly) free service for hosting our blog's images for about a

Continue Reading
GraphQL
03 Feb 2019

Easily Build GraphQL APIs with Prisma

Jump on the GraphQL Bandwagon with a little help from Prisma.
Easily Build GraphQL APIs with Prisma

The technology sector is reeling after an official statement was released by the UN's International Council of Coolness last week. The statement clearly states what status-quo developers have feared for months: if you haven't shifted from REST to GraphQL by now, you are officially recognized by the international community to hold "uncool" status. A humanitarian crisis is already unfolding as refugees of coolness are threatening to overtake borders, sparking fears of an influx of Thinkpad Laptops, IntelliJ, and other Class A uncool narcotics.

Hold up: is GraphQL That Dramatic of an Improvement over REST?

In all honesty, I've found that

Continue Reading
Python
08 Jan 2019

Poetically Packaging Your Python Project

Manage your projects with Poetry to handle dependencies, envs, packaging, etc.
Poetically Packaging Your Python Project

It wasn't long ago that we Hackers were singing the praises of Pipenv: Python's seemingly superior dependency manager at the time. While we hold much love in hearts, sometimes there is love to go around. We just so happen to be fair weather fans, which reminds me: what has Pipenv done for me lately?

As you've probably guessed (considering its a piece of software), nothing much. Well, there was that time when pip upgraded from v.18 to v.18.1, which broke Pipenv entirely with almost minimal acknowledgment (for all I know this might still be broken). As our

Continue Reading
NoSQL
23 Nov 2018

Stitch's “Query Anywhere”: Executing Business Logic via Frontend

MongoDB Stitch vs the impossible: secure database queries via frontend JS.
Stitch's “Query Anywhere”: Executing Business Logic via Frontend

Some tools are simply the right tool for the job. I imagine this must have been the thinking behind the wave of JSON-like NoSQL databases at their peak, and even so today. If we figure we’ll be passing information as JSON to an endpoint, to then have it structured into a schema, only to be promptly broken down again for our request seconds later, if you will, it’s fair to question the cost-benefit of schemas in some cases. A lot of those cases cover the apps we build for ourselves: ones that let us do stupid things like

Continue Reading
NoSQL
15 Nov 2018

MongoDB Cloud: "Backend as a Service" with Atlas & Stitch

MongoDB's silent transformation from an open-source database to enterprise cloud provider.
MongoDB Cloud: "Backend as a Service" with Atlas & Stitch

You may have heard me drone on here and there about MongoDB Atlas and MongoDB Stitch. Previously, I hacked together an awful workflow that somehow utilized Tableau as an ETL tool to feed JIRA information into Mongo. I'd like to formally apologize for that entire series: I can't imagine there's a single soul on this planet interested in learning about all of those things simultaneously. Such hobbies reserved for masochists with blogging addictions. I apologize. Let's start over.

This is not a tutorial on how to use MongoDB: the database. I have zero interest cluttering the internet by reiterating what

Continue Reading
AWS
11 Nov 2018

Reselling AWS Load Balancing

Providing Cloud Load Balancing for your customers; My ultimatum.
Reselling AWS Load Balancing

Let's say we have a hosting service for users who bring their own domain name. In this scenario we'd like to be able to service customers no matter who manages their DNS records. Be it GoDaddy, Namecheap, Google, Hostgator, some offshore place, etc.

At the same time, we'd also like to provide Load balancing so no one-user can overload any of our systems. This means, instead of having a customer's domain name point directly to the system where their webserver or app resides, it will point the HTTP connection to a Load Balancer which is prepared to handle serious connection

Continue Reading
AWS
29 Oct 2018

Building an API with Amazon's API Gateway

Building APIs: The final frontier of cool-stuff-to-do-in-AWS.
Building an API with Amazon's API Gateway

In our last adventure, we ventured off to create our very own cloud database by using Amazon's RDS service. We've also briefly covered the general concept behind what Lambda functions. In case you've already forgotten, Lambdas are basically just chunks of code in the cloud; think of them as tiny virtual servers, which have already been configured (and locked down) to serve one specific purpose. Because that's literally what it is.

The data being stored in RDS is ultimately what we're targeting, and Lambdas serve as the in-between logic to serve up, modify, or add to the proper data. The

Continue Reading
Google Cloud
25 Oct 2018

Deploy Isolated Applications with Google App Engine

Doing everything to avoid server configuration or any mild discomfort.
Deploy Isolated Applications with Google App Engine

We've been on a bit of a tear lately on Google Cloud lately (or at least I have), and I have no desire to stop any time soon. I probably should though...  our analytics show that half our viewers are just people struggling to us AWS. Speaking of capitalizing on shitty UI, stay tuned in the future where we'll offer grossly overpriced unauthorized AWS certification programs.

AWS aside, I'm here to talk about the other Cloud in town - in particular, Google's solution to make sure you never configure a webserver again. This is a trend that's been grinding my

Continue Reading
MySQL
23 Oct 2018

MySQL, Google Cloud, and a REST API that Generates Itself

Deploy a MySQL database that auto-creates endpoints for itself.
MySQL, Google Cloud, and a REST API that Generates Itself

It wasn’t too long ago that I haphazardly forced us down a journey of exploring Google Cloud’s cloud SQL service. The focus of this exploration was Google’s accompanying REST API for all of its cloud SQL instances. That API turned out to be a relatively disappointing administrative API which did little to extend the features you’d expect from the CLI or console.

You see, I’ve had a dream stuck in my head for a while now. Like most of my utopian dreams, this dream is related to data, or more specifically simplifying the manner in

Continue Reading
DevOps
03 Oct 2018

Creating an AMI with HashiCorp Packer

HashiCorp's version control for infrastructure .
Creating an AMI with HashiCorp Packer

Why use Packer? Infrastructure as code has become part of the buzzword bingo surrounding operational teams and their desired optimal workflows.

One could theoretically just start with a base AMI and manually update it and then re-save it as a new AMI, but this process is not repeatable.  We can check in our desired infrastructure states as code to version control.  This is good practice for change control management.  We can readily see what worked before and what was changed in the latest update.  If something catastrophic happens or we encounter unforeseen issues, we can always rollback to a previous

Continue Reading