Category Archives: Programming

Recurse Center: week 3, day 3

Did a little light code review of my slug game with Liz, and learned about cases and something else that she was hoping to see — until she learned Python doesn’t have them. Aha! Talked about what makes for good and bad learning from resources.

Also, I accidentally fell into a data science hole, signing up for an in-progress iteration of the first part of Coursera’s Data Science specialization. I’m not sure whether I’ll commit to more of these, but this first one is already going over things I know (I already have a GitHub account! I already know how to use the command line! yay!). So, hey. Did one of the quizzes (late), too late to do the other one, but whatever.

Did a bit more LPTHW, and while I don’t so much remember the afternoon, I know I did some review of operators and escape sequences and and and. I learned about lambda functions and they weren’t as scary as they’ve seemed before! Just a little funny-shaped.

Ended the day feeling not terrifically accomplished, but headed over to a Write/Speak/Code meetup for women in (or aspiring to be in) tech. They had a panel of five women who got into tech without CS degrees (three of whom went to bootcamps, one of whom said she would have had she not gotten into tech decades ago, and one of whom learned as she went). It was kind of encouraging to be around a group of women who found the much-less-talked-about route into this industry.

I also met (by surprise!) Erin, who I recognized by her Twitter handle, and who I’d thought was Jess (who also has pink hair, and is a current Recurser) several blocks back. I attempted to restrain my enthusiasm and only half-succeeded. She is probably one of the people whose voices and opinions I most respect on the web, and — like the rest of the people in that group in my head — she turns out to be a perfectly normal, modest person.

Recurse Center: week 3, day 2

Yesterday still feels like nonsense in retrospect. Some things I have already learned from it:

  • Maybe don’t have two drinks on a blazingly hot and muggy day wherein you didn’t drink enough water, even if it’s awesome to sip Brooklyns and watch Mad Men. (That was Sunday night; we skipped going to the movies after realizing we could have air-conditioning and screen-time at home, and also not wear shoes.)
  • Take a nap if you want to take a nap. Even if almost no one else ever does this. I think a nap would have helped yesterday’s prospects immensely.
  • Going for a walk is not “doing nothing.” I think going for a walk may have helped.

did start sketching out a little Python game I’m going to make, though, and it feels nice to draw something (also, Paper is still probably my favorite app ever). To be shared once it’s done. Or at least working.


Went to Raquel’s short and fun Nodebots workshop. Agh, I want to play with hardware stuff so much. One or two (or maaaaybe three) things at a time, though. I also get overwhelmed by what I could do, even though I know I’d be delighted with blinky lights and robots that draw pictures.

Had lunch from home, thanks to Nathan’s good planning (I’m not so awesome on this, still).

And, whee — I finished my Python game! I’m hoping to maybe do some code review with someone tomorrow (eeeeeeeeeeek; just have to get brave enough to ask), but for now, voilà: it’s a text adventure (and you’re a slug).

Recurse Center: week 3, day 1

Postscript to last week: ended up working more on my Pebble watchface on Friday, which was awesome, and made me never want to leave the coffeeshop.

Now I have a watchface that

  • has a background (!), which I made (!)
  • accurately displays the time (!)
  • displays the weather (temp in C and a tiny text description) from OpenWeatherMap, but I am DEEPLY suspicious of it, because it seems like 80% of the time it says “Clouds,” which is not true, given my observations of the sky.

When a time ends with 40 (or 04, I think), however, it displays the Unicode failsquare instead (so, like, 08:◻︎). This is interesting! It also does this when there are “Thunders◻︎” in the area. I have no idea why this happens, but I want to find out, which makes twoPebble mysteries to solve.


On to this week, though! Man, I have just NOT been able to focus today. I didn’t feel awesome this morning, the weather is super hot, and there is an air quality advisory in effect, so I skipped the biking in favor of the subway.

We do have a couple awesome residents this week, though — Ben Orenstein and Raquel Vélez. Already went to Ben’s beginner-ish vim talk this afternoon, and am all jazzed about vim again.

Trying to figure out how best to balance “ALL THIS AWESOME STUFF IS HAPPENING” with “work on your things, Liene!” This is a challenge I’ve heard a lot of alums talk about — my current plan is just to not throw myself into extraordinarily deep ends (e.g. I did not go to the prototypical inheritance talk this morning), but be okay with rabbit holes.

Read a lot of blog posts, some of them about programming. Kind of thinking that “success” today might just be staying present in this space and being kind to myself about it.

