DDR at Home FAQs

Dance pad ownership

What sort of soft pad should I buy?

DDRGame foam pads are pretty much the only new option nowadays, although you’re rolling the dice as build quality isn’t the best. It’s been said that their Tough pads hold up better than their Energy pads, although the latter is cheaper. You can also attempt to mount slim pads without foam onto plywood. If you’re looking to play difficulties of DDR 14 or ITG 10 and above, you should consider hard pads.

What sort of hard pad should I buy?

Your choices are:

  • L-Tek pads ($300+ with international shipping)
  • StepManiaX pads (almost always sold out, ~$1,500 per pad)
  • arcade pads (auctions or private sales)

Don’t buy DDRGame metal pads. Please see this flowchart for more info.

What sort of bar should I get?

The L-Tek bar is known to wobble. Without resorting to using a chair, you can buy some 1” black steel pipe and attach it to some plywood sitting underneath the pad.

This Facebook post has pictures and inventory.

Here is a more in-depth step-by-step article that should work with DDR pads.

StepManiaX pads come with a bar, but it can be too high for shorter players. The adjustable bar is $200.

How do I penny-mod?

Penny-modding increases sensitivity on certain dance pads. Here is how to mod an L-Tek pad.

How much should I pay for an arcade cabinet?

It depends on the model, but the average price in 2020 is about $2,000, give or take a thousand.

How do I insulate my pads for apartment play?

Try this guide.

StepMania questions

StepMania is the de facto dance panel game simulator, available for Windows, Linux, and macOS.

Where do I find DDR simfiles?


Where do I find modern ITG simfiles?

The ITG Packs Release Spreadsheet.

What StepMania 5 theme should I use?

A favorite is Simply Love – there’s a great guide on setting it up. If you want a great twist on DDR, try the DDR XX -starlight- theme.

For arcade cabinet owners

Join the Private Dance Games Arcade Owner group if you haven’t.

How do I install StepMania into my cab?

Follow my guide.

What sort of LCD should I put inside my DDR cab?

LCD monitors are great for StepMania and newer versions of DDR. The biggest LCD that will fit in Generation 1 (SD) cabs is a Dell UltraSharp 30″ monitor. Specifically, 3007WFP is old but cheaply available. Newer models U3014 or UP3017 should fit as well. Look for good PC monitor features such as 60hz+, FreeSync/G-Sync, and low latency.

What sort of LCD should I put in front of my DDR cab?

You have a lot of choices. Many are happy with a 42” Wells Gardner display that’s used in other arcade cabinets, but basically any TV display is fine. A cheaper option is the TCL S405 series.

How do I mount an LCD in front of my DDR cab?

Use this mounting kit and protect the surface of your cab with some EVA foam between it and the LCD.

Where do I get new stickers or marquee posters for my cab?

Talk to Angelo Castellini.

Where do I get those plastic bracket spacers that make it easier to fix my sensors?

There are two versions. This one on Thingiverse can be installed with stock screws. You can order them printed from Print a Thing (32 count, 100% infill, ABS).

Brandon Frodo Anders created a thicker version that is sturdier and made out of PLA, but might need longer M4x10 screws. If available, he can print them for cheaper than Print a Thing.

What other improvements or customizations can I do to my cab?

Check out HackMyCab.


How to Convert a DDR Cabinet for StepMania

Note: This guide adapts lots of info and verbatim passages from this archived guide.

If you’ve recently bought — or are looking for — a DDR cabinet, you are likely interested in adding more songs to it. One of the most popular approaches is to connect it up to a PC so you can run StepMania, an open-source music game simulator, which allows you to run custom songs, themes, mods, and game modes.

The steps to do this generally follow this order:

  1. Find out what sort of cabinet you have
  2. Get a PC
  3. Connect the cab to the PC:
    1. Power
    2. Speakers
    3. Inputs
    4. Lights
    5. Monitor

These steps can all be reversed, so you can still use the hardware that came with your cabinet.

Items that you might need to purchase or otherwise physically procure are highlighted in green.

Note: if you are not interested in connecting to your cab’s monitor, speakers, and your cab and pad’s lights — or if you only own official DDR pads and no cabinet — you might be more interested in one or two boards, which turn your pads into USB devices that you can plug directly into PCs. The rest of this guide assumes you want to use your cabinet.


Although this guide is written with safety foremost in mind, please be aware of the inherent risk of working on high-power electronics and wiring.

Before beginning a cabinet conversion, please understand that this is being done at your own risk. There is no warranty for a conversion, and it can, if done improperly, potentially ruin the machine.

Please have an understanding of the functions of the machine, electro-static discharge safety, and use caution when handling machine parts, even when shut down.

What cabinet do I have?

It’s important to determine what sorts of components you have in your DDR cabinet. The type of components your cabinet has will determine the sort of PC and other hardware you’ll need to buy. I would suggest starting by following my guide on DDR cabinets and PCBs.

Put simply: most cabinets in the western market are Generation 1. They usually come with one of the following PCBs: a System 573 (DDR 1st to Extreme), Python 2 (DDR SuperNOVA series), or Bemani PC (DDR X and beyond). They also likely have a CRT display, although you’ll find that many have been converted to use LED displays instead.

