JR-X1: My Rocket Project—How it works

The goal of my project is to launch a model rocket that, upon reaching its highest point, flies itself back down as a glider, using control surfaces operated by an onboard autopilot computer to guide itself back to the launch/landing field for a targeted, soft, horizontal landing.

As far as I know, this hasn’t been done before.

In my last post, I talked about the goal—summarized above—of my rocket project, JR-X1, and about some of the constraints that make it a challenging goal.

In this post, I’ll describe how it works, at a conceptual level—what are the building blocks, and how do they interact to make the rocket / glider do what I want it to?

Here’s a list of the major blocks, followed by fuller descriptions of each block:

  • the rocket body, which is also the glider fuselage;
  • the rocket fins, which are also the glider wings and tail;
  • the rocket motor and the motor mount, to which is attached a parachute;
  • the sensors that inform the aircraft of its location, orientation, velocity, acceleration, altitude, etc;
  • the control surfaces: elevons on the trailing edges of the glider’s wings, and rudderons on the trailing edges of the vertical tails, so there’s a control surface on the trailing edge of each of the four rocket fins;
  • stepper motors to move the control surfaces;
  • last but not least, the flight computer, which interprets data from the sensors, computes the path to the landing point, and initiates control surface movements to steer the rocket on that path.


The body needs to be streamlined to minimize drag, which has two effects. It allows the rocket to fly higher on ascent, because there’s less drag counteracting the thrust of the engine. And the higher the flight, the faster the glider on the way down, which is important because lift increases with airspeed.

I’ve chosen to streamline the body by making it with an airfoil cross-section, instead of a simple cylinder-with-a-cone-on-top.

This has two advantages: it produces less drag than the cylinder+cone design; and it provides lift on its own during the descent glide, independent of the wings. Just how it provides lift, I’ll discuss in a future post about aerodynamics in detail, but for now just believe this: As long as the glider is gliding with its nose pointed slightly up, the body’s shape provides lift additional to the lift provided by the wings.

The body is about 600mm long. This is a compromise:

On the one hand, the longer the body, the longer the wing “chord” it can support (the chord is the distance from a wing’s leading edge to its trailing edge). A longer chord gives more lift at a given speed.

On the other hand, the bigger the rocket, the more it weighs, resulting in a lower peak altitude for a given engine size, which argues for keeping the rocket as small as possible.

Another consideration—on a third hand, so to speak—the rocket needs to have enough room inside for the flight computer, the sensors, and the stepper motors. In particular, the main computer I plan to use, the Raspberry Pi 4B, is 59mm wide, about 5⅓”. The way the body’s airfoil shape is designed, that means the body needs to be at least 500mm long (~19½”) to be sure it’s at least 60mm at the widest part. I added 20% to allow for any minor errors in fabrication, so it has to be at least 600mm long.

In the end, I went with 600mm exactly—minimum weight that meets the capacity requirement.

Since first publishing this post, I’ve realized that this analysis is… incomplete, to put it kindly. The three original considerations—wing chord, weight, and capacity—aren’t wrong, but there’s a cart-before-the-horse problem. I’ve been designing the vehicle—the rocket glider—first, and then experimenting with various computers and motors I might use, tweaking the body design as needed.
Revising that approach, I’m now going to focus first on the flight computer and the stepper motors. Once I know what will be inside the vehicle, I can design the body to hold it. Stay tuned.
(I should have been suspicious of my reasoning as soon as I caught myself adding in that 20% fudge factor. I mean, really.)

Fins / wings and tail

The rocket has two large fins that serve as the glider’s wings, and two smaller fins that serve as the glider’s vertical tails, something like this:

The large “delta” (triangular) wings provide plenty of lift.

There are two vertical tail fins because rocket fins have to be placed symmetrically.

The elevons and rudderons are visible in this sketch.

Unlike the plump, rounded airfoil profile of the body, the wings and tail are thin, nearly flat, with just a slight airfoil profile in cross-section:

Wing cross-section, leading edge on the left

The reason is because delta wings work best if they’re nearly flat, with a sharp leading edge. (A future post will cover the aerodynamics behind that statement.) The geometry isn’t as aerodynamically important for the tails, but their weight and drag will be less if we make them thin as well.

(Since I wrote that last sentence, I’ve learned more about how tailfins—also known as vertical stabilizers—provide “sideways lift” to help control yaw. So the geometry does matter. More details will be in the aerodynamics post.)

Motor and motor mount

Model Rocket Motors from various online catalogs

The rocket motor is a standard, commercially available, model rocket motor. As mentioned in an earlier post, I don’t plan to make my own motors or fuel, because my liability insurance requires that I follow the Model Rocket Safety Code, which forbids homemade motors and fuel.

