The $80 web development workstation
skofo.github.io
skofo.github.io
It's missing basic interface features that have been bog standard in Ubuntu/Windows for years, like any sort of proper window management. Hell, the maximize button actually doesn't work- it has such inconsistent use that you have almost no hope of actually getting what you want out of it. To get even decent window management, you have to buy software off of the app store.
Then, you have the fact taht you still functionally have a folder-based OS, which feels a greater need to present me with buttons to alter the view of a given folder, how icons are arranged, etc- all useful things no doubt, but things you don't change on a per-folder basis that often- while literally not having an "up one level" button. At all. You either have to know the keyboard shortcut, or you have to go to the Go menu. The back button isn't always dependable for this interaction(especially if the finder was just opened), so of course this just screws the whole pooch.
Seriously, the most I can get anyone to offer as to what makes OS X such a great operating system, is that it's Unix with no driver problems. If that's the most we can claim, can we stop acting like the interface design is halfway decent? Windows Vista had better interface design than this. That's just sad.
The iPhone is still my favorite phone. But I wouldn't take a Mac OS X box over a Linux box for professional development. That said, my opinion on these things changes constantly, so who knows how I'll feel in a year.
Anyway, that was what it was in 10.6. Nowadays Ubuntu does all those things too to a certain extent, and it works without painful maintenance on a desktop machine. (I ran OSX on my desktop for a few years, it was very painful to upgrade, and apparently not in accordance with the EULA)
Still a great laptop OS though. And it runs rather well on macbook pros, which are the superior hardware choice in the laptop market, in my opinion.
If you only use Apple hardware, sure. Otherwise, it has the same driver issues as any OS.
For a browser this could be full screen. For a word processor this could be just enough to see the page.
kind of. it has the path button, does the same thing, though with two clicks :(
With Windows there is too much and ugly chrome around everything, slow and buggy views.
Apple's view on the maximize button is that it should maximize the window to the width of the available content, and not to the screen. Today lot of the widescreen resolutions and screensizes are much bigger, so doesn't necessarily make sense to maximize every app. It's designed that way, even you might disagree.
Add the "path" menu to your Finder window toolbar. You now have access to all parent folders of the current directory in two clicks. It's one of the first tweaks I make setting up a new OSX install. Along with dumping "all my files" from the sidebar and as the new window default.
After using Ubuntu for most of the summer don't get me started on the UI inconsistencies I experienced there. I don't disagree with you that there are things in OSX which also don't make sense, by my overall impression is that the UI of OSX is much more refined than what's available for Linux out of the box. YMMV.
"You either have to know the keyboard shortcut, or you have to go to the Go menu."
As in, yes you can go up a level, but not in the way that many expect, and/or not without switching to the keyboard. Neither of which are marks of amazing interface design... which I think is his point.
Then you can go up a level, or many levels.
The worst example of where this doesn't help is the Zoom button. Not the maximise button, as it's never been called that, and doesn't actually maximise - it resizes the window to the most useful size. For example, my BBEdit window gets resized to the width of the text, but the height of the screen. Of course, many apps just make it fill the screen (incorrectly), leading to the 'maximise' button instead.
(Also, you can command-click on a window title to get a menu that allows you to go up. Two clicks instead of one, but it's there. This works on folders, files, and URLs)
In all my years of working with text editors, I don't think I've ever found myself thinking "This viewport is too small. I wish I could quickly resize it to just the width of the text, and maybe the height of the screen, or maybe something else, depending on what I'm doing." When my window is too narrow or whatever, I usually just (a) maximize it (which you can't to on osx), (b) dock it to half the screen (windows+left or windows+right on Win7+/*buntu, but not on osx) or (c) just quickly drag it over. So Apple effectively forced us to use only option (c), which is probably the least useful of the three sane options. The only other option is to use a feature that doesn't really do what we (or I, anyhow) want.
Amusingly enough, the only things it doesn't really work well for are things that reflow their content arbitrarily to fill the window: text, HTML, and terminals. The three things developers spend all their time looking at!
I use Sublime Text 2 on OS X. When I click on the zoom button, it maximises the editor window to the entire width and height of the screen.
And if you actually think that Ubuntu's woeful file manager is anyway comparable to OSX Finder then I really can't help you.
I agree that the OS X interface is overhyped but most of the problems you mention can be fixed in a couple of minutes. I use a free window manager to do basic manipulation and enabling the folder hierarchy view in Finder offers a better solution than the up-button. These are insignificant tweaks compared to what one would need to get a Linux desktop set up just so (although that has gotten easy enough to the point that it isn't a big deal for slightly technically literate users, but I still wouldn't install Ubuntu on my parents' notebook).
But underneath the interface is good old BSD-flavored Unix. Macports is an okay solution for package management. That combined with iterm and vim is all I care about - all running on rock solid hardware.
People give macports a hard time, but I've never been sure why. It does binary or source distribution. It finds and fixes broken library linkage after upgrades. You can prune your install tree easily with the leaves target. All the functions are under one command, and it comes with a clear and concise manpage. I've used ports, pkgsrc, apt and rpm, and am generally very happy with macports in comparison, especially since default binary installs..
Anyway, I'm not trying to start an argument or anything - your opinion is your opinion. Besides, even if OS X users don't like macports for package management they can always use homebrew (or fink, I guess).
Let's just not get that far.
Huh. I have honestly never taken notice that the OS X Finder lacks an 'up one level' button, and I've been on board since 10.0. I guess it's because I have used column view exclusively since day 1, so I just scroll left to see the entire hierarchy, and can one click to almost anywhere off the $PWD.
Icon and list views are awful - I was glad to leave them behind with Mac OS 9 (which also did not have an 'up one level' button, now that I think about it)..
I'll try to explain what I like about the Mac and what bothers me when I use Linux. Since you mentioned window management, I'll focus on that, comparing it to Ubuntu 12.
1. Window resizing in OS X is way nicer. It's actually possible to resize a window with a scrollbar from the lower right (on Ubuntu, the click target is literally one pixel wide). Resizing from the left edge doesn't result in weird tearing and graphics artifacts like it does in Ubuntu and Windows. The command key allows you to drag, resize, and do other interactions with windows without bringing them to the front. OS X also supports centered and fixed-aspect ratio resizing (shift and option keys); if this is possible on Ubuntu I couldn't find it.
2. The way hiding / minimization works in Ubuntu is very confusing to me. There doesn't seem to be a way to show all the minimized windows for an app, except for the weird and jarring Exposé knockoff that you get when you click on one of the icons in the Launcher.
3. Workspaces in OS X are much nicer. To move a window to another workspace in OS X, I just press it against the relevant side of the screen, or swipe up to enter Mission Control and drag it there. On Ubuntu, you can't drag windows to another workspace; you can instead use the context menu or press control-alt-arrow, which causes the window to disappear with no indication of where it went.
4. It's hard to distinguish the foreground window from other windows in Ubuntu. The only thing that seems to change is the titlebar. Even the text selection color is the same for foreground and background windows.
5. Focus stealing issues in Ubuntu are rampant. Click on a slow launching app like LibreWriter; when it finishes launching it will jump in front of the window you are currently using, and steal the keyboard focus. This happens occasionally on OS X and it bugs the hell out of me. I don't think I could stand an OS where that is the default behavior.
There's certainly some places where I find Ubuntu to be nicer, and some places that OS X falls down. My overall impression, though, is that OS X is more polished, and that Ubuntu has more clumsy knock-offs of OS X features.
Your post prompted me to give it another try. I found that you can drag windows between workspaces in the "mini workspace viewer" in the upper right, which is definitely an improvement over Ubuntu. However, you can't move them by simply pressing the windows against the side of the screen.
The focus stealing issues are the same as in Ubuntu. Start launching an app and switch to another window; the app will jump in front when it's done launching. Argh!
However, I prefer to re-map CapsLock to <Hyper>, and define <SHIFT>-<HYPER>-Up to move window to workspace up, and so on.
Can't help with the stealing, sorry.
Anyways thanks for the tip.
In common it seems with most features of the UI KDE has a setting for that!
It's in the settings with the "focus policy" slider (click at one end, hover at the other) labelled as "focus stealing prevention". IIRC it was in KDE3 too.
I can't speak for other DE/WMs, but I didn't want to leave someone suffering the pain of trying to resize using the corner/edge drag handles - they really are unacceptably small.
Edit: I can also add that clicking on the workspace switcher or pressing Super/Windows+s in Unity brings up a screen that lets you drag windows between viewports. I'm sure it's not what you're used to, but I find it to be sufficient.
#3. When I do ctrl-alt-left/right/up/down, it moves the workspace with me, so you retain focus on the window the whole time, plus it shows a brief display and arrow showing the window moving. It might still be weird to use hotkeys, but I definitely know where the window went at all times.
I disagree wholeheartedly. It does everything I want and I get out of OS X exactly what I want - namely, it gets out of the way. It's uncluttered and I don't have anything distracting me. All I see on my desktop is my currently running application and the dock (with icons set to tiny). I don't want system profiling tools flashing and dancing away. I know if my system isn't performing at its peak - it runs slowly.
You say it's inconsistent - I couldn't disagree more with this. It's absolutely consistent. I have never been caught out with unexpected behaviour because it just doesn't happen. There is so little to the UI that it couldn't possibly be inconsistent.
Because it sells worldwide to people who describe the OS as being ergonomic and beautiful?
I wouldn't know, I seldom use it and so find it clumsy and strange.
I have 1 laptop, and I don't just use it for development. I've tried over and over to use Linux as my primary OS, but every time the sheer jaggedness of the GUI experience, when I'm doing non-development (I guess normal consumer) things, bugs me non-stop until I switch back. It's like switching from Ruby to C++. C++ is amazingly powerful and has great uses, but ultimately Ruby is a lot more enjoyable to use.
I think it's just a personality difference. If you're comfortable in the nitty gritty of linux, more power to you! But you're not going to convince me linux is better because you're can change the window system or [insert some other component I wouldn't care to change]. And you're not even going to convince me you're much more efficient. The arguments of efficiency and customization are always about low level details that I don't need to care about, and that play no part in good software engineering. [This is about the scope of web development, I love linux in different fields such as embedded systems. Again though, it comes up frustratingly, excruciatingly short as a general use OS]
It may not be for everyone, but it definitely is possible to use Linux without having to install and fiddle with new window managers or file explorers or all the nuts and bolts. I've never even really had driver issues on my laptop now that Ubuntu has become this mature.
Speaking for myself, I think it has a fine core, and recommend the Gnome Remix to most people looking to get into Linux. I just don't really like Unity (mostly because it feels really slow every time I use it), and they're not really being excellent to the rest of the Linux community.
I feel (and I said this recently in this same post) that if they focused on one thing, and stopped trying to do ridiculous and unnecessary things (like Ubuntu for Phones, and Ubuntu for TVs, and even Mir), Ubuntu could return to the nice, quality product it was.
My second favorite desktop setup was with 10.04 and 10.10, the switch to Unity is what ultimately pushed me away from Ubuntu.
Last time I used it, I couldn't get Dropbox to install correctly. Sublime text would always open in the default spot and with the default window size rather than where I closed it. There are all of these very minuscule problems that add up to a very agitating experience. That's why I said it comes up excruciatingly short, I feel like Linux is almost the best OS on every level, yet on every level (above the command line) there's some little thing that's irritating.
For exmple, I had wpa_supplicant always crap out at a few coffee shops here in LA. It tried to associate but didn't wait long enough.
I ran it with the "-v" option and saw a line that said something like:
"Waiting 5 seconds".
I downloaded the source code and searched for that message:
grep -r Waiting * | grep second
I got 5 results or so. I opened up the code and I saw a line like this, right above the debug message.
timeout = 5000;
I added a 0 (making it 50 seconds) and saved the file. I ran ./configure && make and killed /usr/bin/wpa_supplicant, then used my copy and like magic, it started working. Go me!
I think any average non-wizard programmer could have probably done the same. I didn't have to know all any big-picture detail of wpa_supplicant's design nor did I have to know the 802.11[anything] protocol. No need to do packet dissection or anything like that.
I looked at the screen, I grepped for where the problem was and I added a 0. Fixed.
It took all of 20 minutes or so. A lot less time then the productivity I had already lost by putting up with the issue in the first place. [1]
Those kinds of experiences are the kind that make me stick with linux.
I have an identical problem with the same networks on my s3. I'm guessing it's because of the same thing. But my stock install of the developer-unfriendly OS has made the barrier to doing the same process much much higher.
I had a different, but also easily solvable problem on a MBP once in 2012. I tried the same process. But the man pages were half a page long and dated 10 years ago. The developer documentation was non-existent, the source code was inaccessible, and everyone that was experiencing the problem were unsophisticated users who recommended things like "going to the mac store".
Basically, I was stuck with the problem. I would have had to have been in my top form hacking zone to even find out what and where to mod; and then I'd have to write assembly to fix it; using tricks to maintain byte alignment, function pointers, all that noise.
After a few experiences like that I realized the machine in my hands was a sophisticated consumer appliance.
That's nice. But what I really wanted was a "feasibly reprogrammable" computer.
---
[1] Here's another example: I had an idea for a way to switch application windows where you type in string matches of the window names, all these weird UI ideas... The problem was I couldn't program in X - I had no idea how to do that.
Good thing is that I didn't need to. Because of the openness of the system, I was able to execute my idea with a perl script; calling programs to move around and manipulate windows.
The existing tools gave me enough control, power, and information, in order to execute this sophisticated idea; and all without having to learn xlib (which I intend to do one day). It's become part of my must-have list for my long-term environments. Here's the link https://github.com/kristopolous/alttab . I still don't know exactly how to create an x window.
I'm convinced that although initially daunting, the "here's the blueprints" philosophy of linux actually makes sophisticated ideas simpler to execute, however counter-intuitive that sounds.
additionally there are now packages for it so it installs very easily
My typical suggestion for other people is Ubuntu Gnome, because it provides them with the "just working" Linux, and most people I've talked to enjoy Gnome more than Unity.
As for regular Ubuntu, I'm not really a fan of their recent bouts of Not Invented Here Syndrome. Everything has to be made by them, for absolutely no reason. And they tried to belittle Wayland, and make up blatant falsehoods to do it.
If they were willing to focus on making ONE really, really good product, and push that towards consumers, instead of spreading their focus everywhere, I feel like they'd have a much better core product, Ubuntu Desktop (with Server out there, too, because it's not difficult to decouple the GUI stuff).
I haven't used Gnome 3 enough to make a fair comparison, but I loved Gnome 2 and was loathing the transition to Unity with 12.04. After a few days of using it though, I loved most of what it offered me. Realistically, my biggest concerns were screen real estate (13" laptop, minimal vertical pixels) and quick access to my programs (cmd opens the launcher), so i was really happy with Ubuntu for that.
Every two-ish releases I try out Ubuntu again to see if Unity's better, and each time it seems like they never address my main concern, speed. Unity seems really slow. I've never done benchmarks or tests, but on an i7 machine with 16GB of RAM, I would expect it to be snappy. It's even worse on my netbook.
I like the dock on the side, but the super menu and alt+f2 prompts are really bad in my mind. If I could get the dock, and maybe the global menus (I'm ambivalent on them), with Gnome Shell's activities menu, I'd be happy. Also dynamic workspaces, I really like those.
Windows, on the other hand, are extremely snappy everywhere. Pressing cmd+E immediately launches Explorer and Explorer itself is very snappy.
I wish Ubuntu would just get its shit together and address UI latency at some point.
Having said that, I'm hopeful Mir will solve these issues. Fingers crossed.
Most things are pretty locked down. That's not Unix-y. Yes, most defaults are pretty descent, but if you want more flexibility in your environment, there MIGHT be a 3rd-party tool for it, and it may even work, but if it does, it'll cost $20. It's like the world of Windows about a dozen years ago. Maybe in a few more years, this situation will improve.
I miss Linux. And, yeah, I know I can supposedly run it on a MBP, but I know that there will be nothing like the (nearly) flawless power management and screen switching capabilities of just running OS X, so I make do.
This works just fine in Mountain Lion.
1. You can run XQuartz full screen, and can even run a nice wm like xmonad. This isn't perfect, but isn't entirely bad.
2. If you have VMWare, you can just run your workhorse of choice in a convenient vm. Full screen VMs under 10.8 are actually pretty great when you're just on the laptop - you can just three finger swipe from OS X into bsd/linux/whatever and then back again.
I personally like the VMWare option, since it means that OS X gets to do all the power management and all of that, and there's no fiddling to do in the virtual machine to make things work with the hardware. And you totally own the vm environment, so you can do whatever you like to it.
Or, to put it another way: Darwin and Linux today are far, far closer than either of them are to most UNIXes in existence.
If this means that almost every free program i download from the internet wants to install some crap along with it, i'll gladly pass and pay up.
-- antiX 13 "base" with the Debian "stable" source list: http://antix.mepis.org/index.php?title=Main_Page
-- I3-WM as the window manager. Needs to be installed separately. http://i3wm.org/
-- Conkeror as the keyboard-driven browser: http://conkeror.org/FrontPage
The reason for using antiX/Debian rather than Arch is that I have no need to live on the bleeding edge. Once I've set things up I don't want them to break. I3 is at least as good -- probably better -- than ratpoison that I used to use earlier. The ability to quickly switch between "stacked", tabbed and full screen windows works great. Whether Conkeror is superior to Firefox with Pentadactyl I'm not yet sure of -- subjectively everything seems to load faster, but you do need to do some extra customization if you are going with Conkeror. Of course, that is also one of its selling points.
Given the popularity of Macs in the developer community, it's pretty clear that you have as much control as you desire—Unix has incredible power.
And if you still somehow feel that OS X is actually constricting you (rather than just hiding advanced settings in the command line), you'd never be able to run Linux on a Mac. No, never... https://wiki.archlinux.org/index.php/MacBook
As for the price component, if you're making your living off a computer I surely how you can afford a decent one.
If there's a way to completely remove the graphical interface, it's definitely harder than in Linux, and not as usable afterwards.
You might argue that these options are not needed for a typical OS X user, and perhaps you're right. But you cannot say it really gives you "full control of the system".
Well, it doesn't. Hence the reason for your need to put quotes around "full control over the system." Because, in fact, you don't. And problems I've solved in the past on Linux are still problems to this day on OS X.
> As for the price component, if you're making your living off a computer I surely how you can afford a decent one.
That's fallacious at best. This ignores people starting out, or in different locations. Not everyone is being handed a MBA and 27" monitor at their plush new SV job. It's useful to be reminded sometimes that while it's nice to have a high quality laptop, you don't need the latest and greatest Apple device to get stuff done.
Or maybe I put quotes around it because I don't agree with that assertion and it's a quote from the article...
> And problems I've solved in the past on Linux are still problems to this day on OS X.
Can you give me an example? I'm genuinely curious...
> This ignores people starting out, or in different locations.
Yet the author certainly could get a MBA, as he specifically references having one.
Well, that's unfortunate, because you are wrong. You don't have full control over the system. It's not a matter of debate. You don't. You simply don't. There are elements that you cannot control in OS X. That are closed source.
I mean, maybe you are a developer for Apple. I don't know. And maybe you do have access to the source code. But the average? No.
> Can you give me an example? I'm genuinely curious...
Proper full screen support on multiple monitors. It should finally be fixed in Mavericks. That being said, the window management is still fairly weak compared to what I implemented years ago.
(I forget the WM I was using at the time, but it wasn't properly handling full screen support in a multi-head environment. I patched it, as well as added some handling for allowing easy movement of FS windows to other screens via key-board shortcuts.)
> Yet the author certainly could get a MBA,
The author is not the only web developer out there. So I don't see how that matters.
Edit: And if being able to script is your proof that everyone has full control over OS X, you also need to share your definition of "full" as it definitely doesn't mean what you think it means.
You obviously have a visceral and emotional opposition to closed-source software, and I respect that, but what exactly is the functionality that you need that OSX can't be made to provide?
Try getting connectors to MSSQL working properly (in various languages) on either OS. It's annoying as hell on Linux, damn near impossible on OSX (without cheating using ODBC instead of native drivers).
I can understand why you'd use Windows if you're using a Microsoft stack. At that point, there's no saving you.
As usual, these things are the decisions of the architects, not the analysts. As such...
I haven't noticed this. I've noticed that popularity in the web developer community, but almost every non-web developer I've seen with a Mac has torn out OS X and put Linux or BSD on it.
And let's be honest here: more and more developers are web/app developers.
While web developers may be more vocal and have more content on the web (this isn't unexpected, since they are web developers, after all), you shouldn't forget about the numerous other developers out there. They're working on systems software, embedded software, industrial control software, accounting and billing software, various other kinds of business software, scientific software, and so forth.
These days, these kinds of developers generally use Windows or Linux systems, running on non-Mac PC hardware of some sort. And there are a whole lot of these developers.
If you look at ARM and Microcontroller development, it's really a sad state of affairs. There isn't a single option officially ARM gives you to do Linux based application. Ironically the only software that is probably going to run on those embedded devices...Linux.
Honestly I wish they would scrap their horrible pathetic excuse for a development environment, and listen to the community who actually you know buy their devices.
Case in point. Try to compare the horridness of the Official STM32 libraries with libopencm3, which is amazing and incredibly simple.
Sincerely.. Fed up embedded developer.
Do you think? I'd be interested to see statistics on this (I'm not doubting you in saying that!). Being as web development (in my experience as a web developer and occasional software developer) is the entry level for software development, I'd have thought web developers easily make up the majority of overall software developers. Everyone is a PHP developer these days, it seems.
Perhaps you're right though (having just read your second paragraph).
edit: and to be really frank, what web developers do for a living is write software that they eventually intend to deploy on Linux.
And while Ostrega is right that a new MacBook costs more than $1000, it's probably not uncommon to use one for years. How big a deal is it for many people to pay $1 a day for a computer versus ten cents a day? For anyone who is employed or doing technical consulting, the difference is probably negligible, especially compared to the value of time.
About time: having more screen real estate is apparently helpful: https://news.ycombinator.com/item?id=2403565; there was also recently an article about a guy who was teaching his girlfriend how to code and found using a 27" iMac useful simply because so much information could be displayed at once. The HN discussion pointed out (correctly) that one can learn to code with much smaller monitors, but the counterpoint tended to be (also correctly) that something that can be done doesn't mean that we shouldn't try to make it easier. If having modern equipment and large screens helps someone learn or do even 5% faster, and that person is worth at least $10 / hour, the rate at which things like large screens pay themselves back is very rapid.
Most of these things can be solved with preferences and a bunch of "defaults write"s, but it just solidifies the reasoning behind that statement.
Let's not even start with the hardware. Apple's decision to remove antiglare and high-res, 1:1 pixel panels (non-Retina) is egregious. The removal of upgradeability for the sake of 2mm in thickness has to be one of the most short-sighted and absurd decisions I've ever seen a company make.
So, he's right. With Mavericks, the trend seems to be changing, and I hope it does, but for now, I'll reserve my judgment until it releases officially.
What's also more depressing is that in an attempt to chase consumers, pro manufacturers are making the same awful hardware decisions Apple made, while alienating their true markets.
Don't believe me? Search Lenovo T440s. I won't bother calling it a ThinkPad, because it isn't one.
I also use a utility called Moom, which has been very useful for window management.
It's free and open source, and really makes it so much easier to manipulate windows, especially when you have several terminal windows open and want to organize them without using a multiplexer like tmux or screen.
In general, there is very little to reason to buy a Macbook if you want a capable Linux laptop. I only have an MBA because my company gave it to me. Better to buy a similarly-priced Thinkpad and use that.
Didn't OS X users just get the ability to resize windows by any edge or corner? They only had to wait 10 years for that wonderful feature.
How about being able to properly replace the Dock? You can't, because Apple does not allow non-Apple programs to affect NSScreen visibleFrame.
Maybe you can tell us how much Finder can be controlled versus the file browsers in Windows or say Gnome/KDE? Wait, nope - turns out it's sorely lacking in extendability hooks.
Furthermore - OS X has shitty package management and limits what you can do with your terminal as well because you cannot replace certain packages without breaking your entire system - http://cloudhead.io/2011/04/18/why-osx-doesnt-cut-it/
So, no...OS X is not as maleable as other operating systems.
The "de facto standard?" This view is probably common among programming hipsters but its hard to take seriously. There is a world out there besides Apple and RoR that is not just enterprise slog ...
As far as the $80 machine ... I mean ok ... If you are on a serious budget but ... If you are a technologist, I don't see the point. But it is cool to note that for those of us that need it, there are good machines at economical prices.
But if we all want to be serious programmers, can we move on from this hipster phase? The funny thing is the Apple is 100% not in line with supposed precepts taken as "de facto" in the hipster community (open source, over preoccupation with github, standards, open, portable, etc)
MacBooks are good laptops. I like them. Using and liking a MacBook doesn't make you a hipster, nor does it make you any less of a "serious programmer".
I didn't realize the entire web developer community was comprised of only "hipsters", whatever that word even means now.
We can all agree that windows is just not suited for Rails development, but whatever floats your boat is fine of course. I like crunchbang linux a lot, it is very fast and makes you feel smart. But when it comes to something I have to make my living on, I'd rather go with something that is 1. stable 2. has a solid support in terms of applications (photoshop, sketch, etc) actually begin built for it. And, for now, that means I'd rather work in OSX and on a Mac.
Then again, nobody cares.
http://www.maclife.com/article/howtos/how_use_spaces_mac_os_...
That was completely non-discoverable though.
"especially among Ruby on Rails developers"
why? is there any feature tied to the macosx that makes it worth to pay the mac tax??? or even to the hardware (that it's a wintel platform (and can be have for way less money) since apple decided to abandon IBM cpus?)
For example, I treat my Mac nearly the same way with a few pertinent replacements - Vim for editing, Slate for window management, etc.
You could likely do the same in Cygwin on a Windows box.
For me an incredibly common task in web development is to have a web browser and 1 or more terminal windows tiled horizontally, side by side, in an [ A | B ] or [ A | [ B | C ]] configuration, where A is a web browser, and B and C are terminals.
In order for this to work for me on a screen resolution <= 1920x1080, the ratio ( width of A ) / ( width of screen ) should be dynamically adjustable using a single key combo, without causing window overlapping. If this ratio is fixed, and cannot be dynamically adjusted by the window manager, I experience one or more of the following problems at any given moment:
1. the web browser window is too narrow, causing wide documents to be clipped and a horizontal scroll bar to appear.
2. A terminal window is wider than 80 characters, causing unnecessary screen area to be consumed which could be better allocated toward the web browser.
3. A terminal window is less than 80 characters in width, preventing the entire line of code from being displayed.
To me Linux is the ideal laptop OS because it's the easiest OS to install a tiling window manager on, and a tiling window manager is what maximizes the platform's primary constraint: small screen area.
Overlapping windows are the thing that maximized the use of a small screen, because they let you dedicate as much or as little of the screen to any given application when its window is on top.
What you are after, rather, is an efficient way of having the entirety of the windows of multiple apps on screen simultaneously. That's a slightly different problem. I personally get by with a combination of cascaded windows[1] and maximized windows with quick keyboard window switching.
[1] When you cascade windows such that the bottom left corner of each window forms a diagonal line across the bottom left edge of the screen, you can quickly select whatever window you want with a mouse, usually more efficiently than with a task bar, since the application identity is far more obvious when you can see a rectangle of its contents. And with choice of where each window is in the cascade order, you can get usable data out of multiple windows simultaneously.
So let's say I have a terminal window with VIM, and a web browser with a tutorial or documentation open up to the left of it. I quickly need to scroll the web page down to continue the example, BUT the VIM window is currently focused. Assuming the web browser can be scrolled using [J] and [K], I'll simply tap [Win-K, J, Win-J] to accomplish this task while avoiding modifying the layout or leaving the home row to use a pointing device. If I don't actually need to display multiple columns at the same time, I just press the change layout key to stop using a multicolumn layout.
So as a VIM user I've been very happy with this setup in awesome-wm for the past 2+ years, but if you wish to recommend an alternative I will definitely give it an install.
edit: I was able to write a new layout function for awesome-wm which implements diagonal cascading in the manner you described and retains my keybindings. I definitely agree that cascading makes it bluntly obvious which window is the currently focused one. I'll have to play around with it more.
If you want a layout where a web browser takes up 60% of the width, and two terminals take up 20% of the width, it becomes not only possible but relatively easy.
I agree the touchpad leaves much to be desired, but I've found the nub to be fantastic. With one index finger on the nub, and two thumbs on the mouse buttons, my hands never leave the keyboard.
It's a webkit based browser, scriptable (or written with?) lua, along with vim style navigation (eg, ":open www.google.com" to go to google).
afaik, it's also available in the arch core (or extra possibly) repositorys, which means no fiddling about with the aur! (good news)
Note: AUR isn't really that bad, as long as you install a package manager that handles it (like yaourt).
mm, It's still (slightly) more effort, and more prone to breaking than pacman.
hacker mindest and consumer mindset.
buying an old ibm thinkpad (to install linux) is hacker mindset. buying a windows laptop is consumer mindset. buying a macbook (in the case of an end-user) is consumer mindset. buying a macbook (in the case of a developer -- for the reason that is *nix based) is the consumeristic hacker mindset.
i can see how someone buying a macbook sees themself as getting the best of both worlds.
ofcourse macbooks are more popular than vintage thinkpads in our "developer" culture.
a parallel: there is more pop than anti-pop in the music industry.
consumers.
Right now, I have way too many people who deal with Adobe and for some stupid reason, Adobe continues to think Linux users are freeloaders who won't pay for the software, so they don't develop a Linux version.
I little development work I have done on Linux has been a breeze. I still hold out hope some company will start to compete with Adobe and give us an opportunity to get away from them and MS once and for all.
I'll pay for a well designed, reliable computer, so that I can do my job and get paid very well for it. Not having to muck around with Linux settings, drivers, config, etc. means I spend more time writing code and billing time (if it's client work).
If your time is worth anything, you probably aren't saving anything by going super cheap with your tools.
That being said, to each their own.
The only thing to miss about osx over linux is the font rendering, but I'll trade that for a tiling window manager and a proper package manager any day.
This $80 setup sounds cheap until you realize you're paying the real cost with your time.
You'll pay the toll every time you:
- Have more than a few browser tabs open, god forbid you plan on running Youtube in one of them.
- Want to quickly open Firebug.
- `rails server` or `rake test`.
- Run out of 512mb after opening two apps.
- Decide which tabs/apps to close to free up some resources.
But those aren't even the best examples since the reality is that it's nickel and diming your time in a way you won't realize until you finally get a machine that liberates you from all the waiting.
But to undermine my own point... can you really escape the consumer-web? Sites like github are JS heavy and very slow on old hardware. And, in practice, you'll want to use a PC for consumer tasks, like buying stuff, researching it, reading news, watching videos etc.
Maybe it's worthwhile buying a special-purpose consumer-web device - a tablet? It's optimised for the web; and the web is optimising for it.
But at the end of the day your minimal ancient-unix hackerbook loses its luster when your computer chokes trying to open a Youtube link your friend sends you over your CLI jabber client stitched together with Awk no matter how much you hate the "consumer web". Sucks when you can't even take a moment to appreciate some Bruce Springsteen together with your IRC channel.
Also, as a Rails and Clojure developer, I'm just trying to keep up with the boot time of my dev tools. ;)
I use a Lenovo T410, which you can readily acquire on Craigslist used/refurbished for ~$250. Comes with an i5 processor, 4 GB of RAM, and the HD can easily be upgraded. (I threw a cheap SSD in there for local DB issues.)
I'd love to use an even older Thinkpad, but since I do some local testing of machine learning / CPU-bound processes, an i5-series processor is probably the floor given the complexity of the models I run.
Regardless, I still love a huge PC battlestation at home (incredibly cheap for the power) and a cheap laptop that is no-frills but gets plenty of processing power for 99.9% of applications. Never really caught on to the Mac craze, even when I got free Macbook Pro Retinas from my last employer when they were first out - a sticker price of ~$4,000! Jeez!
I run Crunchbang, so everything ran perfectly fast (even Chrome), and there are a ton of things I preferred:
* Using a 2D grid of workspaces (as described in the OP)
* The 1400x1050 screen--my Vim fits much better in a 4:3 screen than a 16:10 one.
* Sane package management (apt-get > brew)
* The trackpoint, which for me works great.
* Sane and configurable window management.
* Various Linux niceties, such as middle-click paste.
* A fantastic keyboard.
* Etcetera etcetera etcetera.
Addendum - adding it up, I think I spent about 15 or 20 thousand USD on various Macs from 1984 to 2000. Part of my experience might be "premium fatigue."
Battery life is where the real improvement has been over the past few years.