This guide will attempt to walk you through the conversion process, and I will point out what steps correspond to which types of cabinet components.

Getting a PC

If you don’t have a Bemani PC, you’ll need a PC of your own.

For 573 or Python 2 owners

Because 573s and Python 2s are glorified PlayStation consoles, you can’t install StepMania on them. The good news is that StepMania has very low hardware requirements — any PC from the last decade should run it just fine.

If you want to run fancy themes or play songs with a lot of effects, you should probably get at least 8GB of RAM. A SSD will also significantly improve load times, and a dedicated graphics card or AMD APU might improve frame rates.

Separate from running StepMania, if you want your PC’s specs to be similar to those found in official Bemani PC hardware, you might look for Dell Optiplex 700-series PCs, which are often very easy to find on eBay. I personally bought an Optiplex 780 for just $50. The small-form-factor (SFF) build is small enough to fit inside the monitor portion of my cabinet (since the CRT has been replaced with a LED). I also went for a Radeon R7 250 GPU (If you get a SFF PC, you’ll need a low-profile video card), which is the best card that Optiplex 700 supports, for about $25. If you have a CRT, though, you’ll need a GPU that has VGA output – or use a DVI-to-VGA adapter.

My Dell Optiplex 780 sitting in the top compartment of my cabinet, where a CRT once lived.

For the sake of working easily with other hardware you’ll connect to the PC, I’d recommend installing Windows 7 or above, although Windows XP or a Linux distro will work if you’re okay with putting in more work. There is a helpful guide on setting up Windows 10 Enterprise/LTSB to hide most UI as the machine boots, although many of these settings will work for older versions as well.

There is also a separate guide on having a dedicated StepMania setup using a custom Arch Linux image. It is already configured to work with CRT monitors and a variety of I/O and lights devices.

Once you’ve set up your PC, read this guide on setting up StepMania!

For Bemani PC owners

Bemani PCs are actual PCs, all running different versions of Windows. You’ll still need a proper build of StepMania to work with the interface in the back of the PC — more info on that below.

Connecting the cab to the PC

For your safety, ensure your cabinet is off, unplugged, and discharged before opening it up!


The easiest option is to power your PC externally, but that means turning it on separately and most likely having it sit adjacent to the machine instead of inside it. If you want to be able to throw a single switch, this approach isn’t for you.

Other approaches vary based on the type of cabinet. Almost all of them demand a certain level of electrical engineering knowledge, so if you are uncomfortable with voltages and amps and the like, consider asking for help.

A straightforward approach could be to cut the power cable coming from your PC’s power supply and wire it into the control transformer in your cabinet (if it has a terminal block). Ensure your PC’s power supply is set to the proper voltage depending on which screws you connect to. Understanding wire crimping, continuity, grounding, etc. are beyond this guide’s scope, so ask for help if necessary.

Interior of a K-cab. Top: four 110v outlets. Bottom: control transformer with 220V, 110V, and ground screws.

If you have a K-cab, it’s possible that your cabinet has some 110v two-prong outlets inside it. If one of them is not in use, you can plug your PC into it using a cheater plug, although it’s obviously good practice to connect its ground tab to something.

Some power supplies (in Betsons, for example) might have passthrough IEC connectors, but they often do not pass adequate amperage, so plugging into one might not be a great approach.

If connected to the cabinet, your PC will lose power when you use the panel inside the coin door to switch the machine off. You can configure your PC to automatically turn on after power loss.


Your cabinet has an amp box that connects to the speakers. It has RCA audio jacks for input, so you’ll need an RCA to 3.5mm stereo cable. Plug the 3.5mm end into the speaker port in the back of your PC.

The LINE IN 1 plug on the amp box, most easily accessible through the coin door.

Inputs & Lights

System 573

If you have a 573, you’ll need to buy one or more devices to transmit your cab’s input and light signals via USB to your PC. As of 2020, the only non-discontinued items are:

  • J-PAC – A board that takes JAMMA input and converts it to USB keystrokes.
  • LIT Board – Allows the lights in the pads, marquee and subwoofers to be controlled via USB, to be paired with a J-PAC or similar.

There are also some discontinued items worth mentioning:

  • 573 Minimaid – An all-in-one board that controls both cab input and lights.
  • LumenAR – Does the same thing as the LIT Board.

To connect inputs to a J-PAC or Minimaid, simply remove the JAMMA harness from the 573 and plug it into the pins on the board. Be careful that you do not insert it reversed. The JAMMA harness should have a white pin near one end of its connector that prevents it from being inserted improperly.

Similarly, remove the P1, P2, CAB and NEON cables from the 573 and plug them into your lights controller.

LumenAR (top) connected to lights cables. J-PAC (bottom) connected to the JAMMA harness.

If you are not interested in controlling the lights on your cabinet, you do not need a LIT Board or LumenAR, but please note that these devices also take the extra step of setting your pads to “reset mode”. This is done as the computer can not properly interpret their input in their current state. To proceed without a lights controller, you must install a jumper to the PCBs inside the DDR pads. This jumper will set the pads to reset mode, and allow them to function properly with the computer.

For reference, the Player 1 side will be called “Left”, and Player 2 will be “Right”. On the left pad, unscrew the blank metal panel that is in the top-right corner of the left pad. Opening this will reveal a second panel. Note that its screws are very easy to strip. Use a Phillips screwdriver to very carefully unscrew them, and then reach under the panel and lift up to remove it. The I/O board is now visible.