The motor mount is the adapter to fit the motor into the rocket body:

Typical motor mount (Image: Apogee Components)

A word about “motor” vs “engine.” Linguistic prescriptivists will say that a motor runs on electricity, and an engine runs on chemical energy. By that definition, one should say “rocket engine.
As it turns out, though, language evolves, and the two terms are interchangeable in common usage today. (One of the two major model rocket retailers uses “motor,” and the other uses “engine”.)
I usually say “rocket motor,” trusting that the reader will understand that I don’t mean a rocket powered by electricity.

You can see that the inside diameter of the motor mount matches the diameter of the motor/engine. The outside diameter of the centering rings matches the inside diameter of the rocket. The whole assembly slides into the tail of the rocket.

In typical model rockets, the motor mounts are glued into the rockets. However, on JR-X1, I want to be able to use motors of various diameters, so it will have three interchangeable motor mounts, for 18mm, 20mm, and 24mm motors.

I’m still figuring out how that will work.


“What?!?” I hear you cry. Why do you need a parachute if it’s going to land itself?”

Three reasons:

  1. One is the usual reason for carrying a parachute aloft: If something goes wrong while you’re up in the air, it’s nice to have an alternative to falling out of the sky and hitting the ground at 150mph.
  2. The second is for test flights. For starters, before I shoot $100 worth of electronics up in the air, I want to make sure the rocket that it’s on can fly reliably. Even after I have the computer installed, I’ll want to test it in flight before I let it control anything. Those test flights will work like normal model rockets, popping a parachute for a controlled descent and recovery.
  3. Finally, I may want a braking parachute so that it doesn’t rely only on the ground skid to come to a stop. The idea would be to pop the braking parachute just before hitting the ground (which is a design problem worth its own blog post. It turns out that measuring very low altitudes accurately, within the weight and budget limitations of a model rocket, is a hard engineering problem.)
    Update: I have found sources for lightweight, inexpensive LIDAR units that can measure up to a meter. LIDAR is like radar, but with light instead of radio waves.

The reason I’m describing the parachute just after the motor mount is because the parachute is attached to the motor mount, and the motor mount is in turn attached to the rocket body by a length of cord.


Fully loaded, JR-X1 will carry numerous sensors that collect the data needed for navigation. Right now, I’m envisioning the following:

  • 3-axis accelerometer to measure acceleration in each of the three dimensions;
  • 3-axis gyroscope to measure changes in the aircraft’s orientation;
  • Barometric altimeter measures altitude based on air pressure;
  • GPS to measure location and altitude based on GPS satellite positioning;
  • Magnetic compass to find North, and to detect altitude based on Earth’s magnetic field;
  • the LIDAR short-range altimeter mentioned above;
  • and maybe a pitot-tube-style airspeed indicator, which measures velocity relative to the air rather than relative to the ground.

Although some of this information is directly useful for navigation, much of it needs to be preprocessed before it can be used.

One obvious example is altitude: there may be as many as four values for altitude—three measured by sensors, plus altitude can be computed from the accelerometer data—so the preprocessing software has to come up with a “most likely” altitude value to give to the navigation component.

This preprocessor transforms the raw data into measurement values that can be used for navigation. This transform processor (“XFORM“) publishes the following:

  • The current location vertically and horizontally.
  • The current velocity vertically and horizontally.
  • The current acceleration vertically and horizontally.
  • The current pitch, yaw, and roll positions in degrees. Pitch is how much the glider is pointing up or down compared to its direction of travel; yaw is how much the glider is pointing left or right; and roll is how much the glider has rolled to one side or the other.
  • Pitch, yaw, and roll angular velocity; that is, the rate of change of the pitch, yaw, and roll position.
  • Pitch, yaw, and roll angular acceleration; i.e. the rate of change of the pitch, yaw, and roll velocity.

These computed values are updated constantly as new sensor data comes in, and the values are passed to the computer’s navigation unit and pilot unit.

Control surfaces

The control surfaces are hinged flaps at the trailing edges of the fins.

Elevons are at the trailing edges of the wings; rudderons are at the trailing edges of the vertical tails.

Elevons have the functions of elevators and ailerons on a “traditional” aircraft; rudderons have the functions of rudders and ailerons. Hence their names.

Elevons control the pitch of the aircraft by moving up together to raise the nose, and down to lower the nose.

Rudderons control the yaw of the aircraft by moving to the left together to turn left, and to the right to turn right.

Elevons and rudderons work together to roll the glider left or right (for example in a banked turn). To roll right, the right elevon is raised and the left elevon is lowered, and simultaneously the upper rudderon is moved to the left while the lower rudderon is moved to the right. To roll left, the four control surfaces are moved in the opposite directions.

