Favorite Flask Boilerplate/Skeleton/Templates

Those do a lot of the work of starting a new Flask project for you.

With cookiecutter flask, all you need to do to build a new project is: cookiecutter https://github.com/sloria/cookiecutter-flask.git

As a warning, cookiecutter flask and overholt include a lot of stuff. I ended up not using it because it was too much work to change everything to work with oAuth.

Reverse PDF Page Order

I created an app that allows you to upload a pdf and it returns a copy of your PDF with the page order reversed. The code is here: https://github.com/pawl/pdfreverse

Initially when I googled how to do this in Adobe Acrobat, the first few results had fairly complicated solutions. After I made the app, I ended up finding an easier way to do it in Adobe (in the 6th from the top Google result on “reverse pdf order acrobat”…):

Adobe Acrobat's Print dialog with the Reverse pages option checked

Oh well, it was a fun project.

Discourse As Potential Mailing List Replacement

While tested out Discourse, I only found a few negative things:

  1. To make it act like a mailing list, it currently requires each user to change settings on their account: Discourse mailing list mode
    I commented on a thread about a new feature that allows setting defaults for this: https://meta.discourse.org/t/default-email-settings-for-a-new-user/14980
    Updated: the guide Discourse originally shipped for this (docs/MAILING-LIST-SETUP.md in their repo) has since been removed, so this links to their current mailing list mode doc instead.
  2. It doesn’t allow setting defaults for which categories the user has “Watched”. For example, I would want to default the “General” list to “Watched”, but more obscure lists would only be watched if the user chooses to.
  3. It uses a different e-mail address for each e-mail it sends you (this is to keep track of which thread it belongs to), here’s an example of a “From” address: testdiscourse+43854630fb3a3d9492505fa5a23db196@gmail.com
    Google Groups always has the same to/from e-mail address and magically figures this out. This might be weird in some peoples’ email clients.

As a forum, this beats the crap out of PhpBB, but as a mailing list it’s not a clear winner over Google Groups yet. It’s open source, has a better web interface, and the “Categories” are a cool feature for keeping all the lists in the same place. But, the “email in” functionality was too recently implemented, and it might take a few months before it’s as polished as Google Groups.

It’s going to be a very tempting replacement if they add default settings for user preferences.

Screenshots:

discourse 1

discourse 2

discourse 3

discourse 4

discourse 5

Data source name not found and no default driver specified - SQLalchemy/Sybase

I was getting this error when trying to connect to a sybase database using Microsoft’s odbc driver by using the connection string shown in the SqlAlchemy examples:

DBAPIError: (Error) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') None None

The following code worked to connect:

import pyodbc, sqlalchemy

def connect():
    return pyodbc.connect('DSN=<dsn name>;UID=<username>;PWD=<password>')

srcEngine = sqlalchemy.create_engine('sybase+pyodbc://', creator=connect, echo=True)

Docker Not Starting - Ubuntu

I was getting this error message because docker was refusing to start: Cannot connect to the Docker daemon. Is ‘docker -d’ running on this host?

This issue was occurring because my kernel was refusing to upgrade, because I was on a VPS. (you need to get your VPS provider to upgrade it for you)

Run uname -r, if it returns something like this: 2.6.32-042stab084.20 That’s probably the reason why docker isn’t starting. Your kernel isn’t compatible.

If you’re not on a VPS and can upgrade your kernel, try instructions on this page: Install Docker Engine on Ubuntu

E: Sub-process /usr/bin/dpkg returned an error code (1)

I was getting this error message while I was trying to upgrade the kernel on my VPS:

/usr/sbin/grub-probe: error: cannot find a device for / (is /dev mounted?).
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postrm.d at /var/lib/dpkg/info/linux-image-3.8.0-34-generic.postrm line 328.
dpkg: error processing linux-image-3.8.0-34-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
 linux-image-3.8.0-34-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

You might not be able to upgrade the kernel on your VPS. Contact your VPS provider and get them to upgrade the kernel for you.

WHMCS Cronjob Not Running On Ubuntu

My issue was the user with the cronjob did not have access to run the cronjob php file. So, I needed to make the new cronjob for the correct user.

Solution:

  1. Find out the owner of your apache process (usually www-data).
  2. Look at the top of the “Automation Settings” page in your WHMCS admin area. It should say something like: php -q /var/www/whmcs/admin/cron.php (keep this handy for step 4)
  3. In terminal run: crontab -e -u www-data
  4. Ensure you have a line that says: 0 6 * * * php -q /var/www/whmcs/admin/cron.php (note: this should be the same file path you got for your own install in step 2)

OpenSSL DLL load failed On Windows - Python

The DLL load failed error happened when cherrypy tried the following import: from OpenSSL import SSL

ChannelFailures: VerificationError("importing 'C:\\\\Python27\\\\lib\\\\site-packages\\\\cryptography\\\\_Cryptography_c
ffi_48bbf0ebx93c91939.pyd': DLL load failed: %1 is not a valid Win32 application.",)

These error messages are solved with this install: Win32/Win64 OpenSSL installers (Shining Light Productions)

If you have a 32-bit version of python, that install will move the correct DLLs to your system32 folder.