With the I/O board accessible, there are several ports with wires feeding into them. On the bottom-right of the board is a wide ribbon of cables of various colors. Take a piece of 16 gauge copper wire. Make sure that each end has a few centimeters of bare wire exposed. From the left-most end of the ribbon, find the first and third wires, counting from the left. One should be black, and the other should be white. Take one end of the copper wire and push it down into the black wire’s port as deep as possible (without applying excess pressure or damaging hardware). Now put the opposite end into the white wire’s port. This is jumping the two wires and putting the pad in reset mode.

Now jump the right pad. Its I/O panel can be accessed by removing the blank metal panel that is in the top-left corner of the right pad. Carefully unscrew its secondary panel (Again, these screws strip very easily) and you will see a board identical to the left side. It will also have black and white wires in the first and third positions. Bridge these the same way the left side was bridged.

The pads are now in reset mode, ready for the J-PAC or Minimaid.

J-PAC, Minimaid, LIT Board and LumenAR will likely require additional drivers to function with your PC. Please refer to the documentation that comes with your devices to set them up. Specifically, you will likely need to install WinIPAC for use with a J-PAC, whereas the other boards come with “care packages” containing documentation, tools, and drivers, although additional work might be necessary to interface with StepMania 5.

Python 2

Python 2 owners have a couple of choices. They can stick with the above list of hardware for 573 owners — although if going for a Minimaid they’d have to find either the “Betson” or “Universal” variants — or, they can entirely skip the extra hardware and reroute USB cables from within the Python 2 to their PC.

For those going the J-PAC/lights controller route, the process to connect to the hardware is similar to those who own 573s, but requires unplugging the P1, P2 and bass neon cables from the EXT-IO instead of directly from the Python 2. There is still one cable going from the cabinet’s amp box into “PORT 1” of the Python 2. You should unplug from PORT 1 and plug the cable into your lights controller’s “CAB” or “marquee/start lights” port.

The alternate route is to open up your Python 2 (voilà, there’s a full-fledged PS2 sitting in there), unplug the two USB cables from the front of the PS2, and connect them to USB extension cables going to your PC. By default, your PC won’t be able to recognize these signals — you’ll need to download and build a special fork of StepMania that implements support for P2IO (the I/O board inside the Python 2) and P3IO (for some Bemani PC owners).

Simply unplug the USB cables from the Real Actual PS2 inside the Python 2.

Bemani PC

This section is specific to Bemani PC owners with an EXT-IO and P3IO interface. If you have a P4IO, you might be on your own for now.

Like with Python 2 owners, you should be able to build and install this fork of StepMania and not make any hardware changes at all.


If your cabinet has an LED monitor, it does not need to be converted to the appropriate frequency and resolution and therefore does not require additional hardware or software. A monitor not wired through JAMMA can plug directly into the PC’s graphics card. If you have a CRT, things get complicated:

System 573

The first step is to connect the female end of a VGA cable to your J-PAC or Minimaid, and the male end to your computer’s graphics card (which, of course, must have VGA output).

Your CRT screen might only support 15KHz, or it might also support 31KHz. Regardless, you will likely need extra hardware or software to be able to support these refresh rates and resolutions.

One option is to find a (now discontinued) ArcadeVGA, a video card which can output at 15KHz to CRT screens. Ultimarc’s store also sells a DVI to VGA adapter that you’ll need, and there is a low-profile bracket available for SFF PCs.

Another option for AMD video card owners is to use CRT Emudriver 2.0. You might also consider installing QuickRes to force Windows to always boot at a lower resolution.

Python 2

Follow the above steps if there is no VGA cable already connected to the RGB port of your Python2.

If a VGA cable is already connected to your Python2, simply unplug it and plug it into your PC, then follow the above steps, ignoring the section about the video port on your J-PAC or Minimaid.

Bemani PC

There’s probably nothing to unplug – simply follow the above steps concerning refresh rate and resolution.


Thanks to the helpful people on the Private Dance Games Arcade Owner group on Facebook.

  • Adam Karonika
  • Brandon Frodo Anders
  • Jesse Wolcott
  • Lob Starmagnet
  • Paul Fisher
  • TJ Lowry

DDR Online Resources

I regularly check out a lot of sites and servers that provide me with helpful DDR information! This is not an exhaustive guide; it’s just the stuff that I use.

News & General Info

  • DDRCommunity – DDR-related news, guides, and more. Also has its own resources list
  • Zenius -I- vanisher – BEMANI news, the most comprehensive arcade machine locator, and simfile downloads
  • bemanistyle – BEMANI news and reviews, and helpful how-to guides
  • RemyWiki – Data about official BEMANI releases and songs


  • e-amusement – Konami’s system for settings and score keeping
  • LIFE4 – Unofficial ranking system with challenges for all levels of play

Song-specific Resources

  • true BPM – Shows a handy chart of BPM changes and stops in every song
  • DDR Difficulty Tier List – Guide on DDRCommunity that splits song difficulties into fractions
  • STATISTIK – Another resource on song difficulties, with separate “clear” and “score” ratings

