009

MRS 009 My Ruby Story Brian Hogan



My Ruby Story 009  Brian Hogan

On this episode we have another My Ruby Story and there is a good chance you might recognize him, he is one of Devchat.tv’s panelists Brian Hogan. Aside from being a panelists on Ruby Rouges, he also has a couple other projects like codecaster.io as well as Railsmentors.org.


How did you get into programming?

Brain talks about how his Dad has an old Apple 2 computer. His father was a teacher for the blind and the computer had a box on it that would talk. His Dad taught him that computers can have programs written for them and make them do things. Brain talks about having math issues one evening and his Dad helped by making a math program that would quiz him. His Dad wasn’t a programmer but he had picked up some of it from being around it. Brain talks about how the library had games you could get for the Apple 2 but you had to write code into the computer to make it work. He started tweaking the code to learn that it adjusted things in the game like the speed of the spaceship or the damage of the bomb.

Brian’s First Program

Brian’s first program was in fourth grade. He had an assignment on the topic of the seas and instead of doing a typical handwritten assignment he created a program for it. He learned that he could make the computer do things. Over time Brian got interested in other things, planning to go to school for law. His Dad lost his job making his plans for law school unreachable without student loan debt. He started making money on the side repairing and building computers.

Computers solving problems

He talks about how he never really got into the computer science level of things, but he was always excited about being able to solve people’s problems with computers. He remembers getting internet for the first time. It was Netscape and it came with a book on how to setup the internet and then in the last chapter it had a section teaching how to make a webpage with HTML. He loved making websites and so he made pages for businesses and made money on the side. He went to college aiming for computer science and then when he got into classes like computational theory, he found that it was boring to him still. He changed his major to business. He then got a job working for the college working with website stuff. The developer for the pages ended up quitting and so they asked Brian to help out. So he learned Microsoft server SQL and ASP. He adds that essentially he fell into web development by accident. He talks about his code being bad until he learned Ruby, crediting Ruby with making object oriented programming easier to understand. Charles mentions that he felt the same way in school, it wasn’t until he needed to fix a real problem that programming really started to seem useful and fun. Brian talks about how he isn’t really the best programmer, but his strengths are helping other people to program. He has trained many people to program since then.

Learning with Context

He talks about in school how they throw JavaScript at you and teach you the higher concepts before understanding it. He tells about how doing something like teaching Git on the first day doesn’t make sense because the students don’t understand why they need it. He suggests that the thing that is missing from the curriculum is the real work connection. Majority of adults need to be able to connect what they are learning to something they have already learned. Context is important for learning.

How did you get into Ruby?

Brian talks about doing PHP for a while as well as ASP. He was working with a project as an Oracle DBA. They were moving from Java to an Oracle Database. But no one there knew what Java was and a person there named Bruce suggested that the work they were doing would be better written in Ruby. The team disagreed but afterward one day Brian was talking to Bruce about a side project he was working on and how he wasn’t accomplishing it the way he wanted to. Bruce asked him to get lunch with him. Brian then talks about how in life if someone very smart asks you to get lunch that you should drop everything and do it. In a single night he was able to accomplish everything he was trying to. He took his project to work the next day and they said they wouldn’t be able to use it on Windows. Brian started working on finding ways to deploy it, and that has been the starting point of Ruby for Brian. He went to Rails full time after that. Publishing an article on how to get it deployed. His work with Ruby led to him teaching and writing books. When he needs to make something heavily data driven he always reaches for Ruby. He isn’t interested in scalability because usually he is working on a small business process behind the firewall used by less than 100 people.

Framework Peer Pressure

Brian talks about the fear and pressure to use the latest and greatest frameworks in the development community. He talks about how the only people who know what framework a person uses is the developer and the peers. You don’t get paid to impress peers in the community. A developer gets paid to solve peoples problems. Charles and Brian add that using new frameworks are great and can teach you new ways to solve problems, but no matter how a person solves a problem, it should be celebrated. Learn new things but don’t make people feel bad for not doing things the same way you do them. Brian adds that another reason he likes Rails is that it has a lot of things that came from basecamp and it is a well developed and tested and the framework is strong. He talks about how sometimes frameworks come out and they weren’t well thought out. Rails is not an academic framework but it is easier to integrate or upgrade to by design.

What contributions have you made to the Ruby community?

Brian talks about getting the Rails deploy working for Windows is one of his proudest moments. Other than that his contribution has been mainly helping people find mentors at Railsmentors.org. On Railsmentors.org, most of the work is done by volunteers and help a lot of people. Charles adds that sometimes open source project contributions tend to get glorified but things like Railsmentors.org are really what make the community great.

What are you working on now?

