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.

You’ve Been Promoted: Silver!

I came back to the game about a week ago and got placed in Bronze. Which is totally fine since I’ve been out of the game for a while. I’ve been winning most of my games and knew it was only a matter of time before it bumped me up to Silver.

Image

I am playing with some of the builds from http://protossbuilds.wordpress.com/ while focusing on my mechanics. Making sure I am making probes and pylons, getting my expansions as I can, and scouting. Once I start to feel a bit more comfortable with that, I’ll be trying to pick a definite build for each race. I’ll be leaning toward safe macro builds because that has generally been my style.

I hope with my practicing a couple games most days of the week I’ll be able to get further up and into Gold. That will be my definite cue to pick my builds and get solid at them. Once I make it into Plat my builds will actually start to matter, I don’t expect to make it into the Plat for a couple months, but I hope to before AHGL Season starts, if anything for intimidation factor.

AHGL Season is Nearing!

The AHGL is a corporate vs corporate Starcraft 2 and League of Legends league. Last year was my first year participating and I took over as the captain of the Mozilla Starcraft 2 team. The skill level in the league is really varied (Bronze to Master) and there are two sub leagues, A and B. A league teams have Masters players or are mostly Diamond and higher. B league teams are Diamond and lower, Mozilla’s team falls into that one.

Intro out of the way, I just realize that the preseason is coming up soon! The organization and such starts in October and the first games are November/December! What that means is I should probably start playing Starcraft 2 regularly again. Despite saying at the end of last season that I was looking to change races, I think I am going to stick with Protoss.

I’m going to start going through VODs of recent tournaments and chatting with my friends to see what the safer builds in each match are. I find myself most comfortable when I can get to 3 bases, though from what I hear that is less easy these days so I may need to learn some 2 base strategies. I’ll check back in later with what builds I’m going to focus on learning, as well as how I plan on training.

Blog Migration to WordPress

Pelican is a fine blogging platform, but I found I was more tempted to work on the blogging platform itself than to blog on it after a while. Then I’d feel guilty because I was using custom builds of Pelican that I had a hard time upgrading to anything new on… etc… etc.

I’ve moved to wordpress.

Is it the most secure?
Nah.
Does it have every feature I want?
I’m using the hosted version, so no it doesn’t.
Is it in a language I like hacking in?
Not even close.

So it begs the question why I’d use it. The biggest reason is that it is purely a blogging platform. I can just sit back and write posts. If the day comes that I want to get away from wordpress it is a common enough action that there is plenty of tooling around exporting your data.

Hoping that the end result is start blogging again, especially after the initial honeymoon period.

Uncomfortable and Unsatisfied

I want to build a small website. Django feels a bit heavy for what I want to do, and I would like to give node more of an honest shot for building websites. I need to store some user data (name, email, notification settings). Also I need to store some topics and opinions on those topics. I’d like my users to be able to log in using Mozilla Persona.

The first thing that pops up when one goes to do websites using node is Express. You start using it, maybe asking a couple questions, and you find out noisy parts of the node world hate express and think you should use something else. Unfortunately, they may list one or two alternatives, likely those are things they wrote themselves or a friend of theirs wrote. They are probably especially young, which means there is unlikely to be drop in support for anything.

Once you get past that part, you are told there isn’t support for the 10 things you actually wanted to do, but don’t worry there are 100 modules for each of those things. You’ll have to learn everything about the web package you are using, as well as the packages you want to glue together, praying there is some sort of common api. Sorry though, this one is streams based, but not those streams you are used to, you have to write a compatibility layer. And this one isn’t stream based but doesn’t like the request object you handed it, etc etc.

I get that a lot of this is a matter of comfort. I feel better in django/python because I’ve been here for a long time. I know what modules are good and which ones to avoid. Maybe, if I can get over this uncomfortable feeling, I can make something satisfying. As it stands though, I am unable to find anything that makes me happy when it comes to building websites in node.

Consistency

I recently got my anonymous peer feedback at work. None of the negatives were surprising, though the positives were pretty uplifting. Shortly after I got that feedback, I read a blog post on things a person wished she knew earlier in her career.

