Ask HN: Have you considered switching from OS X to Linux? - <AUTHOR> For some time now, I've been growing increasingly weary of the walled gardens I once so enthusiastically embraced. Off the top of my head, some grievances include, forced corporate policies, lack of hardware choice, and closed operating software. For pragmatic reasons, I've stuck it out with OS X for years, but do wonder if it's time to consider OSS desktop alternatives again? Will the conveniences be missed? Tim Oreilly was echoing a similar sentiment a year ago. https://plus.google.com/+TimOReilly/posts/g9WdNt6yVgR Are you in the same boat? It all just seems so daunting starting over... <comment><USER4> I'll say something that's vaguely awful: what's in it for me?

I use Linux at work and it's not _bad_ , but I'm less productive on it with 95% of tasks than I would be with OSX. It looks worse (I recognize this is subjective.)

A lot of my friends use Linux and tell me that if I spend the right amount of time tinkering with it -- making it mine -- I'd reap the benefits of a bespoke OS, just like slipping on a suit that's tailored just for me.

But what's the point? I lose out on apps and aesthetics for hypothetical yields in productivity -- I don't want to do that.

In terms of your points:

\- forced corporate policies: My employer forces a Linux desktop and either a Mac/Windows laptop.

\- lack of hardware choice: I will take to my grave the assertion that the MacBook Air is the best laptop on the market. (Or at least the prettiest.)

\- Closed operating software: This does not bother me.

<comment><USER5> I used Linux exclusively for many years but switched to OSX for work some years ago. I still feel more productive in Linux, but it's because of a few tricks that I so far haven't found a good replacement for in OSX:

\- Focus follows mouse without auto-raise \- Instant switching between virtual desktops (not possible to disable the animation in OSX last time I checked) \- Instantly open a new terminal window with intelligent window placement in the currently active virtual desktop.

Since these turned out to be a hassle in OSX, I've just gradually stopped using them, and resorder to a single desktop paradigm with more mouse clicking for navigation. All in all I feel like I'm working slower in OSX than in Linux.

However, the major problem with Linux is the looks and a host of small nice details that OSX just gets right. Instant search in Spotlight including Mail, I've grown accustomed to the Mail app (Thunderbird search is ridiculous compared to Mail.app, for instance), Time Machine, and a few other apps like 1Password.

If I could get a virtualization scheme where I could have one desktop with OSX and 3-4 desktops of Linux, that would be ideal. But I don't think that's possible with Parallels or VMware, and I'm not sure how well OSX would run virtualized under Linux.

<comment><USER6> The lack of good email clients on Linux is a real shame. I'd love to have something like Sparrow or Mailbox. 1password is also a sad thing to be missing.

As for the others, we have locate(1) for searching and rdiff-backup instead of Time Machine.

As for having desktops like that, if you mean monitors, then there's a great solution: Synergy. Hook up monitors to both computers and use Synergy to connect them.

<comment><USER5> I meant virtual desktops, mostly because I like to be able to take my laptop anywhere. I actually used Synergy at one point for my desktop setup (and also because the OSX mouse acceleration profile was broken for me for quite some time).

A cool hardware project might be to take a micro Linux ARM board with LVDS display output, mount it inside the CD bay in my laptop and make an internal LVDS switch to quickly switch between OSX and the Linux board. That would be pretty much ideal. :)

<comment><USER6> I wonder if it'd be possible to provide a virtual display to a small ARM board and embed it into a window, so that you'd have the virtualization effects (two OSes on one machine) without the speed loss

<comment><USER5> I think it's possible do to so, I remember seeing this ARM USB/HDMI board, which apparently can mirror the screen over USB: [http://www.fxitech.com/technology/any-screen- ip/](http://www.fxitech.com/technology/any-screen-ip/)

Not sure how well it works, though.

</comment></comment></comment></comment></comment></comment><comment><USER7> Yes, and I am happy.

Life is particularly better for the C and C++ programmer. Valgrind's primary platform is Linux. For many years Mac owners were stuck with a horribly out of date and malfunctioning GCC, and even now with clang there are problems (the clang in xcode 5.0 has some horrible miscompiling bugs which were reported months before release).

Is everything perfect in Linux? No. But overall I find it an improvement. The only app I miss is keynote, OpenOffice is a poor substitute.

