The Lounge on Dokku

Mozilla has hosted an enterprise instance of IRCCloud for several years now, and it’s been a great client to use with our IRC network. IRCCloud has deprecated their enterprise product and so Mozilla recently decommissioned our instance. I then saw several colleagues praising The Lounge as a good self-hosted alternative. I became even more interested when I saw that the project maintains a docker image distribution of their releases. I now have an instance running and I’m using irc.mozilla.org via this client and I agree with my colleagues: it’s a decent replacement.

Multi-Stage Dockerfiles and Python Virtualenvs

Using Docker’s multi-stage build feature and Python’s virtualenv tool, we can make smaller and more secure docker images for production.

GNU Terry Pratchett

Sir Terry Pratchett was an amazing author and person. A movement has started based on some of his writing to keep his name flowing around the Web for years to come. Check the headers of this site and you’ll see it’s happening.

The State of Mozilla.org - February 2015

Hello all! It’s already been a month since last we spoke and much has happened! Let’s get to it. Note: It appears that monthly will be a better schedule for these than every 2 weeks, at least for me. I’ll try to keep to that. Please call me out if I fail. Theme for February: ZOMG BUSY! February is always a busy month for we developers in the Engagement team, at least since Mozilla broke into the mobile world with Fennec and Firefox OS.

The State of Mozilla.org

I’m starting a new blog post series. I’m calling it, as the title of this post suggests, “The State of Mozilla.org”, which is possibly confusing, but I think funny. So we’ll try it for now. The purpose of this is to have a bi-weekly log of what’s been happening with the “www.mozilla.org” site both technically and from a contribution standpoint. I want to do a better job of being transparent about what’s been happening and who’s been doing it.

Pelican Edit Links

I wanted to add “Edit on Github” links to every page of my blog. I couldn’t find a plugin that does this, so I wrote one. Introducing Pelican Edit URL. It’s a plugin for Pelican that adds an edit_url property to article and page objects. This allows you to do things like: <a href="{{ article.edit_url }}">edit on github</a> I use this to link to the page markdown source in github, but the link generated is fully customizable.

Better Pelican Hosting with Amazon S3 and CloudFront

When I first deployed this new static blog it was hosted on Github Pages. As it turns out thgough, this solution was suboptimal for a few reasons. One problem was that since I didn’t want to use Jekyll I had to check the compiled site into the master branch, and have a separate src branch for the source. But the primary issue was that I like using an apex domain (i.

Pythons, Pelicans, and Posts

photo by bertknot As most web developers are want to do more often than most, I’ve changed the tech underlying my blog. My first blog was a custom PHP beast completely hand-written by me and found at paulmclanahan.com sometime around 2001. In the time since I’ve tried wordpress, blogspot, and tumblr, and moved to paulm.us and now pmac.io. I’ve not felt fully comfortable since relinquishing control of the hosting and technology of my site.

Blogged: Scrum and Bugzilla

I blogged! But this time it was at the Mozilla Webdev blog. It’s all about this little thing I made called Scrumbu.gs. Go check it out. Do it now. Scrum and Bugzilla

PassThroughManager for Django

Update 3/30/2011: This has been merged into Django-model-utils (Thanks to Carl Meyer). There is a ton of useful stuff in that package. You should really be using it. I am. Django’s built-in Model Manager and QuerySet classes include plenty of useful methods. But often you’ll want more. Django makes it very easy to subclass these built-ins to add your own properties and methods. However, more often than not, you’ll want the same methods to exist on your new manager and queryset.

Cookies for Django

Until yesterday I thought the new messages framework in Django 1.2 was doing things stupidly. I like the Fallback backend; it uses signed cookies to store the messages that will be displayed to the user. This avoids the DB or cache hits that’d you’d normally get from the old system, as well as those you’d get from using the session for message storage. The Fallback goes further and will use the session if your message is too big for a cookie.

Slicehost Dynamic DNS

One of the best things about Slicehost is their DNS service. They allow you to host and easily maintain any number of zones you want, even ones that aren’t hosted on a slice. They also provide an excellent RESTful API for automatically modifying these zones and records. This came to mind recently when my free Dynamic DNS host (EveryDNS) was sold to Dyn, Inc.. I decided it was time to grow up and move my dynamic DNS needs to a service for which I was paying.

Release: Django Celery Email

I just released my first Django reusable app. django-celery-email is an email backend for Django 1.2+ that uses the amazing Celery to process sending the emails out-of-band. If you’re a Python developer and have ever wanted to use a queue to send information to separate processes that will in turn do your bidding and give back to you what you need, then Celery is probably what you want, plus more amazing features that you haven’t thought of yet, but that you desperately need.