Category Archives: Programming

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 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 3

It’s Thursday already, somehow! I don’t get it. How’d we get here already?

Linz came to me to hear about Our Entertainment and Awesomeness, the “Emoji in Your Bash Prompt” of my week 8. We learned some things, such as “Sublime Text won’t let you insert emoji from the usual special-character-and-emoji palette, BUT you can totally copy-paste emoji into Sublime Text.” I…I can’t believe that OS X’s default Terminal handles emoji better than Sublime. (Someone wrote a plugin, but come on.) I mean, vim handled this pretty okay mostly out-of-the-box. How cool!

So one of the lessons? +1, vim. You done good, kid.

Outside of the computer, I figured out how to put all of my hair up with four bobby pins. (Spoiler: it involves dividing my hair into four even-ish sections.) The humid summer heat of NYC has gotten me really good at learning how to keep ALL OF THE HAIR off of my neck for survival purposes.

I had intentions of learning more about EXIF today, but instead Steve (RC alums and RC alumni day <3 <3) and I ended up talking about traffic feelings and how to make the feelings into a thing.

Let me explain.

Coming from the northwest, I do not come from a car horn honking culture. Car horns are to be used only in times of imminent, scary danger. Any other usage is needlessly aggressive.

However, in New York, there is a whole vocabulary of honking. A honk can mean so, so many different things.

I have learned to tell the difference between different kind of honks. There is the “hey, just want to make sure you know I’m here, because I’m approaching the intersection where you’re jaywalking” chirp. There is the “hey, that was a bad decision you (other driver/pedestrian/bicyclist) made, and it made me scared/frustrated” longer honk.

And then there is the “no one can move, we will be stuck here forever, I haven’t budged in several traffic light cycles, and I have SO MANY FEELINGS” looooong, looooong honk. It is REGULARLY joined by many, many other similar honks. Just, like, five adult people hooooooooooooooooonking their car horns together. Like when one baby starts crying, but there are a bunch of other babies nearby, and now twelve babies are crying.

For reasons I can’t entirely explain, this stopped being irritating and became really hilarious to me, and I usually can’t help but laugh when I hear this phenomenon now. I also regularly say “feelings!” when I hear it. I told Steve about this the other day, and now we BOTH do this when we’re out walking and someone is having feelings in traffic.

Today, this happened again, and I remarked that it’d be awesome if there were just a button you could press to have the feelings for you. And I remembered that Ed built hambutton.com, and by the time we returned from lunch Steve and I had resolved to build Feelings Button.

There are still a lot of Internet Things I have to figure out, because there’s a lot I still don’t understand about hosting/DNS/etc., but I bought my second domain ever, Steve helped me set up a bare-bones webpage and is hosting the content until I figure it out (probably with more of his help), and you can go to feelingsbutton.com, press the steering wheel, and hear me and Steve having feelings so you don’t have to. (It’s also on GitHub!) Wholly in the Ann school of “you can learn a lot by doing things for sh!ts and giggles.”

I even presented! Holy cats.

Anyway. Plenty productive for one day.

Recurse Center: week 10, day 2

HIGHLIGHTS: sitting quietly, being a responsible adult, super mega dream project and the Big Bad EXIF, small coloring projects to send to friends

Had some good sitting time again this morning. Was later than intended again, except it was just me, so maybe “we” just started later than anticipated. Reframing! I am in ridiculous love with the Muji “body-fit cushion,” which is basically what all decent beanbags dream of someday being someday. (Muji: Everything you never knew you wanted at Recurse Center, directly downstairs.) Except it exists now. Because Japan. It’s good for supported slouching, it’s good for meditation, it’s good for a half-body pillow, it’s…just lovely. It is the opposite of the (differently awesome) “dog bed for humans” style of beanbag (h/t to Liz for the name there).

Also doing some Stuff I Don’t Feel Like Doing, which is mostly Stuff I Want To Have Done like emailing cool people I met a few weeks ago, and also the insurance broker so I can get some health insurance again. Welp. ONWARD.

Emailed insurance broker (boring but responsible!). Emailed rad person from Dev Bootcamp that I met at Hack && Tell recently; she has Portland & biking & French connections and this is awesome. Emailed the two amazing women from Women You Should Know that I met at the JewelBots Kickstarter party even earlier; there are some women I think they should know about. EMAIL ALL THE WOMEN

