Will rant for beer.

Random shouting from Eric Steele

Technical Debt December

I’ve had a number of smaller technical tasks piling up over the course of the year and decided to dedicate my free time in December towards getting my shit together. It worked out rather nicely and I can start 2014 with a clean slate1.


I’ve been running my day-to-day backups using Time Machine and a swappable hard drive in an IcyDock enclosure. The IcyDock has been handy, allowing me to swap out for a second drive once a week for a full mirroring. My daily drive failed in November, most likely due to the dock’s lose data cable and its positioning on my keyboard tray. I ordered a replacement drive, promptly returned it, and got a working one. I also moved my dock so that it’s connected directly to my router. Hopefully the safer positioning lets this drive last longer.


When Google Reader had its plug pulled over the Summer, I never really got around to finding a replacement. It wasn’t a huge loss for me, since news comes via so many more channels these days, but I do miss flipping through articles with my morning coffee. I’d set up Fever back in the Spring, but it never really worked out the way I’d hoped it would. I wound up choosing FeedWrangler as my news service. My client, Reeder, didn’t give me any feed management options, so I wound up adding Mr. Reader to my iPad workflow. Mr. Reader has a lot of nice features, my favorite being able to set the default view (RSS/web/Pocket/Instapaper) for each feed.

Reeder clearly had a lot of thought put into the UI, and I really miss that. Mr. Reader does feel quite clunky and I often find that a swipe doesn’t do what I expect it to or that a button is positioned just out of reach. If someone combined Reeder’s UI with Mr. Reader’s functionality, I’d buy the shit out of it.


For the past 5 years, I’ve been hosting my sites on a KnownHost VPS. It was quite stable, but since it was based around CentOS with CPanel, I found it unwieldy for my limited sysadmin abilities. Plus, it was costing me around $20 each month, which while reasonable at the time I’d signed up, is far less so these days.

After recommendations from several friends, I decided to ditch KnownHost for DigitalOcean and I’m really liking the change. The admin UI is fantastic, and allows me to do most of what I want to do quite quickly, and I get to pick from several different options for my OS. I’m able to quickly spin up VMs for smaller tasks or to test configuration. It’s allowed me to move my ZNC service off of my local machine and serves up my 2 smaller Plone sites quite smoothly, for only $10/month2. I also took the opportunity to consolidate I all of my domain names under one registrar.


Field Guide

I’ve been enjoying David Sparks’ podcast, Mac Power Users, for some time now and decided to try out his new Email Field Guide. I wasn’t sure how much I’d get out of it, but it turned out to quite helpful. The Field Guide covers a lot of the basics of using GMail, Apple’s Mail, and mobile devices. David is really focused on preventing email from being a constant distraction and I really appreciated how well he tied that together. This book made the best use of the iBooks platform of any I’ve seen; screencasts accompanied each chapter and interviews with power users about their workflows really helped to make me think about my own relationship with my email.


One of the first things David’s Field Guide convinced me of was processing email through my own domain. When I left Penn State two years ago, I spent a lot of time dealing with the transition away from an email address I’d held for eighteen years3. I’m subjecting myself to that migration once again, but hopefully for the last time.

GMail required me to upgrade to a paid account to use a custom domain, so I began looking for substitutes. It feels a bit silly to think that I was looking at paid services to avoid paying for GMail, but there were enough other little annoyances that’d been piling up that it felt like a good time to make the jump.

I wound up choosing FastMail as my new mail host. The webmail UI is very usable and offers some nice features. Spam filtering has been solid without much training required.

I lose out on GMail’s tagging system, in favor of properly implemented IMAP folders. I missed the flexibility of having one message show up in multiple places, but it’s proven to be less of an issue than expected thanks to both Fastmail and my mail client’s incredible search features.


Subscribing to SaneBox was the toughest decision of the month. It costs a lot, it’s something I could do by making my own mail filters, but damn it’s made my life easier.

The biggest change SaneBox4 introduced to my workflow has been to admit to myself that there are large batches of email that I only need to think about once a day or week. It’s liberating. Initially, I’d fought against their recommended setup, trying to fit my old workflow into their system. After a week of that, I gave in and wiped all of my trainings and it made a big difference. I now have a folder that I look at hourly, another I check daily, and two others that can easily wait a week.

The only hitch I’ve run into was that I couldn’t convince it to drop specific emails to a mailing list. It sort of worked, but wound up tripping a bounce warning from the listserv software and unsubscribed me from the list every few days. I gave up on that and SaneBox support was very helpful getting everything sorted out again.

I’m currently on the “Lunch” plan, adding the News and Bulk folders, SaneBlackHole for that extra-persistent spam, and SaneTomorrow and SaneNextWeek which allow me to quickly defer messages until later.

It’s just filters, but it’s filters I don’t have to spend time setting up. I work with my email instead of managing it — that’s an important change.


I loved Sparrow. It was a beautifully designed mail app. Sparrow took a very minimalist approach to mail and made it so simple to go in and process my inbox quickly. I could blow through 300 messages, deleting the meaningless, archiving the need-to-knows, and paring down to a list of important messages in a matter of minutes.

Then Google ate it. They… man, fuck those guys.

Since then, there have been a number of other projects that have tried to emulate Sparrow. And by “emulate” I mean “blatantly copy”. But they all fell into the trap of thinking that Sparrow was good, but it just didn’t do enough. Minimalism is great, but how much better would it be with more buttons, right? Every time I opened one of them, it was a reminder of what I’d lost. It was being slapped about the face by a guy screaming “HAHAHA I DON’T KNOW WHAT I’M DOING WHEN IS GOOGLE GOING TO GIVE ME MY MILLIONS?”