Stepper motors

Stepper motors are small electric motors that can be turned a precise fraction of a revolution by a computer command. One stepper motor drives each control surface.

Two components of the flight computer control the stepper motors: the trim control, and the pilot.

The trim control keeps the aircraft’s pitch, yaw, and roll at their “normal” values: nose pitched 20º up (because of delta wing aerodynamics); roll at zero to keep wings level; and yaw at zero to keep the glider pointed in the direction it’s going. If any of these drift from their set values, the trim control instructs the stepper motors to move the appropriate control surfaces to correct the drift.

The pilot component steers the glider to keep it flying toward the landing site. It sends commands to the control surfaces through the stepper motors to turn or bank, or increase or decrease the rate of descent.

Both the pilot and the trim control normally command relative movements of the control surfaces, which allows the stepper motor controller to integrate the two sets of commands.

For example, the trim control might be in the middle of correcting a slight roll to the left, by lifting the right elevon by 1º and lowering the left elevon by 1º. At the same time, the pilot could be commanding a pitch-up, telling the stepper motors to raise each elevon by 5º. Specifically, the pilot does not set the elevons to an absolute angle of 5º. The net effect of the two commands will be left elevon up 4º and right elevon up 6º, pitching the nose up while continuing to correct the roll.

A small computer (perhaps an Arduino) receives commands, interprets them, and sends signals to the stepper motors.

Flight computer

The “flight computer” is actually a small network of computers, each hosting the software components to perform one or more functions. This allows the components to operate simultaneously, in parallel.

Here’s the list of flight computer components, together with my current thinking about which computers will host which components.

  • Raw input: this interrupt-driven component reads the raw data from the sensors, and passes it to the pre-processor. It will probably run on the main computer, the Pi 4B, because its multicore architecture allows it to process multiple interrupts simultaneously.
  • Input pre-processor: First, transforms the data into standard units. For example, the data from an accelerometer may have a value from 0 to 4095 to represent acceleration up to 10 G’s; the pre-processor knows that ratio, and translates, for example, a reading of 2048 to 5 G’s, or 49 meters/sec2.
    The pre-processor’s second task is to compute the quantities derived from the sensor data; for example, it uses accelerometer and gyroscope data to compute current velocity and orientation. A full list of these derived values is above, in the Sensors section. I plan to run the preprocessor on the same computer as the raw input component.
  • Navigator: tracks whether the glider is on a path to the landing site; and if not, determines what changes of direction and/or descent rate are necessary to get it back on path.
  • Pilot: uses the input from the Navigator, together with the flight dynamics values (location / velocity / acceleration values, and pitch / yaw / roll values and their rates of change) to execute turns and adjust the rate of descent. The Pilot and the Navigator run together on their own computer.
  • Trim control: as described above, this component is responsible for maintaining steady pitch, yaw, and roll orientation in the absence of pilot commands to the contrary. Depending on how much compute power it needs, Trim Control could share the Pilot / Navigator computer, or it could run on a small, separate computer.
  • Stepper motor controller: Running on a small, separate computer (perhaps an Arduino), this component receives commands from the Pilot and Trim Control components, and drives the stepper motors accordingly.
  • Data distribution: using a publish / subscribe model, this component receives data (input and computed values) from components, and distributes the data to the components that need it. Could run on the main computer if it has the capacity, or could be separated out onto its own computer.
  • Logging: a record of every input, every computed value, and every command. Ideally runs on the main computer, to take advantage of its USB3 port for fast transfer to SSD.
  • Network: The various computers are connected by a high-speed, wired, switched Ethernet network. The network switch is a separate circuit board. The switch supports speeds of 10 / 100 / 1000 Base-T, to accommodate the Ethernet interfaces of any of the computers.

Those are the building blocks of the overall rocket / glider design, and how they work together. In my next post, I’ll get into the aerodynamics of both the rocket and the glider.

Words from Trans Day of Remembrance

About noon yesterday — the Transgender Day of Remembrance — I posted this on Facebook:

Today is the Trans Day of Remembrance.
Today we mourn our dead.
It is not a day of trans awareness or trans visibility or even trans advocacy.
It is a day of trans grief.
Allies, please respect that.

My friend Kim, who is perhaps the staunchest trans ally I know, asked in response (gently and compassionately, as is her way):

So, help me. As you know I’m an ally. Is an expression of love ok? Is sharing a sentiment like your comment, with our LGBTQ employee group ok? From an educational perspective?

My reply follows. It’s a Facebook comment that somehow morphed itself into something that is part essay, part self-therapy.

To your questions, yes, yes, and yes.