Brian talks about how he is working on a book but he can’t tell much about it at the moment. He also works on the content team on Digital Ocean. He helps other community authors with their writing and to get it published and out. He also handles some system admin background to test that each article works and he finds it a good way to keep his skills tuned. He is also working on a project in Elixir for teachers to work in the classroom better. For a teacher teaching development they can use the program, CodeCaster, to display code to the screens and the students can do things like flag things they don’t understand or let the teacher know that it’s moving too fast. It allows the students send up code for the teacher to check as well as the teacher get a snapshot of what’s on the students screen to check on them.


Picks

Brian

Exercises for Programmers
Tmux 2 Productive Mouse-Free Development

Charles

Coursera on AI
Artificial Intelligence in Python


Links

Twitter
bphogan.com


This episode is sponsored by

comments powered by Disqus

TRANSCRIPT

[This episode is brought to you by Newbie Remote Conf. Newbie remote Conf is a two day completely virtual conference hosted by none other than Charles Max Wood. If travel expenses are an issue or you just can’t afford to be away from home for two days, then join us. It’s virtual. This conference is focused on people who are new to programming who want to learn what the pros know. Or just get a leg up on getting a job and getting into the programming community. We will have speakers from all over the programming community to help you stay current and a Slack room where you can connect with speakers and other attendees in real time. We will also have a live round table video chat for attendees and speakers plus we will provide the talk recordings to you within days of the conference. Early bird tickets are available for 150 dollars until May 12th and the call for proposals are open until April 28th. So come join us at NewbieRemoteconf.com]

CHARLES:

Hey everybody and welcome to another my ruby story. This week we’re going to be talking to one of my co-hosts on Ruby Rouges , Brian Hogan. Brian do you want to say hi?

BRIAN:

Hi, everyone.

CHARLES:

So, yeah. I sent you a bunch of questions and we’re going to dive right in. But yeah, I usually call out ‘Hey they’ve been on this episode and that episode,’ but you’ve been on a bunch of them so.

BRIAN:

Sure. First of all, thanks for having me CHARLES this is great. I’m really excited to have this conversation.

CHARLES: 

Yeah, no problem. So yeah, let me ask you first, how did you get started programming?

BRIAN:

It was actually my dad that got me started. My dad had an old Apple 2 computer, it wasn’t old at the time. It was an Apple 2 and my dad was a teacher for the blind, so and he had this box for the computer that actually could make it talk, he could type in the text into the computer and it would make the box talk and I was like ‘That’s one of the coolest things I’ve ever seen.’ I was about in fourth grade at the time and then he’s like ‘Well you know what else you can do, you know you can make little programs, you can make the computer do stuff you can ask it for input and you can do output.’  I was like ‘oh that’s kinda cool,’ and I just brushed it off and a couple weeks later I was having some trouble with some math and so my dad actually a program on the Apple that would quiz me with some math problems.

CHARLES:

Oh wow.

BRIAN:

And he wasn’t a programmer by trade, he was a teacher for the blind but he just kinda picked it up, it was just one of those things he sorta picked up cause it was like ‘Oh I got this computer what else can I do with it to help the blind, and help reach my students.’ And so that’s kinda how he picked it up and so I just sort of learned from him back in fourth grade and I was lucky because the library nearby actually had these books that were just a bunch of games and AppleSoft basic and you just take the book off the shelf and if you wanna play this game, great, you gotta type in 1,000 or so lines of code into your computer to do it.

CHARLES:

Oh wow.

BRIAN:

And you just type them all out, it was almost akin to how if you studied music history like how some of the composers learned to be composers was simply by transcribing the works of other composers and so I always had a really strong connection with the idea that learning programming, one way to learn programming is to read other peoples code and try to recreate it in the same way that a lot of the classical composers did. So I did that for a while and then I started thinking ‘Hey what happens if I change this variable, the value of this? Oh look the spaceship speeds up, or look the bomb does less damage or does more damage what happens there’, sort of taking a ‘oh this makes a sound effect, what if I changed the address it’s pointing to? Oh it makes a different sound effect that’s kinda cool.’ You know this is all in Apple basic so it wasn’t anything really that fantastic but I remember one of my first actual real programs everybody had to write these papers on a city in fourth grade and instead of writing a paper I wrote a program that was like a text based virtual tour of the city’s sites. 

CHARLES:

Wow.

BRIAN: 

