THE OMNI SHOW

Connect with the amazing community surrounding the Omni Group’s award-winning products.

RSS
26
Oct. 17, 2018, 6 a.m.
Rey Worthington, OmniGraffle Engineer

Rey Worthington — software developer, rock climber, cat enjoyer — talks about bringing Mojave Dark Mode support to OmniGraffle and OmniPlan.

Show Notes:

She also talks about how to make NSPredicateEditor look right on a sheet. And about growing up in the “Texas of California,” going to school at University of Pacific, and making her way to The Omni Group via meeting the folks at their Macworld Expo booth.

Then we talk about climbing, and about (most importantly, of course!) her cats, Spark and Blaze.

You can find Rey on Twitter @nothe.

Some other people, places, and things mentioned:

Transcript:

Brent Simmons: You're listening to The Omni Show. Get to know the people and stories behind The Omni Group's award-winning productivity apps for Mac and iOS. Music!

[MUSIC PLAYS]

Brent: I'm your host, Brent Simmons. In the studio with me today is Rey Worthington, OmniGraffle engineer. Say hello, Rey.

Rey Worthington: Hello, Rey.

Brent: So, Rey, you are, as I only just said, an OmniGraffle engineer. Lately you've been working in dark mode. Is that correct? Adding dark mode support to OmniGraffle?

Rey: It is. I told some of my teammates on Graffle that I was working on dark mode, and that I had been pegged to work on dark mode for OmniPlan as well, and Reid's response was “you're the sorceress of darkness.”

Brent: I love that. Yes.

Rey: So that's what I've kind of taken as my title for the moment.

Brent: In the studio with me today is the sorceress of darkness—

Rey: Yes!

Brent: OmniGraffle engineer. That's awesome. How did it go during dark mode with OmniGraffle? It's a pretty big app, a lot of UI, inspectors, side bars, content area, popovers.

Rey: It is… So there's that kind of ridiculous comment that Apple makes every once in a while about “it just works.”

Brent: Oh yeah. Right.

Rey: A decent amount of it just worked, which was nice. A lot of credit for that goes to previous work on vibrancy. Ryan did a lot of stuff on that in earlier releases.

Brent: Apple kind of prepares us in advance in a way. Sure.

Rey: Yeah, it's funny, because sometimes you kind of look back and you're like, "Oh that's what they were aiming for. I see." In this case, one of the vibrancy work that was introduced in, was it in Sierra and High Sierra?

Brent: Probably. Yosemite maybe.

Rey: Yeah, maybe. It all blurs together at some point. It made this a lot easier, because visual effect views were already a thing and materials were already a thing. There were definitely things that needed to be adjusted though. We definitely had places where we had the very exact shade of gray that we wanted for the background of this button. I started out like, "Okay, I'll preserve this very exact shade of gray. It will be great." No. Terrible idea.

Brent: Just didn't look good or…?

Rey: Well it wasn't even that it just didn't look good, but everything that we do custom has to be maintained. As I started working with Joel, who was kind of my dark mode partner in crime.

Brent: He's the sorcerer of dark mode.

Rey: Yes, indeed.

Brent: Of darkness, yeah.

Rey: It was like, "No, just use what the system has. Just use what the system has." I was like, "Oh thank goodness. That's so much easier." Because you can define colors in a way that you can set a dark mode alternative and a high contrast dark mode.

Brent: Oh for like custom colors?

Rey: Yeah.

Brent: Yeah.

Rey: But doing that with the sheer quantity of little fiddly “this color should be gray at 70%,” you know, and 30% opaque, or we could just use the background color for the control that is everywhere else on the system.

Brent: I guess there's also the high contrast modes too.

Rey: There is.

Brent: So it's really like four modes.

Rey: Yeah. There are currently four different appearance classes that Apple supports, but it's definitely written in such a way that there could be more. I don't know what that would be, but maybe there's more accessibility stuff. Maybe there's a color blind mode that will come up later or something.

Brent: Oh you know, that's a great point.

Rey: I'm trying pretty hard to make sure I don't write that kind of stuff out at this point, but it's definitely something to keep in mind.

