Recurse Center: week 12, day 4

Last day of my batch!

I kind of expected to have that kermit-flail reaction, like so:

Kermit the Muppet flailing wildly in front of a red stage curtain

But instead I’ve been talking with people, attending Alicia’s awesome code dojo (we round-robin paired on a Flask app for Abstract Salad Factory, which is where everyone brings an ingredient for salad, and then everyone shares the ingredients, and makes whatever salad they like from those things), and not exactly ever making it out the door to have lunch. (That’s what trail mix is for!)

Also went to Madelyn’s awesome short presentation on “how not to be disrespected,” which, one, was a great presentation anyway, and TWO, Madelyn has such incredible presentation & comedy skills that it was ALSO an absolute blast.

And now somehow it’s five, and I still haven’t heard back from the Latvian embassy, and I’m going to go talk to Sonali and Nancy about JOBS STUFF, and then there are presentations, and THEN there’s our end-of-batch party, and we are dressing up like programming languages. So. This is going to be pretty fun.

I will reflect more on all this soon, for whatever definition of “soon” ends up being right.

Recurse Center: week 12, day 3

Leaned more heavily in to spending time with people. Coffee-walk check-in is the best. Went costume-questing with Alicia and Shad, who are both clever AND a lot of fun. (Our end-of-batch party is Thursday, and it’s a costume party, and the theme is programming languages…) This also took us to an art store, which was fabulous.

Had another soba-licious lunch (two days in a row!), this time with Allie. Hooray Corcoron. Also, dip soba is a thing! You get noodles, and something hot to dip them in, and a separate dish to hold them over as you eat them. It’s amazing. It is another form of “yes, adults, it is okay for you to play with your food.” And then you get soba broth (soba-yu) to pour INTO the hot noodle liquid so you can drink it, because it is full of All The Healthful Things. Okay!

I am sure I did some programming things, but I don’t think I did all that many, and that is okay.

Also made two Annoying Adulthood Phone Calls (I warmed up with a call to my dad, partly to ask about one of the things, and partly because it was a phone call that didn’t scare me).

I called the Latvian embassy (I got the voicemail — all in Latvian — and left a message in English, ending with “Paldies” [thank you in Latvian]. Woulda done Latvian if I knew it!). My brother, my sister, my dad, and I all applied for citizenship last year, and got it, but I have to go to Washington, DC (where the embassy is) in person to do the passport application. Which, ugh. I thought it would be So Easy to do that this summer, and it turns out this was not the case. So now I’m trying to get it done next week. And if worse comes to worst, I’ll take a plane trip soon, and whatever. But I’d rather not. A little train trip would be so much nicer.

I ALSO called the health insurance broker to finally resolve this insurance gap of mine. Since I’m on leave from my old job, and thus not working, my coverage through them ended at the end of July. But that’s a qualifying event, so there’s a special 60-day open enrollment period. You may notice that it’s almost 60 days later. But I did it! I called. And left ANOTHER voicemail. And the very nice broker returned my call, and I had to talk to her for a long time, but now I’m enrolled and I just have to give an insurance company money soon. And then, if anything horrible happens, at least I will not be All The Bankrupt. Just, like, out of savings. Hooray American healthcare. Hork. I’m not in any particular rush, but it will be cool to have a regular adult job with a paycheck and health insurance and stuff again. More energy left over to do awesome things.

Recurse Center: week 12, day 2

Not enough sleep, but what a good opportunity to finally try my first “flat white,” which if I remember correctly, Ann described as “like a latte with less milk.” And it’s got almond milk. And it’s delicious and small. And it’s also not a second iced coffee before 11:00.

There’s so much I want to be working on, but also I should probably be working on my niceties for my batchlings. There’s a tradition (of unknown age, to me) of putting together things with little nice things about all the never-graduating people, and they’re due Wednesday morning (tomorrow!), and they took me WAY longer than I expected last time. Mostly this is because I actively admire a lot of people here, and sometimes it’s tricky to verbalize a feeling.