EMAIL ALL THE EMAILS

Maybe there’ll even be code today. I’ve started worrying about jobs, which is an unpleasant feeling, but I’m going to channel it into Productive Conversations, and try to keep it out of my terminal for now.

Down, down, down the rabbit hole of reading image data from Python. Somehow, two and a half years ago, this was easier in Ruby than it is now. Or maybe I was missing something.

What am I learning?

I’m using ExifRead for now, because it came up high in the Googs, and also seems to be under active development. A+. This does, unfortunately, mean that I am learning how the EXIF sausage is made.

The GitHub page above makes reference to the difficult-to-google “IFD,” which appears to stand for “Image File Directory” (and not, say, International Floral Distributors).

Reminder to people who write about things with the intent of sharing knowledge: expand your acronyms the first time you use them. Just in case. It makes things so much easier for new people, and it takes very little effort! I’m now making an educated guess about a README. (Maybe I should file an issue.)

There appears to be a Canadian nerd who’s written a Perl library to handle/write EXIF data, and it turns out their description of EXIF tags generally, and GPS tags specifically, is about the most concise thing I’ve found so far [1].

(This all started because ExifRead returns a “ratio” rather than a decimal number for GPS coordinates. This is, apparently, the standard. Okay!)

There are some folks who’ve written about turning GPS ratios into decimals (like here), but that seems like a heck of a lot of work. I’m not even certain it’s what I need; it’s just what I’m (marginally) more familiar with. We also have two facilitators at RC who used to, uh, work at a photo-related company. It might be about time to talk to them.

After lunch, I headed back for Coloring Club (it’s my favorite thing that I have started in a long, long time), and worked on a couple postcards I’m going to send to friends. It’s fun! Postcards are a nice reasonable size for, say, a compliment.

Here is how to make a compliment postcard for your friends:

  • Acquire blank postcards. If you are lucky, Muji is downstairs. you can also cut plain paper. Or get some from a paper or office supply store, I bet.
  • Acquire stamp(s). In the US, it’s currently 49¢ for a US forever stamp (postcard stamps are cheaper), or $1.20 for a global forever stamp (those exist now!!).
  • Write something nice (something you admire about someone, or some other compliment that is true about them) with the bubble letters you learned in junior high. They don’t have to look Good or Professional, because they’re an excuse for you to color something in.
  • Color them in.
  • Write on the back.
  • Put it in the mail.

Easy, and real mail for your friends! Your friends will think you are a cool mix of old-fashioned and new-awesome, or at least you will.

The Summer Of Sad Times has made me think, quite often, about all the things that people are only brave enough to say after people are gone. In a nutshell, this makes me really sad, and I decided that I’m going to double down on telling my friends what I admire about them while they are alive. (Not with any expectation that any of them will die soon! I hope they will all be alive for a long, long time, and maybe sometimes they’ll think about the postcard and it will make them smile.)

I also talked to facilitator John about “oh god the EXIFs and the GPS and what is happening; am I the worst” and it turns out that it’s all just an awful mess of semi-standard rats’ nest. (Yes, the nest of many rats.) Apparently it’s Just A Beast, which is oddly encouraging. I’m not overwhelmed because I am clueless or unable; I am overwhelmed because I am Faced With A Beast.

The Beast, as it turns out, is an EXTRAORDINARY motivator for all the stuff I’ve spent all summer not-doing. Migrating my bonus (non-primary) photo album to an external hard drive? ALL OVER IT.

Somehow, this all took a whole day, and my parents just got into town, so I’m thinking it might be time to call it an evening.


Note 1: Also, welp, facilitator John tells me that Exiftool is pretty much industry standard, except a bunch of people have had such a sad time with it that they end up writing their OWN things. John is currently doing this.

Recurse Center: week 10, day 1

It’s Tuesday! But yesterday was Labor Day, and instead of coming in (it was an optional day), apparently what I needed was to do Literally Nothing. (Actual conversation I had: Partner: “What would you like to do today?” Me: “Not sure. … What would you like to do today?” Partner: “Some computer stuff. Maybe something else.” *silence* Me: “Actually it turns out this is the most stressed I’ve been all day, and I think I want to read articles on the couch.” Partner: “okay!”)

Anyway. So it’s a day-1-on-Tuesday kind of week.