Brent: Yeah.

Rey: The really interesting question with dark mode is, where do we let the system choose your colors and where do we let the user's preferences shine through. With OmniGraffle, we have a default canvas color, right, that's white, like when you make a new Graffle document, you have a white screen in front of you, and you can drop shapes and lines and everything and customize from there, but in a new document in dark mode, should that be black?

Brent: Yeah. Wow. That's a great question.

Rey: What color is the corkboard behind it, right? The void.

Brent: If you start a document in dark mode, and it's black by default, and you switch to light mode, should it switch?

Rey: Exactly.

Brent: Should it check if you changed a few colors?

Rey: What happens if you send it to a coworker and they're not in dark mode?

Brent: A lot of questions.

Rey: Right. Where we landed was that we should be predictable. We have templates and sample documents that are dark mode friendly, that are more dark colors and use that kind of thing, but whatever is set is what we should use.

Brent: Makes sense.

Rey: That's the rule that we used with Plan as well. If you make a new Plan document, you can choose the background color that's behind your Gantt view, behind your list of tasks, you know, lists of resources, but if you want to make it bright pink, more power to you. We're not going to change that if you switch your system.

Brent: Sure. You have your favorite pink, presumably.

Rey: Yeah. Some people do. It's interesting, because for testing, I don't have a really great eye for complementary colors, which is a real good reason why Joel and the rest of the design department are heroes. The colors that I tend to use to debug are bright pink and yellow and “developer red,” which is just this horrible eye-bleeding...

Brent: You know what? I'm weirdly a fan of developer red.

Rey: Right? There are certain colors that are programmed in, so you can do NSColor redColor, and it's like the reddest red you can red. There is those for all of them. Everything but ... Like they're all just offensive colors, which makes them really great to debug, because no designer is going to let anything go out with developer green in it. It's so horrible.

Brent: They're extreme colors. It's all the green and nothing else.

Rey: Right. Exactly.

Brent: No subtlety or anything to them. Yeah. I used to debug that way constantly, but now with the view debugger thing in Xcode, I resort to coloring things a little bit less often, but it's still useful.

Rey: Man, the view debugger is great. Unfortunately, when you're working on a beta OS with beta dev tools, you can't necessarily depend on it. I certainly had a couple of radars open on the view debugger over the course of Xcode 10's development. Part of that, it turns out, was our fault. I finally, finally figured out what was causing the problem on our end and have since resolved it, but for a while, there were certain views that I just could not view debug, which is really unfortunate, because that was one of the really handy things is you can look which appearance is being applied to any view, because it's got like a CSS style cascading inheritance thing going on. You can set certain views to only be aqua or be dark aqua, so that, for example, you don't override user's color choices.

Brent: Right.

Rey: Being able to tell, at a glance, are you doing what you think you're supposed to, or are you doing what I actually mean you to is really handy. Having that not work was painful.

Brent: How could we make it so that that wouldn't work? The answer might be difficult, I realize, [inaudible 00:07:25].

Rey: I'm just trying to decide how to explain it. You know? The problem was that we had a memory management issue that happened to be mismanaging a Core Animation layer.

Brent: Okay.

Rey: When the view debugger went to interact with the view, to split it apart, it was hitting a zombie layer, and so it exploded with glorious mushroom clouds. You know? Which I didn't think was a particularly graceful way to fail.

Brent: No.

Rey: But it could've been worse. Xcode didn't crash so—

Brent: Yay!

Rey: Yeah.

Brent: Yeah, beta tools, beta OS, yup. Yeah. It's always fun.

Rey: And I'm the worst Luddite, for a developer. If I can avoid working on beta tools, I really will, just until the very last moment, because when it doesn't work, I mean it's fine to test for Apple and file your radars, and be a responsible member of the community, but that ruins your day, right? Like—

Brent: Yeah. Right. Sure. Or it can certainly slow down your day an awful lot.

Rey: Exactly.

Brent: Right.

Rey: You know, it's like, "Well now I have to remember-"

Brent: We know Apple's trying to get their stuff done, but we're trying to get ours done.

