@ wrote... (12 years, 8 months ago)

BurgundyWall is located in Calgary, Canada, and the inspiration for the domain name is located at the end of my living room. If you're really curious you can read (a very little) about me.

If you're interested in any of my articles or if you need a skilled developer then send me an email or check out my resume.

I am available for part-time contract work and have a varied professional experience. So if you need help with embedded Linux application development, backend development, and general Linux (and networking) system administration please get in touch.

If you have some IT related problems that you want to go away I can probably make that happen.

Category: uncategorized
Comments: 0
@ wrote... (1 week, 6 days ago)

You should always use the logging module instead of just littering print statements all over your code. You will very quickly thank yourself for taking a bit of extra time.

Having said that, setting up logging is a bit of a pain so here's the pattern I use 90% of the time.


Category: tech, Tags: python
Comments: 0
@ wrote... (1 month ago)

Uploading to Minio (or S3) in a script is a bit tricky.

Update: now on GitHub with some Python versions.


# usage: ./minio-upload my-bucket my-file.zip


s3_key='secret key'
s3_secret='secret token'

date=`date -R`
signature=`echo -en ${_signature} | openssl sha1 -hmac ${s3_secret} -binary | base64`

curl -v -X PUT -T "${file}" \
          -H "Host: $host" \
          -H "Date: ${date}" \
          -H "Content-Type: ${content_type}" \
          -H "Authorization: AWS ${s3_key}:${signature}" \
Category: tech, Tags: linux, python, shell
Comments: 0
@ wrote... (1 month, 1 week ago)

I highly doubt I've invented something new, but I did independently invent it, so I have that going for me, which is nice. Plus I'm stitching together lots of great open source pieces which we all have going for us.

Anyhow, this is kind of difficult to explain. And complicated… with lots of moving parts… but is super useful once you get it to work.

As high level as possible, when I do a git push, another machine reloads new configuration files. And notifies me. All within a second.


Category: tech, Tags: devops, docker, git, linux
Comments: 0
@ wrote... (7 months, 1 week ago)

I really want to like Kivy

I was trying to asyncronously load comic book images out of a cbr file (a rar archive) but was having a hell of a time figuring it out.


Category: tech, Tags: kivy
Comments: 0
@ wrote... (10 months, 3 weeks ago)

Alkali v0.5.5 has now escaped.

Code at github.com and docs at readthedocs.org.

Major features are:

  • adding BoolField
  • adding CSVStorage, load/save csv files
  • queries are bit more efficient/fast, don't copy as many objects by default
  • some doc cleanups
Category: tech, Tags: alkali, python
Comments: 0
@ wrote... (11 months, 3 weeks ago)

You can now nicely render markdown in your console/terminal with ConsoleMD in glorious color.

Note the subtlety changing hues of the subtopics, the brilliance of auto-incrementing list counters, the dulcet notes of the embedded python, the elegant italics of the block quote. ConsoleMD has it all! At least with regards to my small test files.

Code is on github.com

Category: tech, Tags: consolemd, python
Comments: 0
@ wrote... (1 year ago)

Alkali v0.5.4 has now escaped.

Code at github.com and docs at readthedocs.org.

Major features are:

  • implemented Query.distinct
  • implemented Query.annotate
  • implemented Query.aggregate functions: Sum, Count, Min, Max
  • Fields are now descriptors on Model instance
  • added ForeignKey field
  • models now cascade delete when ForeignKey instance is deleted
  • minor speed ups
  • IntField now has auto_increment property
  • Query returns copies of Model instances
  • added signals on model creation/deleting/saving/etc
  • better documentation
Category: tech, Tags: alkali, python
Comments: 0
@ wrote... (1 year ago)

I had a hell of a time trying to make a nice help command while using click.

I wanted the ability to have a help sub-command for each real command.

mycommand --help
mycommand help

mycommand foo --help
mycommand help foo

It's actually fairly easy (once you know how).


def cli(ctx, **kw):

def foo(ctx):

@click.argument('topic', default=None, required=False, nargs=1 )
def help(ctx, topic, **kw):
    if topic is None:
        print ctx.parent.get_help()
        print cli.commands[topic].get_help(ctx)
Category: tech, Tags: python
Comments: 0
@ wrote... (1 year, 1 month ago)

So it turns out I hadn't updated my Fedora installation for over two years (protip: don't run Fedora on a server kids) so I did a quick series of upgrades and went from Fedora 21 to Fedora 25.

Unfortunately that means that my PostgreSQL database was at version 9.3 but the installed software was version 9.5.

So can you upgrade from 9.3 to 9.5? No. But it's not impossible either.


Category: tech, Tags: database, postgresql
Comments: 0