I do not pretend to understand the moral universe; the arc is a long one, my eye reaches but little ways; I cannot calculate the curve and complete the figure by the experience of sight; I can divine it by conscience. And from what I see I am sure it bends towards justice.
This is a company blog post I wrote about Gemini, the cloud-based constellation orchestration software my team and I created at Spaceflight Industries. I’m duplicating it here from the original that was posted on 2018/11/12 for posterity.
Constellation Orchestration using the Cloud
Since the launch of Pathfinder-1 two years ago, the BlackSky ground and control team has been working on Gemini, our internal name for our next-generation cloud-based constellation orchestration system. We’ve taken operator interactions with our first demonstration satellite Pathfinder-1 combined with lessons learned from our first-generation software and redesigned the system from the ground-up for fully-automated operations of our Global satellites. From the very beginning, Gemini was designed to scale up with our constellation.
Designed for fully-automated operations
The initial checkout of the satellite post-launch begins with our satellite operators. Satellite constellation operators use Gemini for manual commanding of Global satellites during launch and early operations to confirm the satellite is healthy in orbit. After checkout is complete, the operators take a step back and the satellite is handed over to Gemini automation. Gemini is responsible for orchestrating the tasking and downlink from the satellite, engaging the groundstations around the world to communicate with the satellite during contact passes, create and upload satellite mission tasking scripts, manage telemetry & health logs, and alert operators to any anomalous telemetry. The automation is designed to protect the satellite but as additional safeguard Gemini alerts operators in the event of anomalous behavior so that they can intervene if needed.
In addition, Gemini also:
- plans images and tasks them across the entire constellation
- orchestrates connectivity with multiple satellites around our world-wide network of groundstations
- manages the radio chain & antenna tracking
- propagates satellite and equipment telemetry in sub-seconds from groundstations to operator dashboards during contact passes
- monitors the entire system in real-time and alerts on anomalies
- provides infrastructure for our image processing pipeline, code-named Obscura internally, that does georeferencing and orthorectification and more
- exposes web-based UIs to operators for manual satellite commanding in addition to insight into automated activities and constellation health
Cross-team development and validation
Gemini development was a collaborative effort using input from many cross-company teams to ensure that we could test the system in the same way we expected to use it while in space (as they say in aerospace: test what you fly, fly what you test). The Gemini development team worked closely with operators to design a system that provided the control and insight they needed for successful satellite operations. Our development team worked hand-in-hand with flight software and hardware AI&T teams to validate all radio, commanding, and telemetry interfaces. An agile development approach allowed operators and other stakeholders to request features and resolve issues through an iterative testing and release process.
Our validation team created multi-satellite constellations using virtual satellites — a novelty in the aerospace industry — to ensure our system scalability. They also created automated deployments and tests to run nightly against our physical test satellite (Flatsat) to validate end-to-end radio equipment functionality and full-system integration. This innovative testing showcases the robustness of our constellation automation ahead of launch and allows the cross-functional team to evaluate the space to ground system while still on Earth.
Under the hood
Gemini was built leveraging technologies and practices that, while common in many software development shops, are new to aerospace. Our microservices architecture runs on EC2 instances running CoreOS in Amazon GovCloud and in CoreOS virtual machines on top of VMware ESXi hosts in our groundstations around the world, allowing a unified architecture across these disparate environments. Microservices are coded in Python 3.6, primarily with asyncio/aiohttp, with a smattering of node.js and are deployed via Docker containers.
To handle the firehose of critical telemetry, both from the satellite as well as the groundstation systems, we propagate telemetry in real-time using Redis pubsub then store it in KairosDB/Cassandra and expose it to operators in Grafana dashboards. WebSockets are used for real-time service alerts and messages making them available nearly instantaneously to the user. Our Polymer-based operations UI allows for tight coupling between the microservice source of the data and the operator interface all while being presented together as a single cohesive interface. Using encapsulated web components allows quick deployment of new features and easy integration with third party tools.
We use the HashiCorp stack (Terraform, Consul, Vault, and Nomad) to manage our infrastructure as code, Gitlab for source management, and Pants/Concourse for builds.
We’re excited to put Gemini to work when the rubber meets the road with the upcoming Global launches!
I started playing D&D 16 years ago with some friends. In the game I played a human fighter named Gairdeachas, or Gairdy for short. Gairdy was a classic meat shield, being a strength-based fighter. Physically I pictured him as pretty much everything I wasn’t but wanted to be: big, strong, and muscular. By the end of the campaign Gairdy was terrified of shrubberies and heights after being attacked by the former and dying from the latter (he fell from a raised platform while fighting a tentacled brain monster and was raised back to life).
In 2004 one of us came across an online D&D avatar generator and we had fun creating pictures of our characters. The generator offered a variety of torsos, arm positions, weapons, etc. Shockingly, a version of it still exists today!
A couple of months ago I had the crazy idea of having Gairdy re-drawn based on me. After all, today I’m closer to the buff meat-head that I aspired to be 16 years ago. I had a really great experience getting sketched by local artist S. Pettit of Tumbled Heroes back in April and a few weeks ago I commissioned a piece by him based on the original. Yesterday he blew me away with an utterly fantastic reimagining of me as Gairdy. Here’s Gairdy of 2004 and 2018:
I love everything about it, including how the new image retains some of the key visual elements of the original and artfully incorporates — but clearly embellishes — some of my physical attributes.
For over a decade a cropped version of the original has been my online avatar pretty much everywhere, including on Slack at work, Github, and everything that uses my Gravatar. The resolution of the original image was very low making larger thumbnails of it pixelated or blurry, although the smaller versions looked ok:
The new image is super-high-resolution which makes for great images of any size:
The new image is a bit more revealing but some judicious cropping and it’s totally safe for work:
The colors and spirit of the pictures are similar enough I don’t expect it will be a drastic change for people expecting the person behind the “human against the red background” to be me.
I can’t express how happy I am with the new drawing. Many thanks to S. Pettit for doing such an incredible job! All that’s left is for me to update my avatar everywhere.
Today I turn 40. Far from being bothered by it, I’m riding high on life. I’m dating the most amazing man, surrounded by incredibly good friends and chosen family, living in a beautiful city, feeling really good about who I am in body & spirit, and looking forward to the years and decades ahead.
That isn’t to say that my life is perfect. My knees and back periodically act up, generally because of something I did at the gym. My metabolism has slowed down a bit so I can no longer eat with abandon. I expect this year will finally be the year I need to get reading glasses (I can’t complain after 40 years without glasses or contacts). The stress over the last two years about the shit-show that is our country hasn’t helped either. But on the whole my problems are of the champagne variety.
Thank you to everyone who has joined me through the last 40 years, be it for a few days, years, or decades. You have all influenced who I have become in ways I can never adequately convey. My life hasn’t alway been easy, despite my privilege, but I wouldn’t change anything about my journey and who I have become.
This weekend was GeekGirlCon (GGC), a convention dedicated to empowering geeky women, girls, and other underrepresented minorities. In many ways it resembles the larger Emerald City Comic Con that takes place in Seattle every March — there are great panels on interesting topics, tons of cosplay, and an entire huge floor of vendors selling awesome, geeky stuff. But the reason Daniel and I have attended GGC every year for the past 4 years instead of Emerald City Comic Con is because of the amazing diversity of people and specific focus on empowering women.
The vast majority of GGC attendees are women or enbys of all ages. And while there are a lot of white people present, there are a good number of people of color and the number keeps increasing every year. Of the sessions I attended, all but one of the panels had a person of color (most more than one POC). And only two had a guy on them and the guys were out numbered by women 3:1. GGC is one of the very few places that I as a gay white cis male feel like a minority and yet I still feel very welcome as a gay geek.
The vendor floor is awesome and full of great purveyors of Fun Geeky Stuff. We bought two new books from Blind Eye Books, a publisher of books with LGBTQ+ protagonists, and two more copies of the Dream Like a Girl poster for our nieces who don’t yet have one. While the vendor floor is wonderful, the real reason we attend GCC is because of the sessions.
Yesterday Daniel and I attended a session hosted by a panel of librarians and an archivist talking about library science careers and how one gets into it. Today we attended a session about museums and how fictional portrayal of museums differ from real life and how museums are changing to meet a modern world.
And probably my favorite session of the weekend was titled Careers at NASA: From Mission Operations to Public Engagement where 6 women scientists from Goddard Space Flight Center talked to a room full of girls and young women about how they found their way into NASA. The women talked about things they struggled with along the way, what a typical day looks like, and what they’re most proud of. Most importantly, these women made being a scientist and engineer relevant and accessible. This, to me, is the core of why GCC is awesome: it inspires young women and lets them know that they, too, can do amazing things!
It was a great weekend and more awesome sessions than we could attend. We’re already looking forward to next year!
Earlier this month I saw the coming-of-age and coming-out movie Love, Simon. It was touching, heart-warming, and made me wonder when we stopped sharing our own coming out stories.
I came out 18 years ago in Austin at the age of 21. It seemed that whenever I met another gay guy, we’d inevitably share when and how we came out. I think the last time I shared the story was when I met Daniel 5.5 years ago, and before that I don’t even remember. Nor have I heard coming out stories from others in recent history either.
When did we stop sharing our stories? Why don’t we tell them anymore? Was it just too long ago? Is it because I live in a very accepting part of the country now so the stories have less impact? Are they just too painful and we’d prefer not to remember?
Should we dust off our stories and retell them? Much like the heartbreaking stories of the AIDS crisis that so heavily influenced what it meant to be gay in America in the 80s — stories that we’ve stopped telling and are slowly disappearing — are we losing part of gay culture by not telling our coming out stories?
I think we are. I think we’re doing a disservice thinking that people coming out today, young and old, don’t struggle and don’t need to hear that they are not alone in that struggle.
To quote the King of Pop, let’s start with the man in the mirror…
I finally admitted I was gay in 2000 right after college while living in Austin. I’d known it for years but “praying away the gay” had been a miserable failure and I was desperate to stop living a lie.
The very first person I came out to, tearfully, was my good friend Megan who accepted me with open, loving arms. I remember her telling me that me being gay didn’t change anything about our relationship, and it hasn’t. I can’t tell you how relieving it was to finally tell someone and to be loved regardless. I can say without exaggeration that her response to me coming out saved my life.
One of the first people at work I came out to was my friend Jonobie — a woman who has since become my very best friend. Only minutes after coming out to her, she almost punched a guy making homophobic comments. A few months later I came out to my teammate Jenny and she went from utter disbelief to trying to set me up within seconds.
But other interactions weren’t so rosy.
Like Simon in the movie, I came out to my parents at Christmas. Unlike Simon, my parents are conservative evangelicals. There were tears, words of “why are you making this choice?”, “you just haven’t found the right girl yet”, “but you’ll never have kids”, “what did I do wrong?”, “you should see a counselor”, etc. Lets just say that it didn’t go well and has been a very rocky path since. I envy loving, accepting, affirming parents like Simon’s.
I came out to another close college friend sometime in 2001. We use to attend church together in college. I honestly don’t remember the details of coming out to him, but he didn’t accept me with open arms. We remained friends, albeit of the “don’t ask, don’t tell” variety. When I got engaged to Benjamin he wasn’t able to tell me he was happy for me because he believed being gay was a sin. But the story takes a turn for the better when in 2009 he messaged me and said that his sister, whom he is very close to, came out to him and he was able to lovingly accept her. In his letter he apologized for hurting me when I came out to him and thanked me for giving him a chance to wrestle with some of the issues before his sister came out to him. Helping this man be able to accept his sister may be the thing I am proudest of in my life, because I know how much I wanted that for myself.
And it doesn’t end there. Society assumes that everyone is straight unless proven otherwise, so every interaction with a new person may turn into a coming out story. At some point it almost becomes second nature for those of us living in liberal, accepting areas of the country. (I’m sure I came out to some random clerk at the grocery store just last week trying to find something for Daniel.) For others in more rural or conservative areas, life exists in the closet because coming out is a risky ordeal, only undergone for specific people.
Stories help reveal our humanity, our realness to others. Within our stories we find common ground and commonalities. Coming out stories are no different.
If you’re LGBTQ+, what’s your coming out story?
If you’re not LGBTQ+, what’s a story of when someone came out to you?
This recipe isn’t exactly rocket science, but it’s the easy, protein-rich way that I break my fast every workday. I make 5 burritos on Sunday and warm them up in the microwave before I go to work in the mornings. Reheated eggs aren’t for everyone though, so your mileage may vary.
Egg and spinach breakfast burritos
- 5x 8″ flour tortillas
- 8 large eggs
- 1/3c chopped spinach, frozen
- 4x vegan breakfast sausages (I use Apple Maple Field Roast)
- storage container that will hold 5 burritos
Prep: Cut vegan breakfast sausages lengthwise into quarters, and then slice into small chunks. In a small bowl, defrost the frozen spinach in a microwave for 1 minute and drain off any liquid. Chop the spinach up into smaller pieces. Break the eggs into a small bowl and beat with a fork.
Cook: Warm up a large sauté over medium heat and brown the sausage chunks with some safflower oil. Add spinach and cook a bit. After sausage is lightly browned, add the eggs and cook the mixture as you would scrambled eggs.
Assemble: After the eggs are fully cooked, take off the heat and put onto a large dinner plate. Place the 5 flour tortillas on another dinner plate and warm up in the microwave for 30 seconds, flip the tortillas, and microwave for another 30 seconds. They should be easily malleable but cool enough to touch. Using a large spoon, divide the eggs into 5 sections (this is by far the hardest part of the recipe I swear). Take one of the 5 sections and place it onto one of the tortillas, wrap into a burrito, and place into the storage container. Repeat for the other 4 tortillas. Place storage container into fridge.
To re-warm: Place burrito on a plate and cook in the microwave for 50 seconds. Let set for 30 seconds and then devour.
Estimated nutrition value
- 284 calories
- 26g carbs
- 11g fats
- 17g protein