Fuck those guys too.

So, I went in the opposite direction. If Sparrow was a sleek imported sports car, MailMate is a dump truck with a crane attached. And maybe a cement mixer. Or a backhoe. Let’s go with both.

Gabe Weatherhead reviews MailMate so thoroughly that I’m not even going to try to justify my choice. Go read that, then download MailMate.


I also wanted to take some time to teach myself Markdown syntax. MailMate, GitHub and my day job’s ticket tracker, sprint.ly use it and I was flailing trying to remember the proper syntax for links and images. Markdown Tutorial was, obviously, a Markdown tutorial and provided a quick lesson on what I needed to know. I wound up purchasing Editorial for writing on my iPad and Marked 2 for previewing on the desktop. Editorial may be one of the most well-made iOS apps out there. I’m really loving its method of showing both syntax and style simultaneously. The scriptable workflows should allow for quite a bit of fun extending it.


So Technical Debt December was a success. I spent a bit more money than I’d intended, but found savings in other areas. Most importantly, I was able to clear up a number of items on my backlog, and made my life a good deal simpler.

  1. Blogging January, however was obviously a complete failure. 

  2. They’d probably run just fine on one of the $5 options, but sizing down now would require me to transfer everything to the smaller VM manually. 

  3. I feel silly admitting it, but “keep my email address” was one of the biggest items in my “stay” column. 

  4. This is a referral link. I usually hate doing that, but it’ll get you $5 off your subscription too. Because you’re worth it. 

Plone 5

So, as you’ve likely noticed, we spent a lot time of talking about Plone 5 during the recent Plone Symposium Midwest. I think we’ve reached the point where can really start prioritizing concepts for a major release. Obviously, any changes need to go through the Framework Team for final approval, but I’ve got a bully pulpit and I’m not afraid to use it.

Here’s how I’d like to see development focused over the near term:

 Plone 5 ships with Dexterity as its default content type story.

  • Dexterity versions of plone.app.event and plone.app.collection
  • A better set of widgets (plone.app.widgets)
  • Products.Archetypes, Products.ATContentTypes, archetypes.schemaextender remain available as add-ons for older content
  • Full multilingual story available (plone.app.multilingual)

Plone 5’s UI gets an extensive overhaul.

  • Diazo becomes the default theming story
  • Fewer CSS files makes finding and overriding easier
  • No more !important in its CSS
  • Editing interface is separated from content for easier styling (plone.app.toolbar)
  • Accessible: WCAG- and ATAG-compliant
  • Deco.gs is replaced with a more commonly-used grid system, responsive
  • New folder contents UI with filtering and batch operations
  • Improved, tested widgets
  • TinyMCE gets upgraded to version 4.0, with a simplified integration making it easier for us to stay up-to-date

Plone 5 ships with an empty portal_skins.

  • Exists for add-ons
  • Most content moved to browser views, z3c.form
  • Login rewritten to use views, events. Simple, but pluggable for more complex use cases
  • Pay attention to proper XSRF protection for our most common functionality

Plone 5 has amazing test coverage.

  • Migrating scripts from portal_skins to browser views allows more unit testing
  • New JavaScript practices mean more unit tests for our interactive stuff

Plone 5 is faster.

  • Chameleon reduces rendering times by 30%
  • Date formatting is handled on the client side

Plone 5 is easier to learn.

  • plone.api covers most common development tasks.
  • Plone 5 eats its own dog food and sets an example for:
    • Views over skins
    • z3c.form
    • Dexterity
    • Diazo
  • JavaScript integration/development requires less knowledge of Plone
  • Theming requires less knowledge of Plone, less fighting with the default setup

And most importantly…
Plone 5 is achievable within the next 12 months.

There are, I’m sure, 30 other features that are in some stage of not-doneness, and while I’d like to see us do everything, we need to find some kind of scope. I think the above featureset gives us a nice range of features, a not-too-painful upgrade, and gives everyone plenty to do over the next year.

We’ve already begun approaching Plone companies to get buy in to the effort, asking for time, money or organizational support. Six Feet Up has pledged 5 hours per week of their QA team’s time to test our work. Netsight is organizing a sprint to rework the login. AMP is pledging 5 hours a week toward deprecating portal_skins. Wildcard is taking on the folder contents revamp. If your group has a particular need, now is the time to make it happen.

In addition, we have plans to use the general community excitement that comes along with a major release to build some momentum in our non-code teams. If we can move this forward, I think Plone 5 will be a big step up for both Plone the software and Plone the community.


"Every step is a first step if its a step in the right direction."
- Terry Pratchett, “I Shall Wear Midnight”

I tend to be…measured in what I say. In the best case, that means that it takes me far longer than it should to communicate things. In the worst, it means that things just sit in my drafts folder.

Discussions during last week’s Plone Symposium Midwest point to many great things happening in the next 12 months. For me, the greatest is the rebooting of Plone’s communications team. Since last September, Rose Pruyne has been writing some fantastic articles for plone.org about community members doing great things with Plone. Now, she and a team of writers and editors will be conducting interviews with team leaders, developers, and anyone working to make Plone even better.

We recognize that we’ve been pretty lax about letting everyone know what’s going on, and this is our first step in fixing that.

When you’re a programmer…you have the ability to do whatever you want really, really quickly in the crappiest possible way.

John Siracusa (via merlin)

Slide Prep: Steele’s Grand Unified Theory for Making Shit Happen

Slide Prep: Steele’s Grand Unified Theory for Making Shit Happen