Category Archives: Programming

Recurse Center: week 6, day 4

I didn’t actually write a word on this day. But I bet I can still remember the salient parts!

I went out with coffee check-in group, and got back and had “bagel conversation time,” which now reliably follows coffee check-in group for me. This means my “do computer things” days start a little bit later, but also I feel more ready to start.

During this particular morning’s conversation, aside from rambling on and on about a lot of OPINIONS I HAVE ABOUT WORK AND CULTURE AND AGHHHH, I also mentioned that I was pretty awesomely stuck with a Heroku issue. Steven kindly offered to pair with me (after patiently listening to me ramble), and so we had a totally unscary time working through what was going on.

With the previous day’s Heroku errors long since resolved, we were free to figure out what was wrong on this end. Got lots of `gunicorn.errors.HaltServer: <HaltServer ‘Worker failed to boot.’ 3>` (me: “computer, that is not the way we write a heart <3”), which was interesting, because I didn’t think I had a worker. 

It was also interesting, because `pip install gunicorn` actually, uh, installed things. In retrospect, this all seems terribly obvious, which is probably because we talked about the error afterwards, and how to catch it faster next time (or prevent it entirely!).

Things then worked just fine locally, with `heroku local`, but NOT on my actual Heroku app.

Long story short, installing gunicorn locally (in my virtualenv) but NOT adding it to my requirements.txt file (of the packages needed) made this happen.

Steven finally asked me to try `pip freeze` (which prints out all the currently installed packages, and their versions), followed by requirements.txt, and lo and behold, they were one letter different.

`pip freeze > requirements.txt`, a new push to Heroku, and voilà! A test app is born!!

It lives here, in my least-favorite of the three random names Heroku’s given me so far, and is prone to be changing swiftly, but hey! It works! Something is there!

I then could not manage to get a single computer thing done for the rest of the day. Some days are like that, though, right?

 

The afternoon had early Thursday presentations, followed by Not Graduation for the Summer 1 batch.

 

Mostly, this involved each of them getting a printed envelope full of nice things people here said about them, a t-shirt, and a request to please return their keys now, which frankly sounds way better than actual graduations. Someone had collected some niceties about the faculty here, too, and the summer 1s were going to read some out, but then decided to make a markov chain app so we could, you know, simultaneously read all the compliments at once. Just. Mixed up. It’s amazing.

I can’t believe they’ve actually finished their batch. The Fall 1s are so close to being here now!

The lot of us (mostly) headed to Brooklyn Bridge Park for a snack-y picnic, lots of hugs, spontaneous nail polish (which I instigated), and five thousand mosquitoes. (I counted 12 bites this morning and probably missed some.)

I’m sad that they’re all heading to their next adventures, and that I now have even more friends who are far away, but this ALSO means I have friends in more places now.

Recurse Center: week 6, day 3

Did not have a productive morning, but did have good conversations! Also had delicious food from Jess, who appears to have become my food fairy this week. She brought lentil taco fixin’s on Monday, some gingerlicious garlicky shredded beet salad yesterday, and herb-crusted tofu + pesto + avocado sandwiches today, plus cupcakes. The latter was the result of me stating that most of the grief symptoms were mellowing, and my feelings were starting to have shapes again, except I kept not being hungry and/or forgetting to eat — so she asked me what I liked to eat. And you know, I still love good sandwiches.

Went out with walkgroup, partly because walks are good, and partly because April’s leaving a little early (today!  🙁 ), and we quested in the streets of SoHo with a GIGANTIC RC contingent, and it was amazing.

Came back and continued grinding on my Twilio/Heroku tutorials. The Twilio tutorial is so rad, and then you get to this point:

At this point in the tutorial, you will need to find a way to expose your server to the public Internet.

Here are some tutorials that may be able to help you:

[…]

For the rest of the tutorial, we will assume your server is available at example.com.

Which, to me, sounds like, “I know you came here to learn things by having them explained, and that’s been going really well, but I was thinking you could just, like, go do a internet at yourself if that’s cool. kbye.” (Me: “no, I’m not sure that is cool, but let’s find out.”)

