Welcome

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 contract work and have a varied professional experience. So if you need help with embedded Linux application development, Windows application development, Django webapps, and general Linux (and networking) system administration please get in touch.

I have a long history of delivering a quality product on time and on budget. If you have some IT related problems that you want to go away I can probably make that happen.

Automatically activate virtualenv

This was originally the majority of this post: Start a django project the right way but I’ve decided to put in it’s own post instead.

I’m assuming you’re on OSX. If you’re on Linux most of these steps will be the same. If you’re on Windows… Install VMWare and then install Linux.

I’ve added a tl;dr at the end.
more…

Just delete it

Don’t check a pointer before deleting it, just delete it.

// don't do this
if ( p ) delete p;
 
// just do this
delete p;
 
// ie: this doesn't crash or do anything bad
int* p = NULL;
delete p;
 
// but you probably need something like this
#define NUL_DEL( p ) { delete p; p = NULL; }
NUL_DEL(p)

But seriously, this isn’t the dark ages, you really want to be doing this.

std::shared_ptr<int> p;
...
p.reset(); // no need to set to NULL (or rather null_ptr)

Load jquery asyncronously and then fire some callbacks

I know next to nothing about Javascript so I’ll need somebody who knows about this stuff to weigh in, but this is how I got jquery to load asynchronously and then fire callbacks.

more…

Improving ssh transfer speeds

Depending on the hardware involved, you can dramatically speed up an ssh pipe by changing the encryption type, or turning off compression.
more…

Quick and dirty snmp

From what I can tell everybody uses net-snmp, and from what I’ve seen the documentation is atrocious.
more…

Passing a boost::bind to another boost::bind that is a template

I’m not sure how else to name this entry, it’s rather complicated. So what I was finally able to achieve as to pass a boost::bind to a boost::bind with placeholders, with templated callbacks. I’m not gonna lie, this took me awhile to figure out.

The rational for all of this was that I had a parent class called group, and this group had the list of boost::asio::deadline_timer‘s and the boost::asio::io_service running in a thread. I wanted the ability for child objects to put work in that thread.
more…

Start a django project the right way

Django works much better if you do things the right way. Here are the steps for future me.
more…

Simple typedefs

Part of my Why is simple hard? series.

Do you even typedef bro?

more…

Simple notation

Part of my Why is simple hard? series.

Like most people with taste, I despise Hungarian notation. But, at the end of the day it really is only a style issue and easy enough to fix with a search & replace.

more…

Why is simple hard?

Controlling complexity is the essence of computer programming.
   — Brian Kernighan

This has been bugging me for years, and it’s getting worse. In some type of ironic paradox, it seems like the worst programmers are (in some ways) the best programmers.

more…

Older Posts »