What else did I do this day? (I’m finishing this Thursday morning, and reminding myself why I’ve written these on the days they applied to.) I did some more PostgreSQL (or however that’s capitalized) study. I got distracted a lot. I had a really good conversation with Liz in the evening about how maybe the last week of one’s batch isn’t so productive on the code front, because it’s the last week that one is around these PEOPLE. I think I’m changing my tack for the rest of the week.

Recurse Center: week 12, day 1

Here we are!

Had good coffee-walk check-in chats with Aagje and Laïs, whose presence(s) I have been enjoying so much. Talked more about why I want to do what I want to do after RC, and although I’m happy to flip the table if need be, I need to give it a shot first.

I have been developing a different kind of patience here, and a big piece of that is that I am no longer willing to throw myself under the bus in the name of patience. I do believe that I had good reasons for doing it before, but I also believe that that was hella destructive, and I’m putting that firmly behind me.

More time with relational database study today! <3 So good. There’s a piece in the code I edited that I don’t quite understand (it looks kiiiinda like a list comprehension, but not quite), but the rest of it makes sense, and ALSO it works:

posts = ({'content': str(row[1]), 'time': str(row[0])}
         for row in cursor.fetchall())


¯\_(ツ)_/¯

Learned about the inside guts of SQL injection and input sanitization and cleaning up the results of not-sanitizing.

Working inside of Vagrant is starting to make sense, in pieces. Having switched almost entirely to vim for text-editing, I notice some things missing already when I’m inside mah box (e.g. “where are my line numbers?”). But it’s helping me strengthen the muscle memory of certain commands (e.g. :set nu!).

Also went for some good walks (I have my first pair of non-little-kid Keds and apparently they are Taylor Swift edition?, and I went by the Littlebits store, and I went on soup-quest with Sonali and Nancy).

Our friends have been in town, and tonight’s their last night in town. For maybe the first time our whole batch, there’s no Monday night talk, and I’m kind of relieved, because it means I don’t have to skip out on something.

Recurse Center: week 11, day 5

In brief: omg RC is almost over, Vagrant, walking in Chinatown, learning unintended things, manpage sandwiches, and your misandrist terminal

Kind of terrified that there’s officially less than a week left. Came in kind of late today, but then Fridays are optional, and they have a totally different energy. Successfully biked from new-home without getting lost. Different challenges than the old route. The Williamsburg Bridge is WAY more relentless than the Manhattan Bridge — it just goes up, and up, and up, and up — but it doesn’t have the same “bump bump bump” from separate concrete panels that the Manhattan’s got. You win some, and you scratch your head at some!

To my delight, though, both bridges give me a chance to work hard, and then a chance to just fly. They’re a huge part of why I’m even fonder of my bike than I’ve ever been — not necessarily one of the effects I anticipated from biking here.

Back to relational database partytime today. I took a long meandering lunchbreak in the middle (and went to one of the Buddha Bodai places — they are unrelated but have the exact same name, because New York), and I read historical placards, and I witnessed a really sweet art lesson/collaboration/mentoring? in the park, and I found a really awesome no-dumping sign in Chinatown:

And then I came back the extremely long way (“I’ll just stop in here for a minute” is never just a minute), got back into things, and got into trouble!

Okay, not bad trouble. We’re building a tiny fake forum in this class, and I’d spun it up, and apparently didn’t close out of it all the way in the terminal.

I’m using Vagrant with this virtualbox (which, for the record, is a clever way of ensuring your students have a consistent development environment that is likely to work. nice!). And because version control is the coolest, I tried to check git status. Nope; no git in the vagrant box. So I backed out of the vagrant session and tried again. Weird .pyc files and some vagrant configuration stuff, as far as I could tell, but nothing cool and useful that I could see.

I eventually gave up on this, headed back in with vagrant up, and…welp:

Vagrant cannot forward the specified ports on this VM, since they
would collide with some other application that is already listening
on these ports. The forwarded port to 8000 is already in use
on the host machine.

To fix this, modify your current projects Vagrantfile to use another
port. Example, where '1234' would be replaced by a unique host port:

  config.vm.network :forwarded_port, guest: 8000, host: 1234

