strugee.net

Posts categorized as "personal"

RC week 11

This is week 11 of being at the Recurse Center.

Day 7

Arrived ~13:30, departed ~22:45, total time at RC 9h15m.

Brought in cookies and spent a lot of time discussing things on Zulip, honestly. Also figured out when I'm teaching things for Web Dev 101. Spent most of the day, however, writing about default-secure systems.

Day 8

Arrived ~16:15, departed ~21:00, total time at RC 4h45m.

Arrived super late today because I woke up in the morning, saw the blizzard outside my window, and said "hell no." When I did go in, the blizzard was still going, so I put on snow pants, snow boots, a thick sweater and my winter jacket, and my hat and gloves. Which took a while.

Spent some time discussing 10 different reasons not to put arsenic in the milk with Jackie and Andrew, which she later wrote a blog post about here. Spent the rest of the day doing maintenance on some Stratic modules. Also spent a little time on the phone with my dad diagnosing my server's disk problems. I had him reseat the SATA cables, with no effect, unfortunately.

Day 9

Arrived ~12:15, departed ~23:25, total time at RC 11h10m.

Didn't do a lot of new stuff, but took care of some miscellaneous business. In particular I did some work on polishing hubot-seen, including putting out a 1.0.0 release (and then a 1.0.1 release when that turned out to have broken the world). In the evening, finally found the bug preventing us from upgrading pump.io to Express 4.x, which was unbelievably satisfying. Turned out that the bug was in some test code, not the application itself, and so I had been misreading the stack trace for months. (The top item was a test file, but I incorrectly assumed that that was just some test code invoking a bunch of internal stuff. Nope.) Also has a meeting with some of the other Winter 1s about feelings and the end of the batch and stuff.

