Lock straps



I love my Soma Porteur Rack and I love how it helps me take weight off of my body and onto my bike.

However, my small u-lock didn’t securely fit on the rack with a single bungee chord.

So, I sewed these straps out of 1 1/2″ velcro.

I’m interested in seeing if the velcro makes lock-ups more annoying and how the velcro holds up to getting wet and dirty.

The Che Cafe vs. profit-seeking models at public universities

The Che Cafe, a collectively run all-ages music venue in San Diego, is facing closure by university administrators. Luckily, a court has temporarily halted their eviction.

It’s a nice venue and I’ve played there with Defiance, Ohio a number of times. Long-running, all-ages, DIY spaces are important, but this this paragraph from a press release about the court order connects the cafe with larger dynamics around the financialization of public higher education playing out in so many of our communities and lives.

Arguably, the real reason for the lease termination is economic. And this is why non-students and the broader community should care and join this push to preserve the venue, even if you have never attended or heard of it before. The University administration has shifted to decisions rooted in valuing revenue-generation and profit-seeking above all else. The Che Facility does not bring in windfall profits for the University. It stands in contrast to a Starbuck’s licensed cafe, or a parking lot where each space brings in hundreds of dollars, or even to a new science building that can house researchers securing grant dollars from which the University can take a sizeable cut. The social spaces the University seems to prefer are privately operated, profit-driven and not dedicated to providing practical educational opportunities, self development and creative expression and growth that more traditional spaces like the Che Cafe affords.

Fuzzy-matching strategies

This is a list of strategies for doing quick fuzzy matches that I’m summarizing from a thread that started on June 9, 2014 on the NICAR-L mailing list.

Fuzzy Lookup Excel Add-on

This add-on created by Microsoft can be downloaded here.

It reportedly runs into trouble when trying to match ~3000 records with another ~3000 records.

Increasing the threshold from it’s default to a higher value might provide better performance.

Reconcile CSV

Reconcile CSV is a project of Open Knowledge labs that is described as

Reconcile-csv is a reconciliation service for OpenRefine running from a CSV file. It uses fuzzy matching to match entries in one dataset to entries in another dataset, helping to introduce unique IDs into the system – so they can be used to join your data painlessly.

MySQL’s Soundex() function


Dan Nguyen provided this recipe for OpenRefine:

If you’re looking for non-Excel/database solutions…you can also do it by hand with OpenRefine.

  1. Combine both lists into one file with a single name column
  2. Import it into Refine
  3. Create a second column called “refined_name_key” that is a duplicate of the original name field
  4. Cluster and de-dupe using Refine’s text-clustering
  5. Export out (into something like a CSV)
  6. Import this table into your existing setup
  7. Join the name fields of the two original tables against the “refined_name_key”



Notes and connections from reading “It’s Complicated”

Here are a few quotations that stood out to me as I was reading danah boyd’s recent work on youth and social media, It’s Complicated.

Since finishing the book, it’s been a useful frame for thinking about media stories about the Internet. While boyd’s focus and research practice was around youth use of social media, the book is a useful guide for navigating broader cultural narratives around media and technology. It feels as though youth have always been the focus of cultural aspirations and fears, so it makes sense that the way they use emerging media and the way they are framed with it, speaks to cultural attitudes and practices about the media at large.

Chapter 6: Inequality

Perhaps Robert Moses did not intentionally design the roadways to segregate Long Island racially and socioeconomically, but his decision to build low overpasses resulted in segregation nonetheless.  In other words, the combination of regulation and design produced a biased outcome regardless of the planner’s intention.

The first time I read about the social impact of Moses’ plans was in Jane Jacobs’ The Death and Life of Great American Cities

This idea of paying attention to the outcome rather than the intention reminds me a lot of an awesome session I went to at the 2014 NICAR conference where Nikole Hannah-Jones talked about her reporting on housing segregation. It’s really amazing stuff. She contributed to the Propublica series Living Apart and a This American Life segment.

