Technology

Making changes to a GitHub PR branch on a fork

A while back, GitHub added a setting for contributors to allow maintainers of a repo to push changes to a pull request branch of their fork. I've been doing a lot more work in GitHub recently and figured I'd document my Git process for handling pull requests where you just want to close up a couple small things in a given time frame and/or the originator isn't very responsive. IMO this makes it much easier to retain the commit history giving credit to the other person but still move existing PRs forward.

The essence of my process is to add their fork as a remote, switch to that branch, do stuff and commit, and then push to it. It's not really a whole lot, but I've found that very specific snippets come in very handy, even if they're short and straight-forward. I also don't like the instructions GitHub gives for making changes to a fork's branch. So, that gives us (using a real recent example):

If you use hub (I don't), I believe you can skip the first command as fetch will add the remote for you if it's not recognized. There's also the popular Git Extras, which has a pr command, but from what I've tested it doesn't use the actual remote branch the PR originates from even if you specify the remote, but rather the pulls/### branch GitHub makes for you. If you use (or decide to write) a Git helper that does the remote adding/fetching/checkout for you (e.g. git pr KZeni/patch-1 or even making it so that git pr ### could detect the remote fork and branch for that PR), let me know!

Standard
Food, Recipes

One-pot pressure cooker shredded beef (“barbacoa”)

A great thing about understanding the science behind cooking is that I can adapt recipes for the Instant Pot (or whichever pressure cooker, instructions below assume an electric pressure cooker) with great results. One important thing to remember is that because it's a sealed environment, you don't get much evaporation like you would with a slow cooker or traditional long braise, so you'll want to concentrate flavors and use less liquid than you might be used to. My favorite trick for this is to use Better than Bouillon paste and half or less of the usual amount of water – since the paste is reduced stock in the first place, it works out perfectly.

In this case, we had a 4 pound sirloin tip roast hanging out that needed to be used and only the morning to prep lunch, so with some taco fixings and basic, easily sourced ingredients we had amazing shredded beef "barbacoa" tacos done in about 1.5 hours with just one dirty pot (and the blender). You can also use the meat for burritos, huaraches, etc. or even just eat it in a bowl with some rice and beans.

Ingredients

  • 4 pounds of beef roast (sirloin tip roast, chuck roast, or you can go with brisket or short ribs if you're feeling fancy)
  • 4 chipotle chilis in adobo sauce (can adjust up or down for spice level, a small can usually has about 6)
  • 1½ tsp beef bouillon paste
  • ½ cup water
  • 6 garlic cloves, peeled
  • 1½ Tbsp ground cumin
  • 1 Tbsp dried oregano, preferably Mexican
  • 1 Tbsp salt
  • ½ tsp ground black pepper
  • ¼ tsp ground cloves
  • ¼ cup lime juice
  • 2 tsp soy sauce or fish sauce (optional, deepens flavor)

Directions

  1. Combine all ingredients except the meat in a blender or food processor and blend until smooth.
  2. Preheat the pressure cooker on the sauté setting with some oil. While it heats up, cut beef into large chunks (1½–2 inch cubes) and season with salt and pepper. Working in batches, brown all of the meat.
  3. Combine meat and sauce in the pressure cooker, seal it, and set to cook on high pressure (meat/stew setting) for 60 minutes.
  4. Allow pressure to come down naturally for about 15 minutes before releasing and opening the pot. Remove the meat to a bowl and shred with two forks; add some of the liquid with more salt if necessary to taste.

Recipe adapted from The Recipe Critic, likely originally sourced from elsewhere. I put "barbacoa" in quotes because I'm pretty sure this is not exactly traditional/authentic, but since many English speakers are familiar with the term thanks to places like Chipotle, it helps with expectations.

Standard
Recipes

Recipe: Pressure Cooker Short Rib Ragù

I've wanted to try The Food Lab's pressure cooker ragù bolognese for a long time, but also wanted to have pasta with the short ribs that have been hanging out in our freezer. I made a couple of adjustments and it worked really well, so here's the modified recipe! Some notes from my own process:

  • We use an Instant Pot, which is really just an English-labeled North American version of a Chinese electric pressure cooker we'd had since 2009 (the button layout and colors are exactly the same). The Chinese one required the usage of a large and heavy transformer because of the lower household voltage here and my spouse couldn't read the buttons, so now we happily use everybody's favorite Instant Pot. If you haven't used the sauté function before, you'll get good use out of it now.
  • If you boil your pasta in the same pot you use to sauce it (a non-stick chef's pan works great for this), this whole endeavor only needs two pots.
  • I mostly guestimated amounts as I was cooking, which works out fine. This isn't really precision work, though you can't go wrong with trusting J. Kenji López-Alt all the way.
  • I use Better Than Bouillon for most chicken stock applications, so instead of mixing that into water and sprinkling the gelatin over that, I just sprinkled gelatin over a cup of water and added the bouillon paste in with the crushed tomatoes, etc.
  • I was extremely lazy slash running late yesterday so I used pre-diced pancetta and mirepoix (onion/carrots/celery). It was great.
  • We believe in the wisdom of cooking with wine you'd drink, so we used a well-rated $15 bottle of Chianti. Don't get the $7 stuff.
  • I let said wine reduce separately before adding the rest of the liquid ingredients. It's not strictly necessary, but I thought the concentrated flavor came out nicely and there was more than plenty of liquid for the pressure cooking part.
  • I apparently need a new bottle of fish sauce so I used soy sauce instead. Worcestershire would also work fine – it's that glutamate life you're after. I may also have thrown in a little bit of straight up MSG.
  • Buying fresh pasta from a local maker: always worth it.

Ingredients

  • 1 cup low-sodium chicken stock
  • 4 packets (1 ounce) powdered gelatin
  • 1/2 pound finely diced pancetta
  • 1 large onion, finely minced
  • 2 large carrots, finely chopped
  • 2 large stalks celery, finely chopped
  • 4 medium cloves garlic, minced
  • 1/4 cup fresh sage leaves, minced
  • 1/2 cup fresh parsley leaves, minced, divided
  • 3 pounds bone-in beef short ribs
  • 2 cups dry red wine
  • 1 14-ounce can crushed tomatoes
  • 1 1/2 cups heavy cream, divided
  • 2 bay leaves
  • 3 ounces finely grated Parmesan cheese
  • 1 to 2 tablespoons Vietnamese or Thai fish sauce
  • 1/4 cup fresh basil leaves, minced
  • 1 1/2 pounds pappardelle or tagliatelle

Directions

  1. Place stock in a 1-cup liquid measure and sprinkle with gelatin. Set aside.
  2. Heat olive oil in a pressure cooker over medium-high heat until shimmering. Brown short ribs on all sides, about 10 minutes. Set aside.
  3. Add pancetta to pot and cook, stirring frequently, until pancetta is browned and crisp, about 12 minutes. Add onions, carrots, celery, garlic, sage, and half of parsley and cook, stirring, until softened but not browned, about 8 minutes.
  4. Increase heat to high. Add wine and let reduce by half, about 10 minutes. Add stock and gelatin mixture, tomatoes, 1 cup heavy cream, and bay leaves. Nestle short ribs in the liquid. Seal and cook at high pressure (12 to 15 psi) for 30-45 minutes. Let pressure come down naturally before releasing pressure and removing lid. Remove short ribs to a cutting board.
  5. Simmer sauce over moderate heat until thick and emulsified, about 30 minutes longer. While sauce is simmering, cut the meat from the bones and any connective tissue and shred it. Add the meat back to the pot and let it finish simmering.
  6. Stir in remaining 1/2 cup heavy cream, Parmesan, fish sauce, basil, and remaining parsley. Bring to a boil, stirring constantly to emulsify. Season to taste with salt and pepper.
  7. To Serve: If sauce isn't hot, heat to a simmer and set aside. Cook pasta in a large pot of well-salted water until just barely al dente. Drain, reserving 1/2 cup of cooking liquid. Transfer to a large skillet or sauteuse and add 3/4 of sauce, along with cooking water. Cook over high heat, tossing and stirring gently, until sauce is thick and pasta is coated, about 30 seconds. Transfer to a serving bowl and top with remaining sauce. Serve immediately, passing extra Parmesan at the table.

Standard
Moblog

Apple Watch vs. Fitbit Charge 2

I had an Apple Watch Series 1 for about six months but switched to a Fitbit in April (Charge 2 HR, previously had an Alta) and don't think I'll be going back to the Watch. This isn't an actual review, just a quick musing on what I've found that works for me with some more details about how notifications work.

The Apple Watch generally did not help me accomplish anything that my old Alta didn't already – it did some cool things, like replying to texts and once even answering a phone call, but in reality I text relatively little and talk on the phone even less. Both helped me stop constantly missing phone calls (which are all the more important because they are rare) and texts due to my habit of leaving my phone on silent in odd places around the house because I have no pockets to tuck it into while I play with the kids.

The Fitbit, on the other hand, has live heart rate monitoring and step and sleep tracking built in, all things that actively helped me as a pregnant woman (did you know your resting heart rate is usually about 15-20 clicks faster when pregnant?) and continue to help me as I handle a baby+toddler and work on a healthier lifestyle. We also already use a Fitbit scale and occasionally track food with the Fitbit app, so there is some investment in that ecosystem to begin with. I was taken in by flashy Apple technology (and that rose gold!), but forgot what my real goals are. Now I feel like I'm back on track, and with a rose gold Fitbit, too 🙂

The biggest specific usability issues I had with the Apple Watch besides its lack of non-workout fitness tracking were battery life and notifications, with bulkiness and random shutdowns also annoying me. Meanwhile, the only things I miss about it are reminder notifications and pinging my frequently-misplaced phone, with the latter mitigated by having a Tile Slim.

Notifications are probably the thing with the most nuance and affect more people, so I've thought about them quite a bit. My preferred setup seems to be a little different from most people I've observed, though. I personally like being able to see/read through notifications without having to hear or feel them in real time – the only notifications I've allowed to make sounds/vibrations for the last 8 years have been phone calls, texts, calendar events, and reminders. Other notifications turn the screen on with the banner, but otherwise don't disturb me. When I'm working or idling, I often have my phone next to me face-up, where I can glance at it when I want to for any notifications (typically just email, Slack, and Twitter for me – I aggressively prune back notifications in general). If I need to keep my phone nearby but I'm trying to focus or with family/friends, I put it face-down.

The Apple Watch only shows notifications in one place. This makes sense in that having two (or more) devices buzzing can be aggravating, but for silent notifications this is pretty silly and rather inconvenient for non-silent notifications with your phone unlocked. Also, they haven't solved this for iMessage syncing so when I'm on my computer it's still multiple pings anyway.

There were two common scenarios that made this unworkable for me. First, if you have silent notifications going to your watch, they do not light up your phone screen, and the watch doesn't display anything unless you raise your wrist. Since those are silent notifications, they don't buzz, so I don't know to look at my wrist. I started falling behind on my work email because I had come to rely on my phone as a semi-passive notification system for all emails. The fix? Stop sending any silent notifications to my watch, at which point they lit up my phone again. (Desktop notifications don't cut it as a replacement – I do a lot of work from my phone.) Which meant that I couldn't scroll through them on my watch if I left my phone elsewhere.

Second, is that if you left your phone unlocked for, say, map navigation or kids playing Endless Alphabet, the notification banner would only be displayed there and not alert the watch. This led to me missing urgent changes a number of times when going somewhere (e.g. "you left his bag at home") because I don't feel/hear the vibration and can't stare at the unlocked screen the whole time. I believe the watch would still receive the notification so you could scroll to see it in the notification center, and you could open the entire app to check, but you would not receive a haptic alert or be able to just lift your wrist to see it. I tried to get in the habit of turning my phone off silent during those situations, but then would forget to switch it back, and it didn't solve being able to see messages privately at a glance.

The Fitbit will only do call, text, and calendar notifications, so I do miss reminder notifications, as well as the occasional WeChat ping. Reminders can't be replaced by calendar events because calendar events don't "stick" as lock screen notifications – a reminder will typically stay there even as you unlock/re-lock your phone, which is important for me, especially since Touch ID sometimes unlocks your phone unexpectedly. But on the plus side, those notifications come through so long as your phone is also displaying them – so you can get your notifications while your kid watches a video, but they won't bug you if you're on do not disturb or have the actual text message open already. The dual buzzing does not bother me most of the time – if anything, it helps me not miss things, since the only notifications that do buzz are ones that I consider time-sensitive.

Since most people I know have non-silent notifications on for many things, like email or (the horror) Twitter, I'm not sure these concerns really come up so much. But I learned a long time ago that I'm never the only one who does something a given way, and honestly, I think it's worth trying more silent notifications in general. Passive alerts are nice, and so is the Fitbit!

P.S. If you want to know why I went with a Charge 2 instead of an Alta HR, it's because the lack of a button and inconsistent response to lifting the wrist on the Alta infuriated me. It also only displays notifications vertically, which is impossible to read. The Charge is much better in all ways except for being wider, but it's not bulky, even on my small wrist.

Standard
Moblog

Music (and public school) saved my life

I read this bit on CNN earlier about a classmate of mine at the Governor’s School for the Arts. I got know him when I served as the rehearsal pianist in the cited Robert Brown’s stead for that year’s production of The Magic Flute – Ryan was one of our two Sarastros (there were two casts). Funnily enough, I remember getting into a physical altercation with somebody during a rehearsal, and I am 90% sure it was Ryan. Probably not a surprise to anybody who knew either of us.

Reading this made me think about how important caring adults, music, and public school were in saving me from myself. I grew up in a violent household without a ton of resources (though to give my dad credit he deserves, he put a lot of work into always paying for school and piano necessities), and I was a mediocre student at best. Without teachers and counselors who could read past the anger, I would probably have been bounced out of multiple schools, and who knows what would have happened then. Without the opportunity to deep dive into music studies before adulthood, I have no idea what I would have done in college and beyond, and I’ve publicly spoken about the huge impact my musical training has had on my professional success in technology.

I’ve been aware of the importance of having a program like the Governor’s School for the Arts available to me since my attendance as a high school senior. GSA is a free program that relies on a partnership with 8 surrounding public school districts for busing and admissions/school credit. Virginia Beach specifically has special programs within its regular public high schools, also with public school busing provided, so I went to a math and science academy in the mornings (well, if I bothered to get up that day) and then GSA for piano in the afternoons. Opera rehearsals were at night and I was paid for them as an actual hire, which was a very cool job for a teen. If we’d had to pay for tuition or transportation, a lot of things would have been a lot harder, and I may never have gotten to do it at all.

I think about this availability a lot as my child enters public school age in a time and place where private and charter schools are the assumed norm for a lot of my parenting peers, and I’m frequently the lone dissenting voice who continues to believe in taking part in an admittedly imperfect equalizing system. I put my kid into a charter school lottery for pre-K4 next year and was honestly rather relieved when he ended up pretty far down on the wait list. As a planner, it’s hard to wait for public school registration (which isn’t a very clear process to begin with) and there’s a lot less information out there about each specific school because they’re not trying to sell themselves, but I genuinely believe that getting to know the people around you and hopefully some people who are very different from yourself is a critical part of education. It might still turn out that the specific combination of the neighborhood school and my son doesn’t work out for whatever reason, but we have to give it a fair chance, the same way I believe that all of his peers deserve a fair chance.

Jersey City has universal pre-K which I think is critically important, so I’ll probably be volunteering at our two local pre-K4 options (regular and bilingual) to get a feel for them over the next couple of months; pre-K3 is almost all through city-contracted providers, so this year was not a local school. There’s also a progressive bent in me that wishes all parents were required to send their kids to their local public school for X period of time, because I am real tired of hearing nothing but negative talk from a bunch of yuppie parents who’ve never bothered to get to know the people or the schools directly around them. (Aside: said parents really don’t like it when you ask them if they’re sure the schools are the problem or if it’s that they’re trying to excuse their fear of unknown brown and/or “poor” people.)

Props to you, Ryan, and thanks for sharing your story. Even now as an adult, it’s comforting for me to know I wasn’t the only one, and if even one kid going through the same thing sees this and is inspired, I believe that’s some of the best success we can find.

Standard
Links

Make Everyone Blonde Again Also

[contentcards url=”http://www.inc.com/minda-zetlin/why-women-who-want-to-be-leaders-should-dye-their-hair-blonde-according-to-scien.html”]

Link
Moblog

Q: Is sexism as prevalent as women say it is?

A: No. The longstanding practice of ignoring, invalidating, and silencing female voices would indicate that sexism is much more prevalent than women say it is.

A Primer On Everyday Sexism [The Onion]

Link
Moblog

helen.blog has a new theme and I live-tweeted what it was like to get here

You know what makes me love WordPress even with its rough spots? That I can just copy-paste the URL to this collection below into the visual editor and I get a magic oEmbed preview. It’s my most favorite thing and it’s not just because I’m partial to what went into 4.0.

Also I wrote up a summary of thoughts over on my WordPress-specific blog.

Standard
Web

helen blog, now at helen.blog!

I have called my blog “helen blog” since the tail end of my Blogger days, and kept the name when I made the switch to WordPress (a very good switch for me, it turns out). It seems fitting that it finally gets to actually live at helen.blog, and I decided to do the right thing and move to HTTPS while I was at it.

.blog is available for “landrush” applications through Automattic, which runs the WordPress.com service. WordPress.com is great, and I keep my WordPress-specific thoughts over there for a number of reasons, but I like running WordPress for myself so I remain a user. It’s humbling, really. The trepidation of hitting the switch on a domain name change, navigating the HTTPS waters – even before getting to the WordPress part, running a site can be hard. And then there’s the WordPress part, which I’m always trying to make better.

I have to thank two tools in particular for making this a relatively easy move (for a developer). First is wp-cli, whose search-replace command saved my sanity. The other is Let’s Encrypt, which makes running my personal site over HTTPS practical. With those, I have to give a shout to this site’s host, SiteGround, which provides wp-cli by default and Let’s Encrypt through cPanel even for shared hosting, making all of this as painless as possible. They also have supported using PHP 7.0 since beta, which combined with this site running nightlies, makes me quite the tester of my own breakage 🙂

Standard