Had good conversations with Jess and Tom this weekend, wherein they both made clear that they were willing to be helpful in getting me going on Super Mega Dream Project. Something feels different. I think I’m actually going to do this.

To be honest, something feels different about this week in general. I’m having one of those Marlboro Moments that I had in college a number of times (I went to Marlboro College for a couple years, and realized quickly that if you want something to happen, you should do it yourself).

I missed meditation group, which vanished as soon as Jess never-graduated a few weeks ago, so last night I officially decided that I’m bringing it back for the rest of my batch. RCer? Come sit with me, any time between 9:45 – 10:15, in the library nook. You can do some guided meditation on your headphones, or something else that works for you, or you can do what I do and just “do nothing and see what happens.”

I also missed coffee-walk check-in group. I found that coffee-walk check-ins meant that I checked in with fewer people in more detail, and I think that works best for me. So I started it back up. I made a new column on the sign-up form and everything, which felt like some sort of rebellion. (It is DESPERATELY hard to rebel in a place that is built around “please do whatever it is that will help you to be your happiest and most fulfilled.” Also, I have just never been a very rebellious person, so it is a strange feeling to have. Maybe I mentioned this before? It still feels funny.)

Laïs and Mary joined me, so it’s even successful! I have happy feelings about check-ins for the first time in a few weeks, and it feels awesome.

Got back into my sidewalk repo (Mason). It’s even still on my computer and everything. Two and a half years ago, I started it up with my mentor (?) from Code Scouts on some day I had off from work. There were a lot of reasons I was excited about Code Scouts, and a number of reasons (some of which I can enumerate) about why it didn’t work for me, but I’ve had this half-sprouted Ruby seed code for a few years. Ruby isn’t my go-to language anymore. And this near-empty repo makes me feel sad every time I see it.

Gonna see how much I can get done in Python in the next three weeks, and I’ll make improvements to Weather Balloon when I get bored or tired. (At least, this is the plan, subject to change if I’m wrong.)

Way excited.

Also went to B&H for a couple new external hard drives (one for extra space, one for responsible backups like an adult), and omg that place is amazing. It’s overwhelming, but there are conveyor belts overhead and e-ink shelf tags and more yarmulkes than I could have conceived of. I could barely find my way out, but I did, and then I want to the extraordinary post office across from Penn Station, and there are amazing seals (including French ones!!) on the ceiling, and oh wow.

Off to Puzzled Pint for the evening. Tomorrow, I start building more things on the rubble of the old Mason.

Recurse Center: week 9, day 4

On the plus side, my bike doesn’t go “fut fut fut” when I brake anymore!

On the plus side, I have another day where I have good live test data for trying to print weather alerts, like air quality ones! Because the air is sort of dangerous. Again. Sigh.

On the plus side, it’s a new month and so I cut up last month’s amazing page from our Japanese frogs calendar (I bought it in Japan, it’s got frogs doing things on it, they’re amazing) and I am going to glue them to things. (This is a real, plain plus-side.) (If you are curious what it looks like, kind of, these are the same frogs in a previous year’s calendar. Google translate => Japanese phrase in Google image search => second result.)

Went on an amazing dosa quest with Steve to the vegan Dosa Man, and ate dosa and samosa (<3 <3) in the park in the shade and ran my mouth and Steve kindly facilitated the transformation of “me running my mouth” => “part of a conversation.”

Came back and spent some time doing awesome things with LEDs with Ranjit — he built a little Muybridge-inspired lantern, and we did terrible ideas and good ideas to it, and he makes hardware hacking seem more accessible than anyone I have ever met. Also now I know what that void business is about at the beginning of a C function (or method, or class, or whatever it is)! Neat. It’s just where you say what the function returns. And if it’s nothing (i.e. the function just does things, but doesn’t return anything), then the answer is “void.”

Julia Evans (awesome RC alum and programmer and Python community person and omg yes) has some post that I can’t locate about how saying “I don’t know/understand that” (at RC, in the world, etc.) is awesome because it gives you SUPERPOWERS for learning new things! If someone is telling you about something, they probably know something about it, and they can probably teach you some things. And I keep telling this to people, and because it’s Recurse, we talk about how it’s cool to say “I don’t know” and learn new things, and, yay.

I also finally, toward the end of the day, got more emoji into my weather program (yay!), but ALSO I got optional weather alert information to display (or not display/crash, depending on whether there are any active weather alerts for that location). How fun!