That was my first program and it was a very rudimentary photo of brute force if else branching tree but that was sort of it and I was sort of hooked from that point on like I can make the computer do things but then I gave up on it for a good long time got involved in other things that I was more interested in doing. I was actually going to go into law and then we had some financial issues at the time, my dad lost his teaching job, I wasn’t able to afford to go to the place I wanted to go without being saddled with way too much debt so I sort of. What was the fall back? Well I liked those computers. I was doing the hardware thing as I was building computers I was fixing computers I paid a lot of my bills in high school, you know the fun money bills that you have when you’re in high school. I paid that by fixing computers and setting computers up and helping people build computers and what not but I kind of left the programming thing to the side because despite the cool stuff you can do I never really got into the nuts and bolts like the real computer sciencey stuff. It never really appealed to me I would just start falling asleep because math and that kind of stuff makes me, I just can’t pay attention to that but I was always attracted to the idea that I can solve a persons problem with code. So I went on in high school my last year of high school we had a real internet connection we had America Online before that and we had a real internet connection. I lived in a very rural area so we didn’t get dial-up internet until much later than the larger cities did. But with our local internet connection was this book on Netscape 1.0. It was how to use the Netscape 1.0 browser and it came with a little floppy disk with Netscape on it and it was this whole book on how to do it.

CHARLES:

Oh wow.

BRIAN:

But at the last part of the book was how to make your first webpage.

CHARLES:

Oh nice.

BRIAN:

And it was a HTML tutorial that walked you through building your first webpage and how to display it locally and in Netscape and then it talked about how you gotta find the hosting provider domain and all that kinda stuff but it didn’t really go into that detail but at least it showed you here’s how you make a link, here’s how you put an image on it, here’s how you know do these basic things and at that point on I was like I am hooked. This internet thing, I love this web thing. I don’t think it’s gonna be a fad, I took a gamble you know. Turns out it paid off right? 

CHARLES:

Yep.

BRIAN:

But I made a webpage and then I realized I can make webpages for other people, there were a bunch of businesses in town and nobody else was doing this, so I started a company. I started a consulting company making websites for people and that’s how I paid the bills in college, was doing that and I went into college I went and I said oh computer science obviously that’s what I must do and then I got into computer science and it was all gonna be C++ and computational theory and the my eyes started to glaze over again and I said what I like to do is solve people’s problems with computers. I don’t think I’m ever going to write a compiler, I don’t think I’m ever going to develop my own programming language, but I like to solve people’s problems with the computer and I can clearly teach myself how to do things if I stand on the shoulders of giants. Somebody else writes a book on HTML I can certainly use that knowledge to help other people solve their problems. So what I ended up doing is changing my degree and got a major in business because I really sucked at business. Like I really didn’t understand how to run a business. I was running a business but I was doing a very poor job at running the business. I could certainly do the work but so that’s where I figured that’s where my gap was and I got a job working for the college doing web stuff and one of their application developers who was doing some database stuff he quit. And they said well we heard you can program and you’re taking these programming classes can you kinda pitch in here? And I’m like well I guess and so I learned Microsoft SQL server and learned some ASP and chipped in and before I knew it I was making web applications, so it sort of happened by accident I just, again, solving people’s problems, not coming at it from an academic computer science stand point, it was more of a well this needs to happen and this needs to get here and as a result of that I wrote a lot of bad code. I learned a lot of bad code because I didn’t have a lot of the fundamental stuff that my peers had, I didn’t have the same knowledge they had. I didn’t really understand object oriented programming until I started doing Ruby development 10 years later, you know? And that’s what I credit Ruby for, making object oriented programming concepts much easier to understand if you compare to what you have in other languages there’s something about Ruby that to my weird brain makes it really easy to understand objects in OOP composition. 

CHARLES:

Yep. Now it’s funny-

BRIAN:

That’s it, that’s my story man that’s how I got where I’m at it’s a weird journey.

CHARLES:

It’s funny though cause you talked about computer science and all the theoretical stuff and I took a lot of those classes because I was a computer engineering major in college and it kinda turned me off to programming it wasn’t until I got out and had a real problem to solve and got into solving it with Ruby on Rails I was like oh wait this programming thing is kinda cool and helpful and not so OK I’m gonna write this junk code and throw it away and yeah.

BRIAN:

Well what you’re describing is sort of where my career has gone. I spent a lot of time building applications for people and I’ve done some consulting for small startups and local businesses and I had a day job working at the same university I graduated from building apps and supporting the infrastructure for our front end pages, but what always bothered me was how we teach software development.

CHARLES:

Yeah

BRIAN:

That was sort of what I decided, I’m a good programmer. I’m not gonna say I’m a bad programmer, but there’s a lot of other programmers that are better than me but I will say that what I’m really good at is helping other people get better. I’m good at helping other people learn how to program. That’s what I found out my strengths are over the years when I’ve had any opportunity to mentor and train a lot of people. That’s where my strengths are because I started identifying all the things that didn’t work for me when I was in the chair and when I was in the classroom and I looked around and I found so many other people that in the industry that are really good programmers they just don’t have that former background. One of the best programmers I know does not have a programming degree at all, never went to school for it, completely self taught, he has a degree in history. 

