Salsa Roja

This is a big batch of my go-to salsa for parties, family functions, etc. It’s easy, quick to make, and always gets compliments. The lime gives it a delightful brightness that makes it perfect for serving with chips as an appetizer, on a taco, or even on a burger.

3 lbs roma tomatoes
1 medium onion
3 serrano peppers (adjust for your preferred level of spiciness)
1 bunch cilantro
2 tsp salt
8 limes, juiced
2 tsp black pepper
4 tsp chili powder
1 tsp garlic (optional)

Blend everything together in a food processor or high-speed blender. Put it in the fridge and let it sit for a day. (This allows the acids in the lime juice to cook the tomatoes and the flavors to blend.) Try not to eat it all in one sitting.

Kris & Sean’s Holiday Spectacular Letter (2021 Edition)

Dear Friends & Family,

As the year winds down, it seems a good time to catch up with those who are dear to us around the country and the world. (If you’re reading this, you made the cut!) Since we can’t possibly sit down for a leisurely meal and visit with everyone we’d like to, we bring you this meager substitute: our 2021 Christmas letter!

After a mostly-locked-down 2020, it has been a delight to be able to be out in the world once more. As folks have gotten vaccinated (3rd time’s the charm!), we’ve been spending more time with family and friends once again. (Particularly startling is seeing the bottom half of people’s faces who we’ve only known from the eyes up!) We’ve visited Kris’ sister Kim in Seattle, had a rich and full time with Kris’ family in Indianapolis, and reveled in several lovely places around Texas with each other and with Sean’s family. Oh, the joy of seeing something other than our own walls once more!

In the latter part of the year, Kris finally gave up her commute to our beloved St. Mark’s community and started as the Director of Children and Family Ministries at St. Luke’s Episcopal Church & School. It is a mere 3.5 miles from our home and also happens to be Sean’s 1st and 2nd-grade alma mater. While learning a new set of traditions and building relationships with a new group of people has been demanding, Kris has received an enthusiastic welcome from the leadership both at the church and the school. She’s also been very involved in our community garden and the local “Neighbors Helping Neighbors” efforts and on our evening walks seems to be known by everyone in our neighborhood!

Sean started working for Doximity in April, writing software to help doctors do their jobs better and more easily. The company is remote-first, and Sean has greatly enjoyed the ability to ply his trade from wherever he likes, be it the coffee shops and breakfast taco joints near our house or a relative’s home halfway across the country. He’s also begun getting back into performing, joining the San Antonio Choral Society this summer and recently playing out with a band for the first time in several years (at a bar that had a pig-in-residence named “Minnie Pearl”).

Our kids are all doing interesting things in the world: 

  • After working at the zoo for a couple of years, Maggie earned a promotion to full Zookeeper and adores (most of) the animals she gets to work with there. She continues to make steady headway on her degree and her project turning an old airport bus into a tiny home on wheels. (She’s officially the handiest person at our house now!)
  • Liam graduated from UT Dallas in May with a Software Engineering degree and is now working for a company there while saving up for planned travel adventures next year. He and Sean enjoyed a week-long graduation road trip together through the American Southwest, culminating in an 18-mile rim-to-river-and-back hike at the Grand Canyon during which they both thought they might die. 
  • Abigail is nearly done with her biology degree and has embarked on a Surgical Technician program here in San Antonio, which she is loving. (“Dad! I got to help with 2 C-Sections yesterday! It was SO COOL!”) She and her beau Christian are renovating a house downtown together. 
  • Savannah is in San Diego, enjoying the West coast life while doing great work as manager of a Cava restaurant and making steady headway on her Psychology degree.
  • Emily is having a grand time doing the most important job there is — being Mom to her daughter Juniper, who joined the world in February. She and Xander (who heads up the city of Kyle’s design and branding efforts) still hang their hats in San Marcos, so we still have good reason to go up for visits regularly!

Other notable events: surviving the Texas Snowpocalypse (40° indoors with no power for 12 hours at a stretch), playing music together, ushering for theater under the stars at the SA Botanical Gardens, a delightful long beach weekend with all the Texas kids, lots of care and feeding of the feral cats that call our yard home, getting to drive an Indy 500 pace car, enjoying dozens of butterflies and hummingbirds in our front yard pollinator garden, gently tiptoeing past the baby skunk who lived on our front porch for several days, finally finding a good habañero and carrot salsa recipe, nearly stepping on an alligator near the coast, playing lots of board games in person and online, petting kangaroos, and playing Pickleball for the first time.