I’m referring to—to cite an extreme example—a public TDoR observance I attended that included speakers advocating for gay rights, as well a couple of politicians who, as politicians are wont to do, took it not as an opportunity to stand together in mourning, but as an opportunity to toot their own horns about what great allies they are etc.

I’ve seen allies try to lead the planning process.

I’ve seen the Day of Remembrance turned into Trans Week of Awareness And Education on one campus.

And none of those is a Bad Thing® in itself. What bothers me is losing the centrality of the meaning of this day.

I personally feel the day very deeply—those are *my people* who were killed, whose names were read. And it’s *my people* who live in fear of being on next year’s list.

It’s a time for us to face the truth of the hatred that too many people feel for us. And for me, it’s a time to contemplate the apparent miracle of my own privileged post-transition life, where I’m statistically unlikely to be physically assaulted, much less killed.

In large part, it’s a day for us, for my people, to unflinchingly face together the reality that is trans life, even that it includes the possibility of being killed by someone acting in blind hate.

On this day, I don’t need to hear all you’re doing to make sure it doesn’t happen again; I just need to be held and understood. On the other 364 days of the year, then—yes, please, do tell me about all the work you’re doing for us.

But on this day, as we open ourselves to the deep emotions that come with encountering the deaths of our people, please treat it as a day of grief and mourning. That’s what it is.

I have no way of knowing whether any of my comment-cum-essay-cum-self-therapy helped to answer my friend’s questions. But she did “Like” my comment with a heart emoji, so I believe I did touch her in some way.

Transgender vs Gender Dysphoria

A friend messaged this question to me:

“Set me straight—am I confused—aren’t all transgender people gender dysphoric in that the gender physically born with is not the same as how they feel and identify?”

This is my response to the question.

It was pretty recently that I read my first article about people who are trans but don’t experience gender dysphoria. For those of us who follow the DSM, the idea is startling, because the medical model of trans has been and still is based on the old trope of “trapped in the wrong body”.

It’s true that many trans people can describe their experience as being trapped in the wrong body, of feeling dysphoria (unease / dissatisfaction / distress) regarding their bodies as compared to their gender identities.

But there are plenty of other trans people who are OK with their bodies, to varying degrees. An example is a trans woman who doesn’t have genital surgery, not because of financial or medical reasons, but because she simply doesn’t want it — she doesn’t need the surgeon’s knife because she’s secure enough in her gender identity and willing (even glad) to live in her body as it is. Another example is a genderqueer or non-binary person who’s undoubtedly trans (they certainly weren’t assigned nonbinary at birth!), yet is not dissatisfied with their body.

The DSM5 says “gender dysphoria diagnosis involves a difference between one’s experienced/expressed gender and assigned gender, and significant distress or problems functioning.

Notice that distress is considered an essential element of gender dysphoria.

To be trans, though, is simply to have a gender identity differing from the gender assigned at birth (usually assigned on the basis of one physical characteristic).

Nothing about distress in there, so nothing about dysphoria.

And to be fair, the American Psychiatric Association begins its Gender Dysphoria web page with this paragraph. Note especially the “may be” and “sometimes”:

Gender dysphoria involves a conflict between a person’s physical or assigned gender and the gender with which he/she/they identify. People with gender dysphoria may be very uncomfortable with the gender they were assigned, sometimes described as being uncomfortable with their body (particularly developments during puberty) or being uncomfortable with the expected roles of their assigned gender.

Sam Dylan Finch, a widely read trans writer, identifies as a genderqueer gay boy, although when I first encountered his blog he identified as simply genderqueer, with no reference to the male/female gender binary. He published an article in Everyday Feminism about why it’s problematic to insist that gender (or body) dysphoria is a necessary part of being trans.

While he details six reasons why, they’re all manifestations of a principle that’s part of any social justice worldview: When someone tells you their lived experience, believe them and learn from it.

Especially if they’re part of a marginalized group.

Especially if you’re not.


Changed the course of my life

A friend posted the following on Facebook:

Tell me about something that completely changed the course of your life, for better or for worse.

Challenge accepted. This is the result.

My parents lived in Albany, NY, and I was attending Michigan State University. The summer after my second year, I got a junk job in Flint, where my then-girlfriend lived. After she dumped me, I stayed with some nomadic hippies in Flint for a while, then went to visit a school friend at his family’s summer cottage.

After a week or two, his mom figured out that I hadn’t told my parents where I was; meanwhile, my ‘rents were panicking because they couldn’t get hold of me at my now-former apartment in Flint (no cell phones in 1970). The two sets of parents talked, and I was sent home to face the music.

Mom and Dad made it crystal clear:

I would not be going back to Michigan.
I would be living with them.
I would be getting a job in Albany.
I would be going to school in Albany.

All of this, until I “learned some responsibility”.

After a week or two of the new regime, I had to make a quick trip back to Michigan State, to pick up the possessions I had left in dorm storage at the beginning of the summer, and bring them back home.

Returning to Michigan State and East Lansing felt like coming home. I stayed overnight with friends. After much talking late into the night, I did what I had to do. I went to a pay phone, called my parents, and told them I wasn’t coming back, that I was going to stay in Michigan, because I wanted to.

Dad hit the roof. Usually careful to keep control when he talked to us kids, this time he barked, “You get your ass back home right now!”

“No,” I said.

And just like that, I left home for good.

Oh, that Electoral College

A Facebook friend posted today:
Question (answer with rationale invited):
Should the Electoral College elect Clinton or Trump?”
The question is significant right now because, while Trump apparently won an Electoral College majority, Clinton won a solid majority of the popular vote (a little more than 51%). I say Trump“apparently”won an Electoral College majority because the Electors, when they vote next week, are not necessarily required to vote for the candidate whom they previously said they would vote for. Theoretically the Electoral College could still give the victory to Clinton without violating any law or the Constitution.

Rather than answering the direct question – whom they should elect – I commented with some thoughts about how to develop the rationale. It ended up being one of those annoying five-paragraph Facebook comments that draws from history, philosophy, civics, and politics, using obscure polysyllabic words and long, complex sentences to showcase the writer’s erudition. That was obviously inappropriate for a Facebook comment; if you want to show off your erudition, you’re supposed to write a blog post. So here’s mine.
At the outset, let me say that I understand the question to be: what should today’s Electoral College do? The question is not how we wish a redesigned Electoral College might work; that’s a separate issue – one worth discussing – but it’s not the question at hand.
My starting point is that the answer to a “should” question depends on one’s assumptions. Here, the dueling assumptions are:
  • The United States is primarily a federation of sovereign states. This is most obviously represented by the Senate, where each state has an equal vote. This assumption was widely, though not universally, held when the Constitution was written and ratified.
  • The United States is primarily a democracy. This is most obviously represented in the House of Representatives, where each state’s voting power is proportional to its population. This assumption is widely, though not universally, held today.
If the US is a federation, then a strong case can be made for election of the President by the states rather than by the national populace. Just the existence of the Electoral College system suggests that this is the assumption of the Constitution.
If the US is a democracy, then a strong case can be made for election of the President by the national populace. The structure of the Electoral College suggests that this is the assumption of the Constitution — electoral votes are allocated to states roughly by population.
(A finer point about the democracy assumption: The US is not a direct democracy, it is a democratic republic; that is, the voice of the populace is expressed through democratically elected representatives. Both Congress and the electoral college system are consistent with the assumption that the US is a democratic republic.)
There are three flies in the ointment, so to speak, three issues that are not cleanly addressed by the assumptions above. One is intentionally embedded in the Constitution, and the other two reflect common practices that may not have been anticipated by the writers of the Constitution:
  • First, the electors, unlike US Representatives, are not allocated strictly by population: smaller states get proportionally more representation, therefore larger states get proportionally less, because the number of a state’s electors is the number of its (population-proportional) Representatives, PLUS TWO. This triples Delaware’s voting power in the Electoral College, for example, but only increases California’s by 4%. This adds an element of federalism to an otherwise democratic process.
  • Second, in all but two states, a state’s electors represent only the majority of the state’s populace; the minority has no representation in the Electoral College. This strongly pushes the Electoral College system in the direction of federalism rather than democracy. But the Constitution doesn’t require this system; nor does it prohibit it. In fact, in the US’s earliest elections, Electors were chosen in most states by the legislature, not by the people. Moreover, the Constitution contains no assumptions about the existence of political parties, which is important because states that adopted the “winner take all” system of choosing electors were motivated by partisan considerations — the winner-take-all system gives the majority party in the state more power in choosing the President than would a proportional system (like Maine’s or Nebraska’s).
  • Third, the Constitution does not assume that Electors are legally required to vote for the candidate they stood for during the election. Yet many states do have laws that say that Electors must vote for the candidate for whom they stood during the election. The constitutionality of these laws has never been sustained or rejected in the courts.
So when we ask “should” the Electors choose Clinton or Trump, we need to be clear which question we’re asking.
Should the Electors follow historical precedent?
If so, should that be the recent history, the early history, or the overall history of the US?
Should the Electors follow the Constitution?
If so, follow only the specific articles written in the Constitution? or follow an interpretation that accounts for the authors’ assumptions and intentions, as far as we can know them? or follow an interpretation that accounts for current generally-held assumptions? or should each Elector follow her/his own interpretation of the Constitution?
Should the Electors follow the law of the state they represent?
Should the Electors follow their own moral conscience?
I personally don’t think there’s an obvious answer to my Facebook friend’s question: Should they elect Clinton or Trump? It depends on what assumptions one makes. I do think it would be helpful to the discussion of the question if we were each to clarify what assumptions we’re making, because, as we see, there are so many assumptions to make.