CHARLES:

Nice. 

BRIAN: 

He has a four year degree in history so he can get past the HR screen for must have a Bachelor’s degree. His legitimate of web development, web design, and software development isn’t enough, he has to have that Bachelor’s degree so he’s very lucky and happy to have it, but that’s a different conversation all together. But the idea of a lot of the computational science and the computer science stuff that I see in the classroom is they throw a big Java book at you and they teach you data structures, they teach you design patterns. Which neither of those in a vacuum are really something you can understand, it’s sort of like, this is an argument I get into with software developers a lot, oh you should be teaching Git on day one. No, you shouldn’t because they don’t understand why they need it. Now you give people, you introduce Git after about six or seven weeks of programming where they’ve already had to make 12 or 13 copies of their program cause they’ve lost it or they’ve lost the history or they gotta go back and get it, now you can introduce Version Control and say here’s why it’s valuable and I think that’s what is really missing from a lot of the curriculum out there. And I say this with much love to all the people that work really hard at making curriculum, but if you don’t connect to a real world scenario, you don’t connect it to a person’s prior knowledge, it becomes very difficult for a lot of people. Not everybody. It’s very difficult for a lot of people to make that connection and understand why it’s important. Now thee are some people that absolutely love the theoretical, they love the algorithms, they love the math and they can totally follow along and then they can make that connection with real world scenarios when it hits and I have a lot of respect for those people, I don’t understand how that works, I can’t do that myself. I know I’m not alone in that so for people like me, which as I learned when I took a detour into adult education for four years, that’s the majority of adults, is that adults in order to learn a new thing need to be able to connect it to some prior knowledge. It’s like the path the garden path that you dig into the ground as you roll the wheel barrow from your front yard to the back yard, that rut in the ground gets deeper and deeper each time you go over it. The path gets more and more worn down and if you can get the new material on that learning, that existing path way it’s a much smoother way for someone to learn that content or that topic but if you just throw them under the weeds, you just throw them under the tall grass without any context, without any understanding why it’s gonna be important, why they should know this, it becomes a big problem.

CHARLES:

Yeah, I agree. So you’ve kinda gone through, you know you mentioned adult education and a whole bunch of other things, how did you get into Ruby? 

BRIAN:

I was doing PHP for a while, I was doing ASP and we had a, there was a project that was happening and I wasn’t directly involved other than I was the Oracle DBA. The school I was at was migrating a Cobol system over to a Java and Oracle system.

CHARLES:

Oh that sounds fun.

BRIAN:

We had this really awesome tool that migrated this hierarchical database over to an Oracle database. It was really cool how well it worked and it was able to do it in near real time so we could kinda keep the systems running in parallel. But nobody had any Java knowledge and so we found this wonderful, wonderful person to guide us through the Java stuff and his name is Bruce Tate and I will be forever in his debt for where I am today. And this is something I tell him on a yearly basis, how happy I am that we met because he was there and he just kinda made this offhand suggestion after he looked at what we’re doing and he says you probably would actually, you’ve never heard of this language, it’s Ruby and Ruby on Rails is a framework for building these things and what you’re doing would be much better done in Ruby and Ruby on Rails and of course the management said absolutely not we’re gonna go stick with Java and he said ok that’s fine, that’s cool. But I was talking with him just in passing outside one of the meetings and we just got to talking about things we’re working on and I was mentioning I was working on a web application for a client outside of work, side project, and I was really struggling with PHP, it was taking way to long and he said, let’s go to lunch and I was like nah I’m kinda busy I can’t I use my lunch hour on this app and he said just come on and we’ll go to lunch. And ladies and gentlemen if somebody smart asks you to go to lunch you just go, you don’t hem and haw you just, if that opportunity presents itself just go, k? You just, you go because in that hour over some burgers, Bruce explained what Rails was and pointed me in the right direction and I swear to God the next morning I had accomplished everything I’d been working on in six months in Rails just overnight and that was enough for me to come back, I knocked off the side project in another couple of weeks it was done and deployed on Linux thanks to some other peoples help then I said, I went to my boss and said look, this is what I’ve one outside, we have to do this here for the kinds of applications we’re writing, the kinds of applications we’re doing. We have to do this here, we could save so much tax payer money, we could save so many resources, there’s no reason not to do this and their response was well we’re on Microsoft Windows, does it work on Windows? And I’m like no, it doesn’t but. And my boss said well if you can get it to run then we’ll go with it and that became sort of my mission and I remember it was n May 2006 or so I actually figured it out with the help of Zed Shaw and a few other people, Ezura Mitovich, he was very helpful in pointing me in the right direction and I published on my personal blog I actually published a series of articles on different ways to get it deployed which lead to me writing a chapter for the very first version that Ezura and Bruce Tate were working on of the deploying Rails applications book for pragmatic bookshelf and that was sort of the start of everything. Now we’ve got Rails running on Windows, I’m doing Rails full time now, I’m working with Ruby which lead into me teaching people how to do Ruby around the country, done seminars and talks and private training’s and stuff which in turn lead me to writing a whole bunch of books and editing books and getting into formal teaching and it’s funny because all of the things that have come and gone over the years with Node and Go and these other languages and yet when I have a project that I need to do that’s heavily data driven Ruby is the first thing I still reach for and I’m really currently in love with Elixir and the Phoenix framework and working with Elm but when I’ve got something to get done I still don’t feel I have that level of productivity that I feel that I get with Rails for just getting something done and that’s why I got into this in the first place. I’m not interested in the raw performance numbers and I’m not that interested in scaleability and things like that when it doesn’t matter because every single thing I’ve worked on has been used by max like 100 users because it’s been a back office things it’s been a behind the firewall thing and I think it’s really easy to forget that that’s a lot of the work out there, a lot of the work out there is still crud applications behind a firewall somewhere to help some business process happen. To help somebody get there job done and so I have always been the kind of developer to look for the quickest tool to get that done so here I am 11 years later building stuff with Elixir and still building stuff with Ruby because the right tool for the jobs that I find. 