Sometimes, Vagrant will attempt to auto-correct this for you. In this
case, Vagrant was unable to. This is usually because the guest machine
is in a state which doesn't allow modifying port forwarding.

I can translate:

Um, some computers did computer things. Now there is something undead in your computer. It’s your zombie; you deal with it. I have not been trained to handle zombies; I am — hark! — a mere vagrant.

If you want to fix it on your own, you could muck about with something. Godspeed, yo.

Sometimes, I try to fix this. But no. No trying this time. Because it didn’t work.

TO THE GOOGLEMOBILE, THEN

A search for “stop process on port” almost did it; adding “mac” gave me this StackExchange page on the first try.

Things I tried from there:

netstat -anp tcp | grep 8000

I, uh, don’t know what that does (safety alert: don’t run commands you don’t understand, and yes I thought about that when I did this, but it seemed safe enough [famous last words]), but it gave me a line of stuff:

tcp4       0      0  *.8000                 *.*                    LISTEN     

¯\_(ツ)_/¯

Undeterred, I kept looking through the page. (I’ve been amazed at what good information I’ve found in questions closed as “not within the guidelines” on StackExchange.)

Lo, what cleverness is this?

lsof -i:8000

It is a “list [you know, like ls] open files” command and a FLAG and oh yay, look at this output:

COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
VBoxHeadl 31878 liene   34u  IPv4 0xc3c82a3fd2729cff      0t0  TCP *:irdmi (LISTEN)

“But Liene,” you say, “that looks like an opportunity to learn about how to override line width in WordPress!” And you would be right. And it is also not my goal right now, so I’m skipping it. (I love this new version of myself.)

If you wanna see it lined up, though, here’s a visual of the same thing from my terminal:

lsof results

There we go! So clear! Now I’ve got a PID (a process identifier, not the other kind of PID, in case you were wondering). And that’s what I was looking for, so I could use this:

kill -9 <PID>

And voilà. Plugged in 31878 for <PID>, and my vagrant box came right back up (from a full halt, but not needing to download/build anything this time).


I’m thinking it might be cool to learn about what I ran, though.

TO THE PAGES OF MAN (i.e. manpages)

What even is netstat -anp tcp | grep 8000?

So glad you asked.

  • `Netstat` shows network status.
  • -a shows the state of allllll the sockets (even ones used by server processes, which seems particularly relevant here, since it’s a server process getting in Vagrant’s way).
  • -n shows network addresses as numbers, instead of the usual “interpret them and then display them symbolically,” whatever that means.
  • -p shows statistics about the protocol you are toooootally about to give it, except the manpage version sounds like someone is either tipsy or playing Mad Libs, so. (Show statistics about protocol, which is either a well-known name for a protocol or an alias for it.”) I’ll grant that it sounds a little more sensible with the formatting in the page-of-man.
  • That explains what the “tcp” part is for, too! Our friend, the Transmission Control Protocol. I look forward to learning more about tcp stuff later.
  • The pipe (NOW we’re getting to the stuff I already knew!) | just says “okay okay do the thing before this, but then hang on to the result for juuuuuust a second, because I want you to do something else with it.”
  • grep says “I want to find something, but in a difficult command-line way”
  • 8000 plays itself in this saga.

That’s all the pieces of the sandwich. But what does the WHOLE sandwich look like?

  • I want to know some stuff about the network status
  • and I want to know about ALL the sockets and their states
  • and please display network addresses as plain ol’ numbers
  • and I only want to know about tcp stuff; everything else is irrelevant
  • AND once you have THAT…
  • I just want things from the above result that contain “8000,” and I don’t care about anything 8000-free, because that is ALSO irrelevant
  • …okay go!

🍔

YEAH!

Okay and then “lsof” is “list open files” and then there’s the killing command…

“Wait, Liene. What about the flag on lsof?”

…so glad you asked! lsof has a BUNCH of flags. (Check it out, maybe now! Just like, get all “man lsof” with your bad self. Right now! Or maybe later.)