Machine Info & Maintenance

  • hackmycab – Helpful tutorials on cabinet purchasing, maintenance and upgrades
  • Rhythm Arcade – Wiki with info on cabs and maintenance. Currently being rebuilt from an earlier version with more articles.
  • – In-depth manuals on BEMANI machines


YouTube Channels

  • yuisin – DDR music and charts, often with helpful claps
  • Freestyle Takeover – Compendium of recent and historic dance performances

Facebook Groups

Discord Servers

  • Freestyle Takeover – Focused on freestyle techniques and events
  • LIFE4 – Discussion about the ranking system
  • SF EVOLVED – Discussion about the podcast and stuff happening around the Bay Area
  • San Jose DDR Players – Has channels about specific arcades and events in the Bay Area, with a bot that announces who’s logged in where
  • bemanistyle – Server for the long-running BEMANI news website
  • Rhythm Game Cabs – Discussion for cab owners about collection, maintenance, etc.

Apps (iOS)

  • DDR Score Manager A – Scorekeeping tool that syncs with e-amusement (if subscribed to the Paseli basic course)
  • e-amusementアプリ – Official app, mostly for sharing scores and managing account information



Types of DDR Cabinets and PCBs

The following is a list of types of DDR cabinets and PCBs. It’s probably not exhaustive but it should cover the majority of hardware you’ll find in the wild.


Generation 1

Generation 1 cabinets can be identified by their 29” CRT display and marquee that sits atop the base with two legs. While different variants came with 1st through SuperNOVA 2, upgrade kits to newer mixes are available. These cabinets use the JAMMA wiring standard for input/output.

Black cabinets

Black cabinets are the most common types outside of Japan and big chain arcades. They have black sides.


Japanese cabinets, or J-cabs for short, were generally built for Japanese use. They shipped with 1st through Extreme. They are usually identified by having a glossy black shell, a single coin slot, two separate pieces of metal comprising the panel underneath the screen (with PSX memory card readers in some cases), and the lack of a black bezel around the subwoofer area. There are bolt heads on the sides of the monitor housing to support its brackets. The amp/PCB units are placed side-by-side in the cabinet. If there is a blue “GET ON THE DANCE STAGE !!” sticker beneath the select/start buttons, it’s a Dancing Stage True Kiss Destination J-cab.

Picture of the control panel inside the coin door of a J-cab.
US cabs

A variant of J-cabs, US cabs were distributed in America without memory card readers. They shipped with the US release of DDR 1st.

EU cabs

Although similar in appearance to J-cabs, these cabs generally have different parts. Screws, wiring, neons, speakers, shell are either incompatible, made with higher quality material, or both. The component pieces (subs, PCB/amp/PSU enclosures, CRT, marquee) are separated with only small cable holes between them. Neons don’t have an L-shape at the bottom and go straight inward. Marquee spotlight acrylics are orange and red instead of pink and green. They have a 220v to 110v step-down transformer. There are multiple versions of these cabinets – black models shipped with versions of Dancing Stage 1st through EuroMIX 2, and gray models shipped with Fusion or SuperNOVA, but there are likely further differences between mixes.

Different neons, as well as dampening material inside subwoofer enclosure.

Korean cabinets are likely the most ubiquitous subtypes that you will find. They originally shipped with 3rdMix, but were changed to DDR USA when shipped overseas. They generally have two coin slots, a button panel underneath the monitor made of a single piece of metal, and a black bezel completely surrounding the subwoofer area. They are considered to be inferior to J-cabs due to the cabinet being built from MDF instead of plywood, its wires lacking proper grounding, and the monitor being secured via wood blocks instead of metal brackets. Other than wiring differences, the pads themselves are generally identical to J-cabs. The amp/PCB units are stacked from top to bottom in the cabinet.

Picture of the control panel inside the coin door of a K-cab.
Less common types
  • Asian cabs – like K-cabs but the amp/PCB units are placed side-by-side like J-cabs.
K-cab interior, J-cab layout
  • Namco “crapocab” – has square lights and different speakers on the sides of the marquee. Monitor bezel says “here we come” instead of “here we go!” Pads are made of plywood and covered in sheet metal. Usually runs a home version on a PSX or PS2. A big scam. Avoid!

Betson cabinets

A newer type of US-built cabinet, Betson cabinets are similar to K-cabs in many ways, but can be identified by the front of the marquee being flat instead of curved. The cabinets themselves also have slightly less depth. They were distributed by Betson in America with SuperNOVA or SuperNOVA 2. Generally have better wiring – certain connectors were changed or removed for the purpose of easier servicing. Also have a better screen (Kortek multi-sync) than K-cabs. Both Betson and red cabinets use an EXT-IO board instead of the game PCB to handle panel/neon lighting.

Red cabinets

Red cabinets are less common outside of Japan. They generally have red sides and front, as well as two e-amusement card readers and keypads to the sides of the monitor enclosure. They are newer than black cabinets, having begun shipping with SuperNOVA. Their CRTs are superior in that they are flat, more flush, and output 480p instead of 240p/480i.


DDR Solo cabinets are single-player, with two additional upper-diagonal arrow panels. Like black cabs, they have 29” CRTs and generally support the same PCBs. Their panels lack lights and have two sensors per panel instead of four. Some Solo stages lack a bar.

