Linus Torvalds responds to what killed the Linux desktop - <AUTHOR> https://plus.google.com/115250422803614415116/posts/hMT5kW8LKJk <comment><USER2> What users actually depend on Linux's iron-clad promise to never break binary compatibility? It's curious to me that this issue is considered so sacred and yet I rarely hear the rationale or actual user stories of people who want to run 20-year-old userland on a new kernel.

In particular, note that the promise of kernel binary compatibility does _not_ guarantee that an old binary will run on a modern Linux distro unless the binary is statically linked. Most user-space libraries bump their major version number every so often, so it's unlikely that the required .so's for a very old binary will be present on a new system.

<comment><USER3> You raise a good point. Why are most open source programs dynamically linked again?

Static linking is one of the nice things about the OSX ecosystem. If only Apple wouldn't unnecessarily break their runtime environment every few releases.

<comment><USER2> > Why are most open source programs dynamically linked again?

Probably because dynamically-linked binaries are smaller, use less memory (by avoiding duplication), and can get fixes or security updates without rebuilding or re-deploying. When you're a distro it hardly makes sense to ship a copy of libc inside every single binary. Any fix/update to libc would require re-downloading basically the whole system!

<comment><USER4> Bandwidth is cheap. Memory and disk space are cheap.

I think the days when it mattered are really coming to an end personally.

The amount of space (memory/disk/bandwidth) taken up by binary code is minuscule compared with data/video/streaming/games/etc etc

<comment><USER5> Not on every system. Not even on most systems. Embedded, mobile etc still benefit from low distro size.

</comment></comment></comment></comment></comment><comment><USER6> has linux desktop failed? Really? Correct me if I am wrong but we are talking about a concept which has spawned thousands of distros used in millions of computers still.

And main argument is rotten as heck: backward compatibility out of the box? On Mac? Please! You have to install Rosetta for that, without it you have no chance of running that escape velocity on your shiny macbook pro. Windows 7 make you feel like it can do backward compatibility jig, until you meet ultrahyperfast running software. And no I am not talking about some console application but the second incarnation of Saints Row.

I mean I would have understood if he simply said "I have started using Mac Os insert-cat-name-here and liked it" nobody would have any problems. I really can't understand the need to declare previously used software dead, bad or other derogatory terms. You use Mac, I use linux and it's still alive and kicking, considering I got security updates this morning.

<comment><USER7> >has linux desktop failed? Really? Correct me if I am wrong but we are talking about a concept which has spawned thousands of distros used in millions of computers still.

Desktop linux has utterly failed, yes, clearly. OSX grew to over 10%. Linux desktop continues to remain statistical line noise. That doesn't mean that literally no one on the planet uses it, just that a very small number of people use it.

</comment></comment><comment><USER8> I personally felt that the "What killed the Linux Desktop" article was completely irrelevant.

It seems there's always going to be some people who complain that GNU/Linux isn't 'good enough' or whatever, and as a community we should simply ignore these people.

</comment><comment><USER9> I don't really get the problem.

The desktop never really needed Linux, and Linux never really needed the desktop.

People seemed to like Ubuntu some years ago though.

<comment><USER10> >The desktop never really needed Linux

That depends on how far Microsoft and Apple go with the tabletization of Windows and OS X in the next few years.

I've been a mac user for years, but after playing with mountain lion, I could see the writing on the wall. It was time for a new laptop, so I went with a thinkpad with Arch Linux.

I don't think that Microsoft will ever manage to completely force the app store on everyone--solely because of enterprise customers--unless maybe they force you to use it on home/basic and make it optional on business/enterprise. However, I do think that's what they and Apple eventually want. I also think that's probably what the average consumer wants.

We need Linux as a third (and 4th, 5th...) option for all of us edge cases that don't fit the standard consumer mold.

<comment><USER11> It's funny you switch to Arch Linux, because Arch Linux is exactly the worst example of broken userland that Linus is talking about in the post. Arch Linux values "bleeding edge" over all things including basic usability, and they willfully break compatibility with all other distros even when there is no conceivable benefit.

The best example of this is the Arch mishandling of Python 3. Remember when they decided that "python" was now Python 3? If you are a Python dev, then alarm bells should already be ringing in your head. This is a BAD decision with no excuses.

Python is wonderful because it is very portable. I can write Python scripts on my Mac and run them on Linux or even Windows without significant changes. Python 2 and Python 3 are incompatible, and I usually target Python 2 for anything I want to be portable, since Python 2 ships default on OS X and on lots of Linux distros. This is reality.

My Python 2 scripts begin with a shebang, "#!/usr/bin/env python" which launches the Python 2 executable, wherever it is installed, on OS X or Linux. Unless you are running Arch Linux, in which case you need to go in and manually change the script to point to "python2" instead of "python". Except "python2" is essentially unique to Arch, it doesn't exist on Debian or Fedora or OS X or whatever. So no portable script is EVER going to point to "python2".

But there's no real benefit to making "python" into Python 3. Anyone targeting Python 3 will write "python3", which works wherever Python 3 is installed, including Arch Linux. This is the decision the upstream made, and it's a good decision. Anyone targeting Python 2 writes "python", which works everywhere except Arch, and on Arch you have to edit your scripts. Who wants to keep a separate copy of your scripts for Arch? What if they're not your scripts? Do you write a shell script that runs "sed" to fix them? What if you keep your Python scripts in Git or SVN, and don't want to change them every damn time you check out a fresh copy on Arch?

Worse yet, lots of Python devs want to install and test with specific versions of Python -- say, the Python version that their servers run. Arch sabotages this, because as soon as you put "python" in your $PATH, a ton of Arch programs break if they target Python 3. And they wouldn't have broken if they just said "python3" in the shebang to begin with.

The result is that Arch has to maintain a fork of EVERY Python script in their repository. For what? No real reason. The only conceivable benefit of this terrible change is that a user can type "python" in the terminal and get Python 3 instead of Python 2. I've been doing this for years with an alias in my .bashrc, and it doesn't break every Python package in the repository.

So in short, the Arch Linux developers promise a new world in which not only is binary compatibility impossible, but source compatibility for SCRIPTING LANGUAGES is impossible as well. They have taken a bad idea and stuck to it, dismissing anyone who disagrees with them by suggesting that they use "sed" to fix the user's "broken" scripts, in such a way that it would break compatibility with every distribution besides Arch.

And I have further rants about Arch with respect to (1) their dismissal of bug reports of serious security vulnerabilities in default configurations (2) the dismal performance and general usability of their package manager (3) the inability of their maintainers to create a correct package for something as simple as a font (4) the terrible average quality of advice on their wiki, which is often gives advice that simply doesn't work for well-documented and easy-to-discover reasons.

Gawd, use anything else. Gentoo, even.

Okay, I want to rant more.

(1) Security vulnerabilities are dismissed with the kind of reasoning like "users who run this package know what they are doing, and don't run the application on untrusted networks." Considering any (non-virtual) network secure is almost certainly a sign of incompetence in your sysop.

(3) Install "terminus-font", it won't work. You have to manually "xset fp" the path to it.

(4) See #3, and then look up the Wiki advice for it. It just doesn't work if you run e.g. GDM, which doesn't run ~/.xinit.

<comment><USER12> I don't really understand the fuss about the Python thing. `#!/usr/bin/python2` should work on pretty much any system, not just an Arch Linux system. Whatever happened to "explicit is better than implicit"?

If the Python community eventually wants Python 3 to become the default, they will all have to deal with this issue sooner or later; Arch is just opting for "sooner", as that's in line with the way Arch approaches all changes. The real problem is that there are two incompatible versions of Python, and most Python developers give too little thought to forward compatibility to include an extra '2' in their shebang lines in order to disambiguate their intentions. Just because python == python2 on most systems today does not mean the status quo will forever be the same, nor that it ought to be.

In any case, there is no problem making Python scripts work on Arch, even if they use the ambiguous shebang. All of the official packages work out of the box with no problem, of course, and anything unofficial (i.e. AUR packages) just needs a single, trivial sed command added to the PKGBUILD. Arch is not "maintaining a separate fork of each Python package". This is the opposite of true; in fact Arch packages are, on the whole, far _closer_ to their upstream counterparts than the same packages from other distros, where it is common for huge divergences to be made from the upstream defaults. Hardly worth ranting about.

You come across as if the Arch developers viciously attacked your family or something. Maybe it's just a distro with different values than yours, man! Relax, there are lots of other choices! It's not supposed to appeal to everyone, but for those of us who align well with the Arch "philosophy", it's fantastic.

<comment><USER11> There is a serious problem when "pretty much any system" excludes both Debian and Mac OS X, and I don't know which others. The "python2" symlink is frighteningly recent in the Python world, and some of us like to support systems other than the bleeding edge. It makes me kind of skeptical that you read my post, because this was the main point of my complaint.

My point is not that it's hard to get Python scripts to run on Arch, my point is that I shouldn't have to do any work at all.

You can see a summary: <http://www.python.org/dev/peps/pep-0394/> (note it's not yet been accepted)

"Until the conventions described in this PEP are more widely adopted, having python invoke python2 will remain the recommended option."

"This feature [python2 symlink] will first appear in the default installation process in CPython 2.7.3."

Python 2.7.3 was released in August 9, 2012, slightly over one month ago. That means that if you are running a Python 2 that is more than one month old, you won't have the symlink unless you make it yourself, or your distribution provides one for you.

</comment></comment></comment></comment></comment><comment><USER13> I'm a little confused. Are Linus (and Alan, Ingo and even Ted Ts'o) arguing that the GNOME team experiences breakages because they ignored the kernel team practices and used internal interfaces instead of the public ones?

Also why do they refer to GNOME as a "research" project?

<comment><USER14> No, they're arguing that the GNOME team defends breaking (GNOME) public APIs by arguing that the kernel team does not hesitate to break _internal_ APIs, instead of recognising that actual public Linux APIs are highly stable.

<comment><USER15> It's a bit more nuanced than that. Miguel(the founder of Gnome but was uninvolved since 5 years) said that the culture of Linux was to break things(see driver ABI) and then use the fact that the driver source is available for most drivers to get around that and just recompile them with changes. And that the userland adopted that practice(see autoconf) and led to fragmentation of the software platform with library hell, leading to commercial software staying away for the most part.