Rey: Yeah, exactly. Like, well I mean this is great, and I can point to the 10 radars I filed today. It's like, "This is what I got done today." But in the end, it doesn't move our purposes forward.

Brent: Sure. Right. We don't, in the OmniGraffle release notes write, "Rey filed 10 radars. Oh yay! I'm going to buy OmniGraffle."

Rey: Right? So this whole being in the whole bleeding edge of the dev tool thing was kind of ... I mean, not new to me, but certainly, it's the first time I've done it in quite a while. It was a little shocking to file radars and get responses, like, within a week. It was like, [GASP] "They care!"

Brent: That's pretty good time.

Rey: I was a little shocked. Usually, if I get a response in the next year, I'm excited. I understand, because there's a lot of stuff that's just coming back. A lot of my radars are, "Guys, this looks funny and I don't like it." This was, "Guys, this control does not work in dark mode. You need to look at this." So there was a lot shorter of a feedback cycle, which was really cool. I was kind of excited about that. There were certain ones where it was like, "Hey, they fixed it! I don't have to work at a workaround. This is the best thing ever!"

Brent: Yeah.

Rey: “I wish that they would do this for me all the time!” Then there's a couple where I'm still dreaming that maybe they're going to fix things, the poor predicate editor and the sheets.

Brent: Wow. Yeah, I've heard something about ... NSPredicateEditor, For our listeners who don't know, it's whenever you're setting up like a filter or something, and you have rules, and you can add and subtract rules. It's probably the NSPredicateEditor, which is a control made by Apple. And it's notoriously odd.

Rey: It's definitely odd and it's very fussy. If you want to look at one, if you look at Smart Mailboxes in your Mail.app on Mac OS, that uses the predicate editor to set up the rules for the “these are the mails that should show up in this box.” It's a complex control, visually. And apparently, we're the special snowflake who put them on sheets rather than in a window itself.

Brent: Okay.

Rey: It revealed the fact that predicate editors don't quite have the right vibrancy settings when they're set on a—

Brent: Because sheets are translucent, I guess, right?

Rey: Yeah. There's actually a special material that is a sheet material. Apple does that to kind of make all their UI look consistent, which is fine, but it made all of the text stand out funny, and all the controls be the wrong color, because the background of the control thought it was one thing. The text and the sub controls, the drop downs, it thought it was another. So that was awkward.

Brent: So what did you do? Just use a separate window instead of the sheet, or just say, "Well, darn."

Rey: So ... And it's funny, because Ken came across the same problem. We fixed it in two different ways. I haven't gone in—

Brent: That's engineering for you.

Rey: I know, right? I haven't gone and changed my solution, although I might. What I ended up doing was walking the view hierarchy and slipping an NSEffectsView inside of the predicate editor's scroll view.

Brent: Okay. Is that NSVisualEffectView?

Rey: Yes! That guy.

Brent: Right.

Rey: And setting the material there, because inside the scroll view, if you do that, suddenly everything's like, "Oh! Oh. I'm on a sheet. Everything is fine." It just wasn't getting that sheet-ness message all the way through. Ken found that if you set the background color to clear, you get the same effect.

Brent: Oh.

Rey: I probably should go back out my fix, but—

Brent: It's a slightly smaller fix, I think, right?

Rey: Yeah, but I had done a little bit of surrounding work elsewhere to get it to behave nicely in non-dark mode related ways in the new OS. I'm afraid that if I do that, it will break it. Sometimes there's benefit in just like “it's working—”

Brent: It's working. Don't touch.

Rey: Don't touch. It will be fine.

Brent: Yup.

Rey: I mean it's all well documented, right? Like I've got my radar number and a comment in the code and the bug number. If five years later me comes along and it's like, "What is even going on here?" I left hints. It will be fun scavenger hunt.

Brent: That's cool. It could be somebody else even too, but there's hints.

Rey: That's kind of ... In a lot of ways, that's the job. Right?

Brent: Yeah, right. Yeah. So you did dark mode on Graffle. You were lent over to the OmniPlan team for a while to do dark mode. I imagine since you've done it once in a big app, on OmniPlan you can just zip through it in a day, right?

