302: Ruby Autoformatter! with Penelope Phippen


You're listening to the ruby on rails. podcast on the five by five network. And you're listening to episode three. Oh two and I'm your host Britney Martin Penelope fit the Knicks Ruby format was previously a Li maintained her of the spectacular framework. She's been writing Ruby for just about a decade and still remembers one eight six. She said that she can't hug every cat. Welcome to the show penelope. Hi everyone everyone very happy to be here wonderful so glad to have you been all. What is your developer? Origin Story That's a great question I guess I got started when I was a kid my birth. My parents have computer or computer adjacent jobs and I was sort of always fascinated so I started programming when I was I was very career young. I think I wrote my first Java program when I was age. Twelve and one of the things does mean is I've been using eclipse for more than half of my life which is always Funny to me but really it came from a instinct to sort of Tanka to really understand how computers walked. And that's that's sort of carrying me through My entire life really like what are the things is that I find myself like messing around with software in my hubby time. As much as you when I'm walking and that has been a really consistent throughout my life And so you're like where I am today. Like is really a product of having been fascinated by computers in my entire life and having sort of manipulated and what with them for a really really long time. I think you're so lucky because I got introduced to computers when I was in high school. My parents encouraged me to take computer science classes and so I felt it was lucky Dietz. Who get that experience early on but for you to know so early on that you enjoyed it and wanted to make a career of it is just something that I feel is still kind of rare in our industry free? Yeah it's I I don't know I find that most of the people I talk to you. like found owned computer science like much much later in their life so like even high school is sort of like relatively early rights are like I know some folks who didn't really look at programming at all until like the second or third. He is of the undergraduate degrees even like later in life career switched switched from a different profession through boot Camp Lasalle teaching or whatever it might be And so yeah like I like. Excuse me I in a sense. Consider myself to be very lucky that I like sort of have developed technical superpowers superpower's just from having been able to do it from a very very early age. That's great well. Our SPEC is a very love framework in the Ruby Community of course and so I would absolutely love to hear how you got involved. Yeah that's A. That's a great question. I'm so I got involved through aspect actually while I was studying full my computer. Science degree Sawyer Iowa's like alongside my degree like teaching myself ruby learning how to build rails applications because Like the community. Not at that time was sort of like just beginning to really exploited out onto the internet like I remember being Sawyer so fascinated by all of the conference Tokes That will sort of coming out of the community. And like the learning and teaching and sort of like niceness that was associated with that And so one day while I was working on rails APP and writing tests with us back doc I encountered a bug and I like looked into the source code of us back and what how how to fix it and sent a poor request request but along the way I was finding lots and lots of places in the SPEC Code base that could like we're meetable to factoring And so I spent maybe like a good six to eight weeks of my life just as a college student. I had loads of free time. I'm like just refer factoring The tunnels of aspect and I ended up sending them so many. Poor quests that essentially they will like. Hey we're going to give you a commitment because these greats and we would like we would like for you to keep doing this and stop bugging us like please please just merge these yourself And so I ended up basically just joining the cool team through like share application an off Wanting to make it better. So where did you gain that experience that you were able to look at the arse back out source code and be able to pinpoint pinpoint the possible re factories that you could do. Did you gain that from school or did you have other open source. Experience Neither I oh this is this is like this is a somewhat difficult question to you on Sir. But essentially essentially just sort of like an aesthetic for wanting to remove jeff location or things that were proving hot to change And so like actually back back at that point in time aspect had Code climate mounted in all of Repos and basically just sort of took it upon myself to just stop moving the code climate grades of the entire base like upwards towards those as really sort of using the insights code climate was providing To find those places and then sort of just thinking about house collapse things together or create new abstractions or whatever it might be right and like at the time Really Oh code. Climate was doing thing was running the flag and flame gems like rubies solo spaces and those just spot sort of like joop located Covered all oil like curd. That is extremely complex so like I was like. Oh yeah this. Totally is a three hundred line function with Grizzly two nested. If statements we can probably make that like like less nested and shorter rate and so like really it was it was an application of stuff I had being directly taught Through those aforementioned sort of like Ruby conference talks I had been watching so there was this like very sort of tight. feedback cycle between the things. I was learning and getting to apply them That was like a very unique experience. I think that was really interesting. I think that's great because even though that happened to you in college I mean we're GonNa get into Ruby format. It just seems to be a pattern throughout your career so aside from the sixty eight weeks that you contributed during your university time What contributions are you most proud of with our SPEC so basically I think perhaps the most interesting thing that happened to us? Back in my tenure I guess there are two things so one is when I joined the aspect team aspect was still on major Russian to And now it's on major three and I did a lot of the work along with the other team members at the time to actually like like deliver that and so I was sort of on the front lines of implementing some of the new keywords and doing method clean Alpina. Actually a big part of it was just deprecating code in a way that didn't break people's test suites which is what we use. The major version for so like aspect has a very strict adherence to semantic brushing and gut. Like when it is people's test suites you like literally cannot break them right like like breaking someone's suite would be like a sort of horrifying thing for aspect to do and so part of it. Frankly just what that people couldn't really detect to make sure that moving from two to three was a seamless as possible in terms. uh-huh of tangible stuff. People have actually probably seen I managed the sort of like rails compatibility of aspect through reversion five and up to version six point zero including implement implementing the compatibility for rail system test which replaced placed feature specs. Basically wholesale and like the system tasks are just like way better than feature specs F. O. were And so like I'm really proud of that one because it sort of took a standardized piece of work that was done by the rails team and specifically I lean you should tell and Sort of integrated with AAs back and that was a lot of fun because like it was done very collaboratively. It wasn't it just sort of me. In a lab that one was like reaching out to folks who have applications like test prototypes and see what upgrading onto those might look like and whether or not there are bugs and that sort of thing but yeah so like broadly. Speaking most of my tenure on our SPEC was either a fixing bugs in aspect all SPEC mocks or maintaining aspect rails through Russians five and up while so I have to ask as is a major contributor and maintain her of our SPEC just a very highly used library. What was that like in terms of community interaction Shannon? I imagine you've got pinged quite dead or got a lot of requests for help. Yeah so I mean it's like some some of it was fairly standard maintain stuff right so like bugs come in you. Triage them that sort of thing. Then folks filing pull requests AH reviewing the poll requests that sort of thing. I always tried to ensure that I was being really really nice to people when they were submitting Poor quests even if they were not like fully formed or they needed some additional work like really trying to help them to get stuff across the line and then like the the big one that is sort of like drove towards the end of my tenure on the core team was developing a triage process for all SPEC rails bugs so do a big problem with Osprey rails fusses the rest of the object framework. Is that. It's so deeply entangled into the USA application and because it needs to Rails needs to talk to all of your like models and control as an all of the stuff you've written and then like up until Aspect version for which I don't believe has been released yet on the rail side. We maintain compatibility from rails. Three point zero and up all all the way back to those really really ancient versions and so you're like a taking in bug reports from people quiet very very precise information that was like pretty hard to capture in just what most people would think of as a standard good book report and so just asking people for a little more information information in a little bit more of a structured way. Well thank you so much for your contributions. We're GONNA take a quick segue because I'm going to confess to you that you are one of my absolute favorite conference speakers and I know you've spoken at quite a few conferences. Do you have a favorite talk that you've done. Oh yes by far in a way. I'm the favourite talk of mine the I have given was entitled. What is and that's a talk? I gave before four. I transitioned so folks googling it. We'll have to look it up in my name but basically in the Toke. I sort like gave a from Ruby to how assembly executes in like a modern peseta in forty-five minutes really breaking it down in a simple clear and understandable way through very heavy use of diagrams and very little text in how modern computer actually executes assembly which was like really really enjoyable to give as just like I'm going to break down a bunch of complex technical detail in a way that is understandable to an average Ruby Ruby developer and the response from it was fantastic? Did it require a lot of research or is this stuff that you had already dug into. You already mentioned that you'd like to do these kinds of things things for fun so it wasn't something that you really had to dig into I. Yeah so the the answer. That question is no but only because it was basically the output put off one of my college classes like translated into a conference talk. So you're in college. I took a advanced computer architecture. The costs which went Actually a little bit beyond where I go in the talk And I went into basically like the first sort of like assignment. Of course which is building an assembly language and building a very very simple purser so like I have in my head just ambient only like the design of how those things work Because it's something I study in College College and so like I like it's convenient in the sense that I was just able to take like one third of a fourth year computer science science class and Tun into a forty five minute talk. That's fantastic. So how did you get involved in Ruby Central. I gave a Torque work at invite the I guess the easiest way to say this is I have spoken every Ruby Hav and every rails since twenty thirteen A pot from one where I was sick and that justin cells filled in for the talk I was supposed to give And basically eventually if you keep speaking over and and over again we invite folks to join the Program Committee for Conferences. So I did the Program Committee I think in Twenty fifteen and the and from that like I just sort of kept re. I really really enjoyed it and so I kept doing those. And then eventually Elliott this year Mossy who is one of the other directors of Ruby central asked me if I would like to also be director of Ruby Central I said yes. And that's how we got to where we are today So really it's just consistently showing up and then being interested in sort sort of doing the work like the reason I'm doing it. Is I really deeply care about the future of the Ruby community and so like like I want to be one hand on the wheel like steering the direction of I love that some put you on the spot for a second because common string string throughout this podcast is me encouraging listeners. To go out and apply to speak at different conferences so as someone who has read so many. CFP's for both rails is confident Rubicon. Is there any advice that you can give to those listeners. I have I have tons of really specific tactical tactical advice That I could give enumerated bullet points about what to include what not to include but sort of at a higher level. The biggest the biggest mistake I see in. CFP's is not the intended content of the talk. Usually the intended content of the talk is a perfect fit for conferences inferences. It's that the person writing the CFP can put themselves in the shoes of the audience and so it's very hard for me. As a reviewer reviewer to understand what the audience will get out of that talk as opposed to just what the person will talk about and that's like a fairly the subtle distinction so perhaps to make it clear. It's the difference really between showing that you sort of like know your content versus and why someone who is attending recon or rails should about that content and we see perfectly well written perfectly structured talks emissions. That don't tell me why it's a fit for the program why it makes sense for an audience member at Rubicon And so almost all the proposals I see that don't end up making it into the conference. Don't make it for that reason. One of the the things I should consider when they're submitting to recall is that more than forty percent of everyone who attends its first conference they've ever attended and and they usually like less than a year into that developed careers Certainly less than two and so many folks don't appreciate just how wide the spectrum of skill levels is. It's okay to give an expert level talk it absolutely is but we can't Except sixty expert-level talks right. We have to draw a line somewhere And so with reviewing the CFP CFP and not just reviewing right. We also do talk selection like we're not just looking at the individual schools. You may actually have by you perfectly. Well rated talk that we just con- fit into the program because the level is wrong because there's no way for us to make it fit it against the background of the folks who will be in the room and so like the other. I guess piece of Advice I would have for folks especially new of folks who get a a single rejection from a ruby central conference is don't take it as like a no forever. It's more like not right now. You know I love that and basically what happened for me is I applied to rails comfort. Three years didn't get in then. I got in then. I applied to rails confidant. Didn't get in but then I applied applied to Rubicon for the first time and got in. So you just never know but for me. I've always gone to these conference. Applying with at least three talks because inevitably one might spark an interest. And what's interesting too is that I applied to rails. Conflict three talks. Didn't get in but you don't assume that those talks are not good. And so then you turn turnaround and maybe go to the regional conferences or to your local meet up with the same content and see if that maybe strikes some gold there and possibly after the conference if someone is so kind to give you more feedback than that's possible as well. Yes so I will say going a little bit white other than you know the universe I control which is a Review from rails comp. I highly recommend Folks who are stopping find a local meet up and speak that or find a regional conference and and speak now one of the things. I have observed that I'm personally really really sad about is the sort of slow decline the regional Ruby Conference. It feels like there are many fewer of them today than that. Were three or four years ago I remember speaking something like Mike. twenty-six conferences in two thousand fifteen which was a lot but so like It's also like one of the things I puzzled. Sort of see as a mission for myself in Ruby central is working with the community to reestablish some regional. We'll conferences because right. Now if only get one congress again that coming to rubicon or rails comp and that's sort of crushing the space for like those local Conferences which I'll be honest with you. That's how I got my start. So the first Recoveri- I spoke at was ruby nation in in the DC metro area. And I cannot tell you how excited I was to be able to do that and like those those on like that conference as far as I'm aware that doesn't exist anymore. The regional in York doesn't exist anymore. There's not one in San Francisco. I think the one in Chicago Talgo is shutdown so like whip beginning to see like a trend of these conferences. Going away and it kind of makes me really sad. I agree with you. And that's wonderful advice while I am super super eager to get into Ruby format but we are going to take a quick break for our sponsor this episode of the five by five ruby on rails. PODCAST is brought to you by mere replacement. Hi this is Brian Mariani founder of Muir replacement the Ruby on rails focused recruiting firm. I was Brittany's guest on this podcast a few months ago in love hearing from so many of you following that appearance so I'm back to say hi because the New Year is often time developers start looking for new change or a fresh fresh start in that can often be a job change. So if you're open connecting I'd be happy to share the inside scoop on how the rails job market is shaping up for twenty twenty spoiler alert. It's looking very strong. And we have a lot of remote roles is well more than ever actually and I'm super excited about our role so if that fits your lifestyle. Well we we should definitely chat in. What even if you're not looking for a job right now or it's not a good time no worries at all? I'd still love to connect in learn more about you. So when the time is right in the Right Company does cross my desk we can send it your way in the future of always said you. Know recruiting is all about long term relationships and not pressuring people. So if you'd like to start a new conversation or rekindle an old one. I'd be thrilled to chat. Just shoot me an email at Brian at mirror. Placement Dot Com and we can set something. Hang up thanks for listening and happy holidays. Thank you to knee replacement for sponsoring the show so let's get into Ruby movie format first of all. What is it yeah? So Ruby. Format is essentially a re Oto for matter so You you input into it. A Ruby source code file and IT spits out a semantically equivalent Ruby source code file that has just been in reformatted to have a completely consistent. Layout so you can't miscellany data structures you have to drop like arrays onto multiple notable lines in a consistent way all of that stuff is decided by like an uncontrollable algorithm and not by a human brain late. So I'd I'd love to know is how did go influence the four matter. I guess to get to this. We need to talk a little bit about what I did. Side of the console swelled so I was working at digital ocean and digital like sort of has this hybrid rails monolith go micro services architecture. That's like actually very he. Cool these days and what super well and so I got the opportunities right like a pretty substantial amount of coat while I was working at ocean. And if you work on you will find that. That community is obsessed with developed tooling They have a tool could go format no matter which is actually pronounced go go. FM T- which does the same thing as reformat takes go code? Outputs formatted files but they also have like a tooling automatically manage imports. which is the same thing as requires in Ruby and a tool to automatically lint your for things may be sub optimal ways to write stuff and like naming conventions like they have a tool that will literally fail if you forget to capitalize acronyms Arnims in the correct way and so on and so on right? That community is obsessed with tooling and walking with source. Code incredibly bleep pleasant. It's like very very nice to actually build go programs. Because they've invested so much time in developing tooling and I sort live looked to the ruby walled and was like we look to the re- weld and was like we've really need something like this now. I'd actually been sort of threatening to build a ruby full matter for. I'll explain to you. Why she's that would for us and again just the second fill like many years before I started before I even actually ever programmed a line of go and it basically came out of sort of like a frustration of walking with Ruben cop in that Like there's just no way to quickly execute rebirth up in like a save file reload text kind of loop it takes too long to execute and and I wanna be clear this is not a dunk on cop like rubel copies doing other things with that time that I actually useful so like that was a gap in the space. Ace and I've wanted to invent this tool for really long time. Will that all makes a lot of sense. And I'm really excited that you're building this for our our community so listeners that you have piqued their interest how can they get started with Ruby format. Yeah so the best advice I can give them is. Don't It's it's not in any sense of production ready today. it does not Well okay so I guess talk about this. We need to talk about how I've been implementing it so like I basically implemented a functional version of reformat end to end in the ruby programming language edge. And it wasn't fast enough. Because Ruby is known for many things but like share execution speed is not one of them so I started rewriting chunks chunks of reformat in rust in order to get more performance and basically the state. It's in today a is that it does not actually valid reprograms in all cases And so like the idea of someone who is not willing to deal with experimental grade nonsense genuinely scabs me like people building edit plug ins for reform and like you can do that but like this will break all of your code today and so the answer is like staw the hub repository and I will show very loudly when it's ready for testing which I hope to get done soon but like walking reprisals code is actually really complicated and difficult and so. I'm not putting any time guarantee guarantees on that. Oh this is shocking developer. Not winning. I don't know I think that's very smart and I think that's great that you're basically going to have a call to action to the community to help you test it. I'm sure we ruby weekly and everyone will be shouting from the rooftops. Once it gets to that point I hope so you mentioned your time digital ocean and I know you have a lot of experience being on call and you have a lot of content out there about it so for developers Chrissy were new to being on an on call rotation. What is the one piece of advice that you can offer? And you're in the middle of an incident. The best thing you can do is is a massively massively over communicate so you I have managed like very very complicated like like multi multi system outages or data losses that required coordination of like say a half dozen dozen engineers rate spanning multiple engineering teams bias. I tend to see is people only communicating when n- state has changed. But the problem with that is it. Leaves you in a place where you don't know if the operator Rita is still there and that you may well find that if they were communicating someone may be able to jump in and help so. I have a general rule when I'm running an incident that I haven't heard something from someone who is actively involved in the last five minutes I will directly ping them To ask them what state is even if nothing has changed and that's not to try and pressure them to move foster that what is purely so that I as someone running or involved in the incident understand what everyone is walking on a real time sense because that confusing confusing and it generally in my experience has led to foster resolution in Tom's like organizational stuff if your entering an uncle rotation for the first time actively seek mentorship backups reverse shadowing like an insurance organization is set is going to set you up to succeed not set you up to fail. I'm one of the worst things that can possibly happen is putting someone who's new to being on coal or like near like the kind of engineering you're doing into an uncle rotation without a safety eighteen to fall back on and so you're like this is probably not so much for the new on Koa in your audience as it is for on like manages data leadership as well sort of clary on call to be like. Hey make sure your new new folks have as much support as possible because incidents a terrible and like anything you can do to help them. Succeed is really important. And they won't know what that is because they've probably never been in it before. Aw I guess on the flip side to the folks who are new to it. It's okay to not know what to do like Because when that pager goes off for the very the first time in your life you and the puzzle and hands off to you like. Here's what seems to be wrong. It was going to take you a little while to like get oriented oriented and that's okay like a bunch of being on on-call frankly is developing really good instincts over the systems you walk on and even really experienced on call is when they switched jobs. We'll switch teams. I will have a ramp up time right and so like if I were to parachute onto the new engineering team. I couldn't just immediately be on call for systems right. I could do it like foster than someone who's never been on in Col- before but like putting me into that rotation on day one and expecting me to be able to triage the most severe incidence just isn't going to happen. I don't know the golden metrics. I don't know what normal abnormal looks like. I don't know whether if we don't have enough signal I don't know who to talk to you. WHO The dependencies? He's like a bunch of stuff. You've just won't right and that's all okay right like it's treated as a learning experience and I guess. The other thing is hunt for like a blameless postmortem culture tech has gotten pretty good at this but it's still not perfect perfect and anything you can do to be like. Hey we're looking for people causes hair. Not like systems causes is really really powerful. That's excellent advice. I I really appreciate you sharing it. I especially resonate with the blameless part so this is a question that I plan on asking quite a lot this year on the podcasts so you who've invested so much into the community what are your thoughts on its overall future. Oh I have. I have a ton of thoughts about this. That's what I mean. Okay so I guess perhaps to come back to the earlier discussion about ruby central rate. It's literally my part time job to have thoughts. It's about this to think about the future of the community. As a whole I'm I I look a lot outside communities so like I always I think of Python as being sort of the nearest approximate programming community to us and then javascript is sort of like a close second to that. And if if you look at those is to ecosystems right. They both like much sort of culturally actually. I don't WanNA say culturally here. They births have much healthier communities than the Unity and like that. This is largely driven somewhat by just the unbelievably huge amounts of funding that sloshing around in those ecosystems so like huge huge corporate interests. Aw in Java script and in Python that just simply on in Ruby that money provides a certain degree of oxygen that enables them to breathe and operate in a way that we cont however like I do think the sort of flip side to that. Is that Ruby. Ruby people Some of the most excellent people I've ever met in my career like I genuinely think they'll like baseline membership of people in the community is like very very far ahead of nearly every other programming community. I moved through and the encounter and so when I like look look at the future of the Ruby community. I sort of break it down into a couple of things so I think fussily we have a lot of work to do on restoring And we mentioned this earlier sort of like the regional and local communities the beginning to fritter out of it and like part of that is like making sure that it's really easy to find great speakers really easy to run a conference without financial risk but also part of it. Frankly is just making sure. Those Ruby community is like all across. The world are really really healthy and strong as opposed to gathering centrally twice A. Yeah Yeah I think that we continue to see a incoming flood of Buchanan graduates. That are fundamentally changing What the community actually is so like Elliot? I sort of said to us at about forty percent of everyone that comes to a rubicon for rails. Cough breath it's their first conference in that only a few years into programming career. Well like most of these people. The overwhelming majority of them have graduated from a code school and so like we need to think about what it means for community to be able to service and adapt to those folks rate like you have. You tried to hire a senior redevelop recently like it's basically impossible but that's like five five to ten BOOTCAMP GRADS for every single one of the senior heads. Actually that numbers probably not high enough That's willing to come in and learn right around like what can you teach them. And how can you structure your company in such a way that your immutable to like that. newel talent I think an awful hello. I'm about what it means for like ribbing not just like ten years down the line but like a hundred years down the line right like are we going to become coble or are we going to be a programming language that like genuinely loss and people continue to want to build software in for relieve long time and like rails isn't cool anymore but Billion dollar companies. He is being built in it. And the next generation of billion dollar companies are probably already in existence. It's never been easier to launch a stop top with ruby on rails rate like rails is so good I think people actually underestimate how quickly you can go from zero to an application that throws off a thousand five thousand dollars a month with rails. You can do that much faster than you can. With nearly Lee any other programming language and framework. And so like this. I guess the state of the Ruby community to me is very. He's strong in. The future is very bright but from my position as someone who is like literally charged with stewarding the health of the Ruby community. I ac a decline in our ability to get together as people and that really worries me. I think if anything's GONNA kill us. It's going to be that and that's to me. The thing I most want to fix is the ability for folks to Gotha locally more frequently and have a really good time while doing it think that's a great call to arms to our listeners if you haven't considered going to Ruby conference this year go if if you haven't looked into your local meet ups consider going get out there. Meet people meet fellow Ruby S. It's really absolutely worth it. I could not agree with you. More for folks six in New York City and the New York City area. I will be speaking at the Ruby. Use a group In New York on Feb twelfth that is the perfect segue because I was about to ask Hugh how can a listeners follow up with you. Yeah so I mean for for to a local. That's that's that I'm penelope underscores zone on twitter which is like I tweet too much like dozens of times per day. It's not all computers. But like there's a decent chunk chunk of computers in there and then like in terms of like reformat. It's a get hub dot com slash penelope's on own would slash Ruby F. M. T. and like soon like really really soon I will be publishing a like prototype bill of what I heard before Matt will eventually eventually look like that actually is safe for folks to try the three places you can find me. I'll thank you so much for all your contributions our community and for your honest take on the future of the community. I just absolutely great listeners. We will be joining you again next week

Coming up next