As you say, others responded with external vs. internal interfaces, but what is an external and internal interface for things like Gnome or KDE? They have only one API that's used by both their other libraries/applications and application writers.

<comment><USER16> _"They have only one API that's used by both their other libraries/applications and application writers."_

Which is a problem they without doubt did not inherit from the kernel team.

There is little doubt that the GNOME guys have been using kernel practices to justify their actions. The point being made here is that they are wrong to do so.

<comment><USER15> >Which is a problem they without doubt did not inherit from the kernel team.

Interesting point, Windows, OS X, iOS etc. get derided for having internal private APIs that they try to prevent external devs from using, and not doing the same thing is now a 'problem' for GNOME and KDE? Isn't the whole point of Linux for developers, freedom to use it as you see fit?

<comment><USER17> _Isn't the whole point of Linux for developers, freedom to use it as you see fit?_

I've yet to hear of a philosophy that allows you to both 1) use everything as you see fit, even things marked as "internal" or "private" and 2) give you the right to complain about your software getting broken because you relied on things marked as "internal" or "private".

In other words, you can either restrict yourself to the published APIs and demand compatibility or you can use the guts of the system and have no expectations of stability when the guts change.

<comment><USER18> Allowing the public to use API calls marked as private, with the understanding it may change at short notice, actually seems like a good compromise.

<comment><USER15> How many things can you mark as private in an application GUI toolkit like Gnome or KDE/Qt and make them available to your own applications? Private/public API doesn't really make sense for GUI or sound libraries.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> I don't really consider the Linux desktop "dead". Besides Android, it just has a marginal market share because you mostly need to be tech oriented to use it or install it.

I think the risk for the future is that the idea that the traditional desktop is dying out. In some respects the touch capable tablet UI's are much more user friendly. On the other side, the lightweight web-only interfaces (Chrome OS) are becoming increasingly more powerful/useful.

Windows and Mac have already moved to hybrid designs.

</comment><comment><USER20> Off topic. App.Net says it is "a real-time social feed without the ads". This G+ page is quite on topic with some heavy participants, design looks good, and clear from ads. Why would I want to pay App.Net?

<comment><USER21> For one thing, G+ doesn't have a serious API yet, whereas App.Net already has Android and iPhone apps by third-parties using its API.

But overall, I've found it interesting how little G+ comes up in discussions about Twitter and App.Net. I happen to think it's an absolutely excellent product and find it much more engaging than Twitter. Most people I see complaining about it have made hardly any posts and haven't taken the time to build up a network.

<comment><USER22> > But overall, I've found it interesting how little G+ comes up in discussions > about Twitter and App.Net.

Probably because it's completely Apples-to-Oranges. Twitter/App.net is for _short status updates_. I deeply value the enforced brevity. G+ posts tend toward blog-style bloviating; the use cases really don't overlap.

<comment><USER21> Fair point. I've noticed G+ doesn't work at all for live event updates, so expecting them to build a Facebook-like "heartbeat" thing on the side at some stage.

At the same time, I can say I've moved a lot of link sharing to G+, so for that use case, it's a fairly direct substitute. The rich embedding is better and I can say what I want without having to cram it. It's like that Pascal quote about not having time to make it concise...G+ just lets you write a couple of sentences, or more on whim, without having to then manicure it into 140 characters.

</comment></comment></comment></comment><comment><USER21> OT - Now would be a really good time for Google Plus to permalink comments (like Slashdot and others have done since ancient history).

</comment><comment><USER23> At times like this I wonder why am I even trying to read discussions on G+. <http://i.imm.io/D7zA.png>

<comment><USER24> I don't enjoy it either. The tampering of the scrollbar and having the text stuffed into some sort of frame ruins the experience. Those two problems make it difficult to read on G+ so I usually just avoid it.

</comment></comment><comment><USER25> Reading this discussion is hard for me without thinking, what would have happened if the whole Linux ecosystem was BSD-licensed?

<comment><USER15> That's easy,some BigCo would've co-opted it, paid developers to go the last mile and polish it to make it usable, and make it incompatible with everything out there and sold it. Perhaps Sun or IBM or even Oracle. E.g See OS X and to a lesser extent, Linspire/Lindows.

<comment><USER26> Hasn't happened to PostgreSQL and I doubt it would have happened to Linux. The leader and community are pretty strong with Linux and that is not about the GPL. I would imagine some folks would fork it, but that always is a losing game from a business point of view (paying for a fork vs. patching and getting everyone to pay). Having BSD licensed kernel at that point in history during the AT&T BSD lawsuit would have been seriously interesting.

<comment><USER27> Maintaining a fork isn't a big issue if you have enough resources, considering that if Linux was BSD licensed they would still have had their proprietary fork mirror it "close enough" to pull in at least some of the big changes from the main Linux tree. Android seems to work in this manor to a certain extent (although they open source patches back when they have to because of GPL).

You would most likely have ended up with a bleeding edge open source version and several more conservative closed ports.

Bear in mind that a lot of the reason Linux development is strong is because many of it's developers are paid to work on it and then contribute back (again because of GPL). If a company could gain a competitive advantage by paying the same people to work on a closed fork..

<comment><USER26> I think the problem with maintaining the fork is the speed of development of the community, and let's face it, it is much easier to monetize hardware than software in the open source world. The fear of being left behind and weird vendor specific errors should not be discounted.

I agree though, someone would try. I just think Linux would have done just as well with a BSD license being released at the time it was. The people and the timing deserve more credit than the license.

</comment></comment></comment></comment></comment><comment><USER28> This is essentially a duplicate of <https://news.ycombinator.com/item?id=4467653> from one day before.

<comment><USER29> Except this is the actual thread that's still evolving while the other was some cut up quote filled "news" post.

The conversation here may parallel the other but I think this link is more valuable.

</comment></comment><comment><USER30> Here's a few places it falls short with reaching mainstream consumers, I realize many people may not care about that, but I think it could be a viable alternative to windows or OSX for many people if it were easier to get started with and use.

1\. Not clear how easy it is to dual boot install with windows for non tech users. e.g. difficult to get started.

2\. Make it faster, latest ubuntu is sluggish. The UI gets non tech users excited, a few minutes of using it and they are going to bounce.

3\. Make installing programs easier, I know how to get them running, I still don't know how to get them properly installed. Average Joe has no chance.

4\. Support all common user tasks out of the box, for example viewing videos online.

To me it feels like Ubuntu is 90% of the way there, just a few things stop it from being a good alternative (these things of course are probably not trivial to fix, but I would say they are critical).

</comment><comment><USER31> Epic thread. I haven't used Linux much since early 2000, but all the giants of Linux I remember from my Linux hacking days are there. Interesting read!

</comment><comment><USER32> I has been a while since I stopped using a Linux desktop. The reasoned I stopped:

a. there were at least two of everything: GNOME, KDE, vi, emac, gedit, Firefox, Opera, kasablanca, ftpcube ...

b. crap device support: graphics cards, printers, cameras, thumb drives ...

c. highly variable levels of application quality and support

</comment><comment><USER33> I think this flamewar is just a viral marketing strategy for Google+

<comment><USER34> I don't think so. It's so hideously designed [1] that the more people _don't_ use it (and have a feeling that it's great, as they've heard others like it), the better for them. Now I'm trained to _not_ open G+ posts unless I'm absolutely sure there's something I will enjoy/learn from. YMMV.

[1]: That stupid "Join G+" black bar, the absolutely unnecessary chrome around the content that takes up more than 83% of screen real state on my 15" MBP, no links to comments

</comment></comment><comment><USER35> IMHO, Gnome2 was great, but since then its all gone downhill. Still cursing Ubuntu for Unity.

<comment><USER36> FUD, Unity is great and you know it. People bashing Unity have not really tried it yet.

<comment><USER37> I've been using it for a few months and becoming more and more upset with it. I have very high inertia and so I've stuck with it to give it a chance, but the deal-breaker is probably going to be that sliding my mouse to a new window ought to result in me _immediately_ being able to type in the new window.

<comment><USER38> I can't get my Gnome2 with Compiz to do focus follows mouse either. How?

<comment><USER39> I do not remember how but I am almost 100% sure I at one point ran Gnome2+Compiz with focus follows mouse. Maybe you need to install the advanced configuration manager for Compiz.

</comment></comment></comment></comment></comment><comment><USER40> The Linux desktop will never succeed as long as nobody can profit from it. As long as Microsoft prevents the distribution of Linux through tithes or threats of patent litigation, why would anyone spend a penny making the desktop look better?

edit: sources

[http://www.informationweek.com/windows/microsoft- news/micros...](http://www.informationweek.com/windows/microsoft- news/microsofts-new-cash-cows-linux-and-andro/231601809)

<http://www.groklaw.net/article.php?story=20090619161307529>

<http://www.pcmag.com/article2/0,2817,2331462,00.asp>

<comment><USER15> That's an extremely opinionated point and doesn't add to the discussion and comes off being on a witch hunt. MS couldn't stop Samsung, HTC, Lenovo etc. from shipping Android devices, nor all of them plus Acer, Dell, and hundred other OEMs etc. from shipping Android tablets. What about HP and WebOS? Dell still ships Ubuntu laptops. And almost all the big OEMs have a big Linux division beside their Windows server division on their server pages. <http://content.dell.com/us/en/enterprise/linux-servers> [http://h18000.www1.hp.com/products/servers/byos/linuxservers...](http://h18000.www1.hp.com/products/servers/byos/linuxservers.html)

Where are the lawsuits against System76? If there really was demand, you think a company wouldn't start up and offer Linux? In fact there have been OEMs shipping Linux, but stopped or hid their offerings after the high rate of returns from people buying and returning them. And the tech savvy people who are the real customers can buy ANY PC out there and throw Linux on it(or just get a Macbook Air). There's not much money in it for the OEMs except high support costs, return rates and a whole toolchain to get Linux images(hard on thin margins).

If there is real mass consumer demand, a company can ship Linux profitably, MS won't care about them till they start making hundreds of millions a quarter, at which point successfully fighting a lawsuit based on antitrust case precedent on PCs or paying a low amount per PC won't really hurt the manufacturer. So, stop painting MS as the bogeyman in this discussion, Windows' and Office dominance(due to Open/LibreOffice not being up to par due to various reasons including Office compatibility) is a well known reason.

<comment><USER40> 1). Yes, companies ship Android devices, but if you read any of the articles you would have seen that those companies pay $8-15 for a Windows Mobile license for each phone.