Rey: Certainly not a day. It took me ... I mean it wasn't just dark mode. I worked on dark mode, but also some general Mojave support bugs, and then helped them get their ... All of the version numbers are very confusing, but the current version that they're trying to get out the door shipped as well. There was a little bit of multitasking, but it was definitely not a day long task.

Brent: Were the solutions very much the same or very different between the two apps?

Rey: Some of them were the same. The most interesting, which actually, I covered a bunch of it with Graffle in general, was making sure that all of our image resources and the relevant color resources were in asset catalogs.

Brent: Okay.

Rey: Which are a cool trick and I like them. If only Apple would let us search in them, everything would be wonderful, but—

Brent: File a radar?

Rey: Jake has one open.

Brent: Okay. Somebody did.

Rey: I haven't duped it yet. So many hours in a day.

Brent: Yeah.

Rey: But that's the only challenging bit is if I need to go find an image, I have to know where I put it.

Brent: Ah right.

Rey: There's a little bit of a challenge of like, "Okay, I know what makes sense to me. How do I name all of these so it makes sense to everyone else?' Moving all of our images, all of our button images and the toolbar pictures and the oh this is the little round corner that we use to draw the edge of the void of time in like before the project starts in Plan, and all of these things, all had to be looked at, placed in the right spot, named properly. While I was there, I got rid of a bunch of no longer used resources, which was nice.

Brent: Always good.

Rey: And then I had to go back and forth with Joel about, "Okay, this one needs to get a dark mode version. This one, we can just use as a template."

Brent: The idea then behind asset catalogs, correct me if I'm wrong, for any given image, you can put in two or more.

Rey: Heh, “Two.”

Brent: Yeah, well I guess you have Retina—

Rey: Six or twelve.

Brent: And four different modes.

Rey: Yeah.

Brent: Yeah. It gets ... Right. But then it will pick—

Rey: It gets nasty.

Brent: But you use one name and then it will ... You say, "I want the one named whatever." And it will pick the right one—

Rey: Yeah.

Brent: For the context.

Rey: Exactly.

Brent: Alright.

Rey: Actually, it doesn't just hold images, which is cool. It also holds colors.

Brent: Okay.

Rey: Which are the two main things that we're using it for. It will pick the right resolution, so the 1x, 2x, 3x version of an image. Then you can also set a dark mode image. So now you've got six of them. If you need to be more clear, you can make a high contrast version of your icons.

Brent: Yeah.

Rey: Now you've got 12 of them, potentially.

Brent: Right. Then light mode high contrast.

Rey: Uh-huh, that's how you ended up with 12, because 6 twice.

Brent: Math!

Rey: Math!

Brent: I just write for the blog.

Rey: I know. Right?

Brent: I do the podcast. I don't do math.

Rey: Yeah. The beginning of it was just a lot of shuffling resources around. Then the next step was looking for where we had used very specific color, and we could move to a more general color, so we could go from NSColor blackColor to NSColor controlTextColor, and then let the system decide well that should be black. That should be white. That should be gray. And adjust at the appropriate times.

Brent: That's what you meant by Joel saying, "Just use what the system provides."

Rey: Exactly. They actually provide a good gamut of things. One of the cool things, actually, that they did was, in Mojave you can choose an accent color. Where in High Sierra and below, it's always been the blue, that Apple blue for your highlight selection, but also the little arrows on your popovers and things like that. In Mojave, you can adjust that color. It can be purple. It can be green. It can be yellow.

Brent: I've run with orange, actually, personally.

Rey: See, there you go. I switched to purple, because it was the least offensive one that I could find. I may not be able to pick matching colors, but I definitely have feelings when they're “wrong.”

Brent: Yeah.

Rey: They let us have access to that color as well, so we could do things like make our tabs on the inspectors in Graffle be highlighted in your control accent color—

Brent: Okay.

Rey: Rather than just in blue. Everything looks like it matches.

Brent: Oh nice.

Rey: It's more visually coherent, I guess, is the proper phrase. That was one of those like little things, where I was like, "Okay, it's not just that I got it back to looking right. It looks better now. Good job."