Went to Ben’s Monday night talk about concrete advice for OO programming (in which we learned that he prefers functional programming, but I digress), which was fast-paced but accessible and engaging. I continue to suspect that learning may often involve being exposed to the same information from a few different angles at a few different times.

Recurse Center: week 2, day 4

How is it the end of the standard week already?

Started in on LPTHW exercise 27, which starts with the darling phrase “Today is the day you start learning about logic.” It also includes the demand “I want you to do this exercise for an entire week. Do not falter,” which, again, I am gleefully ignoring.

Used Distract-O-Vision to get through all of several exercises. I can’t quite do them in my sleep anymore, but I’m not really getting tripped up by anything yet, which is a nice feeling.

Realized I was bored, and remembered that I’ve wanted to see how hard it is to make a Pebble app/watchface (I really, really love my Pebble Time, and I loved my first-gen Pebble before it, too). They’ve even got Cloudpebble, a Pebble development environment in the cloud, so I didn’t have to hassle with ANYTHING on my machine. They’ve also got a terrific tutorial, so I jumped right in.

Things that were true about this experience:

  • By the time I got a blank screen successfully loading on my watch, I had an unstoppable grin stuck on my face.
  • I have now technically written some C(++? I’m not sure which it is).
  • That’s my first non-interpreted language code ever!
  • I half-regret taking lunch partway through this — food is important to continue thinking, but it kinda wrecked my flow.
  • I went way down the “look at fonts” rabbit hole, but eventually found some that I liked.
  • I made silly art for the background.
  • I now have a very simple watchface that I built myself: 

     

I kinda want to make it more awesome (unanswered questions: why does 20:00 appear as 20:□? Why does 20:40 do the same thing?), and I also want to keep up on my Python, so I’m thinking this might give me some productive things that can each distract from each other.

Whee! I would be surprised if the weekend goes by without any further play with this.

Recurse Center: week 2, day 3

It’s Wednesday! Flash flood warning day, which came with the awesome supplementary note that follows:

Instructions: MOVE TO HIGHER GROUND NOW. ACT QUICKLY TO PROTECT YOUR LIFE. TURN AROUND…DONT DROWN WHEN ENCOUNTERING FLOODED ROADS. MOST FLOOD DEATHS OCCUR IN VEHICLES.

On the ride in, it was just muggy, though. An emergency-broadcast sound rippled through the office when the warning came in (on everyone’s devices).

Slow going on LPTHW, but maybe that’s because things are getting longer. I went back and found my old files from this: the first time, I apparently got through exercise 2 (?? did I do it on another computer, or did I just go over everything with an extremely fine-toothed comb), but the second, I got through exercise 21.

Had a quick brought-from-home lunch, then went to Alice’s tmux workshop,  where I went from “oh cool, I totally get this!” to “omg my brain is overflowing, and not only because Terminal is not keen on supporting mouse enabling.” Sam did teach me some things (apparently one has to “source” the .tmux.conf file to get it to do things?), and showed me z (a tool she uses a ton), which was all rad. And I learned how to set non-temporary non-git aliases (in my .bashrc file!).

The rest of the afternoon was peppered with distractions that I welcomed (perhaps unwisely), but I did indeed break through the previous furthest point on LPTHW: turns out exercises 22 and 23 are “make these lists, study these things, look at code, and come back in a week or two.” I made text files for those lessons instead and editorialized in them. It feels kinda awesome to be disobedient, suddenly.

Always remember, too:

AttributeError: ‘list’ object has no attribute ‘poop’

Finished off exercise 25 (“Let’s take a test,” which is where we get the above error), which was satisfying.  It’s basically just crushing someone else’s bugs. And you know what? Crushing bugs is satisfying!

Decided that was a fine point to stop for the day, since there’s this magic thing going on at Summerstage tonight, and April, one of my neighbor batchlings is going (& Nathan and I thought it sounded way too cool to miss). That is, assuming it’s not all rained out…

Recurse Center: week 2, day 2

Got in even earlier and spent some time reading Learning Python. That book is a beast, but I don’t feel as threatened as I usually do by gigantic books.

Meditation group is the best.

I think I spent almost an hour post-check-in spinning my wheels, but I did make a couple cups of green tea & got my Pinhead key registered (that kind of “important, not urgent” thing that’s so easy to put off forever). I’m blaming this on my check-in statement that “yesterday was a day of really good focus, so I want to just continue that today.” Welp.