Generation 2

Generation 2 cabinets shipped with DDR X through DDR X3 vs 2ndMix. They are often confusingly referred to as “black cabs”, but also “black HD” or “X cabs”. They have 37” 720p LCD screens and marquees that are flush with the rest of the cabinet. They have integrated e-AMUSEMENT Wavepass readers in the bezel of the monitor.

Japanese version

Japanese black HD cabs have light spires on the sides of them. These cabinets also use JAMMA.

American version

X cabs in America, also referred to as “Raw Thrills” cabinets, lack the light spires that Japanese cabs have. While its screen and I/O are of high quality, its pads are shallow, require more maintenance, and are awkwardly wired to act as both selection and arrow buttons; and the amp unit has significant latency. Avoid!

X2 version

American X2 cabs have slightly better pads (you can remove a single arrow without taking off the entire stage’s metal cover) and hardware improvements to fix sync issues.

Generation 3

Generation 3 cabinets ship with DDR (2013) through DDR A20. They are referred to as white cabinets. They have 42” 1080p LCD screens and smaller subwoofers with a platform to store belongings. They lack lights underneath the arrow panels. You can find them throughout Japanese arcades as well as Dave & Busters and Round1 locations in America. White cabs are manufactured in Japan, Taiwan, or Korea (Uniana). They are generally of the same quality regardless of origin, but certain hardware such as screen manufacturer and sensor connectors might be different. In Japan, they come with generic “Dance Dance Revolution” marquees whereas ones shipped to America have DDR A marquees.

Generation 4

Generation 4 cabinets ship with DDR A20. They are called gold cabinets, or officially “20th anniversary model”. They have 55” 1080p LCD screens and look very similar to Dance Rush cabs.


The actual computer that contains and runs the game data is on one of many different types of PCBs. These can be found in the back of the machine and are often hooked up to the amp unit, lights, JAMMA harness, monitor, and other parts of the cabinet.

System 573

The System 573 is a PlayStation-based board. Depending on which optical drive is installed, it can play DDR 1st through Extreme.

Python 1

Python 1 is a PlayStation 2-based board. It only has support for Dancing Stage Fusion. This and all newer boards usually require an EXT-IO, a separate board that translates light signals from the PCB into ones that the cab can understand.

EXT-IO board

Python 2

Python 2 is a box that contains a PlayStation 2. It also contains a USB I/O board commonly referred to as a P2IO. It supports SuperNOVA 1 and 2. Interestingly, by enabling a DIP switch and jumping a few pins, the Python 2 can boot without the need of an EXT-IO, although it will be unable to recognize input from individual sensors.

Bemani PC (Radeon HD 2400)

Bemani PC, this version often referred to as “Type 4” or “Dragon”, is a Windows-based PC that can run DDR X through A20. It is distinct from other models of Bemani PC by its Radeon HD 2400 GPU. These boxes contain a P3IO board, which translates JAMMA input and other cabinet signals to USB.


Bemani PC (ADE-704A/HM65)

This is another Bemani PC model, sometimes referred to as “Type 5” or “Type 6” depending on where you look, which has a Radeon E4690 GPU. Originally released with DDR A, it also runs A20. Contains a P4IO board intended for white cab (non-JAMMA) usage.


Bemani PC (ADE-6291)

Gold cabinets (and other recent BEMANI games) come with newer Bemani PCs that contain a new I/O board, called a BIO2, which is incompatible with P4IO.

BIO2 board

Roxor Boxor

Roxor released several variants of “Boxor” PCs for running In The Groove and In The Groove 2. Kits meant to run in DDR cabinets contain an I/O board called an ITGIO which translates JAMMA signals.


Thanks to the helpful people on the Buy/Sell/Trade and Private Arcade Owner groups on Facebook.

  • Alessandro Tenorio-Bucci
  • Chris Chike
  • Cody Holman
  • Dan Colardeau
  • Jesper Petersson
  • Joey Platt
  • Kevin Jones
  • Lob Starmagnet
  • Scott Philipp
  • Tracy Ward
  • Xopher Crossopher Barnett

Other references


Check news bias with a simple browser icon

Update: my extension is no longer being maintained. Please use this one instead.
I’m a big fan of Media Bias/Fact Check, a site that categorizes many popular news sources into categories across the political spectrum, as well as those that don’t fit into that spectrum. Thanks to Facebook and other social networks, people are constantly bombarded with false, partisan, and low-quality reporting, which causes them to retreat into their comfortable bubbles where facts are less important than what their side wants to hear. MBFC, an independent site run by Dave Van Zandt, uses a precise methodology to help make people more aware of these issues!
I do find it a bit inconvenient, though, to have to consult the website every time I come upon a new news source to get a feel of what its intentions might be. That’s why I’ve created the Official Media Bias Fact Check Icon, which you can install into Google Chrome or Firefox right now:
Screenshot of Media Bias/Fact Check icon in action.
A little icon will show up next to your address bar whenever you’re on a site within MBFC’s database. Click it to read about the bias of the site you’re visiting, as well as any notes about the specific source itself. You’ll see these icons:

  • L – Left Bias
  • LC – Left-Center Bias
  • C – Center (Least Biased)
  • RC – Right-Center Bias
  • R – Right Bias
  • PS – Pro-Science
  • CP – Conspiracy-Pseudoscience
  • S – Satire
  • Q – Questionable Sources

