because-its-important
8 posts
š š¦ š¦ š¦ šĀ
Don't wanna be here? Send us removal request.
Text
transitions & transformations
i. the rest of my batch at RC
I spent the first six weeks of my batch at Recurse Center in an out-and-out sprint. I learned Python, built and released projects, and wrote blog posts every week. I wasnāt sure where my limits were, but I was determined to find out - preferably by overshooting them, then adjusting after the fact.
A curious thing happened. I kept finding that I was more than capable of starting and finishing projects, especially when I had a firm mental image of the end goal. There were at least as many unexpected good-turns as there were setbacks, and I certainly didnāt come up against any inscrutable barriers. Mostly the challenge was in overcoming the distance between a thing that doesnāt exist and a thing that does, which I was able to sort out pretty handily through a consistent application of effort across time.
Whoād have thought?
A selfie taken on my birthday, which also happened in the last few months and was really great!
The second half of my batch was not so visibly productive - with the exception of The Question Game. The Question Game is a simple game designed to help groups of people get to know each other better IRL. I designed it with my friend Brittany a few years ago as an icebreaker when we found ourselves in a group of folks who knew us but didnāt really know each other. The game only really needs a method of generating random numbers for a small but arbitrary group size, but building it out as a toy webapp was a good excuse to get practice working with a JS-only stack. I learned React, got a lil more familiar with node, and even went as far as to attach an otherwise completely unnecessary PG database and Sequelize ORM. You can see the code for it here. Outside of this project, however, I didnāt publish any code. I didnāt publish any writing, either.
So Iād like to take a moment and shine a bit of light on the work that I did during the rest of my batch.
š š š š š š š
First, I made the decision to leave community.lawyer, the social impact startup I co-founded in 2016 following the Blue Ridge Labs Fellowship.
Iām happy to report that I left on the come up, which seems a rare and privileged thing for a founder to be able to say. Gaining traction in a hyper-specialized industry like legal tech takes a gargantuan amount of sustained forward momentum, and I departed just as we began to reap the fruits of our labor. In the last few months community.lawyer has reached final approval on partnerships a year in the making, won federal grants weād submitted to in 2016, and every day our software is being used to help connect people who have legal needs with credible lawyers. Our first two partners were exactly the types of legal organizations at the heart of our mission: the Justice Entrepreneurs Project and the DC Reduced Fee Lawyer & Mediator Referral Service.1 Based in Chicago and Washington DC respectively, these orgs are specifically chartered to deliver quality services at rates that more Americans can afford. I am so proud. āļø
Second, I started my first ever job hunt as a software engineer. Wowee, this was scary! I knew that I had to prepare for interviewing, which meant a) getting my career change narrative straight, b) studying Data Structures & Algorithms 101, and c) learning how to perform my handle on both of these in a live, semi-adversarial environment.
At one point during my batch my laptop broke. I read through this wonderful illustrated book during the two days it was being fixed.
In order to direct my search I also had to craft a set of selection criteria of my own. Foremost: āWhat good will my work do for the world?ā2 Additionally, āWhat degree of access will I have to supportive mentors?ā
Getting started with interview prep was a challenge, at least partly because I had so many options for where to start. But I did get started! I read Cracking the Coding Interview, I did the free trial and weekly free problems on Interview Cake. I attended a few group mock interviews at Recurse Center and signed up for a 1-1 mock interview with an RC alum. Her name is Leah, and sheās amazing - the superbly friendly and encouraging Comp Sci TA I wish Iād had years ago. šBrittany also set up mock technical screens for me with her pals, Leaf and Ian. They were the vanguard against my outsized anxiety about programming for an audience and they each took the time to give me solid feedback.
Third, I extended my batch at Recurse Center by another 6 weeks. I had decided early on I wouldnāt extend (for no real reason) and stuck with this decision up until two days before my batch ending. A small group of folks - Lily, Connor, Alicja and I - went to NYX in Union Square to try out lipsticks. We played with different colors and finishes (satin! matte! shimmer!) for half an hour or so. There came a point when I looked up, glanced across the narrow makeup store at my beautiful friendsā beautiful faces and thought, āYou know, you donāt have to leave yet, right? Whatās the rush?ā Iād already accomplished my primary goal, to forcibly rework my identity as an engineer, but it sure seemed that I could stand to reach for a second one. That night I decided to extend my batch, with the intention of sampling a more open method of self-directed learning, i.e. with a little more chill and a lot less panic. Specifically, I wanted to practice connecting meaningfully with my limited supply of social energy.
In my bonus six weeks, I: gave three talks (2 planned, 1 impromptu) under encouragement from Ayla and Lily, learned to juggle thanks to instruction from a fellow RCer, Edward, who also loaned me a book about learning, made it into weekly Feelings Check-in (read as: opt-in support group) fairly regularly, picked my first ever lock, saw a live-coding show and then later attended two live-coding workshops (one on TidalCycles, another on Super Collider), sat in a dark room and played howling wolf clips while Microsoft Sam read grimoires aloud, got my hair braided for the first time in a decade, made dumplings and DJād for a dinner party, connected with folks about queer-poly relationships, gave fiery advice, and received compliments so earnest and rational and persistent that it was difficult to refute them.

