In July I deployed a major update to dpaste.com. Nothing exploded. Good things resulted. The TLDR It looks different of course, but here’s the other stuff that’s new: Proper user accounts replaced the old cookie-based “accounts” Signup via GitHub, GitLab, Bitbucket, Google, or plain ol' username/password “Favorites” feature Optional public profile (linked from items you post) Responsive HTML layouts (looks good on your phone now!) 100% HTTPS More robust database setup Application hosting by PythonAnywhere Lengthened the base-32 item IDs from 7 to 9 digits (and dropped the ambiguous 0, 1, O, I) Added a latest-item blurb (with geolocation when available) to the About page, for fun.
I migrated my blog from a Django system I wrote 12 years ago, to a static site generated via Hugo. The move wasn’t just about getting out of an old codebase — it also was the result of seeing how static generation is a very reasonable fit for most blog sites (including mine). Dynamically generating the pages is really just one way to get the raw content rendered into my preferred form and interface.
TLDR: Use python-future. The Project Last summer I led the conversion of a 100KLOC Python 2 web application to Python 3. The application is called “Accelerate” - the backbone of operations at my employer, MassChallenge, a global startup accelerator. It handles every stage of a running accelerator program: account creation for entrepreneurs and experts (mentors) startup applications online and in-person judging of applications coordination of one-on-one meetings with mentors during the program generation of reports used by judges selecting cash award recipients So, it’s a mission-critical app.
This past week I started playing with GatsbyJS, a static site generator and framework centered around React. I successfully used today it to generate a static version of this blog (I’m in the process of selecting the static site tool that will replace my vintage 2008 Django-based engine). The componentization that React brings isn’t much of a win for me here, i.e. I’m not likely to be building components for my blog that I reuse elsewhere.
noSQL is a big tent with lots of interesting tech in it. A few years ago at work I got an assignment to evaluate graph databases as a possible datastore for our 40-million-pageviews-a-day CMS. Graph DBs are elegant stuff, though not a particularly special fit for that application. Here’s what I had to say. Graph databases are all about “highly connected” data. But instead of tracking relationships through foreign-key mappings RDBMS style, they use pointers that directly connect the related records.
Today I’m launching my first Google App Engine site. While I built it largely to play with GAE, it is also useful in its own right (I like to think so anyway). It does two different things: Link shortening without redirection. Put in a godawful long Amazon link and get back a shorter Amazon link. Works with eBay and a few others too. I welcome recipes for other sites. (For the programmers in the audience, which is most of you – yes, the processing is via regular expressions.
A significant difference between developing Django sites versus static-HTML-based approaches (among which I count PHP and the like) is that static files, aka “media”, live in a dedicated spot. Sometimes you need a piece of static content to be available at a specific URL outside your media root. robots.txt for example. This can be done in pure Django (i.e. without even touching your Apache configuration), and is especially nice if your robots.