In any case, good ol’ -i is the only one I care about today.

Turns out the info about it is…well, set a -v flag on this one because it is VERBOSE. Ho ho ho, nerd humor!

It, um, “selects  the listing of files any of whose Internet address matches the address specified in i.  If no address is      specified, this option selects the listing of all Internet and x.25 (HP-UX) network files.”

…or as I first read it, “meow meow files meow meow Internet meow meow meow.”

If I’m right, though, that means this command selects the listing of all Internet and whatever-this-other-thing-is network files. So like, just network files.

You can specify any of this stuff, which looks like hieroglyphics but isn’t the worst (also EVERYTHING is optional, which is what the square brackets are for):

                [46][protocol][@hostname|hostaddr][:service|port]

First two square-bracket pairs can be completely ignored. Now we have half as many problemsquestions!

I didn’t specify an address in “lsof -i:8000”, or it would have been in the bracket-pair that starts with @ (where we could have used a name OR a numeric internet address in dot form), but instead there was nothing there. That means we can ditch that bracket-pair, too.

And ooh, there at the end! There’s a colon. We skipped the service part (the manpage example is “e.g. smtp”), because it wasn’t relevant, but OMG the port part is SO RELEVANT.

So — agh this is so good — that means that “lsof -i:8000” means “list all open files that have an internet port of 8000.”

CRAP COMPUTERS ARE AMAZING 💖  💞  💻  😍  💗

And then there’s one more, and the manpage for kill isn’t RAD when it comes to finding out what the -9 is about (I scan for flags! by their names! but it turns out this one is found under “-signal_number”), but it’s not awful. -9 just means “KILL (non-catchable, non-ignorable kill).” I don’t know what “non-catchable” means, but I DO know what “non-ignorable” means, so it’s basically like “okay srs this process has to stop RIGHT NOW right now IMMEDIATELY no takebacks.” -9 means BUSINESS.

Also. If you’re ever like, “ugh, I wish my computer were a misandrist,” and you want to feel like it is, just type “man kill” at the command line and watch how quickly it obeys your command. So anyway your computer is probably a misandrist.

We have friends arriving in town, and I could keep doing this all night, but I need to get home. I barely even got to play with Postgres today! But. I learned a lot more about some cool command-line superpowers. And now man-pages are noticeably less scary.

On another note entirely, to my horror, I sat the whole time I was at RC today, which is usually Not My Thing. And it was awesome instead. Well then. Maybe I’ll work on moving around a bit more this coming week.

Recurse Center: week 11, day 4

It’s our last day in the sublet we’ve been loving so much this summer. (All hail Listings Project.) And, finally completing the mission I attempted on the FIRST day of my batch, I successfully walked from Brooklyn Heights all the way to SoHo-ish RC in a beautiful late-summer morning. It was a really clear measuring stick for how 1) the weather has shifted, 2) my comfort navigating here (with a few google-y prompts) has improved dramatically.

I got so, so lost the first day. Where I come from, to find one side of a bridge from land, you just go to the water and walk towards the bridge, usually. New York starts its bridges MUCH, much, much further back. And then there’s the construction, obscuring staircases and more permanent signage. And by the time I arrived here, I was a bit of a mess.

But today? Such a treat. So simple. I’m comfortable jaywalking in front of crowds of NYC cops (whoops), because I have an innate understanding that no one cares.

Had another good coffee quest with our ever-growing check-in group. It was less check-in-y and more walk-y, but I had a few really good check-in-y conversations with folks.

Sat in on some systems design mock interview questions about elevators (neat!) and auto-complete searching (yikes!) with Sam, Jesse, and John (some of my favorite alums). I like that RC provides a way to inch closer to terrifying concepts in whatever way works for you. And today, that was just Being Around People Doing Interview-Type Stuff.

I also did the thing I’ve been threatening to do, and headed back to my Udacity course (intro to relational databases yesssssss).

Updated my VirtualBox, even though my old version said there were “no updates available” (fortunately for me, I know enough about how versioning works). (I had a previous one installed from an A11y project at a Grace Hopper Celebration Open Source Day.)