Computers hate me

Computers hate me. *sigh*

Well, not all computers. My personal laptop doesn’t hate me really — it loves me as much as its little brain allows it to.

But the computers that I’m surrounded by at work, the ones I’m inundated by at work, the ones that are an ocean of computers on which I am adrift like a sailor clinging to a piece of driftwood in the midst of a Category 5 hurricane — those are the ones that truly hate…. Oh that’s not really fair either. Part of the problem is our co-dependent relationship — they need me to help them think straight, and I need them to help put food on the table — and codependency is just not healthy in any relationship.

And really, I owe them at least a smidgen of compassion, knowing how they’ve been abused and neglected in their previous relationships — just used by whoever showed up, nobody giving them the tender loving care they deserve, all of them walking away chasing the next piece of shiny hardware without so much as a fare-thee-well.

But still.  They’re old enough to know better. They know that it’s wrong to take out their anger about the past on the one who’s trying her best to love and care for them now.

It’s not really hatred, I guess. More like a temper tantrum. Or rather, make that 10 simultaneous temper tantrums today. I’m confident I can get them to settle down and behave in fairly short order. It’s just wearying.

Who knows? Maybe it’s all projection. Maybe what’s going on is that I’m the one who hates them.

Anyone know any good counselors?

A Talk About Our Relationship

Another short reflection paper I wrote for my New Testament survey class in seminary, in the Fall of ’09.
This one is about Paul’s Letter to the Romans.

Romans and I have a wonderful relationship. It hasn’t always been easy – we’ve had our share of differences. To be honest, we still do sometimes. But it’s truly a long-term, loving relationship. I’d like to talk a little bit about what makes it work, or at least, what makes it work for me. If you want to know how he feels, you’ll have to ask him, although good luck with that – he’s not always comfortable with touchy-feely language.

Any good relationship has to be based on honesty. If you’re holding something back from each other, trust breaks down, and you lose faith in each other. Whenever I’m with Romans, I try to be present with a completely open heart. He’s the same way. He tells me what he thinks, what he believes, what he thinks is and isn’t important, and so on. I never have to play “guess what I’m thinking” with him. Sometimes he tells me more than I need to know at the moment, but that’s OK, better to say too much than too little.

Another really important thing is always showing how much you care about each other – not just caring, but showing it too. Part of that is making sure that you spend quality time together. It’s not enough just to be in the same room, you have to engage each other, have real conversations. I know I always feel better when I’ve been spending time with him regularly.

Of course, sometimes those conversations are easier than others. I don’t mean in a bad way… for instance, I’m a pretty emotional person, and he can be kind of intellectual and analytical sometimes. But if you care about each other, you make the effort. I try to listen really carefully, and he’s really patient about having to explain things more than once.

I don’t want to make it sound like he’s the one with all the answers. See, he hasn’t changed much over the years, and it seems like I’m starting something new all the time. So I can bring that to our time together, and help him understand and adapt to the way the world is now. He appreciates that, because a lot of people bring their questions to him, and he wants to be able to answer them in language they understand.

And speaking of being with someone else – that’s another thing that makes our relationship work – it goes back to that trust that I mentioned a few minutes ago. We’re completely loyal to each other. If somebody else needs him, I’m OK with that, because I know he’ll be there for me when I need him. And if I spend some time with Jude or Mark or even old Isaiah, he trusts me to come back to him. And I always do.

There’s something comforting about him, even though he can be so mental at times. Like even though he has a very clear sense of right and wrong, he’s still very accepting. He doesn’t judge people by surface things, like whether they’re male or female, or workers or bosses. He’s funny – he always says that he doesn’t even care if someone’s Jewish or Greek or whatever! It makes me feel safe around him, because I know he’s accepting of me too.

Another thing – he’s not one of those who are afraid to talk about love. When he says, “Owe no one anything, except to love,” or “Love is the fulfilling of the law”, I get all mushy inside – I never get tired of hearing things like that.

I guess that’s the bottom line – he’s all about love and faithfulness, and so am I. That’s really what’s at the heart of our wonderful relationship. And that’s what will keep us together for the rest of our lives.


A friend asked today what Christmas means to me spiritually. While it’s possible to write a book-length answer to that, I limited myself to these three short paragraphs.