Zine fair plus Lightning Bolt concert inside a movie theater in Times Square??
I also put my interview prep to use and interviewed with a handful of Recurse Center partner companies. Job searching meant squaring off against impostor syndrome and a ton of related anxieties in rapid succession. I successfully choked most of that down when it mattered, though, and it was only a couple short weeks before I received my first offer.
To that end, Iām super happy to say that Iāll be joining Blink Health as a Fullstack Product Engineer! Blink Health is a healthcare startup in SoHo. They make it easier for people to afford prescription drugs, especially for those with limited insurance plans or none at all. These savings arenāt trivial either: an extra $50 can spare someone from choosing between groceries or medicine that week, and for some folks Blink saves many times that. Iāll be starting at the end of this month. āļøš¤
The last two years have been a wild ride: participating in a social impact fellowship and accelerator, busting my product chops and learning web dev to get a public benefit company off the ground, then diving into four months of self-directed learning at Recurse Center. Iām really looking forward to having some externally imposed structure again. Real health insurance, too.
ii. some hard truths
I made a few radical life changes in 2016, like getting involved in activist spaces, dating more, biking everywhere, building strong friendships, going capital-B Boogying, programming full-time. As I carried those changes forward through 2017, I began to notice a lot of mental and emotional reconfiguration happening to me.
Did you know that along its way to becoming a butterfly, a caterpillar nearly completely liquifies inside its cocoon?
Psychological growth is confusing, full of false starts, and generally painful. Youāve got the static pain of stretching beyond your limits, the pleasure-pain of feeling an old knot finally release, the frustrating pain of stubbing your toe because some helpful asshole has been rearranging your psychic furniture when you werenāt looking. Thereās the more dramatic knife-in-the-gut pain of realizing that just because youāre growing doesnāt mean the people closest to you are, and that now in certain cases what you previoulsy regarded as friendship actually looks a whole lot like run-of-the-mill exploitation or even emotional abuse, if you're being honest, and it's a realization that only hurts more because itās so irredeemably cliche and boring. And despite all that pain you gotta go ahead and grow anyway, claw your way out of the relative comfort of ignorance. Transcendence may not be the only show in town but afaik itās the one most worth watching.
Prior to attending Recurse Center Iād spent lots of time exploring my surroundings and cataloguing people and places worth coming back to. My view of myself did change (and positively!) as a consequence. But sooner or later, ya get tired of the taste of low-hanging fruit.
So, armed with the bookshelf of a philosophy grad and a burgeoning psychoanalytic vocabulary begging to be let off leash, I decided to use my time at RC to try confronting a few of my Hard To See truths in addition to becoming a better programmer.
Hereās what Iāve found so far.
Truth #1: People like me a lot. This causes me problems.
Iāve been metabolizing this one for some time. I remember having a conversation with Brittany in January of 2016. I donāt remember what social anxiety Iād been vocalizing, but I must have been worrying that someone āhated me.ā Brittany cut me off, exasperated in the way that only a friend can be in the face of utter delusion: āNo one hates you Nicole! Youāre always worried that people donāt like you and itās never true!ā
I carried that admonishment with me through two years of voracious friendship-building. On the whole, seeing that people do in fact enjoy and seek out my company has curbed the most egregious overreaches of my social anxiety. But reckoning with my anxiety honestly has also meant acknowledging that my compulsive instinct to withdraw from social situations is also a protective (if suboptimal) response to a few very real dangers.
Most acutely: being friendly, generous, and intensely empathetic makes me a ready target for users. I try to give people the benefit of the doubt for as long as I can, which makes me proportionally susceptible to being taken advantage of and then gaslighted about it. A lifetime of socialization as a petite woman donāt help, neither. This leads to a pattern where, semi-regularly, I look up and take stock of how someone has been treating me and realize that the answer is Very Badly, For Quite A While. This in turn leads to rough periods of cutting ties and moving on. Ideally Iād like to be be able to filter bad actors out sooner, but I also want to stay open, giving, and hopeful beyond reason. Those desires are fundamentally at odds with each other - raising vs. lowering oneās defenses - but itās clear that I need to come up with a strategy that balances both.
More broadly, though, I operate under an ever-present dread of inevitably disappointing everyone who knows me. Whether people project onto me because they already like me or like me more because they project positively onto me, I am extremely sensitive to the fact that when people meet me the conception they form has waaay more to do with what they want to find than whatās actually there. My body is a surface readily projected upon: young, female-shaped, ethnically ambiguous, small, smiling. These well-intended projections cause me the most trouble when people see me interacting socially; theyāll witness fifteen minutes of seemingly effortless extroversion on my part and extrapolate out massively. As far as theyāre concerned Iāve got plenty of social energy to spare, and if I donāt spend it hanging out with them, it must be because either my friendliness is fake or I donāt like them.
Pretty much none of this is conducted consciously, of course, but it still creates a lot of unnecessary pressure that I canāt pretend not to feel and resent. I know there are people who dream about attaining this kind of āpopularityā - to be assumed Cooler than one truly is - but getting buffeted around by folksā totally unexamined, unarticulated psychological desires mostly sucks.
Truth #2: Iām non-binary.
Iāve also spent a very long time resisting this one. Two decades on the rack, easy. As such, the story of getting here is long. Perhaps one day Iāll tell it. š
The short of it, though, is this: Iām probably at least as much of a boy3 as I am a girl. Outside of where my life has been mutated by the chronic background radiation of sexism, ābenevolentā and otherwise, I donāt strongly identify as a woman. Furthermore, I find the two-gender system to be infinitely more alienating than comforting. Gender is a social construction designed to impose order on the natural messiness of sexual experience, and as far as Iām cool with that, I am decidedly Not Cool with the ānormalā state of affairs, i.e. aggressively shoving whole human beings into an absurdly reductive false dichotomy.
Between its either-or-ism and its forced assignment, the traditional approach to gender reveals itself to be obviously bullshit to anyone who spends more than a few minutes thinking about it. Its boundaries are arbitrary, inconsistent, and generally ill-fitting at the level of individual experience, which why they require such an outrageous amount of coercion and bodily violence to enforce. As much as other folks want to participate in a system of ritualized violence I guess they are free to? Personally, Iād prefer to see it actively dismantled.
If gender is to be saved itāll be by subverting it, taking it apart, remaking it into something life-affirming. Not the dehumanizing garbage weāve got now.
As of yet I donāt have any plans to change my presentation because I donāt fuckinā gotta!
I do have a preference towards They / Them pronouns, but She / Her is still fine. For most of my friends this isnāt going to be at all surprising nor will it in any way negatively impact our relationship. Anyone who needs me to just-be-a-girl, however, can expect turbulence.
Truth #3: My righteous anger is justified and I am good at using it to help others.
I have felt conflicted about my anger for a long time. Since a very vocal childhood I have been regularly frustrated by prejudices and injustices, and I was frequently the first voice of dissent against them, whether that meant challenging adults or my peers. Unsurprisingly, I became well acquainted with the standard strokes of the backlash.
When you are confronting bigotry in a mixed environment, the voice of the status quo will generally manifest in one of two ways:
Gaslighting, e.g. āyou are wrong to have said this at all, obviously I am a Good Person, you are just imagining that what I said sounded like XYZ, honestly how could you even think this, as a matter of fact it is I who is offended!ā
Tone policing, e.g. āyouāre too upset about this! after all, I, the person who did Fucked Up Thing, am perfectly calm about Fucked Up Thing, so any amount of anger makes you irrational by contrast, and I get a raincheck on whatever this is about!ā
I know these responses are repulsive. I know they are merely the signs of a weak and imperiled ego acting out of fear. And yet I still spend an inordinate amount of time second-guessing my own anger. Gaslighting and tone policing are a favored weapon of the status quo because they work, and they work in direct proportion to how agreeable their target wants to be.
content warning: the following segment talks about sexual harassment and assault
About couple weeks ago I had the misfortune of being sexually harassed at a club in Bushwick. After numerous rejections and explicitly telling a creep bothering me, my friends, and other women in the club to get lost, I finally went to get a bouncer to eject him. The bouncer got the creep to leave. When I went to thank him, the bouncer told me a whole story about how the creep was āa harmless guy.ā Then he reached down and grabbed my ass. Presumably he felt entitled to do this after helping me get rid of a person I asked him to remove... for unwanted touching.
It Really Sucked.
At every turn during the whole ordeal (and its aftermath) I had to hold onto my anger, convince myself that I wasnāt overreacting, remind myself that anyone who thought this was acceptable to do to me is almost certainly doing worse to more vulnerable people. I kept picturing myself the way this guy, this man in a position of power, must have seen me in order to feel okay doing what he did. That I was young, small, female, too friendly to say No, already indebted anyway; that he was one of the Good Guys, that his behavior was also āharmlessā because he had decided it was. I conjured up as much anger as I could, pushed down the nausea of envisioning my own degradation from an attackerās POV, and got to work. I reached out to the club and was quickly put in contact with the owner. The venue now has a publicly posted zero tolerance sexual harassment policy. The entire staff is going through training with a local org dedicated to creating safer nightlife spaces. And that motherfucker has been fired.
I demonstrably made the world better. I wasnāt alone, but all that happened because of my actions. Me and my anger, we did that.
I wish more people were this fucking angry. š¢
~ end of content warning ~
iii. an opinion
My Saturn return is upon me, yāall. As Frank Ocean serenades, weāll never be those kids again. I have lived a few of these here nine lives and it seems only prudent to be moving forward with some sort of opinion on the matter.
My opinion is this: us folks with financial and physical security should be spending more time fixing shit around here. Figuring out what needs fixing and how you might help are the first steps.
If youāre operating on a similar scale of privilege as I am, maybe that means changing jobs to do more mission-oriented work. If you canāt swing a change of that magnitude, maybe it means showing up to community events and engaging with, caring for, supporting people you otherwise wouldnāt talk to. Churches, libraries, volunteering, supporting local artists, participating in local politics - this all counts. If youāre already doing this sorta thing, that is awesome! Maybe you also have a friend worth inviting who you sense is just itching for a chance to exercise compassion?
Iām using āfixingā pretty loosely here, too. Fixing, to my mind, means making the world brighter, safer, and sweeter for your fellows, human and otherwise. Weāve all got different ideas about what that looks like, and there are definitely folks - myopic or malevolent or both - who will swear up and down that their fear- and hate-driven behaviors will bring about better world. Ultimately, though, I believe that many hands reaching towards their personal vision of Better will in fact make things Better, especially when that vision is informed by meaningful interaction with the real world and its real sorrows and its real triumphs.
But ya gotta reach. Ya gotta try.
I am so tired of hearing my well-fed, well-homed friends piss and moan about late capitalism4 without lifting a damn finger in service of the communities bearing the brunt of material hardship. Unfettered capitalism sure does have a marked tendency to wreak havoc on organic life! But capitalism is not a monolith, and lamenting the abuses perpetuated by its principle benefactors as unchanging or inevitable only normalizes them. Any investigation into the history of capitalism (or the broader phenomena of how a Few come to subjugate the Many) will very quickly disabuse you of the notion that this shit is going to stop without a great deal of active resistance.5
So unless you are personally doing work to put our current strand of democracy-withering corporatism six-feet-under, seriously, just STFU instead. Your nihilism is boring! You donāt sound woke! Save it for your local DSA working group!
Which isnāt to say that Iām not convinced of the wickedness6 of the problems weāre facing: skyrocketing wealth disparity with no relief in sight; the destruction of most of Earthās biodiversity via mass extinction; a pernicious climate of racism and xenophobia that scapegoats black and brown folks and then visits misery upon them; the weight of an aging population bearing down on the shittiest healthcare system of any nation in its class; a widely disenfranchised electorate further fragmented and fatigued by hyper-polarization; the gendered terrorism that is inflicted daily on women, trans and non-binary folks, and queer people at large; a rising wave of depressive anxiety as people become more aware of these problems and how thoroughly theyāve been disempowered from changing things for the better.
So yeah, I get it. These are hard problems. I just donāt see any better option than trying anyway. I want to spend my time fixing things around here and encouraging others to try their hand too. You already know the bad news: real change is hard and it can take a very long time. You might work your whole life sowing seeds whose fruit you never get to taste.
The good news, however, is that you can get started whenever and wherever you are. The good news is that a sense of purpose is its own reward.
iv. how to get started
When youāve got hard work ahead of you, your best bet is to use your beautiful human brain and create some leverage. Ask Archimedes about it.7
Lever systems got two parts:
The lever, which is the tool you use to amplify your effort. The longer your lever is, the easier your job will be.
The fulcrum, which is the wedge the lever rests on. The nearer your fulcrum is to the thing you want to move, the easier your job will be.
If youāre starting from zero - āI want to do more for the world but I donāt know how!ā - my advice is to forget about the lever arm for now. A lever aināt shit without a fulcrum, anyway. Your time is better spent exploring the world, keeping an eye out for problems youād like to solve, and identifying nearby points of leverage. If you want to get into activism, a fulcrum might be volunteering to fold pamphlets for an organization with a mission you believe in. If want to see more self-expression in the world, it might be might be inviting your friends to a zine-making class or hosting your own arts and craft night.
The best fulcrum is one that makes you Feel Good when you apply any amount of effort against it. Too many people get caught up in a self-defeating belief that if they canāt give 110% of their creative energy to something they might as well not try. I can confidently say that trying is itself a virtue. Every time you try even a little bit you make it easier for yourself to try again later, and more importantly, you make trying easier for others. A bunch of people altering their behavior a smidge in the same direction doesnāt add up to nothing; on the contrary, itās a sea change.
If youāve got a decent idea of the types of problems you want to solve, though, and youāve tested your fulcrums, and you are thinking, āOkay, but is this all Iām capable of giving?ā then itās probably time to work on your lever. Given your own interests and inclinations, what skills can you develop that will increase the good youāre doing 10x, 100x over? This is the long game, but it scales a whole lot better than ākeep doing what Iām already doing, but more.ā
For me right now this means deepening my technical knowledge, building a resilient support network, and sharing what Iām learning. Helping others has been a powerful motivator for self-improvement, not the least of which because itās a convenient shortcut through the snarl of self-confidence issues.
I am so grateful that Recurse Center was a stop on lengthening my lever! What a concentrated cluster of helpful, considerate beings.
Iāve spent the last two years wandering around New York City in wide-eyed wonder, asking myself the most ambitious question I could think of: how do you save the world?
Getting older comes with a lot of downsides, but asking yourself big questions and living your life as the answer is the primary pleasure of adulthood. It took a ton of courage to get started and I am still frequently awed to find myself moving in the right direction. Iām humbled by the grace and fortitude of the folks whoāve been at this for way longer.
Iām also a hell of a lot happier. This summerās gonna be rad. āļø
There are lots of extraordinarily sexy company names like this in the legal world.Ā ā©ļø
Having the choice to direct my energies in this way is a privilege. Working in tech gives me this freedom of motion and I have been drawn to software engineering in part because it is the freest of the free (if you still gotta labor for your living).Ā ā©ļø
š±š«šš¬š¬š¬... šĀ ā©ļø
Substitute with whatever modifier is en vogue. As a point of fact, ālate capitalismā is a term thatās been floating around for literally over a hundred years.Ā ā©ļø
Thankfully, history also clearly demonstrates that the tide can be turned.Ā ā©ļø
āThe use of the term āwickedā here has come to denote resistance to resolution.ā Wikipedia page.Ā ā©ļø
āGive me a lever long enough and a fulcrum on which to place it, and I shall move the world,ā etc etc.Ā ā©ļø
3 notes
Ā·
View notes
Text
2017: a year of courage š¦
If 2016 was a year of opening doors, 2017 was a year of walking through them. This year demanded a lot of courage.
First, the fun things!
Programming.
Iāve been talking about this quite a bit already, so I donāt want to linger too much. This was my first year working as a programmer (heyo) and I learned a whole lot very, very quickly. Building a data-heavy webapp for bar associations and their member lawyers from scratch is no joke! Iām also real proud to be capping the year off in the midst of a batch at Recurse Center. About a year ago I kept thinking about how good it would feel to be āreadyā for something like RC, and it does, it feels good.

