My Ruby Story
MRS 007 Charles Max Wood
[Have you ever felt like you are falling behind, or that the programming work is moving so fast that it’s impossible to keep up? Then there is the issue of where to go to make sure you’re up to date. The answer is to join a community dedicated to discussing the latest in Ruby. I mean, wouldn’t it be nice to get Ruby Rogues all day? Well you can! Kind of… We moved our Rudy Rogues’ parlay forum to Slack. That means you can connect with our listeners and guests on a platform that you are most likely using. Plus, we’ve set up a keeping current channel that pulls stories from across the web to help you know what people are talking about. And coming soon we will be holding monthly webinars and roundtable video chats to connect with experts in the community and each other. So come join us at RubyRogues.com/parley That’s RubyRogues.com/PARLEY]
Hey Everybody and welcome to another My Ruby Story. This week I’m going to do something a little bit different. I’m actually going to do an interview with myself I guess? I thought I would just jump in and share my own story on how I got into Ruby and talk about that part of the journey. So the questions that I typically asks guests, I’m just going to kind of call them out and then I’m going to go ahead and answer them. I don’t know how weird this is going to be for me so hang in there and we will see how this goes.
The first question I usually asks guests is “how did you get into programming?” And it’s kind of an interesting journey that I had getting into programming. I do remember, and I’ve had a few of the guests on the My Ruby, My JS and My Angular stories all say that they did a little bit of local programming when they were a kid. Where you had the little turtle on the screen, give it commands, turn right so many degrees, go forward so many steps etc etc, and draw shapes on the screen and I remember doing that. I don’t remember remember exactly how old I was, I would like to say I was 7 or 8 like second grade or third grade but I don’t remember that for sure. I do remember doing that and thinking it was cool and feeling like I was creating something by making it draw a circle or some wonky shape.
I also did a little bit of programing in junior high school. There were two things, one was I was in a math club and so we would go and we would meet actually for one of our classes and we would prepare for math contests. There was a state contest for the state of Utah and there was another contest that was kind of a team/individual challenge called Math Counts. So we would prepare for that contest or those contests and then usually by the end of the year, we’d have a couple of months where we could do just whatever and so our teacher, she was really great, her name was Mrs Price. She actually helped us learn Pascal. We were creating all kinds of different things, again, a lot of it was drawing but we did do some mathematical programming for some of the things we had learned in class. And when I was in 9th grade I worked delivering papers and mowing lawns and stuff and I had bought myself a graphing calculator, A TI-85 calculator. I winded up programming a lot on that. Again, I just wrote programs to solve my homework problems. I wrote programs just to make up dumb little words and stuff. One of my other friends he had a TI-83 and I remember he actually figured out how to program it so it would generate mazes. Which is probably reminiscent of the last episode you got on My Ruby Story which was James Buck because he has done a lot of that stuff. Anyway, it was really interesting, a lot of fun and I thought it was just kind of an interesting thing.
Then in high school I signed up for an electronics class. I did that primarily because I had developed an interest while spending time with my Grandfather. Just to give you a little bit of background there, my Grandpa worked for Rockwell International for many many years, when my Mom was a kid. One of the projects he had worked on was actually for the Space Shuttle. The solid rocket boosters, they are the two white tubes on the sides of the big orange tube that push the shuttle into space. Those are actually manufactured in Utah. The reason they are actually that size, just as a side note, interesting fact, is so that they would fit on a train and go through tunnels. And so that’s why they have the diameter they do. But anyway, they were having a problem with the solid rocket boosters, in particular the solid rocket fuel, where the fuel basically… let me see if I can explain how this works. There is an empty hole down the middle of the fuel. And it’s solid fuel so it will hold it’s shape. As the fuel burns, it basically burns and forces the force down through that hole in the middle of the fuel. If there is any gap between the fuel and the sides of the booster, then it will be also a force pressure down into that area and it can actually explode. They were having trouble getting the solid rocket fuel to… and this all has a point believe me… So anyway, if the pressure builds up on the sides, if the burn can push down on the sides then it will blow up. They were having trouble having the fuel stick to the sides of the booster so that this kind of thing wouldn’t happen. And obviously they couldn’t train sending people into space with this kind of problem because it would blow up. So he invented a laser that would actually examine the sides of the rocket boosters and tell them if there were any contaminants on the sides of the booster and that solved the problem so that the fuel would stick to it and we wouldn’t have explosions due to the boosters. He was always a tinkerer and he had built his own little computer. He had invented basically a cockpit for model airplanes so you put your remote in the model airplanes and through mechanical means, when you pull back on the steering wheel it would actually move the lever up to make the airplane go up. He was kind of that way and I remember talking to him about a lot of this stuff. He also invented a ellipsometer, which is a tool that measures a thickness of the oxygen layer on silicon discs that are used to make chips. So again he had invented a new way of measuring that that was more accurate and was faster than the way they were doing it before so they can actually test more wafers out of the batch.
I kind of came into that and it got me really really interested in electronics so I started taking electronics classes in high school and the most advanced level of that, we actually had a 8085 processor and we would push commands in in binary, in byte code, so 1s and 0s into one set of pins on one side of the chip and then we would essentially program it and get results out on the other side and we had those hooked up to LEDs so we could make it do patterns and stuff like that. And this was involving math and these instructions that we would send to the 8085 calculator.
So I kind of did a wide range of programming as a kid but not necessarily the sort of traditional thing that you see a lot of other people doing where they are saying “Oh I was building stuff in C and whatever”, I wasn’t doing anything that traditional. I did also play around with Geocities and Angelfire and get into web development that way. So I would just do HTML and build dumb little sites and I don’t even remember what they were about but I remember that it was fun and I enjoyed it.
Then the time came for me to go to College. So I went down to Brigam Young University and I signed up as an Electrical engineering major. I started taking those classes and one of those classes and one of those classes was Introduction to programming, so I took that. I took an operating system class and I took a bunch of other programming classes. I remember writing inheritance models for chess pieces and stuff like that. And through all of this, it always felt like programming was sort of a toy. It didn’t feel like it was a serious thing. So I didn’t take it seriously. I did the web development stuff because it was fun, I did the programming for my classes because it was fun but I never really considered it a career path. I was interested in doing a lot more of chip design and low level process driven stuff. So if I had gone the way I was going in college, I probably would have wound up either designing chips for Intel or AMD or somebody like that. Or I would have wound up writing drivers and things like that for low level systems. Incidentally this is why I have some interest in IOT.
As time went on I realized that A) I wanted to graduate sometime soon and B) I was actually getting more and more interested in computers and so I switched my degree from electrical engineering to computer engineering which really did have that focus on the chip design as well as some of the other software elements. So we wrote embedded systems and we wrote VDSL, which is a language for specifying chip design. We did a whole bunch of C. We had to write interrupt patterns for chips, I mean all kinds of interesting stuff that we did there.
I eventually ended up graduating with a degree in computer engineering and a minor in Italian. Also around that time, I ended up working in the office of information technology and if you listen to Jamis Buck episode we do talk a little bit about that, because he did worked at BYU a well just not at the same time. So we knew some of the same people and worked in some of the same areas within BYU.
That got me interested in some of this stuff and in particular there was a guy named Mike who I worked with at one point who was doing a whole bunch of e commerce stuff with php and MySQL and this was… I mean I think WordPress was out there, but I don’t really think that Ecommerce was really a thing thing. You know Amazon was coming into it’s own and a bunch of these other web companies was up and coming and selling stuff on the internet. But it wasn’t a big industry like it is now. And he was out there selling sporting goods and things like that and he was actually making a fair bit of money.
So while I was at BYU in my spare time… yeah I had spare time between my job and… Okay so I didn’t do so great as a student. But anyway. I built a system that would allow people to rate the apartments that they lived in near campuses and then it also listed all the amenities that came with the apartment and allowed people to find the apartment that they wanted based on what was in it and things like that. I really got into it. It was kind of an eye opener just in a sense that I really did enjoy build something and I could actually build something that meant something. The classes I was taking at that point was like Artificial Intelligence. We were using bayesian algorithms to determine the best path for a tank capture the flag game that the university was using to teach us that stuff, and some of the other AI electrograms. It all felt like toys and games until I got down to this actual project. So I really got excited about that.
I also built a system in Bash where it would go out and download the updates from the redhat servers and sync them over to all the other servers that needed them and run the updates. So they all didn’t have to go out to the internet through a proxy we had on campus in order to get those updates. It made things more secure and it also lowered the load considerably on those proxies every week. So I did some of these projects and I started getting an inclining of “oh this is actually useful” but I was still not completely sold that I wanted to be a programming professionally. I had a lot of friends who were into programming and games or they were trying to program little utilities that helped them with different things. But for the most part it really felt like still kind of a not a serious profession in me. And I knew that the computers and the servers and everything else all ran on software but at that point, those kinds of software developers seemed A) completely unattainable and B) completely corporate and I was kind of tired of the Corporate scene by the time I was done working for BYU.
I went out and I applied, in the meantime I did an internship writing patent applications and that convinced me to not go into law but i wound up going over to a company called Mozy and that was my first job out of college. I worked for them for 6 months while I was finishing up my degree. Mozy does online backup but I’m not going to go into the whole story there. But the highlights are, and this answers the question of “how did you get into Ruby”. The highlights there are basically that they were using Ruby on Rails for their web based systems, they do online backup, so if you have a computer Windows, Mac, whatever and you have data you don’t want to lose, you back it up to Mozy and Mozy has a copy of it on their servers and you can get it back whenever you need and you request that through the web system. That was all written with Ruby on Rails.
I was working in Tech Support so people would email in and eventually they added calling for their professional customers so people would call in with problems. Myself and another engineer would help handle all those requests. At one point Mozy was featured in Wall Street Journal. When it was featured in the Wall Street Journal, all of the sudden our support requests as well as our business kind of blew up. It got really big really fast. What wound up happening is that there was only two of us answering these emails and answering the phones and it became way too much. Part of the problem was that the process was basically done by “Hey have you answered this one?” or “Do you have this one open in Thunderbird?” We were using Thunderbird to answer these emails. “Yes”, “no” and then we would move on to the next one depending on whether or not it had been handled. Well, that was somewhat inefficient, especially since that we were using Mutex but it was a verbal Mutex. SOmetimes I would get halfway through writing a response for an email to find out my co-worker Tom had already answered it. So he started working on a system in Ruby on Rails that would pull all of the emails out of the email box, and this was all in his spare time and I started helping him as soon as I figured out what he was doing. Then it would put it into a database and then set it a “Mutex” which is basically just a block that says “I’ve got this note nobody else can touch this” on the email for about 15 minutes. And so if it got opened it would not be allowed to be touched again unless someone responded to it, that was allow. But it wouldn’t show up for anyone else for 15 minutes. And so when you typed in a response and hit send, and it would immediately, and this was in a web browser, pull up the next email out of the database and it would shoot the other email off. It would all show up as responded to in Thunderbird if anyone was looking. At that point we were just quickly handling these request and there was no checking to see if someone had handled it but the other thing was that it was also no need to go through and triage some of them and say “these ones are critical” because we could then get through probably 2-3 times the load, because it would load the next issue and immediately we wouldn’t have any downtime, waiting or searching or making decisions about what to answer next.
Then we started adding other features in. We added canned responses, I started working on a knowledge base that went into it, because again, at this point we were hiring people to help us with this job because it was becoming a bigger and bigger job. I also started keeping track of how often a canned response was used so we could tell the developers in the various systems where the problems were occurring. So “hey are getting this kind of connection error on a regular basis this is problem” or “hey we are running into this issue on a regular basis can you do something about it”. And that really really helped because then we were able to get some of the more common issues fixed.
While I was there I also wound up some work in QA. I actually specced out a machine, had the company buy it, set up VMware on it, and spun up a whole bunch of machines, and then just basically marched through a bunch of test apps. And again that was to catch issues before they went out and that would again would reduce our workflow in tech support. I was worried so much about how big the department got, as much as I was worried about just reducing the amount of work we had to do to keep up and make sure we were serving people well. But anyway, I was kind of a manager/programmer and this really got me serious about both programming and about Ruby on Rails.
I’m going to diverge a little bit here because the next question I usually ask is “what do you think you’ve contributed to the Ruby community”. And this story or this part of the story leads directly to podcasting. I had mentioned that I had started a QA, eventually they hired a QA person and they also hired a consultant to help with QA. So they got things rolling with QA, kind of took that off my plate. I ran the Mac beta for Mozy and things started to work out for me anyway until they didn’t. And basically what happened was, the company got acquired and the person I was dealing with as my boss decided that it would be expedient to divide the responsibilities for tech support between myself and the person I basically had as my Assistant Director over support. Because at this time Tom had moved onto other things in the company so I was sort of in charge of support. And so, they basically took away all my management responsibilities and said “yeah you’re just going to be the technical resource for support” which really wasn’t where I wanted to go. And as I thought about it, I realized I didn’t necessarily want to be on the management track. Because by then we were working for EMC corporation who had acquired Mozy. They kind of showed us their career tracks you could follow. And I was like “ I want to be on the developer track not on the manager track”. So I talked to my boss and he was perfectly happy to shut me off over at QA because I would open my mouth if I saw a problem and that was not the necessarily the most politically expedient thing to do with him calling the shots. The CEO was doing business development for EMC at that point and wasn’t that necessarily involved in the day to day stuff. So anyway, yeah I’m kinda painting him as a jerk and he kind of was. He was a nice guy, but he was definitely consolidating power at this point. And I was not helping him.
I moved over to QA and I worked with a guy named Don, who actually bought an ipod back when they had actual hard drives in them. They had like 80 gigs and had the little circle play button thing on them. The big circle with the little circle in the middle. Anyway he was listening to podcasts and got me listening to podcasts and eventually i found a podcast called Rails Envy. I started listening to that. Rails Envy was Jason Seifer and Gregg Pallock. Greg you might know from CodeSchool and other ventures that he is involved in at this point. He has moved on from CodeSchool. CodeSchool was purchased by PluralSight. But anyway I had got it in my head that I wanted to start a podcast, and so I emailed Gregg and I said “Hey I’m thinking about starting a podcast about Rails do you have any suggestions? I don’t want to just duplicate your show.” He emailed me back, which kind of floored me, I thought that podcasters were celebrities. Turns out that that isn’t necessarily the case. And he encouraged me to start a podcast and I was a little bit surprised by that but at the same time I was like “Wow this is Awesome!”
And so I took his advice I started interviewing people and when I didn’t have an interview I would just off the cuff talk about whatever I was learning about Rails. And I was new so I didn’t know anything but I was learning. And that’s kind of the big thing I think that I learned from that particular time in my programming and podcasting careers is that, even if you don’t know what you’re doing, just being out there talking about what you do know or what you have learned is definitely a move worth making. And it opened up a lot of doors for me. I wound up interviewing James Edward Grey who I got to know through other means as well. And we wound up started Ruby Rogues together. I got to know David Heinemeier Hansson. I got to meet a whole bunch of other people. It was just really really cool.
That started to work out for me and it also led to me taking over Teach me to Code from my friend Eric Berry. I started doing screencasts with Ruby on Rails as well. So we figured all that out, I did all that stuff. I also contributed to a couple of open source libraries. One of them connects to project HoneyPot and it’s funny because I always forget that I wrote that and then I’ll have someone email me “Dude! This is exactly what we needed, we have all these spammers that can no longer use our site! Yay!”.
I’m trying to get back into writing open source and so I’m actually probably going to start up a project and then just record snippets of me working on it. And just walk through some of the things I’m doing with it. But yeah, that I feel like it’s funny because a lot of people are like “I’ve wrote these libraries” or “I’ve given these talks” and for me I feel like the primary means I’ve contributed to the community is through podcasts and screencasts. I want to get back to screencasts. I miss doing that kind of stuff. Overall that’s where I feel like a lot of my contributions have been.
The Angular Rants are going to be somewhat noob focused, because I just haven’t got into Angular the way I want. But those are all things I’m working on. I’ve also got a lot of requests for some new podcasts on some new topics. I’m looking at areas like React and Elixir in particular. I’ve had a few people approach me on doing one web security, about wordpress, and about artificial intelligence. So I’m looking at those as well.
Beyond all of that, I’m trying to keep up with all the other things going on. I’m an officer with my toastmasters club, I’m a cub scout leader. I do a whole bunch of just other things in life. I have 5 kids and so, just trying to keep up on all of that. A lot of people are like “Man! that’s a lot!” and “do you ever get burned out?” and I took a burnout quiz this morning and the answer is definitely yes. So at least if this quiz is any indicator. So there are three aspect that they measure. One of them was moderate and the other two were pretty high so. I’m working on that as well and trying to find the balance with everything.
I’m also just working on getting systems on a lot of this stuff so that it just happens automatically. So those are kind of the areas I’ve been working in. And I’ve been using some of the coding skills and tools for some of that stuff. So for example I wrote an RSS builder that, this was 3 or 4 years ago that I built it. I built it in Rails 4.2, so that will probably tell you how about old it is. So I built some automation stuff into that. So that if I have an RSS feed and I want to basically include everything from Netfeed into that feed then I can just tell it include this other feed and it just works. I’d like to build another one in so it will effectively filter feeds based on specific stuff and then allow it to pull external RSS feeds and allow me to modify them.
So those are things I’d like to do and then I’d eventually like to release it as a SASS product. That’s kind of a down the line thing. I have a whole bunch of other plans for stuff. But mainly at this point I’m working on finding sponsors, keeping the podcast going. I recently had to switch podcast editors and just things like that. A lot of the work is focused around the podcast and kind of wrangling a lot of the business stuff that goes on around the podcast. I really do want to get back into coding more. But I don’t know if that is going to happen for another month or two.
The last question I typically ask people is for Picks but before I do Picks I just also want to let people know, because I usually ask people “how do people follow you?” I’m kind of an infrequent twitter, tweeter, twitterer? You can go to CMaxW on Twitter and follow me. Devchat.tv also has it’s on handle @Devchat.tv. Again I post even there less frequently. All of the shows have their own twitter accounts. I am on GitHub as CMaxW. Matter of fact, I’m pretty much CMaxW everywhere. If you look up CMaxW and it’s somebody else, then I’m wearing two shoes. Just kind of a grain of salt there. You’re welcome to email me at Chuck@DevChat.tv
[Are you trying to stay current with Ruby on Rails? I’m putting together a two day online conference called Ruby Remote Conf. You can check it out RubyRemoteConf.com. Like I said it’s a two day conference where you can come and listen to speakers and experts from all around the world talk to you about issues pertaining with Ruby and web development. We have an online Slack channel, a round table discussion on *Zoom*. And all of the talks will be streamed to you live. Come check us out at RubyRemoteConf.com]
The Picks I’m going to put out there are picks primarily around how I’m doing things these days for a lot of this stuff. So the microphone that I’m talking to you on is an RE20. It’s an electro-voice is the brand, it’s not a cheap mic, but it’s a very nice mic and I really like the way it picks up my voice. I’m also going to pick I have a Xenyx 802 mixer it just sits on my desk, it’s not very big which is nice and I can pull in other resources. I’ve thought about adding a sound board for years and I definitely have a port to put it on. I just don’t know if it makes the show a little bit cheesy to add sound effects but. Anyway I can do a lot of that stuff. I record this into an Edirol R-09 digital recorder. The new model is the Roland, I think they have the R-05 or R-06 that you can also pick up and I really like that.
When I’m traveling I tend to use the Zoom H6 which is kind of a recording studio all in one. It will provide phantom power to all of your microphones and stuff liek that so I really really like that piece of equipment. I have an Audio Technica 2100, atr 2100. Which is both USB and XLR, which is really versatile and nice mic and that’s the one I take when I travel. And then I just have these little microphone stands that I use. I just set it up and off I go.
Now for the courses, and this is something i forgot to bring up so I’m going to pick it as well. Getacoderjob.com, when this comes out, I might have a couple spots left in the beta. The beta is 50% off the eventual list price of what as I think it’s going to be now. I might price it a bit higher it just depends. So if you want to get a better job, that is where the focus is, not necessarily on how to get your best job, but how to get your first job not your best job. But how to get the best job for you that meets your criteria. We go through how do you find the criteria, how do you find the companies, how do you connect with the people in the companies, how do you get noticed by the people in the company, how do you show them that you’re the kind of person that they want, how do you customize your resume and cover letter so that it communicates to them “hire this person”. You know all of those things. Definitely worth checking out if you’re thinking about finding a new job. The pricing is about $500 dollars right now so that 50% of is about $500. The regular price is going to be closer to about $1000. The reason I’m pricing it that way is that I want people to seriously go through the process. Because I think it will help them find a better job. The other thing is, I feel like if I help you find a 10 to 20 thousand dollar raise, and you stay in that job for 2-3 years and then I essentially made you 30 thousand dollars or so. It’s not a terrible thing to ask for people to pay 500 bucks to get 30,000 dollars over the next few years. So anyway definitely go check that out as well. That’s getacoderjob.com. I think I’m going to go ahead and wrap it up after all of these picks. Don’t forget to go check out Ruby Dev Summit at RubyDevSummit.com. That is going to be free and if you want the videos and some of the other high level access stuff, I’m also going to try and get some of our speakers to chip in ebooks and audio programs and things like that. But if you want the full access pass that will gets you everything and the kitchen sink, that will be 97 dollars up until the conference starts and then the price goes up. That will be in October. Definitely go check that out as well. I’m going to go ahead and wrap this up and we will catch everybody next week with another interview.
[Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly visit Cachefly.com to learn more ]