Skip to Content

Technology Blog

Technology Blog

DevOps + SysAdmin

Read about the cross-disciplinary practice of DevOps (development and operations) dedicated to building, evolving and operating collaboratively. DevOps topics include culture, measurement, automation, and sharing and the use of toolkits like Saltstack and Ansible for configuration management, code repositories (GitHub), application monitoring (i.e. Nagios, Sentry), and scripting languages (i.e. Bash and Python). Posts also address SysAdmin (systems administration) common practices for installing and configuring systems, hardware and software, establishing and managing user accounts, upgrading software and backup and recovery tasks.

The importance of randomness in online security

I recently visited the website random.org, which is a free/fee-based generator of random numbers.  It's been around for a long time - since 1998.  It made me revisit the concept of randomness and how oddly hard it is to achieve. Why is randomness important? It's amazing how many things rely…

Implementing dependency management with Python Poetry

One of the biggest issues with Python (our preferred development language) is dependency management.  Any individual deployment can result in minor differences in the versions of the files and libraries which make up the application.  And these minor variations introduce uncertainty and randomness into our deployment process. So, we've investigated…

Step-by-Step Guide to Setting up Django-RQ

Modern websites are complicated pieces of machinery. The requests they initiate can be intensive and take more time to complete than a typical HTTP request-response cycle. This is typically refererd to as a blocking request, in that the browser (and user) waits until the response is received. If the request...

Let's Encrypt with Alternative ACME Client

I recently was tasked with installing Let’s Encrypt on a server running an old version of Debian (Squeeze) which was due to have its certificate expire. Unfortunately, this meant following the path of setting up certbot and a cron job as outlined in Let's Encrypt Quick Setup -- which basically follows the...

Free and Auto-Renewing SSL Certificates: Letsencrypt Quick Setup

You may have have heard of Letsencrypt, which is a new SSL certificate authority that provides free SSL certificates that are supported in all modern browsers. This service is also designed to help automate the issuance of SSL certificates.  The following describes how to use Letsencrypt to configure auto-renewing SSL certificates...

New Django Server Setup: Part 2

In Part 1 of this article, we discussed our choice of typical server stack and the general packages that we find useful upon an initial installation. Part 2 will focus on setting up the site environment and configuring the system services. As mentioned before, at Imaginary, this setup process is normally automated...

New Django Server Setup: Part 1

A core challenge of setting up a Django project is creating a production-worthy server environment and project setup.  At Imaginary Landscape, we've put a lot of thought into how to accomplish this task in an intuitive and flexible way.   The goal of this article is to detail the default setup...

Upgrades: Django Old to Django New

Sometimes we are faced with the challenge of upgrading old Django-based projects.  The task can be daunting, as a lot has happened in Django within the last few years.  Since Django 1.1.1, Django has been through 15 micro releases and 4 minor releases. The term "minor" seems deceptive as a...

Rackspace Temporary URLs with django-cumulus

We love Rackspace at Imaginary Landscape.  Recently, we needed to store a number of large files securely, and for logistical reasons, we chose to store them via Rackspace’s Cloud Files.  Rackspace provides the ability to create temporary URLs for files stored via their service.  This allows temporary access to privately...

Multiple File Uploads in Django

Here is a quick example of how to add a multiple file form to your Django application.  Most multiple-upload front-ends were created without Django in mind, so interfacing with tools is not always straightforward as it might be with a different language.  Thankfully, there are a couple of Django libraries...

Managing multiple SSH identities

Here at Imaginary we maintain our own git repositories internally with the help of the invaluable utility, Gitolite. This works well for us. However, in some cases, our clients have their own repositories that we must interact with. The problem arises when the client repositories reside on a third-party service, usually Github. As you likely know,...

Sewing Success with Fabric

I wanted to share a quick practical example of how Fabric, can make your development life easier. If you're unfamiliar with Fabric I recommend checking out its tutorial which describes Fabric thusly; Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment...

Our Django Server Setup: How and Why

One of the most important decisions you make in the process of building a new Django application is what software stack you use to serve it to the world. You're not lacking for options: people run Django on Apache, lighty, nginx, and Cherokee. You also need to decide how to...

Permission Based File Serving

One issue I've run into a couple times while working with Django is the need to serve files to users based on permissions. The first situation occurred with a store we were building that would allow for electronic versions of books to be sold. These books would typically be distributed...

Who controls your domain name?

Every domain name must be registered. Network Solutions, GoDaddy and examples of domain name registrars. The owner of a domain name is referred to as the Registrant. To check your domain name registration, go to the WHOIS page at Network Solutions. Network Solutions will report on all domains regardless of...