RC Week 1

My first week at the Recurse Center has been a bit of a firehose, mostly socially. It wasn't until Friday that I found myself with more than an hour of unbroken coding time, between orientation activities, chats/pairing with fellow RCers, presentations and craft evening and feelings check-in and more. I feel quite well oriented, and I've fleshed out some ideas from my previous post:

  • visualizing the global cost of living through the cost of a beer, a cappuccino, and a loaf of bread. (I would prefer either coffee/tea/beer or wine/bread/cheese, for theming, but this is where we're starting.) I'd like to use Folium to build a map with data by city, using data from several sources: Numbeo, Expatistan, Deutsche Bank's annual prices index, and PintPrice. Features we'd like to build include:

    • changing how many markers show up as you zoom / pan so the view isn't too crowded
    • popup bar charts showing the price data on click
    • layer selectors (?) so you can turn each indicator on/off
    • some clever interpolation or fill between cities?

    Luckily I have a colleague working on this with me, she's somewhat new to Python but has jumped right into pandas and data cleaning/scraping. I'm a little concerned we won't be able to write all features with Folium but will have to manipulate the underlying Leaflet map directly with JS? Or maybe ipyleaflet will be the ticket. I also need to give more thought to whether it's feasible to perform all the data transformation on the server or client side, or pre-calculate every subset vs. calculations on request. Another colleague has a project mapping NYPD misconduct complaints, he'd be a good person to talk to.

  • building a font that varies its letterforms over time. I thought this would be extremely difficult and require messing around with FontForge / similar, but someone pointed me to this primer on variable fonts and now I wonder if it might be as straightforward as writing some JS to manipulate the font axes and re-render the text. The features I'm considering have different time constants:

    • O/o show the phase of the moon
    • T and Y show seasonal trees
    • i and j might be flowers?
    • stroke thickness varies over the course of an hour, or (for testing) as you scroll down

Mostly I've been making (slow) progress on the cost of living visualization, Coursera NLP, and MLDP. I look forward to next week, when I can get some momentum going those fronts, and maybe do some productive pairing. (Social) networking is one of my goals, not just studying and producing portfolio work, so I'll also schedule a few chats. I may be more accustomed to guiding my own time/priorities than most of my colleagues, but that doesn't make me magically good at it, and I don't usually do it in the presence of so many skilled peers, so I'm hitting a learning curve like everyone else. Participating in feelings check-in was a bit of revelation, it's been a while since I've been in that sort of group therapy space, but I pulled out my empathizing skills and did my best. In the next couple of weeks, I'd like to make some tangible progress I can be proud of, whether it's helping others with their cool project or presenting on my own.

Bits and pieces I learned this week:

  • this is valid Python syntax that evaluates the type of x and uses it to cast x+1 back to that type: type(x)(x+1)
  • good review of threading vs. multiprocessing in Python and the vagaries of the GIL
  • successfully wrote some code using try...except, a pattern I never use
  • playtested a CLI puzzle and learned about getfacl/setfacl/extra permissions on files