Last but not least, caught up on weekly blogging. (I've been really bad for a while now...)

Day 10

Arrived ~11:45, departed ~00:00, total time at RC 12h15m.

Did a ton of pump.io work. I merged the Express 4.x branch, then went in and did a bunch of other more minor dependency upgrades. Also went to a soldering workshop run by Claire immediately before presenting HTTPS Part 2 in the afternoon.

In the evening, went to presentations and then game night, where I spent the entire time playing poker. I put in $3 and got back $7.95 (read: $8). Sick.

Friday

Arrived ~13:30, departed ~21:45, total time at RC 8h15m. As always, Friday doesn't count as a day because RC is technically not in session.

Did some work on improving pump.io's dependency situation. The result is a system that is very, very close to being 100% up-to-date, which I'm super proud of to be honest. That also let me turn on dependency security monitoring through Node Security Platform, with plans to enable Greenkeeper as well. Had the monthly meeting in the middle of all that which went really well and was very productive.

In the evening, went to Bottle Share, then put pump.io on the Linux Foundation's best practices badge app, the result of which you can find here.

Executive summary

Well, I got a lot done on pump.io (and Stratic) this week. So it was relatively productive. But I did basically nothing that was personally productive (i.e. that pushed me forward as a programmer). Hopefully next week will go better.

Total time at RC 45 hours 40 minutes; cumulative time 510 hours 30 minutes.


RC week 10

This is week 10 of being at the Recurse Center.

Day 35

Arrived ~13:00, departed ~21:30, total time at RC 8h30m.

Decided (in the morning) to sleep in because honestly, I was just really behind on sleep.

Didn't do a whole lot today. Took care of the monthly pump.io release, but spent most of the day writing Driftless at 1,000 mph. In the evening (i.e. after the Iron Blogger meeting) I spent some time fixing ejabberd's configuration to use the new access control syntax (I'd rewritten the config a while back, but hadn't deployed it yet because it broke logins).

Day 36

Arrived ~10:40, departed ~23:40, total time at RC 13h0m.

Spent basically all day working on realtime.recurse.com. I (mostly) finished up the bits that watch the filesystem and dispatch events (including the "periodic" submission logic), then started in on an automatic update mechanism. I'm pretty pleased with how it's turning out - I think it's pretty elegant. And, it's secure - updates are required to be cryptographically signed by yours truly. Went out to Black Burger with a bunch of people before going to Fat Cat in the evening. Then came back, worked on the updater a little more, and went home.

Day 37

Arrived ~14:40, departed ~23:20, total time at RC 8h40m.

Overslept by accident this morning. Spent a bit of time in the afternoon dealing with email, then focused on realtime.recurse.com - basically I was just working on the autoupater I started yesterday. My Python is definitely improving!

I'm actually really pleased with the updater. It's pretty elegant, I think. Basically whenever the server sees a request coming from the client, it checks the User-Agent header to see if the client's out of date and, if so, sends back an X-Requires-Upgrade header. Upon receiving this header the client will go fetch version information, which it'll use to download and verify an update bundle cryptographically signed by me. Yay for secure updates, and yay for simplicity! (Note that this design basically just reuses the connections the client is already making to the server, so it doesn't have to poll for updates all the time.)

I also spent a couple hours talking with Mikhail, discussing a lot of things - ranging from how Node.js's event loop works to the is keyword in Python to static site generator architecture compared to dynamic site architecture.

Day 38

Arrived ~9:50, departed ~23:00, total time at RC 13h10m.

Woke up, completely naturally, around 7 AM despite going to sleep at 3 AM. This was so surprising - and this is a true story - that I thought I had woken up at 7 PM and missed the entire day, including Security Club, Abstract Salad Factory, and Thursday night presentations. I was really mad, honestly. But then I looked at my watch and realized that I was on 24-hour time but it didn't say "19:00" and also my alarms were in the future and my phone was in 24-hour time too and also Anja on Zulip said "?" when I said I'd slept through Security Club. Despite the overwhelming evidence in the end, though, I still had a weird feeling that it was 7 PM. So that's the story of how, for a good 5 or 10 minutes, I genuinely believed I'd slept through the entire day.

Once I got to RC, I spent the morning finally(!) merging in a bunch of upstream ejabberd.yml config changes to steevie's ejabberd configuration, which got me closer to fixing the awful spam problem I have. Then I went to Abstract Salad Factory, followed by Security Club. Then in the afternoon (and after presentations) I started reading FreeBSD documentation since that's what I'm running my new Tor relay on - as I discovered a couple days ago, my old one apparently got hung during boot and was consuming 100% CPU due to the kernel image being corrupted or something. I chose FreeBSD because a) it's a rock-solid system, b) it's a good opportunity to gain experience with administrating a BSD, and c) it increases the diversity of the Tor network. Also, had a conference call in the afternoon with the EFF and Paul from TA3M Seattle about TA3M Seattle joining the EFF's Electronic Frontier Alliance, which was exciting for everyone.

Friday

Arrived ~13:00, departed ~22:30, total time at RC 9h30m. As always, Friday doesn't count as a day because RC is technically not in session.

Didn't do a whole lot of coding. Spent a while helping Jason debug Datamost's 3.0.0 upgrade (which apparently broke uploads). Attended presentations for the RC Game Jam, then fixed the documentation that caused Jason's problems. Spent a little bit of time polishing the website and README, too.

In the evening, fixed people being banned from ejabberd MUCs, then proceeded to fix my spam problem. Whoooooo! Then I kept working on my Tor relay.

Executive summary

Like any week, this had moments where I wasn't very productive. But overall I think it was pretty good - I made a lot of progress on realtime.recurse.com (and improved my Python in the process), and I made a lot of progress on setting up my Tor relay again (and learned a bunch about FreeBSD in the process). Also, I fixed my ejabberd spam problem. I learned nothing from that, but thank god I did it because the spam problem was honestly awful. The one issue was that I just didn't do a very good job getting up and making it to checkins.

Total time at RC 52 hours 50 minutes; cumulative time 464 hours 50 minutes.


RC week 9

This is week 9 of being at the Recurse Center.

Day 31

Arrived ~10:30, departed ~15:15, arrived ~17:30, departed ~1:30, total time at RC 8h45m.

There were only two people in my checkin group this morning, and one of them was me. We thought about joining another checkin group, but it was confusing so we did it with just us.

Didn't really do a whole lot for the rest of the day. I fixed up a couple minor problems on strugee.net. Also I finally(!) fully caught up on blogging and went out to lunch with a bunch of people, including Nelson, the new resident. He's awesome. We had some seriously interesting discussions about the recent CloudFlare incident, as well as the work he did while at Ksplice.

Left early to do laundry, then came back for Nelson's talk.

Spent a lot of time in the evening cleaning up the [pump.io homepage][pump.io] - I removed a bunch of duplicated content, reordered the remaining text to put the important stuff first, and imported all the pump.io-related posts on my personal blog into http://pump.io/blog/.

Day 32

Arrived ~11:30, departed ~21:40, total time at RC 10h10m.

Missed my checkin by a wide margin because a) after I realized I just couldn't make it by 10:30 I gave up and had a nice relaxed breakfast and b) I looked at checkins.recurse.com and realized that I was the only one in my checkins group.