Under the hood, this extension pulls data from JSON files that I create by occasionally crawling MBFC, and matches the current domain to what’s in these files. In case you’re concerned that this extension is doing anything more than that, I’ve open-sourced the components:

I hope this extension serves useful! I’m sure many would have wanted something like this months ago, but MBFC itself has only existed for a little while! Enjoy!


How I Got Into the Web Development Industry

I’ve been getting a lot of questions from students recently about how I landed my sweet gig at Lab Zero, or, more generally, how I got into the industry in the first place. It’s really nothing out of the ordinary, but I thought I’d write it up here so I can cut down on repetition. (DRY is an important practice!)
The main reason people ask me about my own path is because they’re often so torn nowadays between going the bootcamp route, or just soaking up as much free knowledge as possible and then dipping their toes into a small-time position. I can’t say whether one’s better than the other. Bootcamps have the benefit of teaching you a massive amount in a short time, while also taking a lot of your money and giving you unrealistic expectations about how many hours per week you should be working. The DIY route allows you to learn at your own pace and climb the career ladder, but it takes much longer until you’re making a six-figure salary, or whatever.
I chose the latter, mostly because the bootcamp option didn’t exist when I was starting off as a full-time professional in 2008 – but also because I had been making websites since I was 9 years old, in 1994. This, of course, gave me almost a decade and a half of experience before I entered the professional world in earnest. And I cannot stress how important years of experience are. No matter how much a bootcamp attempts to cram into your skull, there is no way in three-ish months that you will be able to come up with an exhaustive set of creative solutions to the myriad problems you will encounter in the real world.
It’s a bit disingenuous for me to say my career started in 2008. Even though I wasn’t getting paid for it, starting off and making my own websites was a very important step. As a kid, I found it very freeing to be able to create anything I wanted to express and put it on the web. Some comics on my site date back to 1996. This very blog started out in 2001 as a place to experiment with designs and new technology.
Here’s the results of what was probably my first paid gig, probably from around 2001. I got this job because my step-brother lives at this home and they heard that I was at “whiz kid,” so they asked me what I could do.
When I was in college, I took two summer internships at Sun Microsystems in 2005 and Autodesk in 2006, found through my dad and I think through craigslist, respectively. They were paid internships, and generally focused on me picking up the slack with the group I was in – doing some testing of features, writing simple forms (my first brush with PHP), and generally learning how to function in an office setting.
Speaking of college – I chose to be a Linguistics major, after an attempt at Computer Science didn’t work out (mostly thanks to my ridiculous fear of math). Some might argue that Linguistics has a lot to do with programming, and to that I say: that’s a pretty big stretch. Syntax trees and morphology are pretty interesting to the analytical mind, but they’re not programming. I even started off on a grad program at UW Seattle in Computational Linguistics in an attempt to rope computers into my study.
The summer before I started grad school, I found a craigslist posting from a business owner looking for help with his site. I ended up working with a designer to overhaul some HTML and add a few extra pages to the site. I ended up continuing to work on the project from time to time throughout the school year.
By 2008, family matters made me decide to move back to the Bay Area. Back to living at my dad’s house, I decided I’d get a job while I was deliberating about whether to continue my grad program. I searched craigslist again, and found a posting for a web developer position at Diabetes Health, a small magazine in Marin. This became my first full-time job. I even bought a car for my commute (which turned out to be a poor decision as I used it for less than a year). I was basically thrown onto an existing PHP stack and had to basically learn the language on my own, fixing up the previous developer’s work and starting to add features of my own. Despite being the “smartest person in the room” (that is, the only developer in the company), I learned a significant amount about full-stack web development out of necessity.
While living in Marin, I started to cultivate a group of friends mostly based in San Francisco. It became apparent after a year that 1) I didn’t want to continue my grad program, and 2) I shouldn’t stay at my dad’s house forever, so it was about time to find a job in the city.
I scoured craigslist for a position – yet again – and found a nice challenging one at Linden Lab, working on their marketing sites and a few behind-the-scenes tools. At this point I was pretty much ready to say my career had begun.
Although I was fired for weird reasons after a year, a former coworker referred me to Lab Zero, which I joined in May 2010, and I remain to this day, doing all sorts of things for all sorts of companies.
I have to say, referrals are really the way to go. But of course, you have to get your foot in the door first, and make some good connections (read: be nice to your co-workers). If you don’t yet have the connections, craigslist was pretty much the place for me, and I’d assume it continues to be a good source to this day.
It’s also worth noting that I’m happy where I work, and barring anything terrible, am not looking to “climb” the job ladder into a bigger or cushier position. Pay’s good, responsibilities are good, and I personally don’t want to end up in a situation where I’m delegating all the actual work to other people. But that sort of thinking isn’t for everyone. People at LZ have come and gone, looking to become managers or executives or what have you. And if hopping from place to place is for you, tech is currently the right kind of industry for that.
So that’s it! I hope this has been helpful and given you an idea of how one developer got to where he is today. I benefitted from growing up in a household that encouraged computer use, turning web development into a very long-running hobby for me. But if you’re on the job hunt, this predisposition is certainly not expected of you. Unless you’ve decided on the bootcamp route, start small and you’ll get somewhere sooner than you know it.


