A reminder not to use bare except statements in Python
Bare except statements are a well-known anti-idiom in Python, and this post illustrates one example why that is.
Bare except statements are a well-known anti-idiom in Python, and this post illustrates one example why that is.
How I use a daily checklist.
The first MOOC course that I worked on was a three-part series based on the Civil War and Reconstruction taught by Professor Eric Foner. I've learned many valuable lessons on how to design an effective course using the edX platform. I gathered some best practices to share with others interested in creating MOOCs.
In this first of a three-part summary, we recount the circumstances that drove the decision to migrate two dental school projects, MATCH and PASS, to an open and sustainable framework. We also listed a few questions that we must address before moving forward with the implementation.
In second part of a the MATCH and PASS sustainability summary, we outline the solutions and development of the migration process, from framework choices for the sites to packaging JavaScript interactives.
We moved CompilED to Hugo, a general-purpose static site generator, to test this framework’s flexibility and durability to accommodate our blog’s requirements and workflow. This post outlines how we converted CompilED from Movable Type, streamlined its user experience, and optimized the site for accessibility, responsive design, and searchability.
In my previous post I talked about how to ensure that none of your Python project's dependencies are being downloaded from the Internet when you create a fresh virtualenv and install them. This is good for deployments: each deployment is completely reproducible since every package's source is installed from a specific version of the codebase that's versioned alongside the code you're deploying, and deployments don't require external network access to succeed.
Anders has written several times about our deployment strategy for Django apps at CCNMTL. Aside from containment of each project with virtualenv, we also try to make sure that deployments never depend on anything external, and can be done without access to the wider Internet. We do this by an aggressive form of version pinning: in each project's repository, we check in source tarballs of all the project's dependencies, including Django itself. We then have a pip requirements file that points to each of these local files in order. (Here's an example, and the bootstrap script that uses it.)
I see programmers as inherently helpful people. Given a 57-step flowchart describing the steps some poor soul has to execute manually, most programmers get a little gleam in their eye and set about providing a streamlined solution. Programmers truly love removing those inefficiencies. Meanwhile, the customer stops wrestling with a frustrating system and gets on with his job.
One of the primary tenets of agile development is test first, test often. After working in a small XP shop doing mobile development, I came to believe strongly that quality code hinges on a test-driven approach.