<comment><USER8> Use Beamer for presentations [[https://en.wikipedia.org/wiki/Beamer_(LaTeX)](https://en.wikipedia.org/wiki/Beamer_\(LaTeX\))] and never look back!

<comment><USER9> Do people really find using tex to make presentations worthwhile for things when it's not for academics? Maybe I'm just not good, but I take a lot less time to make something that looks nice with Powerpoint, especially when trying to touch things up (the feedback loop on WYSIWYG software should not be underestimated)/

<comment><USER10> Can you actually make something nice with Powerpoint? If so, you should teach my coworkers. I will stick with LaTeX.

</comment></comment></comment></comment><comment><USER11> From seeing others dealing with bleeding edge node.js stuff - <USER2> modules and following tutorials become confusing. Sometimes you get weird error and only after couple hours googling you find out that it is because on Mac it is a bit different and you would avoid it if you start with Ubuntu in first place.

Yes, Ubuntu, since it is most used OSS desktop right now and most tutorials, docs, etc focus on it from my experience.

So it boils down to what you do. If you do mostly client-side html/js/css you probably will be ok with Mac. If you do more server stuff - it might make sense to switch to Ubuntu to make your life easier. Start with Virtualbox with Ubuntu in VM to keep your workflow the same in the beginning.

<comment> ryan-allen Exactly this! If you are deploying to Ubuntu, it is so much easier on you if you have your dev environment running the same thing.

On OS X I found it not to be too different an experience as well, I would run Ubuntu server, open terminal, SSH into the local server, and in the browser just hit the VMs IP, as opposed to open terminal, and hit localhost.

</comment></comment><comment><USER12> I've used Linux for years. I've even used Linux on the first Macs I ever had. In the end, I found it just cost me too much time, especially if I wanted to keep it running on the hardware of my choice, which will most likely remain Apple. And I'm not compromising my hardware choice, as long as other manufacturers can't be bothered to invest as much in excellent product design.

Also, having so much freedom to choose and configure is not always productive, and I really don't like the defaults most distro's come with. This is where the difference between OSX and Linux desktops becomes painfully clear.

I'll consider switching back if OSX becomes too restrictive or the Linux desktop eco-system (including hardware) dramatically improves.

<comment><USER13> I agree. Id say the Linux desktop will probably never drastically improve because of this massive NIH-syndrome. So much development resources go into maintaining dozens of forks of popular Desktop enviroments (Unity, Gnome3, Mate, Cinnamon, GnomeShell, KDE, XFCE etc) that its not even funny anymore. Choice isnt always good.

The sheer flexibility and number of choices for each and every part of the linux desktop world makes the whole experience chaotic, inconsistent, buggy and complex to setup and maintain. And as thats the DNA of Linux and Open- Source, it probably wont change. And while awesome, that DNA makes it nearly impossible to have a Linux Desktop experience that will ever rival the closed ones in terms of day-to-day usability.

<comment><USER14> > The sheer flexibility and number of choices for each and every part of the > linux desktop world makes the whole experience chaotic, inconsistent, buggy > and complex to setup and maintain.

I think that's what vendors like ubuntu _should_ be for. They should focus on stability and planning.

Instead they just keep doing their own thing for a audience that might very well not exist.

<comment><USER13> Exactly. Ubuntu started out to be the mainstream distro that just makes the linux desktop experience smooth and free of worries, but instead they now build just another desktop experience on their own. Even for Ubuntu you have Ubuntu, Kubuntu, Xubuntu, Mint and-i-dont-know-what else...thats just the wrong approach imo.

<comment><USER15> That's because people don't figure out that every Linux can run every WM or desktop environment anyway. So they need a seperate distribution just to switch from Unity to KDE...

</comment></comment></comment></comment></comment><comment><USER16> This. +100. I'm growing increasingly uncomfortable with the Apple ecosystem. iProducts, iCloud, etc. I can't transfer this to that cause I'm not allowed, click here to accept this, turn on location services so we can track you - <USER3> your laptop. It's getting to be too much.

What's the best laptop for running any Ubuntu flavored desktop?

<comment><USER17> Are you wedded to Ubuntu? If not, Fedora is a pretty nice distro as well...

<comment><USER18> Most linux users start on Redhat/Fedora, and quickly leave due to the pain that is RPM. I left to gentoo. Most others take the debian/ubuntu path.

<comment><USER17> That might have been the received wisdom a decade ago, but YUM/RPM work about as well as apt-get now, and - to be quite honest - I prefer YUM. I like, for example, that I use the same command to search for packages as to install them, instead of having to remember that on Ubuntu it's "apt-cache search FOO" instead. _shrug_ YMMV.

<comment><USER18> perhaps my previous post was too polite. People that never actually _care_ to learn linux go from Redhat to Ubuntu (or stay right where they are!). People with an interest in the OS itself move to Gentoo/Funtoo/LFS.

I still use CentOS to this day (Asterisk), it's painful.

</comment></comment></comment></comment></comment><comment><USER19> I actually just switched from OS X to Linux about 3 months ago. I grew up with Windows, and started using Macs in college.

There were 2 big reasons I switched. (1) I wanted to build a desktop; the Mac Mini is underpowered and the Pro is wicked expensive. (2) Apple's competing in the courtroom disgusts me. I was a huge Apple fan, but I don't want to give them any more money.

Windows isn't an option to me. I love text and I love the POSIX shell. I find DOS abhorrent.

I don't really miss any conveniences. If you really want something pretty and easy, go with Ubuntu. It mostly just works. The only thing I really had trouble with was wireless drivers. I started with Ubuntu, and later switched to Arch with i3 (Tiling WMs are awesome).

Again, If you want something that's almost as pretty and almost as easy to set up, I highly recommend Ubuntu. Once you get settled in, I also recommend looking at Arch. Arch is a lot more work and learning to set up, don't start with it. But it's a better system once you have it configured your way.

It's been some work, learning Arch and fighting with wireless drivers. But I don't regret it. I'm extremely happy with my Arch+i3 system. It has Chromium, Steam, Minecraft--everything I need. I do wish Steam had more Linux games, but with the Steam Box, I think they're on their way.

ps. I _don 't_ recommend dual boot. I did dual and triple boot a few years back. It was just a big hassle. Get a machine and dive into Ubuntu. Good luck.

</comment><comment><USER13> Thought about this alot, probably too much.

The bottom line is that switching to Linux will be a step back in terms of convenience. It is still true that the closed operating systems are just easier to use as day-to-day one-size-fits-all machines. In my recent tries with Xubuntu i had some sound issues, the machine didnt want to sleep correctly and skype had audio lag issues and didnt show a popup when somebody was calling. Small stuff, but stuff i dont really want to deal with..

Ironically OSX86 on the same machine (older Intel hardware) works perfectly fine and i have none of these issues, it probably even works better than windows.

As i do all my development in VMs (vagrant) the host OS doesnt really matter and it just needs to get the day-to-day stuff done, but i still wouldnt choose Linux for that.

Id still like to switch back to Windows as the host, just to have more freedom. Sadly vagrant/virtualbox shared folder performance is poor which makes it a bit of a pain to work with.

So i have ultimately thought of a system where Windows 8 is the host and id just use a Xubuntu VM (with a GUI) where i do all the development in, but still rely on Windows for skype/office stuff/audio/adobe apps in the background.

However that locks me out of iOS development, soo dual booting windows/osx86 + vagrant boxes currently gives me the most flexibility and ability to work on anything and use all 3 OSes for what they are best at...probably need to replace the PC with some form of Apple hardware to be legal but overall its pretty perfect. (In a perfect world Apple would finally adapt the PC keyboard layout, i just hate the mental overhead required when switching systems)

I dont like Apple much, but i am pretty sure MS would love to do the same things so it more about choosing the lesser evil because Linux still isnt there yet. Atleast that my opinion right now.

<comment><USER6> Linux is harder to learn and get set up, but it's just spending a bit more time now to be more productive in the long run. Of course, it's not more productive for everybody, but it is for some of us.

Plus we have Docker.io instead of Vagrant. Way nicer.

<comment><USER13> Sadly id still need some form of Windows for game development (Unity3D). Since Unity3D also runs on OSX, thats another benefit in terms of convenience for me using OSX.

<comment><USER6> I dual boot OS X to be able to use Photoshop. It's slower and feels awkward coming from Linux, though, so I try to limit my stays.

</comment></comment></comment></comment><comment><USER20> I switched back to GNU/Linux about 3 years ago when I started noticing and becoming aware of this ugly trend with Apple. I just couldn't live with myself anymore if I didn't also act according to my belief in digital freedom and empowering people. so after some self-questioning I have decided to switch to GNU/Linux and free software.

<comment><USER21> So you're willfully less productive because you want to have a cleaner conscience?

<comment><USER22> Yes. For some people this is not a _choice_ , as such. It's like wearing slightly uglier, slightly less comfortable clothes because they weren't made by child slave labor. Is there a true _choice_ what to wear?

<comment><USER21> Yes, you could wear the clothes that fed that child that day.

Stuff isn't so black/white, I guess I'm trying to say.

<comment><USER22> If I'm understanding you correctly, you are implying that it's OK to buy things produced by child slave labor, because otherwise the slave children would starve.

This is… an argument I won't get into. Suffice it to say, I was merely trying to construct an analogy to demonstrate why, sometimes, using something less than the "best" product is preferable, and why, for some people, it can't be considered a _choice_ to use the less efficient product.

<comment><USER21> Yes, and I'm trying to dismantle that analogy by demonstrating that such decisions are made without consideration of the consequences, and that nothing in this world is so simple that simply using or not using a product makes the planet a better or worse place.

</comment></comment></comment></comment></comment></comment><comment> ryan-allen I switched from OS X to Windows 8, and I virtualise linux using windows as the host OS.

I hate to say it, but I think Windows 8 is pretty good as a host OS (not having used Windows much since 2003).

I wouldn't be able to do my job without the virtulisation though, in the end I got so fed up with trying to install stuff naively on OS X with brew and ports and from source and whatever I was virtualising on OS X for about 2 years before I switched over anyway.

<comment><USER23> I'm using Windows 8 too and virtualization for server testing. What stops you from going Linux-only? In mine case its Adobe :)

<comment> ryan-allen Yep, Adobe is one, but funnily enough iTunes is another. I have spent thousands on iTunes over the years and with iTunes match I don't have to download everything either. Though iTunes on Windows is pretty rubbish (it's slow and looks pretty bad, doesn't do UI scaling properly).

I also want everything to mostly just work, which is why I liked OS X in the first place (it has a Terminal, and everything mostly works!).

I dual boot Windows 8 on my Macbook Air, I think Apple still do make the best laptop hardware.

</comment></comment></comment><comment><USER24> If you mean as a consumer OS, I consider it and then I remember what a miserable experience it has been the last three times I've done that. In my experience, there is no Linux distro that has the staff, organization, or funding to focus on providing a good consumer OS experience. All the successful Linux distros eventually find there's no money in it, and they wander off to do enterprisey stuff or try to make tablets or whatever.

As a development OS, I'm already there - most things for me are in virtualized Linux, but inside the Mac OS.

</comment><comment><USER17> I switched from a combination of OS/2 and Windows 95 / Windows 2000 TO Linux as my primary desktop OS about 13 years ago, and have never looked back. You can have my Fedora Linux desktop when you pry it from my cold, dead, fingers.

As for OS X... I'm sure it's nice, but I have no interest in Apple and their locked down, proprietary, closed off, "walled garden" ecosystem. I'm no _rms_ , but I have little to no use for software that isn't OSS or FLOSS.

I did just switch from using Gnome as my primary desktop environment, back to KDE - after about 6 or 7 years of Gnome use - and I'm pretty damn happy with the current iteration of KDE. If you haven't tried it, give it a look, you may find that it's much better than you anticipated.

<comment><USER20> Couldn't agree more about KDE Plasma desktop. I've used most desktops there are and switched to KDE Plasma about a year ago (I used GNOME2 until then, don't like GNOME3 and Unity at all) and boy, KDE Plasma is by far the best desktop I have ever used. Looks great, has awesome usability (once you get used to it) and it is very flexible so you can adapt it almost perfectly to the way you work. Realy awesome.

</comment></comment><comment><USER15> OSX has a big plus: It's reliability, I've used it for 10 years as primary OS and it never lost a piece of data or ceased to work when I needed it most (as the deadline approaches). As long as Apple doesn't switch to AppStore-only and I have a CLI to compile what I want I will stay on OSX as a primary OS.

Being a Linux user since the 90s I always have Linux Desktop machines around. Switching to Ubuntu will be a loss in reliability for you coming from OSX. I used it since Dapper Drake, in the last years every half year upgrade broke something, especially in Unity and Gnome.

Obviously Ubuntu are more into making strange things on their own then providing a reliable linux. Ubuntu is the "odd man out" in Linux and you won't gain anything but upgrade pain two times a year from switching to Ubuntu. It isn't "real Linux" anymore. So if you're going to switch to Linux, don't use Ubuntu, instead use Debian Stable or Arch.

If you're on a reliable distribution Linux will work fine.

That is true of course only if your hardware is supported without "just compile a sweet little kernel module and it works fine". No, don't do this. Don't rely on such hardware or be prepared to spent the weekends fiddling around to make your graphics adapter or wifi work.

If it works you will find more or less everything you need for your computing needs as a developer. But you're going to miss the nice small apps you learned to love in the OSX indie developer ecosystem. You even won't find a nice client for Twitter in the Linux Repos (most of them haven't seen an update since Twitter switched to OAuth and the API and won't work anymore but are still in the repos), if you're into ADN there isn't anything but an ugly cross-platform client.

Regarding such small things like clients for social networks you will switch the OSX culture of "it has to be nice and working or nobody won't use or buy it" against "somebody made something that works somehow but looks ugly and hey if you don't like it make it better it's open source".

</comment><comment><USER25> I was a somewhat reluctant Mac user for several years (say, 2006 to early 2012). Reluctant because I've never been a fan of apple products in general, but at the time Apple provided the best combination of good desktop environment and unix-like environment that made my life as someone who works on server software much easier.

There were always many nitpicks I had to deal with and fix every time I reinstalled or got a new computer, and they piled up and up with every new version. I switched to xubuntu with a toshiba z830 and my life got easier. Then I switched to Mint and things got even better.

</comment><comment><USER26> No. As much as I hate iTunes, having a homogenous infrastructure at home between AppleTV, iPhones, iPads, and an old macbook pro acting as a server, things just work.

Our personal laptops are an Air and a Retina MPB. Moving the wife from Windows to Mac was enough of a step (she uses excel and other biz apps), Linux would be a non-starter. Given the i* devices, for me, I couldn't revisit Linux without incurring management headaches I don't care for.

There is more to "switching" than just is an OSS option available.

I have a number of VMs -- ubuntu and FreeBSD for development. Desktop remains homogenous.

<comment><USER27> Has anyone tried Google TV and how does it compete within a iEcosystem? [http://www.google.com/tv/get.html](http://www.google.com/tv/get.html)

</comment></comment><comment><USER28> I first experimented with Linux around 2001-2003 (kernel 2.4.x). I tried many of the popular distributions at the time (RedHat, Mandrake, Slackware, Debian, SuSE), but concluded that while it was useful as a server if you set it up carefully, it really wasn't ready for the Desktop. In particular, I had issues with hardware support (graphics and USB), unreliable filesystems (ext2 after a crash), browser compatibility, video playback, office suite compatibility, and anti-aliased text.

I made the switch from Windows XP to Mac OS X around the same time, and for several years it filled the role of a "usable desktop unix" OS quite well. A few years later (2005?) I put Ubuntu on some spare hardware I had lying around and ended up keeping it as a personal server for the next five years or so.

My last Mac laptop (MBP, 2 GHz core duo, Leopard) died around 2010. I had originally planned to get a new Mac at the end of that summer, but in the meantime I put the latest Ubuntu on an old Thinkpad my dad had lying around (T60, 1.83 GHz core duo). It ran circles around my old Mac despite the slightly slower CPU, and many of the issues I had with Linux the first time around had been solved. I was impressed enough to skip the Mac upgrade and continued using the T60 for the next two years.

I was happy enough with Linux by then that I knew I wasn't going back to OS X, but some personal issues with the Ubuntu upgrade cycle and where Canonical was headed eventually led me to switch to a rolling release of Debian unstable. I've since upgraded to a T520, and see myself staying with Linux for the foreseeable future.

It might be useful to mention that I'm primarily a C/C++/embedded developer. I spend most of my time with a terminal, a text editor, and a browser. I really like having proper "out of the box" support for the standard open source developer tools without having to hack them onto my system with third party OS X package managers. I don't have to worry about Mac specific quirks, or old/forked versions when some library doesn't get ported properly or in a timely manner.

\----

As a side note, for anyone considering a rolling release, I'd probably recommend Debian testing over unstable. I've used both continuously over the past year, and while I haven't had any serious showstoppers with unstable, testing has had a perfect track record as far as distribution stability is concerned, while unstable has had a few minor kinks (usually just dependency issues immediately after updates are made available, but there have been occasional crashes).

</comment><comment><USER29> > Have you considered switching from OS X to Linux?

No.

> forced corporate policies

care to elaborate? I'm not sure what this means. Policies forced by the company you work for? How does Linux solve this?

> lack of hardware choice

Plus, not a minus. I think the 13" MacBook Air is the best laptop on the market today. Tight integration between hardware and software is key.

> closed operating software

Don't care, see answer #2.

It's also probably worth mentioning that I make my living through iOS (in part through my site: [http://www.cocoacontrols.com](http://www.cocoacontrols.com))

<comment><USER30> > Plus, not a minus. I think the 13" MacBook Air is the best laptop on the > market today. Tight integration between hardware and software is key.

Sorry? How is a restriction a plus? Can you use a Lenovo with OS X? No. Can you use a Macbook with Linux? Yes.

</comment></comment><comment><USER31> I used OS X exclusively for many years from 2003 to 2009. I always thought that I'm the most productive with macs, until I first started to learn vim and then had a employer who forced either a Windows or Ubuntu laptop for me. When I installed Ubuntu to my work laptop I tried this tiling window manager my friend recomended called Xmonad.

It was hard.

Nowadays I'm a happy Gentoo user and when our television computer, which is an iMac, breaks, it's going to be my last Mac.

</comment><comment><USER32> +1 definitly!

I have tried many times but, every time I had to go back to OSX for some reason. I am a big FreeBSD fan and for me OSX with the port system was the way to go. Now Apple is more and more getting in the way but FreeBSD not really running on Apple hardware.

On the Linux (I tried Ubuntu/Debian/Fedora/Gentoo) point of view you can't really find a distro that is working well enough and have a similar port system.

I'm kinda stuck with OSX...

</comment><comment><USER33> Unless you're stuck making OSX or iOS applications, I see no reason not to switch. OSX is like my fourth OS of choice behind linux, windows and chromeOS (which is still linux). I had to use osx for 1.5 years at work and going back to using my personal laptop every evening was like changing from a poorly fitting constrictive suit into a comfy bath robe and putting on your favorite slippers.

</comment><comment><USER34> Shouldn't this be a poll? Could someone make one?

About the question, I did mostly switch to linux, but there's a few programs that make this transition difficult (ableton live is good, and not available on linux). I do benefit from a strong performance improvement, but I would really like to have a better desktop environment. Moreover, a large part of my work is much simpler to do because I can use containers instead of a VM.

All in all, I have a better experience on Linux, so I'm doing most of my work there, but I would welcome a bit of amelioration here and there. I'm experienced in Linux GUI programming, but this sounds like a good and interesting challenge, maybe even a startup idea.

To anyone considering the switch: Ubuntu is nice but it is _not_ the only solution, I personally use Debian and my friends use Arch. We're all quite happy with our systems, even if the polish of osx is sometimes missed.

</comment><comment><USER27> Gone from Ubuntu to Mac OSX six months ago: \- No IT support for Ubuntu: I upgraded to Ubuntu 13.04 at home, then at work. And they had a bug in the network authentification. Life is sad, when you suddently can't connect to the network... something that worked well in 12.12. I lost 2 days at work, the IT support only wanted to support Macs, I worked the following 3 nights to recover a high-pressure project, yes, Ubuntu failed me. \- On Ubuntu, I was missing Keynote, and IntelliJ is so annoying (have to remap keyboard shortcuts, but then you can't work on your colleagues' machines). Fortunately, we don't use Word or Excel at work. \- Everything my company designs uses the Mac UX language: icons, UI patterns, if you don't use a Mac, you don't understand how design decisions make sense. So using a Mac is a way to keep posted about the fashion.

</comment><comment><USER35> Nope. Actually convinced one of my colleague to drop ubuntu and switch to a rMBP.

Corporate policies: not really sure what you meant by that.

Lack of hardware choice: am using a rMBP, this is a very beautiful piece of laptop. I can encode video, start a virtual machine, keep PHPStorm running smoothly, and compile java code all at the same time without any stuttering or slowdowns, and it does it in a very stylish manner.

Closed operating system: even when am using linux/ubuntu am not gonna go around modifying the internals. So I don't mind it one bit, if it means having a smoother and better experience am all for the walled garden.

My work usually targets either a redhat/centos server or ubuntu server and I don't have any difficulties with any environment differences between my target deployment server and my local machine. So no reason to rock the boat so to speak.

</comment><comment><USER36> I'd be happy to bring all my office desktops to Linux but there are two insurmountable problems (I am one out of 2 desktops on Linux, out of roughly 40 office computers). We are a newspaper publishing company, Adobe CS suite is a must. Our accountant uses software only delivered with Remote Desktop and that stinkymud uses a security variant not offered by the OSS variants of RDP clients.

As it stands I plan to migrate as fast away from Windows as possible. This means all new machines are either Ubuntu or OsX. Layout and Graphics machines OsX, others Ubuntu. At least Microsoft is getting kicked to the curb, but Jobs's ghost will be around till Adobe realizes their mistake and offers a native suite for Linux.

</comment><comment><USER37> Yes, and I am right now.

I've been using OS X pretty much as my primary OS for 6 years. Lately, because I've been working on a lot of systems programming, I've felt that it's too much of a hassle of constantly running everything on a virtual machine (although vagrant makes it a very nice process) so I switched to elementaryos[1].

It took a lot of tweaking but I'm generally happy with the switch, I still use sublime text as my general editing workhorse and other than some window management tool that I haven't found a easy replacement for I'm all good. It sure made the day to day work easier.

[1] [http://elementaryos.org/](http://elementaryos.org/)

</comment><comment><USER38> Yes, but it's too much work. Using MacOS, iPhone, Apple TV and a Time Capsule everything integrates pretty well. I get automated network backups, I can mirror video to my TV and I can keep my browser tabs accessible between devices.

This has required very little setup on my part.

I'd love to not be dependant on Apple, but I trust them more than Google, and there's nothing else that works as seamlessly.

Edit:

Also the hardware. I've yet to find another company that values build quality as much as Apple. They're trying, any I hope someone else does, but I haven't found a laptop similar spec to my rMBP that feels as nice and has the same battery life. I can go 6 hours using Windows 8 in a VM for development.

</comment><comment><USER39> I've been toying with the idea, yeah. Then I got my MacBook Pro stolen and used an old laptop replacement with Ubuntu while I was in the process of replacing it.

Long story short, there are a few things that I couldn't get over within a week: \- CTRL-C rather than CMD-C is now a weird contorsion for my hand. \- CTRL-C and CTRL-V can't be used for copying and pasting in the terminal. I understand why, but really couldn't get over it. \- I think the UI is not polished enough to my likings. It's good, but still lacking. Visual differences and missing proper exposé are at the top of this list. \- iPhone integration (disclaimer: I didn't try that hard.)

So I went back to OS X.

<comment><USER40> This bothered me too, so I

        1. Rebound control to the command key
        2. Changed the terminal shortcuts to control-c, etc. (from control-shift-).
        3. Set the terminal to use control-j instead of control-c for sigint:
           $ stty intr ^j

(I'm slowly transitioning from OS X to Linux.)

</comment></comment><comment><USER41> I put together a new desktop machine for the first time in 12 years a few weeks ago and decided to run xubuntu on it.

The most annoying aspect of it is the discrepancies between applications and keyboard shortcuts.

If you're a power user mac who uses keyboard shortcuts a ton then going back to X11 apps can be a little painful.

The other downside I had was on install I had no wireless card and had to download a tarball to a usb stick and recompile my device driver just to connect. I kind of expected things to just work by now, it's a shame there's still these little hiccups but I guess I shouldn't have bought cutting edge?

</comment><comment><USER42> I made the switch, and I am pretty much in content. My affair with Linux started in 1991 and in 2000, I made a switch to OSX, primarily for the hardware and for good 12 years, my MacBook Pro served me well. Last year, I wanted to buy a new machine, considering the fact the new Retina MacBook Pro's RAM couldn't be upgraded (as much of it is hard wired), I decided to go with ThinkPad W530 with Linux on it. The reason to switch was also because of nature of my work, most of which involved testing distributed architectures. Since my switch to Ubuntu, I feel more at home these days.

</comment><comment><USER18> I've been converting MacOS users to Kubuntu/KXStudio for the last year and a half. Since Lion, MacOS is now less user-friendly than kubuntu overall, and their system is usually more responsive after the update.

</comment><comment><USER43> I love Linux. The year was 2005, I was 14. I had dialup, and I wanted to try out this Linux thing. I bought a 20 disc set of cds for Debian, and installed it on my computer. I had to install it several times before I figured out to press the space bar to select to install a graphical environment. I also got a free disc in the mail for another thing called Ubuntu. Installed that too. Rather ugly brown. I spent hours trying to get it to talk to my modem to connect to the internet. I never could get the gui to work, I had to run it through the cli. I once decided to compile my own kernel because I could. There was a thrill in seeing it boot. I also finally figured out how to get opengl working with my radeon. Messing with esoteric xorg settings. Eventually I completely stopped booting into Windows XP. (Actually I spilled soy sauce on my video card. It would never work in Windows again, only Linux.)

I tried a number of distros over the years. Gentoo is excellent, if you're an asocial computer nerd that enjoys compiling programs. I also did Linux From Scratch. Huge amount of fun. Learned a lot. I still remember the thrill of seeing Gnome finally start up. I set up a tiling window manager (can't even remember what it was). Most sparse desktop ever. Always had xine running on the left most desktop (started from the command line of course.)

The development environment was excellent, (except for the lack of IDE). Huge number of libraries. Easily write a c program that could access the internet, parse video files, etc. And all of these libraries were easily installed. Valgrind was excellent, too.

The last distro I extensively used was Fedora. Finally, though, I had enough. I grew tired of constantly having to fiddle with little shit. The final straw was I was just doing a generic update, and wifi stopped working. I couldn't figure it out, so I just wiped the drive and installed windows 7. It's nice to have things work, mostly. I miss the environment. Cygwin/mingw don't quite make it up, and powershell is a heaping sack of shit. I tried Linux Mint about a year ago. It was atrocious. I don't remember all of the details, but it was the little details that didn't work. The multimedia keys didn't work, this was a known bug that had been around for a while. The start menu was annoying to use, Windows 7 was actually better in this regard. I don't need to say anything about Gnome 3.

I just bought a Macbook on Friday. I'm actually pretty excited, this will be my first modern Mac. I'm hoping that I'll get the awesome development environment of Linux/Unix and the polished interface of a commercial operating system. I once very strongly believed in support the FSF, but I want a computer that works. I don't have the time anymore to tinker with esoteric xorg settings.

<comment><USER44> A thousand times this. I never got so far into Linux, but I did run a Linux desktop as my primary system from about 2006-2010, and switched back to Windows because I got sick of fighting with it. I still run Linux on my work boxes because it's a much better environment for the development work I want to do, but I hate dealing with the maintenance. This is anecdotal, but here are a few issues I've run into within the last year:

1) This week Ubuntu updated something in the graphics system which FUBAR'd multi-monitor support for both myself and my supervisor (we have quite different hardware setups).

2) Support for suspend/resume is flaky, and has been for years - I'd never know whether either would work after a distro upgrade, so I always cold-boot Linux.

3) Broken network drivers on the install disk for Debian Testing around the end of last summer - I forget the workaround (if there was one), but I had trouble installing it on two different (very vanilla) systems.

If I did more dev work at home (and had $1000 to burn) I'd probably buy a Mac, but as is my Linux VM on Windows setup works fine.

</comment></comment><comment><USER45> I spent most of my professional career in windows (healthcare, IE6, etc) but personally switch to ubuntu a couple years ago as I got into development. I do find myself reaching for my work MBP when I have to do video/photo editing stuff, but otherwise, I don't see a huge difference in productivity. Switched a couple of offices to OSS for admin, and that went surprisingly well.

My cell/tablet are android, so there was no real incentive to move to Mac from a house-compatibility standpoint.

</comment><comment><USER46> The only thing keeping me from it is a couple of app's that I use regularly, and am not willing to give it up. With the decline in Apple's quality both in their OS/Flagship products as well as their hardware (my MBPr has had more problems than any Apple laptop before it).

I'm pretty sure this will be my last purchase from Apple, and i'll be moving to a new laptop running some flavour of linux as soon as a suitable replacement laptop comes on the market.

</comment><comment><USER47> yes I've thought about it because

1) I've felt that the last few OS X iterations have been steps in the wrong direction, bloating the OS with crap "features" that are useless and add overhead. It's slower, more pinwheels, crashes, etc.

2) A lot of dev and computational tools run natively on Linux and you have to deal with 2nd best ports on Mac.

3) The absurdly high cost of Macs. For instance I'm about to upgrade my mbp when they finally update them next week and I expect it will run about $2700.