Our new job

Within the past month, we:

  • Bought a washer, dryer, and refrigerator
  • Learned how to hack our security system
  • Installed a mailbox
  • Moved everything we own
  • Pulled weeds around the house, a few times
  • Changed our address everywhere
  • Switched doctors
  • Found a new vet
  • Bought a grill
  • Assembled a wardrobe and coffee table
  • Bought curtains and rods
  • Mounted projector and speaker wire all over the place
  • Installed two GFCI receptacles
  • Labeled our electrical subpanel
  • Drafted a circuit map of the house with grounding and GFCI info
  • Bought a dining room table
  • Installed a cool doorbell
  • Trekked through our crawlspace three times
  • Replaced our furnace air filter
  • Removed a buttload of ivy
  • Helped cut down a tree
  • Applied stump killer
  • Carried a bed frame 5 blocks
  • Mounted 6 smoke detectors and 2 carbon monoxide detectors
  • Met with a seismic engineer and contractor
  • Met with an HVAC specialist
  • Met with a plumber
  • Met with an electrician
  • Met with a window screen specialist

And more! And it was super fun! And the fun probably won’t stop! Ever!!! Aaaaugh!


Last day in SF

It seems like only a few blog posts ago (it was) that I announced that I was moving to San Francisco!
Six years, two jobs, three apartments, countless bike rides, a few broken bones, one cat and one marriage later, Anna and I are headed to a house in Berkeley. That’s right – homeownership! In the Bay Area! That is equally crazy and fortunate.
But today is about endings. The biggest one, next to our lease, is my era of bike commuting. I’ve been biking Market Street pretty much every single day for the past six years! It only resulted in one catastrophic injury and permanent loss of range of motion in my arm. But that was five years ago! It’s been pretty smooth sailing since then. A brisk 20 minute jaunt down the street – even when obeying traffic lights. Congratulations to me on not ending up strewn all over the road!
As part of giving up my twice-daily brush with death, Anna gets the awesome commute – 10 minutes to work by bike. My commute won’t be AWFUL – one reason we decided on Berkeley rather than somewhere more remote – but it will be the usual trans-bay slog through the tunnel or over the bridge (haven’t decided on BART or AC Transit yet). I’ll live. Next year, Berkeley gets Bay Area Bike Share, so that will shave off a few minutes.
We’ll be celebrating our last night in San Francisco by checking out the City Hall Centennial! Also, today is Tori Campbell’s last day on KTVU (my news channel of choice when on the treadmill). I don’t know why I’m mentioning it! I thought it was sort of poignant!
Endings today! Beginnings tomorrow!


Hourly Comic Day 2015

Yesterday I decided to go ahead and draw a comic every hour! I haven’t regularly drawn comics in, uh, 7 years??? So here’s what it looks like when you don’t practice drawing for that long!
hourly01 hourly02 hourly03 hourly04 hourly05 hourly06 hourly07 hourly08 hourly09 hourly10 hourly11 hourly12 hourly13 hourly14 hourly15 hourly16


On "Proud Gamers" and "Proud Atheists"

Letting go of my pride has been really beneficial toward improving my personality and relationships. It’s harder for me to feel offended or insulted, it’s made me less competitive, and made me happier about who I am and what I do.
Let’s not get that last part twisted. I said “happier”. Not prouder. What is there to be proud about oneself? Your family history can be rich and diverse; you can donate your time and money to charity; you can raise a family; you can win competitions; you can make things; you can make money; you can learn about the world; you can love culture. Your achievements and interests say a lot about you, and they should make you feel happy. But I don’t see self-contentment as pride.
What I see as pride is taking these achievements and interests and integrating them so closely into your identity that they overtake you. You become offended by anyone criticizing or disparaging your interests. It becomes a personal affront, and something you must rectify to maintain some sort of balance. Let’s give some examples from the list of achievements and interests above.

  • The first one’s easy: you might believe your sex, gender, body shape, ancestry, nationality or race is superior to others. (It’s not.)
  • If you donate to charity, you might feel that the time you spent selflessly helping others entitles you to special treatment or excuses your behavior toward those less privileged than you.
  • If you’ve given birth and/or raised children, you might let your status as a “proud mommy” or “proud father” completely overtake what you talk or care about.
  • If you’ve partaken in some sort of athletic, scientific, or other competition, you might think your victory (or even your participation) has placed you on a new level, immune from other challengers.
  • If you’ve invented or otherwise created something, you might believe that makes you the foremost authority on the topic.
  • If you have a great amount of money, you might feel like you need to show the world through the purchase of useless luxury accessories.
  • Your unshakable belief in a higher power (or lack thereof) could, well, cause the Crusades.
  • And if you love some aspect of your culture so dearly that it shapes your identity, it might prevent you from seeing the big picture when those with similar interests use their voices to cause harm.

Let’s talk about these last two in detail, as I run into them on the Internet quite a lot. Let’s start by saying that I am not spiritual or religious, and that I enjoy playing video games. These are just two things about me. I have friends for whom neither of these facts are true, and we get along. If you’re like me, you have these friends too. That’s great.

“Proud Atheist”