āwhat are u doing rn?ā selfie circa mid May.
Zines and indie book sellers.
I encountered a lot of zines this year, exponentially more than all the years of my life prior. I went to a zine reading, multiple zine fairs (including one I volunteered at), I assembled a zine at the Bushwick Print Lab, I brought friends to Quimbyās. And, ofc, I bought a bunch too.

I purchased all the zines above at Peteās Mini Zine Fest.Ā From top left to bottom right, they include: a parody science zine about āfrackingā; a zine about a womanās experiences riding the subway when she was pregnant; a zine about the history of animals that have been sent to space; a holographic bookmark that isnāt a zine but reminded me of a femme version of the robot in FLCL; a zine someone made about remembering her recently deceased father and how theyād go mushroom hunting; an art zine full of sketches of demons. I also asked every artist to sign the copy I bought, because I am a huge dork. š¤

A beautiful zine I found in the library at the Recurse Center. Zines are everywhere! Keep an eye out. š
I also spent a lot of time browsing and buying books (often used, sometimes not) from independent bookstores and sellers. I picked up books from BookPeople in Austin, from the Oakland Book Festival, from a library sale in Syracuse, from Unnameable Books in Prospect Heights 1, from Autumn Leaves in Ithaca, from the Verso loft in DUMBO, from Borderlands in the Mission, from Powellās in Portland. I even scored Invisible Cities and Frankenstein from a stack left outside my neighborhood coffee shop.

These were all purchased for like $3 from a library sale held in the garage of a old fire station in Syracuse, NY. Includes: a book about stream of consciousness novels; a book about how to make poisons written by this dude; a book of poetry about the devil. Mustāve been a real moody day.
Interference Archive and Church Night.
I visited a lot of new places in 2017, so I wanna talk about two places that I found myself coming back to again and again.
I first visited Interference Archive or went to events where they tabled roughly a dozen or so times this year. I remember spending snowy days in winter doing a bit of cataloging for a big archive theyād received of counter culture newspapers from the 70s. I participated in two reading groups hosted by IA, one on different social movements from the 60s to today and another on race and mass incarceration following The New Jim Crow2. Interference Archives annual block party was also killer, with free screen printing, radical button-making, a used book sale š, free tamales served out of a trash bag (they were so good!!), and a live Yiddish queer punk band.

I blew up and tied these balloons for IAās block party all by myself! Very important work!Ā

One of the issues of The Berkeley Barb that I cataloged. I also cataloged about half of The Black Panther newspapers in their collection. You can check out Interference Archiveās catalog here.
I also went to church service four times! š Church Night is a comedy show that features three standup sets, a burlesque show, and a 90s rock sing-a-long, all rolled up into a evangelical sketch. Each service is also topped off by a real-ass sermon, with positive messages that have made me cry multiple times. It is a really perverse good time and the folks who run it are extremely friendly and hardworking. They travel to Brooklyn every couple months or so and are based in Washington DC, so if you near live in either of those areas, I fucken implore you to check them out.

Another great service at Church Night!
Puppet shows and films.
I attended two puppet shows this year, which is two more than any year in adult memory and certainly two more than I could have expected! The first puppet show played after a few live bands on a rooftop in Bushwick on a hot summer night - I drank cold canned beer and graciously accepted when some generous stranger passed around a bowl.
The second puppet show was a performance at a banging housewarming party in a living room in Bed Stuy, and a friend was one of the central performers. At one point during the show an iMac in the living room fell four feet to the hardwood floor below and the audience - a room full of friends and friendly faces - gasped. THE SPECTRE OF FAILURE!3 I thought very loudly in my head while my face contorted into rapt, waiting concern. Of course the show Went On, the moment of danger transformed, transcended. Holy shit! This is real! This is real life! I thought over a swelling-swooning heart, and it set the tone for the best night of my year.
I managed to catch a bunch of rad shorts including the IFCās showing of Academy Award-nominated animated shorts, Rooftop Filmsā non-animated āuncannyā shorts as well as their animation block party, and a round of alternative horror shorts presented by the Bushwick Film Festival. Respectively, my favorite shorts from each of these collections were: Blind Vaysha, about a girl with an eye that sees the past and an eye that sees the future4, See A Dog, Hear A Dog which explores how we train non-humans (particularly š¶ and š¤) to respond to us as if they understand us, My Man (octopus) about the stickiness of a toxic relationship (or, from the same night, Pittari, about a v cute demon), and GREAT CHOICE, which is a hilarious horror short about being stuck in an infinitely looping Olive Garden commercial from the 90s.
If you enjoy films and live experiences generally, I canāt recommend Rooftop Films enough. Theyāre a long-running NYC nonprofit that supports diverse, independent filmmaking and their summer series is truly unique and wonderful; each screening is hosted in a dope outdoor location in NYC and is preceded by a musical act fit to the theme of the film. I saw films on the roof of the Old American Can Factory and backlit by the eponymous sunset of Sunset Park. The ticket-price also includes an open bar after each screening, and you can chat with the folks who worked on the films. These are the kind of events that make living in a city so special, so take a friend, take two, and go!

It was a chilly the night at the Old American Can Factory where we saw Rat Film, a documentary about Baltimore told through the measures taken to control the rat population. Eugene (left) is wearing a towel I bought in LA. Bailey (right) is wearing a NASA sweatshirt.
Big music, living room music, radio music, discos Good and Bad.
Unlike last year, I didnāt go to any music festivals, but I did hit up a couple biggish shows. I saw Chastity Belt at Williamsburg Hall of Music (what a great venue š) and Yaeji at Elsewhere.

In a surprise display of social aptitude and luck, I managed to pull together folks from no less than four disparate friend groups to go see Chastity Belt with me in June.
Iāve been getting good at identifying proper communal experiences and boy, AcouticQ really hits the nail on the head. Itās such a friendly, intimate setting that you canāt help but wonder, is this not the perfect what to share tunes about heartache and triumph? If that compelling to you and youāre a good person who enjoys folky music and supporting queer artists, starting following AcoustiQ and hit up one of their events! Bring snacks, bring booze, bring a cash donation. šµ

I saw Julia Weldon first at AcoustiQ in Septemberā¦