for #1, I'm hoping that 10.9 is an improvement since it seems to have a performance focus. i think all Mac users are dreading that Apple will slap iOS on our laptops. if they do, #1 will become a bigger factor.

#2 usually is not a huge problem. of course, when it is, it's enormously frustrating.

for #3, when I've looked, the cost of getting a similarly spec'ed non Mac is still around $2000 so the savings aren't that huge.

ultimately, the reasons for switching do not outweigh my perceived costs of switching. i don't want to tinker with my OS or evaluate which of the many Linux options is best. and for my typical consumer laptop use, the Apple ecosystem is just convenient. (syncs w my phone, etc.)

</comment><comment><USER23> I guess today unless you are coding something very hardware/OS specific, e.g. Games what OS you use its just a matter of personal preference. You can do the same in Linux/Windows/OSX, stability and security is no longer the main worry as all the ecosystems matured and from usability perspective its a matter of what you got used to and your willingness to make an effort on something different.

</comment><comment><USER48> One large reason keeps me from switching to Linux.

Software maintenance, features and updates.

Without financial backing, the apps for linux will never be as good as on either OS X or Windows.

I donate a lot, but my money can only reach so far - it seems as too few donate, though i'm sure many donate their time and that is also a way of donating - but still, the fact is that someone has to pay to keep software developed and updated.