Brent: Yeah. Right on. As it should. Yeah. Now if I recall correctly, since I used to work Outliner, OmniPlan and Outliner share a bunch of code.

Rey: Yes, they do. Oh goodness!

Brent: Yes, and Outliner, at least the main outline content, is built with layers rather than views. If I remember right, you have to set a CGColor instead of an NSColor on layers. Would you run into this problem when dealing with OmniPlan?

Rey: Oh yes. Both Plan—

Brent: Layers ruin everything.

Rey: Okay, Layers are kind of cool. Let me defend Layers. They're kind of cool. They provide a lot of flexibility, but yeah, I really wish they didn't take CGColors. Because if they'd taken NSColors, I could've handed it the dynamic color that with the control text color. Here we go. It would've been Apple's problem to switch it at the right time.

Brent: Sure.

Rey: Since it takes a CGColor, those are not set up to be flexible in the same way.

Brent: Right.

Rey: Instead, I had to pay attention to when things changed and update those layers' colors, which I lucked out somewhat, because a lot of that turned out to be user color content. All we had to do was say—

Brent: So that was just fine.

Rey: Just don't touch it. It's fine. But there were a couple of little corners, most particularly in Plan's dashboard view, where we did want to change the color, because even though we're using the same class, we were showing content that was more general and shared over multiple documents. There was not a good way to decide what the user would've wanted there.

Brent: Okay.

Rey: So then I had these layers that sometimes I wanted to be dynamic with the system, and sometimes I didn't. It needed to respond to the system changes sometimes, but other times, it needed to obey the user. The difference was which window is it in. That was particularly challenging, because we had pulled some shenanigans many a year in the past, to avoid an Apple bug. We were tricking the view into thinking that a layer that we had created and handed to it, was a layer that it had created and held on to for itself. That, plus the fact that there are only certain times when the OS's concept of what its current appearance is can be trusted, made some interesting timing problems.

Brent: Hmm.

Rey: For all but two or three cases, I was able to go along with what Apple says, "This is how I expect you to do this." But there were a couple of places where we had to get a bigger hammer.

Brent: Right.

Rey: Which is frustrating sometimes, but it all looks nice now.

Brent: Yeah, good. I've certainly written methods with names like, “apply the big hammer now.”

Rey: Right. When OmniGraffle tweeted about releasing its dark mode version, I copied the tweet and I sent it to my family group chat. My stepmom goes, "I wish I understood what you did." I kind of laughed and I took a screenshot of OmniGraffle in light mode. I said, "It used to look like this. Now it looks like the screenshot in the tweet." She goes, "Oh! It looks better."

Brent: Nice.

Rey: I'm like, "Good enough."

Brent: Your daughter is the sorceress of darkness. I understand!

Rey: Yeah, right? She's like, "It's fine. The other one's giving me grandkids, so."

Brent: Right. Yeah. Both are good.

Rey: Yeah, you know? Whichever.

Brent: So, life before Omni. You're from California, as I understand, like middle-ish?

Rey: Yeah, so, I often describe home as the Texas of California, which—

Brent: Cowboy hats and trucks and everything?

Rey: Yep. I went to a high school that had a magnet program for agricultural science.

Brent: Oh okay.

Rey: There were definitely rifle racks and cowboy hats and chew circles in jean pockets, and the whole nine yards there. It's funny, every time I go back, I forget how very conservative and rural it is. Then I drive through, and I'm like, "Oh yeah. I remember this. I'm ready to go home now." But yeah, I grew up in Tracy, which is—

Brent: Oh Tracy, of course.

Rey: Of course.

Brent: Everyone knows Tracy.

Rey: If I'm talking to a Californian, I say, "If you're in the Bay Area and you're heading to camp out in the Sierras, it's just after the windmills." Then everybody lights up, because they know exactly what I'm talking about.

Brent: They know the windmills.

Rey: Right. “Oh it's where we stop for In-N-Out. Of course.” If I'm talking to people who are not Californians, I generally tend to tell them it's east of San Francisco and South of Sacramento.

Brent: Okay.