ā¦and then again in November at PIANOS.Ā ššø
I started listened to radio programs - I think perhaps when looking for tunes for my daily bike commute? Anyway, I found myself tuning in pretty regularly to Radio Free Brooklyn. Bushwick Garage is probably my most listened to station, and I havenāt really tried any of the more talk show stuff. I suspect thereās something for everyone, especially if you live in NYC. You can check out their schedule here, though Iāve been relying on their Mixcloud channel for the most part.
Continued to do a fair bit of dancing in 2017 and saw a few new-to-me venues. Iāve decided that I really hate most any dance club on a Friday or Saturday past midnight; the situation nearly always devolves into Basic Dance Beat while straights get sloppy all over the place. There is nothing more distracting and vibe-killing than pretending not to notice some baseball cap bro who keeps desperately dancing at you in a crowded space, especially when you know heās āworking up the courageā to say something that will inevitably be heinously stupid. Like, I did not come here to build empathy for mediocre dudes hoping to ~get lucky~ at the club, I came here to dance myself clean!!! š¤
So when I tell you that Iāve had nothing but positive, glowing experiences the last two times Iāve been to weekend events at Magick City, let me tell you, this is high praise! What a great DIY music venue. The first event I went to there was a record listening party, where a roomful of people laid on blanket on the floor and quietly listened to an album - had a break to talk about it, pee, get another beer - and then listened to another. The second event was a set by these folks in a thick fog with a great light show and yet room to dance and breathe! The drinks were cheap and there was a whole table of delicious free snacks that had been prepared onsite.
youtube
Look at this rad setup by Drippy Eye Projections!

A communal fifth of whiskey left in the bathroom at Magick City. Just in case you needed a lil, yāknow? What a phenomenal discotheque!šŗāØ
Biking.
Through 2017, biking has been my main form of commuting. I spent winter and spring using Citibike5 until finally buying my own in early June. Deciding to own a bike for the first time in the city, let alone picking what to buy, was a pretty challenging experience. I went with a lightweight matte-black hybrid with an internal hub for its 3 gears.Ā

My bb is decked out with cleated neon-chartreuse pedals, green and yellow spoke beads (not pictured), and a purple-teal bluetooth speaker.Ā šš
And a word, if we might, about my speaker: this speaker is tough as shit! Iāve dropped it off my bike multiple times, and once I looked back only to watch it get run over by a car, twice. Itās also survived rain, sailing, and being dumped roughly into airport bins.6

I have plenty more to say about biking, but to cut to the chase: biking is clearly a superior mode of urban transit if you are able-bodied, have the nerves to deal with cars, and donāt mind arriving at your destination kinda gross. In the last 18 months or so Iāve gone from someone who Never Goes Out to someone who Goes Out More Than Your Average Bear and Iām prepared to credit biking as a major enabler. If you want to learn more about your city, see your friends more often, and make new ones - start biking!
youtube
This is a video I shot while riding my bike home from a 4th of July party. I nearly got nailed with a Roman Candle, lol.
Traveling.
I also did a greater-than-expected bit of traveling again this year, again all within the United States. I went to Austin in April, visited Oakland and Berkeley for the first time in May, visited both Ithaca and Vermont for the first times in July, drove to Kentucky to see the TOTAL SOLAR ECLIPSE with my cousin in August, drove from San Francisco to Los Angeles for Indiecade in October, and capped off with a half-work half-play visit to Portland, OR in November. I suspect this isnāt a sustainable amount of traveling, but itās incredibly hard to regret - especially when it allows you to see friends who live far away or experience unique bonding moments with friends who live nearby - so who knows what next year will look like.

One of the most special places Iāve been this year was Lothlorien, a student coop at Berkeley where a friend lived in undergrad. It was an inspiring intentional community - so much art on the walls, a tree house with a perfect view of the sunset, a dream library. So magical!Ā š
The cabin trip in Vermont was also really special. We did so many appropriate summer camp activities, like sailing, tubing, visiting cows, taking walks under a sky full of stars, building a blanket fort, putting together puzzles, and playing with fire.

We made this at the beginning of the day and boy oh boy did it come in handy for organizing ourselves! And gee, look at how well hydrated we were. š¦šš¦
Now, the less easy stuff.
Sex.
One of my goals this year was to ālearn more about sex.ā

me: when you said we were going to be learning about sex, i didnāt realize thereād be so much reading involved, i thought it might be less of a mental and more of a physical edu- also me: lol donāt front
When I first cracked open Batailleās Erotism: Death and Sensuality, I remember being absolutely floored by how much it was not whatever I had expected it to be - and that that was a helpful starting place. Erotism is an examination of the function of taboos and their sites of transgression, how the act of transgressing is subject to its own social rules and tends to be ritualized7, and how as conscious mortal beings weāre compelled towards moments of transgression because they seem to imitate what we imagine the great continuity of death feels like without having to, yāknow, die. I liked his analysis of de Sadeās writing and the irony of sadism - that the promise of transgression is greater self-awareness, but the violence it requires necessarily also erodes that same awareness. I both appreciate and am wary of how aggressively Bataille dislocates sex from a bodily endeavor to a psychological compulsion. He had also some real undercooked shit say about women and was clearly terrified of sex, so Iām kinda disinclined to treat his opinions as functionally valuable to lived experience.
The Persistent Desire, on the other hand, was easily the most personally important book I read this year. Itās an anthology of generations of lesbian femme-butch relationships, told through stories from womenās lives, interviews with queer scholars, and some extremely hot sex poems. My primary inner-dialogue with gender has been āughā and āthis shit againā and āif I pitch my voice and play Nice Girl this unbearable interaction will be over faster.ā I had never spent so much concentrated time thinking about the performance of gendered sexuality in queer relationships, and wow, I have been missing out on some much better thoughts!
Like, Q: Does gender performance ever feel sexy to me, not just hostile? Under what circumstances? A: Yes, but generally only so long as a) the performance is fluid, eg. youāre the boy, Iām the girl, now youāre the girl, now weāre both boys, and b) power, however gendered, doesnāt rest in one place for too long. Gender is fun to play with as long as it feels like playing, where the heteronormative script is really only referenced insofar as itās being subverted, shredded up by contact with a reality that unequivocally de-legitimizes it.
Like, Q: how much better would my life be if I approached sexual relationships from a place of radical honesty and expected the same from my partners? A: PROBABLY A LOT.
Like, Q: how do I make space in my life to form romantic-sexual relationships with people who arenāt cishet dudes? A: idk bitch, but youāre apparently a pro at lifestyle changes! Keep going to queer events, keep reading, keep processing. I believe in you.

This is a cute fire safety map at the Lesbian Herstory Archives, which I visited for the first time on a very wet snowy day in November. The archives had been mentioned frequently in The Persistent Desire and I was so excited to find that they were still around (44 years!), located in Brooklyn, and having an annual book sale.
Depression, denial, and death.
At one point this year I remember having an entirely normal hang out with my sister and partner in our Bed-Stuy apartment. I turned to the both of them and said, āYou know, I think I might be real sad. I think I might depressed.ā I wasnāt worried when I said it, though I do remember the words feeling strange. My sister and my partner of 7 years looked at each other, something like āUh, do you want to take this one?ā or āDoes she really not know?ā and eventually someone said, āYeah, Nicole, that sounds right.ā

If you had told me last year that Iād be spending so much time with Freud and Camus I would have rolled my eyes very, very exaggeratedly.
The most frightening thing about mental unwellness, imo, is that a good personal quality which is otherwise healthy and worth cherishing can become catastrophically distorted. So, say, an extremely deep capacity for enduring pain and discomfort, especially in service of others, becomes proving your worth by how much youāre willing to suffer, how much energy youāre willing to give away without expecting reciprocation. Worse still, letās say, is being trapped in a cycle of denial about your own nature.
Denial takes lazy, irrational, harmful patterns of thought and elevates them to Gospel. You canāt be a generous and giving person because you can so clearly recall all the moments when you could have given more. You canāt be getting taken advantage of because you obviously would not abide exploitation in your presence. A friend wouldnāt repeatedly use you, to your loss and their gain, so thatās impossible by definition. If what youāre doing was really that painful and exhausting, you would have stopped already. _If you were depressed, youād know it._8

I took this photo in Austin on a night when I was feeling decidedly not good at all. In fact, I was feeling so not good and so ashamed of not feeling good that I went out and bought The Myth of Sisyphus.
Last month the opiate epidemic rose up and swallowed my estranged uncle. Though we werenāt personally close, Iād spent my childhood within a ten minute walk from his house and had lots of memories of him. Death leaves a vacuum, always. Itās also an effective invitation to re-examine your life and the people in it. My uncle was provided with endless love and support from his family - and yet. Self-delusion sure is captivating.9
This was a year where I decided that I valued truth over self-delusion, and more importantly, a year where I affirmed that decision with concerted effort. It is extraordinarily challenging to reckon with the blind-spots in your perception of reality, especially whenever those blind-spots were constructed By You to cope with past pain and avoid it again in the future. Maybe everyone doesnāt need to do this? Maybe most people live comfortably with the given state of their ego? But internal delusions are a barrier to conscious clarity, and to the extent that living consciously feels the most like Actually Living and not Waiting To Die, I am determined to clean that shit up.
Lessons, imperatives!
So itās late afternoon on Dec 31st and if this is going to be a 2017 recap, Iām really coming down to the wire. Here are the most important lessons I learned this year.