</comment><comment><USER49> It is a personal choice. I personally don't mind OS X as it allows me to do what I want.

VMWare Fusion + OS X = freedom of development choice. Bootcamp + Windows = games.

The hardware isn't bad either though it is slightly more expensive depending on how you look at it.

For Linux, I find that there aren't many good vendors that provide pre- installed Linux on state-of-the-art hardware especially when it comes to laptops.

<comment><USER25> Generally speaking ultrabooks make great linux laptops, pretty much right out of the box. The more of the functionality of the laptop is provided by Intel stuff the better.

</comment></comment><comment><USER50> If you run Linux in a VM on VirtualBox on OSX you get the best of both worlds. If you are curious it is a great way to experiment.

The other point to make is that if you use terminal POSIX compliant tools (vim, mutt, tmux) and favour web applications over native ones you can create a highly portable environment so the choice of underlying OS becomes a subjective question of taste.

</comment><comment><USER51> If I used nothing but CLI programs, I would happily switch to Linux or FreeBSD. But with GUI a consideration then, after becoming accustomed to the fit and finish of OS X and the quality 3rd party apps it attracts, it's too depressing to spend time in stuff that's at best amateur.

Becoming a fancy-pants appreciator of particular attributes is its own kind of lock-in...

</comment><comment><USER52> The desktop experience is pretty close to being "there", but the lack of iTunes or any viable alternative (for syncing) is a bit of a show-stopper if you own an Apple device ...

