After two decades of working with PC’s, as I’m into this mood of trying out different things now, I’ve decided to get me a Mac a couple of weeks ago. I’ve been doing Rails development for a few months, and I kept hearing and seeing people say that the Mac is a much better platform for that, so I decided to give it a go, since now that’s what I’m doing fulltime.
Which Mac to get?
I have two big monitors hooked up to my PC, so getting a Mac Mini and hooking it up to one of my monitors was one of the options. But then what do I do when I have to go on trips, clients, conferences, etc.? I need a laptop. But then again, which one?
I friend of mine had just purchased a MacBook Air; the 13-inch screen one. At first I thought it’d be too small for me, but playing around with my friend’s it actually felt alright. The machine seemed really fast despite its size, the battery lasts for several hours, and a thought dawned on me: if I had one, I could hook it up to one of my big monitors when working from home, and I’d had a very portable laptop to take with me on trips. So that’s what I did: 13-inch MacBook Air, with 4Gb of Ram.
How to get used to it?
My prior experience to using a Mac had been about 20 minutes playing with somebody else’s machine. Because of that, I decided to just set it up on the side initially, so I’d do most of my work on the PC where I’m 100% comfortable, and just go to the Mac in order to install programs, try small things out, get used to the keyboard and multi-touch trackpad, etc.
I have to say, several times, I feel totally useless. Main reason being just now knowing how to do the most simple things: for instance, where’s the context menu (right-click menu)? What’s with delete/backspace? Where’s home/insert/pageup/pagedown…? How do I work with the Terminal (console) window? Can’t tell you how frustrating it is to get stuck in those things when you’re trying to get something done.
In order to speed up me getting used to it, I had to quickly set it up to make it somehow feel like it does when I’m using Windows configured to my taste. I guess that takes me to what’s probably the single most important thing when using a computer…
An Application Launcher
A very long time ago I was already very particular about finding ways to quickly launch applications or navigate to places on computer. On Windows, for a while I’ve used “Start->Run…”, WinKey+R, the Address bar tweaked into the taskbar, etc. Then I’ve found SlickRun, which I’ve used for several years. Then, when showing and talking about SlickRun two years ago at a Virtual Brown Bag, somebody showed Executor, which I totally embraced every since. In fact, when I’m building a Windows machine, right after installing the Operating System, Executor is the very first application I install; this is, easily, the application I use the most on Windows (I should really write a post about how I use that tool…).
So, I needed something similar for the Mac… really bad! Alfred was it. I haven’t fully explored this tool yet, but it gives me 80% of the features I use most of the time in Executor. The free version has the “application launching” features, but I’ll be getting their PowerPack version soon, which adds the “folder navigation” features (which I use a lot on Windows), among other things. Ah, it also adds “clipboard history”, which on Windows I’ve been using ClipX for.
Another things that Alfred gave me is the ability to lock the screen (sort of like WinKey+L on Windows), which is another thing I use every time I walk away from my computer.
The Development IDE
Obviously, as I’m going to be primarily using my Mac for development, I needed an IDE. I understand people use TextMate, MacVim, etc., but I needed something that can get me productive as quickly as possible. Like I’ve mentioned a couple of weeks ago, I’m using RubyMine on Windows for Rails development. As it turns out, that tool also runs on Mac. Sweet. The main thing for me has been to just remap the keybindings so it somewhat resembles what I have it configured on Windows.
The Console
I’ve been using the command prompt (DOS) on the PC ever since I started working with computers, and then PowerShell in the last two years or so. I had never used Bash before (well, I did try it for 30 minutes a few months ago, got stuck, and gave up). Well, now I do need to learn it, since that’s what I get in the Mac’s Terminal window. I need to review Joshua’s presentation on Bash, as well as watch PeepCode’s Meet the Command Line and Advanced Command Line videos.
Source/Version Control
For source control, I’ve been using Mercurial. On Windows, TortoiseHG works really well for me. On the Mac, I’ve started to use MacHG; I can’t say I’m 100% happy with it, but it may still be just be been uncomfortable with the environment as a whole. One thing that got me at first is that I needed to install Mercurial in order to be able to access the “hg” command in the Terminal window. After I did that, things worked fine.
One more thing: when trying to open a project in RubyMine that has a Mercurial repository, we’re asked to provide the path to the hg executable, which I had no idea where that’d be. Found it here. One of my buddies pointed out I could also run “which hg” on the Terminal window, which tells me the path to the given executable.
Also, Mercurial only accepts commits if it can find a username. In order to do that, we need a global .hgrc file in the “home” directory containing those settings.
Diff Tool
BeyondCompare has been my Diff tool of choice for several years (for both files and folders). Unfortunately, it doesn’t run on Mac (as far as what I’ve read, it’s because it’s written in Delphi, which doesn’t run on Mac…). After asking for recommendations, I got to DeltaWalker, which seems very similar to BeyondCompare. I’m using its trial to see how it feels. It’s supposed to have easy integration with Mercurial and Git, so I’m hopeful, as BeyondCompare integrated really well with my workflow on Windows.
MongoDB
I’ve been using MongoDB on my Rails projects. In order to get it going, I’ve followed the instructions here. Which has led me to Homebrew. In order to get Homebrew going, I needed XCode (5 bucks). After that, all was good.
Where’s Bundle Install?
Source code in place, database, Ruby (already comes in the Mac), so I’m ready to do Rails development, right? Well, no. As soon as I try running bundle install, things don’t quite work like I expected. No biggie; followed instructions found here, and I was back in the business.
Text Editor
I have tried to use the text editor that came with the Mac, but didn’t like it. I then tried TextWrangler, which has been only frustration (seriously, I can’t find a way to open a file in the darn thing, for crying out loud!). I’ll be getting TextMate, as that seems to be everybody’s favorite. Also, eventually I’ll get into MacVim, which sounds like something I’d like very much.
More Tools
I’m also going down Ben’s Ultimate List of tools for Mac users. Lots of good stuff in there.
Performance
I’ve noticed that running RSpec/Cucumber tests on my Mac is a LOT faster than on my super powerful PC. I don’t know why that is, but I can easily perceive that.
Summary
I’ve made the decision to only use my Mac for Rails development moving forward. Things run faster, more smoothly, etc. I’ve been using it as my primary development machine for the whole last week, and am enjoying it.
#1 by Martin Salias on July 29, 2011 - 6:36 pm
Hey Dude!
Long time without talking to you, and you are now a Rails Head! 😎
I’m a big Ruby fan also, although I like Sinatra better than Rails. I was also using a Mac since a few years ago until recently I had a problem and I’m temporarily on a Windows notebook and I’m about to implode!
A couple tips to try:
– Command + space gets you to Spotlight which is the only launcher I need on the Mac
– Try using TextMate for some time and you’ll find yourself enjoying the absence of an IDE. I like RubyMine as a nice piece of engineering, but the cool thing about Ruby or Python is that you don’t really need an IDE.
– Get used to the console and you’ll never need a VCS client anymore. Mac OS Terminal is a really nice console when you get used to it.
And, man, I never had a computer as slick and efficient as my (snif) MacBook Air. I’m getting one of the new models soon, and I can’t wait to have it in my hands!
Hope to see you soon, Claudio, and best luck in your new life!
Send my regards to Markus and the crew when you see them.
#2 by claudiolassala on July 29, 2011 - 7:47 pm
yeah, you see, everything’s changing! 🙂
I’ll give it the Spotlight a try. It does look interesting. However, it still looks like I’ll need to get the powerpack version of Alfred, for things like clipboard history.
TextMate is only my list, even though I’m giving Vim a try first.
Yup, I do quite a bit of my stuff from the command line, but there are certain things related to VCS that I rather do it in a visual tool, such as seeing the log, branches, diff, merging, etc.
I did get a MacBook Air, and I’m loving it!! I hook it up to one of my big monitors and it works great. And if I’m on the go, this is a very portable, lightweight, and still fast machine that I can do serious work on.
Thanks for the best wishes, man. Keep in touch! 🙂
#3 by steve portock on August 5, 2013 - 7:44 am
Claudio,
I am a .net guy crossing over, what set up did you use for ruby/mongo development?
I am having a hard time getting a remote connection to work, I don’t want to run my db server, I was going to use mongolabs for that, trying to connect to that from my local mac is turning out to be a huge headache, nothing seems to work.
I was trying mongoid, now trying this locally just to see if I can narrow down whats the problem.
Thanks for any help you can offer.
Steve
#4 by claudiolassala on August 5, 2013 - 5:07 pm
Hi Steve,
I assume you’re using a Mac. I’ve been just running mongo db on my local box for development. On the Mac, I used “brew install” to install mongo. I pretty much followed what’s on the official site: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/. And I’m also using Mongoid for my models. Once in a while I do get some versioning problem when a new version of mongo or mongoid comes out, but overall, at least in the main project I’ve been working on, I like this approach better than having to cope with database migrations.
I hope this helps.
#5 by steve portock on August 5, 2013 - 5:18 pm
Claudio,
Thanks, the code below will hook you up if you want to run your mongo at a hosting company rather than locally. Just pay attention to the spacing on things, this works as of today.
I am working off this tutorial.
http://asciicasts.com/episodes/238-mongoid
This is my mongoid.yml
development:
sessions:
default:
uri: “mongodb://username:password@ds037348.mongolab.com:37348/mongoblog”
options:
safe: true
# Configure Mongoid specific options. (optional)
options:
test:
sessions:
default:
uri: “mongodb://username:password@ds037348.mongolab.com:37348/mongoblog”
options:
consistency: :strong
max_retries: 1
retry_interval: 0
Ping me if you run into issues, maybe as .net guys we can work thru things or come across stuff the other has not seen. I really dig how you can just come upon stuff from a blog lol. I really need to start putting up my own stuff, if I can get time away from having to get projects out the door.
Take care and thanks.