I am sure that if you are a 1337 web h4x0r type person, this all sounds awesome and simple, but also probably you are not following along with a beginner’s tutorial. This plunged me into the glorious deep end of Heroku resources, and spinning up dynos (what even is? not yet totally sure, despite reading about them), and I have a bunch of tiny apps locally and on Heroku that do tiny little things, and it’s kind of neat. The challenge is just how to blend them together.

As a side note, Heroku and Twilio also have different guidance about how to create a new virtualenv, so that’s interesting.

Heroku suggests `virtualenv venv` for the initial setup, and then `source venv/bin/activate` to start things up each time.

Twilio, meanwhile, suggests `virtualenv –no-site-packages .` for the first part, and then `source bin/activate` thereafter.

Who is right, in this battle of style? One of them is easier to set up, from my perspective, and one of them is easier to run each time you’re working.

Finally, I had both an independently successful Twilio test app, plus an independently successful Heroku app, and put them together…and a spectacular fire resulted.

I persisted for a while, and eventually ran into this:

$ heroku logs --source app
 !    Internal server error.
 !    Run `heroku status` to check for known platform issues.
$ heroku status
Installing plugin heroku-status... done
=== Heroku Status
Production:   No known issues at this time. 
Development:  No known issues at this time.

Doubting that this was right, I ran it again:

$ heroku status
=== Heroku Status
Production:   Yellow 
Development:  Yellow 

=== Potential API Issues 8:59:15 PM UTC (https://status.heroku.com/incidents/797)
[Investigating] 8:59:15 PM UTC (less than a minute ago) 
Our automated systems have detected potential issues with the API.  We are investigating.

Updates were swift and helpful, but once we hit this one:

Until this API issue has been resolved, you will be unable to log into your Heroku account and unable to contact support.

I gently flipped the table and decided that was a good signal to head out to the LEGO store to meet up with Ann and Steven.

Beyond “time spent with Ann and Steven,” here are two more reasons this was awesome:

8:36pm: today I finally got to go to the LEGO store with @anyharder & I got some mystery minifigs & omg unicorn & science woman

I also picked up the positively gorgeous LEGO birds set, which was one of those “vote on the things online and then maybe we’ll make it into a thing” projects (LEGO Ideas). This might be the first actual “make some particular things” LEGO set I have ever owned. Not just as an adult — ever. (For the purposes of this sweeping statement, we are ignoring the giant box of assorted plain LEGO I bought myself as a college freshman, and also the rad Klutz book with a packet of awesome parts, because those didn’t build A Thing.)

I am THRILLED.

As a side note, you may remember another LEGO Ideas set, the Research Institute, which featured a bunch of women casually doing science, but which now has a note about how it “was overwhelmingly popular and is no longer available for purchase.” Do the LEGO people not understand how capitalism works? You can continue to sell popular things in exchange for money.

Outside of LEGO adventures, this week is full of feelings, because the summer 1s continue to have ever-decreasing amounts of RC time left before they Never Graduate. FEELINGS.

 

Spoiler alert: Thursday I get Twilio + Heroku = <3, with excellent help and encouragement from Steven.

Recurse Center: week 6, day 2

Coffee check-in group was the check-in-iest it’s been since I started going to it, which was super fun. It also means I spend a bunch of dollars, but then I have coffee and a delicious bagel, so hey.

Ann and I started speccing out Red Flag, which she’d told me about this weekend. We’re going to try to implement a command-line period tracker this week, before she heads back to SF. I’m psyched about this.

I also resolved some exciting environment variable problems (I know enough to know I don’t want my API keys anywhere in my git history!). Got some help from Rob, who I keep describing as “my unofficial mentor,” and I was right that he had the quickest route to an answer (since I knew we’d walked through this months ago, and I had the credentials for another service to prove it — I just didn’t know how to USE those).

For the curious, I set my Twilio creds up in their own directory and was using `chpst -e ~/twilio/ python myapp.py`, then moved them over to my .bashrc file to minimize having to do that EVERY TIME I ran something.

Continued working through the Heroku Python tutorial. Spent way too long in a gruesome battle with some gnarly errors that appeared to be maybe psycopg2, maybe something with gcc, maybe god knows what oh goodness why are there eight lines of red text, and finally found that some benevolent individual had 1) encountered this problem, 2) found the solution, 3) blogged about it. Not before baffling Mary the facilitator here, but I learned some small things about virtualenv, too, and made a terrific mess that I think I mostly undid. If not, it’ll be a new thing to learn later.