Reliable is better than brilliant… After observing many of these individuals in action, I’ve realized that the output of hard, reliable, focused work over time, while less glamorous, always outweighs the value of short, ego-centric storms of genius.”

Shanley

That hits on a point that was made in a couple of my pieces of feedback. I am an extraordinarily inconsistent co-worker. Some weeks I am on and I close a bunch of bugs and get a bunch of patches in. Other weeks I am off and I close as few as 0 bugs. It is easy to go, “Well some bugs and projects are larger than others, that is why that happens.”

If I were to be honest, it is more about being distracted and/or burnt out. Leechblock has helped out a bit in that regard, but I still find other ways to be distracted, such as hanging out on IRC and compulsively checking all the messages that come in on my 30+ channel. Or maybe I tell myself I’ll just play a single level of a game, or read a single chapter of a book, but then I don’t have the self control to hold myself to that.

Now, I don’t have the answers as to how I am going to fix this, but I have started adding more tools to my repertoire. I wrote a script/webapp I have running locally that will tell me how many bugs I’ve closed per milestone. This way I can get a real feel for how inconsistent I am being, if I get a couple days in, and I am still lower than I’d like to be, I may shift gears and crank out a couple smaller bugs to get the brain juices flowing again.

My manager has provided me with some averages for the team, so I know where I should be myself. On top of that, he is very receptive to any ideas I have and wants to work with me to make stuff better. Part of dealing with flaws (especially ones that lead to anxiety like this one does for me) is admitting to it and then talking it through with people you trust.

If you have gone through this, or helped friends/co-workers in being more consistent, I am very interested in talking to you. xwraithanx on gmail, wraithan on irc.freenode.net and irc.mozilla.org, or any other way you happen to find for contacting me.

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.

Server Time

About a year ago, some friend and I were talking about each getting servers then going to a local data center and getting a third of a rack. There was lots of excitement but unfortunately most of us weren’t in a position to purchase the needed hardware at the time. Fast forward a year and now the topic has come up again but this time things are looking a lot more feasible.

Now, why would someone need or even want a hardware server in these days of fluffy cloud servers floating everywhere? Isn’t managing a server pretty lack luster now that we have these wonderful solutions like Heroku? It’s true, running a server isn’t glamorous, but it is cost effective depending on your skill level, needs, and willingness to put in a little bit of effort.

The cost is where it really shines. The up front cost of ~$1800 that I am looking at for the server I’d like is pretty steep, it doesn’t say, “I’m saving money!” when you look at it. But, how I like to look at it is how the cost breaks down over the course of a year or two. $150/mo if you put it over a year, $75/mo if you put it over two. Which still looks pretty hefty, but consider the amount of hardware you get for that. This is a dual Xeon system, each 4×2.4GHz, 64GB of RAM (easily able ramp that up to 256GB) and I’ll be running 1TB of redundant storage to start with and have the ability to expand that if needed.

This gives me the ability to replace a couple of my Rackspace VPSs as well as build sites that require out of band work to be done without paying $36/mo per dyno on Heroku. This is where my savings will start to kick in. Considering over 2 years I am looking at $75/mo for the hardware and $50/mo (likely closer to $40) for the hosting for a total of $125/mo. If I am able to take down my VPSs which total out to ~$35/mo, and replace 3 Heroku worker dynos, I am able to break even. If I use it more than that, then I am saving money. And with the level of hardware I am getting, it wont be hard to use it for more things.

All of this said, I’ll still be using Heroku to host my sites. Their deployment, add-on management, and databases are pretty great. Especially since I don’t want to have to deal with things like changing my nginx config every time I add a server, writing/modifying a deployment script for each new service, etc. I just get some extra things I’ve been wanting, and the ability to consolidate some of my servers and costs. Overall I am pretty stoked.

If you are a friend of mine, especially in the Portland area, and interested in joining us, let me know. I’ll gladly give you more information. We are keeping it to people we know and trust since people will potentially have hardware access.