As 2021 winds down, we wish you the peace of the Christmas season (well, the post-shopping portion of it) and every blessing for the year to come. And if you ever find yourself down our way, please stop on in — we’d dearly love to have time with you!

Warmly and sincerely,

Kris & Sean

Making of a LEGO Saturn V Display

After many months of off-and-on work, I’ve finally finished creating an appropriate setting for the LEGO Saturn V that my fine son Liam gave me.

This was a fun project: electronics, 3D printing, CNC milling, programming, and audio editing all combined to get the effects I was looking for. If you’re interested in the details, please check out my writeup on its construction.

Setting Up Live Streaming For Facebook

My lovely bride and I shared a few songs on Facebook Live last night to ring out 2020. The setup ended up being complex enough that I thought I’d document it here for anyone (including my future self) who might find it useful. Here’s a quick diagram of the flow:

And a few details:

  • The mic was a large diaphragm condenser (AT2020) that our friend Brian graciously lent us. It worked really well for picking up the sound from our singing and instruments in a fairly large space. I also fed my guitar in directly, which allowed me to get a little more low-end from that instrument and to process its signal independently of everything else going on in the room.
  • The audio interface was a little 2 channel Behringer (UMC202HD), which was solid and sounded great. More channels would have been useful, however, to be able to feed Kris’ guitar into the system directly as well and conceivably add a mic.
  • MainStage is fantastically fun and flexible, though it has a little bit of a learning curve. I used it to compress, EQ, and mix the incoming signals, as well as to provide the reverb for the pennywhistle piece. (Thanks to my son Liam for buying a copy!)
  • I used the MIDI controller (an AKAI MPKmini) only to turn on and off the reverb, though it can also easily drive virtual instruments, trigger loops, adjust patch parameters, etc. in MainStage.
  • Blackhole is a nice little audio driver that allows you to pass audio from one program to another on a Mac. In this case, I just used it to allow MainStage to send a signal to OBS.
  • For the video, I determined that the camera on an iPhone does a much nicer job capturing clean video than the Facetime camera that’s built into the Mac, so I used a program called EpocCam that allows one to use the phone camera as a webcam.
  • OBS is a software package that’s widely used for real time streaming. I’d originally not planned to use it, but when we did some tests beforehand, the video quality using Facebook’s built-in tools with the camera signal was terrible — super-compressed with a lot of nasty artifacts. OBS allowed me to pre-compress the video signal before sending it up to Facebook, which resulted in a much nicer image and far more modest bandwidth requirements.
  • Seriously, don’t use Facebook’s “camera” option for live streaming.
  • Finally, we used Facebook Live with a streaming key to share the video into a Facebook Live event. This was great from a standpoint of getting the word out to our friends, but the video was still fairly stuttery and unreliable at points. (The audio seemed rock-solid though, which was great. If you need to compromise on something when streaming, choppy audio is much worse than sub-par video.) OBS seemed to be cranking the stream out at a reliable framerate, so I’m pretty sure the video issues were on Facebook’s side.

On the whole, we were very happy with how this setup worked out. Having so many moving parts felt like a precarious house of cards, but all of the components worked reliably. And with the flexibility that OBS and MainStage bring, it would be straightforward to add multiple camera angles, do more sophisticated audio processing, or switch to a different streaming service to raise our production standards in the future. One potential limitation would be the processing power of the Mac running the show, but as is, this setup didn’t ask more than about 20% CPU of the 2019 16″ MacBook Pro that we were using. (And the new Apple Silicon will provide substantially more headroom for this sort of processing.)

Lastly, here are a few photos of the production rig. As with so many things, it’s a lot messier in real life than in a flowchart!

13 Tips for Working Remotely