Apparently this is due to Apple making it technically difficult for third- party applications to replace iTunes

</comment><comment><USER53> I would if there was hardware that's as good as the Macbook Air. I know that it can run Ubuntu, but I'm not sure how well the trackpad and battery perform. And with the upcoming Mavericks, that bar is going to get a lot higher.

</comment><comment><USER54> Several times. Then I look at the hardware options available to me, what they cost, how much work I need to get everything working and compare it all to my MBA. After having done that I decide to stick with OS X for a bit longer.

</comment><comment><USER55> i would love to. i came from linux to OSX. and for exactly those reasons i can't leave:

\- Photoshop (nope, Gimp won't do, sorry)

\- Word (nope, OpenOffice etc. won't do... had it fuck up the section headings on a legal doc the other day. no bueno.)

\- music software (Ableton, Maschine, etc.)

i'm also addicted to the trackpad. some Apple hardware guys told me it's all software, but i don't remember any Windows or linux laptop ever coming close... i'm amazed how bad they are every time i need to jump on one for a minute.

</comment><comment><USER56> I was considering moving to Linux myself till I found out that gotomeeting or gotowebinar doesn't function on one, and I use it too often to not consider it a key feature.

</comment><comment><USER57> I switched a few months ago from Linux to OS X. The OSS desktop is not yet ready, but I believe that it can be ready in a matter of two, three years.

<comment><USER58> It's been two to three years away for about ten to fifteen years now.

You're right, but just don't expect it to be there in two to three years.

</comment></comment><comment><USER6> I see everybody with the view that OSX is so much more productive, but I'll give a different view, as an OS X user turned Linux user. I switched entirely about 6 months ago, and it just sort of happened once Linux was set up to my liking.

Positives:

* Tiling WMs - I have always found myself working primarily in fullscreen applications like in OSX, but it's nice to have a small status bar at the top still and splitscreen capabilities. My WM of choice, AwesomeWM, provides this, and does it really well.

* Docker.io - Docker is infinitely better than Vagrant. It starts faster, it's thinner, and it's easier to interact with. And it only runs on Linux (at least for now, but it'd be hard to add OSX support probably, due to the use of cgroups and other Linux APIs)

* Better Package Management - Yes, OS X has homebrew, and it's great, but it has to compile from source, which takes a while and spins up your fans usually. It's just troublesome. And on Linux, if we want to compile, we can usually use distcc to distribute that load to a cluster. I do, and I know many others do as well.

* Choice of Workflow - OS X has a wonderful workflow, but it's not perfect. Sometimes it's nice to be able to pick the workflow that is almost exactly perfect for you, and tweak it until it's ideal. That's what I did, and it's been a huge boon for my productivity.

* Homogeneity with Deployment - this is a lesser positive, but it's still nice in many cases. Most of the good distros will teach you at least basic sysadmin skills over a shot period of time, through immersion. This means you can spend less money on sysadmins and do it yourself as long as possible, assuming you deploy on bare EC2

Negatives:

* More downtime - this is an issue with distros like Arch and Gentoo, and it does get to be a problem from time to time. I mean, it's hard to work when X11 won't start or a driver is broken (I'm looking at you, Broadcom)

* Learning curve - Linux really is as hard as it seems to learn, I'm not gonna lie. It's not perfect.

* You look like an "Engineer" not a "Hacker" \- Lots of people will view the fact that you spent time customizing your work environment as you playing around with your OS. It's not really that way (unless you're a Gentoo user) but it gives that view to some people.

* Lack of support for multitouch trackpads - I'm sure this is less of an issue for other people, but it really was a dealbreaker early on for me. It killed all the ways I interacted with OS X. It was terrible for a while, then I got over it.

Honestly, I dual booted Arch and OS X for about 8 months before I ended up tipping over to Arch. It took me setting up a shared partition and AwesomeWM before I could convince myself to use it daily. But it's the best decision I've ever made, because I find myself being infinitely more productive with my new workflow. I'm done with OSX entirely, I only use it for Photoshop now.

<comment><USER59> > * You look like an "Engineer" not a "Hacker" \- Lots of people will view the > fact that you spent time customizing your work environment as you playing > around with your OS. It's not really that way (unless you're a Gentoo user) > but it gives that view to some people.

Uh? Where is this coming from (Hacker/Engineer)? If anything, it's the other way around.

</comment></comment><comment><USER60> I want to shift, but I like the macbook pro hardware so much better. Running Linux on macbook pro just kills the battery :(

</comment><comment><USER59> Made the switch in 2011, when I needed a new laptop

note: I was already using arch on my desktop for a few years, though.

</comment><comment><USER61> The only think I am growing increaslingly weary of are those moaning about the walled gardens, "rms told so", and some perverted understanding of freedom. The answer is no. Actually I switched from Windows/Linux to OS X. I love linux on the servers, I don't hate Windows, but I don't like preachers, especially misinformed ones. It would be interesting to know, what share of oss is actually written on OS X compared to Linux…

</comment><comment><USER62> Switching? I use all three major OS's. Linux is best for software development, Windows is best for games, OSX is best for laptops. It sucks but that's the state of things.</comment>


How Sharing, RoboCars, and 3D Printing Can Reinvent Industrial Detroit - <AUTHOR> http://techonomy.com/2014/09/sharing-robocars-3d-printing-can-reinvent-industrial-detroit/ <comment><USER2> i wonder when someone will make a 3d printer that can print more 3d printers to build something very big</comment>


Dictionary of Non-Notable Artists - <AUTHOR> https://gregorweichbrodt.de/en/project/dictionary-of-non-notable-artists/ <comment><AUTHOR> Apparently the author also added phrases from the "non-notable" discussions to a website that autogenerates random T-shirt designs: [http://zufallsshirt.de/non-notable/](http://zufallsshirt.de/non-notable/)</comment>


What's more volatile than Bitcoin? You may be surprised - <AUTHOR> https://www.marketwatch.com/story/whats-more-volatile-than-bitcoin-you-may-be-surprised-2018-10-22 <comment><USER2> Well no shocker there, the first thing I thought of was Apple</comment>


We need more native code - <AUTHOR> http://poincare101.herokuapp.com/post/18

<comment><USER2> Web apps solve three problems.

1) immediately update your users all at once. Supporting 5 versions of legacy code sucks and adds friction to iteration.

2)monetization. Ads are more acceptable online. Subscriptions have better lifetime value than single purchases. And piracy is prevented.

3) usage metrics are a lot easier.