Went back to LPTHW (went through exercise 3 yesterday), got interrupted by (i.e. interrupted myself with) everything (including this excellent article that came up in chat: https://medium.com/@noahbradley/how-i-became-an-artist-4390c6b6656c).

Had a short lunch (I had leftovers! I brought bonus food from home!) followed by an unintentionally long visit to Muji downstairs, which is downright magical. Whoops! On the plus side, I finally have some good little paper flags, which was what I originally went in for. On the downside, I now covet a bunch of beautiful functional things I don’t technically need…

Went to Tom’s terminal whispering talk, and took several moments to notice that something seemed familiar, and a lot longer to realize I had actually literally been to his talk at PyCon on, uh, terminal whispering. Regrettably, this meant I spent most of his talk falling down internet rabbit holes, but I did ask for some help resolving an error afterwards. Turns out something has to be running for a socket to connect to it.

Described a whole lot of Trip Island to Sam after she, well, tripped on a bunch of cords that are around the couches/one of the standing tables. It’s actually a metaphor that extends beautifully. There’s a beach. There’s a snake meadow.

Got through LPTHW exercise 14, swapping in `.format` stuff (still) instead of the older %s or %r formatters. (If you’re curious, you can dig around here: https://github.com/li3n3/snake-quest/tree/master/hardwayrc)

Then headed out to Puzzled Pint in Brooklyn, which I knew sounded familiar, and it turns out it was because a friend used to be involved (see the very bottom). Of course Matthew was the puzzler. I will always wish I’d gotten to know him better, but I like doing little things to keep people’s spirits close at hand.

Recurse Center: week 2, day 1

Got to RC in time for late-kinda-reading-Learning-Python, but that’s the earliest I’ve ever made it in so far. Practice.

This DID mean, however, that I was here in plenty of time for morning sitting!

Dove right into Learn CLI the Hard Way, for the second time (I did a bit last week, but didn’t feel focused about it). Amazing how much faster it goes when I already know most of it. There are still a few things I want to really drill so they’re just available in my brain if I think about them, but there aren’t many. Rad.

Spent too long looking for where to get lunch today (got a bunch of awesome food this weekend and planned some lunches; left it all at home). But settled on Wild Ginger, which has the advantage of being SUPER close.

`find` is the freaking coolest thing I have learned about on the command line. Also, using our friend `>`, I made a list of all the photos on my hard drive containing the word “soon” as part of their name. Eee.

Too much post-lunch time yakking, but I made more tea (becoming a daily habit here) and talked about the generalities of What Is Agile Even (among many other things) with Wes and Panya.

Broke my brain reading man-pages for things like `find` and `less` (which 1) is huge, 2) has all kinds of hilarity to me, like the environment variable LESSSECURE, and the env variable LESS_IS_MORE, which makes `less` behave more like `more`, which just sounds giggle-worthy)).

Actually finished running through LCLItHW (or however it’s abbreviated), which felt good. I finished a thing! Even if it was going through a thing, and that feels like a cheating version of “finishing” something to me.

Finally got my system-wide (i.e. “not virtualenv”) IPython updated, which is something I’ve been putting off for months, if not longer (I went from v. 2.1.0 => 3.2.1). Got an error that I tried to google:

OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/IPython/__init__.py'

And TRIED to avoid sudo-ing the upgrade of IPython, but I eventually gave in. And the upgrade worked beautifully.

Picked up Learn Python the Hard Way again. I’ve worked on it a couple times before, but never finished it. I am going to finish it this time, and then see where I’m going from there.

The less I focus on what other people might think of what I’m choosing to work on, the more I get done.

Recurse Center: week 1, day 4

End of the official RC week! Whoo.

Actually got to morning sitting on time! Made essentially zero wrong turns on my bike ride in, which was a first. (Not being able to turn left on a one-way that *does* go that direction was the only semi-exception.)

Zulip (which we use for internal chat) helpfully told me that there were “infinity” new messages, which I of course felt like I needed to read. But I learned a bunch of things, like how the blog aggregator works, and soon I will figure out how to add my blog there.

Mostly I didn’t feel like I got a lot of things done today, but I DID accomplish some time-consuming/awesome things. We had a keysigning party today, and Alice ran a workshop beforehand on getting all set up with keys and things. And it was the first keysigning party I’d been to! And I’m pleased that it was with my fellow RC folks.