Chapter 7: Literacy

In a networked world, in which fewer intermediaries control the flow of information and more information is flowing, the ability to critically question information or media narratives is increasingly important. Censorship of inaccurate or problematic content does not provide youth the skills they will one day need to evaluate information independently.

I thought this was an interesting breakdown of how a bug in MySpace’s code provided an opportunity for youth to learn HTML/CSS/JavaScript with varying levels of sophistication. I’d hazard to guess that the goal of a custom profile compelled youth who would never choose to take or have access to a computer science class at their schols, to investigate these topics.

Excited by the ability to create “layouts” and “backgrounds,” teens started learning enough code to modify their profiles. Some teens became quite sophisticated technically as they sought to build extensive, creative profiles. Others simply copied and pasted code that they found online. But this technical glitch–combined with teens’ passion for personalizing their MySpace profiles–ended up creating an opportunity for teens to develop some technical competency.

Wikipedia often, but not always, forces resolution of conflicting accounts. Critics may deride Wikipedia as a crowdsourced, user-generated collection of information of dubious origin and accuracy, but the service also provides a platofrm for seeing how knowledge evolves and is contested.

How we picture the issue of digital inequality also has political implications. As communication schilar Dmitry Epstein and his coauthors argue, when society frames the digital divide as a problem of access, we see government and industry as the responsible party for addressing the issue. When society understand the digital divide as a skills issue, we place the onus of learning how to manage on individuals and families. … The burden of responsibility shifts depending on how we construct the problem rhetorically and socially. The language we use matters.

Chapter 8: Searching for a public of their own

Boyd, who apparently came of age in the same region of the United States where I grew up, often uses the shopping mall to compare and contrast digital publics inhabited by youth. Early in the book, boyd writes:

I also take for granted, and rarely seek to challenge, the capitalist logic that
underpins American society and the development of social media. Although I believe that these assumptions should be critiqued, this is outside the scope of this project. **

The way in which markets mediate teen publics is huge. My first impulse was to lament the way in which public spaces for youth are now constructed for them in ways that are ultimately exploitative. Then I remembered how many of the publics I inhabited as a teenager were fundamentally commercial spaces: grocery store parking lots, record stores, clothing boutiques, basements of student housing at expensive private colleges. Ultimately, I think paying attention to the way that youth subvert the intended uses of public space is more interesting and informative than only focusing on the way in which capital mediates spaces for youth.

** On the other hand, boyd made a PDF of the book available, explaining:

My desire to be widely read is why I wanted to make the book freely available from the getgo. I get that not everyone can afford to buy the book. I get that it’s not available in certain countries. I get that people want to check it out first. I get that we haven’t figured out how to implement ‘grep’ in physical books. So I really truly get the importance of making the book accessible.

Re: a youth carefully curating his Facebook posts but feeling like Twitter is a more intimate media.

Manu’s practice contradicts the assumptions then held by adults, who often saw Facebook as a more intimate site than Twitter because of each site’s technical affordances and defaults.

What makes a particular site or service more or less public is not necessarily about the design of the system but rather how it is situated within the broader social ecosystem. … In this way, the technical architecture of the system matters less than how users understand their relationship to it and how the public perceives any particular site.

I find that a lot of times, as someone who saw the evolution of much of the Internet and feels pretty comfortable using it’s tools, I end up using the Internet and emerging social technologies in a way that’s not very pragmatic, and as a result not very emergent.

This passage of the book reminded me of this anecdote from Cory Doctorow:

My old Informationweek editor, Mitch Wagner, once discovered some young girls holding a gossipy chat in the comments section of an old blog post of his; when he asked them what they were doing there, they told him that their school blocked all social media, so every day they picked a random blog-post somewhere on the Internet and used it as a discussion board for the day.

Other notes