I luv this demon, because they sure got the right idea. ā¤ļøš¤Ā
AESTHETICS MATTER.
Iāve often caught myself feeling bad for identifying with a community or culture that I didnāt feel like Iād āearnedā my place at yet. This happened with biking, it happened with programming, it happened in queer spaces. imo, the best way to handle impostor syndrome is to kill it where it sleeps. I sure am! I am a devious impostor! Letās see how far I can get before someone reveals me, exiles me! Turns out you can get all the way to Being The Thing, especially if your intentions are true. Your attraction to the thing is the first signal of your belonging, so get busy belonging!
LOVE THYSELF, AND GET GOOD AT IT.
Most of the psychological friction Iāve come up against in my search for The Truth Please has been caused by a very stubborn refusal to see and accurately assess my own self-worth. Very classic, very boring. I have only just begun to internalize what it might mean to love myself, to care for myself with even a little of the generosity and kindness and specificity that I happily devote to other people. The psychic backbending Iāve had to do to accomplish this goes something like, what if we loved ourselves the way we wished someone else would, like, idk, as a joke or something? Wouldnāt that be funny, at least?Ā š
That worked pretty well, but when it didnāt, I used brute willpower: hating yourself is a cowardās game, and whatever I may be able to lie to myself about, I will not pretend that Iām a coward.

Ultimately, though, the best way to learn how to love yourself is to watch how your friends do it and to actively resist the urge to interrupt them.
SPEAK, BITCH šÆ
Earlier this year I was walking with a friend, and I was very ashamed of myself when I told her I was thinking about writing something. I immediately walked it back, waffled, recoiled from myself. She was bewildered. āYou should! I feel like you have things to say!ā My reaction to this was sharp, panicked fear.
Because she was right. Because self-articulation and knowledge-sharing are fundamental human endeavors and if I think Iām somehow exempt from that, that I somehow uniquely Havenāt Got Anything Worth Saying, then that is delusion. Because if the real thing holding me back is a fear that my skill wonāt measure up to the things I want to express, then the brave and honest thing to do is to try anyway.
So when I went to Recurse Center, I started this blog. I named it Because Its Important just so that every time I started doubting myself and asking āWhy oh why am I doing this?ā I would have the answer right there. š

š Thank you for reading! Here is a silly-glasses bathroom selfie.
I read Donna Harawayās CYBORG MANIFESTO for an outdoor discussion group at Unnameable books this summer. It is so amazing. I could only barely keep pace with it and I canāt wait to read it again after some time.Ā ā©ļø
I consistently arrived late, but bearing coffee by way of apology. āļøšĀ ā©ļø
I read Theatre of the Unimpressed, a book recommended to me by a friend after we saw an indie play earlier this year. The book talks a lot about what makes theater captivating, about the necessity of the possibility of failure, about the tendency for people to see see one boring-ass play and decide that they Just Arenāt Into Theater. The play we saw together wasnāt memorable, save for the fact that it was performed in a loft that hosts semi-regular makeout parties, which Iāve attended on half a dozen occasions. They are largely terrible.Ā ā©ļø
In one of the scenes Vaysha is courted by suitors, but they appear as child in one eye and an old man in the other. Fucking chilling.Ā ā©ļø
I remember a conversation earlier this year where a guy said that he ācouldnāt imagine what it takesā to ride a heavy Citibike over a bridge in NYC. āWillpower, mostlyā I replied. He ignored me, repeated himself: āGee, but I just donāt get it!ā If someone doesnāt want to understand, they donāt want to understand.Ā ā©ļø
You can buy one here.Ā ā©ļø
In fact, a taboo aināt even a taboo if it canāt be transgressed!Ā ā©ļø
A possibly less upsetting example of a denial! In September I was walking to brunch with my sister and her boyfriend the morning after a party at my bff's apartment. "Nicole, you really brought the party!" He said to me. My immediate emotional response was anger at how 100% wrong he was. The night before I had brought glowsticks, mini shark toys, and a Gingerhead House kit to the party. I was going to a party that night for which I'd purchased a tank of helium and large tropical balloons. But my desire to argue, my certainty that He Had Erred was complete. I've very rarely experienced moments where my subjective experience is so strongly misaligned with objective reality, but now that I'm in the business of noticing this crap, it happens pretty regularly whenever anyone says anything nice about me, to me.Ā ā©ļø
Drugs, too.Ā ā©ļø
2 notes
Ā·
View notes
Note
awesome post, awesome data, awesome script, the unicode hearts are a nice touch! it's inspired me to make my data-munging scripts just a little nicer. u should check out cProfile (run python -m cProfile -o output your_program), it will just spit out a file (readable using pstats module) that says how long was spent in each function.
thank you!!! sorry i didnāt see this until now! š
0 notes
Text
nand2tetris
One of the projects Iām working on at RC is completing Nand2Tetris - a free online course that takes you through the construction of a computer from basic hardware logic gates through running software like Tetris.
why am i doing this?
Iāve been spending a lot of time interrogating my limitations, with the hope that an honest assessment is the first step towards making them less limiting. Now that Iāve wholly decided that a perfectionist fear of failure will not be one such limiting factor, next up on the list is Time Itself. In each day there are a fixed number of hours I can spend tackling a challenging problem before my productivity - both in terms of output and learning - bottoms out.Ā
So, knowing that quality focal time is a precious resource, why choose to spend it building a computer from scratch?
The Nand2Tetris coursework is well-regarded, well-documented, and has a big community. Even outside of folks at RC, I have friends who recommend the Nand2Tetris course and have worked through it on their own. One friend said that her office was planning on starting a study club for it in the near future. Taking a class that so many others have also engaged with and can vouch for makes it feel more ārealā as a project, which is especially important since coursework in general (and MOOCs especially) tends to feel divorced from practical application.
Lower level thinking is a refreshing complement to ānormalā projects. So far, one of my best strategies for eeking out a couple more productive learning hours is to take a walk around SoHo, grab a caffeinated beverage that I really shouldnāt be consuming so late in the day, and then switching gears to work on a problem of a very different flavor. It helps to be able to trade in the gnarly headaches that come from higher-level projects - like, letās say, the sprawling agony that is setting up a node-react-express-pg webapp for the first time - for the more compact frustration of āWhy is this damn bit saying 1 instead of 0?ā
Overcoming insecurity about my lack of formal computer science training. While one MOOC hardly competes, a big part of my motivation for starting Nand2Tetris stemmed from a desire to get a peek into what obtaining a CS degree in undergrad might have looked like. Proceeding through the course has helped dispel a lot of unhelpful mythologizing.
Right place, right time. āI learned how to build a computer at a programming retreatā just has a certain ring to it, yāknow?
what iāve learned so far
Iāve completed four of the twelve units, which puts me a third of the way through the course content. The most recent unit was an introduction to machine language, so I this week wrote and ran my first ever assembly program. š