Christmas is that moment when God moved (moves) from transcendent, “out there somewhere”, to immanent, right here next to us and among us — and yet, without losing the power and beauty of that transcendence.

And more: That baby, Son of God and Son of Man, teaches us — shows us — the reality that the Divine and the human can co-exist in the same being. God is not just with me; God is in me. And not just as some abstract essence — everything that makes God God is in me: God’s love, and God’s power, and God’s creativity, grace, and hope. More, this God-in-my-heart is my connection to transcendence and eternity.

Christmas is that moment — not just a temporal moment, a spiritual moment — when all of that is revealed to me in an awe-filled flash.

(Un-)Forgiveness: Mark, Hebrews, and the Go-Go’s

I wrote this shortly after I had completed a major research project on the Gospel of Mark; and between my reading of the Letter to the Hebrews and our group discussion of it. Also, I listen to rock’n’roll when I’m staying up late writing and reading. Now you know how Mark, Hebrews, and the Go-Go’s ended up in the same essay.


You’re unforgiven

so go on living

knowing that I’ve unforgiven you

and my thanksgiving

came the day

I saw it was OK

to unforgive you

– The Go-Go’s


Maybe I’m oversensitive, having just spent 36 straight hours with the shadowy Gospel, Mark the Dark. But there’s something that really bothers me about Hebrews. It’s something that also used to bother me about Mark until yesterday, when I finally came up with a satisfactory understanding of it. It’s the same ambivalent feeling that I have about that song “Unforgiven” from the Go-Go’s 2004 CD God Bless the Go-Go’s (snippet above). It’s hard-driving rock’n’roll, and with lyrics like that, it’s a great break-up song if you’re the one who’s been dumped.

But now that I’m over my latest break-up (pretty much), I’m not as comfortable with the song. It’s clever, making “unforgive” a transitive verb, and part of going on after love lost is reclaiming your ego. But the sentiment seems so… un-Christian. Forgiving is good, not forgiving is not so good, but unforgiving someone? It seems too cold-hearted and permanent.

The troublesome Mark passage that I’m referring to is 3.29, when Jesus says, “…whoever blasphemes against the Holy Spirit can never have forgiveness, but is guilty of an eternal sin.” Same problem – it seems so cold-hearted and permanent, very un-Christ-like. I rescued this passage for myself in the context of the surrounding story. The religious authorities have just accused Jesus of knowing how to cast out demons because he is a demon himself, in league with the Devil; this passage is part of his response. He knows that really, he is God, so he is warning the priests and scribes that it’s dangerous to say God and the Devil are the same thing, because then you cut yourself off from access to salvation. It all comes from a misunderstanding of Jesus’ identity.

That rationalization doesn’t work with some of the Epistle to the Hebrews, though, like 6.4-6: “…It is impossible for those who have once been enlightened, who have tasted the heavenly gift, who have shared in the Holy Spirit, who have tasted the goodness of the word of God and the powers of the coming age, if they fall away, to be brought back to repentance.” (NIV) What?!? After I’ve repented and been baptized and forgiven, I’m still at risk of losing it? To be sure, “fall away” here means more than missing Sunday service – it carries the connotation of treachery or betrayal. But if a Christian converts to Judaism or Islam for a time – faiths that deny the truth of the Christian gospel – before realizing the error of their ways, is Hebrews saying they can’t ever come back?

Everything I understand about our Christian view of God says that God loves us so much that God acts with grace when faced with human sin. But this and similar passages in Hebrews seem to be saying that even grace has its limits. I’m not one to cherry-pick the parts of the Bible that I like, and pretend that the rest don’t exist. But I don’t know how to reconcile this passage with the Gospels or Paul. I suppose it’s a project that I’ll have to take on later. I’ll add it to my Biblical theology to-do list.

My Heart Bleeds for SurveyMonkey… Not

SurveyMonkey*, a popular free site for creating online surveys, is playing fast and loose with the truth about their exposure to the Heartbleed vulnerability.

As far as I can put the pieces together, they were indeed running the broken version of OpenSSL before this week’s public disclosure of Heartbleed, and they quickly patched their computers with the fixed version. They also sent e-mail to their user base, advising everyone to change passwords, which, while not an admission, is certainly a strong hint that users’ passwords may have been exposed.

What they won’t admit is that, for who-knows-how-long, their data was also at risk of exposure. By “their” data, I mean your and my and all their other users’ surveys and survey results. Probably not a big deal to many users, but certainly something you would expect a service provider to be honest about.