Bonus: cross platform.

If we can roll some of those up into a native app framework on top of. Net or JVM people might go back. Where is the Scala on JVM equivalent of Ruby on Rails that makes writing desktop apps fun again? (Doesn't have to be scalar or JVM, in just sayin')

*sorry for the typos, I'm fat fingering this on a smartphone If

<comment><USER3> I've sometimes wondered whether you could solve those problems within a system that provided a more native experience. For example, consider a new kind of client that would download and run bytecode instead of HTML/CSS/JavaScript.

The bytecode would have a built-in abstraction layer over various platform facilities such as graphics and sound, allowing it to look and feel much more like a native application.

<comment><USER4> This was called java applets, then flash, then silverlight the last few times it was tried.

<comment><USER3> It was also called "web browser" one of the last times it was tried. Those became quite popular I believe.

Flash has done quite well actually, but one flaw is that it is completely tied to the web browser, so it doesn't provide a really native experience. AIR would be a better counter-example. Also, flash is quite unreliable.

Java applets had an addtional problem in that they required a huge standard library and took forever to start up. I'd suggest instead to download the standard library on demand.

<comment><USER4> "Web browser" downloads and runs compiled bytecode instead of html/css/javascript now (as the gp is suggesting)? Without a special plugin? Huh, news to me.

<comment><USER5> I'd love to hear what you consider to be the significant difference between "bytecode" and "code". Compiling ASCII code down to bytecode or machine code doesn't change semantics (not often significantly, at least); code is code. The browser is downloading and running code, and is offering an increasingly robust and attractive platform from which to do so.

How's that different from Java or Flash or Silverlight or anything else that requires a "special plugin"?

<comment><USER4> From a semantics point of view: the post I originally replied to asked about compiled bytecode, not textual code.

From a deeper point of view: Theoretically you are correct. But in practicalities... Peresumably you get 2 benefits from compiling the code to bytecode:

* obfuscated source so people can't steal your secret sauce.

* faster execution because the compile step is skipped.

The second one has real practical limitations: for any major gain, the bytecode has to be in a format that allows fast execution, which usually includes taking out certain checks that can be done at compile time, taking advantage of lower level runtime stuff and in some cases, optimizations for the hardware arch below. This is all well and good, but when you have multiple engines interpreting the bytecode, this can be done in very different ways. In practice, to get from a robust bytecode to something that takes full advantage of the system, effectively invokes a second compile step from bytecode to the vm's internal representation. This is what a lot of JVMs do. I'm not sure anything would actually be gained in that case.

Further, a robust bytecode format would required, since there are already piles of hacks in the JS libraries we all use to handle various browser differences. To get a bytecode that allows this, we end up with something that looks more like a simple source code transform than any bytecode that gives significant speedup out of the gate. (and at that point, your obfuscation of the code starts to go away too - you could just disassemble it to something that looks like jsmin output).

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> It seems to be more of an Internet Culture thing than a Software Developer thing. There's a _huge_ industry of C/C++/Ada/Assembly/.NET/JVM programmers out there, behind the scenes. Many of them are working for big companies, and big ol' companies generally aren't cool with their employees even talking about what they do online. You know that old 'the opinions expressed in this blog are my own and do not represent the company I work for or their investors or their advertisers" spiel? That's considered _lenient_.

