Have I Blogged Yet?

This afternoon I decided to write a site that would let me track whether I’ve blogged in the various categories I have yet. http://haveiblogged.herokuapp.com/ is the site. The background for a category is red if I haven’t blogged yet, and is green if I have!

This is part of my new commitment to blog at least once a week in each category. I complain that my writing isn’t great, and I pretty consistently think of topics I could write about. This should drive me to actually put those thoughts and ideas out there in the blagosphere.

I’ll be putting up a post discussing the how I wrote the site soon in order to fulfill my programming category.

Plethora of Projects

I find myself in a state where I have many projects that people ping me about regularly. I am very into all of them and would love if I could dedicate to each of them time that they deserve. This posting is mostly an enumeration of those projects and what I want to do with them.

Read the Docs

This is definitely my highest priority project. It has the most users and with my friend Eric Holscher leaving on a long hike soon I’ll be the primary caretaker of the project. I have various issues to work architecturally which are moderately boring or security related but will be taking some of my development time on this project.

I’ve already started into one of my bigger goals which is to clean up the code base. The files to all comply to flake8 which is a step in the right direction. Next I will be cleaning things up so the project is closer to what I am used at work, which also gives us a style guide we can simply just cite.

Another goal is to change out the log in system to Mozilla Persona and eliminate the need for passwords. This, along with some other architecture fixes will make the platform a bit safer.

ZenIRCBot

This project has been gathering more users as well as contributors. Unfortunately it has been sitting there bitrotting (from my standpoint) due to being too busy for it. I am going to be trying to take over part of the May PDXNode hack night as a ZenIRCBot hack night.

This code base is also in dire need of a cleanup. We have 3.0 coming out soon, along with that I’m also going to be moving it under an org and splitting out various parts into their own repos under that org. Once that is done, I’ll be adding the backwards compatible changes like multiple server support. The nodejs version will be the blessed version and I’ll try to keep the python and clojure versions up to date but I don’t want to let them hold back the bot.

Finally, I’ve already added Aaron Parecki as a contributor and we’ll be code reviewing each other’s patches as well as sharing the burden of accepting pull requests and such.

pytmux

This is a newer project that is currently in a working state but I’d like finish some features so can release 1.0 and leave the project in a stable state.

The next steps for this are some more of the basic features (which are already filed as issues on github) as well as taking some time looking at the other projects in this space and determine what a 1.0 release should look like. This should be a minimal amount of hacking and should result in something that doesn’t require much maintenance.

hackspots.net

This project hasn’t even started other than gathering data. There is lots of hope in it though, and I really want it to exist. It has a lot of potential for those of us in town to discover new places to go, and to provide a place to send people who are new to town.

The project needs to be inited, in an effort to not polarize to one of the two bigger server side web languages (Python/Ruby) I’ll likely be going with nodejs. Theoretically there is a code base that was already started but it isn’t open source yet and rather than wait/force it to go open, I can just build it myself.

Django Debug Panel

This project has wonderful potential and high aspirations. Unfortunately it is also quite a bit of work. I have lots of prior art to sort through, issues to create, then finally I have to build it and document the protocol. This project is on the back burner for now until I can clear some other things off my plate.

training.wraithan.net

This one is in fact just throwing a 500 right now. I upgraded some stuff and it is all broken. As I get ready to do more century rides this summer I will want to have this around. Also I’d like to add integration for more than just DailyMile. There isn’t a ton of work to do, other than getting it working again.

Summary

I have a lot of projects to work on, some of which are higher priority than others. I am feeling rather overwhelmed when you combine this list with my hobbies, work, and other obligations. Hopefully, if you are using any of these projects, you’ll be patient with me as I try to find the time to improve them all.

PyCon 2013

I’ve spent the last week hanging out in Silicon Valley for PyCon as well as to hang out with my co-workers. This year’s experience was very different from the previous years, which I can probably attribute to a couple things.

First, I drove down with my friend and co-worker Rob Hudson, which allowed me to bring my bicycle. Having a way to get around that isn’t just relying on the public transit is pretty amazing. I’ve gotten lost a few times but overall it has been pretty fantastic. It also means I am not getting out of the habit of spending time on my bicycle each morning and evening.

Second, I am sharing a house with co-workers and new friends of mine (Tarek, Alexis, Oliver, and Julien) which changes things pretty drastically. I no longer go back to a lonely hotel room, I have a comfortable house with friends. I can cook breakfast or dinner, spend time chatting with about code, projects and linguistics until late into the night, etc. It also means I am forced to explore the surrounding area a bit since I bike through it.