Rey: If you draw lines, it's just smack dab in the middle of the state. I went to school about 20 minutes, 30 minutes up the freeway from there.

Brent: Okay.

Rey: In Stockton, which no longer is the murder capital of the US, but was.

Brent: Wow. School was that bad that—

Rey: Oh yeah.

Brent: ... it just made everyone murderous.

Rey: No, the schools actually ... It's a relatively small private school, the University of the Pacific.

Brent: Okay.

Rey: The school itself wasn't that bad. It was kind of trying to be West Coast Ivy League, which was weird when you kind of looked at the wealth distribution as you got off campus.

Brent: Oh sure.

Rey: Oh here we go.

Brent: Yeah.

Rey: But we made it work and we got out after our four years. I can't say that either my husband or I terribly miss it.

Brent: So, a computer science degree, I take it?

Rey: Yeah. I started as a mechanical engineering major on the five year plan, as all engineering majors are.

Brent: Naturally. It's just better built.

Rey: I wouldn't say that, but it turns out you need time to shove all that math and science into people's heads. I was almost two years through my degree. Most of it general education, was starting to get into the more specialized things, taking my thermodynamics classes and my mechanics and materials classes. I realized that I was bored, so, so bored. It wasn't that engineering was bad or that mechanical engineering was terrible or anything. It was not—

Brent: It wasn't for you.

Rey: It wasn't lighting up those "this is what I really feel important doing" brain centers. At the time, one of those GE classes was a coding class. We're talking C on the command line, on a Solaris Sun Ray.

Brent: If it was good enough for Abraham Lincoln, it's good enough for us.

Rey: Yeah. That was kind of fascinating, especially because John did start as a CS major. I was watching him work his way through his intro classes.

Brent: We'll identify John as your husband.

Rey: Indeed. At the time, he was just the boyfriend, but he got a promotion. And so I knew that there was stuff that I could continue on this like half a semester's worth of C programs on the command line that looked a lot more interesting. I escaped the engineering school, and was promptly—

Brent: I love that C on the command line just seems like the shiny fun thing in comparison to what you were doing, because to most people, they'd be like, "Oh god no. Don't even make me." Even most programmers.

Rey: You know, while I was making this decision, I was doing a group project in my material science class that involved heating aluminum, and then checking its hardness. It predefined intervals of time. I was literally setting an alarm clock for 3:00 AM to go to a lab and put on heatproof gloves and take a one by one square of aluminum out of an oven so I could poke it with something and see how hard it was. Let me tell you, C on the command line seemed a lot cooler than that.

Brent: Yeah, I see the appeal. Sure.

Rey: Hey. Hey, aluminum is important.

Brent: I know. I know. But 3:00 AM aluminum tapping, it does not seem like—

Rey: Was not my jam.

Brent: Yeah. Right. How'd you end up meeting the Omni folk and ended up here?

Rey: Well so I finished my degree, and thank goodness for those two years of engineering prep, mostly transferring over to CS requirements and GE requirements, so I still made it out in four years. Thank goodness.

Brent: Nice.

Rey: I was schlepping along in a horrible, horrible job, doing database migration and tech support for a tiny law firm. John and I had gone to Macworld.

Brent: Oh yeah.

Rey: This had to have been 2005. The Omni booth, everybody was in lab coats and goggles. I'm not going to say we weren't shopping for jobs, although I don't think it was our primary reason for going. There's something cool about going to trade shows and just kind of looking to see what's there.

Brent: Yeah.

Rey: Especially, you know, they had a little games corner at the time. We're nerds, so you know, "Ooh, the new Civ is coming," is always going to get me excited. I met Ken and I was like, "Oh yeah, I just graduated." He was like, "We're hiring. You should check it out." So I did. I sent him my application and my resume and kind of freaked out a little bit. I got a call back. I was like, "Oh my god."

Brent: Wow. Yeah.

Rey: Like, "I know these people. They write cool software. I've used it, and they want to talk to me? And it won't be working for lawyers?"

Brent: Yay.

Rey: They flew me up here to Seattle to talk to them and interview. It was the first time I had ever been on a plane.

Brent: Wow.