^ I think this is from a line of exploration when I was trying to make a Full Adder chip from Half Adders, but I canāt quite recall. I was just really happy when I came back to my notebook and found these HA HA HA sketches.
Putting things together hardware first is a fun paradigm shift. For Unit 1, I started by busting out a pencil to chart out chip interfaces and the logic gate components within them, then translating those into hardware description language (HDL). With the basic chips down, Unit 2 has you compose a longer HDL program in order to create an arithmetic logic unit - the chip responsible for performing the arithmetic necessary to operate on bits within your computer. Ā This is all pre-state, so creating the ALU really banks on your ability to wield an Everything All At Once control flow. Unit 3 introduces time, which you manipulate through building bigger and bigger RAM units and then a program counter that can direct data into and out of those units. In Unit 4 you write instructions in assembly, translate them down to machine language, and then run your first programs. Proceeding from the ground up, the way one imagines computers came together in ~antiquity~, adds some historical drama to what might otherwise be a pretty dry affair.
Recognize what works and what doesnāt; do the former, stop the latter. When I first started doing the Nand2Tetris course, I went about it according to my usual MOOC pattern: I did all the steps in order the best I good, including both reading through the book and watching all of the videos. I ended up finding that I really enjoyed the book, but that the videos were just as likely to confuse me as not - and they felt like they took an age to watch, regardless of how long the time commitment actually compared to reading the book. When starting Unit 2, I read the book chapter first and then said āEh, can I do this without watching the videos?ā and found that indeed, I could, and I wasted a lot less time feeling confused in the process. The only videos Iāve consistently watched from that point out are the project overviews, which directly relate to the assignments and have tips on how to approach them. Talking to other folks at RC who have done the course, other strategies have worked better for them: some people do both, others watch the videos instead of reading the book, etc. Iām happy Iāve found a process thatās been working for me.
Get as far as you feel you can, then look for help. So far, and particularly when designing the chips, many of the assignments in the course have felt like riddle-solving. Once youāve seen the solution itās hard to imagine un-knowing it, so working it out for yourself is pretty much the entirety of the challenge. As such, I was disciplined about only looking up answers after Iād worked pretty darn hard to solve the puzzle myself. The three times Iāve been stuck enough to search for examples of passing assignments, I found that I was either a) making syntax errors or b) didnāt realize I had another feature of HDL at my disposal, like decomposing or replicating a single signal across multiple out streams. You donāt learn if youāre too quick to look up the answer, but you also donāt learn if you never get to the answer.
You donāt need to completely understand what youāre doing to be able to do it. I was surprised at how effectively I was able to fly by intuition in a pinch. When I was stumped about how to design a chip I experimented with just doing what āfelt rightā and it reliably worked. Iāve spent a lot of time undervaluing my intuition. It can be hard to assign worth to a process which by definition resists rationalization, and all else being equal, a more complete understanding of how something works is preferable to hoping your subconscious tosses up something useful when you need it. But, is all else equal when moving forward on intuition helps build out such an understanding? š¤ I feel like Iāll be digesting this one for a while.
having something to prove
When I first decided to do Nand2Tetris, I remember one conversation I had about it.
āNo one will be able to challenge my cred,ā I joked. āIāll have built a computer from scratch.ā
I felt weird pretty much immediately after saying that, since a) only assholes are interested in challenging someone elseās ācredā for the heck of it, b) Iām disinterested in being or pretending to be motivated by the opinions of assholes, and c) to the extent that any single person spends time judging me against an arbitrary measure of success, that person is me. I am the asshole!!
So in an effort to not be an asshole, Iām doing my best to remind myself of my own personal appreciation for technological history and the process of distilling abstraction from implementation. Gotta say, internal motivation feels a lot more solid than the alternative!
0 notes
Text
dramatically better
Iām approaching the halfway point of my batch at Recurse Center. As such, it feels important to step back, take stock, and recalibrate. How has my sense of myself as a programmer changed? Am I becoming dramatically better?
why iām here
There are endless reasons to want to become better at programming: the cool pleasure of deepening mastery in an esoteric domain, the hot pleasure of hacking something together real fast, the comforting pleasure of developing ājob friendlyā skills, the tribal pleasure of identifying and aligning with other morally-conscious programmers, etc etc. It can feel really good!
At the beginning of my batch I spent some time thinking about why I, personally, wanted to be a better programmer.
Hereās what I had at the time:
Introduce and strengthen novel ways of thinking. As someone with very little in the way of traditional STEM education, programming concepts tend to be incredibly compelling, due at least in part to how alien they are.
Expand my capacity for self-expression. What are the skills I need to follow my own curiosity? How can I become brave enough to share what I find?
Help make the world a safer, more just, more meaningfully connected place. This runs the gamut from providing technical assistance to nonprofits to making games for my friends because I love them and want them to be happy.
As far as becoming better means making progress on these goals and having code to show for it, Iām doing pretty well. Iāve made my first ever solo game, Iāve explored a dataset and asked a funny question that other people enjoyed, Iām building a computer from the ground up, and in my free time (lol) Iām volunteering with a nonprofit whose mission is to stop harassment from debt collectors. Iāve even been writing about some of it!
whatās going well
Picking my own projects. Iāve been my most happy and productive when working on something that I felt personally attached to and which did not have a clearly defined tutorial to follow. Iāve also done a good job at finishing the projects I take on.
Taking ownership of my attention. I recognized a few big distractors at RC over the past few weeks, namely: keeping up with Zulip (the internal messaging platform) in real-time and attempting to concentrate in the main āopenā area. At first I felt like not doing these things would mean that I was ādoing it wrong.ā I got over that by telling myself that even if this obviously untrue thing was somehow true, I care more about my happiness and productivity than ādoing it right.ā
Applying steady pressure to the outer bounds of my comfort zone. Every week Iāve done something that Iād wanted to do for years but never had, usually because I hadnāt known where to start and so never did.
whatās holding me back?
The #1 thing holding me back is that I waste any amount of time being afraid.
As a person living with more than my fair share of both social anxiety and philosophy textbooks, Iāve done a lot of work to order my internal universe. Itās important to me that I think and believe true things, which is why it really burns my biscuits when I find that I have been thinking and believing an untrue thing. And it has become increasingly clear that one of the greatest sources of untruth in my life is my estimate of my own capabilities.
The problem is that I stubbornly keep doing things that Iāve told myself I could never do. Iāll worry that what Iām working on doesnāt matter or isnāt interesting, only to find that other people very much care and are engaged with me and my projects. I court vague fears that I wonāt know how to do something so I put off starting, then when I finally get bored of that and just start everything ends up goingĀ completely fine.
I always eventually conquer my fears and it does get easier every time. But Iām not content with incremental improvements - Iām out here trying to get dramatically better, after all.
When youāre staring directly at your own irrationality for the fifth or so time in as many weeks, you gotta wonder: what is consistently underestimating myself costing me?Ā
What if instead I chose to feel as capable and confident as I rationally should?Ā š¤
Anyway, I think I can. Iāve done the impossible before.
1 note
Ā·
View note
Text
python data vis, small and not-small victories, and a taste of ML
tl;dr - Check out the Jupyter notebook I created for finding the most annoying question in the Sister Survey, plus a few visualizations of answers to demographic questions.
Last week I wrote about my using my rudimentary Python scripting skills to explore the āSister Survey,ā which was a large survey administered to nearly 140,000 American women in Catholic ministry in 1967. A kind RC alum shared my post on MetaFilter, which lead to an absolutely amazing discussion, including a thorough explanation of the religious and historical context of the āmost annoying question.ā Definitely worth a read!
I noticed that two different commenters had some pretty specific requests!
āI'd love to see this redone as a Jupyter notebook.ā
āIt would be interesting to see what kinds of structure live in that data, e.g. factor analysis on the questions to see the more-or-less-independent areas of belief.ā
The former Iād never done but seemed easy enough and the latter Iād never done and had absolutely no idea how to start, so I decided to cut the effort down the middle and create a Jupyter notebook with a few visualizations for demographic questions I found in the survey.
You can view it here.
Here are a few of the lessons I learned this week.
Wow, this whole ānotebookā thing is great.
This was the first time Iād worked with an iPython notebook, and itās really hard to imagine going back to pure scripting. So many of the small annoyances that I struggled with while writing the original script - having to remember variable names and what was in them, accidentally re-running the portion that downloaded the responses, having to manually indentĀ in code blocks - are handled so neatly in the notebook structure. The more I learn about programming, the more often this happens: finding a solution that makes life an order of magnitude more pleasant, that I somehow wasnāt using before even though I was technically aware of its existence. It always feels a little silly to recognize how inefficiently I was doing things before, though doing things that way provided its own learning opportunities too.
The switch from writing Python in the terminal to using a notebook was generally seamless, though I did find myself surprised on one occasion. Iād noticed the execution order flag next to the notebook inputs, and Iād noticed them incrementing as I ran blocks of code, but I hadnāt realized that exporting the notebook (or uploading it to a Python notebook viewer, like Anaconda Cloud), would preserve that run order.Ā
What a powerful notion! Iām guessing this is particularly useful when working with data, since reproducibility is one of the hallmarks of good analysis.
When trivial things arenāt.
This was a really challenging week for me for reasons outside of RC. Emotional compartmentalization is a foolās errand, though, so I mostly had to let myself deal with that - even when I wouldāve much rather had my attention entirely focused on becoming a better programmer. When I encountered difficulties with what I assumed should be a very basic data visualization task, combined with my already dismal mood, my confidence bottomed out.Ā
The gulf between my expectations for myself and my current performance was horrifying. I felt unsalvageable. Because I couldnāt immediately get some bar charts to display correctly.Ā
Anyways, I kept going, because I didnāt have any better plans. And once I was able to clear my head enough to just do the damn thing, things came together. I felt better when I was finished, though I still had a lingering shame that itād taken so long. (It didnāt take that long.)Ā
I decided to post in the RCās #victory channel, for three reasons - two good and one questionable:
I believe that itās important to acknowledge and celebrate oneās wins.
Even so, I donāt ever doĀ it for myself. So I need to practice if I want to live according to my principles.
It seemed funny to celebrate something so utterly banal, anyway.
The response was super heartening. š
All the frustrating moments - when I couldnāt tell if I needed to be reading MatPlotLibās documentation, or Pandas documentation, and how the two libraries might be interacting with each other - suddenly felt real and valid. I donāt know why I was so surprised at how much better this made me feel, but I was. Social creatures are strange!
The power of 5 minutes.
I mentioned earlier that I had absolutely no idea how to start a principal analysis, which I took to mean, āfind out which questions are most important for determining a respondents overall position.ā That might be a bit of an exaggeration, because I at least had a suspicion that some kind of clustering algorithm would be the right place to start.
Another big source of anxiety this week was the sense that I really wished I could answer this question, but that I didnāt have the skills or knowledge to do it. While Iām not so great at celebrating victories, I am thankfully at least marginally better at asking for help when Iām stuck. I asked around RC to see if any folks had experience implementing k-means in Python, but more broadly, if someone could help me talk through whether that was even the right approach for clustering respondents by their survey answers.Ā
Fellow Winter 1 batcher Genevieve Hoffman, who has a background in creating data-art installations, came to my aid. I explained my goal and the data I had on hand, plus my central concern: is k-means even appropriate when the data youāre working with is essentially discrete and categorical (eg. multiple choice survey responses)? We both werenāt quite sure, so we started googling. The response was resoundingly: no, k-means relies on Euclidean distances for its clustering and therefore is notĀ the right way to go.Ā
Could I have gotten to this answer myself? Almost certainly! But doing the work to frame my concern in a way that another person could understand it, searching for an answer together, and digesting the results together - even over the course of a few minutes - was invaluable for both widening my perspective and reassuring me that my intuitions were worth listening to. Several of the responses we read suggested that another (much less widely used) algorithm would be more appropriate: k-modes.
At the time of that conversation I had pretty much resolved that I should give up on clustering for now and be satisfied with my bar charts. I found, however, that I am generally not great at giving up. (For better and for worse.)Ā I read more about k-modes, mostly getting lost in the math, until it finally dawned on me: why donāt I just try to use this, for like, five minutes?
You can probably see where this is going.
Those are three possible clusters when running k-modes on survey respondents answers to the demographic questions. Each value in the centroids list corresponds to an answer to a question, specifically these questions:
Your age now
Number of years in congregation from first vows
What is your race
To which of the following groups do you consider your family to have belonged while you were growing up
To what religion did you belong while you were growing up
With which political group would you align yourself
You can see right away that some questions donāt matter. For example, pretty much everyone was white and had been Catholic before joining the ministry. And there are clearly correlations with how old the respondent was and the number of years theyād been in the congregation: younger respondents had taken their vows more recently.Ā
The most interesting result was the last one, where it seemsĀ like there may be some relationship between age and years in the congregation and willingness to identify politically: the 6 response in the survey isĀ āI do not consider myself in a political contextā and the 2 response isĀ āLiberal Democrat.ā
Two important developments came out of this very, very quick exploration. Firstly, wow,Ā going fromĀ āI canāt do itā toĀ āitās doneā in such a brief amount of time really calls into question the accuracy of oneās sense of personal agency! And secondly, algorithms arenāt magic and it would take a lot more work before I felt comfortable making any claims stronger than āmaybe something is happening here?ā
Iām excited to work my way towards that point, but I am not there yet. Plus, I donāt have any deep understanding of Catholicism and religious history, which seems like it would be pretty darn helpful in this situation! If Iām going to be getting into data analysis through machine learning, I feel like itād be a lot more responsible to start with a less complex (and less serious?) dataset.
1 note
Ā·
View note
Text
whatās the most annoying question to ask a nun* in 1967?
tl;dr - In 1967, a very long survey was administered to nearly 140,000 American women in Catholic ministry. I wroteĀ this script, which makes the survey data work-ready and satisfies a very silly initial inquiry: Which survey question did the sisters find most annoying?
* The study participants are never referred to as nuns, so I kind of suspect that not all sisters are nuns, but I couldn't find a definitive answer about this during a brief search. 'Nun' seemed like an efficient shorthand for purposes of an already long title, but if this is wrong please holler at me!
During my first week at Recurse I made a quick game using a new language and a new toolset. Making a game on my own had been a long-running item on my list of arbitrary-but-personally-meaningful goals, so being able to cross it off felt pretty good!Ā
AnotherĀ such goal Iāve had for a while goes something like this:Ā āDevelop the skills to be able to find a compelling data set, ask some questions, and share the results.ā As such, I spent last week familiarizing myself with Python š, selecting a fun dataset, prepping it for analysis, and indulging my curiosity.
the process
On recommendation from Robert Schuessler, another Recurser in my batch, I read through the first ten chapters in Python Crash CourseĀ and did the data analysis project. This section takes you through comparing time series data using weather reports for two different locations, then through plotting country populations on a world map.
During data analysis study group, Robert suggested that we find a few datasets and write scripts to get them ready to work with as a sample starter-pack for the group. Jeremy Singer-Vinesā collection of esoteric datasets, Data Is Plural, came to mind immediately. I was super excited to finally have an excuse to pour through it and eagerly set about picking a real mixed bag of 6 different data sets.
One of those datasets was The Sister Survey, a huge, one-of-its-kind collection of data on the opinions of American Catholic sisters about religious life. When I read the first question, I was hooked.Ā
āIt seems to me that all our concepts of God and His activity are to some degree historically and culturally conditioned, and therefore we must always be open to new ways of approaching Him.āĀ
I decided I wanted to start with this survey and spend enough time with it to answer at least one easy question. A quick skim of the Questions and Responses file showed that of the multiple choice answer options, a recurring one was:Ā āThe statement is so annoying to me that I cannot answer.āĀ
I thought this was a pretty funny option, especially given that participants were already tolerant enough to take such an enormous survey! How many questions can one answer before anyĀ question is too annoying to answer? š¤Ā I decided itād be fairly simple to find the most annoying question, so I started there.Ā
I discovered pretty quickly that while the survey responses are in a large yet blessedly simple csv, the file with the question and answers key is just a big ole plain text. My solution was to regex through every line in the txt file and build out a survey_key dict that holds the question text and another dict of the set of possible answers for each question. This works pretty well, though Iāve spotted at least one instance where the txt file is inconsistently formatted and therefore breaks answer retrieval.
Next, I ran over each question in the survey, counted how many responses include the phrase āso annoyingā and selected the question with the highest count of matching responses.
the most annoying question
Turns out itās this one! The survey asks participants to indicate whether they agree or disagree with the following statement:
āChristian virginity goes all the way along a road on which marriage stops half way.ā
3702 sisters (3%) responded that they found the statement too annoying to answer. The most popular answer was No at 56% of respondents.Ā
Iām not really sure how to interpret this question! So far I have two running theories about the responses:
The survey participants were also confused and boy, being confused isĀ annoying!
The sisters generally werenāt down for claiming superiority over other women on the basis of their marital-sexual status.
Both of these interpretations align suspiciously well with my own opinions on the matter, though, so, ymmv.
9x speed improvement in one lil refactor
The first time I ran a working version of the full script it took around 27 minutes.Ā
I didnāt (still donāt) have the experience to know if this is fast or slow for the size of the dataset, but I did figure that it was worth making at least one attempt to speed up. Half an hour is a long time to wait for a punchline!
As you can see in this commit, I originally had a function called unify that rewrote the answers in the survey from the floats which they'd initially been stored as, to plain text returned from the survey_key.Ā I figured that it made sense to build a dataframe with the complete info, then perform my queries against that dataframe alone.Ā
However, the script was spending over 80% of its time in this function, which I knew from aggressively outputting the scriptās progress and timing it. I also knew that I didnāt strictly need to be doing any answer rewriting at all. So, I spent a little while refactoring find_the_most_annoying_question to use a new function, get_answer_text, which returns the descriptive answer text when passed the answer key and its question. This shaved 9 lines (roughly 12%) off my entire script.
Upon running the script post-refactor, I knew right away that this approach was much, much faster - but I still wasnāt prepared when it finished after only 3 minutes! And since I knew between one and two of those minutes were spent downloading the initial csv alone, that meant Iād effectively neutralized the most egregious time hog in the script. š
I still donāt know exactly why this is so much more efficient. The best explanation I have right now is āwelp, writing data must be much more expensive than comparing it!ā Perhaps thisĀ Nand2TetrisĀ course Iāll be starting this week will help me better articulate these sorts of things.
flourishes ššš
Working on a script that takes forever to run foments at least two desires:
to know what the script is doing Right Now
to spruce the place up a bit
I added an otherwise unnecessary index while running over all the questions in the survey so that I could use it to cycle through a small set of characters.Ā Last week I wrote in my mini-RC blog, "Find out wtf modulo is good for."Ā Well, well, well.
Hereās what my script looks like when itās iterating over each question in the survey:
I justified my vanity with the (true!) fact that it is easier to work in a friendly-feeling environment.
Plus, this was good excuse to play with constructing emojis dynamically.Ā I thought Iād find a rainbow of hearts with sequential unicode ids, but it turns out that ā¤ļø š and š¤ all have very different values. ĀÆ\_(ć)_/ĀÆ
the data set
One of the central joys of working with this dataset has been having cause to learn some history that Iād otherwise never be exposed to. Hereās a rundown of some interesting things I learned:
This dataset was only made accessible in October this year. The effort to digitize and publicly release The Sister Survey was spearheaded by Helen Hockx-Yu, Notre DameāsĀ Program Manager for Digital Product Access and Dissemination, and Charles Lamb, a senior archivist at Notre Dame. After attending one of her forums on digital preservation, Lamb approached Hockx-Yu with a dataset he thoughtĀ āwould generate enormous scholarly interest but was not publicly accessible.ā
Previously, the data had been stored on ā21 magnetic tapes dating from 1966 to 1990ā (Ibid)Ā and an enormous amount of work went into making it usable. This included both transferring the raw data from the tapes, but also deciphering it once itād been translated into a digital form.
The timing of the original survey in 1967 was not arbitrary: it was a response to the Second Vatican Council (Vatican II). Vatican II was a Big Deal! Half a century later, it remains the most recent Catholic council of its magnitude. For example, before Vatican II, mass was delivered in Latin by a priest who faced away from his congregation and Catholics were forbidden from attending Protestant services or reading from a Protestant Bible. Vatican II decreed that mass should be more participatory and conducted in the vernacular, that women should be allowed into roles asĀ āreaders, lectors, and Eucharistic ministers,āĀ and that the Jewish people should be considered as ābrothers and sisters under the same Godā (Ibid).
The surveyās author, Marie Augusta Neal, SND, dedicated her life of scholarship towards studying theĀ āsources of values and attitudes towards changeāĀ (Ibid)Ā among religious figures. A primary criticism of the survey was that Nealās questions were leading, and in particular, leading respondents towards greater political activation. ā
As someone with next to zero conception of religious history, working with this dataset was a way to expand my knowledge in a few directons all at once. Pretty pumped to keep developing my working-with-data skills.
2 notes
Ā·
View notes
Text
making a pico8 game during my first week of RC
tl;dr - Play my first ever solo game right here!
On my first day of Recurse, fellow W1 2017 batcher Ayla Myers (whose work you can peep here) presented on fantasy game consoles, PICO-8 in particular. Her presentation ran roughly 5 minutes, but it only took about half that time to convince me that I should give it a whirl. Since asking for help is more than encouraged here, I approached her immediately afterwards and asked if she could do a quick walkthrough of PICO-8 sometime.
āYeah, of course. When do you want to start?ā
āUhā¦ā It was already 6pm. āTomorrow?ā
āOkay!ā
And lo, 11am the next day found myself and a handful of other Recursers sitting around a table in the Turing meeting room as Ayla showed us the ropes.
PICO-8 is a highly-opinionated, highly-constrained fantasy console with a robust set of tools for quickly developing and sharing games. While Iād played a few PICO-8 games before, I hadnāt realized just how core the commitment to retro-nostalgia is to the engine itself. Here are some fun things I learned about PICO-8:
It includes a pixel art editor and a chiptune mixer, both of which are a delight to use.
PICO-8 games can have 2 players, but each player only gets 6 possible inputs: four directional keys and two others (typically Z and X).
On the programming side, developers are allowed a maximum of ~8k tokens and ~65k characters. This incentivizes some extreme optimization, overloading, and other tricks in larger games that near those limits.
The games are super easy to export and share, either as embeddable HTML and JS or as downloadable executables.
As someone who has shipped dozens of games professionally but has never personally programmed one from start to finish, I decided that itād be a good exercise to build one during the remaining 4 days of the first week.
On programming in a new language.
PICO-8 uses a subset of Lua, which Iāve never read or written before. Under other circumstances, I probably would have preemptively given up and shied away from using a tool that required learning a new language. Fortunately, my current circumstances are āyou are entirely here to learn new things and surrounded by people who can help, actuallyā so I waved off the anxiety and plunged ahead instead.
Turns out that Lua felt very similar to other game programming Iād done in the past, so there wasnāt any need to worry anyway! (One begins to suspect that there is rarely a āneedā to worry⦠š¤)
There were a few things that stood out in particular as I built my game.
First, to handle animations - like bobbing a sprite or moving UI elements on and off screen - I found myself repeating a pattern using a counter (incremented every update loop) and a maximum (resetting the counter to 0 when it reached this value). I wasnāt sure if a series of timers would be a better fit for cycling through animation states, especially since this pattern meant assigning at least two tokens per animation. Since I was focused on building this quickly and wasnāt worried about running up against the token limit, however, I figured that consistently using a single pattern that I knew worked was the way to go.
Example of the section of the batās update loop that flaps her wings up and down and plays a quick beat on each flap:
Second, I learned that tables are āthe only data structuring mechanismā in Lua, and that there is no readily available method to query them about the number of items theyāre holding. To solve this, I tracked the count of items as a separate variable and updated the count any time I was adding or removing items from the table. If I were pinched for tokens Iād probably handle this differently, likely by writing a separate function that iterates over the the items in the table and returns the count.
Lastly, and this one was a pleasure to discover, Lua is perfectly a-okay with removing items from a table while iterating over items within that table. For example, during the update loop I want to iterate over each of the moths in the game and check if the bat is in a position to eat them. If the bat should eat the moth, I want to add a quick sound effect, draw some bug-gut splatter to the screen, and remove the moth from the moths table.
I can do all of that like this:
This was a big relief to me because Iāve had trouble doing the same with JavaScript in the past!
On finding relief in constraints and designing a tiny game.
I didnāt have a strong idea when I first started making Sonar, other than that I should be able to finish it in a few days and that it should be about animals. Certainly my appreciation for earthās non-human lifeforms would stave off any temptation to jump ship if things got confusing or tedious. š¦
There was a brief moment where I sat, staring at my laptop screen, wondering what I could even do with only two non-directional inputs. It took about five minutes for me to come to my senses. What if this constraint, much like the constraint on tokens or audio channels, was a blessing? āWow, Iām so glad I only have two buttons to work with,ā I told myself, found it to be true. āIn fact, letās start by using only one of those buttons.ā
Changing your perspective sure is a time-efficient way to clear obstacles!
On making art and SFX.
While Iād done some game programming (though never a complete solo project), Iād certainly never done game art or audio. In fact, art and audio often felt more intimidating than the rest of the design or development. I didnāt really know anything about creating reasonable looking pixel art or have any kind of background in creating music or sound effects; I just knew that both were important to making a game feel whole.
Once again, PICO-8 provided seamless introduction to these areas of game development. With only 16-colors and 8x8 pixels to worth of space to work with, I never got stuck trying to pick the perfect colors or shape for a sprite. If it worked, it worked, and it only took a matter of seconds to make changes and see them live in the game.
As someone who has zero musical education the responsibility of creating audio made me more than a little apprehensive, but I found the SFX editor similarly quick to learn and pleasant to use. I stopped short of making any ambient music, but I did make a few sounds: a steady but muffled bassline for the batās wings flapping, a high-pitched chirp for the echolocation, a gulp for a bug being swallowed, and a confirmation bloop for starting the game. SFX are necessary for giving a non-haptic game the illusion of tactile feedback, and even just these few simple, two-note sounds do a lot of heavy-lifting in making the game feel more responsive.
On jamming fast, alone, in an environment geared towards collaboration.
The single biggest struggle I had while working on this project was worrying if I should be spending my time doing something else. Whenever I spent large chunks of time coding alone, rather than pairing or attending study groups, I couldnāt help but feel like perhaps I was missing the forest for the trees. Shouldnāt the first week be about learning as much as possible about my peers and their interests, in the spirit of future collaboration? Did I somehow find a way to ādo it wrong?ā
Hard to say, what with only one weekās worth of information! My current guess, however, is no. I became familiar with a new language, I learned a new toolset, and I finished a project that I feel at least remotely comfortable showing to other people. Those are pretty solid accomplishments, even in the face of a gnawing suspicion otherwise!
More importantly though, I practiced being comfortable following my own intuition of what an ideal first week might look like. I proved to myself that I could set my own goals and meet them. I also developed a general feel for the ebbs and flows of working with myself as sole author and stakeholder on a project. Iām sure this kind of self-knowledge is valuable at any level, but as a beginner it feels like an especially worthwhile point of reference.
Besides, this was all made possible because I was inspired by a fellow Recurser, asked them for help and got it.Ā
How could that be wrong? š
You can play SonarĀ right here.
ps. I almost forgot something funny!
This is one of the first things that happened when I began animating my pixel bat:
I laughed at this for a solid minute. It was wonderful, and only more so because I had spent the previous two hours setting up new software, familiarizing myself with basic Lua syntax, and fretting over whether my pixel art would be at all legible.
As one of my friends commented, āOH NO, HIS FLAPS FELL OFF!ā And then, āor HER flaps, excuse me.ā
Making games is generally time-consuming, tedious, detail-oriented work. On the bright side, many of the bugs and SNAFUs you run into are just silly as heck. The moments where ish goes off the rails can provide exactly the right dose of harmless humor to revitalize your motivation to finish.Ā š
edit (11/15/2017)
Once again going above and beyond in her helpfulness, Ayla informs me that you totally can get the length of a list in PICO-8!
Hereās how, using the # operator:
local some_list = {32, 4, 72} print(#some_list) -- prints 3
āļøš¦
edit (11/17/2017)
So probably it makes sense to link to the the code, since becoming a better programmer is the whole gosh darn point! š
Also, because it may be helpful, I want to provide a quick outline of how you might also crank out a small game in a narrow window of time:
day1 - purchase and install pico8 (if youāre at RC, talk to someone about using their license!) - install a lua linter on your text editor of choice - run pico8 in console mode, so u can use printh to debug - make a player character that responds to input - make a 2-state animation for that player character (eg. flip between two sprites, add some bobbing motion, etc) - get ppl to Play Your Game!
day2 - make an enemy (note that these could also just be Collectable Objects if u aint feeling like defaulting to violence āØ) - make a 2-state animation for that enemy - give that enemy some passive behavior - disappear the enemy conditionally (eg. touched by player, hit by bullet) - make another enemy with similar but more challenging behavior - get ppl to Play Your Game!
day3 - add an end-condition (eg. eating some amount of bugs) - add SFX. this is more important than music for making your game feel whole, and you can do just about everything you need to with 2 note blips - add UI elements (eg. health bar, bullets left, etc) - add a start screen - add an end screen - get ppl to Play Your Game!
day4 - add finishing touches - export your game as html from PICO8 - host somewhere, like itch.io - write a blog post!! - share with your friends and the rest-o the world
2 notes
Ā·
View notes