But the Internet likes to talk about itself, so here it seems the only world is Javascript. And this corner of the Internet likes to talk about "tech startups", which is a very broad sounding term that actually refers to a very narrow set of almost exclusively web-technology companies. Not much hardware coming out of YC.

Additionally, this is somewhat of a "get rich quick" crowd, and nothing gets you a bigger market faster than a 'web app', whatever you define that to mean. It was always hard to get the average computer user to install desktop software, let alone pay for it, and that hasn't changed much.

</comment><comment><USER7> The premise is wrong. Plenty of native code is being written, just not by "app" writers. The UX domain has been ceded to interpreted/managed environments (with a few holdouts: ObjC apps on iOS being the biggest one) and it isn't coming back.

But under those apps sits a huge middleware, system management, driver, kernel and firmware stack. This world is very much alive. It's just a well-developed field without a lot of innovation happening in its tools. System s programmers don't spend a lot of time writing about the super-cool new environment of the week.

</comment><comment><USER8> > "Is it because native code is much more difficult to write? That shouldn't > be an excuse."

That seems like a perfectly valid excuse to me. All other things being equal, if it's more work to write an native app, why would you? And with the incredible improvements in the Javascript ecosystem, "all other things" are indeed quite often equal.

<comment><USER9> It's the other way round, hence web apps having, pound for pound, far fewer features than desktop apps. Getting a nice, usable UI working on the web requires a hell of a lot of low level work which has been abstracted away in the desktop GUI libraries for almost two decades. This whole thing reminds me of KDE4 - the foundation allows more interesting things but it takes a very long time before it's feature-complete.

<comment><USER8> I think comparing the number of available features per "pound" of effort is a mistake. Features are a binary thing for a given project: either the platform does what you need, or it doesn't. What matters to me is the amount of effort needed per "pound" of relevant feature. And that's where, in my experience, JS has a leg up.

The other crucial argument, which was made in other comments, is that the advantage of JS is further multiplied by its cross-platform nature. Basically every device that matters supports it. I believe that makes the comparison to KDE4 slightly less relevant :)

<comment><USER9> >And that's where, in my experience, JS has a leg up.

I have to disagree with this. Creating a form which displays a list of users and another to edit their details is trivial in, say, .NET's winforms. With [PHP,Python,Whatever]/HTML/JS it's a comparatively painful exercise. No form designer, you have to worry about low level stuff like data binding, the default styling is too basic to be of use. It's a major step backwards, hence people being excited about Meteor (<http://www.meteor.com/>) - it's finally bringing back the RAD tools that we've been lacking for so long.

<comment><USER10> It is trivial as long as your assignment is trivial and supported out of the box. Also, .NET is a complete platform, while PHP/Python/JS are programming languages not frameworks. For example Cake, Django or Rails would [parhaps] be better comparison. Also RAD tools are generally, in my opinion, not as helpful on complex projects as they are for simple applications.

</comment></comment></comment></comment></comment><comment><USER11> Yes, but this is missing the reasons why people aren't psyched about native code and are psyched about javascript.

There are inspiring stories of people reusing modular bits of javascript that others write. Look at npm, and github. This doesn't happen on anywhere near the same level with cocoa, due to the culture of closed-by-default, the near- zilch focus on stuff like cocoapods, and the fact that most people are making 'products' and don't like to credit the giants they're standing on.

This also uses, but doesn't make or properly explain, what it means by 'better'. Javascript is worse for... the desktop? Notification based apps? This doesn't ring true, and isn't backed up by facts or citations in this article.

