NBCOlympics' Opening Ceremony Tape Delay: Stupid, Stupid, Stupid - <AUTHOR> http://techcrunch.com/2012/07/27/nbc-olympic-opening-ceremony/ <comment><USER2> My problem isn't just the delay, it's the fact that they were pretending the rest of the world does not exist.

The NBC "newscasters" were _lying_ on air, saying things like "the big question now is who will be lighting the olympic torch," "the opening ceremony _will begin_ in 2 hours" (when it was already over!), "in three hours time, the debate will be on as to whether the London or Beijing ceremony was nicer, we have the world has no idea what surprises are in store," and so on and so forth. They're deliberately misleading their viewers, and it's disgusting.

<comment><USER3> Weren't the "newscasters" actually in London while the ceremonies were taking place, taping there? Those statements make sense in that case.

<comment><USER2> No, I'm talking about the local newscasters. I'm in Chicago, these were newscasters people here in the city.

<comment><USER4> I think it's fair to assume that a Chicago news caster is speaking primarily to an American audience. Specifically, a Chicago audience. So even in that context they weren't being misleading. Relax a bit.

<comment> jack-r-abbit Just like everyone on the East Coast forgets the West Coast exists when it comes times for New Years Eve.

</comment></comment></comment></comment></comment><comment><USER5> It is stupider than that.

Anyone who wants can get access to their streaming web. Just give them who your cable provider is, and your user name and password to that account so that they can verify that it is you.

OK. What about people like me? I wouldn't mind seeing some of the Olympics. I would like to show it to my son. But I never watch TV, and I do not have a subscription to any TV cable service. Can't I, I don't know, PAY THEM to get access to this 2 week event? Or maybe they can MAKE ME SIT THROUGH ADS to get it?

Apparently not. There is no such option. I'll just have to track down a friend who trusts me and has a cable account to login on my computer so that I can watch. Or else find an illegal stream. Or else just not watch.

<comment><USER6> Well, if you're willing to pay, couldn't you sign up for cable for one month? I agree, it's not our ideal and it's more overhead for you since you'll need to deal with installation, but it's not like it's impossible to pay to see the Olympics.

<comment><USER5> If I sign up for cable for one month, it will take several days before I actually get it, and then who knows how much longer before I wind up able to login through their process. What portion of the Olympics will I have missed?

Borrowing someone else's account seems more likely to happen.

<comment><USER6> Well, you could have planned ahead... it's not like this situation cropped up spontaneously. I bet months ago you knew the Olympics were starting today and you knew you didn't have a way to view them. Not judging or accusing, just sayin'.

<comment><USER7> I did this last time around. A guy had to come to my house, lay cable and leave a box under my TV - only so I could take it all back a month later. Comcast have have spammed me with roughly two "come back" letters a month ever since.

It blows my mind that in 2012 NBC won't take my money to let me watch this online. Presumably they think it's enough to make me buy a cable subscription. They're wrong. I just searched around and watched a glitchy pirated feed - wishing all the time they'd let me pay them $5-$10 for the real thing.

</comment></comment></comment></comment></comment><comment><USER8> I just watched the pirated BBC broadcast. I felt like something was missing, and then I figured it out. The stupid thing is that Americans are forced to watch the Olympics with 20 minutes of commercials per hour, while the rest of the world gets to watch it nearly commercial free. Why does the US citizen pay for the entire Olympics through the annoyance of commercials?

<comment><USER9> The BBC is not free, in the UK everyone with a TV has to pay a yearly fee for it, you get ads because you don't pay the fee.

<comment><USER10> How much is the fee? I suspect if given the choice between fee or commercials, many would choose the fee. Sadly that choice doesn't exist here (in the US) :/

<comment><USER11> £145.50 (US$228) per year. About £0.40 (US$0.65) per day.

Excellent value in my opinion.

<comment><USER12> And if you don't pay, you'll get regular visits from TV licensing agents:

[http://en.wikipedia.org/wiki/Television_licensing_in_the_Uni...](http://en.wikipedia.org/wiki/Television_licensing_in_the_United_Kingdom#Licence_fee_enforcement)

<comment><USER13> * If you don't pay and watch live TV.

You can choose not to have a TV and not pay the license. Without the license you can still watch BBC iPlayer (although not the live bit).

<comment><USER14> Believe me, you still get visits and threatening letters from the TV licencing people.

<comment><USER15> You just need to fill in the form at <https://www.tvlicensing.co.uk/no- licence-needed/> every three years. I've done that before and it's stopped the letters.

<comment><USER14> It didn't work for me, they still sent threatening letters every few weeks that all but accused me of lying.

I love the BBC (even though I didn't always own a TV) but in my experience the TV licencing company are bullying scum.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Another article referencing 'Sir Tim Berners-Lee, founder of the Internet' - expect better from Techcrunch.

Internet != World Wide Web

<comment><USER17> CTV coverage in Canada titled him on-screen as the "Founder of the World Wide Web" then the commentator called him the Father of the Internet... so half marks, if possible.

</comment></comment><comment><USER18> Tennis fans regularly suffer this same nonsense from NBC every year with the French Open and Wimbledon[^1]. I can't see them changing anytime soon.

Relatedly, their whole cable TV package requirements for online streaming is also very annoying. It requires having a package with both CNBC and MSNBC to get access. I still actually have a cable TV package, but my provider does not offer MSNBC on any of their packages so I'm out of luck.

Thankfully, there's the Yankees/Red Sox this weekend so I'll watch that instead.

[^1]: Thankfully ESPN bought the rights to Wimbledon starting this year. Maybe they (or parent, Disney) could do the same with the Olympics once the rights are up for grabs again.

</comment><comment><USER19> NBC is providing live streaming on the web and via iOS and Android apps of every event, for free to people who have a cable, satellite, or telco TV package that includes CNBC and MSNBC. They are also providing on-demand access so you don't have to watch live.

For many people, they won't even have to log in to access this, as they have worked with some providers to automatically recognize IP addresses as belong to people whose accounts qualify.

So they didn't include the opening ceremony. It seems pretty nit-picky to focus on that and ignore the massive effort they've done to provide the live coverage of everything else.

<comment><USER5> _NBC is providing live streaming on the web and via iOS and Android apps of every event, for free to people who have a cable, satellite, or telco TV package that includes CNBC and MSNBC._

        s/for free/only/

I tried to find an option for people who do not choose to have TV. I failed.

</comment></comment><comment><USER20> In 2008 anyone with an internet connection could watch any event and replay any event. And that was without the obnoxious commentary that accompanies most TV broadcasts. I really enjoyed some of the longer events like the bike road races for their silent, almost Zen qualities. Won't happen this time.

Now, I have to use a UK proxy to see it, and it's got the usual idiots yammering over the action.

<comment><USER21> Oh yes, that was godly. It seriously should be the standard for any big sporting event. It's sad to see that NBC has regressed so badly from the standard set in 08.

</comment></comment><comment><USER22> Well, companies such as Google need to start buying broadcast rights and put it all on the 'net. I am sure they can make far more money online than NBC ever pulls out of their advertisers. For one thing, these days lots of people DVR shows not just for convenience but to skip the commercials. I sure do. I'd rather watch something 30 to 45 minutes after the fact than have to endure the obtrusive commercials.

<comment><USER23> If Google put the Olympics online with its own commercials (I assume that's how they would monetize it?), why would you stop watching your commercial-free DVR recording in favor of Google's broadcast?

<comment><USER22> Far more convenient. Better quality. I get to watch what I want vs. egocentric American coverage. I get to watch it on my schedule. I get to watch it on different devices. I can even watch it on the road or while camping. I'd probably even get to watch it in different languages (granted, not so applicable to the London event) The ads might even be relevant.

And, in general, I prefer to support 'net-based entertainment vs. broadcast because, well, they suck.

There are probably more reasons beyond these.

<comment><USER24> > I get to watch what I want vs. egocentric American coverage.

Believe it or not, the mainstream American audience _wants_ to see egocentric American coverage - they enjoy it.

<comment><USER22> > Believe it or not, the mainstream American audience wants to see egocentric > American coverage - they enjoy it.

Probably true. I hate it.

Don't get me wrong, I love to see how our athletes are doing. I simply don't enjoy the cultural isolation and exclusionist coverage that our media pushes on us. Here's an opportunity to learn about others and we get fed a typical short-attention-span American egocentric media diet.

This becomes very evident once you travel around the world, look back at the US and make some comparisons.

When it comes to the Olympics, World Cup or other events it is also particularly bothersome because the US is made-up of hundreds of cultures that have come together to adopt this nation. This does not mean that Afgani- Americans or Chilean-Americans don't not want to see how the teams or athletes from their native soil are doing. Events like the Olympic Games are opportunities to honor the many cultures that form this nation by, at the very least, providing reasonable exposure to their athletes and stories as well.

This is where online coverage could be so far ahead of typical network stuff. You get to watch what you want.

Another thing that doesn't sit will with me is when accident reports go something like "139 people, three Americans". OK, I get it, you are trying to tell our country that three of ours got lost in the accident. However, for some reason, these reports always sound like they don't respect the rest of those lost in the accident. I surely can't be the only one who feels this way.

Finally, why are NFL or NBA teams "World Champions" when the competition is national?

<comment><USER25> _e.g. "139 people, three Americans"_

It's important to know to what degree an attack entangles the United States, politically speaking. Everyone's life is beyond value, philosophically speaking, but U.S. political response depends on how many Americans were involved. Therefore, it makes sense to report that number to United States viewers.

<comment><USER23> To what extent might this be a self-fulfilling prophecy?

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> I've effectively boycotted as I have no legal means of watching the events. Way to make another institution irrelevant to my generation, big media. Enjoy your profits while they last.

</comment><comment><USER27> Does anyone know what ended up happening to BitTorrent Live (live.bittorrent.com)?

Creating a swarm of video streamers would've been a good technology fit for filling this role, from what I read about the protocol awhile back.

<comment><USER28> I use SopCast for that, it works well. There is an android client that works very well for me.

</comment></comment><comment><USER29> Having watched the first half live on the BBC in the UK it wasn't as embarrassing as I feared. The 3D version was pretty good, it worked better than many things.

Is NBC offering the 3D version in the US?

</comment><comment><USER30> See <http://www.youtube.com/watch?v=OR6OZ_x7QqM> for the first hour and 20 from the BBC broadcast.

<comment><USER30> never mind, Olympic Committee, UMG and EMI have taking it down a few seconds after I posted this.

</comment></comment><comment><USER31> The sense of entitlement in the last few Olympics related posts is really getting obnoxious. Granted the article here makes a good point about it being silly to live tweet an event that is not being broadcast. But, everyone commenting seems to think watching the Olympics for free is a god given right.

I am excited that, unlike the NFL, MLB, and other professional sporting events, the live-streaming capability provided to NBC subscribers is actually quite thorough and high quality.

</comment><comment><USER32> Hungarian TV showed it straight through, no ads (and free) ( _and_ live) but still had the damn commentators talking through all the music. Why do they think that adds anything? It drove me bananas.

</comment><comment><USER33> I am a citizen of Team GB and feel your pain. NBC are idiots.

</comment><comment><USER34> Who's ready for Google Fiber? :)

</comment><comment><USER35> Well here's my attempt at doing something marginally useful. The only thing I could really think of. I generally am ambivalent about these media blunders because I don't watch TV... but I was really looking forward to the Opening Ceremonies.

[http://www.change.org/petitions/international-olympic- commit...](http://www.change.org/petitions/international-olympic-committee-no- longer-permit-nbc-to-bid-on-the-broadcasting-rights-to-the-olympic-games)</comment>


Skype for Linux Alpha - <AUTHOR> http://theregister.co.uk/2016/09/13/new_skype_for_linux_alpha/ <comment><USER2> I'm terrified to install this b/c the crusty old Skype-for-Linux already works fine, whereas my up-to-date Skype-for-Windows doesn't work at all.</comment>


Ask HN: I built this for my family's picture framing company...your thoughts? - <AUTHOR> http://bananaframing.com/ This is a website I built for my family's picture framing company.  I didn't know how or have the time to build a full blown shopping cart etc, so I am using Wufoo and a really simple pricing plan.  We are advertising on Facebook - the largest photo sharing site on the web.<p>I wanted to ask the HN community what they thought of it since you guys have a different perspective than a lot of my peers.  Any advice would be so appreciated! <comment><USER2> I think your landing page needs a bit of optimization. I think you should have actual product samples/photos higher in the fold. I'm not sure the big "easiest way to print and frame" text needs to be THAT big, it takes up quite a big of vertical height. Same thing with the free shipping in 2010. Unnecessarily big, I get that you want it to be simple, but its just eating up too much space.

Even after a quick skim of the text and prices, I don't really know what you're selling. Your selling me picture frames? I don't see any variety of picture frames on the main page. I have to click "place order" before I can even see what the products are.

Good luck!

<comment><AUTHOR> Thank you. Great input. I appreciate it.

</comment></comment><comment><AUTHOR> This is a website I built for my family's picture framing company. I didn't know how or have the time to build a full blown shopping cart etc, so I am using Wufoo and a really simple pricing plan. Or at least, I think it is a simple plan - you tell me!

We are advertising on Facebook because it is the largest photo sharing site on the web. Getting loads of clicks, but not many orders.

I wanted to ask the HN community what they thought of it since you guys have a different perspective than a lot of my peers. Any advice would be so appreciated!</comment>


Logs a detailed history of executed terminal commands for easier access on Unix - <AUTHOR> https://github.com/SkrewEverything/Command-Cache <comment><USER2> I like the attention, but I don't buy "Because greping history wastes a lot of time while coding."

Just add to your .bashrc:

HISTCONTROL=ignoredups

HISTFILESIZE=500000

HISTSIZE=50000 export HISTCONTROL HISTFILESIZE HISTSIZE</comment>


Ask HN: RubyMotion Developer Job Board - <AUTHOR>

I'm creating a RubyMotion Developer Job Board so employers can find you in your country. Anyone interested to join? <comment><USER2> Yes, I would also like to help in some way if possible. Maybe I can make the iOS app or something. I have been programming RM for 10+ months

<comment><AUTHOR> Sounds good, we could work together on the Web & mobile version and open source them. I just sent you an email. :)</comment></comment>


Uruguayans invented the mammogram and the birth control pill - <AUTHOR> http://www.guruguay.net/uruguayans-invented-the-mammogram-and-the-birth-control-pill/ <comment><AUTHOR> A good friend of mine is from Uruguay and Alejandro Zaffaroni was his next door neighbor growing up.</comment>


Ask HN: Unlimited legal advice over the phone, what would you pay? - <AUTHOR>

I lost a lawyer's income to focus on my start-up, I think the situation is comparable to an engineer leaving a position at a software firm after 3 years.
Something I learned through HN is how many Hackers continue to supplement their income while working on a start-up through "consulting."  Based on many HN posts, I think there would be an immediate need met by offering unlimited legal counsel over the phone for a year based on a flat fee.  I envision this falling between pre-paid legal service, in-house general counsel, and the awesome legal services YC start-ups receive.
Included: unlimited phone conferences for advice on forming business, liability and tax related issues to structure, indemnification, state selection for business, necessary business agreements, annual compliance with the state(s), IRS tax compliance, 501(c)(3) determination advice, general agreement advice, help you retain affordable local counsel when requested or advised.
Not Included:  Drafting of legal documents, guaranteed review of documents, representation in law-suits.
To the HN community would you (your consulting firm), your start-up, ect... be interested in a service like this and if so what would be a reasonable fee for the start-up community?  Should I let the start-up/client dictate the fee?
*This is not an offer of my legal services nor is it a solicitation of representation. <comment><USER2> Cash is _very_ sparse for startups when they need legal advice the most, formation. I would suggest anything more than what we'd pay for normal filing docs ($750-$1k) would be too much to do besides on a month to month basis. When I've needed the equivalent of in-house counsel, it's been for specialized knowledge (for us, the Real estate laws) - but that's particular to a niche.

I think the idea has merit.

<comment><AUTHOR> I completely agree that start-ups would gain the most value with this kind of legal advice at the time of formation.

I like your suggestion of a flat fee and including the State filing fee. At $750-$1000 I could advise business start-ups at the time of formation and "draft/file the docs" to form the company in most States. However, it gets tricky to have a flat fee which includes the State filing fee in some cases. Example, in California I would always recommended paying the State to expedite the formation but its optional, or in New York separate from the State filing fee LLC's must publish in a weekly and daily paper once a week for 6 weeks and publication costs are subject to change.

At $1,000.00 I would feel comfortable advising client's before formation and continue with unlimited legal advice over the phone for the remainder of the year for the business. However, I think your suggesting $1,000 above and beyond the State filing fee may not be reasonable for the average tech start- up, especially because the start-ups would generally only utilize the unlimited legal advice at the time of formation and little thereafter.

>I think the idea has merit.

Thanks your feedback was insightful and encouraging.

<comment><USER2> Other areas that we've engaged counsel that might benefit you:

\- Specific industry specialties (eg: Crowdfunded sites need S.E.C. guidance, B2C companies need Contest guidance, Commercial/Residential Real estate needs H.U.D. guidance.) - a specific package would have been nice. Even if not your specialty, you could get a lead gen fee. \- Financial instrument review/drafting (Term Sheets, Conv. Notes, etc) \- Founder / Employee Dissolution

Just thoughts.

<comment><AUTHOR> >Just thoughts.

Your comments have been very genuine and insightful.

>Even if not your specialty, you could get a lead gen fee.

FYI and probably good practical knowledge for all founders to know when dealing with lawyers especially those who use lawyer referral services (1-800- __*-pain). 1. Lawyers cannot split fees with non-attorneys (whether a lawyer works with a referral marketing service or a professional CPA who works on the case as an expert, the lawyer cannot split fees with them). and 2. In most States, for a lawyer to split a fee with another lawyer a.) the actual % of the fee split must be in writing and approved by the client (this presents switch and bait, or you retaining a partner with 30 years experience and your case getting dumped on a first year, and b.) the fee % must have a relationship to the actual amount of work done on a given matter (this practically prohibits a lead gen fee, because a referral alone does not support a lawyer splitting the fee). Hope this info can help keep some start- up's legal fees down if not just a little.

</comment></comment></comment></comment><comment><USER3> I'm not familiar with it, but your idea sounds similar to LegalZoom's plans.

<http://www.legalzoom.com/attorneys-lawyers/legal-plans.html>

(...at least to a layman)

<comment><AUTHOR> You would be right, it is similar. Also pretty helpful to see what they offer and their fee ($23.99/month).

It would be tough to match legalzoom's fee. At that point I would simply have to bring on to many client's to generate a stream of revenue that I would not be able to continue focusing on my start-up.

</comment></comment><comment><USER4> Depends if your advice is binding. I mean if I call and pay for legal advice, follow that advice and realise I have committed a crime despite being informed that I was on the right side of the law then what have I paid for?

<comment><AUTHOR> It would be no different than any other attorney-client relationship.

Interesting fact: If a client commits a crime, it is not a legit defense that a lawyer said it was ok. Unrelated, but also interesting, if a client commits a crime, and as a defense proves a government official, whom a reasonable person would believe has legitimate authority over the matter, said it was legal then that is a legit defense.</comment></comment>


Droplet – A Smarter Way to Water Plants - <AUTHOR> http://smartdroplet.com/ <comment><USER2> Product doesn't exist / discontinued. Footer has copyright date of 2014. Why was this posted? :)

</comment><comment><USER3> I guess you could say the water _comes from clouds_!</comment>


Vim: Takeaways from One Year of Typing - <AUTHOR> http://sankho.github.io/web_log/2015/08/02/vim-8-takeaways-from-one-year-of-typing.html <comment><USER2> The thing about Vim is that I cannot imagine creating it and thinking, "This will be much faster and easier than a mouse eventually". But, I also wouldn't think that I could learn how to type fast without looking at the keys if I just stumbled across a keyboard, but both are undoubtedly true. Like anything physical, it requires practice and muscle memory. Would you rather go back to looking at every single key to type? That's how vim users feel about regular text editors. Try it out.

<comment><USER3> Doesn't vim (or similar schemas) predate the mouse?

<comment><USER4> Yes, it does. Well, actually vi, which is its predecessor.

</comment></comment></comment><comment><USER4> vim overhyped as an editor? It might be overhyped as a programming tool (you won't write 2x the same amount of lines in a day; you will not be 5x more productive), but as an editor, it deserves every single bit of hype that it has.

No other editor stands next to vim. A lot of people dislike editors. It's fine. There are a million tools out there that help people become more productive programmers. You might enjoy IntelliJ or you might not. You might like cscope or hate it. Tt doesn't matter. One needs to find the tools that helps him in their day to day job. But if you need an editor, vim is no doubt the single best out there.

<comment><USER5> The great think about VIM is that it lets you do the same about of work with less effort. Over your lifetime, you might type half as many keystrokes to do the same amount of work. Look at VimGolf and the following video to see what I mean.

[http://www.vimgolf.com](http://www.vimgolf.com)

[https://vimeo.com/53144573](https://vimeo.com/53144573) \- Precision editing at the speed of thought

All editors should place an emphasis on minimal typing.

Emacs has a few cool precision features too:

[http://emacsrocks.com/e10.html](http://emacsrocks.com/e10.html) \- AceJump

<comment><USER4> The thing I appreciate the most about vim is not the fact that you can be a little bit faster with a lot of things; it's the fact that you can edit code for hours and you won't get tired at all. At least you won't get even close to as tired as you would were you using a mouse. It's simply the least painful of all the ways out there. I guess it's the main reason I use it.

Thank you for the links. I do use the AceJump equivalent for vim, and I have it mapped to <space>. It's quite nice, actually :). The only difference is that instead of pressing <space> and getting all the jumps available for each word out there, I press <space> followed by two letters, and it jumps directy to the word which starts with those two letters, or it simply shows me links to words that start with said letters if there's more than a word starting with those letters.

</comment></comment></comment><comment><USER6> Here's the thing: when you're coding, how much time is spent on reading vs writing? For me it's probably 90/10\. Since most my time is spent concentrating on understanding code, the last thing I want is an editor that forces me to consciously think about text operations. "d[downkey]4" might be theoretically more efficient, but I spend way less cognitive energy holding down the shift key and pressing the down arrow 4 times.

The other thing is efficient navigation within one file isn't super useful to me. I spend most my time doing find-in-files or jump-to-definition or rename- across-this-project. Vim kind of sucks for all those use cases. There are plugins of course, but that just brings it up to par with popular IDE's, except with a clunkier interface.

I say this as a person that knows vim well. If I'm SSH'd into a server and I need to edit a config file, vim is the first thing I'll reach for, but for coding, I'm pretty much only using it if I'm using a language that doesn't have a nice IDE already.

<comment><USER7> >Since most my time is spent concentrating on understanding code, the last thing I want is an editor that forces me to consciously think about text operations. "d[downkey]4" might be theoretically more efficient, but I spend way less cognitive energy holding down the shift key and pressing the down arrow 4 times.

The point is well taken, but don't forget that for most people that downside of increased cognitive pressure goes away after a few days or weeks of regular vim usage. I've been using it for about a year and all the combos I normally use are second nature to me (and have been for months). Don't underestimate the human brain's ability to grow and adapt and for incredibly complicated things to quickly turn into routine.

For the record, I almost never use vim's much touted hit a number key then an action to do it n times feature. I have modified it so j and k do the normal down/up one line and J K go down/up seven lines or so for scrolling. [1] If I'm doing something like deleting a line and have to delete a bunch (common case), then I'll "dd" to delete line and then hit "." (which repeats the last action) three or four times until satisfied. Way easier than counting the number of lines to delete then typing "4dd" imo.

[1] Note for anyone who wants to duplicate this: it was still unbearably slow to just hold down J or K to scroll because the default delay between depressing a key and when OSX decides you are actually holding it down and not just pressing it once is too long. Decrease it in the native settings of your OS for a smoother experience.

<comment><USER6> I used it as my primary editor for two months, which IMO is more than enough time to give to a project like that. I was efficient in it, but none of the supposed productivity gains came about. On the other hand, in my IDE I can control-click on a method name to jump to it, or hit ctrl-r to rename something across the entire project, or hit alt-enter to automatically import a symbol when I know the name of a class I want but I can't quite remember the namespace it's in. Those things really do save me a lot of time; but the efficiency comes from the development environment being able to understand the code structure, not from being able to stack key commands.

If someone wants to use vim I'm not saying they shouldn't, I just think it's vastly overhyped.

</comment></comment></comment><comment><USER8> For what it's worth, the author (sankho) mentions that he uses other editors for project-wide find and replace. This _can_ be done in vim too (although I do not --- I'll return to this). You can check out the typically great vimcasts post on this: [http://vimcasts.org/episodes/project-wide-find-and- replace/](http://vimcasts.org/episodes/project-wide-find-and-replace/)

For whatever reason, I find it easier to use commandline tools to do large search and replaces. I do embrace the vim-as-text-editor within the larger Linux-program-composability philosophy, but I understand that not everyone else does. So I use ack and perl, as mentioned in this StackOverflow post: [http://stackoverflow.com/a/8744108/1141805](http://stackoverflow.com/a/8744108/1141805)

(Actually, sometimes I distinctly do things the _wrong_ way. I open a scratch buffer, `:r! ls` to get my file names, restrict to those that I want, create a macro that does what I want on the file under the cursor, and then repeat the macro. I am not proud.)

<comment><USER9> It's possible to run a macro on a list of files? I usually just open the files one by one and @@:wq (oops)

<comment><USER10> Yes, it's quite possible:

      :args *.cpp  " or any other list of files
      :set autowrite
      :argdo normal @@
      :wq

</comment></comment></comment><comment><USER11> The key to learning vim for me was to create my own vimrc from the ground up. I decided to not add anything to that file that I didn't understand what it was for. That and time. As long as you can open a file in vim, add a couple of lines of code and save it, you're good to go. Just keep using it and that vim magic will come to you ;)

</comment><comment><USER12> > Relax! No other text editor has as many developers working on plugins than > VIM.

What about emacs?

<comment><USER8> I thought this too when I read the article. Then it occurred to me that I don't have any idea how many developers work on plugins for either. Looking naively at github files by type is unreliable, since so many people do things like keep their .vimrc and .vim files on github which artificially inflates the number of .vimL repositories.

What I do know is that if there's something I want done, I suspect there is a plugin that does it. So at least morally, there are sufficiently developers for both emacs and vim (in my experience).

<comment><USER12> > What I do know is that if there's something I want done, I suspect there is > a plugin that does it.

Maybe it's just my anecdotal evidence, but I've looked for alternatives to certain emacs plugins used by my co-workers (such as org-mode and ensime) and couldn't find a suitable replacement (I know there are some alternatives for vim, but they pale in comparison to their emacs counterparts).

</comment></comment></comment><comment><USER13> The great advantage of vim is that it forces you to use only the keyboard. No mouse at all! Mouse is slow. Keyboard is fast (once you get used to it).

<comment><USER14> I've wanting to move keyboard keys onto the mouse for decades. The closest I've got is with a Razer Naga Epic - the gaming mouse with the 12 thumb buttons:

      F5    Up    F2
      Left  Down  Right
      Tab   Del   Backspace
      Enter Space ESC

This speeds me up greatly. Especially in mixed GUI/keyboard input situations.

<comment><USER15> That's beautiful.

I might just get one to try out something similar. I'm thinking it might also be useful to have a different mode on the mouse that have the buttons map to keys on the numpad for calculations.

</comment></comment></comment><comment><USER16> I've tried switching to VIM (from few years of using Sublime) few times already, but failed every single time: bare VIM is too dysfunctional to my taste and ways of working with text editor (missing tabs, file/folder treee view, easy switching documents, easy visual copy/paste and so on, missing code expanding/completion...).

Last time I tried spf-vim[0] but while it looked 'cool' (it has colors, it does code completion, it somwhere have the folder/file tree view and maybe eve tabs/panels...) yet it is overly complicated, quite badly documented (there is no intro like tutorial on getting you up to speed with what you may want from a text editor, just some strange sounding plugin list with few shortcuts here and there) and overloaded with plugins I am not interested in (PHP related ones) not to mention having few strange issues requiring googling and writing additional configuration just to make VIM behave...

So, while I'd love to use VIM for its speed, the fact its easily portable with the configuration and is available on almost every OS (BSD, Mac, Windows, Linux, you name it) I still write 99% of my code in Sublime, and only use VIM on servers to change this and that. Perhaps another time ;)

[0] [http://vim.spf13.com/](http://vim.spf13.com/)

<comment><USER17> One thing I'd stress: Start with Vim for side tasks, not to replace Sublime. Once you have the basics down, you can then layer on the IDE features (addons like Ag, NerdTree, CtrlP) that make Vim comparable to what you are used to in Sublime.

I'm happy to act as a coach for you (and anyone else), if it's helpful. If you have a good plan of attack, you can get Sublime-like functionality pretty quickly.

<comment><USER18> +10 to the suggestion to layer IDE features progressively.

My setup is after trial and error: vim + (nerd tree, command-T, tagbar, Gundo) inside a tmux session. On another tmux window, I use 'find ... exec...' to search. So far excellent for me, I feel Zen like coding with this setup with no IDE noise :-).

</comment></comment></comment><comment><USER19> I use vim on a daily basis and think it's a great editor, but it's definitely overhyped. Plugins in particularly are pretty disappointing if you're coming from an editor like sublime. Off the top of my head, syntax checking, fuzzy searching and multicursor options are all perfectly usable but very limited compared to sublime's offerings.

</comment><comment><USER20> There is another element in using Vim that's not mentioned -- it's a super fun journey, full of surprising discoveries, handsome rewards for a little effort, and generally the happy experience in continuous getting nice things from a seemingly inexhaustible source.

As an example, having used Vim for ten years, just within the last few weeks I started to seriously learn and use Ultisnips, SkyBison, Vim-swoop, etc. It has been pure fun and rewarding.

To be clear, I don't use that many plugins. Often time I discover something already built into Vim proper which can replace a plugin (after some light scripting/configurations), then I usually uninstall that plugin. This has happened more frequently in recent years, possibly because of my improved Vim- fu (still a mediocre user I am sure). So both productivity and portability get improved while I am having fun learning new things.

</comment><comment><USER21> Does anyone know if Vim has the power of multi line editing / multiple cursors like w/ Sublime Text? The large majority of my productivity involved copying and pasting with multi line select, and jumping words and different boundaries on multiple lines at once. Anything that matches ST for Vim?

<comment><USER22> There is a plugin for that: [https://github.com/terryma/vim-multiple- cursors](https://github.com/terryma/vim-multiple-cursors)

But I find that I can usually accomplish the same thing with macro or a targeted search and replace.

</comment></comment><comment><USER23> I don't actually program all that much, but I find that for text editing, vim (or even vi) is hard to beat.

As a sysadmin, I appreciate the fact that some form of vi exists on _any_ vaguely unix-like machine I log into. Even without a .vimrc, the basic commands for line editing and searching work and they match with tools like less (or does less match vi?) and using vi has become second nature over time because it's everywhere and it tends to be the default (I hate it when someone makes nano the default $EDITOR so that eg. sudoedit doesn't do the right thing)

I wish Windows servers shipped with vi, too. A decent text editor is the one thing I consistently find myself missing. Notepad most definitely does not count.

</comment><comment><USER15> Eventually, I'm hoping for some keyboard/mouse hybrid like this to catch on:

[https://www.kickstarter.com/projects/1666150716/keymousetm-t...](https://www.kickstarter.com/projects/1666150716/keymousetm- the-keyboard-and-mouse-re-invented/description)

I didn't end up backing it though because I didn't want to dump $250 on a v1 product would likely have many issues to sort out. That and the ergonomics of the typing didn't look that great.

<comment><USER24> Personally, I think this one looks better: [http://www.combimouse.com/](http://www.combimouse.com/)

</comment></comment><comment><USER25> I agree with everything here except the idea that you shouldn't start with MacVIM. The main issue with new users getting into modal editors is the learning curve. If you can reduce the upfront difficulty by accepting OS- specific hotkeys and mouse events, why not?

Using VIM saves you time and a smart user will search out the ways the editor can help her, but there's no value in making the user go cold turkey.

<comment><USER26> The main problem I have with suggesting starting with MacVim is that using it doesn't translate well when you're SSH'd into another system running a different OS. I've been using Vim for a while (and now neovim) and recently tried out MacVim and it just didn't make any sense to me. The menus are totally non-intuitive if you're used to doing everything from the keyboard. Conversely, I wouldn't expect someone who started by using MacVim to be comfortable with the keyboard shortcuts either.

Opening up a virgin vim session on a new system kind of makes you realize how much you'll miss out on if you don't know about :set number, :set wrap, :set syntax <whatever>.

<comment><USER27> > The menus are totally non-intuitive if you're used to doing everything from > the keyboard

You can disable the menus, and using MacVim doesn't require you to use the menus. I use Vim 100% with the keyboard, and I still use MacVim.

</comment></comment></comment><comment><USER28> If anyone is looking for a good book on using vim effectively, this one is great:

[https://pragprog.com/book/dnvim/practical- vim](https://pragprog.com/book/dnvim/practical-vim)

</comment><comment><USER29> Any tips on learning the internal configuration/control language? I've been using vim for quit some time now (I like it a lot), but never have been able to grok anything about it besides entering code :)

</comment><comment><USER30>
      No other text editor has as many developers working on
      plugins than VIM. Virtually anything that exists in
      another text editor which isn't mouse driven has some
      very popular, very supported, very documented plugin
      you can use.

And the Vim equivalent of org mode is what again? I'm a Steve Litt fan, but Vim Outliner isn't even in the same league as org mode.

As a Vim user of many years I still believe it to be superior to emacs when it comes to editing text. That said, emacs is a vastly superior programming environment. And like many people I find org mode to be indispensible.

Happily, these things aren't either/or situations. I still use Vim for quick text editing tasks, but for other matters evil+org mode lets me have the best of both worlds.

Edit: typos

<comment><USER31> > And the Vim equivalent of org mode is what again?

VimWiki: [https://github.com/vimwiki/vimwiki](https://github.com/vimwiki/vimwiki)

Not 100% of the same functionality, but close enough for me as to not matter. For the missing features, I have the rest of the OS.

</comment></comment><comment><USER32> One year? That is like "Takeaways from riding a Superbike in first gear, for one minute - Verdict. Super bikes are way overhyped!"

<comment><USER33> So let's assume that, by using vim as the primary editor as a coder, the author used it roughly 8 hours a day for 5 days a week. That's 1,920 hours.

I daresay it's impossible for someone to not use a tool, however complicated, for nearly 2000 hours and not become quite familiar with its operation.

This is also 1/5th of the (disputed) "magic number" of 10,000 hours to master a skill.

<comment><USER34> It's very possible to use a tool for a year or 10 and not be quite familiar with it's operation. You have to actively make the effort to learn new things to learn new things.

</comment></comment></comment><comment><USER35> SublimeText has a vim mode called "vintage" that allows vim commands to work.

<comment><USER36> Yeah, and its not as good. Try VIM's block selection in sublime, it doesn't exist. Also, the whole point is getting your hands off the mouse, and sublime still needs it.

</comment></comment><comment><USER37> now you should try Spacemacs

<comment><USER38> +1 for Spacemacs. Former vim user, now using smacemacs for past few months.

I found a number of things just work way better in emacs than in vim. For example, web-mode was a revelation for me. I could never get vim to get syntax right in mixed HTML-JS files.

Ability to edit very large files with ease was another one in favour of emacs. Vim would freeze up for a seconds or two while saving even half a megabyte file.

helm and family blew my mind away.

Another win spacemacs is it does not hide default emacs functionality. All default emacs keyboard shortcuts would always work, so learning vanilla emacs is still helpful.

Once I got to know spacemacs shortcut layout, it was surprisingly intutive.

(YMMV)</comment></comment>


Museum of Endangered Sounds - <AUTHOR> http://savethesounds.info/ <comment><USER2> I wish I could add the 'Samsung Whistle' to this list:

[https://www.youtube.com/watch?v=Z5h411OcttA](https://www.youtube.com/watch?v=Z5h411OcttA)

Every time I hear it on public transport (never anywhere else) it gives me terrible pain in all the diodes down my left side. I wish this sound to be extinct.

There is also some incoming mail sound on Mapple computers that I am spared at the moment - probably because all the Mapple products near me have upgraded to Zirconium Mountain Frog (or whatever it is) - but that sound seemed against what you would really need for concentration and productivity.

Some of the legacy sounds in this gallery were rather good - the Nokia sound wasn't thrown together, neither was the Windows 95 startup sound.

There are reasons for this, for instance, with Windows 95 'multi-media' was A Big Thing. Before then a sound card wasn't what you would have on a machine used for business porpoises, plus, before plug'n'play, you would have to spend at least a day installing it in such a way you still had some of your 640K free. With Windows 95 and the Altec Lansing speakers that came bundled with your PC It Just Worked.

</comment><comment><USER3> That was fun, although several were not quite like the ones in my memory.

One of the sounds that I'd like to hear again is that little triple "dit" you would hear on a radio when a cell phone was nearby. I never knew exactly how it was made -- undoubtedly the network saying hello to the phone -- or what that sound was called.

<comment><USER4> Like [http://m.youtube.com/watch?v=h1mlponX_jw](http://m.youtube.com/watch?v=h1mlponX_jw) ?

<comment><USER3> That's the one, yes!

</comment></comment></comment><comment><USER5> This made me think of Bernie Kraus's work: [http://www.wildsanctuary.com](http://www.wildsanctuary.com)

He goes to remote natural areas and records what they sound like. It's relaxing and can be fun atmospheric sound to listen to.

</comment><comment><USER6> The tetris song has been permently engraved in my mind since childhood. The only one out of place is the Nokia phone sounds, we all know they will still exist long after humanity's demise.

</comment><comment><USER7> Great idea! Bookmarked and eager to hear what new sounds are added in the future. I've got a similar idea for a 'video game systems and computers of yore sound museum' which so far includes several years worth of sound rips and snippets from the TI-99 4a, Atari 2600, Intellivision, Commodore 64 and many arcade games. Not too sure about the legality regarding copyright issues or fair use, though.

</comment><comment><USER8> 403 Forbidden.

<comment><USER9> Or a common HN DDoS, and a failed try to fix performance problems.

67 points on HN can kill a typical wordpress blog.

</comment></comment><comment><USER10> This is great!

I'm making a list of things that I did in my childhood tha the future people (mostly my child at the moment) will think are odd or bizarre.

The best one so far is the lack of mobile phones for each person; we just had a landline per house. And even then that was a party line shared between different homes so you couldn't always make or recieve a call.

<comment><USER11> Turning the TV channel controller knob to channel 3 during commercial breaks in order to get a few seconds of programming time, since the rest of the family is watching a show.

</comment></comment><comment><USER12> Nice. Some of the sounds didn't seem to work (like the typewriter).

I have a similar idea jotted down on my things-to-make list :) My idea is to create a library of sounds that are part of our daily life today, not necessarily things that have disappeared or are rapidly disappearing. Like a shutterstock of sounds :)

<comment><USER13> Like [http://www.freesound.org/](http://www.freesound.org/) maybe?

</comment></comment><comment><USER14> This is really cool.

My one gripe is that it uses the crummy Atari 2600 version of the Space Invaders sound effects, when the analog-synthesized arcade soundtrack is the one that everyone remembers.

[https://www.youtube.com/watch?v=5KKr9pz9j2g](https://www.youtube.com/watch?v=5KKr9pz9j2g)

<comment><USER15> ever notice how so many movies and tv shows all defaulted to the atari vcs pacman sounds whenever any game or 'computer' scene was involved? i wonder if there was some copyright issue that allowed everyone to use that bunch, regardless of the scene.

</comment></comment><comment><USER16> Try simultaneously playing "Typewriter", "Vinyl Turntable", "VCR Rewinding", "Windows95 Startup", "Pac-Man", and "Dot Matrix Printer".

It's beautiful. Reminds me of some of my favorite _futurebeat_ music.

</comment><comment><USER17> Nice. Hearing the dialup sound got me nostalgic and I found this site, which was intensely satisfying:

[http://goughlui.com/legacy/soundofmodems/index.htm](http://goughlui.com/legacy/soundofmodems/index.htm)

<comment><USER18> Oh man, thanks for that. The v.22bis (2400bps) one made me flashback hard.

</comment></comment><comment><USER19> I recognise most of those, but what the heck is a Eurosignal?

<comment><USER20> [https://fr.wikipedia.org/wiki/Eurosignal](https://fr.wikipedia.org/wiki/Eurosignal)

</comment></comment><comment><USER21> 403 Forbidden! Uh oh.

On another note though, I was thinking that this could easily translate (no pun intended) to endangered languages

</comment><comment><USER22> 403 Forbidden from Spain?

<comment><USER23> 403 Forbidden from the US at present as well...

</comment></comment><comment><USER24> Nice. Good presentation.

</comment><comment><USER25> loved the dial up modem one. what a throwback.</comment>


Code as text is a problem - <AUTHOR> http://dohgramming.com/post/code-as-text-is-a-problem/ <comment><USER2> Oh this perennial idea. That our editors could produce plain text, but represent everything as a rich data structure.

This sails happily along until someone realizes that they _already do that_. Code is structured. It compiles to an AST which can be worked on by any number of IDEs and editors.

You want a super rich structure in that regard? Something that makes refactoring a breeze? Well, you're asking for a strong, expressive type system.

Shrug.

Nothing to see here.

<comment><USER3> What are good tools for running scripts on an AST? Are you talking about like an Eclipse plugin or something?

<comment><USER4> Roslyn is basically a compiler API for .NET. Take a look at this walkthrough [0] to see how to implement custom diagnostics and quick fixes that operate on AST level.

[0]: [https://social.technet.microsoft.com/wiki/contents/articles/...](https://social.technet.microsoft.com/wiki/contents/articles/26954.writing- diagnostic-with-code-fix-using-roslyn-net-compiler-platform.aspx)

</comment></comment></comment><comment><USER5> Maybe the real question here is why we don't use standard parsers everywhere all the time? Well, for some data formats we usually do - take JSON for example. (You can do a lot with jq.)

I think the problem is that for most languages, the AST is very complex, and writing a transformation pass isn't something you do as a one-off hack.

Lisp famously keeps things simple. I think we could do better than that on syntax, but designing a language with an AST designed for hacking still seems like a good idea.

But there are other ways a language can be easier to hack on. The gofmt tool can do a search and replace on Go expressions and also write the output in Go's standard format. This builds on the language's strengths: (1) having a standard format (2) mostly unambiguous references to imported symbols, so you don't need type-checking to disambiguate. This makes it much easier to find all references to a function.

<comment><USER6> Take a look at how Smalltalk does this (try Pharo, for example). You don't edit code as a whole: you add classes, methods, fields and edit them separately.

This has several benefits: changes are isolated - easier to reason about and track in version control system, refactoring is easier.

<comment><USER5> Interesting. Is Pharo image-based like SmallTalk used to be or does it use something else?

Programmers are just about the last people who work with filesystems directly. I expect git will be used for sharing for a while, but I wonder what it will take to move beyond checking out code into local working directories to a more cloud notebook-style approach? (There are lots of experiments but it's not mainstream.)

<comment><USER6> Image-based, as Pharo is a close fork of Smalltalk.

I've been thinking about a source control system, that will track functions/classes, instead of bytes. You could track who changed that helper method and not be distracted by moving classes between files.

</comment></comment></comment></comment><comment><USER7> _> If the primary representation of every programming language was data, [...]. When the programmer wants to modify code, render it into a textual representation. When they're done, parse it back into nice, inspectable data._

I see several problems with this:

1) human behaviors: you want the ultimate "Source Of Truth" to be the code-as- data structure instead of the text but programmers would eventually just shift the SOT to the "rendered text" because it's easier to work with. Friction for editing is a big deal. A similar behavior happens with database Stored Procedures where programmers use external "schemachanges.sql", "tabletrigger.sql", etc for source code revision control. The db engine's "source of truth" of that code is an internal blob but that's not visible to Git/emacs/vi/Notepad++/etc.

2) work-in-progress code is often broken and can't be parsed: E.g. the parser stops at a missing semicolon or unbalanced quote and therefore, you end up storing a large _unparsed_ string for text with parsing errors. If you have a 500 LOC source file where the first 20 lines was parsed but the last 480 was not, you might as well have left all 500 lines in the "rendered" text as the SOT. The ideals of maintaining a perfect round-trip from code-as-data --> code-as-text --> code-as-data ... is an illusion in this case.

Based on current macro trends of compilers exposing their parsing engine (e.g. clang, C# Roslyn), it looks like programmers would rather use _" parsing as a library API to process normal text"_ rather than _" code-stored-as-parsed-data to be rendered to text for editing"_.

<comment><USER8> > it looks like programmers would rather use "parsing as a library API to > process normal text"

Yeah. That code is stored as text hasn't turned out to be that much of a problem, when parsing it is usually quite cheap. Rust's `cargo check` (parse + type check + borrow check basically) runs in under a second even for large codebases.

For ease of implementing editing/refactoring features, the author seems to want a standardised, poly-lingual storage representation for code. That sounds like... text. There is little else in common between all languages. The winning abstraction so far isn't the storage format, it's something like Language-Server which lives above a parser/semi-compiler and just works with symbols and filenames/line numbers/char spans. These are pretty much common to all languages.

If you wanted all the benefits described, like one-line renaming operations in your SCM, you'd need to completely normalise the storage format into relational data structures. This would only really work for static languages, and would open you up to a heap of distributed systems problems: What is the true representation of a particular symbol? What if we both commit two symbols with the same ID, or two IDs for the same symbol? Nobody wants to need transaction support and SQL constraints for a file in Git. And think of how a one-line change like this:

        // main.rs
        + pub fn gimme_seven() -> Option<i32> { Some(7) }

would add some entries in database tables all over the place:

        // symbols.json
        + { "kind": "function", "id", "d3c42d4d-9df6-43a0-97a0-147fe8e52a2d", "name": 'gimme_seven' ... },

        // main.json // { exports: [ ...
        + { "id": "d3c42d4d-9df6-43a0-97a0-147fe8e52a2d", "visibility", "public" }

Using fully-denormalised text is the only reason SCM works in the first place. Programmers suffer boundless pain just trying to get computer-generated (usually XML) config files to play nice in shared repositories, and I'd never wish the same upon anyone trying to write actual code.

</comment></comment><comment><USER9> Working on AST is hard unless it is a lisp.

Additionally, the tooling to work with ASTs for many languages is poor.

However I was pleasantly surprised when I discovered clang query(c++). Eli has a nice introduction: [http://eli.thegreenplace.net/2014/07/29/ast-matchers- and-cla...](http://eli.thegreenplace.net/2014/07/29/ast-matchers-and-clang- refactoring-tools)

I wish someone would build more refactoring tools with proper semantic analysis

</comment><comment><USER10> > the diff shows 5 billion changed lines of code

This is either hyperbole, or exactly the problem: It's no wonder that a behemoth of that size is hard to refactor.

</comment><comment><USER11> I'd be curious what the HN community thinks of a text editor plugin I've been considering. This wouldn't necessarily solve the problem described, but would mitigate it to some degree I think.

The idea is to write code in blocks. So you have a raw file with and the following operations:

INSERT (create a new block of text, either top-level or nested inside another)

DELETE (Selected block or all nested blocks)

UPDATE

Each block would effectively be a node consisting of its text, optionally split into a LEFT block of text and a RIGHT block. Each line would be stored along with a line number. Then when an insert or update occurred, all line numbers would be updated based on which lines were already to the left and right of the insert, at which point the file would re-render.

I think if you added tagging and selection / editing by tagging you'd get the benefits of something structured without getting down to the AST level or breaking all of the other useful add-ins built on the assumption that code will be text.

</comment><comment><USER12> Also as an aside to my previous large comment I just want to add that I'm disappointed by the dismissive tone of some of the other comments and the "this is how our fathers have always done it" attitude.

The "IDE" that a number of people talk about, let's face it, is anything but integrated.

It is laughable to call them "integrated development environment". They are glorified text editors that go to extreme measures just to give you an ounce of useful information which is often unreliable.

Such as trying to "parse" your literal strings and use heuristics to determine if it's a SQL query. That is not integrated, it is a sad hack.

My point is we can set our bar of expectation from our programming languages and environments so much higher. Let's not just settle on what we have.

</comment><comment><USER13> In early Mac days I worked at an angel funded startup that was building a graphical programming language called Benjamin. It was amazing, had all the features of a compiled language, but was just too early. Still surprised no one has done anything close since.

</comment><comment><USER14> Programmers that don't understand how to effectively edit text are a problem.

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

</comment><comment><USER15> I guess you could dump to AST and manipulate that. There is a utility to dump PHP code to AST, or vice-versa[1]. It was used to make a PHP7 to PHP5 converter: [https://murze.be/2016/03/converting-php-7-code-equivalent- ph...](https://murze.be/2016/03/converting-php-7-code-equivalent-php-5-code/)

[1] [https://github.com/nikic/PHP-Parser](https://github.com/nikic/PHP-Parser)

</comment><comment><USER16> While I don't really like this idea (in 1985 it may have changed the course of programming but in 2017 with advanced IDEs it smells like a solution looking for a problem) it has one interesting benefit...

If two languages have similar grammars and APIs you could potentially allow the programmer to choose the language they want and each programmer can work in their own language. Even one of those graphical block-based languages.

<comment><USER8> In the entire history of languages, this would probably only work for prehistoric-C# and Visual Basic. Compile-to-JS languages wouldn't work, they're all too different. Not even Lisps. The idea doesn't really have legs.

</comment></comment><comment><USER17> See Projectional Editors like Intentional Workbench and Nim macros.

</comment><comment><USER18> Why do we not consider code generation/editing APIs/tools as an expected feature of a language instead of an editor?

</comment><comment><USER19> No it isn't.

</comment><comment><USER12> Amen. I have been thinking about this a lot as well.

In fact I was thinking of writing a blog post about it along the lines of "The plain-text tragedy".

A program is so much more than a flat collection of lines of text stored on a filesystem.

Our tools force us to "reduce" a program and dumb it down to a bunch of flat files.

This in turn increases the cost of representing information (syntax clutter).

It also adds cognitive overhead for naming things and so on.

As a result we get ourselves into a fight with the compiler. On one hand we want to give it as much information as possible so it can help us solve the problem.

On the other hand we don't want to overwhelm ourselves so we awkwardly compromise somewhere in between (terse syntax, short weird variable names, "def" for define "fn" for function, symbols and so on).

As a result, and believe me I could write a book of rants about this, what we call "IDE" is anything but integrated.

Imagine an editor that allowed you to easily view and modify "objects" in your programs.

Instead of the project tree representing the files on a filesystem it would be representing components of your project.

You could view a function, select it in the editor and right click on its name and click "Write documentation", or "View entities calling this function", "View tests involving this function", "View authors".

In a way similar to, for example, how stored procedures are stored as objects in a database that you can fiddle around with.

And you could have custom attributes attached to these objects. You could tag them with domain-specific stuff.

Imagine the possibilities for version control. If the units of our programs where tracked and edited as first-class-citizen objects in a smart database you would automatically get "git on steroids".

We already "have" some of this stuff but they are not integrated. We first throw away information then come up with parsers that try to make sense of it again like fancy auto-complete intellisense stuff. As a result they become expensive to write and maintain and they become fragile and unreliable. You can't trust them blindly because their accuracy varies wildly. Good luck getting intelligent intellisense in a large project with dynamic languages and transpilers and so on.

We need a development environment that is not hostile towards the humans. It should actively encourage the programmer to provide and specify things about the domain.

We need programming languages that allow and encourage the programmer to provide information. The flat-file ASCII syntax that we are so used to punishes that.

In the "real world" there's so much meta-data associated to each object/entity/unit of the program.

Consider a simple function that adds two numbers together.

While from a mathematical standpoint it's nice to be able to write "function add(a, b) { return a + b; }". From a industrial real-world team-effort software engineering point of view that is incomplete.

Ideally we would want documentation (purpose, arguments, return value, etc), tests, history/version-control and some more context-specific things such as logging that can be turned on-off depending on the context.

We need languages that recognise these concepts and editors that allow us to keep these things in a way that doesn't get reduced down to meaningless text (like documentation crammed in comments that later needs to be pulled out and parsed awkwardly).

If we don't "throw away" the information suddenly so much of the stuff that we work so hard to do today becomes available for free (such as much more accurate documentation that stays up to date with the project, version control that operates at the program level not lines of text).

You could "tag" the components of your program with various attributes.

Then your IDE could auto-generate a report that says "Hey 57.2% of your functions related to authentication currently do not have a test case associated with them. Would you like to create a test case for checkUserLogin function now? click here".

As I said right now we have a lot of this stuff but they are not integrated and fall apart easily, they rely on fragile mechanisms to keep them accurate so you can never let your guard down and trust what you see on the screen you have to actively fight to keep things in sync with each other and so on.

<comment><USER20> > _A program is so much more than a flat collection of lines of text stored on > a filesystem._ > _Our tools force us to "reduce" a program and dumb it down > to a bunch of flat files._

Agreed with a reservation: text sucks, but we have nothing better, and your post does not suggest an improvement. If you have something more concrete on your mind, I have some specific questions here I think we'll need good answers before we jump the text-based ship.

> _It also adds cognitive overhead for naming things and so on._

I take this you advocate going without textual names. Presumably, if we didn't name things in our programs, programming (both "writing" and "reading" them) would be easier. If this is actually your point:

* How are our tools going to present "source code" to us? * How are we going to refer to pieces of our programs, in spoken and written communication?

These things have great impact, right now I can get into a discussion of execle(), execl(), execlp(), execve(), execv() and execvp() (these are pretty average regarding mutilation in the interest of brevity, at least they're pronouncable[1]).

> _Imagine an editor that allowed you to_ [...] _view a function, select it in > > the editor and right click on its name and click "Write documentation", or > > "View entities calling this function", "View tests involving this > function", > "View authors"._

* What would "view a function" mean in a nontextual programming language mean? * "Write documentation" implies more _text_. Doesn't the argument against text in programming languages apply to documentation as well, just more forcefully? What is your proposed solution to keep documentation in sync with the code? * What does "View entities calling this function" mean in a universe without names?

[1] cf. wcsnrtombs(), wcspbrk(), wcsrchr(), wcsrtombs().

<comment><USER12> A better alternative is theoretically possible we just haven't devoted significant time and resources to it.

It is possible to create an "editor" that edits the objects of the application but not as text.

It can look almost identical to a text editor but under the hood it knows more about each "node" that you are interacting with.

One challenge is that sometimes these applications are not flexible enough to deal with "temporarily invalid" programs. So they become rigid and feel less flexible than a normal text editor.

But those challenges can be overcome.

This suddenly opens the door to so many wonderful possibilities. I know because I have worked on an experimental prototype for such a thing.

For example text-based version control will be automatically obsolete. Your IDE will have the history of every single piece of your program (program is stored as a rich object in the database).

Your IDE can suddenly present different "layers" of information to you in a clean way.

For example you can "hide" an entire block of code and just label it with "Check if user has sufficient privileges".

Then the IDE can allow you to expand and explore that section of the program if you wish. But otherwise you can collapse it and just scan over it with your eyes.

The one-dimensional flat nature of a text-based system discourages us from attaching additional information to the pieces of the program.

We need a way to be able to "navigate" through multiple dimensions of information in relation to the obejcts in the program.

For keeping documentation in sync, the IDE allows you to view/create/modify the documentation for a given object of the program therefore it can guarantee certain things.

Your environment is fully aware of the relationship between an object and its corresponding documentation. It's not just a piece of string that gets ignored.

So when you change the body of a function it can pop up a warning and say "Hey you have modified this function since revision #48452 but the documentation has not been changed. Click here to update the documentation.".

Your environment will be aware of, for example, the relationship between tests and obejcts (such as functions).

So it can tell you in a 100% reliable way, not based on file name conventions and error-prone parsing, that hey across your project the following functions have no tests associated with them.

There's enormous inertia against an initiative like this because of our dependence on existing technologies. But we cannot advance software engineering to the next stage unless we move beyond the "a program is a bunch of files that we view and edit like a book" mentality.

We need environments that are much more aware and in-sync with the broader context of a program/project as a whole and in a reliably-structured manner.

Check this out as a basic example: [https://isomorf.io/#!/demos](https://isomorf.io/#!/demos)

(I'm not affiliated with them)</comment></comment></comment>


Http://getpopcornti.me/ - <AUTHOR>

<comment><USER2> How I stay calm, by people with very stressful jobs (theguardian.com) 21 points by yiedyie 2 hours ago | 9 comments

</comment><comment><USER2> Buttercoin – US-based Bitcoin exchange (buttercoin.com</comment>


Mozilla's Rejection of NativeClient Hurts the Open Web - <AUTHOR> http://chadaustin.me/2011/01/mozillas-rejection-of-nativeclient-hurts-the-open-web/ <comment><USER2> Completely disagree.

I don't even think Google "adopted" NaCl, it's still more a private project of a few, compared to Chrome(OS) and Android.

NaCl is one of those technologies that I secretly hope fails. Pull the plug on x86 already, FFS.

Saying that the Open Web needs an app-store to compete with the walled gardens is also a fallacy. Quite the contrary, the web competes with the walled gardens because it _doesn't_ have such master-record. You will see this pattern repeat itself; the chaotic nature of the web beats any attempts to impose "order" upon it. Cf. the dismal failure of dmoz and other curated directories, compared to search engines.

If you want to use performance critical software that pushes the limits of your machine, download it, use Java or whatever.

I doubt the app-store model will survive long term; individual merchants and vendors tend to move faster than the infrastructure that houses their shops and supports their business (almost literally.) The moment a few merchants diverge from the proscribed machinery of the market, and exploit inefficiencies, as they will, is the moment you will see this model come apart at the seams. If the entire model isn't killed along with its platform by changes in technology.

The one good example I can give you is the buildings built throughout South East Asia to house street-vendors. Specially in Cambodia and Vietnam, the governments built multi-story shopping centers, just piles of concrete, and invited vendors to push their carts in and congregate. The markets might have looked like proper malls at some point, but with time, they're just shaded bazaars like any other street market, except this one isn't dried by the sun and there is no drainage. Over time, the building has all the appeal of a street market, except you have to climb up some slippery stairs tightly packed with pickpockets. However, most higher-end merchants gather _around_ the vertical-bazaars and open proper walk-in shops with more products, better presentation, and all the amenities of a private property (fan, seats, water cooler, bathroom, TV/radio, etc.)

<comment><USER3> I couldn't agree more if I were suddenly granted the magical ability to concur with the power of a thousand suns.

As far as NaCl goes, the absolute last thing the web needs is portability/endianness issues. I'm writing this comment on a phone (ARM), and I also browse on my desktop machine (x86-64) and my netbook (Atom, x86). (Not to even mention PS3/XBox 360/Wii/older Macs, all of which come with browsers.) Wanna make web the web _worse_? Force developers to target several architectures for their apps, or greet users with "Your CPU isn't supported!" pages. Lots of Webapp developers have trouble with _cross-browser_ issues!

If you look at Firefox plugins (native) versus extensions (Javascript), you can see fairly plainly that, even though it's slower, the ease of development in Javascript (even with all its quirks) outweighs the benefits of native code, even for heavyweight extensions.

The best solution, in my opinion, is to expose a (fast) bytecode VM to web developers. Javascript is okay for a lot of purposes, but it's a messy language, and can be pretty clunky. A bytecode VM (one that at least has a Javascript front-end) could solve most of these problems. Off the top of my head, the JVM has Rhino for JS (as well as support for Ruby, Python, Clojure, and a host of others) and is easily restricted, if somewhat heavyweight. The Lua VM is faster than the JVM, is portable to a number of platforms (having a clean, portable, lightweight implementation), and I suspect that a Javascript front-end would not be hard, given the similarities between the languages (Lua could be described as a cleaner, faster Javascript). The language of choice would be up to the developer, as long as it could target the VM (and we'd not have to put together hacks like minifiers or $language-to-JS compilers like CoffeScript and Objective-J). Getting Google, Microsoft, and Mozilla to agree on a VM is trickier, although I hear MS loves Lua.

I also agree with the app store assessment (1000 suns, etc.), but have little to add.

<comment><USER4> NaCl works on both ARM and x86 using the same downloadable bytecode. The long term goal seems to be to translate the bytecode in the client using a sandboxed LLVM to target the local architecture

See the following video from the recent LLVM Developers' Meeting

Portable Native Client, David Sehr, Google [mp4,269mb] [http://www.llvm.org/devmtg/2010-11/videos/Sehr_NativeClient-...](http://www.llvm.org/devmtg/2010-11/videos/Sehr_NativeClient- desktop.mp4)

<comment><USER5> As I understand it, if you use Native Client now, you get an architecture- specific binary. The LLVM bitcode based portable version is still a work in progress. So it's more accurate to say "long term goal" than "works".

The problems with Native Client go beyond its currently x86-specific nature though. The Web is based on open standards, and a requirement for most standards is having multiple independent implementations. Native Client is a complicated enough technology that it might be completely impractical to spec it in sufficient detail and independently reimplement.

You might think this is only a technical issue of standards process, but a standard with only one implementation ends up de facto controlled by a single entity, even if the implementation happens to be open source. In practice, you'll get support for the platforms and CPU architectures that Google cares about, in their priority order. You can see how that might not be so appealing for an entity that doesn't want Google to be setting the agenda quite that much.

In addition to this, the security architecture of the whole thing seems pretty dubious. It does have a better attempt at security design than ActiveX. But given the basic approach (binary-level validation of binary code), it has a lot of attack surface.

All that being said, it's a neat project with a lot of hack value. It just doesn't seem like a great fit for the Web. It is likely more driven by Chrome OS at this point.

<comment><USER6> So are you arguing against Native Client or pointing out a couple of niggles with the current implementation of Native Client? I don't think anyone was suggesting that the current experimental builds are perfect and infallible.

And if a single implementor is a bad thing, shouldn't you _want_ Mozilla in on it?

</comment></comment></comment></comment></comment><comment><USER7> It's ironic to me, how self contradictory the title is. NativeClient is not a way to make the web more open, in fact it's a way to make the web more binary/obscured.

Low level memory access, pointers and the likes are the 'horrors' Java/C#/<name your high level language> programmers are running away from. The author fails to point out why would anyone want low level memory access.

> Preemptive response: But NativeClient is x86! Basing the open web on a > peculiar, old instruction set is a terrible idea! That's why I point to LLVM > and Portable NativeClient (PNaCl). It's not a burden to target PNaCl by > default, and cross-compile to x86 and ARM if they matter to you.

This seems to imply that the browser should have a compiler that complies the low level bytecode into real machine code. The author should realize that this would be almost identical to running an SWF or a Java plugin, which makes the whole idea pointless.

<comment><AUTHOR> Hi, original author here,

Responding to your bytecode argument, modern JavaScript JITs are already compiling JavaScript to machine code. That means JavaScript is becoming the de facto bytecode of the web. Then the argument becomes "what's the most appealing bytecode for the web?" I'd argue that SWF isn't (closed), Java isn't (for the same memory layout and language translation issues I discussed), and JavaScript isn't (memory layout and language translation). Sandboxed LLVM makes a much better intermediate format in a world where web applications have the same capabilities as native applications.

"The author fails to point out why would anyone want low level memory access."

Please read Tom Forsyth's postings that I linked at the top of mine. Basically, in the last 30 years, clock speeds have gone through the roof, but memory latencies have only increased a couple orders of magnitude. Thus, memory is a primary concern in any application where low-level performance matters, like the ones I listed (games, simulations, video, DSP).

<comment><USER8> > like the ones I listed (games, simulations, video, DSP).

Those should not run in a Browser, they should on a real OS (or Emacs).

What's next VMWare inside your Browser? Then it's OS -> Browser -> VM -> OS -> Browser...

Sorry but just because things are possible, doesn't mean that they should be done...

<comment><USER2> but you can't just right-click on a binary executable and "view soure", bro! ~

Seriously, people managed to write successful, cross-platform software without expecting everyone with any kind of gadget or device to run it with one click.

<comment><USER6> When was this? Atlantis? I don't remember any point in history where this was simple and commonplace.

</comment></comment></comment></comment></comment><comment><USER9> I disagree with the article's sentiment. I'm glad the web is focusing on Javascript. Here's why: the web is a nice, text-based environment that is safe to execute on your computer. Each web resource may contain active scripts but they are pretty innocuous.

Native applications are binary and can do all sorts of nasty things. Sure, this sandbox is supposed to be safe, but what if it's not? When an application is delivered over the web, one should really make sure that it wasn't somehow changed or sabotaged. Right now this is impossible. At the very least, this proposal would have to be implemented so we can trust what is being downloaded: <http://news.ycombinator.com/item?id=2024164>

Here is what I suggest: native libraries should expose their objects to javascript, which should do the majority of the work. Kind of like PhoneGap does on the phones. These native libraries (like OpenGL, say), should be served from cdns over httpc:// and the user agent can verify that they are safe after downloading them.

<comment><USER10> According to Brendan Eich, the designer of Javascript:

        JS had to "look like Java" only less so, be Java's
        dumb kid brother or boy-hostage sidekick. Plus, I had
        to be done in ten days or something worse than JS would
        have happened.

(See comments from [http://www.jwz.org/blog/2010/10/every-day-i-learn- something-...](http://www.jwz.org/blog/2010/10/every-day-i-learn-something- new-and-stupid/) for that and more from him)

Given that constraint, JS is an amazing hack. But it's 2011 now. Why should we have to use Javascript for client code in the browser--why shouldn't we be able to use Ruby, or Python, or C#, or Clojure, or Haskell, or F#, or Lua, or whatever else we want? It seems ridiculous to me that we're having a resurgence of language innovation on the desktop and on the server, but not in the browser.

<comment><USER11> We can. [http://mozakai.blogspot.com/2010/08/emscripten-llvm-to- javas...](http://mozakai.blogspot.com/2010/08/emscripten-llvm-to-javascript- compiler.html) or its kin will definitely see a place in the future of web development.

x86 is a sucky architecture to target but we target it cause that's what's worked on. Path of least resistance. Same will happen to JavaScript as a bytecode target, inevitably, and when it's abstracted away and browsers speed up even faster, we won't be bothered by the pain points, just use the implementation.

<comment><USER9> Can you tell me how this is different from, say, Java? The fact that you are happy to run arbitrary binary code that was compiled for a specific platform? So now we are supposed to "write once compile everywhere" like C++, and then ship that to platforms? That is not in the spirit of the web AT ALL. If you want Java, at least THAT is write once, RUN anywhere. And why isn't running Java more seamless? I think answering THAT will be helpful to the original discussion.

</comment></comment></comment></comment><comment><USER12> Let's ignore the philosophical or design issues surrounding native client and look at a practical one.

Why does the article take issue with Mozilla alone? Surely they aren't the only browser vendor that won't be implementing native client. Mozilla is being singled out here precisely because other major platforms are considered to be lost causes.

Safari and Internet Explorer are unlikely to support NaCl for obvious competitive issues. Heavily curated platforms like the iPhone prevent even third parties from supporting such a feature.

Once you realize that even with Mozilla support you'd still only be looking at a ~60% penetration, you're going to be working around it anyway. Once you're dictating platforms, plugins or providing a fall back implementation I'm not sure if support in one specific browser is going to make or break anything. If you're willing to target only half the web you're simply not that concerned about ubiquity to start with.

<comment><USER6> Once Mozilla and Google support it, that puts a lot of pressure on the others. It might still not have happened, but Mozilla was the swing vote.

<comment><USER13> That doesn't guarantee success. Google's + Mozilla's pressure in video codecs hasn't changed Microsoft's and Apple's mind.

</comment></comment></comment><comment><USER14> The only way I can see PNaCl catching on is if Google deploys it in Chrome and the Android Browser and creates an automatic fallback to a javascript PNaCl interpreter for the browsers that don't have it. Then it becomes about "why is Firefox/IE/iOS slower at running this webapp?"

But even then you'd need Google or someone else to deploy some interesting PNaCl apps to make having it worthwhile.

It's a pity that this is such a long shot because JS isn't a particularly good language and the stack we seem to be heading towards (and that Mozilla favors) is something like CoffeeScript -> Javascript -> bytecode -> machine code. Javascript doesn't seem like a very interesting compiler target or an easy language to make fast[1]. Maybe the new ES5 strict mode or some other subset of javascript can be agreed upon as a basis for compilers, that is easier to run fast. Then that can be the IL for the web.

[1] Best implementations are 3-5x slower than the JVM according to <http://shootout.alioth.debian.org/>

<comment><USER8> Well JS is _very_ dynamic, people have for a long time focused on the optimization of static typed compiled languages. The JVM did awesome things in the area of JITs, V8 Crankshaft is already pushing the limits once again, up to 3x gains over the current version in the Browser. There's still a lot of potential in optimizing a language like JavaScript, but Rome wasn't built over night, give JS some more time.

<comment><USER14> I just find all that engineering effort such a waste when it is optimizing Javascript of all things. I've seen a lot of arguments of why Javascript isn't "that bad" but few about why it is actually good when compared to comparable languages.

I see a lot of good coming out of building VMs for more dynamic languages than Java, but there seems to be movement in the direction of running away from writing pure Javascript (CoffeeScript/GWT/etc) that if you're going to build a JS VM you might as well define a strict subset of the language that will be optimized and let everyone target that when building VMs and languages.

</comment></comment></comment><comment><USER15> There's no shortage of failed great technology, unfortunately.

You need a way to get this launched, which means you need widely-available clients (PNaCl), and you need the content as otherwise nobody needs those clients you don't yet have, and you need the tools for developing the content which aren't available, and you need a way to interest enough folks in this technology into adopting it, whether by pushing them (cash) or pulling them (cool, useful, solves my problem, etc).

And you need to sort out and preferably prevent the security attacks and how you're planning on providing content protection (yes, you're going to need some sort of copy protection get more than token commercial content), the usual UI adoption issues for non-tech users (they're the big market, and not the geeks), and with all the usual nasties that can derail or dissuade the early adopters of any technology.

Getting to critical mass with these sorts of products is inherently entertaining, and involves rather more thought and cash and effort than with the technology itself. Have you looked at how all that'll happen here, rather than looking (just) at the (admittedly cool) technology?

</comment><comment><USER16> And so the pendulum has swung back. I believe Mozilla's action is rational assuming my logic is not flawed. See if you can unravel it.

Premise: The more indistinguishable a browser gets from its underlying operating system the more of the properties of said system it must share. Thus stretching the nature of the abstraction, making it shallower (till the machine) hence also increasing the probability of leaks in said abstraction.

Speciation will occur across system architecture peculiarities and cause splintering of browsers. Destroying their main advantage - which is the strong guarantees it makes on your deployed code being accessible across a vast range of platforms. That is, physical constraints and combinatorial considerations will make it very hard to write code that uses architecture specific optimizations and assumptions while still falling back robustly across all devices. And if it can work everywhere then it must not be directly exposing such a hardware layer and then, what is the point. The same can be acheived by optimizing javascript JITing. The JITter can take care of that optimal device specific optimized code generator. Google wants to create an OS, Mozilla wants to improve the browser.

In particular, as margins from speed, ui and features decrease; each vendor will become incentivized to avoid commodification and distinguish themselves from their competitors by moving faster than the glacial speeds of standard bodies and introducing incompatibilities. While being slow to pick up those of others. In essence each browser would basically evolve into and become indistinguishable from a current OS with all its pitfalls (isomorphic rather than homomorphic as currently). And if we are targeting specific VMs then we may as well factor out the browsers as they are no longer a vital component of the equation. Completing the cycle. To be restarted with metabrowsers.

Seems to me that pushing for native into the browser without carefully considering the tradeoffs is foolish. You cannot have uniformity without sacrificing diversity. This seems like the original Java dream rebooted. But it seems to me that wanting the same UI and code to work everywhere while taking advantage of underlying hardware, while automatically adapting and falling back on visuals and optimizations is a pipe dream. That is of course, until OS's and programs become intelligent and partially alive. At least microbe level intelligence. And virus like adaptibility.

Aside: NaCl appears to have a decent amount in common with silverlight. Particularly in terms of tradeoffs, weaknesses and gains.

<comment><USER6> It's not clear from your comment that you have a good understanding of what Native Client is. You're making vague, barely technical objections to the browser getting "more indistinguishable … from its underlying operating system" and losing the minuscule amount of cross-platform capability it has now without explaining how a more open and potentially efficient platform for code execution than "Whatever text-based JavaScript interpreter the browser vendor decided to include" would necessarily do that.

<comment><USER16> My comment was an argument as to why Mozilla's choice not to introduce this dependency was not a bad one - there is no technical reason why the fast execution multiple language advantages of NaCl cannot be architected into a javascript vm. and why mozilla's path does more to keep things open longer by using an already widely adopted, more understood technology. The enemy you know is better than the enemy you don't know type thing. Who knows what can of warms the concepts sandboxing relies on will contain. It must contains flaws as all creations of humans do.

And then my opinion that browsers will evolve into the platform and not be separable from the OS. Stuff like NaCl simply accelerates that by introducing a dependency on one company or creating a technology that invites splintering on implementation due to its complexity and uniqueness.

</comment></comment></comment><comment><USER17> Considering NaCl in the context of papers like <http://eprint.iacr.org/2010/594> (timing the CPU cache to break AES) is... interesting. You'd hope that Google would have considered such issues, but a quick search doesn't yield anything.

<comment><USER6> Are you saying that AES in JavaScript is more secure?

<comment><USER17> In the sense that Javascript crypto is horribly broken (see e.g. [http://rdist.root.org/2010/11/29/final-post-on-javascript- cr...](http://rdist.root.org/2010/11/29/final-post-on-javascript-crypto/)) but can't really be used to attack other applications running on your computer, yes. NaCl itself is probably fine-ish for implementing crypto protocols - it's just that it looks like a perfect vehicle for attacking other crypto implementations running on the same processor. (Well, except for the noise from running Chrome, but I still wouldn't use an SSH session while running NaCl.)

</comment></comment></comment><comment><USER18> If NativeClient is available as a plugin, can't Firefox users benefit from the technology regardless of whatever Mozilla thinks? I like the idea of lightweight x86 sandboxes like Native Client and vx32, but I understand why Mozilla isn't very interested in them. As long as nothing is done to actively hinder their development and use by those who are interested, is there really a problem here?

<comment><AUTHOR> The problem with plug-ins is that relying on them causes a huge drop-off in usage, at least in my experience. Requiring a download of some kind, even if it's just a plug-in, costs you about 30% of your possible users.

It sounds like Unity3D has similar numbers: <http://forum.unity3d.com/threads/39362-Web-player-adoption>

</comment></comment><comment><USER19> Obscuring code isn't a bad thing, it's what I miss about c/c++. It was so much easier to share a library without giving away source code.

The increased power that NaCL would add would enable more disruptive applications than just js apps. Client side custom video encoding, browser based distributed computing, and yes again a better economy of buying selling software libraries.

</comment><comment><USER9> Think of it this way:

Flash, Java, Javacript, et al are great for the web because they are "write once, run anywhere". The same source code runs everywhere. That is what the web is all about. HTML and CSS are not scripting languages and they are also "write once, run anywhere". That is how the web delivers your programs.

Now, what will your Native Client do?

It will have COMPILED code for ONE platform. Like in C++ where you "write once, compile everywhere". Except you probably won't be able to compile everywhere. The point of the web is that any platform should be able to run your app.

On the other hand, I can see Native Client as being useful for extension libraries. You know, like PhoneGap plugins. The Javascript can test if the object is there, and if it is, use some standard interface. You could build up a standard library of these. As long as it is available on a wide enough range of platforms. Certain APIs are already exposed by the browser, through HTML5, that were originally in Google Gears.

Look, I agree that it's more of a philosophical thing, and indeed you are welcome to make an extension for Mozilla and all the other browsers. But the security risks alone will make this a tough sell to INCLUDE in a browser -- harming the spirit of the web. Not only that, but the web is totally against "favoring one platform over another" ... it is BECAUSE of the web that the platforms are able to work better together.

<comment><USER20> Did you miss the PNaCl part? Check it out here: <http://nativeclient.googlecode.com/svn/data/site/pnacl.pdf>

</comment></comment><comment><USER21> People are going to want to target their C, Java, Python, etc. code to the browser. The only question is what is the better target, Javascript as a VM or a sandboxed LLVM?

Honestly the inclusion of NaCl wouldn't change that much. JavaScript would still be the easiest path for most developers to choose. It will be only language that the browser hosts the interpreter and has no compilation step.

<comment><USER22> JavaScript does have a just-in-time compilation step in most implementations these days. A quick scan of llvm-bc by a back end would be equally invisible to the user.

<comment><USER21> I just meant the user has to compile their language of choice to the llvm byte code, as I don't see browsers hosting a bunch of interpreters for different languages.

<comment><USER22> Only the developer would need to do the step of compiling to llvm-bc, not each user. The browser need only host the back end JIT compilation step.

</comment></comment></comment></comment><comment><USER23> I agree that JavaScript may not be the optimal solution (our kids will hate us for making it the language of the web).

But why LLVM? Why not something more standard like CIL or Java bytecode? I would personally love to see CIL in all browsers. It compresses much better than LLVM bytecode...

</comment><comment><USER24> The web is starting to come into its own thanks to relentless efforts to improve a limited set of tools: HTML, CSS, Javascript. What the web needs is not more tools, but for the tools it already has to continue to be improved.

<comment><USER25> Yeah, so relentless efforts to improve any other tools than those are just missing the web.

</comment></comment><comment><USER26> Google don't even enable NaCl by default on their Cr-48 laptops!

</comment><comment><USER27> NativeClient is a bunch of horse poo and shouldn't be in a browser anyway.</comment>