Ask HN: Is anyone using a web IDE for most of their development work? - <AUTHOR> It seems like there's a new web/cloud IDE every month. Codenvy, Cloud9, Koding, Nitrous, Codebox, etc. Has anyone shifted their development environment to one of these successfully for a decent size project? <comment><USER2> Co-founded Nitrous (but no longer part of it) so take my opinion for what it's worth.

The real benefit is not in the Web IDE per se, but the fact that your dev environment is accessible from anywhere. _That_ is the killer feature. You don't have to setup your environment more than once if you have more than one computer; you can work even with a Chromebook/iPad, and it's easily shareable with your team.

The web IDE is great if you want to make quick edits (or want to collaborate in real-time) but in most other cases, native editors have it beat.

Nitrous also provides file-sync tools which let you use your current editors with a cloud-based dev environment [1].

[1] [http://docs.nitrous.io/v1.0/docs/nitrous- sync](http://docs.nitrous.io/v1.0/docs/nitrous-sync)

<comment><USER3> There are 3 other reasons that I use a Web IDE now (started using Cloud9 about 9 months ago)

\- When doing client work it's much easier to show clients what you're working on at any time. Don't need to mess around with a staging server and uploading files + DB changes etc.

\- All client projects are in their own environment with their own config / env vars / DB. So say a client wants changes made 3 months down the line it's super easy to get the project back in the state it was then. On a local machine I frequently run into problems where I've updated my machine or changed config since last working with them and it takes an hour or two just to get the project going again.

\- When learning new languages can just create a new project of that type and it has everything you need ready to go. Especially useful if you have a windows machine where using NodeJS / Rails is often much more painful than it should be.

<comment><USER3> Full disclosure: I now work for Cloud9 (wish I could edit this into the above post but HN won't let me now). I wasn't asked to post these points and the reason I recently applied for a job there was because I enjoyed the product so much.

Just wanted to post about why I made the switch to an online IDE because I only realised what a time saver it was for client work after I started using it.

</comment></comment></comment><comment><USER4> No, because none of them contain the static analysis and developer tools one comes to expect from a competent IDE.

Also coding in the browser has been a miserable experience.

<comment><USER5> On both points, that is the exact opposite of my experience doing Node.js/Javascript/CSS/HTML in Cloud9IDE.

It is clear that the browser environment imposes some restrictions on what an online IDE can do (restricted hotkeys, no on-machine filesystem access). Notwithstanding that, I've come to prefer the Cloud9IDE environment over local options and love being able to pick-up where I left off as I switch between computers.

<comment><USER6> You can do that with Vim/Emacs, tmux on less than $5/mo VPS. Chrome has a pretty good SSH terminal extension.

<comment><USER5> I only program as a hobby. Cloud9IDE and other cloud services have let me build a site / service that is ranked in the top 9k globally (per Alexa) without having to fuss about this sort of thing.

There are many things I _could_ do given the time and interest. Learning everything needed to get where I am has taken lots of time that I feel is better spent providing direct value to the product and its users vs. wondering what the 'optimal' dev environment might look like.

</comment></comment></comment></comment><comment><USER7> Founder of Codenvy. There are 400K projects built on Codenvy hundreds of on- prem cloud installations. When we look through the saas project types, about 60% are Java and the rest are scripted language types. When we poll our saas users, most of them are in teams of <10 or working as individuals (students). Project types typically include student projects, web development projects, open source contributions, and virtual labs (setting up a complex dev scenario for sales, marketing or other purposes with factories).

Our on-prem customers are enterprise. So a lot of WebSphere, WebLogic, maven, ant, node, Oracle DB, SQL Server, Postgres.

We also have about a dozen OEM customers that use Eclipse Che or its derivatives to create new embedded or hosted IDEs. SAP is adopting Eclipse Che at the core for building new business applications that have dev IDE built in. IBM is doing similar work with Orion on BlueMix. WSO2 is embedding cloud IDEs into their API management servers using Che.

We try to capture real user reviews, which always help. A lot of the cloud IDEs are on these sites:

Chrome store: [https://chrome.google.com/webstore/detail/codenvy/lefigjbiim...](https://chrome.google.com/webstore/detail/codenvy/lefigjbiimiemfhjmibbgemkpenelmag?hl=en)

Stackshare: [http://stackshare.io/codenvy](http://stackshare.io/codenvy)

Slant: [http://www.slant.co/topics/713/viewpoints/3/~what-is-the- bes...](http://www.slant.co/topics/713/viewpoints/3/~what-is-the-best-cloud- ide~codenvy)

Capterra: [http://www.capterra.com/application-development- software/spo...](http://www.capterra.com/application-development- software/spotlight/140776/Codenvy%20Cloud%20IDE/Codenvy)

GetApp: [https://www.getapp.com/it-management-software/a/codenvy- deve...](https://www.getapp.com/it-management-software/a/codenvy-developer- environment-cloud/)

<comment><USER8> Just tried Codenvy with a trivial C++ "hello world" project, and couldn't figure it out. When I run it, this is what I see in the console:

        [INFO] Preparing environment to run application codejam on…
        [INFO] Starting Runner @ Thu Apr 30 13:41:36 UTC 2015
        [DOCKER] Step 0 : FROM codenvy/php56_apache2
        [DOCKER]  ---> 432686a10598
        [DOCKER] Step 1 : ENV CODENVY_APP_BIND_DIR /var/www/html
        [DOCKER]  ---> Using cache
        [DOCKER]  ---> 4d541163106e
        [DOCKER] Step 2 : VOLUME /var/www/html
        [DOCKER]  ---> Using cache
        [DOCKER]  ---> d5c4065956b6
        [DOCKER] Successfully built d5c4065956b6
        [INFO] Environment preparation done. Application codejam starting up…
        [STDOUT] Starting web server: apache2.
        [STDOUT] ==> /var/log/apache2/access.log <==
        [STDOUT]
        [STDOUT] ==> /var/log/apache2/error.log <==
        [STDOUT] [Thu Apr 30 13:41:39.272766 2015] [mpm_prefork:notice] [pid 500] AH00163: Apache/2.4.10 (Debian) configured -- resuming normal operations
        [STDOUT] [Thu Apr 30 13:41:39.272825 2015] [core:notice] [pid 500] AH00094: Command line: '/usr/sbin/apache2'
        [INFO] Application codejam booted and reachable.
        [STDOUT]
        [STDOUT] ==> /var/log/apache2/access.log <==
        [STDOUT] 10.13.176.166 - - [30/Apr/2015:13:41:40 +0000] "HEAD / HTTP/1.1" 200 183 "-" "Java/1.7.0_71"

No program output.

<comment><USER7> Sorry you ran into an issue. It looks like the machine that you grabbed to run your project on is one that is attempting to launch an Apache server. So, given your c++ project, you probably need another machine to launch.

If you cross-post your question at the Google group, an engineer will help you investigate. I sure hope this wasn't the machine from the C++ sample project -- that would be a silly mistake on our part!

[https://groups.google.com/a/codenvy.com/forum/#!forum/codenv...](https://groups.google.com/a/codenvy.com/forum/#!forum/codenvy)

Tyler

</comment></comment></comment><comment><USER9> I have one pretty big project on Cloud9. The main reason is that I can assist designer whenever he needs any help.

At the beginning when everything moved around a lot it was just time-consuming to give him instruction on how to update to newer version. We kept everything on there and it is working pretty well for us.

I do most of development locally but sometimes when I am away and need something quick I do it over C9.

</comment><comment><USER10> I built a decent sized Meteor app a while ago on Nitrous, but started running out of memory on their free tier after a while. I recently switched to Codeanywhere, which I'm still evaluating. My main reason for using a cloud IDE is because I am a Windows user and I wanted to build something on the latest version of Meteor without needing to start up a Linux VM or Vagrant box.

<comment><USER11> Meteor works on Windows now.

[https://win.meteor.com/](https://win.meteor.com/)

</comment></comment><comment><USER12> I got into C9 to develop on a Chromebook but found it simple and functional enough to use in general. I only use it with remote servers so the size of the project doesn't really matter. It might if you want to collaborate with a bunch of people all live editing through C9's collaboration feature, but I haven't tested that.

The only other downside is that it requires you to install a bunch of deps and an outdated version of Node.js on whatever remote server you connect it to. I wish they'd make some of that optional.

</comment><comment><USER13> Yup, I have Cloud9 installed locally on my own server. All my coding is done through it. Fast, easily accessible over VPN, and complete control. Love having multiple terminals open right up on my server in the IDE and just flip through them using tabs.

<comment><USER14> This looks great, it could be a good tool for setting up dev environments for student interns. Not sure how well the C++ is. Their documentation [1] doesn't list how to install privately, nor is the pricing for private setups clear.

Could you share how you set this up, and how much it costs?

[https://docs.c9.io/v1.0/docs/picking-a- plan](https://docs.c9.io/v1.0/docs/picking-a-plan)

<comment><USER15> Why would you use anything other than "standard" dev environments for student interns?

You've probably ironed out many kinks in your dev environment, and can help them when they run into them. You run risks at alienating your interns with un-manageable errors.

<comment><USER14> You answered it yourself

> can help them when they run into them

I previously had a big reduction in questions regarding version control once I setup GitLab running on our server and a simple tutorial wiki page. We also don't have enough computers for all the interns, but have a powerful number crunching machine. We do engineering work, some students have only used MatLab. A webpage would be much easier to setup, and less hassle for me.

</comment></comment></comment></comment><comment><USER16> Not _most_, but I do a decent amount of development through Cloud9 on a Chromebook. I'd intended to install Ubuntu on it, but actually because of C9 I've not needed to. It's also proven invaluable for assisting people; the ability to spin up a fresh new C9 VM to collaboratively debug a project has been very useful.

</comment><comment><USER17> The Pebble Web IDE is actually really pretty good! I generally don't use them, but for Pebble it was easier, as it offers direct deployment, complication toolchain etc.

<comment><USER18> I really like their UI and deploying over the web - that was like magic. But I was having a weird issue with loading images in Pebble.JS at first. I came back a week later and the image load worked just fine under the same conditions. They're still in early stages, but it's an awesome platform.

</comment></comment><comment><USER5> Plunker ([http://plnkr.co](http://plnkr.co)) is a site in the top 9k globally (per Alexa) and was developed exclusively in Cloud9IDE ([http://c9.io](http://c9.io)).

I have several computers that I use at different times and being able to switch computers without friction has been the a major boon to productivity. I also _love_ the IDE itself. For someone doing node.js work (in pure javascript), the built-in tools are fantastic.

EDIT: Other relevant fact is that this is all hobby development work as I am not a professional programmer. As such, I have never had the time or motivation to really create a custom dev environment of my own. Cloud9IDE gives me a great setup without any tweaking needed.

</comment><comment><USER19> All coding, note taking, writing, and drawing happens in Lively Web ([http://lively-web.org](http://lively-web.org)) for me. It comes with a shell and nodejs integration as well as a websocket-based messaging systems that allows to integrate all sorts of different backends, e.g. Clojure ([https://cloxp.github.io](https://cloxp.github.io)).

</comment><comment><USER20> FPComplete built a web IDE for Haskell development but recently decided to open-source the backend and focus on tools instead: [https://www.fpcomplete.com/blog/2015/04/future-of-soh- fphc](https://www.fpcomplete.com/blog/2015/04/future-of-soh-fphc)

<comment><USER21> +1 The FPComplete web based Haskell web IDE is very good.

I worked at Google for a while in 2013 and they had an awesome web IDE named Cider. I wonder if that is still in use internally at Google.

</comment></comment><comment><USER22> I am using cloud9 web IDE for all my projects. I am a full stack web developer and I use it daily. I never used actively their vm feature but I connect through ssh all my development servers on cloud9 so I can easily manage my projects from any computer. I am very satisfied by their service and there is no turning back now.

</comment><comment><USER23> I use the SageMathCloud mathematics-oriented web-IDE for all of my development work. (I'm the lead developer of SageMathCloud.)

</comment><comment><USER24> Been IntelliJ Idea (or Webstorm) for years now. The excellent Git integration and diff tool is really useful

<comment><USER25> That's not a web ide. :-)

<comment><USER26> Maybe he thought we are talking about IDE for web development. :P

<comment><USER27> The title is not very clear. I only knew it meant web _based_ IDEs as it mentions Cloud9. I can see why some may think it is a question about modern day Dreamweaver.

</comment></comment></comment></comment><comment><USER28> I used Cloud9 while doing Hartl's Rails tutorial and was very impressed. Would probably use it for my personal projects if I was on Windows.

</comment><comment><USER29> IPython notebooks run in the browser, but (usually) don't use a remote server.

This medium - html/js - is great for analysis work with lots of image- processing/plotting/reporting, etc. but very difficult to build out a full app in it because it lacks any of the normal IDE find and refactor tools. Also, the .ipynb file storage format tends to obscure finding code within directories.

</comment><comment><USER30> At our office a lot of the development takes place on computers not connected to the internet, on a separate network. I installed Codiad ([http://codiad.com/](http://codiad.com/)) on our dev server a year or so back. Recently it has taken off and a couple other guys are using it. I've slowly migrated from Eclipse + Remote Systems Explorer to Codiad.

Super easy to install (its all php based, very few dependencies), and for the most part "just works".

I have codiad open in the browser and usually a PuTTy window open on the server to test, run command line, etc.

We have Linux(Ubuntu) servers and a mix of OSX / Windows dev machines. Keeping Eclipse working across all of them was annoying (and explaining how to setup when a new Developer comes in). Now I just create a Codiad account, a ssh account and let them have at it.

I went down the path of attempting an "offline install" of Cloud9, but gave up after a while...it mostly assumes you have an active internet connection.

<comment><USER3> How long ago did you attempt to install Cloud9? It's recently been updated (~2 months ago) to the new V3 which is much easier to install and run offline ([https://github.com/c9/core](https://github.com/c9/core))

</comment></comment><comment><USER31> I work primarily in Clojure and Python. I haven't found anything that lets me interact with project/virtualenv repls yet, let alone have reasonable completion/documentation lookup. I use crouton from my pixel2 so I can run spacemacs. I'd be open to suggestions.

<comment><USER21> I have used nitrous.io for some Clojure work (and Ruby and Node) and you have as many terminal windows open on an instance as you want.

</comment></comment><comment><USER32> I've used Cloud9, Nitrous, and currently messing around with Codenvy, and a few others that were very lacking. My favorite so far is Cloud9, which has a ton of useful features. Nitrous is second but lacking features such as code beautify which is annoying.

</comment><comment><USER33> I've used Cloud9 completely to make drumroll.io. Very impressed for Node.js projects.

</comment><comment><USER34> I used Koding.com and c9.io extensively but got really frustrated when they were down or slow due to high usage, so just got my own $5/mo box and began doing it there.

I use [codebox]([https://github.com/CodeboxIDE/codebox](https://github.com/CodeboxIDE/codebox)) on a digital ocean droplet for nearly all my development. It's a simple-to- install node app, though it's not being actively developed from what I can tell so I'd really like to switch to a local install of cloud9.

</comment><comment><USER35> I always found the cloud IDE's hard to work with. Mostly because of speed, and mostly because they are forcing all the tools (terminal, editor, etc) to live in one browser window.

</comment><comment><USER36> I used terminal.com the past few weeks. It had a couple quirks that were easy to get used to. It was stable until this last weekend where it was very slow and timing out the entire weekend. Sent them a tweet and support email on Saturday, they finally tweeted me back on Tuesday. Kind of frustrating but it is a fairly new service. I'm hoping that services such as Nitrous and C9 are much more stable since they've been around a bit longer. I guess I'll find out...

<comment><USER37> Terminal is neat, but I've had my instance fail to start twice and I never got a response from firstname.lastname@example.com. Ended up having to wait a few days each time for it to start working again.

</comment></comment><comment><USER38> You can check some [http://www.codenvy.com](http://www.codenvy.com) user reviews (more than 400) on Google Chrome store [https://chrome.google.com/webstore/detail/codenvy/lefigjbiim...](https://chrome.google.com/webstore/detail/codenvy/lefigjbiimiemfhjmibbgemkpenelmag/reviews)

</comment><comment><USER39> I often use Jetbrains IDEs, currently using PHP Storm almost exclusivel. I love it's code refactoring, easy source code navigation to delarations.

<comment><USER40> i too enjoy using jetbrains' products.

</comment></comment><comment><USER41> I'm not a developer; the closest I get is managing a few web servers for clients on the side. That said, if I were I'd spin up a Vultr or Dropbox instance and use something like Codiad[1], that way I could have complete control of the back end.

[1] [http://codiad.com/](http://codiad.com/)

</comment><comment><USER42> So far I've stuck to Eclipse, but I wonder about using one for Scala.js (which I'm planning on using for my next personal project) just because of the toolchain and because it seems like it could make the edit-test cycle shorter. Is there anything out there with integrated Scala.js support?

</comment><comment><USER43> I used Cloud9 for a while. The lag from typing on my keyboard to showing up on my screen became pronounced that I stopped using the service. I was on the free tier. I can see the appeal, but the execution of this service was too poor for me to use. Perhaps in the future I'll try again.

<comment><USER44> Was this log in terminal or in editor? While there is some lag in terminal because of network latency (same as with normal ssh connection), i never saw any lag in the editor, so it must be some bug triggered by specific browser/os version, did you try contacting their support about this?

</comment></comment><comment><USER45> The only one I've tried is the mbed development tools. Easy to import libraries and built in version control.

I'm not sure how good it would be for a big project but it's been a pleasant experience with the few small programs I've written on it so far.

</comment><comment><USER46> Due to Internet connection issues I can't use a cloud IDEs. However, I think [https://cloudpebble.net/](https://cloudpebble.net/) is one of most populars.

Wish they support VIM keybindings as well.

</comment><comment><USER47> I use VIM. You can read my configuration here: [http://omarabid.com/my-vim- configuration/](http://omarabid.com/my-vim-configuration/)

<comment><USER48> Meanwhile, back on topic, has anyone here tried Vim.js? It's the full, real vim. But, I'm interested in how well a vim expert thinks it works.

[http://coolwanglu.github.io/vim.js/streamlinejs/vim.html](http://coolwanglu.github.io/vim.js/streamlinejs/vim.html)

</comment></comment><comment><USER49> What I like with Codenvy is the native support of Docker Also now with meter based pricing, I only pay for what I use and most of the time the free tier is enough for my personal work

</comment><comment><USER50> We have a few web2py projects at work and I find that the built in IDE/debugger works just fine and is less of a hassle than Pycharm although a lot less robust as well.

</comment><comment><USER51> Yeah I can edit files over FTP from CPanel. Works awesome, guys.

</comment><comment><USER52> Ok really dumb question. How do they see your local files?

<comment><USER53> Or how do you run your app unless it's a front-end app? Just in isolated virtual environments?

<comment><USER3> Yea Cloud9 gives you a virtual container (with root access too) that you can run anything in just like you would on your local machine.

</comment></comment></comment><comment><USER54> If I ever find myself on a job where I have to drive a remote Unix box with a fucking Web browser instead of xterm+ssh, I will not work there long.

<comment><USER55> Cool man. Good to know.

</comment></comment><comment><USER56> Any of these WEB IDEs support TypeScript? Thanks.

</comment><comment><USER57> I use "codenvy.com" for java developing and deploying simple java web- applications in cloud

</comment><comment><USER58> codenvy.com - because java. there is full java support, navigate, autocomplete, outline and even java debugger.

</comment><comment><USER59> really like cloud9, I can test stuffs fast. But I'll be moving to vagrant + docker soon.</comment>


Menlo Park Police used city funds to taxi homeless woman to SF - <AUTHOR> https://www.almanacnews.com/news/2019/11/08/police-used-city-funds-to-taxi-homeless-woman-to-sf <comment><USER2> Worth highlighting, probably:

> As for why he intervened in the first place, he emphasized, "She wasn't > doing anything illegal whatsoever."

> All he could do, he said, is ask her not to store her property near the > business. He said Anderson told him that she wanted to go to San Francisco, > and he made that happen. It was a "good faith effort to help her get > somewhere she wanted to, just like we would for any other person," he added.

Sounds as well like the city allows for some degree of discretionary spending in situations like these. Of course, it can be not a great look, given the history of shipping of undesirable types to other jurisdictions.

<comment><USER3> I think your missing an important detail here. She didn't say she wanted to go to San Francisco.

"she was told that she couldn't remain where she was and was asked where she would go if she could go anywhere other than Menlo Park. She said she recalled that at Ocean Beach there was someplace to wash her hair, so she said she'd go there."

Turning that into "She wanted to go to San Francisco" is disingenuous.

<comment><USER2> Thanks, that's important context for sure.</comment></comment></comment>


WebGL in Web Workers - <AUTHOR> https://blog.mozilla.org/research/2014/07/22/webgl-in-web-workers-today-and-faster-than-expected/ <comment><USER2> Some more background info why this project might be an important proof of concept, because it may allow to move a game's main loop into a web worker:

In a browser environment (and other event driven platforms like iOS or Android) it is usually a bad idea to block the main thread (aka UI/browser/event thread) for more then a couple dozen milliseconds because the application would feel unresponsive. If the blocking goes on for seconds, the application will be terminated by the operating system or browser. For a game this means that the game 'cannot own the game loop' like on game consoles or Windows, instead all execution must happen in small per-frame-slices.

As a workaround it is a good idea to move the actual game loop into a thread, and keep the main/UI/browser thread free for UI/input event handling, and other stuff that needs to happen on the app's main thread (varies by platform, in the browser, calls to WebGL currently must happen on the main thread).

In emscripten this was difficult to implement because WebWorkers have a different threading model then traditional 'pthreads' (or may be it was always possible but no-one dared going there). Alon's work may show that it is feasable also in JS+WebGL to move the main loop into a worker thread (I haven't read the code yet whether the worker can actually run completely decoupled from the main thread).

Before Google Native Client was able to call GL from threads I implemented something similar (wrap all GL function calls and write them to a command buffer, and then on the main thread read the command buffer and issue the calls to GL). It worked but I wasn't very happy with it because: all GL calls which return a result would stall the producer thread, and GL is very chatty/verbose, lots of very small calls (e.g. glVertexAttribPointer, glUniform...), and each call now had some tiny additional overhead. In the end I wrote an engine-specific message protocol which was more abstract, thus reducing the number of commands drastically (by 10x or so). But the latency problem is still there (for instance in Chrome, all WebGL calls are encoded again into a command buffer, and decoded in another process), so in my current experimental/minimalistic 3D engine I'm back to not doing any threading at all (good for latency, bad for making use of available CPU resources).

</comment><comment><USER3> what would also be nice is shared read-only Canvas, etc. available in Web Workers so image processing (specifically analysis steps) can be paralellized without copying the entire canvas (or parts of it) through message passing.

<comment><USER4> If you use Web Workers, you are going to have to use message passing. There is no other way to communicate with a Worker. There are no truly shared objects between js threads.

However, it is still possible to post binary data to a worker and back again without making a copy of it, by using Transferable Objects [1].

You simply have to provide an array of the arraybuffers to move as the second paramter to postMessage(). The caveat is that the data is no longer available to the posting thread after the postMessage call (TypedArray length will be zero).

[1] [http://updates.html5rocks.com/2011/12/Transferable- Objects-L...](http://updates.html5rocks.com/2011/12/Transferable-Objects- Lightning-Fast)

<comment><USER3> i'm aware of transferable objects, but it really defeats the purpose of parallelizing analysis of the same thing if that thing becomes unavailable to read after transfer. it would be great to just tell a worker to read a specific bounding box from an existing canvas without having to give up the canvas entirely or copying the bounding box contents into it.

<comment><USER4> Yeah, that would be awesome. Probably not going to happen with actual DOM objects anytime soon.

</comment></comment></comment></comment><comment><USER5> noooooo

It's seriously like the web folks are discovering all of the sad mistakes we ran into in native graphics like a decade ago.

Threading in OpenGL is subgood--you have to be fairly clever (and lucky with drivers) to do anything useful.

<comment><USER2> This solution isn't talking to GL from different threads, instead it builds a command list on one thread, for the 'render thread' (here: actually the main thread) to consume. Only one thread creates and talks to the GL context.

<comment><USER5> Correct, which is exactly what's wrong with it.

Having a dedicated thread for rendering isn't bad, but using the (already likely overloaded) main event thread for a website instead of being able to spawn a dedicated WebGL thread is bad--being unable to easily handle image loading and shader compilation and whatnot is worse.

Also, WebGL could've finally fixed the broken shader compilation model on GL, but didn't--why do we still have to compile shaders every time?

<comment><USER2> I think whether this is good or bad actually depends on the WebGL implementation. In Chrome for instance, the actual GL rendering already happens in a separate process, and the main thread only writes to a command buffer, which is already as cheap as it gets (but may increase latency).

As for the shader compilation, I guess there's just as many argument for as against a DirectX-style byte code model, and the situation in the GL world is more complicated because GPU vendors have more freedom (to introduce their own GLSL extensions for instance). GL implementations already do a lot of under- the-hood magic to hide the parsing and compilation overhead, like caching compiled shaders, deferring shader compilation, and compiling shaders in a separate thread (not necessarily WebGL implementations, but they're free to). I'm not saying this is perfect, or preferable over a byte code model, but it's not 'broken'.

</comment></comment></comment></comment><comment><USER6> This is quite lame.

</comment><comment><USER7> webgl webgl, webgl! webgl? webgl.

</comment><comment><USER8> Does it achieve parity with native code?

<comment><USER2> In general, WebGL can't be as efficient as a good native implementation because it has to do more validation for security reasons. However, the quality of OpenGL drivers differs so much in the real world across vendors and operating systems, that the difference to WebGL is lost in the noise (e.g. a WebGL app on Windows can be close to a native GL app on OSX, I'm not even joking).

<comment><USER8> I know. It remains to be seen if WebGL won't join VRML in a few years.

<comment><USER9> How do you see that happening?

The WebGL standard is supported in all major browsers, including Internet Explorer, Safari on iOS, and Chrome and Firefox on Android.

<comment><USER8> And most stuff I see done with it reminds me of late 90's games, while driving my fan full speed.

Only a few selected mobile devices are able to run WebGL. Those that do, have a tendency to drain the battery quite fast.

<comment><USER10> It's not so much a question of which device, but which browser. Chrome and Firefox provide WebGL well for Android, and once i0S 8 comes into the fold support will be pretty widespread.

       http://caniuse.com/webgl

WebGL is a presentation of OpenGL through the browser, so we leverage an existing skill set with an existing API. This is dramatically different from the case with VRML.

I, and a few others, use it for leading edge instructional design. [http://www.vizitsolutions.com/portfolio/gausslaw/](http://www.vizitsolutions.com/portfolio/gausslaw/)

<comment><USER8> > Chrome and Firefox provide WebGL well for Android

Most users stick to their system browsers.

Chrome still hides WebGL behind flags in devices that don't have any problem doing OpenGL ES 3.0.

> i0S 8 comes into the fold support will be pretty widespread.

In countries where the average income is above 400€.</comment></comment></comment></comment></comment></comment></comment>


IDEA: A series of nonverbal algorithm assembly instructions - <AUTHOR> https://idea-instructions.com <comment><USER2> As a visual learner (even when learning a new word or the name of a new acquaintance, I must _picture_ how the letters look standing next to each other, like a little painting, or I do not remember it), I actually find this way of learning an algorithm fun and engaging - it's what I end up having to do in my head anyway, and I may not picture the system as correctly as the instructors who drew up these instructions - which will inevitably lead to a TA telling me how I have the "wrong intuition" about a particular theorem when I seek help...

I just understood Fleury's algorithm in about 5 minutes - I cannot tell you how fast and revolutionary that is for me.

</comment><comment><USER3> While it's an interesting idea, these are confusing to understand even for someone who knows these concepts.

<comment><USER4> It seems possible that having to puzzle them out makes it an effective way to learn, at least if you can stand to.

</comment></comment><comment><USER5> I think the idea can work, however the execution is still far from perfect.

Just on the binary search for example, the "balance" representation is re-used to signify the concept of "comparison", however the tokens put in balance are both of the same size, with only an image to differentiate them. So the link is not implicitly made from their size, weight, and the intrinsic feature which makes the one searched token the right one. This would be confusing for anyone trying to understand the algorithm.

Then, you got a first depiction of the problem, with each object being ordered by size. So the initial assumption is that the choice element would be on their size. Afterward, the target token has a star on it, and the generic, incorrect one, a question mark.

That could work, however, they both have the exact same size.

This is only an example of how the concepts used to explain and signify things visually are only partially followed-through. This greatly impairs the impact of the explanation.

And this is only on the binary search, arguably the simplest algorithm depicted here.

</comment><comment><USER6> I found these confusing myself, but I would be interested to know if anyone else who didn't understand these algorithms before was able to learn them based on these diagrams?

</comment><comment><USER7> Excellent use of visual metaphor. But comprehension can be greatly improved with:

1\. Some textual callouts 2\. Better representation of the sequence the reader is to follow

</comment><comment><USER8> Cute! This reminds me of Nigel Holmes' "Wordless Diagrams".

</comment><comment><USER9> The crying figure is super sad!</comment>


Ask HN: How to visit Google HQ? - <AUTHOR>

Hello HNers. I am visiting in San Jose for the weekend to visit my brother, and I would love to tour Google during my visit. I've searched a bit and found that they're not too fond of unannounced visitors, so I was hoping you could help. Does anyone either: work at Google and willing to give us a quick tour, or know of a way to visit their headquarters without being too much of a headache for them? I appreciate any help. <comment><USER2> On a related note, don't forget to visit the Computer History Museum if you're in the area (might be a good alternative if your Google plans fall through) Hope they still have the difference engine on display.

<comment><USER3> I'd even argue the Computer History Museum is more interesting than Google. Over 100 years of computing machines, free tours, interactive exhibits and a lot more.

I've interviewed at Google a few times and eat lunch there every week or two. Great campus, but not exactly something that I think people should push for touring when they're in SV.

A few other awesome nerd things to see/do:

* Winchester Mystery House <http://www.winchestermysteryhouse.com/index.cfm>

* California Academy of Sciences <http://www.calacademy.org/>

* USS Hornet <http://www.uss-hornet.org/>

* Fry's <http://www.frys.com/>

Or visit Mozilla (I work there ;) )

</comment></comment><comment><USER4> Isn't it just like any other office?

I work in a small FM radio station and we quite frequently get visits from listeners, both on request and unannounced.

I'm not sure what sort of showbiz glitz and glamour they're expecting; apart from one room with a few microphones and a mixing desk in it, it's just a few fairly dull offices in an old house, with computers and desks and papers lying around. People often leave feeling a little disenchanted after we've made them a terrible cup of tea. They come thinking they're going to get a "tour", said tour lasts about 10 minutes if you stretch it out, awkwardness all round. We're happy to meet our listeners, they're why we exist, but there's just not all that much to _see_.

I can imagine Google being similar; people wanting to visit because it's Google but then being greeted by an office block not dissimilar to where they themselves work. I'm sure there are more interesting places in the area! I wouldn't, for instance, put my bank's head office on the list of places to visit in Edinburgh...

<comment><USER5> You definitely need a visit to Google HQ to understand what the hype is about. Definitely not run of the mill office spaces (ok referring more to the campus than the cubicles)

<comment><USER6> I visited their HQ and while it's true that they're not run of the mill office spaces, it's not that big of a deal either. It's old news by now that they have gyms on campus, CS problems in the bathroom stalls, and bright colors everywhere so there's really nothing to be surprised or impressed about. In fact I thought the Yahoo! campus was actually much nicer and better maintained.

The one thing that was awesome at G was the food (free), so if you do manage to get in make sure you eat all you can!

</comment></comment></comment><comment><USER7> This might be a long shot, timing-wise, but the Silicon Valley Google Technology Users Group (like a Google fan club for developers) meets at the Googleplex once-a-month; their information is on meetup.com.

<comment><AUTHOR> _"The Silicon Valley Google Technology User Group meets on the first Wednesday of the month at the GooglePlex in Mountain View."_

Thanks anyways. Good to know I could do that some other time.

</comment></comment><comment><USER8> I did visit the Googleplex last summer. Basically, find a Googler to invite you ;) He/she will make you visit it and you may even have diner at one of their cafeterias. They have a merch store on site by the way.

Otherwise, you shouldn't have problems walking around the volleyball field and the dinosaur without an invitation, just don't look too suspicious. The Google Security guys watched me from their SUVs as I was walking near the campus with my 65 liters backpack and day pack.

Mozilla is across the street. I went inside but all I could find was an empty room with another door and a magnetic card reader, so I couldn't visit.

The Computer History Museum is a 10-15 minutes walk from the Googleplex. There is also a movie theater in proximity.

</comment><comment><USER9> Become friends with a Googler, get invited by Googler friend. (At least, they allowed this back in 2005.)

<comment><USER10> I believe finding a googler to show him around is the precise purpose of this post.</comment></comment>


Go and Swift take another step up the programming language ladder - <AUTHOR> https://medium.com/backchannel/my-computer-language-is-better-than-yours-58d9c9523644 <comment><USER2> Syntax is by far the least interesting thing about any new programming language, but they spend paragraphs talking about braces and semicolons.

And the conclusions are bizarre and uninformed:

> When Sun rolled out Java in 1995, everyone thought it would be a dandy tool > for building browser applets that made images dance, yet its destiny was > mostly server-side.

Uhhh... what? Sun pushed for Java for _everything_, and they were hugely successful in doing so.

> For developers, then, choosing a language is like choosing citizenship in a > country. You're not only buying into syntax and semantics. You're buying > into economics and culture, the rules that shape how you earn your > livelihood and the forces that channel your hopes and dreams.

Learning a language is nothing like choosing citizenship. You can learn and use many languages in parallel. Most programmers do.

This article is not good.

<comment><USER3> > > When Sun rolled out Java in 1995, everyone thought it would be a dandy > tool for building browser applets that made images dance, yet its destiny > was mostly server-side.

> Uhhh... what? Sun pushed for Java for _everything_, and they were hugely > successful in doing so.

IIRC, Sun _initially_ was thinking of Java for embedded systems. But garbage- collected embedded systems weren't going to fly in 1995 - the GC latency would be too long.

True, Sun tried to push Java everywhere. But where did it wind up? "Mostly server-side" seems like a valid statement. Yeah, it could run in the browser. Yeah, it could run on your desktop. But there weren't tons of Java desktop apps that I can recall, and it kind of lost out on the browser. So, mostly server-side.

<comment><USER2> > But where did it wind up?

In most enterprise stacks, and powering all the apps on the majority of the world's smartphones (Android).

</comment></comment></comment><comment><USER4> This mistake happens a lot: Go is not a "Google" language in the sense of corporate ownership. Development is sponsored by Google, but control is left in the community.

This is on the opposite end of the spectrum from Swift which is controlled by Apple, which is not necessarily a bad thing depending on your perspective.

<comment><USER5> The article doesn't say that.

However, Go did originate at Google and the points the article makes about it having been designed to solve specific problems at Google are all true. It was not originally intended to be a widely-used general-purpose language: it just happened to catch on after it was released publicly.

Furthermore, the most significant contributors to the language design and its evolution (Rob Pike, Russ Cox, Andrew Gerrand, Brad Fitzpatrick, etc.) are all employed by Google.

It's not at all unfair or misleading to call it "Google's" in the way the article does.

<comment><USER6> Go, as it stands, is intended for getting good performance in server-side applications. There's good support for huge numbers of simultaneous network connections, and no standard GUI support. Google needed something; C++ has too many memory problems and Python is too slow.

Facebook uses PHP for much of their server-side stuff. They did a PHP compiler to make that tolerably fast.

Mozilla's Rust has potential, but I'm not convinced they have the "owning" logic right. Supposedly 10% of the code in Servo, their browser renderer, is "unsafe". That's far too high. They've had their first good big idea, but I think they're one or two key concepts short of definitively solving the problem of memory safety without garbage collection.

Swift I don't know about.

Interestingly, these are all hard-compiled languages. Most of the "flexibility" of scripting languages has been removed. It seems that the one scripting language feature programmers really wanted type inference for local variables. That's a feature of Go, Swift, Rust, and PHP. Even C++ has that now, with "auto". (Writing iterator type declarations in C++ FOR statements was a huge pain.) It's almost better if function parameters have hard types; you can look at the function definition and see what it wants. Python and JavaScript leave you wondering "what type is parameter 3 supposed to be, anyway?"

There's some syntactic convergence, too. Go, Rust, and Swift all use C-type brackets. Python indentation style control structure didn't catch on. We're also converging on "name: type", instead of C's "type name" form. That was a design mistake in C; the language became context-sensitive when "typedef" was added and the compiler had to known which words were type names. Where to put semicolons, though, is not converging.

<comment><USER7> _" It seems that the one scripting language feature programmers really wanted type inference for local variables."_

Other features that I would put in that category:

\- string interpolation

\- a repl-like environment (fast startup, interactive, not requiring one to define a function or class to get some output)

\- convenient syntax for initializing arrays and hashes

\- generics as a most-of-the-time substitute for weak typing

<comment><USER6> There is convergence on hashed dictionaries as a basic type, and syntax for subarrays. Generics are still up in the air. Templates got so complex in C++ that they ate the language. Go avoids generics, but that leads to over-use of the any type ("interface{}" in Go) and reflection. Rust is somewhere in between.

A REPL environment is more of a tool chain issue than a language design issue.

<comment><USER7> _" A REPL environment is more of a tool chain issue than a language design issue."_

Moreof, maybe, but it is language design, too. If you had a Java REPL, you still would have to type quite a bit of stuff (a class and a function) before you would have your "Hello, world".

Yes, you could add an implicit class named GLOBAL that magically gets a property named 'P' the moment you type

       P = "Hello, world";

but I would call that doing language redesign.

<comment><USER8> Actually, I really enjoy using Groovy as a Java REPL, when having to use Java. Your code is run in a Script class

Most java code is valid Groovy code and it has some nice dynamic features, syntax sugar and has closures. I am currently using it to hack together a small DSL to easily configure a transformation from XML -> CSV

Here's an example of a Groovy session (From my instance of IntelliJ IDEA through Tools -> Groovy Console)

      > P = "Hello world!"
      Hello world!
      > sub = P.substring(5)
      world!
      > sub ==~ / wo.+/ ? println("World") : {}()
      World

<comment><USER9> > Most java code is valid Groovy code

Up to Java 7 you could say "most" but why not "all"? Was it too difficult to test full compatibility? Why is the == slightly different between Java and Groovy, and the rest of the little differences which only confuse? And as for your example it doesn't look in the slightest like Java...

        P = "Hello world!"
        sub = P.substring(5)
        sub ==~ / wo.+/ ? println("World") : {}()

Why wasn't Groovy updated so most java 8 code is also valid Groovy code? And why didn't you actually post some code to do something useful like "configure a transformation from XML -> CSV" instead of creating a HN login to post a meaningless syntax sample?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I see this and I just think of the Joe Armstrong post on education.

[http://erlang.org/pipermail/erlang- questions/2013-January/07...](http://erlang.org/pipermail/erlang- questions/2013-January/071944.html)

So many languages to choose from; so much fragmentation while we are already experiencing a shortage of developers.

I appreciate that Apple made something available other than Objective-C. I've done my share of it and personally I don't think it's a bad language, but the foreign syntax makes it less approachable to some. The sandbox mode in Xcode with Swift is great too.

I just wish that instead of suffering from "Not Invented Here" syndrome that they would have chosen something that already exists. Ruby, Python, Lua, Scala, Clojure. There are so many choices, can't at least one fit the bill?

<comment><USER11> I get this argument for any other company.

But at this point Apple has gone to great lengths to control the entire toolchain from the OS to the compiler to the chips that run the instructions the compiler produces.

It'd seem odd if they didn't go with something home-grown as their language of choice.

<comment><USER12> But it would be better for a lot of developers who don't want to spend a lot of time learning ObjC just for iPhones. It might also have been a safer choice for Apple since they now are in a bit of a danger if iPhone and iPad sales goes down. Then the number of developer learning their languages might fall fast and then the app ecosystem might start to fall too.

</comment></comment></comment><comment><USER13> No mention of Rust, which I think ought to have been a natural addition to the article?

<comment><USER14> It's hard to imagine how they would go from discussing the conundrums of whether-to-use-braces-or-indentation, to discussing the merits of efficiency + memory safety.

Though I guess they could have chosen to bring up the peculiar meaning of the semicolon in Rust.

<comment><USER15> The semicolon as a statement separator is such a lovely thing that it would be hard to imagine Rust without it. It's sad to see that Swift and Go have gone with a statement based approach as opposed to emphasizing the composition of expressions. They feel very clunky in comparison.

<comment><USER6> _The semicolon as a statement separator is such a lovely thing..._

That particular convention goes back to ALGOL-58. In ALGOL-58, semicolon is a statement separator. See page 14 of the ALGOL-58 report:

[http://www.softwarepreservation.org/projects/ALGOL/report/Al...](http://www.softwarepreservation.org/projects/ALGOL/report/Algol58_preliminary_report_CACM.pdf)

C goes the other way, with semicolon as a statement terminator. 56 years after ALGOL-58, we still don't have convergence on this. Wikipedia has a table:

[https://en.wikipedia.org/wiki/Comparison_of_programming_lang...](https://en.wikipedia.org/wiki/Comparison_of_programming_languages_%28syntax%29#Statements)

<comment><USER15> Oh interesting, I didn't know that ALGOL had that. Looking through the Wikipedia pages, it seems that Rust most likely gained it via the ALGOL->ISWIM->ML->Ocaml->Rust route. I hope it catches on in more imperative languages in the future. After using it for a while, statement terminated syntax feels so clunky in comparison. I love being able to break out into a block like:

        let foo = {
            /* do stuff */;
            some_expression
        };

</comment></comment></comment></comment></comment><comment><USER16>
        > Google's Go is structured to simplify the work of making
        > code run "concurrently," smoothing the way for
        > programmers to create and juggle portions of a program
        > that execute simultaneously — and thus take full
        > advantage of today's multicore chips and multiprocessor
        > machines.

It's a while since I last checked out Go but I thought Goroutines were coroutines and therefore confined to a single core. Does Go provide means for true concurrency nowadays?

<comment><USER17> Go has supported "true" concurrency (distributing goroutines across cores) since at least version 1.0, and probably earlier.

<comment><USER2> At least since the public release in November 2009.

</comment></comment></comment><comment><USER18> I really enjoyed that he explained things like code compilation in a super simplified style, but assumes the reader is familiar with the poetic style of John Milton.

</comment><comment><USER19> Python, Ruby, and Perl were developed by individuals, not companies. I think the article's reasoning is flawed.

</comment><comment><USER20> Swift is a much better language than PHP and Javascript, which the author compares it with. I don't think he's actually used any of the languages he's talking about.

</comment><comment><USER21> I'm not sure why he thinks this is a new thing, most widely popular languages came out of big giant monopolies, like AT&T and C, not to mention UNIX.

<comment><USER15> From the article:

> There's nothing terribly new about spawning programming languages at large > technology businesses. The dominant languages of the mainframe computer era > had similar origins [..]

Please read the whole thing before you post critiques regarding omissions.

</comment></comment><comment><USER14> This article seems to be written for non-programmers.

</comment><comment><USER22> Swift is a bluff, come fucking on. The only real advantage: it's more pleasant to the eye than Obj-C (which wasn't hard)

And Go is nice, but I rather use Rust a thousand times.

<comment><USER23> > And Go is nice, but I rather use Rust a thousand times.

Two different languages for two different purposes</comment></comment>


Two weeks before death, Hawking submitted a paper on parallel universes - <AUTHOR> https://www.sciencealert.com/stephen-hawking-submitted-a-paper-on-parallel-universes-just-before-he-died <comment><USER2> Something I've never understood and would greatly appreciate understanding: could someone ELI"5" how the concept of "parallel universes" will not always be a metaphysical instead of a scientific question?

If there are truly separate "universes", then by definition wouldn't it be the case that there would be no way to test (or falsify) whether they exist or not, so would the question of their existence not be in the realm of philosophy and metaphysics rather than the sciences? What am I missing (I assume it has to do with my understanding of the word "universe")?

<comment><USER3> >If there are truly separate "universes", then by definition wouldn't it be the case that there would be no way to test (or falsify) whether they exist or not

This literally contradicts what the first paragraph of the article. It says that this paper "lays the theoretical groundwork for discovering a parallel universe". If you've discovered it, you've tested and proved that it exists.

Furthermore, the article states that it's a "mathematical paper which seeks proof of the 'multiverse' theory". Assume for a second that there is _mathematical proof_ of the multiverse theory. In order to disprove this, you now need to disprove the math.

<comment><USER4> There cannot be a mathematical proof of a physical fact. You can have infinite number of theories that are all mathematically correct, yet contradict each other.

You need data from experiments to falsify the wrong ones. And I think that's why the article means - paper shows what experiment needs to be done to falsify some theories that assume multiverse.

<comment><USER5> Technically you might be able to do a proof by exclusion if you can show that only one of all the possible theories is sound and consistent.

<comment><USER6> I can personally assure you that String Theory is mathematically robust, and the only sound and consistent TOE; and as all other TOEs are excluded, therefore String Theory must be, and just has, been proven.

</comment></comment></comment></comment></comment><comment><USER7> Quite a lot of people worrying about the definition of the word 'universe' in this thread.

<comment><USER8> And with good reason. "Discovering a parallel universe" is nonsensical in the common acceptance of those words. Parallel lines never meet and the universe by definition contains all there is. So people are grasping for alternative definitions of the words that might make the statement satisifiable.

<comment><USER9> At one point "Split an atom" was by definition nonsensical because atoms were conceived of as the smallest, unsplittable bits of matter. But then we found out that we could split these pieces of matter we'd mistakenly called "atoms" and rather than renaming them we just changed the definition of "atom" to correspond to what we'd always been calling "atoms". In practice I don't think this was unreasonable and I wouldn't strongly object to doing the same with what we've been calling "The universe".

</comment></comment></comment><comment><USER10> Until it's published and reviews there isn't much to say. But it's exciting to me, hope I can read it soon.

<comment><USER11> As the article mentions, you can read it already: [https://arxiv.org/abs/1707.07702v2](https://arxiv.org/abs/1707.07702v2)

<comment><USER10> Oh, I was a bit too quick there it seems. Thanks! :-)

</comment></comment></comment><comment><USER12> Looking forward to more and more discoveries and theories coming up in this field. Apart from providing a satisfactory answer to the quandary of "fine- tuned Universe" problem, there has been some observed anomalies for which multiverse theory provides explanation.

[https://en.wikipedia.org/wiki/CMB_cold_spot](https://en.wikipedia.org/wiki/CMB_cold_spot)

[https://en.wikipedia.org/wiki/Dark_flow](https://en.wikipedia.org/wiki/Dark_flow)

<comment><USER13> :)

The problem with physics is, that it went into the wrong direction in the last 100 years and as a result, everybody which looks beyond pop science papers knows, that it does not fucking fit. The fine-tuned Universe is a Problem of the model and the requirement of dozens of free chose-able variables required to make the model fit observations should give you a red sign. And even then it's a bad fit, in very aspect. 10%+ difference in calculations vs observations is a pretty strong hint that your model is far from reality.

The model I'm following does not have dark matter, because it does not require it. I have also expansion of the universe, without abstract higher dimensions etc. But of course, this can not be done without breaking paradigms and this is the problem.

Physicists have shown to be tho most short sighted and ignorant scientists of all:

[http://www.pnas.org/content/112/24/7426.full.pdf](http://www.pnas.org/content/112/24/7426.full.pdf)

</comment></comment><comment><USER7> And then he leaves. Hmmm, suspicious.

<comment><USER14> Hopefully to a parallel universe. :)

</comment></comment><comment><USER15> Imagine the look on Stephen Hawking 1011156B's face when he finds out Stephen Hawking 7086C published the exact same paper that he did, died two weeks later, and the combination of those events compelled scientists in that Universe to eventually master interdimensional travel, when 1011156B only got laughed at.

<comment><USER16> How is the Hawking ID generated? Which universe is used for synchronization? Do we need a new UUID level? Will the NISTs of all universes ever come to an agreement? So many questions...

<comment><USER17> Multiversally-Unique ID's are going to be so long...

<comment><USER18> Depends on how many of them there are. If there is infinite, there is no MUID, if it's finite and below 2^64 then a traditional UUID should be enough to assign a UUID per universe and then assing a UUID for objects within.

<comment><USER19> > If there is infinite, there is no MUID

Formally, you could still have MUIDs even if there are infinite universes so long as they are countably infinite. Practically, the system would work as well so long as you could allocate new qbits to boost your information exponent.

<comment><USER18> Well, no, as long as you want a finitely long MUID since a finite number of digits can only express a countable but not infinite number of elements.

<comment><USER19> We don't want a finitely long MUID, otherwise we couldn't represent infinite universes. A quantum bit represents infinite states. The "fiction" part is that we (currently) need to collapse quantum bits.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Truly amazing. Thank you Professor Hawking! RIP.

<comment><USER21> This statement is in the same domain as "thoughts and prayers", which is the same as saying, "I'm wishing at you really hard".

Rest implies an awaking or movement at some point in the future, but for Hawking, he didn't believe in that.

Maybe it's just something to say, like acknowledging someone sneezing?

<comment><USER22> Or maybe it's a metaphorical expression of sadness over the recent death of a respected idol?

<comment><USER21> Maybe, but I suspect not.</comment></comment></comment></comment>


The technology behind Tweetrad.io - <AUTHOR>

http://tweetrad.io/blog/2009/11/05/tweetradio_technology.html<p>A couple of folks asked how tweetrad.io works behind the scenes (http://news.ycombinator.com/item?id=920610).  Here's a little write-up on our technology and some of the choices we made while developing it. <comment><USER2> > _We also found that OS X's say command provided somewhat more natural > sounding voices. Our solution was to run the conversion processes on a > cluster of several OS X boxes running at our homes._

That is awesome! If you ever want to free up those OS X boxes I recommend a couple of Mac Minis hosted at <http://www.macminicolo.net/>

<comment><AUTHOR> thanks for the tip...I'll look into this!

</comment></comment><comment><AUTHOR> [http://tweetrad.io/blog/2009/11/05/tweetradio_technology.htm...](http://tweetrad.io/blog/2009/11/05/tweetradio_technology.html)</comment>


How real books have trumped ebooks - <AUTHOR> https://www.theguardian.com/books/2017/may/14/how-real-books-trumped-ebooks-publishing-revival <comment><USER2> A: Real books are superior in almost every way.

Except for reference or if you're stuck in a hospital bed, I personally see negative value in ebooks. They often cost more, offer an inferior reading experience, and lock you down to yet another device that needs to charge.

<comment><USER3> I cannot agree. Real books are great, you can use your fingers as bookmarks. Also its good to have opportunity to make marks in book with pen.

But in all other aspects they suck. Though DRM make things worse, you can break it. I always do it, because DRM is very inconvinient: even if it allows to use different devices, it needs some special software, which I didn't like.</comment></comment>


A little bit of Ruby hackery with Kernel#caller - <AUTHOR> http://nathaniel.talbott.ws/blog/2013/03/11/backtrace/

<comment><USER2> I think this post should go into more detail about _why_ this works. As written, this simply looks like you're just calling the exact same method with a different name. The thing that makes it work is that by wrapping it in an extra method, you're effectively adding the prior method (i.e.: the one you want included in the stack trace) to the list maintained by `caller`. Thus, when you call `backtrace`, you'll be able to see the method from which it was called.

<comment><USER3> Good feedback; I think a couple of example backtraces would help to illuminate what's going on. Not sure if I'll edit this post, but I shall take it to heart for future ones. Thanks!</comment></comment>


Iranian cyber warfare commander shot dead in suspected assassination - <AUTHOR> http://www.telegraph.co.uk/news/worldnews/middleeast/iran/10350285/Iranian-cyber-warfare-commander-shot-dead-in-suspected-assassination.html <comment><USER2> Obv. mossad. Apparently, "light to all nations" means starting another cold war.</comment>


An Idea on E-Commerce Development - <AUTHOR> http://blog.veepal.com/an-idea-on-e-commerce-development/

<comment><AUTHOR> Veepal being an adroit eCommerce solution provider suggests some of the technical liabilities which you need to fulfill for a successful online business.</comment>


Tell HN:  Atari are looking for iphone/android game devs - <AUTHOR>

An email hit my inbox before, they're doing some modern takes on some classic games.  If any game devs around here are into contracting and want me to fwd it to them let me know - ben at playtomic. <comment><USER2> Hi Ben. I tried to send you an email and gmail wouldn't let me, saying that it was an invalid address.

Can you forward me your message? My email address is josh at nonprophetstudios.com

</comment><comment><USER3> Hey, I am interested in this as well, would you please forward the email to me as well? Thank you for your time and reply.

You can forward the message to me @ firstname.lastname@example.com</comment>


Ask HN: Major cities rental market 2020 - <AUTHOR> Hello everyone,
Have you noticed a storm of super cheap rental offers in your city's nice neighbourhoods. In Prague it is ~45% down for a week and in Sofia ~35%. My guess is Airbnb and mortgage-to-rent. With many borders expected to stay closed for an extended period, when are those properties going to end up in bank auctions?
Is the housing bubble about to pop? <comment><USER2> I guess not. For most landlords 1 or 2 months without any income is just bad luck.

If we have recession and travel restrictions for a few quarters prices will fall but still, it is just temporary.

You can expect bubble to pop only if there is some change. For example Work From Home becomes a standard and in results there is systematic outflow from urban centers. Or there is long period of inflation and the capital finds better returns elsewhere. Or 25% of population dies.

So I would say there is a chance of housing bubble popping up but it is not a base scenario.

<comment><AUTHOR> Yes, but I can easily see the borders staying closed for quite some time, especially in countries that manage to flatten the curve, the direction in which they are closed might change though.</comment></comment>


Gabriel Weinberg's Angel Investing Requirements - <AUTHOR> http://www.gabrielweinberg.com/angel.html

<comment><USER2> > Not interested in gambling, "adult," gaming, app companies, enterprise, or > anything involving physical products.

It's fun to imagine what is in the software field that isn't in any of those categories, especially leaving out apps enterprise and physical. Apps includes web apps, desktop apps, and mobile apps unless perhaps he hasn't specified it well. The next Facebook only? Ah that's a web app. Wait no, it's a platform. So he wants platforms only?

<comment><USER3> I think he means iPhone "apps".

Though WakeMate is an iPhone app and a physical product.</comment></comment>


Ask HN: What can I do in NYC for 4 hours? - <AUTHOR>

I'm looking at booking a trip soon and I have the choice of flying through NYC with a 5 1/2 hour layover. Making sure that I have plenty of time to get through security/customs, that leaves me about 4 hours to check out the NY tech scene.<p>What can I do in NYC for 4 hours? <comment><USER2> If you are specifically interested in NYC tech scene, I would suggest a)looking for a tech meetup, b) visiting some start up incubator c)visiting one of many schools/universities in the NYC (last one would be least probable of being fruitful)

</comment><comment><USER3> it might be tough to do much considering the time it takes to get to/from the airport. both jfk and lga are a good hour each way from manhattan.

what do you want to do?

<comment><AUTHOR> I'd really like to visit a start-up and see what it's really like. I've never had a development job before.

</comment></comment><comment><USER4> If this is your first time in NYC, forget the tech scene and just walk around the city. And grab some good food.

<comment><AUTHOR> I guess I could use a good leg stretch between flights. :P

</comment></comment><comment><USER5> It's said they write a song about anyone who eats dinner in NYC, like magic.</comment>


Rumors of Cmd's death have been greatly exaggerated - <AUTHOR> https://blogs.msdn.microsoft.com/commandline/2017/01/04/rumors-of-cmds-death-have-been-greatly-exaggerated/ <comment><USER2> Windows really needs a public psuedoconsole API.

For the uninitiated: cmd.exe is the shell, like bash. conhost.exe is the terminal emulator, like xterm. bash or cmd (the shell) talks to the terminal via its standard input, output, and error file handles. Terminal handles are like full-duplex pipes, but richer _: they transmit all the information needed for interaction with the user. Each terminal handle has two ends:_ master* and _slave_. The slave is the terminal to which cmd or bash talks; it basically emulates a teletype. The master handle allows for reading both in-band and out-of-band information from the slave terminal handle and supports special APIs that allow anyone with access to the master handle to fully emulate a terminal.

POSIX systems allow anyone to create master and slave terminal handles. When you start xterm, xterm calls openpty, gets master and slave handles, starts your shell with the slave handle, and uses the master terminal to get the information needed to draw characters.

There's no equivalent for Windows. The only Windows program that can call the Windows equivalent of openpty is conhost, which ships with the operating system. It's not possible for a _different_ program to make a master-side terminal handle. There are two workarounds, which both suck: 1) use pipes, not console handles, and 2) make a hidden conhost.exe and scrape it. The former causes programs to think they're being run non-interactively, with all sorts of negative side effects (like excessive buffering). The latter loses screen updates, is inefficient, and is generally awful.

Microsoft could easily make this situation much better by opening the protocol that conhost uses to communicate with the kernel. If any program can create a console handle, it's much easier to implement things like ssh daemons, Cygwin, and terminal emulators that suck less than conhost.

...

* As an aside: when bash talks to xterm, it uses _in-band signaling_ (mostly: see termios): it sends control code sequences, which xterm understands as "move cursor to 3,3" and "set color to green". By contrast, when cmd communicates to conhost, it uses _out-of-band signaling_ : it uses special API functions to move the cursor and set the text color.

<comment><USER3> Conemu doesnt suck and it uses method 2. It has few quirks but nothing serious and is almost on pair with usability as tmux and in some aspects even better.

<comment><USER4> I use conemu at work. It's not as awful as some alternatives. I would recommend it, but I can't say that it's a good experience. Maybe I'm doing something wrong here... do you run vim in conemu? For me, it's slow when redrawing lines of text while paging and sometimes renders artifacts in the pane, especially when I vertically split vim.

For a command line interface, I find it to be fairly unstable, too.

<comment><USER5> I use vim in cmder occasionally. The only way I've been able to use it properly is to disable conemu hooks before I execute it.

Basically, I've defined a function my profile to:

* Save the ConEmuHooks environment variable value * Set it to "Off" * Execute vim * Reset it to the previous value

I alias this command to "vim".

It's not pretty at all, and it caused me to use Sublime or VSCode most of the time, but it worked for me.

More info here: [http://conemu.github.io/en/ConEmuEnvironment.html](http://conemu.github.io/en/ConEmuEnvironment.html)

<comment><USER3> Why would you do that when gvim is available and is ways better experience then vim ? For the sake of being shell purist ? On remote shell ?

</comment></comment></comment></comment></comment><comment><USER6> > Typing "cmd" (or "PowerShell") in File Explorer's address bar will remain a > quick way to launch the command shell at that location.

Where the hell is this stuff documented?!

<comment><USER7> This has just changed my life.

I thought right click -> Open Command Window Here was the only way. (Sometimes need to hold shift? Maybe just in user directories)

<comment><USER8> On a related note, I recently discovered WoX [1] and I'm pretty happy with it. I think it is an even more convenient launcher: Alt+Space from anywhere, type cmd, ENTER.

With a couple plugins you can type things like "win <TAB>" to select from a list of open windows, "g search-term" to google a term, etc.

1: [https://github.com/Wox-launcher/Wox](https://github.com/Wox-launcher/Wox)

<comment><USER9> The plugins part I understand, but Alt+Space, type cmd, ENTER wouldn't be the same as "windows key, type cmd, ENTER" that's been available for a few years baked in the OS?

<comment><USER10> ...or Win+R, "cmd", enter – which has been there for more than 20 years.

<comment><USER8> Because Win+R doesn't autocomplete the command, other than the history of things you already run. WoX will pickup and do fuzzy completion on all programs of the start menu, for instance.

</comment></comment></comment></comment></comment></comment><comment><USER3> Powershell should have been set as default years ago, particularly on core.

It escapes me how windows admin community still largely ignores Powershell while clicking next in the loop.

Until MS makes Windows Powershell first, adoption will change very slowly as we witnessed so far. Nano server will hopefully bring it faster.

Its a terrible injustice as posh is best shell in the existence IMO.

What I really want to see in future is exporting entire control pannel config as posh script. This is the perfect time to digg into it given that control panel is being transformed into 'settings'.

<comment><USER11> Except Powershell isn't a real shell in the same way that cmd or any of the POSIX shells are. It's a REPL for a language running on the .NET VM. I'm neither a fan of the language nor having to wait several seconds due to the latency of having to start the .NET VM when you start posh.

<comment><USER12> What _is_ a shell for you then? If the defining characteristic is that it's not written in a managed language, well, okay, but I don't think many people share that sentiment.

I have observed the several seconds startup time last with PowerShell v2 or so and that was not the time needed for the CLR to start, but rather PowerShell which was slow to start. v5.1 starts instantly here and the only slow thing about it is my profile, which admittedly does a bunch of things that take time (it's not yet at a point where it's annoying me so much that I edit it, and I can start typing commands during that time anyway (considering that I often spend more time thinking about what to write that's okay)).

<comment><USER13> > What is a shell for you then?

A way to execute programs. The parent is right, powershell is more like a REPL to execute .net code. It's still no where near as good as a unix environment.

<comment><USER12> But as long as you only execute programs a script for cmd, bash, PowerShell and a number of other shells looks pretty much the same. In PowerShell executing a program is simply to state the program name (barring spaces in the path for now). You don't have to do something like execute_program(name, args, input_redirection, output_redirection, ...). Well, you _can_ , if you're so inclined, but it's usually unnecessary. Any shell is "just a REPL for a scripting language". Interactive use is one of the tenets of a shell, otherwise it's more a batch processing system, I guess. And just like in other shells the language is one geared towards running commands (cmdlets or external), managing their execution and processing their output. That it works better for general programming than many other shell languages (in my eyes) is a nice bonus.

Heck, running programs is even easier than in most other shells since there's a specific token that stops argument parsing completely which means you don't have to care about quoting at all (an ever-present nightmare at times).

<comment><USER13> The difference is that windows/PowerShell don't provide the programs that make a she'll useful.

<comment><USER12> Wow, then I've done a _lot_ of apparently-useless PowerShell work.

I beg to differ, by the way. Different is not the same as »not useful«. It's not a traditional Unix shell and doesn't pretend or want to be. That doesn't make it useless, just different.

<comment><USER14> I agree that powershell is far from useless, but it does feel like there are a lot of cmdlets missing out of the box. It's real easy to end up in Get- WmiObject land for everyday admin tasks.

<comment><USER12> But WMI is really, _really_ huge. I can understand that there is a bit resistance to providing cmdlet wrappers around every single WMI class, although I think on Windows Server there are a _lot_ more things exposed by default (and I think even more in modules that are not loaded by default).

Also, since PowerShell can work with WMI objects natively it's already close to what a cmdlet can provide.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> I was happy to find out about Clink: [https://mridgers.github.io/clink/](https://mridgers.github.io/clink/)

It's not a cmd.exe replacement/wrapper - it just hooks the program and beefs it up with decent stuff like Unix style keybindings, history and completions.

</comment><comment><USER16> For C# developers, have a look at csi (C# Interpreter) as a potential cmd replacement. I've been using it extensively for a couple weeks and like it very much. Also, the same scripts can, with little modifications, be posted to Azure Functions to run on the cloud.

<comment><USER17> Last time I tried this there was no way to load nuget references. Very limited usability if that's true.

I wasn't trying to use it as a shell replacement but like a REPL for interactive development/prototyping. F# works better for this IIRC but I have not used F# several years - need to brush up on it.

<comment><USER16> When I work locally, I have a dummy VS project for grabbing assemblies from Nuget. With Azure Fuctions, your function.json file can reference nuget packages.

</comment></comment></comment><comment><USER18> I use Powershell as my default command shell (via ConEmu). But its verbosity makes it a pain to work with as your everyday shell. For instance, in cmd.exe you can say:

dir /od

But in Powershell, you have to do:

dir | sort-object LastWriteTime

I totally get the Powershell verbosity when it comes to writing scripts. But it can be a PITA when you're using it interactively.

<comment><USER19> First off, if you are using built-in `dir` alias, why not use the `sort` alias? Note also that you get tab completion for `dir`, `sort`, and `LastWriteTime`, so "verbosity" becomes decoupled from "speed of entering commands", which is the real goal.

        dir | sort LastWriteTime

I think many in the "Powershell is too verbose for interactive use" camp have simply been trained by cmd to have a very narrow view of what is appropriate for interactive shell execution. Cmd's syntax and toolbox is so poor that only the simplest of tasks are considered tractable for interactive scripting - doing anything non-default is incredibly difficult (or impossible) without a dedicated flag on some windows util (e.g. `/od`). Thus you come to a state where the only commands anyone enters interactively in cmd are very short and simple - not because the language is concise but because it's too painful to attempt anything more.

Translating that narrow set of cmd-suitable tasks into Powershell, one finds that indeed on average Powershell is a bit more verbose, and one says stuff like "Powershell is more verbose than cmd".

What you're missing is that Powershell actually gives you a general, complete, and uniform set of tools, which really are fairly concise given their power. The space of tasks which are now suitable for interactive scripting is now _vastly larger._

So before you say Powershell is "too verbose", I ask how concise batch/cmd is for the following tasks:

        # assign earlier result to a variable (quite hilarious the gymnastics cmd makes you do simply to assign stdout to a damn variable)
        $x = dir | sort LastWriteTime

        # sort by the modified *date*, then by filename
        dir | sort {$_.LastWriteTime.Date},Name

        # get the sum of file sizes in the current dir, in MB
        (dir | measure Length -sum |% sum) / 1MB

Many would reply to this with something like "well if I need to do something like that I'd be using C#/Python/VBS". That's my point! With powershell you have a great interactive shell for super short stuff like file copies or `dir` listings (not the case for C#/Python/VBS), but ALSO the ability to do powerful general scripting with one-liners in the shell.

My "everyday shell" usage frequently covers scenarios similar to or more complex than my examples above. I am quite happy to pay a minor verbosity tax on the trivial commands so that I have the power to do the non-trivial stuff without leaving the shell.

</comment></comment><comment><USER20> When I started working on Windows again at the end of last year, the first thing I did was pin PowerShell to the taskbar.

I have not used the plain CMD for a long time and would not go back to it. Muscle memory makes me type "ls" in any directory I enter when looking around for something, the fact that PowerShell has this is already a reason for me to use it.

I'm not a heavy PS user though, and feel that it still compares poorly to Linux or Mac's terminal for that matter.

<comment><USER21> The terminal itself is poor, but PS the language is so much more sane and ergonomic than bash. Doing text-in-text-out where the sed/awk/split/sort relies on _every_ program in the chain (perhaps a git log, or an ls or whatever) to spit out its text in exactly the same way it always has just feels like a terrible idea.

Example: count the number of files of each extension in the current direcory and list the results alphabetically by extension (I honestly didn't pick this as a way to show of PS strength and I realize that you can always pick a benchmark that shows what you want - but I wanted something small and understandable).

PS:

        ls | group Extension | sort Name | select Count, Name

bash:

        ls | awk -F . '{print $NF}' | sort | uniq -c | awk '{print $2,$1}'

These lines accomplish the same thing, with about the same amount of typing required. You can argue that objects are brittle too, or that text is a universal format whereas objects are not. But you can't tell me the bash line looks better, or that for everyday tasks PS is always a verbose mess. Also: just typing the bash line on my keyboard includes hitting Ctrl+Alt/AltGr _eleven_ times!

<comment><USER22> I don't see we should have to learn a new language for this at all.

The set based paradigm of SQL lends itself very well to reporting and processing files, and is known by 7 million people.

SELECT extension, count(*) FROM files GROUP BY extension ORDER BY extension;

We built a tool, free for personal use, that does SQL at the command line

[http://etia.co.uk](http://etia.co.uk)

<comment><USER21> Shells aren't file processing only - you process anything (dates, logs, configs, environment, apps, ...).

Unless the underlying _model_ has all of that, I don't see how it competes with bash/ps

It should be doable but requires more than a filesystem relational model

Select * from processes order by priority

I mean I see the benefit of using Sql, had I mastered it, for files, but I'd be reluctant to sort and group reg keys or users or devices or processes or env vars differently from _files_ in my shell language. You must have a "relational model" for the file system, do you have a way to (or plan to) generalize this to general structured data?

</comment></comment></comment></comment><comment><USER23> > Cmd is one of the most frequently run executables on Windows with a similar > number of daily launches as File Explorer, Edge and Internet Explorer!

Wait, they track that?

<comment><USER24> I would be interested to know why you are being downvoted.

<comment><USER25> Because it's well known by anyone interested in this area? There's been a barrage of "Windows 10 Telemetry/Privacy" related stories since its release. It's also publicly documented by Microsoft itself: [https://technet.microsoft.com/en- au/itpro/windows/manage/con...](https://technet.microsoft.com/en- au/itpro/windows/manage/configure-windows-telemetry-in-your- organization?f=255&MSPPError=-2147217396)

 _" Performance and reliability data, such as which programs are launched on a device, how long they run, how quickly they respond to input, how many problems are experienced with an app or device, and how quickly information is sent or received over a network connection."_

</comment></comment></comment><comment><USER26> From the Article:

> Notice the nuance here: The above paragraph states that "[PowerShell] > replaces Command Prompt (aka, "cmd.exe") in the WIN + X menu, in File > Explorer"s File menu". It does not say "[PowerShell] replaces Command > Prompt", period! The paragraph even goes on to show you how to quickly > launch Cmd, and points out that you can revert this default setting to > launch Cmd by default instead if you prefer.

and

> So, to be ultra-clear here: All that's happening is that, in the [Win] + [X] > ("Power User's menu"), or File Explorer's File menu, PowerShell is presented > instead of Cmd. That's all! Nothing is being removed, your scripts will > continue to run just as they always have, the sky is not falling!

Looks their Release Notes writer did a poor job of explaining this, so all hell broke loose and now they forced the "Commandline" Blog Team to write a blog post screaming in CAPS and with Underlined words and Big Fonts (and even more confusing language and punctuation), to tell everyone _-_ what they really meant to say _-_ in their release notes.

<comment><USER25> Agree that the phrasing could have been a lot clearer, but really, Microsoft removing cmd just doesn't pass even a basic sanity check. I remember seeing the original news articles and just ignoring them as obviously rubbish. It's pretty sad to see so many tech news sites & aggregators just pick-up and run with stories like that which anyone at all knowledgeable about the subject area would immediately know is hyperbole.

<comment><USER27> They implemented bash into Windows 10, and their web-ish/app-ish "platform" Silverlight does not work in their own browser in Windows 10 and isn't intended to.

Microsoft have improved leaps and bounds in the last few years but saying that a story is immediately hyperbole because "X-good-technical-reason" isn't something I'm willing to commit to for any large corporation.

<comment><USER25> Sure, but the degree of usage of cmd makes Silverlight's usage look like a hobby project. It's used _everywhere_ , including all over Microsoft's own software. It'd easily be the single biggest backwards incompatible change ever made by Microsoft and would affect software going back to the 1980s. The engineering effort involved to migrate anything that is using cmd is mind boggling, to the extent of being completely infeasible. It's a safe bet that for as long as Windows is around, cmd is going to stay with it.

<comment><USER28> And this is exactly because of this mentality that windows next move is to add a Unix subsystem (Ubuntu) aside all the old crap instead of just being Unix compliant and progressively drop old chunks of code as year goes by like Apple started to do 15 years ago.

<comment><USER29> UNIX is oversold and if it was sold by the same price as other commercial OS back in the day, it wouldn't ever taken over the IT market.

I appreciate the option of running other OS more open to explore the ideas of Xerox PARC.

Also Apple just got UNIX by acquiring NeXT, with Be the music would be other.

Even on NeXT's case, UNIX compatibility, was a means to allow software into the system, not out of the system.

No valuable NeXT application, or for that matter Mac OS/iDevices, made that much use of UNIX APIs.

[http://www.nextop.de/NeXTstep_3.3_Developer_Documentation/](http://www.nextop.de/NeXTstep_3.3_Developer_Documentation/)

<comment><USER28> Still I find interesting that Apple and Microsoft again choose different strategies to try fill the gap between them and FOSS supporters: -Microsoft is gonna include an FOSS unix subsystem -Apple for the first time in his history is going full FOSS for Swift development

<comment><USER30> It's just the Swift language itself that is open source and a few libraries. Most of the OS X layers above BSD are still closed source.

It's not " _more open "_ than C# and .NET in that regard.

<comment><USER28> Sorry if I was wrong I absolutely now nothing about c# & .net.

Does it mean one could actually review code and fork theses languages too if need be?

<comment><USER31> Certainly: [https://github.com/dotnet/roslyn](https://github.com/dotnet/roslyn)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER32> > MS-DOS' command-line shell's scripting language was relatively terse and > moderately powerful, but lacked many of the richer, and more advanced > features we enjoy in modern-day PowerShell, Bash, etc.

Nice try, but the Bourne shell, which dates from 1979, already had most of the features commonly found nowadays in Unix shells.

</comment><comment><USER33> I want to use powershell more but I am too trained to <Win+R> cmd <enter>

To do the same with powershell I need to type "powershell" within run, many more keystrokes. I would love to just type "ps" or something short to do this. (natively not via an alias for when im using other peoples computers)

<comment><USER34> The inability to launch an elevated process with an easy key shortcut in the "Run" <Win>+<R> dialog has been breaking me of that muscle memory over last few years. The <CTRL>+<SHIFT>+<ENTER> sequence to elevate a new process works from the "Search" text-box in the Start Menu, but not the "Run" dialog.

<comment><USER35> You just made my life so much better. Right click->Run as Administrator was pretty cumbersome.

<comment><USER34> That <CTRL>+<SHIFT> works on left-clicks on taskbar icons and double-clicks on other icons, too.

<comment><USER12> It also works with middle-clicks on taskbar icons to launch a new instance as admin.

</comment></comment></comment></comment></comment><comment><USER36> At least PowerShell is taking over as the default. Should have been changed back in Windows 7. Copy & paste with Ctrl-C and Ctrl-V is what made me switch to PowerShell.

</comment><comment><USER37> The name CMD.EXE actually comes from OS/2.

</comment><comment><USER38> The recent trend is to use the git shell on windows and execute bash scripts.

</comment><comment><USER39> What a strange writing style! Almost every sentence ends in an exclamation point! I never realised CMD could be so exciting!

</comment><comment><USER40> unfortunately.

</comment><comment><USER41> "Cmd has served us all well for almost 30 years now"

No it hasn't.

</comment><comment><USER42> If Cmd is not going away, why doesn't MS invest in it and make it more useful? It could learn a few things from xterm, bash, etc.

<comment><USER43> The article mentions that. Every change, no matter how trivial, in cmd breaks some behavior that someone is depending on, or at least it feels that way. Even fixing bugs tends to break large number of scripts in the wild.

I'd like to see a 'bacmd' or something where they could break some history without fear, but clearly MS has decided to focus their resources on a very different way of thinking for their new shell.

<comment><USER2> Bullshit. cmd has an extension mechanism specifically designed to allow for breaking extensions [1] to the cmd command language. This mechanism hasn't been used very much, but in principle, you could easily add new SETLOCAL [1] commands to enable support for modern command shell features.

But cmd is in "maintenance mode", which means nobody is interested in adding features. Powershell is the new hotness. And Powershell wouldn't even be so bad if some of the more shameful problems were fixed --- a pipe between two native programs should be 8-bit clean!

[1] [https://technet.microsoft.com/en- us/library/bb491001.aspx](https://technet.microsoft.com/en- us/library/bb491001.aspx)

<comment><USER12> It'd also be of dubious value by now. Cmd has been feature-stable since Windows 2000, I think. Any features added _now_ (i.e. available only in Windows 10, update.next) would not be used by anyone since oftentimes batch files are used where you need stuff to work on pretty much every Windows installation. (Or they are so simple that they wouldn't benefit anyway.)

</comment></comment></comment></comment><comment><USER44> Instead they can adopt linux and release a Microsoft Linux. Why bother about windows?</comment>


Lisp, Jazz, Aikido – Three Expressions of a Single Essence (2018) [pdf] - <AUTHOR> https://arxiv.org/ftp/arxiv/papers/1804/1804.00485.pdf <comment><USER2> I think this one was posted not too long ago. Commentary here: [https://news.ycombinator.com/item?id=16993330](https://news.ycombinator.com/item?id=16993330)

<comment><AUTHOR> Ah right. Please flag it.</comment></comment>


Show HN: Canadian DevOps Jobs List - <AUTHOR> https://docs.google.com/spreadsheets/d/19Eh1WMSOZN_QJECvvLJb0YXRe_XKeyYpsa5hgZ5QJcI <comment><AUTHOR> This is a daily updated DevOps Job list that is scraped from Indeed CA. Dear HN users, tell me what you think? Do you find it useful?</comment>