In one chapter, boyd tells the story of college admission officials being shocked when an academically gifted high school student whose admission essays talked about trying to escape the gangs and violence of his neighborhood, had social media profiles, which were Googled by the admissions officers, containing references to gangs and gang affiliations. boyd argues that this isn’t contradictory, or disingenuous, it’s an example of youth deftly using different channels for different audiences for survival and mobility. Voicing gang affiliations could be necessary for survival within the student’s community and peer group, the audience of the social media profiles. Their aspirations for the future would be problematic or misunderstood by their social media viewers, but really important for officials at the college they wish to attend. Problems arise when information reaches across the intended audiences that people balancing complicated identities imagine.

I thought of this anecdote and analysis immediately when a friend shared writing about the Eagles dumping player DeSean Jackson over alleged connections to gangs.

Further reading

New music

DIY Ping Pong Table


We’re in the midst of the polar vortex so outdoor, physical activity is pretty unpleasant.  My ankle is still messed up from soccer, so I’ve been out of commission from playing soccer, and I’m starting to get stir-crazy.  Inspired by this small apartment video with all its disappearing furniture, I decided to build a table tennis table that could, without too much pain, be disassembled and stowed out of the way.

This design was inspired by this DIY Ping Pong Table Instructable, which is good for a rainy day too.  The major difference is that I only used 3/4 of the 4′ * 8′ board and that the surface rests on the dining room table instead of having to have it’s own legs.

Parts List

Component Cost Amount Total
Franklin® Sports Insta Table Tennis To Go $10.98 (on sale, list price is $14.99) 1 $10.98
3/4″ * 49″ * 97″ Melamine $22.98 1 $22.98
Wing Nut $1.18 4 $4.72
#10-32 * 1-1/2″ flat head nuts and bolts (5 pack) $1.18 2 $3.36
4″ Mending Plate (2 pack) $2.49 2 $4.98
Total  $47.02


It seems like it would be better to countersink the screws, but I didn’t have the tools to do this.  Surprisingly, the ball doesn’t often land near the screws, so even though they’re not flush, it’s not a problem.


The boards are really heavy, making it somewhat hard to assemble and disassemble.  I avoided lighter materials, because some of my preliminary research suggested that lighter or less-dense boards didn’t allow the ball to bounce.


It’s difficult to unscrew the connecting screws, even though they’re wingnuts.  It might be possible to get nuts with larger wings, or to use screws with a square flange, so they won’t spin as the nuts are being removed.

The ends of the table sag a tiny bit, which causes the surface to be uneven and make for some weird bounces.  Using longer mending strips or adding one in the middle of the table might help with this.

Android emulator cheatsheet

Lately, I’ve been testing some mobile web apps using the android emulator.  It’s a piece of software that I use infrequently enough that I can’t remember some needed commands.

Launching the emulator

$PATH_TO_ADT_BUNDLE/sdk/tools/emulator -avd $AVD_NAME

~/local/adt-bundle-linux-x86-20130729/sdk/tools/emulator -avd AVD_for_Galaxy_Nexus_by_Google

Note: AVDs are stored in ~/.android/avd

Launching the Android Virtual Device (AVD) manager

$PATH_TO_ADT_BUNDLE/sdk/tools/android avd

Switching screen orientation

Switch to previous layout orientation (for example, portrait, landscape): KEYPAD_7, Ctrl-F11

Switch to next layout orientation (for example, portrait, landscape): KEYPAD_9, Ctrl-F12


Accessing servers running on localhost



Debugging JavaScript in the Android Browser

console.log() will output to the log stream viewable with the adb logcat command.

You can filter the logs to only see the browser messages by using

adb logcat browser:* *:S


Colonial Games