Rey: My mom was kind of phobic about it, so I had never flown.

Brent: Oh okay. She never took you anywhere.

Rey: We went places; we just went in the car. I'm like off for this "big deal" interview. I have no idea what to expect, because the job I had, I had gotten pretty much through nepotism. I'm flying, and I'm all by myself in a new city. It was a huge experience.

Brent: Yeah. You'd never flown into an airport before, because you'd never flown.

Rey: Right. I flew out of Oakland, which is—

Brent: I've not been to the Oakland airport.

Rey: It's not great, but it could be worse. They're doing construction on it right now, so don't go now.

Brent: I go to Philly a lot. It's not pleasant.

Rey: I came into Sea-Tac and it was just this like maze. I had no idea what's going on.

Brent: Right. Right.

Rey: There's kind of like that haze that I went through my entire day. It was like I'm someplace new. I don't know anybody, but I'm going to do the best I can. I mean, I got hired, so it can't have been too bad.

Brent: Congratulations, 13 years later or whatever.

Rey: Hooray!

Brent: Yeah.

Rey: I packed my stuff in a truck and headed up here. I told my family, "Hey, I'm moving two states away, so see ya." Which they mostly took well.

Brent: Yeah.

Rey: I've been up here ever since. John moved up about six to eight months after I did. He was a semester behind me in school, so he had to hang around in Stockton.

Brent: He's a little slow.

Rey: Oh now. Hey now.

Brent: I'm totally teasing. Let the record show that John's my friend, and he's intelligent.

Rey: True facts. It was weird living in a state by yourself when you didn't know anybody.

Brent: Yeah. Right?

Rey: There was definitely some comfort book shopping for a while. The office was right behind ... Oh my gosh. What's it called? The little mall place where the Apple store is.

Brent: University Village.

Rey: Yeah, so the office at the time was behind University Village. They had the only Barnes & Noble that I had any idea where it was. And so I would work my day and then go shop for cheap paperbacks.

Brent: Somehow I imagine Omni back in those days just paying everyone in singles at the end of the day. You'd go off and buy a paperback book and a beer and call it a night. I don't know.

Rey: Maybe not quite like that.

Brent: Alright.

Rey: It was interesting being relatively young coming to Omni. They hadn't hired an engineer in quite a few years at that point.

Brent: Okay.

Rey: I think that the next senior engineer to me is Andrew, and he had been there for over five years.

Brent: Oh wow. Yeah. The dawn of time, at least.

Rey: Yeah, of course. Maybe even before that.

Brent: I'm pretty sure.

Rey: There was kind of a little bit of this like, “oh, what a cute baby!” One of my friends who used to work here, doesn't anymore, really likes laughing because they brought me to a bar for the first time. There's not much in the way of casual drinking establishments in the valley.

Brent: Right.

Rey: I wasn't really like, "Let's go to the card room." It just wasn't something I had done.

Brent: Wow. First you fly, then you go to a bar.

Rey: I know! It was like I was growing up in front of everyone's eyes.

Brent: It's amazing to me that you got all the way through college without—

Rey: I'm not saying that no liquor happened, but Safeway's a godsend.

Brent: Right. So what do you do when you're not here wrestling with the colors and the predicate editors and such?

Rey: It's funny, because I'v gotten into a lot of things lately. It's just ... My interests have been diversifying a lot lately. For the last year, I've been trying to spend two or three nights a week at the climbing gym, scaling walls, falling off of things, trying hard not to be too injured about it.

Brent: Okay. I assume there are some safety things involved.

Rey: There are. Yes.

Brent: Otherwise, Omni's not going to like this at all.

Rey: No. The people that I climb with are big into “we do things right and we do things safe.” We're not just throwing ourselves at a wall and like falling down into a little crash pad.

Brent: Okay.

Rey: Thankfully. It's been interesting because so I climb with Tom and I climb with Snack. To give you an idea, Tom is what? Six and half feet tall?

Brent: Yeah.

Rey: This tall, lanky guy.

Brent: He can reach the next thing [inaudible 00:31:51]—

Rey: Yeah, and I'm 5'2" on a good day.