CHARLES:

That’s really interesting, actually. I mean there’s so many hot technologies out there people get so worked up over and yeah it’s like well what can I get this job done on? One thing that I picked up from Adventures in Angular of all the shows that I’ve done we had some people come in and talk to us about building some “line of business apps” which is kind of what you described there. Where it’s the stuff inside the company that makes the stuff go and yeah I mean a lot of people are doing a lot of stuff that nobody is gonna see unless you work at the company that’s using it and yeah in that case I mean why does it matter I mean as long as it’s not a maintainability problem or something like that yeah you know, go build it in Rails, go build it in whatever

BRIAN:

Yeah and one of the things that I’ve always been concerned of cause I see it, especially when you work on the front end, there’s a lot of fear and a lot of pressure that developers feel to be working with the hot new technologies and it’s almost like a peer pressure thing, are you writing this application for you? Are you writing this for your customer? Are you writing this for your peers who might snicker at you for not using the latest and greatest technology? Because you know that when they view the source on your page they can tell that you used angular instead of React for example you know.

CHARLES:

Or Backbone.

BRIAN:

They’ll know and then they’ll make fun of you or they’ll make you feel bad or something. First of all, I want to see our industry stop doing that. I wanna see us support each other in our efforts, hey that’s a great application, that’s a great idea I like how you did that as opposed to oh you used last weeks framework or last years technology, ew get with the times man. I don’t wanna see that because it doesn’t help anybody. It’s not about what we’re supposed to be doing, you don’t get by the lines of code you write as a software developer. You don’t get paid to impress your friends in the development community. You get paid to make people’s problems go away. That’s what you get paid to do, you solve people’s problems. Now, code is your tool for doing that. An electrician, they solve your problem by bringing their specific set of tools and their methodologies. Doctors, they solve their problems using their methodologies. They’re all problem solvers, that’s what programmers are. We’re not as important as we think we in some ways. We are paid to solve people’s problems and if you can’t solve the persons problem they’ll find somebody else who can solve the persons problem.

CHARLES:

Yep. Yeah that’s really an interesting stand point, and yeah I completely agree again. I mean it’s just, especially in JavaScript, you know cause I’m over in that world with JavaScript jabber and I talk to a lot of people out there and I actually had one co host quit the show because we weren’t taking about all of the stuff that’s interesting to him but we were talking about stuff that our audience needed to hear and sometimes it just wasn’t the cool, hot new thing and yeah I mean it’s true people are trying to solve a problem, they’re not necessarily in it to, you know it’s fun to use the latest technology and you know pick up new things but yeah sometimes you just need to have the problem solved. 

BRIAN:

Well I don’t think it’s necessarily bad to be looking at the new thing because you’re going to learn new ways to solve problems, but what I really hope we stop doing is making people feel bad for not using the latest thing. Like look I’ve tried Angular. I’ve even given talks about Angular, turns out it’s not for me. It just doesn’t work for me, but I’m not gonna say no don’t use Angular, use React. I’m not gonna say that because that’s not my place now when I was young and dumb and brash, yeah I would say stuff like that. So I’m just as guilty as everyone else, I’ve learned from my mistakes and I’ve learned that there’s a better and more constructive way for me to help other people get better at software development. There’s a constructive way of doing that and there’s a destructive and I think making people feel bad or making people feel like their skills are out of date that’s not as constructive as saying hey there’s a new technology and I’ve been working with Elm for the last six months and I gotta tell you, learning Elm has made me a better JavaScript developer because even though I’m not using Elm to write my JavaScript I’m still applying the same concepts, I’m still applying the same structure. Elm’s architecture is very similar to what React and Redux together does and so using Elm has made it easier for me to understand what’s going on in Redux and all it’s applications and structure. That’s a huge benefit that if I had been the exact opposite and been the stick in the mud saying I got my tools and I’m gonna use them the way I use them. If I had done that then I would have missed out, I wouldn’t have learned some things so yes do go learn new things. So you can make an informed decision if this thing is for you or not. But don’t make other people feel bad because they’re not on the same bandwagon that you are right now. 

CHARLES:

Yeah. Well it’s interesting too because I mean even in the Angular I think they’ve done a good job with this but a lot of people built huge apps in Angular 1.X and now they’re on Angular 2 and 4 and yeah I think the people get shouted down that are picking on the people that are stuck with Angular 1 for a little longer because they have a huge application to upgrade. 

BRIAN:

Yeah everything’s not just a toy application you can do as a greenfield you know in some cases there are hundreds of thousands of millions of dollars put into applications and just switching things out is not a luxury everybody has and that’s another thing that appeals to me about Rails. I don’t think a lot of people state this I know the Rails Core states this a lot. You know a lot of the stuff that’s in Rails comes from Base Camp. It’s not stuff that someone says oh this would be cool. Now I think there are some cases when that occasionally happens and somebody just gets shoved into Rails. But in most cases it’s stuff that’s already been running on a reasonably well trafficked production application for a while before it makes it into the environment. It’s not an academic framework like a lot of the other ones are. And every framework that I’ve seen as long as I’ve been programming I always run into these growing pains where you’re going to have to rewrite your stuff. I’m going through with some help of some wonderful volunteers I’m going through a rewrite of a Rails 2 Rails 3 application. It’s a very painful process if your application is large and complex but that said, the Rails migration isn’t as nearly as hard as some of the other ones I’ve seen where the framework kind of appeared and there wasn’t any thought put into how the framework was connected and then they realize oh that wasn’t at all the right way to do it we should completely redo it a different way. And then all the syntax changes and everything else changes. It becomes more apparent the more experience you get when someone just kinda slaps a version 0.1 out there. Everyone goes and uses it then 0.2 comes out and everything is completely different. Their response is well it’s still in Beta. Then my response is come on folks, let’s grow up, why does it have a landing page and a splash page and marketing before it actually has a road map, come on.

CHARLES:

Yep

BRIAN:

Come on.

CHARLES:

True. So the next question I’m going to ask is, you’ve been in the Ruby community for a while and you’ve helped publish books, you’ve written books, you’ve given talks, what contributions to the Ruby community do you feel like you’ve made that maybe you’re most proud of or would like a little recognition for?

BRIAN:

I think getting the first contribution I ever made was getting the deployment happening on Windows and because there’s a lot of people that you’ll never hear from that actually put that into production. That went on for a long time. I actually do have a couple of lines in the Rail source code related to SQLite because the SQL lite adapter was being dumb on some connections. So that was probably like my proudest moment I was actually like hey I contributed to the Rails code base, I actually made a contribution to the open source project that I use on a daily basis. But other than that it’s really been the work that I’ve done with Rails mentors which is a community that helps Rails developers find other Rails developers who are willing to donate their time and help them out. We have a website that I started in 2009 called railsmentors.org and that’s a place where you can potentially find a mentor who’s got some time who can help you with things. The mentors can sign up and we do a little background check on a mentor to see if they’ve made a meaningful contribution, see if they’re gonna be good people, if they’re gonna be helpful or if they’re gonna be a jerk. We try to monitor those kinds of things. We can’t really do too much of that because we’re limited on the volunteers. I mean right now it’s me. I have a couple of programmers that are helping me get the site up to date but still it’s helping a lot of people. A lot of people have come through there and had some really positive things to say and so that’s sort of my contribution is helping people kinda behind the scenes get better at things. Coaching, teaching, training, those kinds of things. 

CHARLES:

Very, very cool. I think I had heard about this a few years ago but I haven’t really looked at it in quite a long time. Rails mentors I mean.

BRIAN:

Yeah, I mean it’s one of those things I’m really proud of and I’m really proud of the people who volunteer their time to do it because it’s really hard to carve out that time and to donate something that’s so precious, your time, to other people so it’s that site that I had an idea for and put it out there, but you know most of the credit goes to the amazing mentors who are the ones volunteering their time. 

CHARLES:

Yep. That’s really cool. And I think a lot of times we kind of glorify the open source contributions and the code contributions and we miss a lot of the stuff that happens in the community that just makes it a great place to be and this is one of those things in my opinion.

BRIAN:

Well thank you.

CHARLES:

So what are you working on now?

BRIAN:

I am working on a book, can’t talk about too many details about that yet but that will happen later, cause it just got off the ground. I’m currently working as a technical editor for Digital Ocean where I work on the content team so if you happen to find a Digital Ocean tutorial that helps you set up your server or something like that, I work on that team. So I work with external community authors to help them improve their writing and get their content published out there to help other people. And it’s great because I get to use all the system admin background that I have to ensure the articles work, we test every article that we do. Which is actually quite a bit of fun because you get to use those system admin skills that maybe got a little rusty if you’re a software developer. You also get a chance to look at it from the eyes of the reader, are they gonna understand this? So I get to put my teaching background and my technical background together to pull that off and that’s what I’m doing during the day and when I’m not doing that I’m either working on a book or I am working on a couple of side project code basis, Rails Mentors being one of them. I have a tool that I’m working on in Elixir to help teachers work in a classroom better if you run a classroom and you’re teaching someone development. Right now we support JavaScript and HTML and CSS directing the browser, but it’s a tool called Code Caster. It’s codecaster.io and it’s designed to be used in a live demo environment where you have a classroom of people maybe doing a workshop or something. You need to display code and you push the code out to the screens of the students. The students can also privately ask you questions. They can privately raise a flag for help or they can tell you to slow down. You can actually see a graph that says half the class says you need to slow down. It becomes a really helpful thing for student engagement and it came out of my time in a classroom teaching people and noticing that I had some students that were sort of falling behind and I didn’t really understand why they were falling behind and it was that they were too afraid to ask for help because they didn’t want to look dumb in front of their peers. They didn’t wanna admit loudly and visibly to everyone that they were behind. They didn’t want the instructor coming over to their desk and helping them through their problem because then they would feel inferior to everyone around them who was saying oh I totally got this, this is super easy. This let me do that. Now someone using the software can teach something they can – here’s the start of a program now make this program do X,Y, and Z and then the students can work on that, the student can then say hey does this look okay and that will send their code up to the teacher, the teacher can review it and give some feedback back and then send it back and the teacher can also kind of peek in on the students. If they identify a student in the classroom that’s maybe having some trouble the teacher can actually look at what they’re doing, get a snapshot of what’s on their screen and interact right there look at the code and maybe intervene privately if there’s a need to do so. So that’s where I’ve put a lot of my resources the last couple years. That’s actually not written in Rail, that’s written in Elixir.

CHARLES:

Oh, cool.

BRIAN: 

So, that’s what I’ve been doing. That and there’s this pretty cool podcast called Ruby Rouges so. 

CHARLES:

I’ve heard of it.

BRIAN:

Yeah. A lot of fun. 

CHARLES:

Alright well, let’s go ahead and do some picks. You have some picks you want to share?

BRIAN:

Yeah I gotta couple picks.

[Have you ever felt like you were falling behind? Or that the programming world is moving so fast that it’s impossible to keep up. Then there is the issue of knowing where to go to make sure you are up to date. The answer is to join a community dedicated to discussing the latest in Ruby. I mean, wouldn’t it be nice if you got Ruby Rouges all day? Well you can, kind of. We moved our Ruby Rouges parley forum to Slack. That means you can connect with our listeners and guests on a platform that you’re most likely already using. Plus we are setting up a keeping current channel that will pull 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 with each other. So come join us at RubyRogues.com/parley That’s RubyRogues.com/parley]

BRIAN:

I’m just gonna be completely and totally self serving here. I’m gonna pick two of my books. I’m gonna pick my book Exercises For Programmers. When it comes down to the books I’ve written and worked with, this is the one that I am probably the most proud of because on a daily basis I see through Twitter and other places it’s helping people Exercises For Programmers is a book of just programming exercises and they’re based on the curriculum that I used in my classrooms over the last four years teaching introduction to programming. So it starts out with the most basic program you can think of. It prompts type in your name and then it returns hello, your name, exclamation point. If you’ve never programmed before, that’s a more interesting program because you’ve got input, you’ve got some kind of processing steps where you’re concatenating strings together and you’re getting output. You know that’s a two line program in Ruby. But what if I said write that in, write an iOS application that does that. And what ends up happening is this book becomes the road map for you, the companion guide for you to learn a new programming language. Go through every exercise in that book in Elixir  like I did when I was learning Elixir. I took my curriculum for my JavaScript programming fundamentals class, I took it and I did it all in Elixir and I realized hey, this is actually going to work pretty well, not just for beginning developers to have some guidance on what kind of programs to write for practice, but also for a developer who needs to learn a new language and thinks like I do. Where they can’t think of the abstract, they actually need something to work towards. So one of the ones I have in there is a thing called Who’s in Space.  There’s an open data API that tells you who’s in space right now. The people on the international space station. Tells you their names and what craft they’re on. Right now we only have one craft but it’s still pretty cool that you can hit a JSON API and pull down the people, the human beings, that are floating around in space right now. That program was a lot of fun to do in a lot of different languages. Do it in Swift. Make an iOS app that when you open it up it pulls down who’s in space and displays it on the screen. Ok now do that in a text based Ruby application. Do it in a JavaSwing application. Then go do it in Elm. You’re going to learn so much about the language because you’re going to have to go and figure out, like in Elm, you’re going to have to figure out how to do JSON decoders. You view it in JavaScript it’s pretty easy, cause it just maps over right. In Elm you have to make a decoder you have to decode the data structure because it’s a stag type language. So you learn a lot going through this process. There’s no answers in the book either because I didn’t want to force anyone to use a specific programming language. It’s just a bunch of exercises for you to do. The other pick I’ve got is my book on Tmux, Tmux 2: Productive Mouse Free Development which I have to recommend everybody pick up, especially if you buy it directly from the pragmatic bookshelf because I’m going to be doing an update for Tmux 2.5 and if you’ve ordered it from the pragmatic bookshelf we’re going to give you the ebook update when that happens, so you’ll get the latest ebook copy of that when that happens. I can’t guarantee that from Amazon or other places but I can definitely guarantee that if you buy it direct. So with that book I’m proud of it because I love Tmux and I love the reader reaction to it, but I’m also proud because I think we did the right thing. We also gave everybody that had a copy of the first edition, an electronic copy of the first edition, we gave them an upgrade copy of that edition as well so. 

CHARLES:

Nice.

BRIAN:

It’s really important to me to show love to customers and try to do the right thing whenever you can whenever it makes sense. And in this case it made sense to me when the Tmux 1 and the Tmux 2 versions weren’t so radically different that I felt comfortable saying yeah you gotta buy a whole new book so the decision we kinda made was just make it, do the right thing by the customers so. Those are my two picks. Completely self serving picks, but you know why not? 

CHARLES:

Nice. Yeah I made my self serving picks last week. In the episode I recorded an hour or so ago. But yeah I definitely jump in here with some picks as well. Now I don’t know if I’ve, I do so many of these shows and they all go on different feeds so if I’ve picked these before, I’m sorry folks. But one of the things that I’ve been playing with and I’ve been learning, and I mentioned this on the last episode of the show, is artificial intelligence and I feel like artificial intelligence, IOT, and what was the other thing, AR, augmented reality are all kind of gonna grow up together and change the way that we interact with the world and I did a big rant on it last week so go listen to that. But anyway, I’ve picked up some resources for learning artificial intelligence and I’m just gonna pick them really quick. So the first one is the Coursera course on Artificial Intelligence. So far it’s pretty good, I’m not that far into it so I guess you can take that however you want to. I’m also not very far into the book I picked up it’s Artificial Intelligence in Python and it just walks you through writing this stuff in Python. Now I am not proficient in Python so that’s been kind of interesting at the same time but, I really want to learn these principles and I feel like there’s a lot going on there so yeah I’m gonna pick those two things. I’m really interested to see how this grows in Ruby and some of the other languages that I enjoy maybe a little bit more than Python. But Python has a lot of the scientific and mathematical libraries that people are going to base this stuff on and they’re kind of well known for that so that’s why those are the way they are. But yeah, overall I think that’s going to be kind of the next web is some combination of those things so. Anyway those are my picks. I’ll put links to those in the show notes. Brian, if people want to follow you, see what you’re working on these days, are you on Twitter, do you have a blog, things like that?

BRIAN:

Yeah I’m on a few places but Twitter’s probably a great place to start. It’s @bphogan on Twitter and my website is also bphogan.com and I try to be BPHogan everywhere on the internet, where ever it will allow but Twitter is probably the best place to get a hold of me.

CHARLES:

Awesome. Well we’ll go ahead and wrap this up and we’ll have another story for you next week. Thanks, everyone. 

x