Would you believe I feel like I accomplished almost nothing today? It’s true. “I just did, like, a thing to my little weather program; it was kind of silly, mostly.”

But I am going to go home at a reasonable hour and maybe even get to bed before midnight. It could happen!

Recurse Center: week 9, day 3

Woke up with a headache. Tried to wait out the headache. Tried to ibuprofen the headache. How about breakfast? How about lying on the couch? Reading? Closing your eyes? Taking a nap? Headache, headache, headache.

Got to RC kinda in time for Ranjit’s excellent Arduino exploration talk, which made me super happy. My appearance made the audience three people, which was kind of a perfect size. Alicia asked really good questions. I’m starting to think maybe I’ll finally take the leap and try some hardware stuff. I want to hack a dress so bad.

Went for a sweets & coffee walk with a few folks, came back and did Positive Peer Pressure time with Alicia so we could get some blog stuff done. Introduced her to Paper in case she wanted to draw anything for her posts; she ended up creating a great graphic explanation of her recent explorations with py2app (which she presented last week!).

The one code-related thing I started digging into at the end of the day was “how do I pull a small amount of relevant data from Dark Sky’s alert objects?” I want to be able to print a little bit of alert info in Weather Balloon if it’s relevant (and, “happily,” we’ve had two days in a row of air-quality alerts this week, so I have the data I need to play with).

Turns out alert objects are lists that contain dictionaries (two, this time; looks like that’s because there are two alerts: one from NJ, and one from NY. Sigh). My love for bpython grows — I’m enjoying it even more than IPython (!). It’s not perfect, but nothing is, and it’s still a joy to play with.

And now it’s time for art night! Postcards? Friendship bracelet? Cloth-pad sewing? Time to find out!

Recurse Center: week 9, day 2

On time for check-ins! The people for the group I signed up for weren’t there, but two other people were (all three of us missed check-ins yesterday), so we had some sort of Rebels’ Check-in and I ended up feeling really positive about it (and talking honestly about what I’ve been working on). And maybe Jeff will teach me some Python/database things, soon or after I’ve studied them some more on my own! Rad.

Had a morning of a bunch of great conversations and NO code. Welp.

But also there was AbstractSaladFactory, and I finally remembered to bring something to share.

One of the residents had shared this: http://www.station-c.com/open-salad-tuesdays/

We RC’d it, whatever that means, and now it’s a semi-spontaneous “everybody who wants salad, just bring a salad ingredient,” and then we all get salad with a bunch of delicious things in it (and nothing we don’t individually want). I didn’t make enough salad for myself, and now I’m hungry again, but it was so good, and really fun to share food with people like that.

Headed back to my Udacity course, which I’m really enjoying, aside from the zoos and the fish-eating (at least it’s, like, bears eating fish; that’s fine). It is the most un-vegan MOOC I’ve ever tried, but aside from that, it’s cheerful and interactive and light on its feet.


Installed an OS X system update (ooh! adult points ++), and when restarting, I thought, “oh, some of these windows with many tabs should be closed.” In theory, this is wise; in practice, I have this problem where I forgot about the Emily McDowell tab and everything she makes is basically magic (did you hear about her amazing empathy cards?). If you ever want to get me a mug or an art (I have her “I am a grown-ass lady and I do what I want” at home) or a tote bag or notepads for loving mischief or really anything, you know where to go.

Not such a code day. But went for a run after RC with RC friends (OMG! first run in several months), and then it was movie night and we watched Big Hero 6, and some days just aren’t super productive in the ways we expected.

Recurse Center: week 9, day 1

Didn’t get out the door on time, and couldn’t make up the time on the funky loaner bike. (I am SO looking forward to getting my bike back today.) Missed check-ins, but didn’t miss resident Ranjit‘s “let’s play with words and see what mischief we can make” workshop shortly thereafter.

Unfortunately, I was distracted by trying to get IPython Notebooks up and running again on my computer. (They worked last week! In a virtual environment. For reasons I don’t entirely understand, it was important to me to get them running ~*~ globally ~*~, so off I went.)

DOWN THE RABBIT HOLE:

Doing the same thing got me different results
(if this is tl;dr to you, just skip to the horizontal line): Continue reading Recurse Center: week 9, day 1