Over the holidays, I visited my family and played a board game called Freedom: The Underground Railroad, that simulated  abolitionists helping enslaved people to escape to Canada from plantations in the South.  I have mixed feelings about the game.  I liked that it was a collaborative game, and in many ways provided a richer, more nuanced context for the abolitionism and the underground railroad than what I learned in grade school.  At the same time, with players playing as abolitionists, the game felt like it reinforced a savior mentality and tended to minimize the agency of enslaved people and push the horror of slavery and the experience of the enslaved to the background in the game’s historical narrative.  Still, it felt refreshing to play a historical game that wasn’t centered around war, resource exploitation, or colonialism.

When I first started playing contemporary strategy board games for adults, I was struck by how many games had an uncritical colonial narrative.  On a recent trip to LA, I went to an exhibit titled Connecting Seas at the Getty and some of the media in the exhibition made me think that there might be a historical precedence for such colonial games.

Below is a board game from the early 1900s, used to promote Germany’s colonial exploits, that was featured in the exhibit.  I wasn’t able to find an image of the game’s cover, but it featured an illustration of a German soldier or sailor surrounded by racist architectures of Africans.

German Colonial Game, ca. 1910s, mixed media including chromolithograph. Los Angeles, Getty Research Institute.
German Colonial Game, ca. 1910s, mixed media including chromolithograph.
Los Angeles, Getty Research Institute.

Like any media, games have been and are used to promote normative political or cultural practices of values.  Are there any games that reflect a more critical framing of colonialism in history, or a more critical speculative colonial narrative?

Setting up a local Drupal development environment on Ubuntu 12.10

I’ve recently started developing with the Drupal content management framework.  I did a lot of work with Drupal in the past, but haven’t done much work with the platform since Drupal 6.  While it still feels a bit strange coming from MVC frameworks and more expressive languages, it seems like Drupal and PHP have come a long way in offering a fluid development experience in the last few years.  This is how I set up my development environment in Ubuntu 12.10, though it probably works for newer releases of Ubuntu or other Debian-based Linuxes.

# Add the PHP5 PPA
sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update

# Install PHP5.  This will also install a recent version of Apache
sudo apt-get install php5

# Install PEAR, this will make it easier to install drush
sudo apt-get install php-pear

# Install drush via PEAR
pear channel-discover pear.drush.org
sudo pear channel-discover pear.drush.org
sudo pear install drush/drush

# HACK: The first time I ran drush it needed to install some dependencies via PEAR, 
# but I ran drush as my user so I didn't have permissions to write to the global PEAR
# directory.  Work around this by running drush with sudo and then chmoding your
# ~/.drush directory back to your own user.  You can probably just install the
# dependencies using PEAR.
sudo drush
sudo chown yourusername:yourgroupname -R ~/.drush

# For local development, I like using SQLite
sudo apt-get install php5-sqlite

# drush dl/en needs crul
sudo apt-get install php5-curl

# Drupal needs GD
sudo apt-get install php5-gd

Applying for coverage under the Affordable Care Act

I’ve started the process of seeking coverage under the Affordable Care Act on the healthcare.gov website.

I ran into a few snags with the registration process last week, and the eligibility application process kept hanging, but this week, I was able to successfully submit the eligibility application.

I was less frustrated with the technical glitches than with just being confused about some of the questions.  The process felt similar, in terms of flow through a web process, confusion and frustration to filing my income taxes.  Here are the things that I found most confusing:

  • I work as a freelance developer, so my income can vary by a few hundred to a thousand dollars each month depending on which projects I’m working on and the number of hours I put in.  The eligibility web form asks me for my monthly income.  What should I put?  The system then calculates a yearly income from the monthly value that I entered (minus any deductions). Why doesn’t it just ask for a yearly amount.  I could more easily input my adjusted gross income from last year’s tax return than estimating a monthly value.
  • You can get exemptions for student loan interest. How do I figure out how much I pay in interest every month or year? I ended up looking at my monthly loan payment statement and using the amount of my payment applied to the loan interest.
  • My eligibility report said that I wasn’t eligible for any tax rebate or subsidy.  I’m a little surprised by this. Are there any lists of estimated costs/subsidies to make sure my options match what others with similar incomes are seeing?