I’ve worked in a lot of different environments over the years. Working with a distributed team is one of my favorite ways to get things done, but it comes with its own sets of challenges that aren’t obvious at first blush. Here are 13 things I wish I’d known when I started working with colleagues who are geographically dispersed:

  1. Overcommunicate: Communication happens pretty naturally when you’re sitting next to someone, but when you’re remote, it takes more of an effort. Make that effort! Respond quickly to email and Slack, even if it’s just to say “Got it!” or “Working on it; I’ll have it done Tuesday!” When you get a request from a remote teammate, you need to explicitly tell them that you are working on it and when you expect it to be done. They have no other way of knowing.
  2. Give your Team the Benefit of the Doubt: We all make mistakes sometimes! Don’t take it personally if team members forget to include you once in a while. Do, however, graciously let them know how you feel and certainly when it impacts your ability to work effectively. It’s easier to tackle issues earlier when they’re small.
  3. Presentation: Think about what creates a professional impression, and make it happen, both with teammates and with customers. At a minimum, this will include having a good quality microphone/headphones and webcam for video conferences, using a solid high-speed internet connection, and looking as professional as you would in the office. (These are in addition to practices that are universal, regardless of whether you’re in the office or not: turn up to meetings on time, speak and listen carefully, etc.) You might also think about what’s behind you on your video calls, having good lighting so that folks can see your face well, having a low-noise environment so that others can hear you well, etc. Use video as much as possible; being able to see others’ faces gives us lots of insight into their thoughts and feelings that are otherwise easily missed.
  4. Arrange Pairing Sessions: It’s especially important when working remote to deliberately keep relationships vital with coworkers, which is helpful for building trust and working smoothly together. One effective way to do this is by working together on a task for a period of time. “Hey, I’ve got this design due Thursday and I’d love to have another set of eyes on it. Could we work together on it for an hour or two Monday?” This also helps spread knowledge about projects around your team and company.
  5. Initiate Social Time: Getting face-to-face time with your colleagues is important, and is tougher to do at a distance. Join others for a weekly Zoom happy hour, a lunchtime Jackbox game, or just a check-in. Start one of these if they don’t already exist.
  6. Use High-Bandwidth Communications, But Record Decisions: Reaching consensus can be hard, and the delays that email introduces make it even tougher. Whenever possible, have conversations with video in real-time. When you’ve reached consensus, then write a quick summary of that chat and share it in Slack or other appropriate channels. This ensures that you and the other people in the conversation have a common understanding of the conclusion you reached and that others are aware of, understand, and get the benefit of your discussion.
  7. Let Your Team Know Your Status: Whenever you sign on or off, even if it’s just to go run an errand, let your team know and when you’ll be back. This helps others plan their time around your availability.
  8. Focus Time: One of the benefits of setting up your own work environment is that you can limit distractions. If you need to go head-down on something for a few hours, do it! Let your team know that you’re going to be concentrating for a period of time and set Slack to Do Not Disturb. (Assure the team that they’re welcome to break in if there’s an emergency.)
  9. Set Aside Physical Work Space: Having dedicated space for work not only makes it easier to create a good environment but also helps get into the work mindset. Important things to pay attention to when you’re setting up your space: safety, comfort, necessary tools, and a minimum of distractions.
  10. Keep it Classy: Humans are not perfect communicators. Text-based communication misses 80% of face to face communication that is non-verbal. Thus, we need to be especially careful to communicate in a way that’s respectful and kind when we’re remote. Verify your assumptions and sense-making. Saying “please” and “thank you” goes a long way.
  11. Stick to a Schedule: Having a regular schedule not only helps your team, as they’ll know when you’ll be reachable, but also helps you. Regular hours tend to result in better sleep, more focused work, and the ability to feel good about putting work aside at the end of your scheduled time. (Though of course, when you need to make an exception to your regular schedule, don’t hesitate — just let your team know!)
  12. Take Breaks: A team in an office takes breaks during the day; we need those breaks at home too. Have a walk, play with your dog, get a snack! (Just let your team know if you’ll be unavailable for more than 10-15 minutes.) Also, don’t mistake having your office at home for an expectation that you’ll be working all the time; take your weekends and evenings off.
  13. Set Up Your Work Hours in Calendar: Most calendar systems have a handy feature that will let meeting organizers know when they’re trying to schedule a meeting outside your work hours. Set it up! This will let others know in a low-friction way when they can expect you to be available (and when they shouldn’t).

Politicians and Moving Goalposts

I’ve heard some friends express frustration that our political leaders keep changing what they’re asking of the population: Don’t wear a mask. Quarantine for a month to flatten the curve. Now wear a mask. Quarantine for a year until we get a vaccine. Going to the grocery is OK, but attending church isn’t. Social distancing.

We keep doing what we’re asked, hoping the latest will finally end all of this, and are understandably deeply frustrated and angry when our leaders keep throwing up now obstacles in this strange, infectious steeplechase.

The fact is, however, that our leaders are responding to a reality that is still not fully understood. Flattening the curve was a goal, and one could argue that we’ve done so. But bear in mind that this was a tactical goal. The strategic goal is to minimize the overall harm to the population, and the methods used have to change as we learn more.

Eisenhower said, “In preparing for battle I have always found that plans are useless, but planning is indispensable.” That is, when we learn more about the situation on the ground, the battle plan always has to be adjusted to account for the new information. The goalposts have to be moved. Refusing to adjust plans as we learn more loses battles.

