Skip to main content.

Wed, 29 Jan 2014

What happens in my inbox

At this moment, I'm so impressed by what happens in my inbox. I see quotes like these, all referring to events or resources made as part of Open Source Comes to Campus.

I ran into these because I was searching for OpenHatch-related mails to reply to. I figured I should archive/delete the ones that are already taken care-of. So the mail mostly isn't directed at me; instead, it's just stuff in OpenHatch-land generally.

I seem to have worked on something that is at least moderately successful, and at least moderately well-organized. That is pretty seriously heartening.

[me] permanent link and comments

Mon, 30 Dec 2013

Schedule something with me

If you want to set up an evening hang out with me, or anything else where you'd like to meet up, here's the best strategy if you use Google Calendar:

  • Create an event on your calendar with the time and date. In the name of the event, summarize it (for example: "Alice and Asheesh catch up re: fundraising" or "Bob and Asheesh hang out at El Rio bar").
  • "Edit" the event, and add as a person to invite.
  • Click "Save" and send me an invitation.

To do an amazing job, here are some extra rules:

  • Always give me 24 hours or more lead-time.
  • Give me two options, one labeled "(backup)" -- for example. "Bob and Asheesh hang out at El Rio bar" and "Bob and Asheesh hang out at El Rio bar (backup)".
    • Then I'll click confirm on one of them, and I will click "No" on the other one. And that'll be that!

