CHUCK: There’s no such thing as a dumb question.
DAVID: Challenge accepted.
[This episode is sponsored by Hired.com. Every week on Hired, they run an auction where over a thousand tech companies in San Francisco, New York, and L.A. bid on Ruby developers, providing them with salary and equity upfront. The average Ruby developer gets an average of 5 to 15 introductory offers and an average salary offer of $130,000 a year. Users can either accept an offer and go right into interviewing with the company or deny them without any continuing obligations. It’s totally free for users. And when you’re hired, they also give you a $2,000 signing bonus as a thank you for using them. But if you use the Ruby Rogues link, you’ll get a $4,000 bonus instead. Finally, if you’re not looking for a job and know someone who is, you can refer them to Hired and get a $1,337 bonus if they accept a job. Go sign up at Hired.com/RubyRoguesPodcast.]
[This episode is sponsored by Codeship.io. Don’t you wish you could simply deploy your code every time your tests pass? Wouldn’t it be nice if it were tied into a nice continuous integration system? That’s Codeship. They run your code. If all your tests pass, they deploy your code automatically. For fuss-free continuous delivery, check them out at Codeship.io, continuous delivery made simple.]
[This episode is sponsored by Rackspace. Are you looking for a place to host your latest creation? Want terrific support, high performance all backed by the largest open source cloud? What if you could try it for free? Try out Rackspace at RubyRogues.com/Rackspace and get a $300 credit over six months. That’s $50 per month at RubyRogues.com/Rackspace.]
[Snap is a hosted CI and continuous delivery that is simple and intuitive. Snap’s deployment pipelines deliver fast feedback and can push healthy builds to multiple environments automatically or on demand. Snap integrates deeply with GitHub and has great support for different languages, data stores, and testing frameworks. Snap deploys your application to cloud services like Heroku, Digital Ocean, AWS, and many more. Try Snap for free. Sign up at SnapCI.com/RubyRogues.]
CHUCK: Hey everybody and welcome to episode 181 of the Ruby Rogues Podcast. This week on our panel, we have David Brady.
DAVID: Four out of five dentists recommend me.
CHUCK: I’m Charles Max Wood from DevChat.TV. And this week, we have a special guest, Luis Lavena.
LUIS: Hello guys.
CHUCK: Do you want to introduce yourself really quickly?
LUIS: Yeah, sure. I’m the maintainer, well I can say the creator of the RubyInstaller project. And I’ve been maintaining for the last seven years, the project, trying to provide a stable and working environment for those that want the adventure in Ruby language on Windows environments.
DAVID: I’m just going to say, that’s a fantastic segue from Ruby, RubyInstaller, Windows, and absolutely nothing on the show. [Laughs]
CHUCK: Okay fine, whatever.
CHUCK: So, I have to say that as far as RubyInstaller goes, my first dev job, fulltime development job, they gave me this big honking Windows laptop. And by big honking, I think the things weighed six pounds. So, setting things up included using RubyInstaller because they were a .NET shop. So, it wasn’t a Linux machine. It wasn’t a Mac. It was a Windows machine. And my first dev environment, I was using RubyInstaller.
LUIS: Wow. That was how long ago?
CHUCK: Probably about seven years ago. I’d been dabbling in Ruby before that, mostly programming on other systems.
LUIS: Yeah. So before this RubyInstaller got called RubyInstaller, it was known as One-Click Ruby Installer.
CHUCK: Yes, yes.
DAVID: The OCI, yeah.
LUIS: Yes. Yeah, and the problem is we got a couple of bug reports saying that it takes longer than one click to get installed. So, why is it called One-Click?
LUIS: And that was a reason to change the name.
CHUCK: It takes me four clicks. No!
DAVID: And then in some cases we got up to seven clicks to install.
CHUCK: That’s funny.
LUIS: Yeah, yeah.
DAVID: You should have just been the multi-click installer.
CHUCK: There you go.
LUIS: Well, we tried to figure out if we can show ads during the install process. So in a sense, like a help the whales or the penguins or the environment, collect money for that. But that didn’t work out. So, we decided to change the name.
CHUCK: I do remember that it did take some time to install. Not terribly long, but it wasn’t like click, click, go. It was click, wait, wait, wait, wait, go.
DAVID: It doesn’t say One-Click Fast Installer, right?
DAVID: I think I used the OCI back in 2004. And yeah, you got Ruby. I want to say 1.6. I could be making that up. If it was 1.8, it was an early 1.8 like 1.8.1 or something.
LUIS: Yeah, it was 1.8.0, I think it was at the time.
LUIS: The cool thing is that at that time, the One-Click Installer was bundling a bunch of things, so basically once you have it…
DAVID: Didn’t it also give you, didn’t it give you Rails as well?
LUIS: The latest versions try to install the versions of Rails around 0.6 of Rails. But it didn’t work out because since you might use a different adapter, et cetera, it was complicated. So, the [unintelligible], that was Kurt at that time, and they decided not to continue that route and allow you to install out the gems on your own.
LUIS: Yeah, so the project is more than 10 years old.
LUIS: It was started by other folks that maintain it through the years. And then I inherited the project from Kurt Hips back in 2007.
LUIS: And I’ve been cranking releases since then. And at the same time adding stuff to Ruby, trying to make it better, which is a complicated process I must say.
CHUCK: So, I’m wondering. When you install Ruby on Windows, besides making the Microsoft guy, the guy that founded the company, besides making him cry, I can’t remember his name, what does it take to get it installed? Do you actually, I don’t remember there being a GCC or anything on Windows unless I put it on there myself. And I did that in college a little bit. But is that what you do? Do you put a GCC on there and then build it? Or is there some other process behind getting Ruby to run on Windows?
LUIS: Yeah, the original binaries for Ruby were provided using Visual C, which is the Microsoft C Compiler that comes with Visual Studio and all that suite of tools. Now, the question is how we get it on RubyInstaller. The problem is that for you to build stuff, you need a compiler, something that you can just check it out. On Linux you do apt-get or any type of package manager. And you get a compiler and that’s the sole compiler for your entire
Linux installation. On Windows you can have multiple versions of compilers installed on your machine.
And the one that was used by RubyInstaller at that time was 10 years old, was from ’96. So, that meant that compiler optimizations, quality of code, and even be able to get a copy of the compiler for you to compile things was almost impossible. So, we decided to switch to GCC. And the project which is Minimal GNU for Windows, which is called MinGW, we decided to switch to it. And well, that unleashed its own hell in a sense.
LUIS: People complaining because they already managed to get their Visual Studio running. And that was crazy times. But optimization-wise, the performance obtained by GCC nowadays is pretty much the same performance that you can obtain with Visual C in relation to [unintelligible] code, branching off the compilation, et cetera. The code quality, the outcome binary is in similar quality. And the good thing is that it’s free, that you can go and obtain the package, that you can decide to play with it, that you can automate, bundle the binaries with something else. You don’t need to download a specific thing from Microsoft website, pay a license, do manual steps. You just do it with the pre-packaged binary that we distribute.
LUIS: So, it made things more easy for us to automate the entire process. Actually, the RubyInstaller right now is self [09:09] meaning that you only need to have a running Ruby version in order to compile things entirely. So, it’s going to download the compiler, compile the dependencies that are needed, compile Ruby, and then generate you an installer. So, it’s basically anyone can go and check it out and build their own installer at this time.
LUIS: So, oh you mentioned Bill Gates [chuckles]. That was the guy that…
CHUCK: Yeah, I was talking about Bill Gates but I couldn’t remember his name. So, he cried…
CHUCK: When you put this Linux-y programming language on Windows, I’m sure. Anyway, I remember back in the day, I really haven’t worked on Windows for a while other than just showing people “Here’s how you install Ruby on Windows.” And then they generally don’t have too many problems getting gems installed. But I remember back in the day, it was a problem. You actually wound up installing the Windows versions that would connect to DLLs instead of trying to do some kind of build process for things like Nokogiri and stuff. How has that story changed from then to now where now it seems like you just ‘gem install nokogiri’ and it seems to know the right thing to do?
LUIS: Yeah. There were multiple steps in this. One was fixes to RubyGems to detect properly platforms. And since Bundler uses RubyGems in that sense, it detected things properly. Then it was trying to, well here’s the thing. Most of the gem authors are running Linux or Mac. So, they don’t have a Windows machine in order to go test and compile things for Ruby developers. I can go in length to all the projects that mention “If you use Windows, you’re on your own,” or…
LUIS: “Switch to Mac,” in a sense.
LUIS: And basically there is no solution for them. So, we tried to figure out how to help them, in a sense not to be burden to support Windows but at the same time to make the life easier for developers to provide binaries for Windows. So, we came out with something called rake-compiler which is a gem that you use on your project. It gives you some structure and allows you with some sort of tools that you can install on your machine to cross-compile from your Mac or Linux environment to Windows and target Windows to provide those binaries.
Basically, MySQL, MySQL2, [BG gem] which is a [11:38] client, bcrypt, SQLite libraries, all those gems are using this to provide cross binaries. So, provide already pre-compiled binaries for Windows. And you just go and run it and there’s no compilation required. Other gems are not listed there. They’re not adding that infrastructure because conflicts with gem developers or, conflicts with gem developers mostly. [Chuckles] You can still download the DevKit which is the compiler tool chain that includes GCC, all the supporting libraries. And you can compile most of the tools. You can use that to for example install EventMachine when there’s a prerelease that doesn’t have precompiled binaries. Or you can build your own version of SQLite to use a different version of the SQLite binary supporting library.
So, all those things happened in the last three or four years. It got much better. But still, there are cases where gems are not, they’re not working out of the box on Windows. And contributors send patches to correct some definitions or some platform situation like checking for Win as Darwin platform instead of checking for Darwin or checking for MinGW as platform.
LUIS: It’s something similar to this issue on why Microsoft decided to call Windows 10, instead of Windows 9. And that was because there’s a lot of code out there that is checking for ‘9’. So, if the version of Windows starts with ‘9’, it’s going to assume that it’s Windows 95 or 98 and is not Windows 9. So that’s why they decided to go with Windows 10 for versioning.
CHUCK: I just thought they wanted to be cool like Jim Weirich.
CHUCK: Because the first fully-released version of Rake was version 10. Anyway, yeah, that’s really interesting. And I think the tool chain, the compile tool chain story, is an interesting one. And it’s, I have to say that I’m actually very happy with the way things have gone. I’ve done a couple of workshops at different conferences, especially open source conferences locally, on how to build stuff in Rails. And it’s nice that it just seems to work. How does the RubyInstaller project relate to the RailsInstaller project?
LUIS: Well, the RailsInstaller project actually takes the RubyInstaller binaries and just bundles the extra gems on it. That’s basically it. It bundles Git and a couple of other components in order for you to get up and running with a project. But it uses the same binaries from RubyInstaller.
So, when we released RubyInstaller we released two packages, actually three. One is the installer. And you just double-click, next, next, and you’re done. But I suggest you read the instructions, that you read the screens, you pay attention to them. The second one is a binary that you, if you are more expert instead that you just download that package, extract it in some directory, and you could use it. The cool thing is that you can relocate the binaries. So, you can put it on a pen drive and go to somewhere else with a computer and run Ruby from the pen drive without installation.
And the third other package that we do, is separate the documentation, the generated documentation, into another package, because the documentation takes a huge amount of size when you un-compress. So, it’s around 25 megabytes. So, we separate it. So, if you want to automate a server installation you are going to use the binary package and not the installer. And you might not need the whole file to run it on the server.
LUIS: So, that’s why. And things got a little bit more complicated now that we have two versions of the installer, one that is 32-bits and the other one that is 64. Windows 64-bit, it’s capable to run both versions without any performance issues. You can run 32-bits without any degradation. You can run 64-bits. The only difference is that you can allocate more memory on the processes on the 64-bits version. So, we released two versions of the installer, two versions of the binaries, and one single documentation package. So, people can go grab those things and build their own thing.
There is another project on, I think it’s similar to RailsInstaller that was created by some folks in, I think it was Philippines, to create for their workshops, to create a Bootstrap environment. I don’t remember the name. Something around Rails Bootstrap project or something like that. I don’t remember.
DAVID: I wanted to backtrack a little bit. You talked about the DevKit gem. And one of the things that I’ve noticed that’s kind of going dark in the Ruby mindshare, the collective consciousness of Ruby development, is how to compile things from C and how to build your own extensions. And it’s actually been removed from the Pickaxe books, which makes me very sad, but I understand why they’re doing it. But if you have the 1.8.7 Pickaxe, there’s an entire chapter on extending Ruby and embedding it from C.
And I wonder. If I’m building a gem that has some stuff that’s got to be compiled, can you at a high level walk me through what I would have to do to make it build and run on Windows? Is it very easy? Can I just cross-compile it from my Mac or my Linux machine? Or do I need a, obviously I would want a Windows machine to test on. But can you explain how do I get my C code from out of Emacs on Linux and into a binary on Windows?
LUIS: Sure. That actually got pretty easy nowadays. You can do bundle init to initialize a gem. Then you can add the asset dependency of your gem rake-compiler which will allow you to have a structure to your extension, to your C extension. You will need to write the C code for the C extension. There are a couple of guides for that.
LUIS: And once you’re done you can compile natively. And today, well in the last couple of months, there’s been a CI environment for Windows called AppVeyor. I don’t know how you pronounce that in English. But it allows you to run natively your process on a Windows server. Rake-compiler. So, my pronunciation is not good. So, one of the things that you can do is once you have that set up you can test it on this continuous integration environment. And then you can use another component which is rake-compiler-dev-box. It’s similar to the rails-dev-box that you can just put and then cross-compile your project. It already has the compilers installed in it.
LUIS: So for example, you can do your own work creating the gem, running tests locally. Then you can set up AppVeyor to do the cross-compilation to the native compilation on Windows, see that it passed. And then you can just use rake-dev-box, the rake-compiler-dev-box to cross-compile and release the gem.
DAVID: That is way less terrifying and painful than I was expecting it to be. This basically boils down to grab rake-compiler and run it. And write your C code and then run it to compile and you’re done.
LUIS: Yeah. The only thing that you need to be aware of is the Unix system in your C code. And so far for example, if you need to write a gem that depends on external libraries, first you will need to figure out if that dependency can compile on Windows. There are some dependencies that are not possible. So, there’s no solution for those things.
LUIS: But there are others. Like for example, there is no fork on Windows.
LUIS: There’s no fork function on it. So, you will not use that. But other things are ported, supported natively. So, there is actually what you can see as a drawback to those types of things, if you need to depend on a third-party library, most likely that library already works on Windows. And not just to support any other C developer, but also to support .NET developers and so on.
LUIS: So most likely, there is already a binary or you can compile the package to work on Windows directly.
CHUCK: So, in the email you sent us, I’m going to change directions a little bit here, you mentioned, is it URU, which is basically a Ruby version manager for Windows?
LUIS: Yeah. Uru is like what you get with RVM or change Ruby, chruby, or something like that. It provides you the basic functionality to change the active version of Ruby running on your environment. And as you know for example, RVM in the past has been written entirely in Bash in order to be able to modify the current shell process that you’re working on. So, something similar happens on Uru which is using batch processes or PowerShell to modify your current environment without doing subshell in a sense, without going deep into nested shells.
LUIS: So, the good thing about Uru is that it’s cross-platform. I use it on OS X. And I also use it on Windows to change versions. And they give me some consistency when I’m working on projects. Actually one of the things that I love, to train my memory to do the same things, so when I’m using Windows or when I’m using Mac, I can type it in the same commands and it works.
LUIS: I even have a fake sudo script to remind me that I’m not sitting in front of my Mac computer.
LUIS: So, just to avoid me being dumb, like not noticing that I’m in front of my PC. So [chuckles].
DAVID: I have an executable shell script on my Linux box called dir, D-I-R. And if I type it from Linux, it pops up a big thing that says, “Hey stupid, you’re on a Linux box. Use ls.” And one Windows, you guessed it. I have a batch file called ls.bat that says, “Hey stupid, you’re not on Linux. Use dir to get a directory listing.” And it’s yeah, I see no reason why your shell shouldn’t be hostile to you.
LUIS: One of the things, as you mentioned just to, you have your memory trained in some way, people that are coming to Ruby, they are being pumped with a lot of things coming from Linux environments. And they’re like, let’s say they’re just getting started. They just closed their Visual Studio window and jumped into this command prompt that is the version of the terminal on Windows. And they have no idea how to do things. And there is a steep learning curve to go from nothing to be actually efficient working on the command line independently and where you are.
For example, people that say, “I have this Windows problem,” and immediately suggest, “Use Linux,” they ignore that there is a big knowledge that they don’t have. Meaning that it’s not just knowing about Linux and getting that installed. It’s also knowing about Bash, knowing about all the other alternatives, knowing how to get it running, what editor they’re going to use, et cetera. So, there are a lot of things hidden in that single sentence that discourage people from actually using Ruby. So, your shell being aggressive, it’s something that we can do once you’re familiarized with it.
LUIS: But people who are aggressive to you, [chuckles] that’s something different. [Chuckles]
DAVID: Oh yeah, yeah. I should point out that having your shell be hostile to you is only acceptable if it’s a form of personal self-hate. [Chuckles] Like if my shell was hostile to you that would be unacceptable. But if it’s hostile to me, then that’s totally fine, right? If I were to sit down and run Uru Ruby execute thing, and it came back and it said, “Don’t use Uru stupid,” I would be like, uninstall all of the things, right? I would just violently uninstall everything. Yeah, if you’re going to have a hostile system, it should be consensual is what I’m saying. [Laughs]
LUIS: Yeah, yeah. [Chuckles]
DAVID: You should be, “I want to train myself. I want to learn this. And I’m okay if the machine gives me a punishment shock when I do something wrong.” But yeah, I do agree with you. And actually, there was a time when, ten years ago when I was first getting into Linux, where I had the dir.bat, or the dir shell script and the ls.bat. And they would actually, they would put a banner up that said, you type D-I-R and on Linux it would say, “I think you meant ls.” And then it would execute the ls with all of the arguments that I typed to dir. So, if I typed dir *.pdf or whatever, it say, “Hey, I think you meant ls *.pdf,” and then it would give me the listing. And that was a lot friendlier. And when I was originally trying to learn Linux I felt that was a lot less hostile and a lot less… And now that I’m older and crankier, I need bigger sticks to beat myself with.
LUIS: Indeed. [Chuckles]
LUIS: I do the same.
DAVID: Yeah. It’s not cool for other people to beat me with sticks. But if I hit myself with a stick, that’s okay. [Laughs]
LUIS: It is a tricky thing. I deal with this on a daily basis for the past, I will say more than I was involved in Ruby. So, I knew Ruby when I was working on Linux environments building systems. I come from a past that is involved with private technology. It’s [ProQuest] systems. And being there forces you to use Windows. So, I needed to switch to Windows to work on those things. I was using Linux at the time. I used [solid] Slackware using floppy drives, floppy disks, when I was in the 90s.
DAVID: Oh, yeah, yeah.
LUIS: Yeah, so those types of things. The learning of those types of things takes a really big amount of time. And what I see nowadays is that, well as you mentioned, we are cranky on ourselves like with a bigger stick. But there’s people being cranky to others, too. And that has a negative effect on… I always encourage for adoption of Ruby.
LUIS: On any environment to do simple things or to do more complex things. For me, it serves the purpose of [writing] applications when I was working on that market. And nowadays I use Ruby on a daily basis. And being not inclusive into the different options and the way people react to those things, it’s really negative. I see it as a negative. Maybe I’m getting deep into a conflict, into a conflicted subject.
LUIS: So maybe, we shall step back, laugh, and talk about something else.
DAVID: I’m feeling a little bit guilty that I’m being exclusive to myself. No, I don’t have the attention span to go that deep into meta.
DAVID: But no, I think you’re right though. There’s a big difference between what we do to ourselves to teach ourselves and what we do to make things inclusive to other people. Speaking of inclusiveness, is there any truth to the rumor that I’m starting right now that the RubyInstaller is actually a subversive attempt to get people out of Windows and into Linux by foisting open source projects onto them?
LUIS: I don’t know where you heard that…
CHUCK: Please say yes, please say yes.
LUIS: But it’s not true.
DAVID: Well, I was going to cite my source as the pre-call, Luis.
LUIS: Well, I’m going to phrase it differently.
CHUCK: He’s smarter than us, Dave.
LUIS: Take the example of OpenOffice. If you want people to migrate from office suites that run on Windows and you want people to migrate, you need to provide them the tools that they’re used to use in order for you to then switch their platform. So, what you can do is start slowing the migration from the office suite into LibreOffice or OpenOffice for them to start familiarizing with the tool. And then the underlying operating system becomes irrelevant. So, in a sense you are changing the entire infrastructure there using the entire solution there using, switching for something that you can either manage or support or whatever type of thing, or costs less.
LUIS: Without affecting them in a disruptive way. It’s not something that, you are trying to fix an Excel formula and someone comes and tells you, “Oh, you just need to use LibreOffice,” and they don’t give you the solution. So, in a sense RubyInstaller is that thing that you’re saying. I’m not going to repeat it.
LUIS: But in a sense to show that you can run Ruby on Windows, make you discover this new area. Something that, if you’re coming from a .NET or a Java environment where you never interacted with anything other than a Windows environment, using a tool that encourages you to start learning those things or to show you those things and the power associated with those, it becomes really, really powerful. And once you do that, making the switch to Linux is less disruptive.
LUIS: It affects less the person and affects less the outcome. They will see the productivity coming from that decision instead of the upfront learning curve.
LUIS: So, I didn’t say it, but yes.
DAVID: [Laughs] Excellent, excellent. I can neither confirm nor deny, but yes.
CHUCK: Nice. So, I’m not a Windows developer. But I’m sure there are some people who listen to the show who are or who can contribute in a way that would make RubyInstaller better. How can people get involved in the project?
LUIS: Everything that we do on the RubyInstaller project is, it’s open. It’s inside the one-click GitHub organization, one-click being the joke. [Chuckles] And everything is there, from how we built the installers to right now the initiative of building the new website. As I mention on every release, we have a massive amount of manual steps just to announce the changes. So, it takes time to collect that information, to upload the files to places to download the releases, et cetera.
And the idea of people contributing is from being able to respond to questions that people are asking, to the point to do copywriting, to do copy corrections like, “You know, this expression here is wrong because I needed to do this, A, B, and C, instead of what you put there, which is X, Y, Z.” So, people can feel free to open pull requests to improve that. The idea with the new website is to have something not on a database but something on the files that you can just fork it or just use GitHub to edit or open issues for that to be improved. Or just helping out with people on the mailing list.
We have a Google Group mailing list for RubyInstaller which people join to ask questions from having problems with gems to connecting with different database servers. It’s a wide range of questions. And people, the community is small but very helpful on that. You could just search for something that’s been asked before or just ask it. And you will be pointed by the people that are involved. Yeah, I think we’re building a small community. We’ve been building that for the last couple of years. People are using more and more RubyInstaller, at least the last three months of almost a million downloads of different versions of Ruby proves that at least people download it. I don’t know what they’re doing with it. But they are downloading it. [Chuckles]
LUIS: And maybe they’re bots trying to…
CHUCK: Well, one thing that I’ve seen within the last little while is a rapid uptake in the number of these outreach programs.
CHUCK: And we talked about them on the last few shows, outreach programs like RailsBridge or Girls Who Code or some of these others where it’s, “Hey, let’s go and install Ruby or install Rails and teach people how to start to program.” And I would be willing to bet that some of that uptake that you’re seeing is the response of the community trying to bring more people into it.
CHUCK: And the fact that we’re bringing non-technical people in or less technical people in means that best case scenario, they have a Mac so can just say okay, RVM, go. But most people are on Windows. And so, the outreach programs help them to get that set up through things like RailsInstaller or RubyInstaller.
LUIS: Yeah. There is another initiative with is Rails Girls.
LUIS: I participated a couple of months ago on Rails Girls Buenos Aires event being a coach. And specifically, the case was Windows machines, the team that I had to work with had a Windows machine. And I cheated. What I did was come with a pen drive with everything installed there into an executable form that you just extracted into your desktop and you’re good to go. And everything is RubyInstaller. All the gems for Rails, all the components necessary, even ImageMagick, for you to get up and running. And that was like I cheated. While others were fighting with RVM and different versions of their Mac or Linux and all those kinds of things, we had the system up and running in three minutes. So [chuckles].
DAVID: Do you have documentation anywhere of how you built that pen drive?
LUIS: I actually involved a couple of manual steps. But I have a markdown file that describes it, yeah.
DAVID: I would love to get together with you after this call and put together a blog post and a screencast or whatever. I would love to be able to just say, “Hey, you want to do Windows? Run this. Do these things and stick this on a pen drive and you’re good to go.” We were talking earlier about exclusive versus inclusive and yeah, I talk about being abusive to myself. But when you talk about including other people, if you can say, “Grab this. Drop it on a USB key and you’re done,” that is fantastic, especially for people coming in from Windows where they’re almost afraid of, “How do I set this up? What do I run?” They’re not used to using command.exe, the shell or the terminal.
DAVID: That would be fantastic. I would love to get together with you afterwards and document that.
DAVID: That would be amazing.
CHUCK: Yeah, and maybe also provide an image so that people can just…
CHUCK: You know, they just slurp it and drop it. They don’t even have to set it up.
DAVID: I will admit to being selfish. I want that pen drive.
DAVID: And I’m willing to document it for the community in order to get it.
LUIS: How much are you willing to pay for it?
CHUCK: [Laughs] I like you…
LUIS: Oh, I’m just kidding.
CHUCK: I like you all the more for that, Luis.
DAVID: Yes, yes.
LUIS: No, what I was, I keep saying the jokes of why I do all this. And it’s because I was in that situation at some point, not having enough tools and everything. And I follow the, maybe I’m old school but I follow the mantras like “Scratch your own itch.”
LUIS: And I suffered that much doing those things that I decided just to try to fix it. And it is hard. It is hard to, there are many challenges that people faced nowadays that for us that we’re already beyond the bump of the learning curve. For us it’s easy. But newcomers have a really hard time to grasp all this, like for example Bash. What is Bash? Which is RVM? How do you get RVM? Oh, cURL. What is cURL? To download it and then like, “Oh, you need to edit your Bash profile. What is that?” And all those kinds of things that you see on these events to be, people asking what you’re doing and you’re doing on autopilot.
LUIS: And then you realize that there are so many things that we give, like it’s granted, that is people are not actually paying attention to it anymore.
LUIS: Yeah. So yeah, sure, we can negotiate. I mean, I can give you the instructions for that.
LUIS: And yeah, and it will be great if you record a screencast, yeah. That will be perfect.
LUIS: People will benefit from it.
LUIS: One of the things that I…
DAVID: Crud, we talked about that on the air so I’m totally on the hook now, aren’t I?
CHUCK: You know what? Maybe what we could do is set something up like we did for our code reading. And that way, people can come alongside and watch and comment and all that good stuff.
DAVID: Oh, that’ll be fun. That’ll be fun. Alright, so yeah.
LUIS: I would like to watch that. I’ve been [unintelligible]…
DAVID: Watch it? You’re going to be on it.
LUIS: Oh, really?
LUIS: So, here is RubyInstaller. Just kidding. Trying my presenter voice.
DAVID: That’s alright.
LUIS: So, too bad we don’t have Avdi. I’m a fan. I was going to ask for an autograph to say that he loves me or something like that. Anyway [chuckles].
DAVID: I could probably twist his arm.
DAVID: Get him to sign you something. [Laughs]
LUIS: That would be awesome. [Chuckles]
CHUCK: Don’t hurt him, Dave.
LUIS: So, one of the things. Did I mention about the website initiative? That is not something that is live, but it’s something that…
DAVID: Oh, not yet. Talk about that, because you’re looking to do a makeover of your website? Well, you talked a bit about how difficult it is to just update the website when you want to release a new version. Is there more to the website initiative that you want to do?
LUIS: Yes. One of the things is you remember Ruby-Lang website got a redesign not long ago. And that redesign involved moving from Radiant which was the CMS they used at the time to Jekyll in order to be able to have the multiple languages and more contributors be able to provide pull requests with edits.
LUIS: The idea of this is move to Ruby’s other website on the same path. But instead of going Jekyll do the complexity of getting Jekyll to run on Windows, we decided to go with a minimal tool that the project itself is going to download for you. So, you basically just have RubyInstaller clone the repository and then you can preview, create new articles, and do new releases. Since we have the automated process of building the releases, we generate the release information file from that and then we place it on the website. We do the commit and that gets live into the website. So, the idea is make it, streamline things a bit more.
LUIS: So, the website is part of the one-click organization. There is a brand new design in a sense which is not fully completed, but gives you an idea of what we’re aiming. Trying to showcase the latest releases, trying to show you if there is, if you don’t load a version that it’s already dead, like 1.8.7, they’ll warn you about it. You’re not going to get updates from it. So, you download version 2 or you download version 2.1 for example, and point you what compiler tool chain goes with it just in case you mess things up.
Sometimes I forget about that and then I put the wrong DevKit on the wrong version of Ruby. And things don’t compile. And it’s like, “What’s wrong with this?” And it’s me doing things wrong. So, the idea is on the website trying to improve that. And also, there is another, a small initiative which is making the DevKit installation process simpler, which is the one that I was just complaining about. When you install gems, we detect that, we find that you need a compiler. And we detect that, if you have a compiler running or not.
LUIS: And if you don’t, it provides you the link to go to download the DevKit, how to follow from there. And that’s provided by RubyGems infrastructure. They provide you all that bootstrapping elements. The idea is to make that even much smarter and download the right DevKit for your environment so you don’t mess things up. So, reduce manual steps and trying to make people more happy. It’s fun that we receive a lot of comments about downloading DevKits and not working for them, and then realize that it’s the wrong one. Even there is a big legend saying what version you should download.
LUIS: You just click around. As you say, click, next, next, next, next.
LUIS: In a sense. So, those are the two things that are open right now that I would like to have something deployed by the end of the year. There is another initiative which is getting back, we used to have a continuous integration environment to build Ruby itself and to have that tested, so it provides a better test coverage for a native Windows build.
LUIS: And we’re working with some folks on that trying to get that back and running, which takes time. It’s server setup, workers, because it needs to get up working, running natively, all those kinds of things.
LUIS: So, it takes some times.
CHUCK: Well, we’re getting close to needing to wrap up. But I do want to ask really quickly about Chocolatey, which is something that you mentioned in the email. It looks really cool, the apt-get or brew for Windows. Do you want to explain what that is and maybe how you’re thinking about using it with RubyInstaller?
LUIS: Yeah. So, as you mentioned for example on brew you can download packages, binary packages for tools that you use either on the command line or if you use brew-cask you can get applications. Well, Chocolatey, I don’t know how to pronounce it. [Chuckles]
LUIS: Chocolatey. Ugh, man.
CHUCK: It’s okay.
LUIS: [Chuckles] provides you the same time of solution. It packages tools like for example seven six, which is a compressor. Or it can provide you support for Ruby or the DevKit. So, in a sense you can run similar to what you can run for getting brew. You run a similar command to get Chocolatey installed on your system. And then from there, you just do ‘choco install ruby’ and you get the version of Ruby. You no longer care about downloading the installer, doing double-click, next, next, next. And you no longer care about that.
They’re right now working on a Kickstarter project. The idea with the Kickstarter project is to be able to build a better infrastructure. They have a massive number of packages, more than 2000 packages right now, that covers from libraries that you can use to tools that you can download. You can think about Chocolatey as an extension of NuGet which is the package manager for .NET that allows you to download dependencies that you can use. And in this case it’s something for end user applications that you can download and use. Like for example, download Vagrant or VirtualBox, those types of things.
The idea with having RubyInstaller working properly with Chocolatey, they already have the packages but support all the other versions is that allow you to switch versions. And you just download one single commit to get all the versions that you need installed. So in a sense, if you’re familiar with the command line, you can use it. Chocolatey is also used for automation. So, if you need to automate a server deployment, let’s say a Windows server deployment that needs several packages, you can do it also with Chocolatey. They have a nice automation script. And there are other projects associated with it that take advantage of it.
So, the Kickstarter project, the idea is to invest more on this and to be able to have a better command line, better integrated with the new technology that’s coming on Windows 10 which is OneGet in order to get binary packages from the Windows Store. This is like another source of binary packages. I think I’m saying it right. So yeah, it’s like you can think of Chocolatey being the effort of what Homebrew does or what apt-get does for you from Ubuntu or Debian people. So, in a sense it’s not losing that power, the command line power, and automation that you can get.
So, let’s say you need to get a Windows machine, your development on Windows machine, you use it. I use it to install from the text editor to the dependencies that I use for the worker machine for the continuous integration systems that run on Windows. So, I think it’s worth it.
CHUCK: Very nice. I just want to point out too that the Kickstarter campaign ends basically five days from when this releases. So, if you’re listening to this around when it comes out and you’re thinking to yourself, “Oh gee, I might want to go check that out,” if this is something that will really help you out, you should definitely go and check it out. And go and support the project if you need it or you think it will be good for the community. So, just add some urgency there. [Chuckles]
LUIS: Yeah. It’s now in the last couple of days. And they’re half through the goal.
LUIS: So, it will be great if people definitely, some of the things that people complain Windows that it requires a lot of manual work, and these solutions, these are the solutions to those problems. And having people actively working those solutions in order to simplify your life are totally worth the effort.
LUIS: For example I backed them. I’m not interested in the hoodie or on the t-shirt. I’m interested in what they offer. And if you work in a company, in a .NET shop or a Ruby shop that runs on Windows for any reason, the idea is have professional plans for you to grab binaries of all their tools. So, you might want to just take a look at those plans in order to get support to those, and automation. I think it’s totally worth it. You should check it out.
CHUCK: Very cool. Alright, well is there anything that we should have asked about RubyInstaller? I have one more question, but I want to make sure we cover RubyInstaller.
LUIS: Sure, go ahead.
CHUCK: Alright. So, my question is, given where RubyInstaller and RailsInstaller and some of these other tools, Uru, are for solving the pain points that people have had in the past with Windows, what is the largest barrier at this point to people coming into Ruby on a Windows environment?
LUIS: Wow. [Chuckles]
CHUCK: Where are they getting stuck now?
LUIS: Well, they’re getting stuck on a couple of things. They’re getting stuck in documentation or the lack of an updated tutorial to cover from zero to productivity with up to date tools. I tried to do that a couple of times. But the problem with tutorials is that they run obsolete in a couple of months. We have a Wiki that contains instructions. But what normally happens is that people just skim the instructions and just download things and they don’t, because they skim instructions, they don’t know what to do well afterwards. So, I was thinking RubyInstaller put like a paywall but a read wall on RubyInstaller that you read it, and once you actually read the thing you can download the installer. But that was just a joke.
I think it’s mainly documentation. The contribution on documentation and up to date guides to cover the process. Things have changed a lot in the last couple of years. And they’re going to continue to change. And change is something that we cannot avoid. It’s great that we are continuing evolving, find those problems. I think the project will benefit more from people that suffer those things and be able to give feedback.
I think one of the biggest drawbacks is when you’re working in a vacuum space, that you work on a tool that you think, and the approach that you’re taking is going to solve the problem. But then when you release it, people just complain about the way you did things instead of coming before during the process and telling you how they’re doing things in order for you to take that as a sample to work out how you build the tools. So, I sent over a couple of requests for comments for RubyInstaller trying to improve that, those scenarios. We gather some feedback and those are the things that we’re working right now.
But we need people to speak out. The only barrier there is just get a GitHub account to comment on issues or join the Google Groups mailing list in order to comment. That’s the lowest barrier. People that are using the tools can go and chime in and say, “This is my personal opinion,” or, “This is how I use it or this is how I think it should be used.” And we will appreciate that feedback. So far feedback has been low on those types of things. And since we’re working on a tool that’s going to benefit everybody it will be great if everybody can join and contribute to the idea. So, that’s it. More people joining and contributing, at least with ideas.
There is, challenges to get things running on RubyInstaller are pretty much automated. And if it’s something that you don’t like, pretty much everything is written in Ruby code. So, you just go and change it and it’s done. So, the entry, the lowest point for entry is just be willing to contribute.
CHUCK: Awesome. Alright well, should we go ahead and do some picks?
CHUCK: David, do you want to start us off with picks?
DAVID: You bet. I have just one pick but I’ve been out for three weeks so I’ve got one really good one. I’ve been thinking about this for a while now, actually. I’ve been kind of jealous of Avdi’s beer picks. I don’t drink but I love the thought and the care that he puts into these picks. And I know Josh and Saron have picked cookbooks and foods in the past. And I don’t think Katrina picked any food-related picks but I know personally that she’s a bit of a foodie. And I got thinking about this and what I could…
CHUCK: You’re going to ruin my life, aren’t you?
DAVID: I’m about to ruin your life directly through your sinuses. I want to start doing hot sauce picks. So, I’m going to do a little bit of an introduction so this will be a longer pick than usual. Those of you that have missed my long picks, here we go. I’ll try to keep this under about four minutes though.
With hot sauces, the thing about it is that the big complaint that I hear from people is they’re like, “I don’t like hot sauce because I like to taste my food.” And I just want to look at these people and say, “No, it’s not like that.” If you can’t taste your food, you’ve put a sauce that’s too hot for you on it. And the reality is that you can train yourself to higher and higher amounts of heat. And the best way to do that is to use a sauce that’s too hot and dilute it down. If you use a weak sauce, actually there’s another fair argument that people that say, “I like to taste my food,” are probably putting sauces on their food that are not hot enough. So for example, tabasco sauce is actually not a very hot sauce. But all it is, is cayenne pepper and vinegar. And so, to get any kind of heat on your food, you’ve basically got to pickle your food in vinegar.
DAVID: And so, people say, “Well I like to taste my food.” Okay, if you’re saying you can’t taste the food because all you taste is pain, okay well pain is a flavor. [Laughs]
CHUCK: It’s a very good flavor.
DAVID: As I like to put it, pain is a spice and it can be used well. But yeah, with some of the weaker sauces you get so much of these other ingredients mixed in that it messes up with the flavor. And so, I need to introduce another thing that some of the foodies out there will be familiar with. But that is the Scoville scale. Now, this is a metric of how hot something is. And what the Scoville scale is, is how many times they have to dilute something before somebody cannot taste that there’s any spice in the food at all anymore. So for example, tabasco sauce has a Scoville unit rating of about 2500. That means you have to put 1 drop in 2500 drops of water and you can’t taste that there’s any tabasco in the water anymore. It’s been diluted too much. Okay?
Point of reference for, and this is a racist term, but I’m a white person and it was told to me by an actual Thai woman. So, I’m going to say that as a white man I get to won this phrase, jalapeños are the top end of spicy food for white people. Okay? If you don’t like spicy food, you know what I’m talking about. If you have any friends that are from South America or from Thailand or any other, like Saron talks about, watching people eat Ethiopian food which is often very spicy. Those kinds of people, they eat spicy food all the time. And people of European descent typically don’t. Okay, so a jalapeño is kind of at the top end of our range, right? So, just for a benchmark jalapeños are about 5000 Scovilles. So, twice as hot as tabasco sauce, okay? Everybody on board here?
Okay, so one big problem with hot sauces and especially the super-hot sauces is that they have to be concentrated so much that they often taste, Saron dared me to come up with a really good phrase for this so here we go. For those of you that have missed my sense of humor, a lot of super-hot sauces taste like sphincters pickled in gasoline.
DAVID: They just taste awful.
DAVID: It’s like, it really is. You’re sitting there…
CHUCK: I’m going to find my mute button. Keep going.
DAVID: Yeah, yeah. So, a lot of people are like, “I like to taste my food. I don’t want to taste gasoline and buttholes,” right? And that’s what a lot of these sauces do. They absolutely wreck your food, okay? So, if we know that you can train yourself to a hotter, the ability to eat hotter and hotter foods. And you know that there, and some of you are just learning this now, that there are sauces out there that don’t taste awful, ridiculously awful, then what is a perfect beginner’s serious hot sauce? And that is my pick for today.
My pick for you is the hot sauce that got me addicted to serious hot sauces. And that is Blair’s Sudden Death Sauce, okay? This is a pure clean heat with an amazing buzz aftertaste. It doesn’t really have an aftertaste but you get this buzz after you eat it. And I think it’s because it’s got ginseng in it, but I don’t know. What I do know is that it’s so hot that it doesn’t really have a flavor, okay? This means that you put it in some food and then you eat the food and you taste the food. But there’s also hot to it. Now it’s a spicy food. And you can take things that have never been spicy before and make them into spicy foods. And it’s amazing, okay?
I do have to give you a caveat with this. You need to use this sauce one drop at a time. And you need to mix it into food. You don’t ever want to get this straight on your tongue or on your fingers, okay? This is a hot sauce that I have accidentally gotten just an ink stain on my finger. And an hour later I noticed my finger was itchy and sore. And about two hours later, I had basically like a sunburn on the side of my finger. I had actually burned, this is a hot sauce that is so hot it will burn your fingers. It will burn your skin, okay? It is 105,000 Scovilles. So, 21 times hotter than a jalapeño.
For those of you playing along with the home game ghost peppers are the big, “Oh, ghost peppers are the hottest thing in the universe.” They really are. Those are a million Scovilles, okay? So, this is a hot sauce. It is way too hot to eat straight. A friend of mine accidentally spilled a drop of it into a dry hot skillet. She was about to do a spicy stir fry. And she didn’t know this would happen. She heated up the skillet. She put a drop of the hot sauce into the skillet first. One drop. She teargased her entire house. She had to leave the kitchen and she had to open the sliding glass door open, all the windows in the house. It was awesome. This is a dangerous food. Okay?
DAVID: But, and this is the other thing that I’ll, any hot sauce picks that I’ll do in the future I will do much shorter. And I realize I’m way more than four minutes. I think I’m pushing 10. I’m sorry guys. Here’s your food…
LUIS: This is interesting.
DAVID: Here’s your food pairing for Blair’s Sudden Death Sauce. I’m going to give you two because you need this bonus.
DAVID: The first food pairing is for all the bachelors and college students out there. Top Ramen or cup noodle soup. I’m not kidding. What you do, I like to do this with cup noodle soup. Shake up the bottle of hot sauce and uncap it. The bottle has a narrow neck on it so when you uncap it there will be this little bubble of just a thin bubble of sauce in the top neck of the bottle. You take a toothpick and you pop that bubble. And now you have a toothpick that is stained red. It doesn’t really even have a drop on it. It’s got half a drop on it.
You take the toothpick and you just drop it in the bowl of ramen or you put it in your dry cup of noodles and then pour the boiling water over the toothpick as you pour it in the noodles. You now have spicy ramen or spicy noodles. It tasted amazing, because it still tastes like pork or beef or chicken. But it’s got this tongue-piercing heat to it. And as you, if you want it hotter you put a bigger drop. If you want to get insane, you can actually start to pour directly from the bottle. But please don’t do this first. Use just the toothpick first. Okay?
The second food pairing which will absolutely blow your mind, and if this does not get you addicted to hot sauce, nothing else will. Hot chocolate. I’m not kidding.
DAVID: Make yourself up a big nice 12 ounce cup of Steven’s Hot Cocoa, like mint or hazelnut. It’s okay if it’s a flavored hot chocolate because remember, the hot sauce doesn’t have a flavor. So, you make up a nice creamy cup of hot chocolate and do the same toothpick thing. You can use a little bit bigger toothpick because there’s some sugar in the hot cocoa and that tends to but the heat a little bit. Stir that into your hot cocoa and drink it. And what happens is you take this sip, you get the warmth and you smell the chocolate. You can’t smell the hot sauce at all. You get this burst of sweet chocolate-y flavor and then something awful happens to your mouth!
DAVID: As the hot, spicy kicks in and grabs you. And then it lets go. And you swallow and you taste the chocolate again. And it is this amazing, any foodies out there know that some foods you eat, you just had this experience when you eat them. And hot cocoa with Blair’s Sudden Death Sauce in it is an experience. It is absolutely amazing. And I have used this trick to get people who have been terrified of hot sauces absolutely addicted to hot sauces. So, there’s your gateway drug. Blair’s Sudden Death Sauce mixed with hot cocoa.
LUIS: It comes with a warning label?
DAVID: Yes, it does. Yes, it does.
CHUCK: Don’t breathe this.
DAVID: Yeah. Seriously, don’t breathe it and do not eat it straight. It is not recommended. And I have to point out that I did not know this. My very first time using this sauce, I did not know you were supposed to dilute it. So, I was eating spicy hot wings and I poured about a tablespoon onto a wing, like ketchup. Just blork, onto a wing.
DAVID: And ate it straight. And I absolutely had seizures. I was screaming. I was kicking. I drank all of the water on the table. I would just about grab the water off of the table next to me at the restaurant. Liz is laughing her butt off. And then she got afraid. She’s like, “Are you okay? Are you okay?” And I’m like, “No, no, I’m not okay.” And she’s like, “Oh my gosh. What do I do?” She started to panic because this stuff was so crazily hot. Now it’s funny looking back. It’s hilarious. In the moment, I actually was kicking my feet and swinging my knees. I convulsed and I kneed the table leg of the table that was bolted to the floor. And I actually bruised the underside of my kneecap. This hot sauce was so hot it nearly broke my leg.
DAVID: I’m not kidding when I say, “It’s so hot that I limped for a week after it.” [Laughs] So, there’s your pick. That was an epic pick. And I apologize for taking so long, but I felt that the story was worth the trip. So, there you go.
CHUCK: Very nice.
LUIS: Cool. Yeah, I don’t have a challenge with spicy food. But I…
DAVID: Yeah, you’re from Argentina, so you know what spicy food’s about, right?
LUIS: Yes, we do. [Chuckles] Having habañero …
DAVID: Habañero, yeah.
LUIS: Habañero sauce. Well and other types of peppers are really hot. A little bit more than jalapeño, but nothing like this. I will like to try my next trip.
DAVID: Mmhmm. Cool.
CHUCK: If you ever make it up to Utah, he’s happy to indoctrinate you.
DAVID: I’m happy to do that. So, habañero peppers, just so you know, all hot sauces over about 100,000 Scovilles are made with habañero peppers in them. And habañero peppers 20 years ago, everywhere we could find them they were about 100,000 Scovilles. So, that’s about the heat in this sauce. The ghost pepper is a species of habañero pepper. It’s the bhut jolokia pepper. And it is a type, it is a breed of habañero pepper. And it’s just super, super hot. It’s 10 times hotter than usual habañeros. And yeah, it comes in at a million Scovilles, just insanely hot.
LUIS: Yeah, I have seen the effects of the ghost pepper on people.
LUIS: I watched some YouTube videos and like, it’s insane.
CHUCK: Yes. [Laughs]
DAVID: The ghost pepper is funny when it happens to other people.
CHUCK: Then they hold up their tongue and show you the hole in it?
DAVID: Yup, yup.
LUIS: [Laughs] Yeah.
CHUCK: Alright. I’m going to derail this conversation a little and go into my picks.
DAVID: Let’s do that. Let’s do that.
DAVID: Let’s get on with the show. [Laughs]
CHUCK: So, when I said don’t breathe this, it was a reference to the video series, “Will it Blend?” And if you haven’t seen this, make your life better and go watch it because it’s really, really interesting. They’re videos made by a company called BlendTec. I believe they’re actually located here in Orem, Utah which isn’t too far from here. It’s the city I grew up in. And they have these monster blenders, like the Vitamix blenders. “We can blend anything.” And they’re really funny because they are. They’re, “Don’t breathe this.” And so he’ll blend up an iPhone or something. And so, the fumes or the glass dust or whatever is stuff that you don’t want to breathe. So anyway, if you’re interested in whether or not you can actually blend up a, whatever it is that you’re interested in blending up, go check it out. Fun videos.
LUIS: That reminds me. Some of, you know those infomercials from a couple of years ago, those knives that can cut cans and metal and then you can use to cut a tomato? I never made a salad with all that, with cans and all that kind of things. But the blender reminds me, the BlendTec blender reminds me of those types of commercials showing breaking things. I think that the fun part is…
CHUCK: Yeah, the Ginsu knives or whatever.
LUIS: Yeah. I think the fun part is just seeing the iPhone…
CHUCK: Yeah, they blend an iPhone.
LUIS: Yeah. That is insane. Like, I see that…
CHUCK: Yes. It was like battery chemicals. Don’t breathe that. [Chuckles]
LUIS: [Chuckles] Yeah. So, my pick. I have a single one that I’ve been playing on my spare time. It’s called, it’s a point and click game for the iPhone and Android. It’s called The Silent Age. If you haven’t heard of it, they released a first episode last year. And proven to be kind of like the old 90s point and click adventures like Indiana Jones in a sense. And allow you to solve a mystery, and the mystery being around you, around work, and around a couple of things that happen in the story. It’s a captivating narrative and a nice story line. And they released this year the second episode which put a wrap and give a conclusion to the story. And it’s not to spoil the thing, but it has to do with time travel.
So, if you like point and click stories and you like to be involved in something like read the narrative, I think it’s an indie shop that created it. But there is a lot of story writing in it. It’s a clean story, has some good connections between all the elements. So, it’s not like some games that are just games to spend the time. This one has a nice thing. So, it will take you maybe a couple, not a couple of hours but maybe a day or two to complete the story. It’s not that long. But it’s a really nice story. So, that’s my pick. And if I may say another one?
LUIS: It’s Omniref. Omniref, it’s a website that provides annotated code for Ruby. So, you can think of, in a similar way to what you can do on GitHub that you can go and comment on commits. Well, in this case you go and comment on source code for Ruby itself or some gems. And you can add comments with questions or you can add clarifications to those things and allow the authors perhaps to [unintelligible] the documentation from another point of view.
So, you can search for example for array map and be able to see the documentation of it. And at the same time, see this code and have comments of people describing the internals or describing for example how the garbage collector on Ruby works, for example. And describe to you any of the constants there, what they do. So, for someone that likes to dig into internals and they want to, not to feel alone by doing it because digging into the Ruby source code internals is scary, I recommend visiting Omniref and be able to scan that. Scan for comments, see contributions from asking questions about what these mean, and having others, the community, responding or assisting you. So, it’s like an interesting twist on crowd commenting or crowd documenting code in a sense. So, those are my two picks.
CHUCK: Very cool. I have one more pick, and that is ‘The Legacy Journey’ by Dave Ramsey. I’m a huge fan of Dave Ramsey. I think listeners to the show would know that. But Dave Ramsey is, he writes a lot about, he has a radio show about finances and talks a lot about finances. But anyway, it has pretty profoundly touched me, this book. And I just want to share it. I also want to give a warning that if the religious Christian theme isn’t really your cup of tea, then this may not be the book for you. But I think it’s a healthy view on wealth. And so, if you want to read it for that reason then it’s terrific. But he does cite a lot of sources from the bible and things. But overall, it was a terrific book. If has really changed the way that I think about business, about money, and about my faith. So, if that’s your kind of thing and you’re interested in it then I can’t recommend it highly enough. And that’s pretty much it.
So, if you’re listening to this, you did miss the webinar that we did last week when this comes out last week talking about Rails 4.2 with Jeremy Kemper and Eileen Uchitelle, I am going to publish it though. So, you should be able to see it online. And then I am working on some other live training type things. So, if you’re interested in that then keep an eye out. You can go to RailsPowerUp.com. And as soon as I have another event lined up, then it will be there so you can sign up and get information about it.
Also if you just text “Rails” to 38470 then I’ll send a text message to your phone as well and let you know when the next event will be.
DAVID: Give that again, text what to what number?
CHUCK: “Rails” to 38470.
CHUCK: And yeah, one last announcement. I set up a voicemail line. So, if you want to leave feedback for the show, that way you can do it. 877 223 0342. And I’m really looking forward to having things that we can play back on the show. But yeah, so if you’re interested in that then go ahead and call that number. And Ruby Rogues is extension one. And it’ll prompt you for that as well. So anyway…
DAVID: What’s on extension two?
DAVID: Oh, very cool, very cool.
CHUCK: Anyway, so that’s pretty much it. We’ll wrap up the show and we’ll catch you all next week.
[This episode is sponsored by MadGlory. You’ve been building software for a long time and sometimes it’s get a little overwhelming. Work piles up, hiring sucks, and it’s hard to get projects out the door. Check out MadGlory. They’re a small shop with experience shipping big products. They’re smart, dedicated, will augment your team and work as hard as you do. Find them online at MadGlory.com or on Twitter at MadGlory.]
[This episode is sponsored by Ninefold. Ninefold provides solid infrastructure and easy setup and deployment for your Ruby on Rails applications. They make it easy to scale and provide guided help in migrating your application. Go sign up at Ninefold.com.]
[Hosting and bandwidth provided by the Blue Box Group. Check them out at Blubox.net.]
[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.]
[Would you like to join a conversation with the Rogues and their guests? Want to support the show? We have a forum that allows you to join the conversation and support the show at the same time. You can sign up at RubyRogues.com/Parley.]