Note: a user on the textmate IRC channel mentioned rmate, which already does much of what I was trying to accomplish. It appears to be TextMate-specific though.
Okay it's late and I don't have time for a long description, but this is my first true "hack" and I need to post about it quickly.
Do you ever find yourself logged into a remote UNIX machine from your Mac via SSH, wishing you could say (for instance) "TextMate foo.txt" and have foo.txt from the remote filesystem open in TextMate just like it would in an X Window app? Turns out this isn't all that hard to set up. There are good tools for mounting remote filesystems via SSH; all that's missing is a way to auto-mount them and launch Mac apps from the remote end. I considered writing a fancy server until I realized everything was already there with a reverse SSH connection. So I wrote a script that logs *back* into my Mac from the remote machine, mounts the remote filesystem via OSXFuse and sshfs, and launches the file via OS X's "open" command.
To make it work, install OSXFuse and SSHFS, both available for download from this page. Then enable remote login on your Mac and configure your Mac and the remote machines for password-less SSH using ssh-keygen as described here. Then download the macopen script, install it on the remote machine, and enjoy.
There are some rough edges, but I'll work those out over time. Note that the machines have to be able to route to one another, so no NAT support right now. I read a little about SSH tunneling/reverse SSH, which might be able to help when your Mac is behind NAT.
I'm not really a UNIX/shell scripting guy, so probably I'm doing all sorts of things wrong. This is the longest bash script I've ever written, if that's any indication. So feel free to fork, clean it up, issue pull requests, and what-have-you.
Good luck!
Showing posts with label Mac OS X. Show all posts
Showing posts with label Mac OS X. Show all posts
Friday, October 26, 2012
Saturday, October 13, 2012
Finding Good, Free Mac Software (Setting Up a Retina MacBook Pro for Multi-Platform Development, Part 2)
As I mentioned in the introduction, lately at work I've been on a low-budget Mac software shopping spree for a Retina MacBook Pro. I'll talk about specific apps in future posts, but first I'll discuss finding good Mac software.
(If you're impatient, go to thriftmac, by far the best curated list of Mac freeware I've found. For my rants and raves, read on.)
Enough said.
I attribute these differences to the fact that Mac developers are snobs. They choose to work on and develop for a minority platform because they believe it's better. They're keenly aware of what makes a Mac app a Mac app, and they make sure their own creations live up to their expectations. Windows, on the other hand, is what people use and develop for by default. So you get way more apps that are written simply to accomplish a certain task without consideration of how best to accomplish that task or present that functionality to the user. That's how you end up with this UI:
(Incidentally, Bulk Rename Utility is actually pretty handy if you can figure out how to use it.)
So all that was just to say that there *is* good Mac software out there, and you generally have to do less sifting to find it... unless you're searching on the Mac App Store.
This screen is full of items Apple chooses to feature. Obviously it's not going to be developer-focused, but it amazes me what mediocre software makes it into this list considering what serious apps are on the store. Whatever. Apple can feature what it wants so long as I can find what I'm looking for. So I click "Categories" and choose "Developer Tools." Here's that page:
There are some featured apps at the top, followed by a list of the most recently released/updated apps. Apple seems to try to feature a variety of application types, so don't expect to find "the standard tools" in the featured apps list; think of it more like, "oh, here's a neat little app that does X and has a pretty UI." Except for XCode, which will probably always be there. The release-date sorting gives new app some exposure but also gives Mac users the impression that Mac applications are primarily trivial, version-0.1, one-trick-ponies thrown together by first-time developers in desperate need of a graphic designer. Honestly, if I didn't know better, this list would turn me off to Mac software.
But I know there's some amazing software out there, and some (though by no means all) of it is on the App Store, so I keep looking. Clicking the "See All" link takes me to a page that looks promising because I can page through all apps in the category and I can sort! But look:
That's right. I can sort by Name or Release Date. Uh, rating maybe? Number of downloads?
So I look around some more. Back on the Developer Tools page, I click the "Developer Tools Apps" header on the "featured" section. That gets me a different list, sorted by who-knows-what (there's no "Sort By" option), but apparently featuring highly-rated apps. Lovely. I wish I knew the algorithm, but this gets me somewhere at least. But I start clicking through apps and realize that many of these are very special-purpose. Maybe they're "good" apps, but the fact that a fully-featured text editor like BBEdit shows up halfway down the list after ~30 clipboard managers strikes me as unintuitive. For all I know, my Top 10 developer apps are scattered across the first five pages because there are fifty really popular color pickers apps. And I have to process that many pages of color picker apps to find them. Gah. But okay, I'll give it a try. I click the "Next" link at the bottom of the page and... it does nothing. The App Store says I'm seeing page 1 of 5 (items 1-180 of 798), but I can't navigate to Page 2. Awesome.
So I try another of Apple's curated lists. The Developer Tools page has a link in its sidebar to "Top Free" developer apps. I click that. I get a page with 68 apps that I can supposedly sort by "Name" or "Bestsellers":
Changing the sort option appears to do nothing. But this is at least a small enough list to scan through. Note that all I have to go on here are the app name, developer name, rating, and icon. No description of what the app does, so if that's not obvious from the name, I have to click each icon individually to get the app's description. Many I don't click simply because the icon is ugly (I'm a Mac snob, after all) and the name doesn't immediately interest me. I may be missing good apps I'd download if there were any descriptive text whatsoever in this display.
There is no Page 2. I don't know Apple's selection algorithm for this page, but it seems better than the sort options available on the "All Developer Apps" page. I wish I could go to that page and sort by this algorithm.
If you know the exact functionality you're looking for, you might think to search for it via the Search box in the upper right. Let's try that. I'll enter "Text Editor." Here's what I get:
This is actually almost decent. If I knew or could control what metadata were being searched, I could eliminate a lot of false hits, in which case I might prefer to search by "Most Popular" or "Customer Rating" rather than "Relevance." But what's the first hit for "text editor" when I sort by "Customer Rating"? Pablo Draw. Of course.
And since I'm shopping on a budget, what I really want is the top free text editors, not the top text editors. How do I get that list? It looks like I can't.
What's really frustrating is that there are a lot of great Mac apps on the store. Unfortunately, the best way to find them is to hear about them elsewhere and then follow a direct link to the store from the developer's website or search for the app by name in the App Store. That's kind of sad.
(If you're impatient, go to thriftmac, by far the best curated list of Mac freeware I've found. For my rants and raves, read on.)
There's (Probably) a (Beautiful, Free) App for That
I've used Macs personally since 1995 and Windows professionally since 2001. There is undeniably more freeware and low-cost software for available for Windows machines than for Macs. But I'm not convinced there's actually more *good* software. This is a bit subjective, but I find that when I search for a free Windows utility to accomplish this or that task, most of my time is spent filtering the list to the one or two apps that don't completely embarrass themselves. On the Mac there may only be three apps that even try, but chances are that two of them will be serious solutions and they will all look and feel better than their Windows counterparts. Consider, for example, the case of WinDirStat and GrandPerspective:![]() |
| WinDirStat |
![]() |
| GrandPerspective |
I attribute these differences to the fact that Mac developers are snobs. They choose to work on and develop for a minority platform because they believe it's better. They're keenly aware of what makes a Mac app a Mac app, and they make sure their own creations live up to their expectations. Windows, on the other hand, is what people use and develop for by default. So you get way more apps that are written simply to accomplish a certain task without consideration of how best to accomplish that task or present that functionality to the user. That's how you end up with this UI:
![]() | |
| Bulk Rename Utility |
(Incidentally, Bulk Rename Utility is actually pretty handy if you can figure out how to use it.)
So all that was just to say that there *is* good Mac software out there, and you generally have to do less sifting to find it... unless you're searching on the Mac App Store.
The Mac App Store is Horrible
The Mac App Store is horrible as a discovery tool. Suppose I launch it with a general question like, "what are the most popular free Mac apps for developers?" Here's the first screen I see:![]() |
| App Store Main Screen |
![]() | |
| App Store Developer Tools |
But I know there's some amazing software out there, and some (though by no means all) of it is on the App Store, so I keep looking. Clicking the "See All" link takes me to a page that looks promising because I can page through all apps in the category and I can sort! But look:
![]() |
| Developer Tools "Sort By" Options |
So I look around some more. Back on the Developer Tools page, I click the "Developer Tools Apps" header on the "featured" section. That gets me a different list, sorted by who-knows-what (there's no "Sort By" option), but apparently featuring highly-rated apps. Lovely. I wish I knew the algorithm, but this gets me somewhere at least. But I start clicking through apps and realize that many of these are very special-purpose. Maybe they're "good" apps, but the fact that a fully-featured text editor like BBEdit shows up halfway down the list after ~30 clipboard managers strikes me as unintuitive. For all I know, my Top 10 developer apps are scattered across the first five pages because there are fifty really popular color pickers apps. And I have to process that many pages of color picker apps to find them. Gah. But okay, I'll give it a try. I click the "Next" link at the bottom of the page and... it does nothing. The App Store says I'm seeing page 1 of 5 (items 1-180 of 798), but I can't navigate to Page 2. Awesome.
So I try another of Apple's curated lists. The Developer Tools page has a link in its sidebar to "Top Free" developer apps. I click that. I get a page with 68 apps that I can supposedly sort by "Name" or "Bestsellers":
![]() |
| Top Free Developer Apps |
Changing the sort option appears to do nothing. But this is at least a small enough list to scan through. Note that all I have to go on here are the app name, developer name, rating, and icon. No description of what the app does, so if that's not obvious from the name, I have to click each icon individually to get the app's description. Many I don't click simply because the icon is ugly (I'm a Mac snob, after all) and the name doesn't immediately interest me. I may be missing good apps I'd download if there were any descriptive text whatsoever in this display.
There is no Page 2. I don't know Apple's selection algorithm for this page, but it seems better than the sort options available on the "All Developer Apps" page. I wish I could go to that page and sort by this algorithm.
If you know the exact functionality you're looking for, you might think to search for it via the Search box in the upper right. Let's try that. I'll enter "Text Editor." Here's what I get:
![]() |
| Text Editors |
And since I'm shopping on a budget, what I really want is the top free text editors, not the top text editors. How do I get that list? It looks like I can't.
What's really frustrating is that there are a lot of great Mac apps on the store. Unfortunately, the best way to find them is to hear about them elsewhere and then follow a direct link to the store from the developer's website or search for the app by name in the App Store. That's kind of sad.
Google Beats the App Store for Functionality-Specific Searches
If you know what functionality you want in an app, the best way to find the "best" app is to Google "best Mac app for X." This will usually take you to a blog post or article comparing several competitors, with links to the developers' sites. Full-blown comparison reviews with screenshots are what usually get me to my desired app the fastest. As noted above, the best app is not always on the App Store (for several reasons, many of which are Apple's fault), and even if it is, you'll find it quicker this way.Use Curated Lists From Sources You Trust
Comparison reviews are great if you're looking for a specific type of app (say, "FTP Client.") But if you just want to load up a new Mac with some good software, maybe discovering app categories that you didn't even know about, ask a Mac person. This is how I discovered several of my go-to apps. But these days I don't know many avid (no pun intended) Mac users, and my own knowledge of what's out there is a bit out of date. So I Googled for things like "Top 10 must-have Mac apps" or "Best Mac apps for developers" and found some good lists. These will usually point you to polished, mature, feature-rich apps, many offering functionality you wouldn't have thought to look for.Go to thriftmac, Now!
By far the best up-to-date, curated list of Mac freeware I found was thriftmac. The site is clean and user-friendly, not overrun with ads, jam-packed with good software, and focused on giving *good* software the exposure it deserves. As the site's author says, "No crapware." I clicked through every category, read descriptions, and clicked through to the developer sites for probably half of the linked apps. This site is wonderful. Thank you, Mark Rogers.That's All for Now
As promised, future posts will discuss what Mac apps I've settled on and why, plus what else I've done to set up my RMBP for multi-platform development on Mac OS X Mountain Lion, Windows 8, and Linux. Stay tuned!Thursday, October 11, 2012
Setting Up a Retina MacBook Pro for Multi-Platform Development, Part 1: Introduction
I've spent the last eleven years at work developing on Windows XP. It's... okay. I used to loathe Microsoft, but now the relationship is more complicated. Given my choice of any development platform and environment in the world, I would pick C#/.NET and Visual Studio. On the other hand, in eleven years,Windows hasn't grown on me at all. I know a lot more than I once did about Windows XP and probably more than the average consumer knows, but I still don't feel comfortable with it, and I certainly don't like it.
I bought Vista Ultimate to run at home via Boot Camp, and it seemed to offer few advantages over XP with a *lot* of rough edges and security-related annoyances. From what I've seen, Windows 7 is nicer, but at heart I'm a Mac guy (specifically, a "Classic Mac" guy who has mostly come to terms with OS X but still mourns the death of BeOS).
So imagine my delight when I was told I could get a Mac for my next work computer! These days, this really makes a lot of sense even for pure Windows development: Apple makes really nice hardware, and a Mac plus Boot Camp or virtualization software makes a fine PC. It makes even more sense for web development, where more platforms and browsers to test on make for a better webapp. It makes yet more sense if you're regularly connecting to Linux systems, because the command-line environment is true UNIX with all the standard goodies (including an ssh client), the Terminal app is a real GUI program that follows reasonable UI guidelines and integrates with other apps, and there's a great free native X11 implementation. It makes even more sense if you have lots of clients with iPads and there's a chance you'll need to get into native iOS development, where OS X is the only authorized development platform. Finally, in my case, it makes me more productive (or at least makes me *feel* more productive), and more happy, simply because it's a Mac.
I was pretty shocked to find out I'd be allowed to get not just any Mac but a Retina MacBook Pro. These are pretty amazing machines all around, but the display is really something else. Just like an iPhone 3GS seems perfectly fine until you spend some time with the screen on a 4S, the Retina MBP has ruined me for "normal" screens forever. The biggest downside is that not every app is retina-ready, and the pixel-doubled graphics you get for non-retina apps are so perfectly pixellated, they look worse than they would on a fuzzier, standard-resolution screen, especially when they're juxtaposed with everything else on the display.
Of course, I need to run Windows for my Windows-specific development, and I'm doing it in a virtual machine so I don't have to dual-boot. Windows 8 is RTM, and Iowa State has a site license, so I asked whether I could try that rather than Windows 7. My boss said to give it a go and just fall back on a Windows 7 VM for anything that doesn't work in 8.
Since I can technically get all my current work done on an XP machine with existing software licenses, I didn't want to run up a large bill for Mac-specific software. At home, I have a lot of handy shareware/commercial Mac apps I've bought over the years to customize this or that aspect of my system, notably DragThing, which has been my Dock replacement since before there was a Dock. It's been fun to be forced to live without some things to see what can be done with built-in functionality and freeware/open source software.
So the next several posts will be documentation of my experiences turning a 15" Retina MacBook Pro into a multi-platform, Andrew-friendly development machine on a budget. I'll probably talk mostly about the Mac side, but I'll also have some things to say about Windows 8, specifically its support for HiDPI displays and how it integrates with OS X when run under Parallels 8.
I bought Vista Ultimate to run at home via Boot Camp, and it seemed to offer few advantages over XP with a *lot* of rough edges and security-related annoyances. From what I've seen, Windows 7 is nicer, but at heart I'm a Mac guy (specifically, a "Classic Mac" guy who has mostly come to terms with OS X but still mourns the death of BeOS).
So imagine my delight when I was told I could get a Mac for my next work computer! These days, this really makes a lot of sense even for pure Windows development: Apple makes really nice hardware, and a Mac plus Boot Camp or virtualization software makes a fine PC. It makes even more sense for web development, where more platforms and browsers to test on make for a better webapp. It makes yet more sense if you're regularly connecting to Linux systems, because the command-line environment is true UNIX with all the standard goodies (including an ssh client), the Terminal app is a real GUI program that follows reasonable UI guidelines and integrates with other apps, and there's a great free native X11 implementation. It makes even more sense if you have lots of clients with iPads and there's a chance you'll need to get into native iOS development, where OS X is the only authorized development platform. Finally, in my case, it makes me more productive (or at least makes me *feel* more productive), and more happy, simply because it's a Mac.
I was pretty shocked to find out I'd be allowed to get not just any Mac but a Retina MacBook Pro. These are pretty amazing machines all around, but the display is really something else. Just like an iPhone 3GS seems perfectly fine until you spend some time with the screen on a 4S, the Retina MBP has ruined me for "normal" screens forever. The biggest downside is that not every app is retina-ready, and the pixel-doubled graphics you get for non-retina apps are so perfectly pixellated, they look worse than they would on a fuzzier, standard-resolution screen, especially when they're juxtaposed with everything else on the display.
Of course, I need to run Windows for my Windows-specific development, and I'm doing it in a virtual machine so I don't have to dual-boot. Windows 8 is RTM, and Iowa State has a site license, so I asked whether I could try that rather than Windows 7. My boss said to give it a go and just fall back on a Windows 7 VM for anything that doesn't work in 8.
Since I can technically get all my current work done on an XP machine with existing software licenses, I didn't want to run up a large bill for Mac-specific software. At home, I have a lot of handy shareware/commercial Mac apps I've bought over the years to customize this or that aspect of my system, notably DragThing, which has been my Dock replacement since before there was a Dock. It's been fun to be forced to live without some things to see what can be done with built-in functionality and freeware/open source software.
So the next several posts will be documentation of my experiences turning a 15" Retina MacBook Pro into a multi-platform, Andrew-friendly development machine on a budget. I'll probably talk mostly about the Mac side, but I'll also have some things to say about Windows 8, specifically its support for HiDPI displays and how it integrates with OS X when run under Parallels 8.
Subscribe to:
Posts (Atom)







