oops i learned to code

my bad

(Look, I really don’t have much to add to the discourse about current events this week other than to say that obviously large platforms like Facebook, Twitter, and YouTube are complicit and there is nothing they can do to undo the damage short of ceasing operation entirely. But I will just link to a piece I wrote back in October about how social media specifically rewards a style of conversation and framing that is almost exclusively present in right-wing media, and just say that the first step on any path forward is to acknowledge that issues like toxicity and information integrity on online platforms are inherently partisan and can’t be solved in a politically neutral manner. Anything less than that is useless.)

The big thing for me this week was that I finished up code bootcamp. If you’ve been reading these emails over the last few months and thinking, “Huh, they’re getting shorter and worse,” that’s because I was busy at code school. I know how to make websites now. I knew how to style a Xanga before but now I know how to make real websites?

Why did I do this? Mostly it’s that I’d been thinking about doing it for years, but I had a stable job and tuition was expensive and learning stuff part-time at night seems like a good way to have knowledge go in one ear and out the other. But then I got furloughed/laid off by some gormless numbskulls, and the media industry isn’t particularly stable, and the only types of internet culture coverage editors seem interested in is pretending that Donald Trump invented the concept of “lying on websites” in 2015 or what’s trending on Media Twitter (a TikTok posted by a 42-year-old man captioned “the kids are alrigt” [sic]) or what half a dozen specific Weird Twitter accounts posted. And it’s a little annoying to go through job interview processes and get condescending responses like, “Sorry! But your resume is really impressive and we’d love to have you freelance for us in the meantime,” as if I’m writing cover letters and memos simply because I couldn’t find an editor’s email address. Point is: this year seemed like as good a time as any to tap out and figure out a real fallback. Plus, the pay is better.

So I took a 15-week immersive course on Zoom from the Flatiron School and learned some stuff. I learned languages like Ruby and JavaScript, and frameworks like React (which joins a long line of “cool things that are, unfortunately, from Facebook”).

For my final project I made a photo booth website (because people do be using webcams more frequently) called Boto Phooth (which I named as such because I think app names are too easy to pronounce these days). It’s cool; you can mess with it here.

I’m only half-joking when I say that this button is the most advanced feature in the project.

If your profile is public, other users can see it. If your profile is private, they can’t. Seems pretty simple. I spent a stupid amount of time — like 5 hours — on this. Every time you click this damn button, it sends a request to the backend server to toggle that is_public value.

But then I ran into another issue. Whenever a user loads up someone’s profile page (or “gallery” in this app’s specific terminology), my Ruby on Rails backend server would send JSON for all of that profile’s information. It does this using something called a serializer, which sends all of this stuff. Then I could just check the is_public attribute before displaying any other profile info.

The problem is that, security-wise, it seems like a bad idea to even transmit that data to the frontend if the profile isn’t public. So I had to also change the backend to send different JSON depending on the visibility status. On the backend, it looks like this: getting the username, finding their data, checking if it’s public, and then sending all of that data or just an entry indicating the profile is private.

I get all of that working correctly but then run into another problem. If a user wants to see their own profile, they should be able to do that regardless of visibility status. So I needed to also check and see if a user was requesting their own profile. I tried to do this on the backend but couldn’t quite figure out how so I ended up relying on Redux to do it. (Redux is a global state manager that lets you store, access, and manipulate data on the frontend, which helps websites work faster and stuff?) The site uses Redux to store the logged-in user’s profile. Eventually I landed on an approach that looks like this: If the user is public, display their stuff. If the user isn’t public, but is the user who’s logged in, go into the Redux store and grab their profile data from there. Otherwise, render the placeholder page for private users.

It also took me a while to get the settings menu to render in the correct state based on public or private. I have no idea if this is the “correct” way to do it, but it works how I want it to work.

I had to account for all of this for a stupid toggle box. Like I said, I spent most of a day on this one goddamn button. I felt like an idiot until I felt like a genius. I recount all of this to make two points:

  • Coding is hard. It took me five hours to implement a button that toggled between true and false.

  • Coding is easy. It took me just five hours — as a one-person team with no real-world experience and only three months of Zoom class under my belt working with a framework I watched some YouTube videos on a couple weeks prior — to implement a button that toggled between true and false.

Basically, I have some newfound appreciation for what coders do and a better bullshit detector for when companies with a bazillion dollars in targeted ad revenue say that changing or improving their platform isn’t feasible. It also turns out that coding is mostly knowing how to google stuff well, so the cyberstalking skills I’ve developed as an internet culture writer have carried over pretty well.

Those are some broad takeaways. The other thing I learned from taking a class online is that it’s a bad way to take a class. I mean, it’s fine, but it’s an environment where you don’t really talk to other people unless you need to, and as someone who did not struggle with the material, I feel like I rarely did. So it’s alienating in that sense.

And at the end of it, you have a graduation ceremony that looks like this.

Anyway, I guess I’m a coder now. So if anyone reading this has any idea for a dumb tech thing to build, I’m eager to build more stuff. And if anyone is looking to hire a junior coder who knows too much about what’s happening on Twitter, I guess I’m your guy.


Thank you for reading BNet. Sorry I keep writing about work stuff so much. The thing is, I am trying to get back to work. Thank you for bearing with me. It’ll get better in a bit.