Installed Vagrant (exciting) and OH MY GOSH running vagrant up is COOL and all except for the part where it took FOREVER to download the box it needed (I think?). By “forever,” I literally mean over half an hour (that timestamp — /t — on my bash prompt came in handy!).

I don’t know if it’s all Udacity courses, or just this one, but the instructor is this kind of joyous nerd with a solid dose of humor. I regularly find myself connecting with weird little things, like this screenshot about “where you’ve been sending your SQL queries on this website”:

partial screenshot. "mysterious black box, with a database somewhere inside?"

which is approximately how I’ve been feeling.

Went to Spring‘s (side note: try googling them without looking at that URL) “yay new office” happy hour with a few other Recursers (all invited by Maia, I think). Realized how much I miss nametags if everyone does not definitely know each other. I also realized (again) how much I love good guacamole. Both are important, right?

Got home not-too-late to new-home (where we’ll be for the next couple weeks) in East Williamsburg, and it’s…the fanciest place that I’ve ever called home, even temporarily. It’s fancy in a calm way, though, with lots of little details to notice.

Recurse Center: week 11, day 3

Many successes today! Just not so much programmatic ones.

Went on a supportive-distraction and also “well hey, as long as there’s an event going on” trip to the Birchbox store with a bunch of women from my check-in group. (I LOVE coffee-walk checkins so, so much. One of the highlights of my day. We just, uh, made it last longer today.) Everyone in there was so happy and friendly and themselves-seeming. Surprisingly fun, and I got a free vegan pistachio ice cream cone (!!).

Was also reminded that I want to check out the Littlebits store before we leave. (It was on the way!) Haven’t yet been, but it looks like a blast.

Resolved to do Not The Thing Stressing Me Out, and while I’ve been pretty successful at that today (I almost forgot I also had a Grownup Ball Pit Appointment upstairs today), it does mean that I think I had an ice cream cone for lunch. Whoops.

I do feel a lot calmer, though. There is time enough (probably) for all these things I want to do. (Just maybe not at RC.) And I will not win any prizes by making myself miserable instead of having fun.

Forgot all about coloring club, called it late anyway, and had some good conversations (related to coloring!) about knot theory and programming languages and costume ideas. We ended up on another quest outdoors and got food from a DELICIOUS vegan place I hadn’t tried yet (by Chloe). There exists beet ketchup in the world, and it is beautiful and delicious. Sometimes lunch is at 6 pm, and also artful and nourishing.

Turns out the day was more about people than computers. This feels like a trend, and it worries me, but the worry isn’t so productive. Maybe I can ditch it.

Recurse Center: week 11, day 2

Last night I was up super late, but ended up having a really great evening with a bunch of RC women in a ridiculously nice apartment with a ridiculously nice roof deck (see, for instance, me as a unicorn. Um, the horn is the Empire State Building, by the way).

self.Empire State Unicorn() #recursecenter

A photo posted by Liene (@springsandwire) on

(And to be clear, the building had a roof deck, not the apartment.)

Afterwards, I also had my first “I’m the only person in RC right now!!!” moment, which was weird and kind of magical. Nearly all the lights were off, except one dim one in a side room, and a constantly fluctuating LED strip that painted faint rainbows on the wall.

Anyway. Today, I mostly had a day where I stressed really hard about not figuring out a path forward with my map things, and it messed up things like “eating food in a calm way,” despite the fabulous lunchtime walk I took, so maybe this isn’t the best way forward for now. I spent a bunch of time coveting soldering irons and other awesome electronics stuff, so maybe I’ll just have to bite the bullet and dive into that soon. Adafruit is SO COOL.

