Skip to Content

Technology Blog

Technology Blog

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...

Don't Wait for the Lawsuit - Make Your Website Accessible Now

Although no formal set of guidelines have been released, website owners are encouraged to immediately comply with level A and AA of the Web Content Accessibility Guidelines as published by the World Wide Web Consortium. Aggressive law firms have had success bringing suit against organizations whose websites are not...

Writing Functional Python

The recent buzz surrounding Functional Programming (FP for short) is well deserved. Languages like Haskell and Clojure in use by big name companies such as Barclays Captial, Atlassian, and Walmart have helped FP ideas gain a major foothold in industry. I am a Clojurist hobbyist who has been interested in FP for...

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...

End User Focused Django Tutorials

Django is being used by corporations worldwide.  Every day, Imaginary does its part to increase this footprint by deploying Django websites and applications to our clients. As a result, Django is being exposed to greater numbers of end users. I'm not talking end user developers.  I'm talking Samantha in marketing...

How to Use Amazon S3 Storage for Select Apps

At Imaginary Landscape, we often have the need to add remote file storage capabilities for our clients. At first glance, this sounds easy enough: "pip install django-storages", add the right credentials, and boom, you're done! However, this was not the case for one particular situation we encountered. We didn't want...

Braintree Integration with Django

Braintree Integration in Django Introduction Much has been written about how to implement online payment using the services available from Braintree, but not much has been written about how to do it within a Django framework. Combining the two does not require any special contortions, but as Braintree’s own online...

Django Class-Based Views: The Basics

Class-based views are my favorite feature of Django, so there is an obvious bias when discussing function views and class-based views.  I’ll throw my two cents in here and move on.  I prefer the structure and predictability that class-based views provide. I recognize that there are many instances when a...

Django CMS Plugin Authenticated User Variations

Note: a companion app for this post can be found here:  https://github.com/ImaginaryLandscape/cmsplugin-auth-content-example In a recent project using django CMS, we found ourselves in need of serving alternate plugin content to authenticated users. This is not the first time a request such as this has been made, and on past occasions...

A Python Solution for Making Custom PDFs from HTML

The client wanted to give their users the option of printing completed forms to a pdf file. They also wanted the pdf to be rendered with formatting and style that varied slightly from the online display of the completed form, and so desired a solution other than the browser’s own...

Encrypted Postgres Backups

When creating a Postgres Database backup, one convenient approach is to export the database to disk via the pg_dump command. This postgres export file can then be picked up by a regular filesystem backup. A possible security risk with this approach is that your sensitive database data could be situated...

Quick Introduction to Mock

Quick Introduction to Mock Mock is a powerful library for facilitating testing.  It allows users to replace components of your application with powerful mock objects at testing runtime.  These objects can then be used to make observations about call patterns and to assert which methods of the object were accessed, the...

Introducing django-nocaptcha-recaptcha

This week, Google announced a radically new way of handling human detection with a revamped reCAPTCHA.  This new iteration, called No CAPTCHA reCAPTCHA replaces the hard-to-read distorted text image transcription with a simple checkbox. We've never been big fans of CAPTCHA technology.  It transfers the burdeon of proof from the server to...

Got Rot?

A 2014 study released by the Harvard Law Review shows that an alarming number of hyperlinks go bad in a surprisingly short time. Link Rot has been a problem from the very beginning of the web.  Over time, websites can come-and-go and redesigns can change the location of content -...

5 million votes and counting at Rockhall.com

The Rock and Roll Hall of Fame recently announced their 2015 nominees.  At the same time, they opened up a Fan Voting application so that music fans across the world could make their selections known. Rock Hall approached Imaginary a couple weeks prior and asked if we could design an...

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...

Django and IPython Notebook

The IPython Notebook is a really cool application, and I've always wanted to use it during Django development and debugging.  The only problem is that it requires a lot of dependencies and I feel no need to encumber my production projects with those dependencies for a feature that I only...

Debug Toolbar Primer

The Django Debug Toolbar is a powerful and useful tool for identifying potential trouble spots in your Django application.  Hopefully, this post will serve as a starting point for understanding the information presented by the toolbar.  Also, we will cover a couple of plugins for the toolbar, cache panel, and...