TileMill ( <http://mapbox.com/tilemill/> ) is nodejs wrapped by incredibly minimal native windows (basically just chrome & an embedded browser) on three OSes. Should we have built three separate UIs, in cocoa, windows apis, and gtk? Would that have been 'better'? No.

<comment><USER12> Now, I'm not trying to incite a native vs. web flame war here, but I believe that building separate native UI layers would have actually been much better. I hope I can provide some constructive criticism on the native app for the Mac:

The app, as it stands, does not behave like any of the others on my screen. This greatly increases the startup cost for me, since it doesn't follow the idioms I've already learned (and which I'm concurrently employing in these other apps).

For instance, the code editor doesn't behave like any other text editor on my screen (including the Xcode and TextMate source editors open alongside): Ctrl+Arrow doesn't navigate; double-click-and-drag doesn't select by word; my services are not available in the contextual menu; etc.

The keyboard shortcut for "change tab" that works in all the other tabbed windows on my screen does not work in this interface. The same goes for zooming shortcuts, "find" within the source editor, etc.

Then there are more fundamental disconnects: there's a "save" button in the interface, for example. That's an extremely rare thing to see in a Mac app. In fact, as of Lion, the user should never have to explicitly save.

Now, of course, building a native UI layer (in terms of design, not just ABI) would be a great deal of work. You could reasonably argue that it wouldn't be _worth_ that work, but I'd just like to point out that it would indeed provide a much better experience.

<comment><USER11> Thanks for the notes!

I've filed one issue for a keyboard shortcut for change tab: <https://github.com/mapbox/tilemill/issues/1380> and there's already one for find functionality: <https://github.com/mapbox/tilemill/issues/968> .

Lion-esque save-constantly behavior would be a bug at this point. Map rendering would need to be instant and isn't.

Tying these changes to 'a native UI' though, doesn't make a lot of sense: none of these changes are impossible, or even more difficult, because the code is in javascript rather than cocoa.

<comment><USER12> It's true: you could fix these specific bugs with JavaScript (though I don't know if you could ever get Services working!) But you'd get a _huge_ amount of standard behavior if your code editor were based on Cocoa's text system. As it stands, you'll always be playing catch-up as AppKit changes the behavior of Mac OS X's text views from release to release (and as the rest of the apps on the system move with these changes "for free").

</comment></comment></comment></comment><comment><USER13> The rise of JavaScript mirrors somewhat the rise of C. Both C and JavaScript were initially tied to a particular platform (Unix and web browsers, respectively), both languages rose to prominence because of the dominance of their platform, and then both languages springboarded to transcend the platform. Their technical merit did not matter much, as long as they were good enough.

So today we see JavaScript being promoted as a first-class language for servers (node.js) and desktop apps (Windows 8, WebOS) when it's so obviously ill-suited to both tasks. I suppose the thinking is that the strong tool support and pool of developers already familiar with the language make up for its technical failings. It's distressing to see carefully crafted languages like C# being shouldered aside to make room for technically inferior ones, like an unqualified rich kid using daddy's connections to get a job. But in practical terms it may not matter much, as the APIs are more important than the language.

Anyways, the web calibrates user expectations down way low - heck, half of the sites I visit are trying to mislead me in some way, and quality can be dialed down when users can't demand their money back. This is a recipe for just awful software, but it's possible to break through that by building something obviously better. Remember how unappealing the so called "sweet solution" for the iPhone was, compared to native apps? Rock solid, reliable programs with a great user experience are a joy to use, and that sort of program can only be built using native APIs.

</comment><comment><USER14> Cross platform is probably exactly the reason more native code isn't being written.

You get more surface area for your app and you don't have to worry about if the platform you are writing for will exist tomorrow.

</comment><comment><USER15> This post just seems fundamentally misguided.

The author's point that "there's lots of things that are difficult in the world, but, that doesn't mean no one is attempting them" seems to be his strongest defense for a native app. Other than that, we have the claim that " hacking a solution for the web that would work much better on the desktop is definitely not something you want to do."

First of all, Light Table _is_ a desktop app. Yes, the view layer will run in a web browser. But the runtime exists on your desktop. It is not a cloud editor like Cloud9, and will be running compiled byte code on your desktop in order to deliver that experience. In many respects, it is a native app (well, as native as a jvm runtime can be).

Second of all, I think that Light Table is definitely hitting the mark of attempting something ambitious and difficult. When you attempt ambitious, difficult things you want to lower as many barriers to entry as possible. It's a matter of exercising proper judgement and determining what you're striving to achieve. For the author of Light Table, that means writing a lot of javascript and lisp. For someone else, it might mean writing a lot of Objective C.

But, for God's sake, don't say that you should write a desktop app as a native app simply because you feel like there needs to be more "native code" in the world, especially in a day and age when your javascript compiles down to said native code.

</comment><comment><USER16> Maybe the Go language will become cross platform enough to get people back to a compiled language. iOS and Android could use Go libraries? I was watching a Rasberry PI video and wondering how fast Go would compile on them. A "modern" C would help get people back to compiled languages.

Btw, would a Go to C compiler solve the platform issues?

</comment><comment><USER17> What I would really like to see is something that leverages all of the skill available for and effort put into web development directly for native application development, with minimal impact on the developers it's trying to win over. E.g., an HTML+CSS+JavaScript compiler that will take your web-app code and generate a native application for whatever target that behaves just like that source code would have if it were rendered in a browser.

One of Microsoft's really good, ahead-of-the-time ideas was HTML Applications, which are essentially that and have been around (but pretty much forgotten) ever since IE5. Not a compiler, but a special interpreter based on a browser that runs HTML+CSS+JavaScript as a native application, with a special execution environment that gives script access to the operating system and some extra HTML tags for window styling.

<comment><USER18> _E.g., an HTML+CSS+JavaScript compiler that will take your web-app code and generate a native application for whatever target that behaves just like that source code would have if it were rendered in a browser._

You are looking for Adobe AIR.

<comment><USER17> Possibly. I looked at AIR briefly a while back, just before my lab transitioned away from Flash development, and while it does seem like it's on the right track, all I got out of it was that it's _supposed_ to be used with ActionScript and runs JavaScript in an even more restricted security environment than browsers give you. Maybe it does do what I want if you strip away all the Flash junk obscuring it, I just haven't seen that demonstrated.

Aside from being interpreted rather than compiled, Microsoft's HTML Applications are really the closest thing I've seen to my Ultimate Vision, and I've actually used that platform to build major desktop applications.

<comment><USER19> Will you be interested in testing such a application framework and are you sure that this will be useful for a lot of people. I am not sure why this is difficult. There are already solutions like this. The only problem i see are they are not cross platform or made simpler to experiment

I visualized a service where I would like to upload my Web App (Html/Js/Css) and download a native apk/iap so that I can sign using my keys and submit to the App Store/App Market as My Native App. (First Version)

I am sure this is solvable by lot of people in Hacker News.

What I have working is just a cross platform micro web server embedded in exe, apk, iap, dmg* to run on Android/IOS/WP7*/Win/MacOsX/Linux which can host Html Applications (Html/Css/Javascript), but currently working on server side handlers to access native features.

I am not sure whether there is any market for this type of app framework. I am exploring this to reduce my own workload in developing apps as a Senior Project Manager(Cannot create Enterprise Apps in 3 different Architectures (Java/ObjectiveC+/C#) even though you can unify the syntax to C# using Unity3D/MonoTouch/Mono for Android. My personal goal was to iterate faster on development and use C# & Native Code where appropriate. I don't want to be locked into any one architecture.

</comment></comment></comment></comment><comment><USER20> "We need to write the same app multiple times for each platform"

no we do not

We might have to in some circumstances, but that is a pretty terrible goal

<comment><USER21> Actually, Javascript isn't the greatest example for cross-platform compatibility.

Assuming you're giving out the code (because Javascript has to...) there are more platforms with good C and C++ compilers than there are platforms with good Javascript interpreters.

The Wikipedia page for V8 [1] doesn't even list Solaris as a supported OS, for example.

[1] <https://en.wikipedia.org/wiki/V8_(JavaScript_engine)>

<comment><USER20> I am sitting next to 5 devices, all 5 of them given a link can open a browser page and do what functionality most apps require, draw a ui, take input, process some output, save stuff etc

only 3 of those devices can actually run arbitrarily compiled apps, and of those 3 you have to build against an entirely different ecosystem (osx, ubuntu and android)

sure you can get a c compiler in most platforms, but that doesnt mean native apps are portable, they are by definition not

</comment></comment></comment><comment><USER22> If an application was created to be consumed like fast food, then I would say go for javascript/html/css. If it is created to be used a lot and last long, then I would suggest go native, even just for the sake of saving a few battery bars.

</comment><comment><USER23> Is there a middle ground where you build a web app, and then offer a desktop app for people willing to install it? For example, I want to write some lesson planning software for teachers. It would fit the web app model well for many reasons, but there are compelling reasons to make it a desktop app as well. I plan to build the web app first, and with traction offer a native app.

This seems to parallel the current trend of building a web app and a separate dedicated mobile app. It's extra work, but done right it makes a powerful suite of ways to distribute your product.

</comment><comment><USER24> It seems to me that NaCl stands the best chance of reviving "code to the metal" programming in a web environment.

1\. It is more cross platform than most native code today - the same assembly runs on win-mac-linux without recompilation.

2\. Has cross platform audio+3d (no AV _input_ yet, but soonish I guess)

3\. Your code runs in a web environment and is launched with a link, so you can leverage on the GUI support available in the browser.

</comment><comment><USER25> writing mobile game apps in C is totally cool and everything. but for small startups, surviving and quicker profit are way more important than adopting some aristocratic way of programming

</comment><comment><USER26> First comment says it all</comment>


Why learning to program alone is a terrible idea - <AUTHOR> https://hackernoon.com/why-learning-to-program-alone-is-a-terrible-idea-11d489b80a62#.gcusoh1es <comment><USER2> well, i learned to program alone ;) Started with C#, then switched to HTML/CSS(/JS? i don't remember it anymore) and then in 10. grade learned Java. But i never finished a programming book! For me it just doesn't work that way. I started with some idea and tried to do it. First a simple guessing game (you had to guess the number and it would return whether you're above or below), a few websites, then a program to manage my homework which scheduled it to be as lazy as possible, taking into account free slots between classes. I still first have the idea and then try to implement it, learning by doing is what works for me (also applies to math. The lectures are important and so, but it falls and stands with the assignments you complete. Just don't try to do it alone).

When i was in school, programming was a hobby and not super important. I just did it irregular in the evening. But doing something with friends is more fun and programming is something that should not be done isolated, entire project fail because of that. Communication is key. I just did other things to learn how to work in a team.

<comment><AUTHOR> Right I think programming by nature is highly collaborative activity like the most things humans do.</comment></comment>


[Apple] All Developer Program Services Are Now Back Online - <AUTHOR>

We are pleased to let you know that all our developer program services are now online. Your patience during this time was sincerely appreciated.<p>We understand that the downtime was significant and apologize for any issues it may have caused in your app development. To help offset this disruption, we are extending the membership of all developer teams by one month. If you need any further assistance, please contact us. <comment><USER2> I still cannot "review" my agreements for some reason.

Stuck waiting for more "magical" design.

</comment><comment><USER3> Are you officially posting on behalf of Apple ? Where can we contact you ?</comment>


Almost everyone who is single is single for the same reason - <AUTHOR> http://qz.com/641236/almost-everyone-who-is-single-is-single-for-the-same-reason/ <comment><USER2> Should have known an article titled with "Almost Everyone" would be completely devoid of any data to back up an assertion based upon a preconceived notion of why Humans are single.

I'm sorry but life is not an episode of "How I Met Your Mother" where all of the single people are _waiting_ to find the "one". I'll speak anecdotally for those I know who are single simply because we choose to be. For us our work and self is too important and time consuming at this junction of our lives to devote the time and energy it takes to make a relationship work.</comment>