I tried to get a straight answer from them, but they refused to give one. Posted below is the e-mail conversation I had with them yesterday. While I don’t have a final answer from them yet, it appears unlikely I will get one. The support person, Ian, offers at the end to take my question to the technical team on Monday. But no technical person will be able (permitted) to answer my question any more clearly than Ian.  The decision to fudge their answer came from Marketing/Communications, and the decision to stop fudging will have to come from there too.

I can’t tell you what you should do, dear reader, but you deserve at least to have accurate information when you’re deciding whether to trust a web site with your data.


* SurveyMonkey link: https://www.surveymonkey.com/

Date: Fri, 11 Apr 2014 17:33:00 -0700
To: (me and all the other SurveyMonkey users)
From: “SurveyMonkey” <surveymonkey@go.surveymonkey.com>
Subject: SurveyMonkey Heartbleed Security Update

Dear SurveyMonkey Customer,

On April 7, 2014, researchers disclosed a vulnerability in a technology called OpenSSL that powers encryption across much of the internet. The vulnerability is commonly known as the “OpenSSL Heartbleed Flaw.”

Our team took immediate action to secure SurveyMonkey’s infrastructure against this flaw. We closed any exposure that might have existed and wanted to let you know that SurveyMonkey is not vulnerable to the Heartbleed flaw.

Although we have no reason to believe that any part of our service has been improperly accessed due to this vulnerability, as a matter of best practice we would like to recommend that all our customers reset their passwords. To reset your password, visit My Account and change your password in the Login Details section of your Account Page.

Thank you for being a great customer. Happy surveying!
The SurveyMonkey Team


From: (me)
Sent: 4/11/2014 8:30 PM
To: support@surveymonkey.com
Subject: OpenSSL Heartbleed vuln

Your e-mail to users doesn’t actually say whether you were vulnerable to the Heartbleed exploit in the past — it only says you took immediate action and are not vulnerable now. Were you at any time running a vulnerable version of OpenSSL (1.0.1 through 1.0.1f) on any of your public-facing servers? Please give me a straight answer — I admin servers for a living, and I don’t suffer FUD gladly. Thanks,


From: support@surveymonkey.com
Date: 4/12/2014 12:06 AM
To: (me)
Subject: Re: OpenSSL Heartbleed vuln [ ref:_00D301HuKJ._50030Tmot8:ref ]

Hi ,

We promptly did a thorough assessment of our site to resolve any exposure that might have existed and are happy to let you know that SurveyMonkey is no longer at risk to the Heartbleed flaw. We have no reason to believe that any part of our service was improperly accessed due to any exposure that may have existed.

Due to our security policy, we are not able to disclose any specifics on our production infrastructure.  Your confidence is of the highest importance to us and we have taken pains to ensure that customer and survey data remain secure.

You can confirm this via an independent Heartbleed vulnerability test site, such as http://filippo.io/Heartbleed/#surveymonkey.com:443

If you have any additional questions about the SSL encrpytion used on our site, you can learn more about it in the following FAQ:http://help.surveymonkey.com/articles/en_US/kb/What-is-the-enhanced-security-option-SSL-encryption

You can also review our security policy here:https://www.surveymonkey.com/mp/policy/security/

All the best,

Product Support Specialist

From: (me)
To: support@surveymonkey.com
Date: 4/12/2014 12:37 AM
Subject: Re: OpenSSL Heartbleed vuln [ ref:_00D301HuKJ._50030Tmot8:ref ]

Really, Ian? Really? I understand that you can’t tell me any more than the marketing suits will allow you to tell me. But I think I can read between the lines of “SurveyMonkey is no longer at risk to the Heartbleed flaw.” Yeah, “…no longer…”

In other words, at some point SurveyMonkey was running the vulnerable version of OpenSSL on public facing servers.

I know you’re just doing your job, but would you please pass this up the line: that this customer, who is a 30-year veteran system administrator, thinks it’s absolutely slimy that SurveyMonkey won’t disclose such a major vulnerability to its users. At Georgia Tech, where I’m on a team that admins about 1000 Linux servers, if our department tried to hide something like this from the departments that are our customers, there would be hell to pay. And rightly so.

I’ll post your non-reply, along with this message, on Facebook, so that at least my friends know what kind of company SurveyMonkey is.

I’m sorry, Ian, that you personally are forced to be caught in the middle of this farce.

Kind regards to you, Ian

From: support@surveymonkey.com
To: (me)
Date: 4/12/2014  12:57 AM
Subject: Re: OpenSSL Heartbleed vuln [ ref:_00D301HuKJ._50030Tmot8:ref ]

Hi ,

I can certainly understand that you’re concerned and I will definitely send this over to my technical team for further review. However, since it is late on a Friday, you can most likely expect a response on Monday.

Thanks for your patience on this matter. Have a good rest of your weekend.

Warm regards,

Product Support Specialist