Brent: Right.

Rey: Right. And then my friend Christina's slightly taller than me, but weighs probably half as much and is twice as bendy. It's a problem solving game.

Brent: Okay.

Rey: Right? And everybody solves it differently, because everybody has that different body to solve the problem with. If I'm having trouble with something, sometimes Tom will try to pretend that he's five foot two to help.

Brent: Okay.

Rey: Like to make suggestions. I have seen this man climb up 15, 20 feet up a wall, and then like squat and pull his elbows in to try and see how much he would reach if he were me. It's not often helpful, but it is always hilarious.

Brent: Always hilarious, yeah.

Rey: It's been a good way to be competitive with myself, without being competitive with other people, which is important for me in exercise. Because if I'm just running, times aren't good enough for me to keep engaged, especially... Jim runs half marathons and things. I'm like I would be so bored. I cannot just do this thing for three hours, where it's the same thing over and over. At least when I'm climbing, it's a different problem. Every move is a different challenge. The interesting thing is kind of, if you're wrong, there are hopefully non-injurious, but there are consequences. You either climb yourself into a corner that you can't make the next move from, or you fall off and are caught by a rope. Everything is fine and safe.

Brent: Okay. Alright.

Rey: But it makes it when you solve it right, it's this huge accomplishment. You're like, I'm at the top of this wall. I have my fingers over the top. I have yelled my commands to let my belayer know to grab me. Now I can do the celebration dance while I get lowered down. It's all very dignified.

Brent: Yes, I'm sure. At home, you got dogs or cats?

Rey: We have two cats. We adopted the cats from a shelter. One is a tiny tuxedo cat. He's like maybe eight pounds. He has a white stripe down the middle of his forehead and his nose, so his name came from the shelter as Blaze.

Brent: You didn't name him Blaze to be clear. It came from the shelter.

Rey: I did not name him Blaze. He came from the shelter with the name Blaze. The other one, he is three times as big. He is just this total porker of a cat. He has these little black scallops across the edge of his nose, which apparently, when he was a kitten, were individual dots, and so they named him Speckles. John kept slipping Speckles to be Sparkles. He put his foot down. He's like, "No, we cannot have a pet named Sparkles. I can't do it."

Brent: It's a great name for a cat.

Rey: So we shortened Sparkles to Spark.

Brent: Okay. So Spark and Blaze.

Rey: So Spark and Blaze. One of my friends got, like five or six years later after we've adopted these cats, they've been in our lives for eons, goes, "Did you name your cats stoner names?" I'm like, "No, but now that you mention it... oops." Yeah, they have us well trained. Their nightly routines. At 11:00 o'clock, I have to make sure the bedroom door is open, so that Spark can get his cuddles, and then he lays and supervises reading, until John comes to bed.

Brent: Sure.

Rey: Blaze has his particular position on the pillow, where it is appropriate to get pets at night. After that, you should leave him alone.

Brent: They sound like very good cats.

Rey: They are... quality felines.

Brent: QFs.

Rey: Indeed.

Brent: Well on that note, I will say, thanks, Rey. How can people find you on the web?

Rey: You can find me on the web most easily on Twitter, which is @nothe.

Brent: Where does that come from?

Rey: World of Warcraft.

Brent: Alright.

Rey: I mentioned I was a nerd.

Brent: Oh yeah, that's quite right. You're not the first, by the way, on the show.

Rey: I always feel bad when people follow me from tech stuff, because I don't talk about coding on my Twitter. I talk about the cats and I talk about what I'm crafting that day. I'm doing Inktober right now, so there's drawings up there. I retweet angry political things. But if you want tech stuff, I'm not your person. If you want slice of life stuff, come along for the ride.

Brent: You've got many slices.

Rey: Oh yes.

Brent: I'd also like to thank our intrepid producer, Mark Boszko. [deep voice] Say hello, Mark.

Mark Boszko: Hello, Mark. Oh sorry. [deep voice] Hello, Mark.

Rey: Whoa. Suddenly, I feel threatened.

Brent: And especially, I want to thank you for listening. Thank you. Music.

[MUSIC PLAYS]