If you're too impatient for that (which is fine)

  • Submit two proposed times
  • Wait for me to eamil you saying yes (I'll also GCal invite you back)


This may seem bizarrely bureaucratic and impersonal, but since I often drop the ball on scheduling social or professional catch-up time, I wanted to create a system where successful results are easily achieved. In return for dealing with this automated interaction, you'll get a happy, relaxed, attentive Asheesh.

[communication] permanent link and comments

Thu, 26 Dec 2013

New job (what running Debian means to me)

Five weeks ago, I started a new job (Security Engineer, Eventbrite). I accepted the offer on a Friday evening at about 5:30 PM. That evening, my new boss and I traded emails to help me figure out what kind of computer I'd like. Time was of the essence because my start date was very next day, Tuesday.

I wrote about how I value pixel count, and then RAM, and then a speedy disk, and then a speedy CPU. I named a few ThinkPad models that could be good, and with advice from the inimitable danjared, I pointed out that some Dell laptops come pre-installed with Ubuntu (which I could easily swap out for Debian).

On Monday, my boss replied. Given the options that the IT department supports, he picked out the best one by my metrics: a MacBook Pro. The IT department would set up the company-mandated full-disk encryption and anti-virus scanning. If I wanted to run Linux, I could set up BootCamp or a virtualization solution.

As I read the email, my heart nearly stopped. I just couldn't see myself using a Mac.

I thought about it. Does it really matter to me enough to call up my boss and undo an IT request that is already in the works, backpedaling on what I claimed was important to me, opting for brand anti-loyalty to Apple over hardware speed?

Yes, I thought to myself. I am willing to just not work there if I have to use a Mac.

So I called $BOSS, and I asked, "What can we do to not get me a Mac?" It all worked out fine; I use a ThinkPad X1 Carbon running Debian for work now, and it absolutely does everything I need. It does have a slower CPU, fewer pixels, and less RAM, and I am the only person in the San Francisco engineering office not running Mac OS. But it all works.

In the process, I thought it made sense to write up some text to $BOSS. Here is how it goes.


Thanks for hearing my concerns about having a Mac. It would basically be a fairly serious blow to my self image. It's possible I could rationalize it, but it would take a long time, and I'm not sure it would work.

I don't at all need to start work using the computer I'm going to be using for the weeks afterward. I'm OK with using something temporarily that is whatever is available, Mac or non-Mac; I could happily borrow something out of the equipment closet in the short term if there are plans in the works to replace it with something else that makes me productive in the long term.

For full-disk encryption, there are great solutions for this on Linux.

For anti-virus, it seems Symantec AV is available for Linux <>.

It sounds like Apple and possibly Lenovo are the only brands that are available through the IT department, but it is worth mentioning that Dell sells perfectly great laptops with Linux pre-installed, such as the XPS 13. I would perfectly happily use that.

If getting me more RAM is the priority, and the T440s is a bad fit for $COMPANY, then the Lenovo X230 would be a great option, and is noticeably less expensive, and it fits 16GB of RAM.

BootCamp and the like are theoretical possibilities on Macs, but one worry I have is that if there were a configuration issue, it might not be worth me spending work time to have me fix my environment, but instead I would be encouraged for efficiency to use Mac OS, which is well-tested on Apple hardware, and then I would basically hate using my computer, which is a strong emotion, but basically how I would feel.

Another issue (less technical) is that if I took my work machine to the kinds of conferences that I go to, like Debconf, I would find myself in the extremely uncomfortable position of advertising for Apple. I am pretty strongly unexcited about doing that.

Relating to the self-image issue is that it means a lot to me to sort of carry the open source community with me as I do my technical work, even if that technical work is not making more open source software. Feeling part of this world that shares software, and Debian in particular where I have a strong feeling of attachment to the community, even while doing something different, is part of what makes using computers fun for me. So it clashes with that to use Mac OS on my main machine, or to feel like I'm externally indistinguishable from people who don't care about this sort of community.

I am unenthusiastic about making your life harder and looking like a prima donna with my possibly obscure requirements.

I am, however, excited to contribute to $COMPANY!

I hope that helps! Probably nothing you couldn't have guessed in here, but I thought it was worth spelling some of that out. Happy to talk more.

-- Asheesh.

[debian] permanent link and comments

Fri, 18 Oct 2013

On Humility

Today I'd like to quote a passage from one of my favorite books, Open Advice, edited by the astounding Lydia Pintscher.

I'd like to quote it because someone helped me with a technical problem today, and today was definitely a day when I needed it.

This passage is written by Rich Bowen.


I had been doing technical support, particularly on mailing lists, for about two years, when I first started attending technical conferences. Those first few years were a lot of fun. Idiots would come onto a mailing list, and ask a stupid question that a thousand other losers had asked before them. If they had taken even two minutes to just look, they would have found all the places the question had been answered before. But they were too lazy and dumb to do that.

Then I attended a conference, and discovered a few things.

First, I discovered that the people asking these questions were people. They were not merely a block of monospaced black text on a white background. They were individuals. They had kids. They had hobbies. They knew so much more than I did about a whole range of things. I met brilliant people for whom technology was a tool to accomplish something non-technical. They wanted to share their recipes with other chefs. They wanted to help children in west Africa learn how to read. They were passionate about wine, and wanted to learn more. They were, in short, smarter than I am, and my arrogance was the only thing between them and further success.

When I returned from that first conference, I saw the users mailing list in an entirely different light. These were no longer idiots asking stupid questions. These were people who needed just a little bit of my help so that they could get a task done, but, for the most part, their passions were not technology. Technology was just a tool. So if they did not spend hours reading last year’s mailing list archives, and chose instead to ask the question afresh, that was understandable.

And, surely, if on any given day it is irritating to have to help them, the polite thing to do is to step back and let someone else handle the question, rather than telling them what an imbecile they are. And, too, to remember all of the times I have had to ask the stupid questions.

[people] permanent link and comments

Sun, 28 Jul 2013

Recommendations on setting up wifi repeaters

My old housemate Will emailed me saying he wanted to get a second wifi router to use as a repeater. I realized that I haven't written my standard recommendation down ever, just repeatedly used it to great success. So, here it is:

My general recommendation here is to build your own "wifi repeater" out of two "wifi routers", rather than buying something that calls itself a repeater. It relies on Ethernet bridging rather than any advanced wifi technology, which in my opinion makes it easy to diagnose.

 |   Main wifi router                                                  |
 |  uplink                  port 1    port 2       port 3      port 4  |
   |     |                 |      |  |         |  |       |   |      |
   +-----+                 +---+--+  +---------+  +-------+   +------+
     |                         |
     |                         |
     |                         |
     V                         |
  +-----------+                |
  | cable     |                |
  | modem or  |                |
  | whatever  |                |
  +-----------+                V
                        +----------------+                    +------------------------+
                        |                |  a/c power         |                        |
                        | ethernet over  +------------------->| ethernet over          |
                        | powerline      |                    | powerline              |
                        +----------------+                    +----------+-------------+
  DO NOT USE!!!        +------+                                          V      
+--------------------->|      |            +-------+   +---------+  +----------+  +--------+
                       |uplink|            |port 1 |   | port 2  |  |port 3    |  | port 4 |
                       |   second wifi router  (DISABLE DHCP on internal network on 2nd rtr)

If you don't want to do ethernet over powerline between them, you can do regular old Ethernet.

Crucially, you must disable DHCP for the second wifi router. Then anyone on the second network will have their DHCP broadcasts answered by the first wifi router.

Also you should manually set the admin IP on the second router to something like if the main network uses as the admin IP address.

Do not connect the second network's uplink port to anything.

It doesn't really matter if you set the ESSID (network name) of both networks to be the same or different. I would gently recommend setting them to be the same, and have the same key, so people's laptops can happily roam between them.

Note also that if you need wired network connectivity for computers near "2nd router", any computers you plug into the "port 1-4" ports will work fine. And the choice of port 1 on "Main wifi router" and "port 3" for "second wifi router" as the connection points is totally arbitrary.

Happy wifi-ing!

[sysop] permanent link and comments

Tue, 11 Jun 2013

De-spammed this blog (with Naive Bayes)

This morning, I was trying to decrease the amount of email in my inbox. I had a few messages with subjects like:

  • comment on
  • comment on
  • comment on

But all the comments in this case were spam. I'm using an Akismet API plugin for pyblosxom, but that has a few shortcomings. Like anything else, it misses some spam, but moreover, it doesn't help me find and remove old spam comments in bulk.

My pattern with email is basically to ignore it for a while, and then deal with it in bulk, sometimes missing messages from the past. The result is that I have often missed these comment notifications, and it was a bit of a drag to figure out which comments I had dealt with already.

So I wrote a small tool this morning. Here is how it works:

  • It loops over the comments directory.
  • A script reads each comment and prints it to standard out in mailbox format, piping the message to spambayes for processing.
  • The main script shows me spambayes' guess as to if the message is spam, as well as spambayes' certainty, and asks me to confirm. If I confirm it is spam, it asks if I want to delete it. (If it notices spambayes got it wrong, it retrains spambayes.)
  • After I have dealt with the comment, it creates a stamp file next to the comment so that it won't ask me about that the next time I run the tool.

Voila! A spam moderation queue with artificial intelligence.

You can find it here, on my Github account:

Permission to re-use the code is granted under the terms of CC Zero or Apache License 2.0, at your option.

Moreover, now I believe there are zero spam comments left lying around this blog!

[software] permanent link and comments

Sun, 12 May 2013

Crockpots and kitchen improvements

Preeya and I cooked together at my place yesterday, and after the event, I wrote down some notes so that next time it can be even better.

The idea of the cooking was to create leftovers for us both to eat during the work-week. Preeya's angle is that she loses interest in eating something during cooking it, so we thought we could make food for each other.

We cooked:


Here are the notes I wrote up from the event. Mostly I'm sharing these to provide some insight into the process of "Do something in the kitchen, then think about how to improve the kitchen" that I've been going through a lot lately.

Dry things we could have had but didn't

  • Brown rice
  • Black beans

(Fix: bought them by Google Shopping Express)

  • Canned diced tomatoes... (reading suggests Hunt's is good; fix is to stock a few cans. I should get that from a local store since Google Shopping Express doesn't have Hunt's. Muir Glen Organic is also good, says this. Personal note: Jersey Fresh brand is super great, but hard to get.)

Locations of things in kitchen

  • Scissors were easy to use once Asheesh said where they were.
  • Counter space was not cleared-off before we began.
  • Oven gloves were in a weird spot. (Fix: I moved two magnetic hooks
  • We didn't have a garlic press, which would have been nice. (Fix: I did some research and bought . Note that this press does not need one to peel the clove, which is good news.)
  • Now that the 5lb gag of basmati is open, I'm afraid it'll get infested with moths. (Fix: Buy a 1 gallon Mason jar and see if I can fit all the rice into that.)
  • Some spices aren't in the "spice rack" (but there's a fix already in the works for that, awaiting delivery of more spice jars).
  • Preeya didn't know where chopping boards were, though they were easy to get once found.
  • We tried two different locations for Preeya's slow cooker, settling on to the right of the sink / underneath the window there.


  • The pork butt was very reasonably priced, but it meant round-tripping to Mission Street for Preeya's favorite meat market. Asheesh could have tried La Gallinita next time.
  • Buying the rest of things was easy. Casa Lucas had everything, I think.


  • Things in the slow cooker take ages to cool down.
  • We don't have any tupperware large enough to fit a full 4 quart slow cooker cooking result.
  • The programmable-ness is super nice in Preeya's slow cooker.
  • Using our can opener on the Maesri curry paste just sucks.
  • Preeya had to go back to her place to get her slow cooker, which we could have thought of.
  • Preeya mentioned the Mezzaluna style of cutting board, which has a dome to rock a knife within, for dicing. (Other names for similar things: ulus, uluut.) Such a thing might be worth getting.


  • The rice in the recipe for Asheesh became mush. Should probably have stuck to brown rice.
  • Asheesh thought he'd add spinach to Preeya's recipe but hasn't yet.


  • It was nice cooking together. The scheduling was somewhat messy. We could have pre-picked our recipes. Preeya didn't bring a computer so only Asheesh really looked.

[food] permanent link and comments

Mon, 06 May 2013 back in business

For a few years, I had been storing public notes to myself (that might possibly be useful to others) at

Then OpenHatch happened in May 2009, and I paid decreasing attention to that site.

Eventually, as a semi-unprotected MediaWiki instance, it became spammed to smithereens.

Last night and this morning, I did the following things:

  • Made it so only sysops can edit the site.
  • Clicked every link off the front page, and manually reverted it to the most recent non-vandalized page I could find.

Now you can more easily read my scratchy notes, like:

Honestly, it is a huge relief to see those old bits of text back on the web. It makes me feel so much more pleasantly connected to the timeline.

[sysop] permanent link and comments

Sat, 13 Apr 2013

Why are you doing all of this?

fijal just asked me, on IRC:

<fijal> paulproteus: if you have a second, can you tell me *why* are you doing all of this?

Briefly, here is the reason I work on OpenHatch:

For free software to take over the world, and for all users of software to be able to have control over their computing, we need a few things it seems to me.

  1. Software that is free ought to be better.
  2. That will probably take more collaboration and contributors.
  3. More people ought to feel comfortable doing things like filing bugs and participating in projects.
  4. For people to understand that, it helps a great deal if they know how to program.
  5. Free software contribution experiences are best when you have in-person communities to work with and bounce ideas off, or at least people who you know fairly well even if you collaborate remotely.

I think that explains basically all of what we do at OpenHatch.

[free-culture] permanent link and comments

Thu, 07 Feb 2013

Notes from attempting to despam a wiki with git-remote-mediawiki

I just tried to despam a mediawiki instance with git-remote-mediawiki.

The idea is as follows:

  • Make a list of bad users, either by skimming Special:RecentChanges, or by some other more automated means. For example, use 'git log' to get everyone since the last time you felt the wiki was clean:
git log --since='Wed Dec 5 22:57:06 2012 +0000'

(You can process that with either 'grep ^Author' and so on, or you can use an overwrought Python script I wrote.)

  • Get a list of their commits:
git log --author=bad_user_1 --author=bad_user_2 --pretty="format:%H"

Here's where things start to go wrong.

You might try to revert them all:

git log --author=bad_user_1 --author=bad_user_2 --pretty="format:%H" |
xargs -n1 git revert

That works great until the first merge conflict.

So then you write a wrapper script that does "git revert $1 || git revert --abort", and you can still only revert the first few hundred (out of ~800) spam edits because one of the commits causes a conflict when you try to revert it.

Why a conflict? I suspect it's because there are spam edits that I neglected to include in the revert stream. (Update: The conflict was actually a real conflict -- some kind soul on the web had already reverted a bunch of the spam edits!)

In our case, there are fairly few pages getting spammed, so it'd be simpler to 'git log' the pages we care about and revert back to the commit IDs that look clean. 'git revert' could still be useful in the case of tangled history, but (apparently) there is a limit to how useful it can be, anyway.

Oh, also:

It'd be useful to be able to create MediaWiki dump files from git-remote-mediawiki exports. That way, I could use 'git rebase -i' to clean up history. (That would break links *unless* the MediaWiki revision IDs somehow stayed constant for the revisions with the same content. Maybe that's feasible. Actually, the simplest way might be to write a tool that filters the dump file itself, rather than exporting straight from git-remote-mediawiki.)

Also also, I fixed a format string bug in git mergetool, one of my favorite little pieces of git.

P.S. In this corpus, of the IP address editors (i.e., not logged in), 0 (of 16) are spammers. About 80% of the logged-in editors are spammers. (Admittedly our wiki does require you to log in if you are posting new URLs to a page.)

Update: It is way faster if you run it with low latency to the MediaWiki server in question. It probably could be adjusted to make fewer API calls, and to make more of them in parallel.

[software] permanent link and comments