There are a lot of moving parts to doing the whole authentication thing, though. Generate the key. Save it. Send it to a keyserver. Look up people’s keys. Save them. Set levels of trust. Sign things. Send THAT back to the server? I’ve been through little GPG/PGP workshops before, and it almost seems more daunting the more I learn about it.

However, I asked for help, and Greg immediately said he’d be happy to help me, so we walked through signing a key from the command line, which can be kind of an adventure, as it turns out.

Also went to lunch with mostly-different people, and even joined afternoon walkgroup for a little walk.

I did almost no independent programming today, which was a bit of a bummer, but I started reviewing Learn CLI The Hard Way, and did a little bit of morning warmup on codingbat. My friend, the bat.

Recurse Center: week 1, day 3

More bike misadventures; I got to morning sitting even later than yesterday — and it was fine again, of course. Even thought a little about my breathing this time! It’s such a nice way to start the day, and I can see myself doing this almost every morning.

What else?

  • Asked Liz about a book she’d mentioned during morning check-ins, since she said she’d “read a book” yesterday — it’s a nice little book about asking useful data questions, and I look forward to tearing through it at some point. Apparently I inspired her to try a library afternoon yesterday — just, like, go to the bookshelves, pull off whatever sounds good, read it unless it turns out to be boring.
  • Got to Tom’s “first day” tune-up workshop, and finally actually cleared out ALL my `brew doctor` errors, which might not have happened since a few years prior. So satisfying! And really nice to hear people saying “I don’t know” when they don’t know, yet not letting that be a stopping point.
  • Updated all the software. Just. All of it. XCode, command line tools, OS X itself, everything.
  • Longer-than-intended, but awesome, lunch at Buddha Bodai with several folks. Yay vegan Chinese food! Came back to a super-updated computer and more tea.
  • Did a little more .bash_profile/.bashrc tweaking, and whatever else looked good from the RC tune-up doc.
  • Attempted to start connect4, realized my brain refused to stay on task, and did some more codingbat. Might be a nice little code-meditation to do early in the day — I have a really hard time starting to work in the mornings.
  • Spent some time starting in on Learning Python, the glorious beast of a book. My copy just arrived today, and maybe now I will join morning “reading this book” club…
  • Trackpad demons inhabited my computer, prohibiting me from doing things like “moving the mouse as intended,” and facilitator Mary helped me exorcise them.
  • Played with TurtleWorld again — got seriously stuck with what should have been a slight change, since it caused my previously lovely circles to get GIANT and incomplete. After copying the book’s example code to a test file, confirming that it wasn’t the book code that was broken, and then comparing the differences, I figured out that it was due to the angle of each turn being an integer, rather than a more precise float. Had set my “I’m stuck” timer earlier, since the facilitators encourage asking for help after 15 minutes of being stuck (struggle for a bit, but don’t struggle forever), and it had six seconds left on it. Yay!

Recurse Center: week 1, day 2

  • Came early to join morning meditation/sitting group. Decided that sitting still for however long we’re sitting is my goal, and discarded all worries about not “clearing my mind.” Reminded of Buster Benson’s “meditation is doing nothing and seeing what happens.” At least I think that’s how I heard that line!
  • Morning check-in: I didn’t get much done yesterday, and no one finds this unusual or remarkable. Palpable relief.
  • Finished yesterday’s blog post, wrote my 750words for the day. Write all the things.
  • Spent some more time with the RC User’s Manual,  discovering I have previously missed some parts (I’ve read them now!).
  • Pomodoro: 25 min working sprints (“pomodoros”)/5 min breaks, with 15 min breaks after every 4 pomodoros, because that’s the default on my favorite Pebble app
  • Lunch at Butcher’s Daughter — really good vegan grilled cheese with adzuki bacon (???) and basil and and and. Mostly this is relevant because I remembered to eat, and tried something new independently.
  • Came back and finally got back to Think Python — picked up chapter 4 and playing around with swampy. I am actually super delighted by playing with turtles right now, so turtles it is.
  • Collaboratively incited conversation about near and not-near vegan food, and drafted up a wiki page for the RC wiki.
  • Worked through the difference between parameters & arguments again. Parameters are like the Socratic ideal, and arguments are like the actual chicken? Parameters are the class, and arguments are the instances? I’m not sure I have a good analogy yet, but I’m working on it.
  • Spent another late afternoon in the magic library corner, picking up books about Python, but nothing stuck as much as the conversations I ended up having about…something?
  • Went out for dinner with some folks, and then came back for movie night (a bit late, but oh well): we watched A Girl Walks Home Alone At Night, which was awesome.