In the evening, I went with Nathan to see Jane McGonigal speak at the New York Public Library, which was amazing and impactful and I made sketchnotes and almost burst into tears when she talked about post-traumatic growth & its effects (also content warning/#tw: ideation-y stats about traumatic brain injuries on the left):

Got a copy of her new book, and got it signed to both of us. Commitment!

I would like to feel okay about the next week and a half, but it feels like it’s going so fast.

Recurse Center: week 11, day 1

Here is how I feel about it being week 11: ffffFFFFFFffFFFFF!!!!!!

I’m feeling kind of paralyzed by only having two more weeks. I know that this is a lot of individual days, but it feels like my time here is almost done, and it’s anxiety-inducing in a way I was hoping to avoid until, you know…afterwards. When it would be more convenient to have feelings. Alas, that is not how feelings work. Still.

I’m trying to get the EXIF data out of a photo (that part works), and then get the GPS coordinates (that part also works, albeit in ratios, which I need to turn into decimals), and THEN put that on a map (cue panic). This is my stated goal for the day, per what I said in check-ins.

This was a good idea, and I looked at a lot of things, and I played around with a lot of data structures in bpython (which was, honestly, super super fun), and I didn’t really get anything “done,” per se. And then I realized that maybe going to Rosh Hashanah lunch at Susan’s wasn’t going to be so compatible with daylong crushing of the code, anyway.

However, it was a really lovely afternoon. Great company, both people I knew and people who were new to me, and I got to learn a lot and participate in a lot of things that felt very meaningful. (I think I was the only non-Jewish person there? And no one made me feel weird about it.)

Learned about why we cover the challah (to summarize, perhaps badly, bread is the most important part of the meal, but the wine happens first & there’s some singing/praying, and we don’t want the bread to know about this, because it might get bummed out). Learned that you can put sugar onto and into all kinds of things, because it brings a sweet new year (usually one eats challah with salt? but at Rosh Hashanah, you eat it with sugar. Challah is super not-vegan, so I listened and adapted things, which was fine). Also! You throw the challah to people, because it’s Yay Celebration Happy Times, contrasted with somber times where you’d calmly hand food to someone, e.g. shiva. We talked about what we’d like to cast off, and what we’d like to bring into our lives in the new year, which was a really lovely moment of reflection.

We walked across a pedestrian bridge (all hail pedestrian bridges) to Randall’s Island, so we could be next to the East River (and not a bunch of cars) for tashlich (“to cast off”). Tashlich might be one of my favorite things I’ve learned about recently. It reminded me of the Latvian wedding tradition, where you cast all of your past regrets into the river with your wedding wreaths. Except this one is open to anyone, every year. And it’s bread, not wreaths. And also we saw a crab. (This is not particularly relevant, but it was nice to be tangibly reminded of the life in the East River.)

It ended up being a much longer, much more meaningful time of connection with people and life than I intended. I made it to the Monday night talk, but was late (for the first time!), and I had such a sense of peace I didn’t particularly care.

Tuesday: maps? Maybe!

Recurse Center: week 10, day 4

Didn’t end up going into the physical manifestation of RC today (well, Friday; what even is time), but DID successfully make it to my fellow batchling Jeff’s intro CS class, which I was super excited about.

It elicited a kind of impostor syndrome I haven’t had in weeks (e.g. “I’M NOT A REAL PROGRAMMER! HOW AM I SUPPOSED TO BE COOL ENOUGH TO TALK TO THESE KIDS”), but it was a real treat to be around people who were ready to just dive in and try things out with Scratch (which, it turns out, is super entertaining). Jeff’s students are opinionated, they ask good questions, and I’m looking forward to seeing what they make this year. All of us Recursers commented on how professional the kids were, too (there was a fire alarm, and all the kids filed down the stairs quietly, staying to the right, while the RCers had a hard time shutting their traps).

It was also kinda wild to see a different part of New York, way up at the northern terminus of the A line. The streets seem wider, the buildings are different, the businesses are different, and the school was super toasty (no air conditioning). Did I do a lot of reflection on privilege and socioeconomic stratification? You bet I did. I know what an immense privilege and opportunity it is to be able to move 3000 miles away, for three whole months, living in one of the most expensive cities in the country, but this drove it home in a whole new way.

Made me want to finally see what I need to do to volunteer with a local school back home, once we return to Portland, too.