But let’s talk about atheism for a sec. Atheist thought on the Internet seems to be entering into its own little Enlightenment. Popular figures such as Bill Nye or Neil deGrasse Tyson have become the figureheads for a new form of advocacy wherein science is the final word in all worldly matters. That it’s not enough to believe; one must “know”. I’m down with the intended message: scientific research is important for the progress of the human race.
But, aside from Young Earth Creationists who believe science is either “historical” or “observed”, I don’t see how science needs to conflict with religion. People can 100% understand and accept everything that has been discovered through research and still believe in some form of higher consciousness. You can never prove everything — science is all about progress, not the end goal — so you can never disprove everything, either.
On one hand, this is often considered the “god of the gaps” perspective wherein a supernatural force’s power diminishes as new discoveries arise. On the other hand, it can be called agnosticism. Theistic agnosticism. You can also state that there could be nothing out there, but we’ll never know. That’s atheistic agnosticism. It’s really two sides of the same coin, until pride gets in the way.
Really, what’s the big deal with never being able to know everything? I posit that there are many atheists who are so proud of their views that they perceive this inability to know certain things as a weakness. And they’ll fight to cover up that weakness. Sure, it’s usually relegated to arguing over the Internet, but that’s probably because no major military powers are run by atheists. Some atheists are so proud of their stances that they perceive religion on the whole as a threat. That’s why wars are started, guys.
Back to the science advocacy. I’m going to take a guess that a lot of people are in “fucking love” with science because they’re rebelling against their friends or relatives who might have pushed religion on them. Friends and relatives are what Facebook is full of, anyway, and a new generation of atheistic people feel the need to find ways to rebel against those who don’t feel the same way as they do. That rebellion takes the form of pride. Pride in your ability to argue with “reason”, with “logic”, with “reliable sources” (I’ve heard those three terms so goddamn much). It’s plain to see that the pride is a defense mechanism.

“Proud Gamer”

Oh, jeez. Sorry if you’ve been following me on Twitter for the past month or so where I’ve been poking some much-needed fun at this debacle called #GamerGate.
This Goddamn thing. I don’t want to talk about what sort of terrible shit started it. Rather, let’s talk about the supposed goal of this “movement”: to reestablish ethics in video game journalism. Why? Because, among other things, a bunch of journalists have written articles about how the label “gamer” has become poisoned by a wave of misogynistic, violent assholes whose voices often drown out the more progressive ones. #GamerGate purports to need publications that respect the label of “gamer” and don’t spend their time dragging perfectly well-meaning folks (insert laugh track) through the mud.
I’ve gotten the argument that anyone who plays games is, by definition, a gamer. Fine. But much like I would sooner join a monastery than be lumped in with those who label themselves as “atheists,” I would burn every game I own before falling in with the “gamer” crowd. But for many, being a gamer is so central to one’s identity that any criticism of the content in video games, or the culture surrounding them, is — again — perceived as a threat. But let’s take a quote from our good friend Anita Sarkeesian:

…remember that it is both possible (and even necessary) to simultaneously enjoy media while also being critical of its more problematic or pernicious aspects.

Putting aside the fact that criticism is central to video game journalism (ever read a review?), it’s important to try to understand why someone would feel like they’re being attacked when nothing is being attacked — rather, a piece of media, created by someone else, is being criticized. Nothing is being prevented or taken away. Learning is taking place. If this messes with your sense of self, it might feel uncomfortable, but maybe you need discomfort. Maybe you’re learning why identifying under a certain banner or label can stagnate you if you’re unwilling to grow beyond it.
Or, maybe you truly disagree with everything you’re reading, which is your prerogative. But only a prideful person can feel like an analysis of something you like is actually a condemnation of you, when you haven’t actually done anything. And even if insults are being lobbed at you (heck, I’ll lambaste you for supporting #GamerGate), what about this whole topic is so important that you must lob them back?
Some might argue that it’s not #GamerGate supporters that are doing the name-calling; rather, it’s “social justice warriors”: an ill-defined collection of women and Tumblr users who are supposedly trying to shut gaming down because it only appeals to white males. Let’s play devil’s advocate and say for a second that this mischaracterization is actually true: who cares if they actually were? Would they succeed in shutting down an industry so powerful and deeply ingrained within our culture?
In reality, those fighting for social justice (a good thing, in my humble opinion) are aiming to introduce diverse voices into the mainstream. It’s an additive process. Nothing is being shut down or taken away. Some journalists believe strongly about social justice. That’s good, because reporting about important issues is their job. What, social justice isn’t an important issue, you say? Why is that? Is it because the issue doesn’t affect you? How proud must you be to actually believe that a focus on minority voices will only drown your oh-so-important voice out?

So… do you hate yourself?

I admit that my definition of pride is somewhat narrow. It’s not the sort of pride you feel when a loved one has accomplished something amazing. It’s not the sort of pride you feel when your cultural leaders proclaim that your life is worth living, and your rights are worth fighting for. It’s not the sort of pride you feel by living the life you want to lead (I call this “happiness”). I feel all of these and I hope that you do, too.
It’s the sort of pride that blocks you off from opportunities for growth. And we are never done growing, learning, or changing. So when something with which you identify is being scrutinized, think about why it’s so important for you to slather yourself with labels, and whether your pride is getting in the way of your future.