Went out to Taim for lunch relatively soon after that. Didn't do a whole lot for the rest of the day, honestly - although I did go for a walk to a park with some folks. Also, tested out the Signal videocalling beta with Matt, which worked pretty damn well, I gotta say.

Day 33

Arrived ~10:40, departed ~1:45, total time at RC 15h5m.

I kinda tried to make it in for checkins this morning, but not really because I still hadn't fixed the "I'm the only one in my checkin group" problem. Didn't really do much today, honestly.

Went out to lunch with Ant6n and Andrew and had a lot of interesting discussions with them, ranging all the way from Zig to x86 hardware - did you know that internally x86 is actually essentially a VM implementation?

Spent a lot of time keeping Eliana company in Hopper late in the evening.

Day 34

Arrived ~11:05, departed ~17:55, total time at RC 6h50m.

Went to Nelson's "my first kernel module" talk immediately upon arriving at RC, which was awesome. I had some interesting conversations with him afterward, too, where I confirmed a theory I had about some weird btrfs-related behavior I'd seen a long time ago (where I kill -9'd an obviously hung btrfs process, which refused to die anyway). We also spent some time trying to figure out why benchmarking loopback network performance gave some weird results, which was quite informative.

Didn't do a whole lot after lunch. Left halfway through presentations to go to a play with Ant6n which unfortunately (due to a water incident with the subway system) I didn't quite make it to.

Friday

Arrived ~15:10, departed ~23:10, total time at RC 8h0m. As always, Friday doesn't count as a day because RC is technically not in session.

Woke up at a decent time but didn't really bother to get up or do anything, so I arrived relatively late to RC. Spent some time reading TOTP in preparation for the RFC reading group meeting (which ended up not happening) and then went to the RC Game Jam kickoff. Spent most of the rest of the day discussing game design with my team before getting dinner and hanging out in Babbage for Bottle Share Friday, even though there weren't that many of us (particularly since James was doing stuff in Babbage) and we didn't have any bottles to share. Oh well - it was still fun.

Talked with Deniz and Alex and some other folks (I've forgotten who, to be honest) before heading home.

Executive summary

Most of the "interesting" stuff that happened this week had to do with the resident. Got a little done codewise, but not that much. I'd say this week was 50/50 in terms of productivity.

Total time at RC 48 hours 50 minutes; cumulative time 412 hours 0 minutes.


Driftless at 1,000 mph

Last week I published How I passed 2k GitHub contributions. This post is, in some ways, the antithesis of that, and it will be very emotional and messy. Here be dragons.


Throughout my time at RC I've noticed only one thing is consistently difficult for me: focusing on hard things. Intellectually I love the idea of challenging myself. And I find that when I start to work on things that are new and not easy, it feels good and I tend to keep working on those things, because they're interesting. But starting is something that I just don't do frequently enough, and so I find that I haven't progressed as a programmer nearly as much as I would like to have.

What is productivity?

Merriam-Webster defines it like this:

  1. the quality or state of being productive

  2. the rate per unit area or per unit volume at which biomass consumable as food by other organisms is made by producers

And "productive" is defined like so:

  1. having the quality or power of producing, especially in abundance

  2. effective in bringing about

  3. a) yielding results, benefits, or profits; b) yielding or devoted to the satisfaction of wants or the creation of utilities

  4. continuing to be used in the formation of new words or constructions

  5. raising mucus or sputum (as from the bronchi)