Finally, I am a Mozilla employee this year. I am not a funemployed guy who has only worked at small time startups, instead I’ve worked on a high scale website at a company that plenty of people can recognize.

It has been a wonderful time at PyCon, I have another day of sprints left, then I head to MV to hang out with my co-workers for a day before I take the long train ride back to Portland.

pytmux Released

So this last weekend I wrote a tool named pytmux. It is a basic session builder/wrapper around tmux so you can get going faster when you start up your system. It uses a JSON based config files, is pretty minimal right now, but I hope to make it better in the future as I use it more.

The idea is you specify what you want a session to look like in JSON, like so:

{
    "name": "wraithan.net",
    "windows": [
        {
            "name": "editor",
            "command": "workon wraithan.net && emacs"
        },
        {
            "command": "workon wraithan.net && make regenerate"
        },
        {
            "command": "workon wraithan.net && git pull"
        }
    ]
}

Then you run:

pytmux run wraithan.net  # This is keyed off of file name.

And blamo! It builds a session as well as it can. It also has convenience commands like pytmux list, pytmux edit <config>, and pytmux doctor. Which you can learn about in the README currently. Better docs (such as sphinx on RTD) in the future if that is really needed.

Anyway, I hope y’all like it. Feel free to open issues on the tracker on GitHub if there are any features missing that you’d like.

Publishing New Content

I am currently debating between two different ways of dealing with publishing new posts. On one side I have a really simple fabric file that lets me publish from any of my OS X or Linux systems. On the other side I am considering setting up my weblistener from ZenIRCBot and using that to listen for call back from GitHub saying there is new content.

The fabric solution is an already working solution that doesn’t require much upkeep and because it does the push as well as going to the server and publishing it is the same amount of commands. It doesn’t have a server side component might crash (other than the sshd which I trust.) But it restricts me from posting from certain devices of mine.

The automatic publishing solution has two daemon scripts and the redis daemon to get working. I could cut this down to a single script but that requires writing more code which hasn’t been tested. On the other hand it just requires me to push my new posts and other changes and see them on the site rather rapidly. This allows me to use GitHub for windows or mobile applications. I game from windows and one of my blogs is about gaming which makes this solution pretty ideal.

I think I am going to setup the automatic publishing and see how it goes. I don’t have to remove my fabric setup because I add the automatic publishing which lets me fall back on it. When I have the whole thing working I’ll do a full write-up on it including source.

Get Involved

Getting involved is something I’ve blogged about a few times on here. Each time has been a pledge to get more involved in the open source community in different ways. I am more involved now than I have ever been previously. I feel comfortable finding an issue in a project, forking it, fixing it and sending a pull request. Also, I find myself writing docs for projects and sending them as pull requests as well.

I was reading a post from Alex Gaynor about funding open source developers. I am all for that and in fact am using Gittip to fund several developers. Currently, I only fund each developer $3/week, which only comes out to $13.50 a month for each of them. But, I am unsure how many people I am going to end up funding and want to feel things out a bit before I commit more than that.

Now I find myself putting forward a little time and money here and there to various projects but I still don’t feel like that is enough. I can’t seem to get past the 2-3 commits on a project then walk away mentality that I’ve built up.

My next goal is to become really involved in some project or community, and not because it is convenient but because I find it fun and engaging. In this goal though, I’m not going to beat myself up for not getting deep into a project. Just getting more commits in—be it docs, tests, or actual code—will improve my impact on the community. If I end up just being a nomad who dabbles in many projects but manages to consistently do that, I’m ok with that.

ZenIRCBot 2.2

ZenIRCBot! I haven’t spoken about this for a while on my blog but here I am. I gave a talk on ZenIRCBot yesterday here at Open Source Bridge. The talk wasn’t great but Eric Holscher also gave a talk and his was fantastic.

On to the main topic of this post though, something that I was working on months ago but got side tracked when I decided to finally get a job again is ZenIRCBot 2.2. Most of this update is the change from an internal API to ZenIRCBot API being its own beast that is on NPM and PyPI. The internal API is depreciated and I plan to remove it in 2.4. There will be no continued development on it. Instead the new API libraries will be developed. If you have additional languages that you’d like supported please feel free to write an equivalent library and send a pull request.

There should also be better protocol parity across the various versions of the bot (node.js, python and clojure). And the docs should much more closely match what happens, regardless of what version of the bot you are running. This was facilitated by finally writing a way of doing integration testing. It is still pretty new and developing rapidly but it has already served a great purposed.

If this release breaks anything for you please let me know, preferably as an issue on github.