So is going back to work risky? Of course, the answer to this is “sometimes.” Consider: The folks in the meatpacking industry who have seen severe outbreaks. Workers who are medically vulnerable. Parents who will have to send their kids back to a daycare with other sick kids. Those who live with their elderly abuelitas. Single parents who can’t find an open daycare.

But conversely, not going back to work is also causing a lot of people huge economic harm. Unemployment is at an all-time high in the US. The same parents who can’t put their kids in daycare are struggling to make ends meet. And the poor, who are most medically vulnerable, are also the most economically at risk from a few missed paychecks.

The easy road for a statesman to take would be to advocate for one extreme or another: “Open the country wide! Let’s get back to normal!” or “Everybody buckle down and stay home until we have a vaccine.” But either course would be catastrophic.

The immensely difficult task for a responsible leader is to recognize and balance the harm to lives with the harm to livelihoods and to do so with a still-incomplete understanding of COVID’s characteristics.

We have doubtless made mistakes and will continue to do so. But let those mistakes be born from the things we don’t yet know rather than a willful refusal to look at the very real challenges and suffering that people in different circumstances are experiencing.

On COVID Contact Tracing Apps

I’ve heard some friends express concerns about these being used for government surveillance. As a civil libertarian, I share your reservations.

I’ve also been a mobile developer for nearly a decade and have done a good deal of professional work around the location-tracking and proximity detection technologies that these rely on, so know firsthand what these apps can do.

My short take: if an app asks for access to your location data or contact list, granting that will give more info than you want to share. If it instead asks to use the privacy-preserving contact-tracing capabilities Apple and Google built into the latest versions of their operating systems, it cannot be used to track your location or any personally-identifiable information, and you can use it with confidence.

None of these have been released in the US yet, but they should be coming soon. I’ll share further info on them when they are.

1945 is Now on Tabletop Simulator

Some of you may remember that, a few years back, my son Liam and I designed, and my eldest daughter Emily illustrated, a card game. The elevator pitch was “like Risk but with cards,” and we christened it “1945.” It has remained a family favorite since we created it.

It’s been out of print in its physical form for a while now due to some shenanigans with my printer, but I’ve just finished porting it to be playable in Tabletop Simulator. If you’ve got TS (which is near-essential for board game fans during this time of social isolation) you can now play 1945 for free!

Happy quarantine!

1945 on Steam Workshop

Rachel on Addiction

Rachel is a high school friend of mine who recently got to speak on addiction at a TEDx event . A few years back, we were both in town for the funeral of one of our shared dear friends. We had a wonderful conversation afterwards about the similar ways that addiction had impacted our lives, and the growth and change of direction that came out of those experiences. She has now been fully focused on addiction treatment and recovery for a number of years, and shares here some of the wisdom that she has won on that road. It’s well worth your time.

Heading to HEB

I’m happy to share the news that I’ll soon be starting a new role at HEB, the much-loved Texas grocery chain, as a Sr. Developer on their Curbside team. While I’ve really enjoyed and appreciated my time with some outstanding and amazing human beings at Handsome, I’m excited about this new professional chapter for a couple of reasons:

First off, I find the craft of software development — building intricate, beautiful mechanisms out of logic and aether — to be deeply engaging and interesting. I will be able to focus on that aspect of my work more squarely here than has been the case since I started taking on management roles several years back.

I am also a great fan of having the centers of one’s professional and personal lives close to one another. Being able to invite colleagues over for dinner, avoiding endless hours on the interstate, and burning less fossil fuel merely to be places are all important to me. Since we moved to San Antonio this year, working 10 minutes away feels like a big quality of life improvement.

In addition to being close, I’m excited about the specific location where I’ll be working: the headquarters campus is a lovely site of an old arsenal that was founded in 1859 to supply the forts on the Texas frontier. It’s along the San Antonio River, downstream a bit from the main segment of the Riverwalk, along a boating-friendly stretch that will allow me to toss a kayak in the water and go paddling after work. And HEB has plans for a beautiful, expansive tech center on campus to open in a couple of years.

Finally, the company has a tremendous reputation for being a great place to work. I’ve long appreciated their commitment to serving the communities in which they operate, donating more than 5% of their gross earnings, helping food banks, etc. I’m glad to see that they have a similarly good reputation as an employer, and are investing deeply in building their technology capabilities and team.

I’ll be starting on February 10; I’m eager to invest my professional energies in service of a company for which I have respect and high expectations for its future, in the city that I grew up in, love, and still feels like home.