By definitions 1-3 I certainly seem to have been productive; I've written a lot of code, much of which is useful. But useful to whom, and for what purpose?

I sometimes feel as if I'm just generating more and more code without any guiding process, as though I'm wasting my time even though concretely I'm getting a lot of things done - driftless even though I'm churning out work at an extremely high rate. Is this imposter syndrome? Or are my worries legitimate?

Maybe a better way to frame this question is to split it in two - am I being productive for myself, and am I being productive for the community - the two things that are currently important to me personally.

I think I am failing at being productive for myself, in some really important ways. I'm also succeeding in some - for example, I used to wish I had an engine to run my blog, and now I have such an engine. But in others I am failing.

What is the purpose of RC? Why am I here?


recurse.com says this about people who come to RC:

The Recurse Center is for people who want to become better programmers. We are not startup school nor are we a bootcamp: Our focus is helping people become better programmers, not building prototypes, and we're not a training program for web developers.

Because there is no certification or grading, the only reason to come to the Recurse Center is to become a better programmer. As such, you will find kindred spirits and tremendous energy. We look for smart, friendly, self-directed, intellectually curious people who enjoy programming and want to get dramatically better.

More directly, the manual has this to say:

You should be here primarily because you want to become a better programmer and spend the majority of your time here programming and doing things directly related to programming.

Well, we could ask you to be respectful of speakers and keep conversations on-topic in the Recurse Center space during the day (i.e. if you want to take a break and chat about your weekend, go grab a coffee).

However, as Harold points out, that isn't necessarily an accurate picture of what RC is about. I think a lot of what it's really about is the people who are in the space with you. I've sure had a wonderful time with the people. Does that mean I'm "succeeding"?

Then there's the teaching.


Screenshot of a Zulip message where Anja says "thank you AJ for teaching us so many things. :)"

This is referring to the fact that I teach at Security Club every week, plus my volunteering to run a workshop or two for Beginner's Club and Web Dev 101.

Practically speaking, I get very, very little out of teaching at RC. Sometimes it helps solidify (or just plain remind me of) the concepts I teach, but this is the exception, not the norm. So in that sense by spending time teaching, I'm "failing" at being productive for myself. But it seems clear to me that people get a lot out of the time I spend, so I seem to be very productive for the community.

Equally importantly I love teaching. I qualified the previous paragraph with "practically speaking" because emotionally teaching is something that's very beneficial to me. Does that mean I'm "succeeding"? Does it mean I'm "failing" and "succeeding" at the same time?

I honestly don't know.


RC week 8

This is week 8 of being at the Recurse Center.

Day 27

Arrived ~10:35, departed ~0:30, total time at RC 13h55m.

