rules to live by, distilled

I've written before about the rules I live by. This year, after thinking about it a little more, I realized that most of my rules around power dynamics boil down to an essential one:

Whoever holds the power should be making the accommodations.

In any a given situation between two parties, the party holding more power should be expected to yield some amount of that power to make the balance between the two parties more equitable. This doesn't just mean tangible power, like money or resources; this includes the expectation that the less powerful party should not be penalized for demanding more resources, and that the more powerful party should be graceful in conceding them.

Any considerations or challenges would largely revolve around the perception of each party's power. For example, one party can be weak on its own in relation to the other, but it might be backed by powerful outside interests or social norms. My main interest would be in distilling each of those connections into a one-on-one power relationship and examining whether any opposition is, at its root, defending the most powerless.

on making art

I've found three main ways in which artists make art. The first is to show people what the world is like: you observe the world around you and translate it into something that others can experience secondhand. Audiences from the world you're describing might find your art relatable. Audiences not from that world can get a glimpse into it and build empathy for the people in it.

The second way is to show people what the world should be like. You can show who you are by adding your own commentary to a state of affairs. In some cases, you must first identify the unidentified and name the unnamed so that others can understand what's wrong, so they can help take action against situations they previously didn't realize require change.

The third way to make art is to create new worlds. This method is probably the hardest because you have to do things that haven't been done before. If you push right up against the boundaries of what's commonly accepted, sometimes you can break through those boundaries and forge new paths, leaving others to follow in your footsteps. Sometimes creation evolves naturally from showing people how the world should be. Sometimes it develops on its own, separate from any hope of action on the existing world, because you've found that this world is broken beyond repair.

I feel like the third method is more intuitive for artists who are on the margins of mainstream society, because it's imperative for them to create their own worlds to belong in, worlds they feel safe in. They push against the boundaries of acceptability because society has already forced them to those edges. Their continued survival depends on their resourcefulness and ability to expand the tiny margins in which they are allowed to exist.

The art spaces that people will remember years from now are the ones that cater to these margins of society. They'll succeed because they intuitively know where the edges of society are; the people who work for and with these spaces live in those edges. If you want to know where to go to see what will set tastes five years from now, follow the queer kids. Follow the drag queens. Follow the strippers, the drug dealers, the people who must resort to measures outside of polite society to survive. Follow the trans kids of color. Follow the nonbinary kids who dress so outside of the norm that they risk getting catcalled or ganged up on if they walk on the sidewalk in broad daylight. They're the ones who flock to these places because they have nowhere else to go to be themselves. That's where new worlds are being created. That's where you'll see something you've never seen before.

(But for heaven's sake, don't follow them if they don't want to be followed. Some spaces are theirs alone to feel safe in.)


I've spent the last year thinking about what I want to spend my life doing. It stemmed from thinking about what I want the world to become. I woke up a lot of mornings not convinced that what I was going to do that day was ultimately useful to humanity. There was no way I could continue living life like that.

What I'll actually spend my life doing partly depends on what can realistically be done and what I am capable of doing. But my priorities, and the tradeoffs, remain the same.

My large-scale priorities, in vague order:

  • Help humans get their needs met
  • Achieve human equity
  • Stop killing animals
  • Stop destroying Earth for funsies

The corresponding large-scale goals:

  • Implement baseline food, shelter, health care, education, and other needs
  • Convince society to destroy structural discrimination / Pass basic human protections
  • Make synthetic meat and leather / Pass basic animal protections
  • Prevent the destruction of natural habitats / Pass basic Earth protections
  • Develop space exploration and terraforming to support human population growth long-term

My personal priorities, in vague order:

  • Make useful sh*t
  • Make cool sh*t
  • Bridge worlds
  • Be healthy

My corresponding personal goals:

  • Develop applications that help underserved communities get their basic needs met or help influence action to improve conditions for them
  • Make art / Produce music / Write novels
  • Connect very different people
  • Exercise / Eat plants / Learn martial arts

The ever-loving and trusting idealist in me still believes helping other humans will ultimately result in a better world, so that's at the top. If you help others meet their basic needs, there will be more people who can also think about how they can improve the world and do some of these other things. Maybe not all of them would be able or willing to do so, but some of them would, and that's more than there were before.

Making art is actually part of staying healthy. I realized a long time ago that my mind starts to unravel when I go for too long without writing or making art or music. It's both a creative outlet and a way to leave something for others to enjoy and be touched by long after I'm gone.

There are secondary personal priorities, like making enough money to cover expenses, or supporting a family. Many people choose to make those priorities their main focus in life. I am clearly not one of them. I accept that I may have to dial down some of my main priorities to address those. But as long as I am able to, I'd like to focus on helping humanity at large, because anything less ambitious may not get me out of bed every morning.

inner strength

The past month has been extremely difficult. I've been weathering personal and societal storms on a large scale. And this weekend saw a massive tragedy in a community I'd been part of for years. The artist of the track above was one of the victims.

It's hard to bother with sleep when you already know you'll wake up to a crushing sense of hopelessness. And yet, we're still here. In a couple of hours, the sunrise will shed light on the fact that we still exist. Maybe we'll have another day to make the most of what some people no longer have. Maybe we'll have the opportunity to help others do the same.

what i do most days

Developers who debug inherited codebases do a lot of what I've been doing lately, which is tracing. It's time-consuming, but like most brute-force methods, it's simple and works eventually. You:

  • look at what errors you're getting
  • try to figure out which function they're happening in
  • go to that function
  • insert a bunch of log printing functions around where you think the error is happening
  • run the code again and see which logs actually get printed to the console

Unless you have asynchronous stuff happening, the last thing that gets printed to the console is directly before where the error happens. If the next line is another function, go to that function and repeat the process.

(Pro tip: if you are debugging something this way, log the name of the function you're in. You will probably forget to remove at least one of the logs when you're done, and knowing which function is printing a bajillion messages to your production console will be useful when you need to find and remove it.)

Tracing works for most debugging scenarios, but web developers also need to be aware of how the server gets information from its database (the backend) and passes it to a user's web browser (the frontend). Otherwise, you won't even know where to look-- are your errors and logs printing to your browser's dev tools console, or your server terminal?

In my company's case, the codebase's layout makes it clear which files:

  • On the browser side:
    • Send HTTP requests for data to the server
    • Parse the data from the server
    • Create views for the user using the parsed data
  • On the server side:
    • Receive HTTP requests for data from the browser and route them to the right data retrieving functions
    • Retrieve data from the database
    • Structure the data and send it back to the browser

A couple of well-established and stable Node.js libraries handle our MySQL database calls (mysql), HTTP requests (request), and server routing (express). We also use larger, newer libraries to create our user views (React) and to structure and parse our data (Redux).

These popular libraries also throw useful errors that help with debugging. For example, their error messages might indicate which files and lines an error is happening in, and I can follow those errors up from a library's files to our actual codebase's files.

This might look obvious to experienced fullstack developers, but I started as a primarily frontend dev and had to figure out a lot of this stuff on the fly, so I wanted to write it down for people who are still learning.