This is when I write badly about how other people’s clear writing helped me tremendously. Anyway. I was grateful. I will endeavor to become one of these people in the future.

Got home kind of late, and tried to write some nice parting words for the Summer 1 batch (their last day is Thursday, and then a new batch will start on Monday, and we’ll share the second half of our batch with them). Everyone’s invited to share some compliments with them directly, whether anonymously or attributed, and I really wanted to write whatever I could, and I was hoping I could get it done kinda quickly. Turns out writing articulate feelings is just always hard, and I haven’t practiced it in a few months, really.

I also described my gnarly exciting problems to Nathan, who happily jumped in to help — the “apparently it was this one line in my .bashrc file” problem was followed by a new one, wherein this `foreman start web` thing gave me the following error:

rbenv: foreman: command not found

The `foreman' command exists in these Ruby versions:
  1.9.3-p0
  1.9.3-p125

Reasons why this is exciting: I haven’t touched rbenv in probably a couple + years, and also I am not doing anything directly with Ruby right now, and also this is the page RIGHT after the one I got stuck on earlier.

Ran `ruby –version`, and it turns out I’ve got ruby 2.0.0p247. Sigh.

Nathan told me that there is some python tool that was inspired by rbenv, and he’s familiar with the python version, so on a hunch, he had me try `rbenv shell 1.9.3-p125`. Tried the foreman command again, and lo and behold, it worked!!

That sets the ruby version, but only for that particular shell session, and since I know I’m likely to open this in another shell at some point, I’ve now set it for the directory as a whole with `rbenv local 1.9.3-p125`. Neat!

Maybe now I can get through this Heroku tutorial…

Recurse Center: week 6, day 1

HOW AM I ALMOST HALF DONE?

The other part of this is “what do you mean, it’s the last week with the Summer 1 batch?” The Fall 1 batch gets here next week (!), and I know I am going to like them, too, but I don’t know them yet, so it feels very abstract for now. I know a number of the Summer 1s, and so I know that I am going to miss them.

Made it in in time for a little bit of morning sitting group today, which was a nice return to routine. After being there every day for the first few weeks, it’d been almost two weeks since I participated.

Continued with coffee-walk check-in group today, and continued the pattern of “learn more about what fewer people are up to,” which is a fun change of pace (not necessarily better or worse than the more traditional check-ins).

Was planning to pair with Ann in the morning, except she didn’t make it in, so went back to my bud Codingbat and worked through some more exercises. It’s weirdly satisfying to just drill basics; they come to mind quicker and quicker with a bit of practice.

Ran with an idea I’ve been meaning to run with, and started trying to reimplement one of Ann’s Ruby projects in Python. This means learning how to do things with Twilio! I’m kind of excited. I made my computer text me. Next up: not sure yet! But I feel like I’ve found my path into the weeds for now.

Recurse Center: week 5, day 5

Came in “late” and felt like I was getting away with something. It is terrifically difficult to feel rebellious at Recurse Center, so I suppose that it’s fortunate I don’t tend to go for rebellion. I mean, how are you supposed to rebel against “do whatever feels worthwhile and meaningful and enjoyable for you”? Do something you hate? Ha!

Fridays are optional at RC, which means I hadn’t yet been to one. I had every intention of coming in last Friday, until I got news of Nóirín’s death, and then it turns out that I didn’t feel like doing much of anything for a while. But this Friday? This felt like something doable, especially since it could be whatever I wanted to make it.

Forgot that there was a job fair in the evening, so decided to carpe diem and stick around. Turns out a friend on the Etsy data team had mentioned me to her coworker, who found me and introduced himself (!), which made me feel that feeling that is Other People Probably Think I Am Smarter Than I Do. Ann insisted on introducing me to Stripe people, too (read: Jack), because Stripe also seems to have this serious mutual-fanclub thing going on (Jack: “Ann is awesome!” Ann: “Jack is awesome!”), and it’s really encouraging to see.

Didn’t get very much “done” (at least not that I can remember now, on Monday), but had a really emotionally rad day, so cheers to that.

Recurse Center: week n+1 (5?), day n+1 (3?)

It’s weird and good to be back at RC. My friend is still gone, and they’d understand that grief is a curious beast, but they’d also be quite disappointed if I just dissolved.

Joined coffee-walk check-in group that I’ve been hearing so much about — didn’t check in with everyone in this group, but did talk about what I’ve been working on (not programming, but I still have done things recently!), and what other folks have been working on, and I went outside and walked and got coffee.

And what have I been doing in the last week?

  • Thursday, Nathan and I watched Mad Men all day long. We didn’t get dressed, we didn’t go outside (not counting the deck), and we tried to remember to drink water (and occasionally succeeded). This was the most radically productive day we could have possibly had.
  • Friday, we went to the Morgan Museum & Library, because it was outside of the house and also there’s a 150th anniversary exhibition about Alice in Wonderland (it’s quite a bit of fun). We saw extraordinarily old books from one of the very first printers (Caxton).Also now I have private library envy (check out the picture at the top here). I have always thought that one neat thing about being disgustingly rich is that you could be all, “hey, you know what is important? Secret staircases in my bookshelves. Heck, let’s have several.”We met a woman who used to work there, who taught us all kinds of incredible facts about the art around the ceiling (Caxton is on it!), and the zodiac women (there’s a woman with, I am not kidding, a rainbow and a unicorn and they’re on a cloud and she’s some zodiac sign?? babeadelic), and where you can see one of the secret staircases.

    We took the East River Ferry to get there, too, which I can now highly recommend as a good use of four dollars (or six, if it’s the weekend). It gave me a new physical understanding of Manhattan, which feels useful.

  • Saturday, if I remember correctly, we were mostly useless (hi, feelings; hi, Mad Men) but pulled ourselves outside to go to Brooklyn Contra with RC friends (it was walking distance this time!). We even got a walk outside with Jess. My ankle still seems mad about this, but it was a terrific night. I love contra, and I only feel that way in New England, and that’s where we are, so.
  • Sunday probably had things. Probably a lot of them were television.
  • Monday, we headed to Cambridge for Nóirín’s memorial, which was too much to fit into one bullet point. Their family is positively lovely, and I’m glad to have met all of them, and so f*cking sad about the circumstances. It felt really right to celebrate life and grieve loss with old and new friends, and I’m deeply grateful that we were able to make it.
  • Tuesday we did not head out mega-early as intended, but we did head out early enough to escape the monster hail and also the possible tornado (no joke, I got a tornado warning on my phone).
  • And now it’s Wednesday.

Spent, honestly, most of the morning catching up on whatever seemed important or interesting in chat, plus reading a few linked blog posts. Put off eating for too long; my hunger-o-meter is, predictably, malfunctioning a ton, even when I think I’m otherwise okay. (It was one of the first grief effects I remembered and anticipated this time, which makes it a little easier to remember I need to eat food in order to do anything else.)

Finally went to a couple of the facilitators this afternoon, said “who wants to talk about grief and creativity?” and had a really good chat with Tom about some ideas. (Of course, he was entirely unprescriptive, because seriously no one here seems capable of trying to pressure anyone to do anything they don’t want to do for their own reasons.) I don’t want to just mope around here, but it’s also not reasonable to expect to pick up where I left off a week ago, so I was glad to be able to ask for help.

Ideas about what to do when you’re in a tough emotional spot, to be adopted or discarded as appropriate:

  • Do easy things. Hard things might be too discouraging right now. That’s okay. Solve little puzzles. Write. Whatever seems accomplishable. Games can also be easy, but may or may not make you feel like you “did” anything later. (Depends on the game, depends on the circumstance, depends on the person.)
  • Do repetitive things by hand. You could write a script for it, sure, but sometimes e.g. going through HTML by hand is a good meditation.
  • Do things whose results you can see. Maybe that’s a tiny Flask app. Maybe it’s handcrafted HTML. (I haven’t touched it in years! It could be fun.) Maybe that’s something on the command line. Some people love one, and aren’t excited by the other. (Some people are me and love the idea of visually manifested things AND the command line.)

Meant to go to my ol’ pal Codingbat again (which Tom suggested again, and mentioned that Sumana had originally mentioned it to him!), but I accidentally fell into Google Translate’s new (?) Community feature, and spent a bunch of time translating little French things into English and validating translations. Really satisfying, and made it hard to leave.

But I did! Had a reasonably good-feeling end-of-day, and heading to dinner at our friends’ place. (eta: also I did one Coding Bat.) I am going to pet their dogs so much.

Recurse Center: week 4, day 3

High temperature + air quality warning = actually took the subway again, instead of biking.

Half-napped during sitting time, which was just what I needed.

Check-ins felt fruitful — my group this week is working on interesting things, and Alice offered to help me with my Pebble C code if I’d like (and then she explained structs and some other relevant things to me!).

Also a headache, which wasn’t as helpful.

Took that as a sign that joining the hoomoos-seeking lunch trip was a good idea, and had a delicious falafel sandwich. Also the cheapest lunch I’ve yet had in New York (about five bucks).

 

And then I got a number of messages asking me if I wanted to talk, if I was doing alright, and I got suspicious and asked what was up, and then I learned that one of the brightest stars of a friend I have ever, ever known had passed away, and then I did not try to do anything else for the rest of the day. I went out with friends. Nathan came to join us. And even if I am far away from home, even if I am far away from most of the people who also knew Noirin, my amazing partner is here, and my incredible peers at RC are perhaps the most supportive community I could conceive of. And, at the very least, we are in a place where there’s a high value placed on doing what you need, on doing what is important and necessary for you right now. And that is making the whole grieving process just the tiniest bit less awful. And I will persevere — we will all need to pick up the batons that Noirin can’t carry anymore — but it’s going to take a little time.

Recurse Center: week 4, day 2

Holy cats. How is it already week four, though?!

Got here nice and early again, read The Giant Python book a bit, was here for all of sitting group (yay), and spied The Healthy Programmer on the bookshelf, so that’s where my first piece of the day went. I actually skimmed through a whole book! Would love to go back and read it in more detail at some point; it’s not that it’s not relevant right now, but there’s other stuff I (perhaps paradoxically) want to be focusing on more actively right now. But maybe I’ll finally get a laptop stand for when I’m standing, and a separate keyboard so I can still type…

Wrote a lot about the essence (or part of the suspected essence) of Recurse Center today in my 750words, working through the ebb and flow of my “am I doing this right?” fears:

There is so much I could do, and as what I could do narrows to what I am doing, and what I have done, there is a certain kind of panic that sets in. […]

The big thing is just time, though. It’s just time. It’s just having a lot of time, so that not all the time has to be used perfectly. This is part of how so much CAN be accomplished here. In the rest of my life, all my free time has to be used well to be effective.

Actually got my blog added so our internal bot can be like, “hey, Liene wrote this!” It really was as easy as I thought, and even if I’d messed it up, no one would have actually cared. Yay!

Remembered to go outside multiple times today (once for lunch, once for a “get up and walk around the block” break, and once to head to the curious and fascinating DOOB pop-up a few blocks from here). Now I want action figures of actual people.

Started to read about finite state machines, and fell down a Turing-inspired Wikipedia hole instead, which took up most of the end of the day. “Whoops.”

Spent pretty much all day flailing around vim — I keep thinking that Ben Orenstein’s “you’ll get frustrated enough to find better ways!” (my words, not his) will kick in, but mostly I just fling myself against the walls and occasionally get a different tone, if you’ll excuse the absurd metaphor.

But! Vim. We hadn’t hung out much in about a year. It’s nice to be practicing these things again.

Stuck around surprisingly long after I intended to go home, discovering more and more ways in which Ann and I are twins, talking about the culture of technology companies and different kinds of diversity and nonsense behaviors and rad engineers that have encouraged us both and “how do I know if I’m doing learning right” and why I get that square on my Pebble watchface at certain times and and and. I’m going to get her to teach me things, and it sounds like that will probably be Mischief (capitalized for fun, not for branding).

Recurse Center: week 4, day 1

Woke up after a night of atrocious sleep, so I bravely got myself out of bed, got dressed, ate breakfast, and recognized that I was indeed exhausted (not just grumpy about getting up). Talked it over with Nathan a bit, and realized I’d probably be useless at RC in that state, so I went back to bed.

This is so simple as to be boring, and yet I almost cried when I told Ann about it this morning, because it represents a really tangible piece of how RC enables me to take care of myself. I have a work ethic that is often so strong as to be unhealthy (ask me about the time I got off the lightrail to throw up, then got back on in the same direction), and I’m used to working jobs that don’t have a lot of give, anyway. For me to say, “I’m not going in right now, because I’m tired and I need to sleep some more,” some huge shifts had to happen. Not that they’re one-and-done kinds of things, but this is part of my general “why I need to go to the Recurse Center” thinking.

Worked through more LPTHW — I’m now into exercise 43, which is even more beastly than previously beastly-seeming exercises — and took breaks and mostly was pretty focused when I intended on being focused.

Kate Heddleston is in residence this week (and next week!), and she’s giving a talk on Human-Computer Interaction tonight, which I’m psyched about. I am a human! And I like computers! And I like it when these two kinds of things interact with one another, because I think it CAN be totally awesome.

Recurse Center: week 3, day 4

Didn’t do a lick of my own thing (except make tea) before 12:30. Had sitting group (I’ve been every day, often late, often on time), had morning check-ins, went to Ben‘s “Ask Me Anything” talk, which was actually super useful. (There is such a tricky balance here between “INTERESTING THINGS ARE GOING ON” and “I ONLY HAVE THESE THREE PRECIOUS UNINTERRUPTED MONTHS TO WORK ON MY OWN STUFF.”) I took sorta sketch notes (no pictures, only words):

scribbled notes from an ask-me-anything talk with Ben Orenstein at Recurse Center
AMA notes from Recurse Center talk with Ben Orenstein

Also experimented switching my little Pomodoro counter. It defaults to ticks (or tocks; I can’t remember which is which, because I am not a strict adherent) of 25 minutes (during which you focus), with breaks of five minutes in between. After four ticks of 25 min, you get a break of 15 minutes. I’m experimenting with a 52 on/17 off structure, inspired by this post my coworker sent to me months ago, which I quite liked, even though I only got to try it out one day a week.

Today’s LPTHW quotations include the following:

Now I have to hurt you with another container you can use, because once you learn this container a massive world of ultra-cool will be yours.

Skipped Ben’s “care and feeding of dotfiles” talk, and maybe I shouldn’t’ve, but I’ve also become confident that I could literally just ask him (or any of the other people I know with strong vim opinions, including my partner), and they would probably be happy to share the thing they’re excited about. Also skipped Raquel’s “Life outside of the bubble” talk (i.e. what is some awesome stuff to do outside of tech?), although I did not avoid getting the inspiration-song stuck in my head.

Really liking the longer “tocks” of 52 minutes. It feels long enough to get something done in. Being able to take regular real breaks also feels REALLY conducive to being a happy, productive human being.

Played around with Python’s hash function a bit after encountering it in LPTHW exercise 39.  This is the first thing in here in a while (like, much of this exercise) that’s kinda blown my mind. And lo, there is a walkthrough of the functions (but I got plenty lost before then, which I’m glad about).

Sent off another email (I’m skipping all typos, but emailing about the two code errors I’ve seen so far) regarding exercise 39’s last “you should see” example — the PDF I pulled down earlier this month has an ImportError, and nothing else. The code itself works just fine, and in fact it’s fine on the website as well.

Worked some more on dictionaries and modules (<3 <3 <3), and eventually got cut off by the appearance of presentations (which, fortunately, I love).

Now headed out to an outdoor free movie and takeout with Nathan and Nora, who’s in town for the weekend (we’re heading up to Vermont to visit/meet family; they’re doing the former, I’m doing both). I want to spend more time with my code, so I’m smuggling (read: transporting) my giant Learning Python book home with me for the weekend. Eeeeee.