2). You are right about Microsoft not trying to litigate for Linux servers, but I'd take a guess that is because most companies already have a heterogeneous environment, and if push came to shove I would assume that most companies would consider a full switch to Linux if Microsoft forced their hand.

3). HP and Facebook are the two main companies defending Linux atm, you are right about that: [http://www.theregister.co.uk/2011/04/20/facebook_hp_and_open...](http://www.theregister.co.uk/2011/04/20/facebook_hp_and_openstack_join_open_invention_network/)

4). Dell does not currently distribute any consumer laptop with Linux as an option, at least not when I tried the top 10 popular laptops on their site.

5). They don't profit from putting System76 out of business, and in fact would probably cause much more financial harm in terms of what it would do their image as picking on the little guy.

6). You are absolutely right about the low consumer demand. However, don't you think it's weird that NOBODY is pushing it? Not even as an experiment? No smartbook running Android? Why is the Asus Transformer the closest attack we see?

<comment><USER15> > Dell does not currently distribute any consumer laptop with Linux as an > option, >However, don't you think it's weird that NOBODY is pushing it? Not > even as an experiment? No smartbook running Android?

Wrong. It's funny you're commenting on this so vehemently with so much anger against MS in this and previous threads and you haven't even heard of Dell's Sputnik?

[http://www.pcworld.com/businesscenter/article/259229/dells_u...](http://www.pcworld.com/businesscenter/article/259229/dells_ubuntu_laptop_program_enters_beta_blows_away_expectations.html)

They do sell in places where there's more demand, and the Windows tax is high in relative cost of living terms.

[http://www.omgubuntu.co.uk/2012/06/ubuntu-dell-laptops-go- on...](http://www.omgubuntu.co.uk/2012/06/ubuntu-dell-laptops-go-on-sale-in- india)

They did try a while ago in the US and they didn't sell well and now they're making a dev ultrabook.

[http://arstechnica.com/information- technology/2012/07/dell-l...](http://arstechnica.com/information- technology/2012/07/dell-launching-sputnik-the-ubuntu-developer-laptop-this- year/)

[http://www.zdnet.com/dell-re-enters-high-end-linux-laptop- ma...](http://www.zdnet.com/dell-re-enters-high-end-linux-laptop-market-with- red-hat-enterprise-linux-7000001583/)

Microsoft is plenty evil, but there's no need to make up things.

Edit: How many would buy Dell's laptop? Most devs would prefer their own choice, perhaps a Macbook Air or throw Linux on a Thinkpad. How does Dell get a leg up on Lenovo(with Windows) here without making 20 laptops with Linux?

<comment><USER40> Can you buy a Sputnik laptop? No, it's not for sale. Until you can, it's just another Linux laptop that gets press and mysteriously never gets released; see every smartbook (aside from the recent Chromebooks, which corps. still have to pay to suppress patent litigation) [http://www.techradar.com/us/news/phone- and-communications/mo...](http://www.techradar.com/us/news/phone-and- communications/mobile-phones/patent-deal-exposes-lg-chromebook-plans-1054281).</comment></comment></comment></comment></comment>


The truth about freelancing - <AUTHOR> https://medium.com/@2upmedia/the-truth-about-freelancing-a53e081527fd#.slp0pzo2m <comment><USER2> In addition to everything else listed in the article, you should also learn to proofread, and especially learn the correct usage of "your" vs "you're".

And before someone accuses me of nitpicking, keep in mind that as a consultant you are very often communicating using written media.

</comment><comment><USER3> Freelancing, for me, rarely involves working from home. If and when you can work remotely depends on the type of work, not your employment classification. This article was written from a very narrow perspective. Even the 100$/hour dream is misplaced. 100$ is nothing for many freelance contractors. I make more. That said, I spend 2/3 of my time on non-paid tasks such as proposals and giving talks at conferences.

Fyi, most lawyers (or their firms) operate under some form of "freelance" as an outside contractor charging by the hour. Recent surveys show that even at "big law" firms only 25% of lawyer time is actually billable hours. The rest, like me, is spent doing all the other things you must to bring in work while maintaining your freelance status.

</comment><comment><USER4> I worked as employee and as freelancer and prefer the last.

I just can't do this office 9-5 stuff.

But it's not the end game for me.

I don't like how most companies are structured and I don't like the attitude most CEOs have. So working with one, or a few, customers is only a bit better than working as an employee.

I think the optimal case is to create some products and have >100 customers, so if one tries dumb shit with you, it doesn't threaten your existence. Also, I think it's easier to motivate yourself to work on something that is your own and you believe in, than to implement "the visions" of other people on a constant basis.

</comment><comment><USER5> Best advice: "it's all about finding value for your client and getting compensated for that." The less people on Earth that can do what you can, the more you should be charging, especially if it's a decent-sized organization footing the bill.

<comment><USER6> Unfortunately, because there is such wide income disparity in the world, you are always going to compete against another competent freelancer who will accept much less than you. That drives everyone's rate down. I'm speaking primarily about remote freelancing jobs, which are the only ones I've accepted over the last many years.

<comment><USER7> Or more realistic outside USA: You will rarely found the customer that pay top money.

You can bet we charge less not because we want, but because that is the local rate. _Sometimes_ we can score a outsider, but for much we talk about the magical properties of remote-worldwide work, even more if is consulting/freelancing, is very much about local + native language.

</comment></comment></comment><comment><USER8> An unmentioned corollary: freelancing's finest hour is when you don't really need the money.

<comment><USER9> Life's finest hours are when you have fuck you money in general.

</comment></comment><comment><USER10> Seriously, this is HN worthy?

<comment> dimitri-gnidash As a person who does freelancing and running the agency successfully, I can attest that "remote contractor living in exotic locales" is a recurring developer fantasy.

I have had quite a few people ask me how to get clients. I always struggle with the answer. What do you say referrals? It is a business like any other and you will need to exercise other skills besides software development.

In that sense, the article providing a different viewpoint is HN worthy as this is exactly where lots of entrepreneurial developers congregate.

</comment></comment><comment><USER11> Yes, or you can learn to develop software professionally and never worry about money again...</comment>


A New Phylogeny of the Mammals - <AUTHOR> http://whyevolutionistrue.wordpress.com/2011/10/31/a-new-phylogeny-of-the-mammals/ <comment><USER2> It'll be interesting when we one day have enough computational power to crunch through atavistic gene expressions to compute the taxonomy. (That is, the taxonomic equivalent of deriving the meter from the speed of light).

</comment><comment><USER3> Amazing to see that it is very random. Long tail, being big, they don't seem related at all.

</comment><comment><USER4> Do you mean computing an extinct common ancestor of a collection of species?</comment>


Ask HN: What is you current side income? - <AUTHOR> <comment><USER2> Crypto Trading, although I donate everything to a charity that means something personal to me. ~ $2,000 so far :)</comment>


Oracle nabs Xamarin as a cloud partner - <AUTHOR> http://uk.businessinsider.com/oracle-nabs-xamarin-as-a-cloud-partner-2015-7?r=US

<comment><USER2> I do like C# and I wanted to like Xamarin. But as someone who write mobile apps for fun, $600 per year for a dual-platform "indie" license is just too much. And I believe the pricing is also the reason the open source community around Xamarin is small. There are a few projects on github, but not much activity.

I doubt any of this will improve with a Oracle partnership.

<comment><USER3> Comments like this have been made on the Xamarin forums a number of time - that it's too expensive for 'hobby' developers. I'll make the same comment here as I made there, that as a Xamarin Mac (Indie) developer I'm happy they are NOT aiming their product at hobby / fun developers. A hobby is something you do optionally, if you have the funds or time. If you can't afford it, or can't monetise it - which I think is still an option for 'hobby' developers - then you can't do it. It's the same if the hobby is skydiving, parachuting etc.

As regards lack of open source material, it's not important to me however as Xamarin is C# based then any OS project that utilises C# potentially can be used within the Xamarin ecosystem.

There is a significant 'use-case' outside of the Hacker News / open source community that Xamarin addresses. Just because it doesn't fall within the parameters set down by (I am guessing) the majority of posters here, it doesn't mean that it isn't a good or useful product.

<comment><USER4> Application for Open Source Project Subscription \- [http://resources.xamarin.com/open-source- contributor.html](http://resources.xamarin.com/open-source-contributor.html)

<comment><USER5> Nice! I didn't know this.

</comment></comment></comment></comment><comment><USER6> > "If you look on Google Trends for Xamarin, it's the No. 1 mobile platform > now in terms of mindshare."

First of all, Google Trends isn't necessarily the best way to determine that. But second, it doesn't seem to be true? Unless "mobile platform" means something surprising?

edit: Maybe it's just an inaccurate quote? This other quote and text also look puzzling:

> "Every company today is building an average 30-40 mobile apps used by > employees, customers, business partners," Friedman says. That stat comes > from the company that uses his service

30-40 new apps for each company..? And which is the "company" referred to in the last sentence, as the source for that puzzling stat?

</comment><comment><USER7> Considering that Oracle's current efforts against Google could bring down the software industry as we know it, I wouldn't touch any product of Oracle's with a ten foot pole.

<comment><USER5> I can't really avoid Oracle's product at this stage. Since they purchase Sun, Java is Oracle. I had wished Google stepped up the game during the Sun bidding wars...

For the JVM ecosystem, I develop in Scala and plan to switch my JDK to Azul's [1] (soon, I hope).

[1] - [http://www.azulsystems.com/](http://www.azulsystems.com/)

</comment></comment><comment><USER8> The most interesting thing about this doesn't seem to be their cloud support. It's the inclusion of Xamarin in Oracle sales pitches delivered by their well connected sales force to corporate clients. Seems like a smart way to ease yourself into the corporate world.

<comment><USER9> > Seems like a smart way to ease yourself into the corporate world.

Not really easing though; the majority of sales for Xamarin is in the enterprise space.

<comment><USER10> Exactly, Xamarin's value proposition is enterprise and medium-large software vendors already on the .NET stack that don't want to have to learn Java and Obj-C and have two codebases.

</comment></comment></comment><comment><USER11> How exactly does Xamarin compare to native development (Java/{Objective C, Swift})?

<comment><USER12> If you prefer C# over Java, well, it is better. Learning both a new platform and a new language (especially Objective-C in the days Swift didn't exists) is a daunting task and Xamarin can ease the pain here. Also it is great to be able to maintain a single code base for the data model layer (including persistance), network access etc. And you can also use platform specific native APIs in C#.

The not-so-smooth part is the UI. You have two choices here: using the Xamarin Forms library which is a toolkit that maps high level UI component to natives ones, with the drawbacks of less customization. Or to use the native UI tool (XCode designer for iOS, Visual Studio for WP; Xamarin Studio comes with a designer for Android) to create it. But in this case, you can't use data binding, which makes WP(F) developper very sad :(

As a hobbyist mobile student developer, I wouldn't have enough time to develop a multiplatform mobile apps without it. (note: they offer free Indie plan to student who ask for it).

<comment><USER13> You absolutely can still use databinding without using forms! Take a look at mvvmcross or reactiveui, both very powerful.

</comment></comment></comment><comment><USER14> ahh Oracle, the elephant's graveyard of software.

"I'd like to buy a CRM system" \- "No problem, which of the 6 we have accumulated over the years would you like? Siebel? CRMonDemand? Peoplesoft CRM? Fusion? ...."</comment>


Douglas Rushkoff's book: Program or be Programmed - <AUTHOR> http://www.youtube.com/watch?v=kgicuytCkoY&feature=player_embedded

<comment><USER2> You've got to see this, one of the better ways to pass 2 minutes. Also do not miss the discussion on Reddit ([http://www.reddit.com/r/programming/comments/dnu8o/program_o...](http://www.reddit.com/r/programming/comments/dnu8o/program_or_be_programmed/)) some very interesting points are made. Rushkoff's main point is that when we learn a basic skill in a medium (e.g. reading, writing) we not only learn to consume but to create it; ergo, if you don't know how to program you will be manipulated by others who can or at least have to live in a world they they've built.

This analogy is old, e.g. Eloi vs. Marlocks in _The Time Machine_.

<comment><AUTHOR> The statement that stuck with me was that computer programming is the new literacy for our age.</comment></comment>


Creating iOS 12 Shortcuts with JavaScript and Shortcuts JS - <AUTHOR> https://medium.com/@JoshFarrant/creating-ios-12-shortcuts-with-javascript-and-shortcuts-js-942420ca9904 <comment><AUTHOR> Hey HN!

I'm very excited to release something I've been working on for the last month- or-so, Shortcuts JS.

Since Shortcuts was released with iOS 12 earlier this year I've been really interested in the idea of building Shortcuts with code, rather than with the Shortcuts app. After a bit of hacking around I figured out a way to do it, and so started building Shortcuts JS.

Hopefully this is something that others find as useful as I do!

Happy to answer any questions!

</comment><comment><USER2> Is there a way to search for shortcuts that are publicly shared via iCloud? There have been a few articles with lists of public shortcuts, but there's no equivalent of a directory or search engine for discovery of shortcuts or workflow automation ideas. A similar issue exists with iOS application- specific URLs for deep-linking on device.

We also need a guide for application developers who are exposing interfaces via URLs or Shortcuts, if only to recommend interface patterns that have proven valuable in many workflows.

<comment><USER3> Check out [https://sharecuts.app](https://sharecuts.app) It's still invite only for uploading your own shortcuts, but there are many tagged examples for you to browse.

</comment></comment><comment><USER4> How is this different from the Scriptable app ? That uses JS to interact with siri.

<comment><AUTHOR> Scriptable allows you to run JS inside a Shortcut and interact with some of the devices APIs from within that JS.

Shortcuts JS allows you to build Shortcuts using JavaScript, which you can then Airdrop (or otherwise share) to your iOS device. That .shortcut file is then automatically imported into the Shortcuts app and the Shortcut you built with JS is then on the device exactly as if you'd have built it through the app. No JS ever runs on your phone using Shortcuts JS.

Shortcuts JS and Scriptable are solving different problems and don't have any crossover at all.

Hope that helps clear it up!</comment></comment>


Autodesk wins copyright appeal (licensed software resale) - <AUTHOR> http://www.reuters.com/article/idCNN1017657120100910?rpc=44 <comment><USER2> How did they get away with this? Did the 9th circuit court of appeals just throw out the entire Right of First Sale doctrine?

<comment><USER3> No, they observed that First Sale never meant that content couldn't be licensed instead of sold, and applied the test from _Wise_ , which basically says "if you call it a license and your contract treats it like a license, it is in fact a license".

<comment><USER2> Actually, that's not the test from Wise. Wise says the opposite, that even a severely restricted license does not thereby preclude a transfer of ownership on a copy, and thus the first sale doctrine must apply.

The MAI trio, three later cases, says that anything called and treated as a license is a license.

The district court ruled that Wise contradicted the MAI trio, and thus the older precedent ruled. Now, the 9th circuit is claiming that they do NOT contradict, but that MAI can be reconciled with Wise. My opinion is that this is sophistry on the part of the 9th circuit, simply because their conclusion in this case _itself_ directly contradicts Wise. Wise ruled that calling something a license, and restricting its use, and restricting the rite of transfer in said license, cannot abrogate first sale. This court ruled exactly the opposite.

<comment><USER3> Neat, thanks for clarifying.

</comment></comment></comment></comment><comment><USER4> Other articles:

<http://news.ycombinator.com/item?id=1680185> <\- arstechnica

<http://news.ycombinator.com/item?id=1679906> <\- Wired

<comment><USER5> And groklaw <http://www.groklaw.net/article.php?story=201009101658045>

</comment></comment><comment><USER6> HN discussion from when the lower-court ruling came down: <http://news.ycombinator.com/item?id=864521></comment>


Boeing Has Friends in High Places, Thanks to Its 737 Crash Czar - <AUTHOR> https://www.bloomberg.com/news/articles/2019-07-20/boeing-has-friends-in-high-places-thanks-to-its-737-crash-czar <comment><USER2> Sounds like a unresolvable conflict of interest. Good for the company, bad for the public - basically government is sprinkled with dozens of people tainted by these connections to him to varying degrees. Hows that going to result is a fair & even investigation?

I wouldn't be surprised if a government sponsored bail-out / support is on the cards.

</comment><comment><USER3> > Boeing said there is no conflict of interest, or appearance of conflict, for > Luttig in the matter.

The appearance is certainly there. Whether reality confirms it or not is a different matter.

<comment><USER4> In the last couple of years the US has shown the world that it is a highly segregated country where missteps of rich people largely go unpunished, the administration can be openly corrupt and that conflicts of interest are part of the modus operandi. So what Boeing does is par for the course.

<comment><USER5> This sort of self-dealing has been going on since the 1940's, and was just the kind of problem that President Eisenhower alerted us to in his prophetic speech* warning the country about the military-industrial complex:

"In the councils of government, we must guard against the acquisition of unwarranted influence, whether sought or unsought, by the military-industrial complex. The potential for the disastrous rise of misplaced power exists and will persist."

*[https://avalon.law.yale.edu/20th_century/eisenhower001.asp](https://avalon.law.yale.edu/20th_century/eisenhower001.asp)

</comment></comment></comment><comment><USER6> This strategy could backfire if it causes EASA the EU safety regulator to distrust the integrity of the investigation.

</comment><comment><USER7> Boeing is undermining its credibility through the promotion of such strategies. I am kind of taken aback that even after the death of >300 passengers, their attitude is to weasel out of the situation with a sham certification?

Of course, I could add "For a successful technology, reality must take precedence over public relations, for Nature cannot be fooled", but then engineers hardly need to be told this, and the management thinks that as long as they can get away with murder, why even bother actually making a product, let alone a safe one?

</comment><comment><USER8> Back in April, US President Donald Trump suggested rebranding the 737 MAX, claiming that would help to solve problems with the jet.

"What do I know about branding, maybe nothing (but I did become President!), but if I were Boeing, I would FIX the Boeing 737 MAX, add some additional great features, & REBRAND the plane with a new name. No product has suffered like this one. But again, what the hell do I know?" Trump tweeted. [https://www.eturbonews.com/255810/trump-said- rebrand-737-max...](https://www.eturbonews.com/255810/trump-said- rebrand-737-max-and-open-minded-boeing-might-just-do-that/)

Rebranding only helps to have an argument in future, why all Boeing Max Datasheets are taken offline. So all information is gone also. Makes it harder for any further investigation. It is not rly deleted or hidden data, its more like bending the truth. With confusing and neverending storys, behind it.

Started with (software-trouble),2 years after these planes get licenced. 2 years long, 500 planes flyed and landed everywhere, nothing gone wrong. After 2 years, 2 nearly same accidents/crashes happend, which are related to software? Then outsourced software from india. And when they know what caused to the crashes,(hardware related delays in software processing?), why it takes so long to fix it? Its not Boeing or software, or the chip-hardware.

Interestng Link about Boeing from 2017:[http://www.nlr- atsi.nl/fast/aoc/aoc_141.html](http://www.nlr-atsi.nl/fast/aoc/aoc_141.html)

I say: Unpredictable accidents happend with these new and often experimental jet-fuels.

For example:Hydrocarbon Properties: The physical and chemical properties of hydrocarbons depend on class and carbon number.Often the variation of a property by carbon number within a class is predictable, but not always.!

1 : Chemistry of Jet Fuel Instability! Our knowledge about the details of the instability reactions is incomplete, although this is an area of ongoing research. They are believed to be multi-step reactions,some of which – perhaps including the initiating ones – are oxidation reactions. The reactants are believed to be certain nitrogen- and/or sulfur-containing compounds, organic acids, and reactive olefins. They are present at concentrations so low – parts per million at most – that identification by current analytical techniques is virtually impossible.

2: Aviation turbine fuel is a mixture of many different hydrocarbons. Modern analytical techniques are not powerful enough to separate all the individual molecular species present in jet fuel, so we don't know how many there are, but a good guess is a thousand or more. The range of their sizes(molecular weights or carbon numbers) is restricted by the distillation, freezing point, and some-times naphthalenes and smoke point requirements for the product. Kerosine-type jet fuel has acarbon number distribution between about 8 and 16 carbon numbers; wide-cut jet fuel, betweenabout 5 and 15 carbon numbers. Typical boiling curves of kerosine-type and wide-cut jet fuel areshown in Figure 4.1

3 : Many of the test methods were developed in the 1920s, 1930s and 1940s. To ensure they remainup-to-date in light of new technological developments, ASTM and IP review each method at leastevery five years, at which time it is either reapproved, revised, or canceled. The year of last reviewis added to the test method number as a hyphenated suffix. For example, D 86-04,Standard TestMethod for Distillation of Petroleum Products,was originally published as a tentative method in1921, and was last reviewed in 2004

4 : Freezing Point Because it is a mixture of many hundreds of individual hydrocarbons, each withits own freezing point, jet fuel does not become solid at one temperature the way water does. As the fuel is cooled, the hydrocarbon components with the highest freezing points solidify first,forming wax crystals.

And much more! Geoengineering(from 1970-NOW!) reached its limit, and it seems that something gone accidently wrong. But with very dangerous global reactions. What the worldleaders are now hiding, while searching fast solutions.

Read this, ask yourself why its now on waybackmachine? What effects does it to the worldclimate, special watervapour-circuit and uv-radiation. [http://web.archive.org/web/20180716111742/https://www.cgabus...](http://web.archive.org/web/20180716111742/https://www.cgabusinessdesk.com/document/aviation_tech_review.pdf)

New jet-fuels are a billion dollar market. USA, Europe, UK, all have their own jetfuel-programs. And the plane-engines have to handle it. What if they tricked with their engines, or software, in the air? Or with fuelmixture? If you read the link about aviation-fuels, then you should know now, how easy it is. The fuel is subventioned by state anyway. They dont need to take care for clean aviation, or lower fuelcosts, for many years. Read how it works and understand what they did. This 2-4x faster warming what they found out, last 2 weeks. Drought in europe 2 years in row. While america has its wettest 12 months for long time, in second year now.

Whole world looked at diesel-gate. Where a manipulated software caused a dirty air for everyone! What, if the same happend for years, above our heads? With more toxical chemicals? Understand these informations! International CIRRUS Experiments: Take only a closer look to the year! [https://cordis.europa.eu/project/rcn/12036/factsheet/en](https://cordis.europa.eu/project/rcn/12036/factsheet/en)

And then a short look for same Experiment-name: CIRRUS and the year, when it took place here: Page 409.(7 of 36) [https://www.atmos-chem- phys.net/17/403/2017/acp-17-403-2017....](https://www.atmos-chem- phys.net/17/403/2017/acp-17-403-2017.pdf?fbclid=IwAR3QYzwMf-X57WVkN- vNCoYdNjAX0RWsN2TB199ZAhqfeQTYb65yjlBmY7g)

Geoengineering is not a future thing. It happens since early 70s. And corruption called it conspiration-theory about chemtrails, who kill us all... Yes, we all have some years less now, because of these new nanomaterials. Wich were released with jet-fuels and are now found in every human bodypart/cell. Even in the heartmuscle of a 3 year old child.

When will the corruption end, and life of a human become a worth again? Stop these idiotic experimental fuels with nanoparticle additives. No new jetfuels anymore. They make it more worse, then it already is. This new fuel strategy was good for the 90s. And all states had a chance for new technologies. DONT DO IT AGAIN! WITH NEW LIES AND MORE TOXIC AND DANGEROUS MATERIALS. NO need to fly for short routes.</comment>


Impossible Bacon Pie - <AUTHOR> http://www.mealsmatter.org/recipes-meals/recipe/30210

<comment><AUTHOR> Sounds freakin tasty to me.</comment>


Is it Now Acceptable to Require JavaScript? - <AUTHOR> http://mondaybynoon.com/2010/06/21/is-it-now-acceptable-to-require-javascript/ <comment><USER2> _Back in the day we'd all have scoffed at such a thing... What's changed since then? Why is this now an acceptable practice?_

The only reason it wasn't acceptable to require Javascript many years ago is because each implementation was so different that it was impossible to guarantee cross-compatibility. If you used JS, it would almost certainly mean that you would render your site useless to a significant group of your users.

Those times are over; Javascript is so consistent across browsers that it's extremely rare to see cross-browser issues unless you're on the cutting edge of web development. And those implementations are converging, so these problems are quickly going from rare to nonexistent.

So the answer is yes, it's acceptable.

<comment><USER3> One major reason it wasn't acceptable to require Javascript many years ago is that many people had it disabled for good reason. Malicious code, popups, and browser crashes were quite common. Furthermore, browser security settings didn't always allow users to enable javascript site-by-site, so enabling it to have a good user experience on your site meant they'd also have a very bad user experience elsewhere on the web.

Most of those issues have gone away. It's still better to have a slightly degraded user experience for your non-javascript users, rather than a complete site failure, but it's not nearly as important as it was in 1997.

<comment><USER4> Umm... malicious code, popups and browser crashes/attacks are still common, and still rely on Javascript. It has become much less convenient to disable it, but...

<comment><USER5> Crashes are now mostly the domain of Flash, though. JS hangs in an infinite loop sometimes, but that's not a crash. _Actual_ JS-originated crashes are exceedingly rare in my experience, and are usually the mark of an experimental-build browser.

Popups are largely handled by _every_ major browser having popup blocking that works reliably enough.

Malicious code is what the ad-supported internet runs on. The only thing they can hit is your already-public data - the _use_ of that data is the only thing that can be construed as malicious.

</comment></comment></comment></comment><comment><USER6> The notion of making an awesome experience to 99% of users vs a mediocre one to 100% users seems a bit disconnected from reality, which is: apps are getting increasingly more complex. We could talk about graceful degradation and how that works on some particularly simple apps, but some APIs are simply not available without javascript (e.g. canvas).

If you want to use the power of these APIs to give your users something great by _today_ 's standards (think Google Maps, etc), yes I'd say requiring Javascript is acceptable.

</comment><comment><USER7> I use NoScript, which disables scripting (JavaScript and Flash plugins) by default in Firefox, but allows me to easily enable it for scripts which come from the domain of the site, or for all scripts on the page.

My general policy is: if I'm linked to an article, I should be able to read it without enabling JS. If I'm linked to a video, I should be able to watch it only enabling the Flash plugin. If these assumptions are violated I become offended and I usually press Back, unless I have a very good reason to need to see that content.

I am not offended by web applications which require Javascript, as long as they're linked to by a source I trust.

I won't enable Javascript for domains which I know only serve ads. I also won't enable Javascript if I think I'm on a "sketchy" page -- a page which I believe might have malicious code.

<comment><USER8> You're saying you won't enable JavaScript unless necessary. But why? What are you afraid of JavaScript doing? Issuing an endless supply of alert boxes? Changing the background color of the page every second? Slowing your computer to a crawl with an infinite loop? I don't know any sites that do that. I know JavaScript can be used to facilitate the display of ads, but AdBlock can handle that without blanket disabling JavaScript. What's the worst that JavaScript might actually do, based on the sites that are out there?

<comment><USER7> Every browser exploit in the last few years that I've heard about requires Javascript enabled, except for history sniffing trickery.

<comment><USER9> Wasn't there a recent study that concluded that Flash was the source of over 90% of all vulnerabilities last year?

<comment><USER7> I'm not sure, but NoScript also blocks Flash for me, so the outcome is the same.

</comment></comment></comment></comment></comment><comment><USER10> Users capable of disabling Javascript are capable of programming versions of my site which will support them.

<comment><USER11> false.

<comment><USER12> Well, mostly false anyway. A guy in systems programming could still know how to do it, as could a game programmer, and neither might be versed in the multi-tiered art of web development. It's not even a very hidden feature for some browsers and there are plugins available that serve only that purpose. You should have stated your reasoning for why you disagree however, because "false." doesn't cut it here.

<comment><USER11> I completely agree with his sentiment, although I would rephrase it:

Users who disable javascript are responsible for dealing with the problems caused by lack of javascript.

As for why it's false, I think it's obvious. You can turn off javascript with the click of a user-friendly UI button, whereas programming ability is a much harder to attain skill.

</comment></comment></comment></comment><comment><USER13> It's acceptable to require javascript to provide functionality that cannot be achieved otherwise. It's acceptable to improve the user experience, what is known as "progressive enhancement". But whatever _can_ be done without it, should be accessible (not require javascript). It's not acceptable to require it to replace basic functionality like links, navigation, scrolling, etc. in an inaccessible way.

The question that remains in my mind is… is it still acceptable to CamelCase javascript?

<comment><USER9> > "It's not acceptable to require it to replace basic functionality like > links, navigation, scrolling, etc. in an inaccessible way."

This depends on what you're building. For websites, you are absolutely correct. For web _applications_ , however, it is acceptable to use JavaScript for every jot & tittle. Take, for instance, 280 Slides; there is no graceful degradation for an application of that complexity & power. You either use it or you don't.

<comment><USER14> > For web applications, however, it is acceptable to use JavaScript for every > jot & tittle.

Fuck _everything_ about that idea. And fuck web "application" which consider it cool to screw with my middle clics.

</comment></comment></comment><comment><USER15> I'd try to estimate four factors:

1) the percentage of users that have JS disabled

2) the cost associated with developing a non-JS version of your site

3) the revenue you stand to lose if you require JS

4) the aesthetic/functional impact on the user experience for non-JS users

Put all of that together and you'll have your answer. For me, it's not worth maintaining two version of what I build.

<comment><USER16> Exactly. Follow the cost-benefit analysis through to completion. For my startup, it's not worth it to create a second version of the site.

I'd love to serve up the site in a way that lets any screen reader or NoScript user see the site as it is intended, but the costs are too high for the relative gains.

</comment></comment><comment><USER17> It's been acceptable for a while. It's also acceptable to require images.

<comment><USER18> But just as images should have alt text for people who prefer not to load them, sites requiring JavaScript should have some obvious message to indicate the need for JavaScript when a user decides to not run scripts by default.

It's insanely trivial to do, and just seems polite.

<comment><USER19> Also, search engines still aren't to the level of a "full browser", meaning that your site should fall back so it can be indexed properly.

</comment></comment></comment><comment><USER20> It really depends on your projected userbase these days.

For instance, in a couple of my projects, we aimed at a small subset of users (autistic and/or adults with disabilities in this case) who would have a good reason to have JS disabled (fewer issues without JS when using some screen readers, for instance). For this reason our app uses no JS unless absolutely neccessary - and in those cases we do checks for users to transparently skip the sections of the site that need it.

</comment><comment><USER11> Luckily for me, some of my core features require javascript. So I decided to ditch the no-scripters entirely, and consequently my site rocks and my code is cleaner!

</comment><comment><USER21> This is an unusual use case, but for systems management type web applications, if you can make them degrade gracefully you've just built an often very usable terminal application at the same time: just fire it up in lynx.

A social network or something probably doesn't need that, but us sysadmins love our terminals, and its surprisingly easy to make an application very usable in lynx.

</comment><comment><USER22> We're not even trying to build a non-js site for my startup.

</comment><comment><USER23> Yes. It's like asking if it's ok to require CSS 5-10 years ago. Javascript is pretty ubiquitous and consistent (even in mobile browsers now). The web has moved on and so should you.

</comment><comment><USER24> No. And can we please stop talking about "graceful degradation" and start talking about "progressive enhancement"? If accessibility isn't your first concern, you're doing something wrong (with some obvious exceptions -- building an online image editor for the blind is probably taking the accessibility thing a bit too far).

<comment><USER25> If accessibility is a higher priority than quality or even getting the product finished, you're doing something wrong. Losing accessibility is bad, but having something people don't want to access is worse.

<comment><USER26> I want to agree with you, but then again Target got sued over this: [http://www.sitepoint.com/blogs/2008/08/29/target-settles- acc...](http://www.sitepoint.com/blogs/2008/08/29/target-settles- accessibility-lawsuit-for-6-million/)

<comment><USER11> Oh my god that's horrible! Next they're going to get sued because they're not donating to research aimed at improving blind people's vision.

Some of the comments on that article make me want to cry.

</comment></comment></comment></comment><comment><USER27> One of the great things about providing a fully-featured API for your application is that, given enough demand, someone can create a JavaScript-free implementation of your interface. (Just like desktop apps tend to crop up around popular web APIs -- 37signals apps in particular.)

</comment><comment><USER28> I think it's perfectly acceptable for web applications like Google Docs, where usable non-JS alternative is just not feasible.

However I think it's not acceptable for ordinary web pages. You don't need JS to show text, images and links.

If you use progressive enhancement it's easy to have basic non-JS version working, and you don't have to sacrifice any features for JS users.

</comment><comment> joe-mccann On mobile webapps/sites, absolutely. I have built a gracefully degrading/progressively enhanced mobile website here: www.zocalodesign.com (hit/spoof with mobile browser)

The effort it took me to make this site gracefully degrade was completely not worth it, even though it wasn't THAT difficult for this site. However, my client actually only wanted it to work "on the iPhone".

Furthermore, now with plans for Google to expose native hardware APIs in their mobile browser via JavaScript, how do you gracefully degrade access to the camera or accelerometer?

Finally, on desktop browsing experiences, this argument won't even be around soon, mainly because the current battle is native versus browser (engine) not JS versus non-JS. We are building apps in the browser that are giving us native desktop functionality. You simply cannot do this at the level that people expect (in regards to user experience) nor functionality without JavaScript.

<comment><USER29> Why have you built that website using Flash?

</comment></comment><comment><USER30> The word "acceptable" is used as if there's some sort of moral code to building _web pages._ There's not. As long as it's legal, do what you like. I do, and I couldn't care less if 2-3% of people can't use it as long as the majority are having a good experience.

That many sites in the 2002-2006 period were built ONLY in Flash wipes away any guilt you could have about using JavaScript.

(Of course, if you have certain audiences or need to meet legal accessibility standards, that's a different ballgame, and if you don't meet the requirements, another developer/company will.)

</comment><comment><USER31> _I've tried to wrap my head around these poorly implemented Web applications to find out the real inspiration behind them._

Trying to implement something like GMail without javascript would just be a waste of time. It makes sense to talk about building sites focused on static content and simple forms without a dependence on javascript but the new breed of web applications _require_ javascript. To dismiss them as "poorly implemented" is put dogma before practice.

<comment><USER14> > Trying to implement something like GMail without javascript would just be a > waste of time.

You're so wrong even google disagrees with you...

> but the new breed of web applications require javascript.

That simply isn't the case. Unless you're johnny and you can't code, maybe.

<comment><USER32> As an earlier poster pointed out, GMail's non-js app is a totally different app, and let's be honest, it's a giant pain to use compared to the js version, and for most people it wouldn't have been worth the expenditure to make. GMail wouldn't have caught on if it were just the pure HTML version. Degradation is nothing but a nice-to-have for an app like that.

</comment></comment></comment><comment><USER33> One of the best current reasons to have a fall back is performance. It turns out that 100% JavaScript web sites have a horrible performance profile. Having just got back from Velocity conference I can say half the performance talks were about postponing as much JavaScript on the page as possible to cause faster render times.

Accessibility used to be a decent argument (at least to those of us who cared) but it isn't any more. I say that as a co-author of WCAG2.

<comment><USER34> Would you expand a bit on the accessibility aspects of this? One of the only reasons I even worry about using Javascript heavily in my sites these days is due to accessibility concerns -- are you saying that folks who are blind are able to use Javascript now?

<comment><USER33> There have been a few JavaScript accessibility arguments over the years. The main thrust goes like this:

1a) Screen readers (e.g. JAWS) don't support JavaScript properly 1b) Only very modern screen readers support JavaScript properly (JAWS 10+) 2) Upgrading screen readers is expensive 3) People with disabilities statistically have lower incomes

QED we can't expect disabled users to have JavaScript.

To address the points:

1a was true a long time ago, but modern screen readers do support JavaScript and things like ARIA.

1b is somewhat true but that proves it's a technology rather than an "accessibility" problem, the screen readers weren't implementing JavaScript rather than it being an actually accessibility issue. As such WCAG2 made the decision to treat it as such.

2 and 3 are somewhat true, however many people with disabilities have access to non-profit, state or federal programs that support them with technology. Also free, open source projects like NVDA are increasingly advanced.

</comment></comment></comment><comment><USER35> for mobile browsers, it's still iffy.

But for desktop browsers, I don't even really think about it anymore.

<comment><USER36> There's a divide in mobile browsers: rich browsers like Mobile Safari and the Android browser, and less capable browsers that you'll find on Nokia handsets, Blackberries, and Mobile IE.

I don't think I'd build a web app targeted at iPhone/Android without using JavaScript. If you want to make your web app feel anything like a native app, it's pretty much essential.

</comment></comment><comment><USER37> The main reason to make a site work without JavaScript is, in my view, accessibility. Try running a typical Ajax-driven app with a screen reader some time. Standards are emerging, but they just aren't there yet.

If you want the visually impaired to be able to use your site, you should make a noscript version with as much functionality as you can. (Side benefit: That's going to make SEO a lot easier, too.)

</comment><comment><USER38> Yes, it is.

</comment><comment><USER5> For rapid development, I lean towards "absolutely". For large-scale applications with many users, I lean towards "absolutely not".

If you have to service _everybody_ , the answer is a flat "no". Doing otherwise is irresponsible, however understandable. If you don't, take the 0.1% user hit (assuming some mobile devices here) and require it and save yourself a _lot_ of trouble.

</comment><comment><USER39> If you have a web _site_ that delivers information, I'd say it should degrade gracefully. But if you have a web _app_ , requiring javascript is no different than having a desktop app that first requires you to download the desktop app before you can use it (duh). Notice that every example they use is a web _app_.

</comment><comment><USER40> Pithy answer: Yes for apps (and only apps).

<comment><USER41> +1 Insightful. Requiring js for navigation is poor practice, especially if javascript is not needed for anything else. If you're only using it for animations/effects, requiring it can probably be avoided as well.

I think the difference is that before, javascript was more of an "addon" feature to web pages, where now we are now able to create things with javascript that just aren't possible with static HTML only, or are far more usable, responsive, etc.

</comment></comment><comment><USER42> It depends. Some mobile devices can't handle some of JavaScript while web browsers have varying support for it (I know that Firefox supports some JS code that Chrome doesn't). It's only acceptable if you're alright with abandoning part of your potential audience.

</comment><comment><USER43> HTML and CSS are not optional. I don't see why JS should be.

The only two things I'm concerned about are mobile platforms that don't have a complete JS interpreter, which presumably will be less of a problem in the near future, and accessibility for screen readers.

</comment><comment><USER44> Doesn't requiring javascript start to tread on MVC? I would prefer the presentation(HTML) to be decoupled from the logic (javascript). I run NoScript and all the pages I visit load way faster.

<comment><USER41> Generally the view is all the browser-side components: HTML, Javascript, and CSS. The only change in MVC with AJAX is the ability to make calls to the controller without a full page load. Using MVC is still good practice.</comment></comment>


Functional programming and condescension - <AUTHOR> http://superginbaby.wordpress.com/2014/10/28/suddenly-the-opposite-appeared/ <comment><USER2> Its easy to call 'condescending' when you simply feel inadequate. Read that strictly: its not condescending if you are actually inferior (in understanding or education).

Functional programming is important, and about real structural things. It can take a long runway to understand why its different, then more learning to get any facility with it. This is not a problem with the languages; some important things are hard and that's just a fact.

<comment><USER3> So you're saying it's perfectly okay to behave poorly towards people with lesser understanding or education? I'm pretty sure people can tell the difference between those who are speaking at a level that is too difficult for them to understand, and people who are actually condescending.

<comment><USER2> Read the article? Its about how people take it wrong when the issue is hard and they don't understand. Its about confusion about exactly what you said there.

One takeaway is, when someone expects you to read up on a subject before making conjectures, that's not condescending, that treating you as a competent peer, an adult who can take charge of their own education.

<comment><USER3> I read the article. It gives one (one!) example of someone who thought a statement was condescending when in reality it was – wait for it – only semi- condescending. Unless you'd like to argue that "take some responsibility for your own learning!" is not even in the least a condescending statement.

It's great that the author has found people in the Haskell community to be generally helpful (and I've been learning some Haskell and thus far have no complaints myself). And I think the author makes an interesting remark that sometimes, by trying to "be easier" on newcomers, that might actually be a form of talking down to them instead of treating them like adults. But to turn that into a blanket "oh, you know, you might think we're condescending but really you just don't get it" is practically satire.

So despite what the author says, and despite having no more proof for my statement than she does, I'll stand by my statement: people can generally spot the difference between condescension and a knowledge gap.

<comment><USER2> That example was a teacher to a student. If you're not careful, everything a teacher says to a student can be read as condescending.

That's the crux of it; if it not how its said but how its received, then the issue is on the receiving end.

<comment><USER4> But clearly there are ways things can be said that lend themselves more to one interpretation or another. We need to own whatever role we have in the problem and work to fix it on the end we control, balanced against whatever other legitimate problems or constraints we're working with.

"Successful communication" is a constraint that probably should trump "phrasing to protect people's feelings" when the two conflict. "Social signalling games" probably should not. Differentiating the two is deliberately made difficult, but we don't get out of that by ignoring it.

<comment><USER2> Sure all things being equal. When you go to a teacher to be instructed, its counter-productive to be thin-skinned. Even if you are a peer, but are learning the ropes from a more-experienced player, best to take the information without emotionally investing in the style of messaging.

<comment><USER4> _" Sure all things being equal."_

Yes, but not only then. There are some things worth sacrificing to that end. Clarity shouldn't be one of them.

 _" When you go to a teacher to be instructed, its counter-productive to be thin-skinned."_

And when you serve as a teacher, it is counter-productive to not make reasonable accommodation for whatever skin your student has.

I don't think we're saying anything new anymore.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> I've had explanations that are over my head. When I asked for help understanding the explanation, sometimes I got help, and sometimes I got mocked because every educated person should know _that_.

Honest questions deserve honest answers. Giving mockery instead means that you're a jerk trying to up your self-esteem at the expense of someone who's trying to learn. Don't be a jerk.

On the other hand, lazy and/or dishonest questions do _not_ deserve an honest answer - "do your homework and then come back" might be best for lazy questions. For dishonest questions, maybe the best approach is to gently point out the dishonesty. (Point it out, because others may be reading the conversation and doing so might help them to not be misled, and gently, because you may be wrong when you think someone is being dishonest.)

But it can be hard to determine when someone is being dishonest or lazy, and when they're honest but clueless. Err on the side of assuming the best of people.

Specifically on HN, on the topic of functional programming, I have received good, helpful explanations from a number of people, and have learned from them. (I have also received arrogance and condescension from some.)

The biggest form of condescension from FP types is often in the high-level assumption: "If you really understood, you would know that FP is The One Right Way. Since you don't agree, that means you are still ignorant." And anyone who tries to point out that this assumption is flawed is automatically lumped in as one of the ignorant. _That_ is condescension.

<comment><USER4> Very well said.

I would like to add a note, though, that "do your homework and then come back" can also be deployed dishonestly.

Something I called out a bit back (which was graciously received by the perpetrator - I don't think it was actually intentional in that instance) amounted to "If you haven't found the thing that proves I'm right, you haven't done enough homework". Which is an approach that can be rhetorically effective when people don't notice what you're doing, but seems somewhat poisonous to the goals of truth seeking, of educating ourselves, and of getting along.

I don't know the best way to distinguish these - most examples don't reduce so clearly and I agree there are plenty of cases where someone just needs to go read something.

</comment></comment><comment><USER6> I find this interesting. Personally, I'm someone with absolutely no technical background. Haskell programmers seem to come from many backgrounds - math, CS, but also backgrounds that don't involve programming, various sciences for instance.

I've personally always found the communities of many less-common, more functional languages (Haskell, R, Clojure, etc...) to be very welcoming to newcomers with little programming experience or non-programming background, although perhaps I could see how it would be less welcoming to someone coming from a C++, Java or C# background.

To really embrace functional programming (and their communities), in many ways you need to discard what you know about imperative programming. Different mindsets. And I've never found functional programmers to be smug or condescending, though they do use terms that don't make sense in other programming languages/paradigms...

</comment><comment><USER7> That was a pretty interesting read. It really has nothing to do with functional programming, and everything to do with human nature.

<comment><USER8> We work with interesting technologies which we attempt to make do novel things. Occasionally, one of us works and succeeds alone, but, far more often, we work with others.

Human nature and how we treat, are treated by, and respond to our fellow humans is likely the single most important factor in any technology project. Indeed, in any team project. That's not to say that all projects require the same approach to managing the team: Some work requires top-down command and control with explicit orders and consequences for disobedience, some is better done with self-selecting teams and kanban boards, and much is somewhere in between.

The common element is that the players have to know and respect the team's organizing principle. Once upon time, it was command and control and strict orders for everything; everyone knew this was how it was done. Everyone worked within that.

Nowadays, establishing and maintaining an organizational culture, and articulating that culture, over and over again, are vital elements to any team work.

Many of us will read what this post and roll their eyes at this human factors bullshit.

Some of us will think "Oh, yeah, that'd be good". (Some of us will mean that, others will express is sarcastically, imagining me with rose coloured glasses.)

Functional programming is YAHA (yet another human activity). Sometimes pursued alone, but sometimes in groups.

Some of those groups even manage to become communities. But are they inclusive or exclusive, and is that implicit or explicit knowledge? When I switched from Windows to Linux, I chose Ubuntu because it was explicitly inclusive with a clear code of conduct. Pissing on others strictly forbidden.

Some technologies succeed despite the way key players treat others. It happens. My guess is that most don't.

How many forks are for sociological reasons, and not for technical or legalo- business reasons? (That last phrase is obscure, I confess: I mean things like the OpenSSO/OpenAM fork, for example: Forked because of a change in governance and ownership.)

In other words, how many times are projects forked because part of the community doesn't like how the rest of the community conducts itself? How many projects fail because of how the community conducts itself?

</comment></comment><comment><USER4> I wonder if some of these critics aren't confusing "condescending" and "conceited", to further muddle things.

</comment><comment><USER9> They are just frustrated that the only way to make functional programming useful is mixing it with some good old OOP and imperative stuff - the recent rise of Scala and C# are a proof.

<comment><AUTHOR> It's a bit like the transition from the bronze age to the iron age.

It wasn't a sudden switch and while the iron tools owned the future, they were inferior at first. Took a long time before iron tools and weapons became the most popular thing, even after iron tools could be made that were superior to bronze.

Popularity doesn't say anything about tool quality.

A lot changed from 2010-2012 for Haskell. There was an explosion of libraries and tool fix-up. This continues, no doubt, but it has shifted the equation in favor of tools that don't have to make compromises that harm productivity.

I teach Haskell in a decided un-academic manner. This is partly because I have no academic background nor degree. It is also because I teach people Haskell in a manner designed to enable its use for practical projects.

This is the guide I use to teach people Haskell: [https://github.com/bitemyapp/learnhaskell](https://github.com/bitemyapp/learnhaskell)

I've taught Haskell successfully for the last year to programmers and non- programmers.</comment></comment>


Gogo's on-flight internet: Why airlines put up with its slow internet service - <AUTHOR> http://www.slate.com/blogs/moneybox/2015/08/28/gogo_s_on_flight_internet_why_american_delta_and_united_all_put_up_with.html <comment><USER2> This article is based off Bloomberg's original piece, "Why Gogo's Infuriatingly Expensive, Slow Internet Still Owns the Skies" ([http://www.bloomberg.com/features/2015-gogo-airplane- wireles...](http://www.bloomberg.com/features/2015-gogo-airplane-wireless- internet/)). Would likely be better to update the link to that one.

<comment><USER3> Thanks for providing that link - the original piece was far more useful for me to read than the condensed version.

</comment></comment><comment><USER4> No competition isn't true, at least for Europe where I know Norwegian are using "Row 44" as can be seen in this report from CNN: [http://edition.cnn.com/video/#/video/business/2012/11/15/bus...](http://edition.cnn.com/video/#/video/business/2012/11/15/business- traveller-in-flight-wi-fi.cnn)

The difference between them, which also could explain the AOL-like speeds with Gogo, is that Row 44 used a satelite dish whilst Gogo communicates with ground radio towers. The obvious advantage of Row 44's approach, which is also highlighted in the video, is that by using satellites you can continue providing internet over remote areas and oceans.

<comment><USER5> I rarely fly economy but the two Norwegian flights I've been on both had very good wifi (not very fast, but certainly reliable).

Definitely a much better experience than with gogo.

It's a sad thing that one of the worst airlines in Europe has the best wifi.

(I'm really curious as to how my 5k euro emirates 1st class ticket can't cover the expenses for working wifi... I can even shower on the plane for gods sake)

<comment><USER6> > _It 's a sad thing that one of the worst airlines in Europe has the best > wifi._

It's usually the same with hotels - wi-fi quality is usually inversely proportional to the quality of the establishment. I wonder if airlines have this problem for the same reasons.

<comment><USER5> Actually, I can't say I've really noticed this so much lately, but I've mostly been staying with the big chains (Marriott, Hilton and 4 seasons).

Although, often the big chain hotels are the most crowded ones.

</comment></comment></comment></comment><comment><USER7> "[...] you know that it's not much of an improvement over 1990s AOL-era dial- up.

Gogo's connectivity speed amounts to about half the average download speed on Verizon's 4G network,"

Oh dear, how far we've come (or not, tech journalism has always been crap) - the average download speed on Verizon 4G[1] is >30mbps, a 90's dial up would have been 56kbps - so half the 4G speed is 275 times faster than dial-up (or, in terms a journalist can understand: 27500% faster!)

1: [http://www.cnet.com/news/4g-lte-showdown-how-fast-is-your- ca...](http://www.cnet.com/news/4g-lte-showdown-how-fast-is-your-carrier/)

<comment><USER8> The article is a bad summary of the original BW article[1]:

> Gogo can provide a plane with as much as 10 megabits per second of > connectivity, which is about half the average download speed on Verizon's 4G > network. Only one-third of Gogo-equipped planes, however, have the hardware > to reach even that speed. The rest top out at 3 Mbps.

If only 10 people are on it, then you're getting ~5x dial-up, which would be great if the internet was the same as it was in 1999. I would guess that webpages have grown more than 5x in size since then, making effective speeds much slower than dial-up (estimates range from 2-10MB for an average news article [2]).

1: [http://www.bloomberg.com/features/2015-gogo-airplane- wireles...](http://www.bloomberg.com/features/2015-gogo-airplane-wireless- internet/)

2: [http://www.mondaynote.com/2015/08/03/what-the-ad-blocker- deb...](http://www.mondaynote.com/2015/08/03/what-the-ad-blocker-debate- reveals/)

</comment></comment><comment><USER9> I was pleasantly surprised about the quality of the WIFI Lufthansa provides on its transatlantic flights (FlyNet). It's rather expensive at 9 € / hour, though.

</comment><comment><USER10> non-blogspam Bloomberg piece that is referenced: [http://www.bloomberg.com/features/2015-gogo-airplane- wireles...](http://www.bloomberg.com/features/2015-gogo-airplane-wireless- internet/)

<comment><USER11> Does Slate really count as 'blogspam', especially when the very first line credits the original appearance? (Of course, that qualitative judgement aside, I agree that it is better to link to the original.)

<comment><USER12> I'd argue that, these days, yes Slate counts as "blogspam." Autoplaying video ads, pop-up adverts, banners everywhere, and a copy/pasted article that is 1/2th the length of the original with no additional commentary or content.

Slate might have been a legitimate publication once, but then again so was CNet and look how far they have fallen. Sorry, but Slate should be blacklisted for being junk now.

</comment></comment></comment><comment><USER13> I'm more puzzled why airplanes are still using the horrendous touch interfaces. Even the newest Dreamliner has them. The cheapest and most sluggish Android tablet would still be a big improvement.

<comment><USER14> IFE devices are "independent" and bought separately from the plane.

But some airlines are going for the tablet solution

</comment></comment><comment><USER15> I would love to see such an article about trains. Why can't we have high- quality wifi on the go?

<comment><USER11> AmtrakConnect can be _very_ slow at times, but is often reasonable. At least, I had no trouble with casual browsing during a recent trip, as long as I was willing just not to use it during the most congested times.</comment></comment>


Creating a Linux Desktop App with Ruby - <AUTHOR> https://iridakos.com/tutorials/2018/01/25/creating-a-gtk-todo-application-with-ruby <comment><USER2> For people interested in Python / Qt, I had a related Show HN this week.

[https://github.com/mherrmann/fbs](https://github.com/mherrmann/fbs)

Discussion: [https://news.ycombinator.com/item?id=16318677](https://news.ycombinator.com/item?id=16318677)

<comment><USER3> From my reading of the following I your README, I think your understanding of the GPL might be slightly wrong

> This project is licensed under the GPL. In simple terms, this means you can > use it for free in open source projects that are also licensed under the > GPL. If on the other hand you want to use the project for a proprietary app > where you don't want to open source the code, then you need a commercial > license. The price for one developer is EUR 79 if you purchase before Feb > 11, 2018, EUR 99 after. One year of updates is included. To obtain a > license, click here.

If I understand what you are saying, you say that to use the _output_ of your program one needs to GPL everything, which is not usually how GPL is interpreted.

For example I can use GIMP to create graphics that I can use without any form of restrictions. The GPL applies to GIMP itself, not its outputs.

However, since your product builds executables then if the resulting installer file was built from GPLed code then you are partially correct IMO -- users would be required to distribute the installer source in compliance with GPL. However, while I have not looked into how the build process works for your product I have a hard time imagining that the GPL would require users to GPL the installation target source, since those are a separate set of files.

IANAL

<comment><USER2> IANAL either but believe you are right with the GIMP example. However, my project doesn't just produce an output similarly to how GIMP saves images. It also requires you to link to some of my project's code at runtime. That is where the need for a commercial license comes from.

</comment></comment></comment><comment><USER4> Over the years I have seen some strange performance issues in GTK, specifically PyGTK, that make me not want to use it any more, and was just wondering if others have encountered these?

\- Highly variable window load and startup times

\- Random slowdowns

\- WebkitGTK has some serious memory leaks

Otherwise I'd consider GTK to be fantastic :/

<comment><USER5> These days pygobject seems to be the way to go

</comment></comment><comment><USER6> There's also [http://visualruby.net/](http://visualruby.net/)

</comment><comment><USER7> I was always fond of wxWidgets. Multi-platform, multi-language bindings.

[http://wxwidgets.org/](http://wxwidgets.org/)

<comment><USER8> It still uses Gtk or Motif on Linux/Unix. Here's a diagram with all the layers:

[http://wxd.sourceforge.net](http://wxd.sourceforge.net)

</comment></comment><comment><USER9> For simple apps Shoes!([http://shoesrb.com/](http://shoesrb.com/)) is very nice

<comment><USER10> Oh wow... Didn't know Shoes was under active development. Nice to see the community picked it up.

<comment><USER11> If it is under active development they should update their photos. It hardly inspires confidence when all of their screen shots are from at least 4 versions of OSX ago.

<comment><USER12> I gather that most of the development effort is going into Shoes 4, which doesn't have a stable release yet.

Edit: Huh. The Shoes 3 development blog is actually really active! [https://walkabout.mvmanila.com/](https://walkabout.mvmanila.com/)

</comment></comment></comment></comment><comment><USER13> I'm not a Ruby guy at all so forgive me if I'm missing something here but what would the benefit of using GTK+ be over using JRuby and utilizing JavaFX or even Swing?

<comment><USER14> Most linux desktops have GTK installed already, and ruby. So, you can create a quite small performant GUI this way. JRE is falling out of fashion in my experience as a default install. It's huge, slow to startup, and creates a larger install size.

<comment><USER15> Also, GTK is the "native" GUI toolkit on most Linux distros, whereas a Java- based one is almost guaranteed to look out of place.

<comment><USER16> Java uses GTK bindings on Linux.

<comment><USER17> I just ran my old swing app for years ago and it still displays using its own toolkit.

I think you're thinking for SWT (the toolkit used by Eclipse) which will use native components for each OS.

SWT is kinda difficult to use and last time I checked, all the Scala bindings/wrappers were crap or non-existant, making it a non-starter for me.

<comment><USER16> Starting with Java 9,

JEP 283: Enable GTK 3 on Linux

[http://openjdk.java.net/jeps/283](http://openjdk.java.net/jeps/283)

Opening paragraph "Java on Linux currently uses GTK 2. This raises several issues:"

The problem are the ones too lazy to call,

            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

[https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/...](https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html)

<comment><USER18> What problems would it cause if the runtime just called that automatically?

<comment><USER16> The usual traditional backwards compatibility story of Java, if I remember correctly.

When it was introduced they didn't want to break the L&F of AWT applications, then they also added multiple ways of enabling it.

So a good application should respect the system wide or user specific settings if available, instead of just blindly use whatever L&F it feels like.

Also although many complain about how Swing looks like, the API is actually quite powerfull and skinnable, even if it requires some graphic programming skills to achieve it, for example see JGoodies or UltraMixer DJ.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> That's a great article, but it rather proves the point that the GTK API is a PITA.

Still, you get a lot of benefit from Ruby's flexibility.

<comment><USER4> GTK's API is really quite nice, all things considered. I have never felt so sane writing GUI code in a good long time

</comment></comment><comment> lf-non Not to criticise the (very well written) article, but IMHO the best solution for rapidly prototyping cross platform GUI applications in Ruby is Electron[1] + Hyperloop[2].

GTK applications look very outdated/out-of-place anywhere outside linux, and especially on OS X.

While electron has its issues (large bundle size, memory footprint), it is a really flexible solution for cross platform desktop applications. It will still not have native appearance, but a modern L&F is quite easy to arrive at using CSS and libraries like react-desktop.

Relying on the browser runtime ensures that most of the form widget interactions work as users would expect them to on their own platform.

Opal[3] is a really good ruby to javascript compiler which can be used to target electron. This is particularly promising given that the hyperloop [2] ecosystem has significantly matured. Hyperloop provides a full fledged component oriented client-side development framework powered by best of breed frontend technologies/patterns like virtual DOM (through react integration [4]) and flux stores.

\---

[1] [https://electronjs.org](https://electronjs.org)

[2] [https://github.com/ruby-hyperloop](https://github.com/ruby-hyperloop)

[3] [https://github.com/opal/opal](https://github.com/opal/opal)

[4] [https://github.com/ruby-hyperloop/hyper-react](https://github.com/ruby- hyperloop/hyper-react)

<comment><USER12> Why bother with Electron? Qt is lightweight, has Ruby bindings, and looks native on everything. Use Furoshiki to build distributable binaries for each platform.

<comment><USER17> I started down the electron path and will probably back out. So many get- started things in electron are just massive boiler-plate. Electron-vue is awful boiler plate with so much pre-made crap I don't understand how any of it fits together and some really simply stackoverflow questions have gone forever without being answered:

[https://stackoverflow.com/questions/48337401/unable-to- test-...](https://stackoverflow.com/questions/48337401/unable-to-test-better- sqlite3-within-a-project-based-on-electron-vue-boilerplate)

Not to mention electron apps are massive (Slack is 90M+ for a fucking chat client. Audium/Pidgin anyone?)

Electron is a huge step backwards really. I don't see why people praise it so much.

<comment><USER20> So you picked an "awful boilerplate" where you "don't understand how any of it fits together" and that's a failing of Electron?

<comment><USER17> They're all awful boilerplate. Almost every single toolkit or getting started example I looked at involved cloning something of boilerplate, including React, Vue, etc. I couldn't even find decent clean examples, and as I tried putting them together, there was just a total lack of documentation and frustrating amounts of searching and finding dead/unanswered fourm and stackoverflow posts.</comment></comment></comment></comment></comment>


Alex, a Parrot Who Had a Way With Words, Dies - <AUTHOR> http://www.nytimes.com/2007/09/10/science/10cnd-parrot.html?ex=1347076800&en=9d76dbcdfe092f14&ei=5090&partner=rssuserland&emc=rss

<comment><USER2> So sad. I was obsessed with Alex for a while. If you've never heard of Alex the parrot or the things he can do, check out this video of him with Alan Alda (3rd from the top): <http://www.pbs.org/saf/1201/video/watchonline.htm>

Once, I got to meet Alex. My girlfriend at the time got really jealous, because for the next two weeks all I could talk about was this (brilliant, charming) parrot. She broke up with me shortly thereafter. Sadly, I'm not kidding.</comment>