Had a nice discussion about Stratic in my checkin group this morning. After that I went to the Capture The Flag introduction workshop, then spent essentially the entire rest of the day finishing up static to Stratic (which included, in a truly horrifying fashion, me rewriting and force-pushing the demo repository's history a good four times or so) so I'd have a post up for the iron bloggers meeting. Also spent some time fixing some bugs in generator-stratic and published the beta 2 release with those fixes. Closed out the evening by digging into a remark problem where <script> tags would be stripped from posts. Ended up just asking on Gitter.

Day 28

Arrived ~10:30, departed ~20:40, total time at RC 10h10m.

Continued to investigate the remark problem based on replies received overnight - turns out it was a bug in remark fixed in a release that had gone out the door literally the same day I asked. After that I spent the day upgrading generator-stratic (which, remember, was originally scaffolded years ago) to newer and newer releases of yeoman-generator until it used yeoman-generator@latest. Then I spent time adding some basic tests - they're kind of just smoketests for now (are the correct files generated, does gulp serve work) but I intend to expand them. Also moved over some issues to the new straticjs/RFCs repository and attended Casual Presentations.

Day 29

Arrived ~10:50, departed ~20:35, total time at RC 9h45m.

Didn't do a whole lot codewise today. However, I did teach Unix fundamentals for Beginner Club, which went pretty well - I just spent the entire time in the commandline, demonstrating different commands. We spent a little time talking about shell scripting, but not much. I forgot to cover conditionals, which was dumb since they're pretty weird in shell scripting. Spent some time in the afternoon starting a draft of How I passed 2k GitHub contributions

Watched Kiki's Delivery Service in the evening.

Day 30

Arrived ~10:35, departed ~00:05, total time at RC 13h30m.

Finished and published How I passed 2k GitHub contributions. Presented cryptography basics at Security Club, then spent a lot of time fixing miscellaneous items on steevie. In particular ejabberd was apparently configured to use a standalone certificate bundle (instead of symlinking to something in /etc/letsencrypt/live) - this was because ejabberd requires the private key and the full chain to be in the same file. TLS certificate renewal didn't properly update this bundle, so XMPP client connections weren't working. ZNC was broken in the same way, so I fixed both of those. I also spent some time setting up a system to publish everything custom in /usr/local on GitHub so that it's public and version-controlled. So that's nice.

Friday

Arrived ~15:50, departed ~1:00, total time at RC 9h10m. As always, Friday doesn't count as a day because RC is technically not in session.

Came in super late (though I woke up earlier). Almost immediately after that I attended an initial meeting about starting an RFC reading group (an idea I floated on Zulip a couple days ago). Spent most of the day poking at IETF things as well as responding to hubot-seen PR comments. I just got write access! \o/

Closed out the evening by attending Bottle Share Friday, where I had a long discussion with Alex about running my own email server (which spun off into a discussion of how completely terrible and busted email is), followed by a long discussion about whether Apple's release schedule for Safari and attitude towards new web features and third-party iOS rendering engines is justifiable.

Saturday

Arrived ~11:15, departed ~23:30, total time at RC 12h15m. Saturday doesn't count as a day because RC is not in session.

Marathoned Lord of the Rings today. The showing was small and people drifted in and out but most of the time there were a couple people watching, which was fun. The original plan was to watch the director's cut versions, watching The Return of the King on Sunday, but we ended up watching the regular versions because you can't rent the director's cuts off Amazon, and I wasn't about to pay $30 for movies that I already own on DVD back home. We probably would've still watched on Sunday, except that I went out to get pizza for dinnr and found out that it was pouring rain (with thunder/lightning and everything). So I decided we'd watch The Return of the King and wait for the rain to let up, which worked beautifully.

Hussein came in just as I was about to leave and stated that he almost had a heart attack because he sprinted literally from his apartment to Duane Reade, which truthfully was absolutely hilarious. We had some fun wandering around Duane Reade trying to find soap (which I needed to buy) before we both headed home.

(As a side note, my favorite brand of mac 'n' cheese by far is Annie's, which my local supermarket does not carry. But apparently Duane Reade does!? Wat???)

Executive summary

This week was weirdly divided - some parts were hyper-productive and some parts were pretty terrible. I certainly got a lot of work done on Stratic, and I taught a lot. But I didn't really do a good job of working on stuff that pushed my programming abilities forward.

Total time at RC 68 hours 45 minutes; cumulative time 363 hours 10 minutes.


~