Visual Studio Code 1.0 - <AUTHOR> http://code.visualstudio.com/blogs/2016/04/14/vscode-1.0 <comment><USER2> VSCode knockouts Atom in a dispute for becoming a developer editor in a corporate computer.

Sure, you all have root password in your computer. Unfortunately, I belong to a lower race: the corporate developer. I work in a Windows 7 machine, don't have root password and there's a big wall called proxy around me.

I didn't know about VSCode before this HN post, but I was trying to use a new editor instead of Notepad++. In my 5 minutes comparison match between Atom and VSCode, Atom was knocked out in the first minute. To quickly test a new general code editor I just want 3 "simple" things: column selection, regexp search and replace, and a python mode.

Atom: got the regex, must install a column mode extension, need to install a ntlm proxy authentication downloaded from (argh!) Sourceforge, configured it after some google searches, failed to install the extension because it needs a compiler. Ops, just spent 30 min for my 5 min test. Can't spend more time playing with a code editor, must go back to work.

VSCode: Download the portable version [https://code.visualstudio.com/docs?dv=winzip](https://code.visualstudio.com/docs?dv=winzip) and unpack it. Just works.

You've got a new fan VSCode!

<comment> enjoy-your-stay Just wanted to say I find Notepad++ to be an excellent tabbed editor, especially for XML or SQL. I use it on windows all the time and really miss it on OS X where I find Textmate to be a bit awkward.

<comment><USER3> I've been a long-time fan of Notepad++, but it's a text editor. You can extend it to make it work better with specific programming languages (e.g. here's a post I wrote 10 years ago about adding language support [http://weblogs.asp.net/jongalloway/creating-a-user- defined-l...](http://weblogs.asp.net/jongalloway/creating-a-user-defined- language-in-notepad)) but it's fundamentally a text editor.

VS Code is a code editor. It has IntelliSense (not text-matched autocomplete, IntelliSense), debugging support, git integration, parameter hints, go to definition, code peek, etc. ([http://code.visualstudio.com/docs/editor/editingevolved](http://code.visualstudio.com/docs/editor/editingevolved)). The goal is to give you code editing features with the speed and simplicity of a text editor.

They're both free and lightweight, so I use them both pretty much daily.

<comment><USER4> As you say, both are useful for different things. They complement each other if you use the right tool for the right job.

I find Notepad++ is great for handling really large files and changing UTF encoding or line endings. VS is good for pretty print formatting code/XML to be more readable, among many other non-text things such as debugging.

<comment><USER5> > _and changing UTF encoding or line endings_

If you need to do those things often, there are specialized tools, including in the command line, and for batch processing.

No need to do it in an editor.

<comment><USER4> I don't need to do this often but occasionally you'll need to fix inconsistent line endings, change encoding to UTF-8 or remove a BOM [0] (to stop  being prefixed by some old software).

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

<comment><USER5> Yeah, I know, had to do it some time or another.

In OS X and Linux (and Windows with Cygwin etc) there are several command line programs such as unix2dos (line ending conversion), iconv (encoding conversions) etc for doing just that, so that you don't need to do it in an editor and can even automate the work.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> VSCode has done the thing that nobody expected MS to do, change the way code was written on Unix/Linux.

I love linux/unix, but the problem always was with the lack of an awesome text editor cum IDE, yep there is eclipse but it is too clunky, I do not like sublime as it isn't FOSS (call me crazy), gedit took way too much memory, geany is fast and mean but the UI sucks plus functionality isn't that great.

Enter VSCode, code writing feels amazing again, not the functional part, but the actual manual part.

I do not like vi because I primarily was learning web dev and I didn't really get my head around using vi effectively and still learn the web dev, so I am not a emacs/vi superstar as I have heard that both of them are fine text editors.

but for the people like me who don't or can't use terminal based editors, VSCode is quite literally the best.

The new Che project of Eclipse does seem promising, but the last time I tried installing it, it took around an hour, consumed GBs of my bandwidth and still nothing.

I am still Waiting for the day I'll be able to program in its entirety on my android device.

I used Atom but it is too slow, it is surprising that VScode and atom share the same ancestor but one is blazingly fast and Atom is so damn slow.

Edit: yep vscode didn't transform coding on unix, it merely changed it to some extent, and why the downvoting? point out where I am wrong, I'll get to learn!

<comment><USER7> Ummm, no. VS Code is a decent editor, nothing more. It certainly doesn't transform the way code is written on Unix/Linux.

Vim and Emacs are still superior if you want to put the time in, and both have non-terminal interfaces. They can also be both customized to be whatever you want them to be, there's not really a limit to their functionality except what plugins are already written. Ditto for Atom, though of course, it does seem to be more web based for the moment (though Atom does have great plugins for Go, Nim, and I'm sure a bunch of other languages).

In the grand scheme of things, tools like compilers, debuggers, interpreters, other command line tools (like completion servers), etc..., matter more than editors anyway.

Edit - for the record, VS Code seems great. But it's not revolutionary.

<comment><USER8> >Vim and Emacs are still superior if you want to put the time >in,

TBH, not every developer is willing to become a _power user_ or interested to learn an IDE instead of the language itself. Being someone who worked on VStudio alot and now on Linux/Mac based tools, I can safely say that Microsoft tools are _Developers friendly_ most of the time. It's good they are introducing same touch for Linux/OSX community.

<comment><USER9> Why spend a few hours over the course of 60000+ working hours to learn how to use more effective tools?

<comment><USER10> "a few hours" ??? Come on, let's not pretend that EMACS is going to take "a few hours" to come to terms with and become more productive in than an IDE.

<comment><USER11> Actually, you can get decently proficient in just few hours. Have you actually tried sitting in front of Emacs or vim for more than 30 minutes, _to the clock_?

Humans have this funny thing as they grow older - they look at a thing, maybe try it out for few seconds, and then immediately determine it's too difficult and it will take forever. They rarely bother to spend actual five minutes, to the clock. If they did, they might actually have learned something.

25 minutes of deliberate practice - a single Pomodoro - is enough to become acquainted with _several_ of Emacs features - like, navigation by semantic units _and_ incremental search _and_ autocompletion. You won't get _proficient_ in that time, but it's enough to rewire yourself to actually start using it when writing code. Which will _then_ lead to you becoming proficient _while_ doing your regular, billable work.

Seriously, set up a Pomodoro timer, sit in front of Vim or Emacs, and try to practice a few things. You'll be surprised how fast you can learn.

(And yes, I did that, so I'm not talking out of my ass. I actually almost doubled my Emacs productivity once in 5 pomodoros - in 2.5 hours - two of which I spent _watching Emacs Rocks videos_ , two on rewriting s-expressions with Paredit, and one on multiple-cursors.)

<comment><USER12> > Have you actually tried sitting in front of Emacs or vim for more than 30 > minutes, to the clock?

Not parent but I have. I still would recommend something else for all the stuff I work with.

That said, it is amazing, I just believe in my line of work people are better off spending time learning an ide, esp refactoring, efficient search/ replace as well as how to enable block selection.

<comment><USER11> > _I still would recommend something else for all the stuff I work with._

I sometimes do to. In particular, when that stuff is Java or C# - it's hard to beat the support IDEs gives you there. So I personally opt to switching said IDEs to Emacs keybindings instead.

(Also, one could argue that you need IDEs there mostly as crutches to support the weak language, but that's a topic for another day...)

> _better off spending time learning an ide, esp refactoring, efficient search > / replace as well as how to enable block selection._

Refactoring - if you mean semantic transformations supported by your IDE, then yes. See above. But for search/replace and block selection no IDE beats the convenience of Vim and Emacs. They simply can do that better and more naturally (along with plethora of similar things helping with selection and _navigation_ ). And this is exactly the type of thing I was talking about in my previous comments - you can learn _both_ under one Pomodoro if you focus solely on it, and then normal work will quickly take you to proficiency.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> I switched from Atom to VSCode for Go development on OSX a few weeks ago while Atom's Go plugin was going through a rough few days, and haven't been able to go back.

The patterns of use take a little getting used to coming from Atom or Sublime, but VSCode gives me real static-language IDE features that "just work" simply by installing the Go plugin. Comparable functionality in Atom requires multiple plugins and I never managed to make a few of them work at all. The control+tab file switching quickly became second nature.

I never had the performance issues some people have with Atom (on a 5 year old laptop), but VSCode feels a little quicker at some things. Nothing to write home about.

I love Atom's direction (plugability, a well-cultivated ecosystem, discoverable configuration), but for sheer usability I'm sticking with VSCode for now.

<comment><USER14> I never switched to Atom (from WebStorm), but I've made the switch to VSCode and I like it!

It just works. The workflow is fine for me, git integration is a plus. Compared to Atom, I don't need to try plugins to get descent functionality.

Actually, it's the first MS product I use in like... 10 years?

I used to be an emacs fan, I used to be an Eclipse plugin developer, I used to be a WebStorm user... now I prefer VSCode.

I love how it makes the best of screen real estate compared to WebStorm

</comment></comment><comment><USER15> I'm your standard unix greybeard, the sort that uses org-mode to outline- structure their emacs config (that's actually what I do, not even a hypothetical), so I approached VSCode with skepticism.

I have actually been really impressed. It's fast and responsive, even on Linux, and the TypeScript tooling is fantastic. I think with a bit more UI work (like vi keybindings) it could potentially become my preferred editor.

<comment><USER16> I'm chuckling (not in a bad way!) at the emacs user that prefers vi keybindings expressing optimism about a Microsoft editor written in a statically typed variant of Javascript. Progress is cool.

<comment><USER15> I try my hardest to not be dogmatic, and my answer to the argument about vi having better keybindings while emacs having better extensibility is "why not both?" :) JavaScript is almost an acceptable lisp, too...

</comment></comment></comment><comment><USER17> Visual Studio Code could serve as a solid base for VS.NextGen. Following previously unheard-of paradigms (Unix) for Microsoft, Visual Studio could actually become modular, with each component becoming useful on its own.

Visual Studio Code would be the editor, Omnisharp the Intellisense platform, I think they were also developing some sort of common debugging interface, etc.

It would be a lot nicer than the current Visual Studio setup, where the installation drags in 6GB of cruft.

Of course, this would involve an internal power struggle between Visual Studio Code and Visual Studio proper, and I hope VS Code wins :)

<comment><USER18> I have a gut feeling that this is in fact the plan. People keep asking "When can we have Visual Studio on OS X/Linux?", but I don't think that's ever going to happen: VS is so tightly coupled with COM and Win32 that they'd basically have to write it from scratch, or write an entire Windows emulation layer. But what they _can_ do is gradually add features to VSC until it does most of the things you wanted full VS for: Intellisense, deploy-anywhere frameworks and debugging being the main ones. Doing it that way will probably be more performant too.

<comment><USER19> They've demonstrated it too. With Roslyn being a "compiler as a service" and the OmniSharp umbrella of plugins, now VS Code and Sublime Text all have the same intelligence (and IntelliSense) that Visual Studio has. Everything else (IMO) is much easier chrome around that fundamental experience, and can easily be filled in over time.

In the C# talk at Build [1], they demonstrated visual debugging using VS code. It was pretty awesome.

[1] [https://channel9.msdn.com/Events/Build/2016/B889](https://channel9.msdn.com/Events/Build/2016/B889)

</comment></comment></comment><comment><USER19> I absolutely love how VS Code generally feels more native, performant, and polished than Atom, but lack of a good VIM mode is keeping me away right now. Hopefully the author of VIM Mode in Atom, makes a VS Code plugin.

<comment><USER20> There is an extension for vim mode: [https://marketplace.visualstudio.com/items?itemName=vscodevi...](https://marketplace.visualstudio.com/items?itemName=vscodevim.vim)

<comment><USER21> There are several actually, with different subsets of Vim. Sadly, none are as good as Atom's.

<comment><USER22> Hello - one of the team members from VS Code here.

We built this extension sample to show the capabilities of the extension API - [https://github.com/alexandrudima/vscode- vim](https://github.com/alexandrudima/vscode-vim).

We've done some work to improve the API for the extensions. We'd love your feedback. [https://github.com/Microsoft/vscode/issues/3600](https://github.com/Microsoft/vscode/issues/3600).

<comment><USER23> The issue with Vim is that the editor has several hundred/thousand idioms and everybody uses a different subset. As an example, most people delete words with `dw` while I usually use `dt<space>` because the t/f motions generalize to subwords. Until you have the majority of your personal subset implemented, vim support in a given editor is "bad".

I've thought about doing a vim implementation for years where motions are expressed as composable functions projecting from text range to text range with commands taking a list of text ranges, mostly because I'd like to whether non-text based motions (e.g. AST based or generalized cursors) would work. I like VSCode and expect to move over to it so I've thought about starting my project but the scope of doing a good implementation is daunting.

Congrats on the 1.0 release, VSCode is a great product.

<comment><USER19> So essentially, I think vim-mode in atom actually uses NeoVim's headless VIM engine, which is why it's more full featured. But don't quote me on that :)

The ideal VIM mode plugin for VS Code would do the same.

</comment></comment></comment></comment></comment></comment><comment><USER24> One of the things people does not seem to mention is the great debugging support you have in VSCode. The possibility to easy setup debugging with support for breakpoint, step through, inspection and so on. For react-native VSCode is the only IDE I have found which enables this. Previously one had to open Chrome and debug your apps from there, to have it inside the IDE makes it so more convenient. The same goes for Node(which you also can do in Webstorm, but not free and open source) and as far as I can tell the only IDE you debug Go probably. As an developer preferring solid IDE`s like VS and Eclipse with full debugging support it always feels like a step backwards when working with an language where this does not exists.

<comment><USER25> That's probably because it's using the Chromium code base. Those debug tools are from Chrome.

<comment><USER26> No, VS Code's debug support is not based on Chrome's debug tools since we try to support any debugger.

</comment></comment></comment><comment><USER27> Does anybody else use several editors all the time? I use Emacs, Vim, Eclipse, Atom, and Intellij. I don't stick to one.

I wish I could stick to one editor but there is always some editor that does a way better job at a particular task. Each editor has its killer feature. I have tried turning emulation of emacs/vim on many editors to provide consistency and its never been really good. Thus I have several "default" keybindings in my head.

Because of this I try not to rely on too much magic or customization that any editor provides and instead write lots of shell scripts (Bash, Groovy and Python) to do code generation and to find things.

But I'm always wondering ... could I be more efficient by sticking to one.

VSCode will probably just become another editor I have lying around. Probably for Typescript.

<comment><USER28> Aside from different tools having different strengths, I enjoy learning to use new software. I think if I used one tool for everything I would get bored with it.

That said, learning new keyboard commands is sometimes a real PITA. When I'm tired, I sometimes find myself trying to close Visual Studio or Sublime Text with :q.

<comment><USER29> How odd. I've used the same text editor for twenty-plus years now (hint: it has yet to be mentioned) and I find that I no longer have to think how to use it---it just happens. Then again, I consider the Unix command line as my IDE [1].

[1] Every few years I'll try an IDE. I've been doing this for over twenty-five years. I've yet to find one that I like. Over time, my bar for "what I like" has fallen to the point where now it's "it doesn't crash when loading a simple one file program." [2]

[2] The C/C++ "version" of Eclipse. I tried using it to help browse a C++ application at work. It never worked.

<comment><USER28> Odd? I don't think so... I've worked with lots of incredibly talented programmers and I think every single one of them has different preferences.

My favorite place to work right now is on OSX. It's Unix so you get all the command line goodies plus it has a very good GUI and great tools in the graphical environment as well (I'm thinking of XCode). Plus, I think Objective-C is pretty neat.

</comment></comment></comment></comment><comment><USER30> What's with the license I have to agree? e.g.

5\. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not * work around any technical limitations in the software; * reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software except, and solely to the extent: (i) permitted by applicable law, despite this limitation; or (ii) required to debug changes to any libraries licensed under the GNU Lesser General Public License which are included with and linked to by the software; * remove, minimize, block or modify any notices of Microsoft or its suppliers in the software; * use the software in any way that is against the law; or * share, publish, or lend the software, or provide the software as a hosted solution for others to use, or transfer the software or this agreement to any third party

But:

[https://github.com/Microsoft/vscode](https://github.com/Microsoft/vscode)

So with the msi installer a different license?

<comment><USER31> @bbcbasic: there is indeed a difference between our OSS project and Visual Studio Code, which is essentially our distro. For a detailed explanation, please see [https://github.com/Microsoft/vscode/issues/60#issuecomment-1...](https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005).

</comment></comment><comment><USER32> I tried VSCode for the last couple of months and it didn't sell me.

It's noticeably slower than Sublime on a good workstation and it has a bunch of very minor annoyances that Sublime simply doesn't have.

When you encounter these annoyances dozens of times a day, it really turns you off from using it because a good editor should make you happy, not infuriate you.

For example, the way VSCode deals with multiple buffers and the sidebar is really poor. It tries to be cute and keep the sidebar's state in each buffer, but it's done really poorly and constantly disrupts you.

<comment><USER33> I feel the same way. I tried to like VSCode but it's just all the small things that trip me up. I've really come to depend on STs mini-map and miss it when it's not there. VSCode is just slightly slower than I feel it should be, causing me to pause and crash my train of thought.

</comment></comment><comment><USER34> > Can we build a code editor fast enough that it doesn't feel like you're > typing in a browser?

Is this a jab at Atom? I like this.

<comment><USER35> Funnily enough I just installed VS code and there is lag as I type things in. Also bad font rendering compared to the rest of my interface.

<comment><USER36> smooth as butter on my macbook.

<comment><USER35> But you shouldn't need high end hardware to run a text editor.

<comment><USER37> It's interesting how people seem to have very different experiences with lag on vscode. I wonder if it's actually much more laggy on some system configurations. What are your running it on?

<comment><USER38> Not surprising since most people have their own pool of extensions that they'll install but fail to mention any time the topic comes up. This is the "Firefox is beastly" strain of criticism all over again.

</comment></comment></comment></comment></comment></comment><comment><USER39> It's interesting to see how VS Code / Monaco deals with long lines like hex data without slowing down. It kinda cheats by wrapping the line even when not in line wrap mode. There's a setting editor.wrappingColumn that controls the wrap length.

However, even after setting wrappingColumn to an arbitrarily large number, VS Code greatly outperforms Atom. The click accuracy within a long line is off by several characters in my quick test, but good enough.

I was never comfortable using Atom because it would grind to a halt whenever I accidentally opened any files with long lines. VS Code just may be the first MS product that I'll use on my Mac on a daily basis. Looking forward to testing it out on a couple projects.

</comment><comment><USER33> For some reason I can't stand the fact that VS Code drops .vscode files all over my directories. I feel like I'm working with CVS again. I haven't played with it much and not at all lately, but the last time I tried editing anything in VS Code it generated these hidden files all over the place and drop me up a wall. That may be configurable and it may have changed with 1.0, I'm not sure.

It's also, just very slightly, too slow. By too slow I mean that everything I do just lags a tiny bit; I can type characters faster than it can put them on the screen, clicking in the file browser is not instantaneous, etc. It's a small thing but it really bugs me. I guess I'm just spoiled by ST3. :/

</comment><comment><USER40> Are there any emacs/vim users here who moved to GUI editors like atom or VS code?

I would like to know what potential gains could come from using a GUI text editor.

<comment><USER41> I'm a longtime Emacs user and I dabble with atom and code. The main thing that I get out of GUI editors is that extensions generally _just work_. I spent a lot of time debugging emacs extensions to the point that I kind of expected extensions to not work right when I install them - especially ones related to autocompletion. Nowadays I use spacemacs to keep my package management sane, but it's inflexible and complicated.

I miss things from Emacs sometimes so I keep it around. I miss macros, I miss some of the more stellar Emacs packages (Tuareg for OCaml and Cider for Clojure in particular) but I do a lot of editing nowadays in Atom and Code.

<comment><USER42> I'd say that's almost true. I'm also a longtime Emacs user. My work development is C# on Windows, so I've dabbled with VSCode and Atom.

My experience so far is that extensions on VSCode "just work", but they're scarce, and difficult to discover and install.

My experience with extensions on Atom is that they are numerous, cover a very wide variety of needs/wants, and that they frequently break when the main editor updates. I haven't been able to install/update the Omnisharp extension successfully since the npm debacle a few weeks ago.

I dabbled with Spacemacs, and it seems nice, but I couldn't work out how to migrate my existing extensive org-mode customizations without digging deep into the Spacemacs package management system.

</comment></comment></comment><comment><USER43> The two highest rated comments in this thread make the little vein in my forehead pop out.

Microsoft is doing some very cool stuff these days so props to them. "VSCode has done the thing that nobody expected MS to do, change the way code was written in Unix/Linux" though? I believe the term irrational exuberance applies. Let's not get carried away here.

<comment><USER44> > The two highest rated comments in this thread make the little vein in my > forehead pop out.

There are some days when I wish that _I_ had enough money to employ a small army of "thought leaders" to "organically" shape discussion on Internet Message Boards.

Alas, my single upvote will have to suffice. ;)

</comment></comment><comment><USER45> Great story from Microsoft. Personally I use [neo]vim but I often recommend Visual Studio Code to my non programmer collegues. I think it is really user friendly.

</comment><comment><USER46> I'm quite surprised by how much smoother VSCode is than Atom despite being built upon the same platform, I just wish it had tabs and split tab groups, then I could give it a go for a full day and decide whether I like it or not.

</comment><comment><USER47> As much as I love trying VSCode, the lacking of tabs prevents me from keeping it open longer than 1 minute. I'm just not used to not having tabs.

<comment><USER48> They are working on tabs as we speak [https://github.com/Microsoft/vscode/issues/4888](https://github.com/Microsoft/vscode/issues/4888)

<comment><USER49> The tabs feature is under the heading, "Initial investigations/explorations" something tells me they are not working on anything just yet. If the feature makes it through, we might not see it for sometime yet. Disappointing, tabs are a definite must for me.

</comment></comment></comment><comment><USER50> I'm a long time Linux guy and absolutely hate Visual Studio, it's just clunky and unusable as Eclipse.

This post prompted me to try VS Code and I must say, I'm really impressed. There are still a few rough edges but I do understand it's still young.

As soon as the Vim extension becomes usable I'll be on board I think; things like visual selection don't appear to work correctly at the moment.

<comment><USER51> I'm the maintainer of amVim. I don't know if you tried amVim. It supports Visual and VisualLine. Also, you may find it handles detail behaviors of Vim much better.

<comment><USER52> Fantastic, that's a lot better than the other Vim plugin I tried! Thank you.

g; and W/E support would be nice (as someone said on this thread, everyone has a different subset of Vim they use ;-) )

<comment><USER51> Thanks! Cloud you open an issue on Github repo here: [https://github.com/aioutecism/amVim-for- VSCode](https://github.com/aioutecism/amVim-for-VSCode)

</comment></comment></comment></comment><comment><USER53> I've been writing OCaml for a while and seeing that VSCode has a pretty sweet integration for F# gets me quite excited. Is there anyone here who's running F# on Linux / OSX and can share their thoughts?

<comment><USER54> It's amazing, especially with the Ionide ([http://ionide.io/](http://ionide.io/)) extension. By far the most pleasent F# experience you'll find on ANY platform. I use it on both Windows and OS X and it's been very enjoyable.

<comment><USER55> I've tried this route and while the IDE experience is decent, I was not able to get a working Web API in F# using fsharp-generator (yo fsharp). So I used yo aspnet to declare a C# Web Api and tried to reference an F# library generated using yo fsharp. I was eventually able to get the C# project to see the F# project, but intellisense was broken and showed broken references even though the code was able to compile.

It was an uphill slog and I've put it aside for now, but I will keep coming back to it. In the meantime, I feel like I will just have to go to windows and Visual Studio 2015 to get the working experience.

</comment></comment></comment><comment><USER56> Does VSCode 1.0 still come with the tracking and analytics (phone home stuff) that cannot be turned off?

<comment><USER57> The second sentence in the first paragraph suggests they are actively performing some form of tracking.

> Today, we're excited to report that more than 500,000 developers actively > use VS Code each month.

I've come to expect Microsoft is just going to do that, and it needs to be accepted if you want to use their stuff. Fighting against it is a recipe for a headache. Unfortunately (or fortunately) this editor is great for Typescript and that's my passion.

A competitor should show up in this space and make me even happier.

<comment><USER38> If you build from source instead of downloading from code.visualstudio.com, those things are disabled by default.

</comment></comment></comment><comment><USER58> It certainly looks from the extension API docs that this is a thing the world needs - a modern GUI shell that allows arbitrarily complex extensions to be written in a language people seem to like. Having looked around the docs as a very heavy emacs user, I am not totally discouraged - every keypress seems to point at a command, and if everything is rendered as HTML, I assume it is effectively infinitely customizable (would love to hear opinions from experienced extension authors). If, on top of that, it solves a lot of emacs' foibles, like threading issues, performance edge-cases etc, then I plan to keep an eye on it.

That said, the available extensions seem pretty bare. I don't see many mentions of REPL interaction, and there are no extensions for many languages. I'm glad it's getting attention, but I suspect it'll take a decade of loving care to bring up to the level of most people's emacs configuration. I see no reason that couldn't happen more quickly, though.

</comment><comment><USER59> Visual Studio Code has been a very pleasant surprise indeed. Fast and simple. Not everyone needs a powerful IDE, especially when learning.

I have been using it a lot lately to write snippets of code in C or HTML.

</comment><comment><USER60> (linux) webdev here, so I write in a couple of different languages. I believe vscode sits nicely between emacs and eclipse.

emacs on the console at the servers is unbeatable. the daemon just sits there, and I can fiddle with bash, config files, php, css with ease.

As a full IDE, eclipse is still the best for PHP development. Has a myriad of plugins that make it so powerful: pdt, phpunit, code/lib/docs integration, per project configuration, etc. its amazing!

Now, for js and scss, its a bit more complicated. and this is where vscode is shining for me. I had to learn a few command bindings and a few things are weird for me still: ctrl+x yanks the line, on linux middle click isn't default, "folders"...

One of the things I like the most tho, it is written in a language I can understand. Aptana used to be a favourite of mine, but because I couldn't write any code for it, I was limited to bug reporting and waiting. This being in typescript, I feel I can look into the source code and write a PR.

I yet to explore it deeply, but i'm sure it will just get better and better.

have a nice day!

</comment><comment><USER61> I guess it's not Textmate VS Sublime Text anymore. It's VS Code versus Atom. While it's always good to have some competition, I also hate it to see awesome features present in one, but not the other. Well, if I'd have to pick one (and actually the only one that kept me with Sublime for this long), it would be speed.

<comment><USER62> I moved from Sublime to Atom 6 months ago and the only thing I miss is blazing speed.

</comment></comment><comment><USER63> Interesting that they decided to release 1.0 before sorting out the coreclr/dotnet story. My understanding is that Mono is still the best way to write C# with VSCode, even on Windows.

<comment><USER64> It's coming soon. The aspnet team demoed coreclr debugging in VSCode earlier this week. It was all done on nightlys, but it worked. But honestly, since these are all extensions, I don't see any reason 1.0 would need to be tied to these features.

</comment></comment><comment><USER65> One thing I've gotten used to and find missing in VSCode (and Atom) is auto- saving of untitled/unsaved buffers to temporary storage.

When I have an idea or want to use a new editor tab as scratch space, it's really important to me that whatever I put there isn't lost if I exit the editor. When I close the tab, sure, ask me if I want to save it somewhere. But when I close the editor itself, I want it to reopen and restore everything exactly as I left it.

The last thing I want to deal with is coming up with a path and filename when the editor can easily create a temporary file and map some unique id to it for later use until I tell it explicitly to save or discard it.

</comment><comment><USER66> I would really like to use VS Code as my primary editor but it has some issues that need to be fixed first, most importantly how slow the go to file functionality is. I work on a project (Chromium) that has tens of thousands of source files and while Sublime Text can handle that without issues, VS Code can't.

I would also like to see the C++ intellisense plugin that's under development improved further. I've found it to be a lot slower than QtCreator at indexing symbols.

</comment><comment><USER67> I have an IntelliJ Ultimate license and although it's really powerful and great, for small things (JS, Python, etc) I mostly use VSCode. So far I am really happy with it.

</comment><comment><USER68> Anyone know how to "fix" the issue where I paste in a block of html and it doesn't line up and indent properly? This works as I would expect in Sublime.

</comment><comment><USER69> Can I just ask why (some) Vim/Emacs fans see the need to shit on everything and act like anyone who doesn't use one of those 2 editors is a moron?

</comment><comment><USER70> Maximum file size of 50MB[1] is going to prevent me from replacing Notepad2 as my general purpose editor :(

[1] [https://github.com/Microsoft/vscode/blob/5b9ec15ce526decc5dd...](https://github.com/Microsoft/vscode/blob/5b9ec15ce526decc5dd0488339e798f6bcb4ec46/src/vs/platform/files/common/files.ts#L420)

</comment><comment><USER71> I use it for Typescript development exclusively. Obviously it works quite well.

<comment><USER72> Can you talk about how you use it?

</comment></comment><comment><USER73> I'm a long time vim user who's switched mostly to Atom(at least for bigger projects, vim is still my "quick fix" editor). Last time I tried VS Code(6ish months ago?), I liked it all right, but stuck with Atom because at the time the availability of vim like bindings was weak and ruby support was lacking.

<comment><USER74> What made you switch from vim to Atom?

<comment><USER73> Mostly tried it and got used to it. I liked the defaults a lot more than I do vim(nothing some plugins, a good .vimrc, etc can't fix), and I found it much more natural to use extensions that I ever did vim, so once I got Atom matching my usual vim setup I found myself extending beyond that. Most of it's probably stuff I could do in vim too, but adding extensions on whim feels a bit more natural in Atom.

I still spend a lot of time on remote systems, so vim is a big part of my tool box. There's also the weight of Atom. If I'm working on big project, I get it all loaded up and work in Atom, but if I just need to tweak a thing or two in a file, vim is still my go to.

<comment><USER74> Thanks for replying.

I asked because so much people say "If you're serious about development then you need a serious editor: you should learn vim/Emacs because it's a once in a lifetime investment that will boost your productivity beyond what other tools provide". This mantra doesn't match my own experience.

I think Atom and VSCode provide 3 main advantages over vim: the out of the box experience is better; using a GUI offers a more powerful user interface; extensions are easier to install and work better.

It's like comparing fish and zsh: Atom and VSCode are more like fish; vim and Emacs are like zsh.

</comment></comment></comment></comment><comment><USER75> I've played around with VS before but, I'm thinking of switching over to this full time. I've gotten sick of the time wasted on TypeScript Errors in Webstorm, the code Completion and Typings info is ridiculously better than Intellijs offering, which has moved to SAAS :(

Getting used to things, takes a little bit.

</comment><comment><USER76> The one thing that prevented me from switching to VSCode last time I tried it was the lack of projects management (e.g. a project remembers what files were open, what folders are associated with it, and you can quickly switch between projects, like the CTRL+ALT+P list in Sublime Text).

Is there such a feature now?

<comment><USER77> Yes, the lack of a built-in project switcher is a nuisance. I'd like to have a little dropdown at the top of the (left) sidebar with project names. A keyboard shortcut plus a bit of fuzzy matching drops down the list and picks a project and _pop_ all the files in that project are loaded right where I left off. Maybe copy a few lines to the clipboard, maybe add a TODO: note to myself that just occurred to me while working on something else, then a quick keyboard shortcut and _pop_ I'm back in the other project.

Switching between multi-file projects should be almost as easy as switching files within a project.

</comment></comment><comment><USER78> Typically a SublimeText & Emacs user here. Decided to check VSCode out. Can't ctrl+shift+[a/e] to highlight to beginning/end of line? Bummer. Also, seems utterly unable to find defined symbols within a Python class within an open file--but finds non-class functions and imports as symbols just fine. It's jump-to-def is significantly better than I've seen in ST, and the peek-at-def is pretty nice. I am quite impressed with its speed, especially when near- instantly showing tooltips with the docstring descriptions when hovering over classes/functions.

Overall, fairly impressed with 30 minutes of play.

</comment><comment><USER79> Yet again, just like the other Microsoft announcements, this thread is filled with "greybeard" superstition and vitriol.

It's to the point now where the conversations are becoming like this:

"I really like this new tool from Microsoft"

Samples Response:

"But Linux is just as good if you install X, Y, Z and are willing to spend hours learning the intricacies of the kernel"

"Embrace, Extend, Extinguish"

As developers, can we all be happy that Windows users are finally getting a nice range of really wonderful tools to use?

Not everything in computing needs to be a great ideological battle, especially when the majority of us are writing simple line of business apps in our day to day careers.

</comment><comment><USER80> EDIT: Ok, forget it, I just have to press Tab twice.I thought it was strange that they launched an editor without that feature.

Original Post:

I like working with VS Code, although I'm just starting out.

But one thing bugs me: Is there a way to get VS Code to automatically complete the tags and add the closing tags?

I know about intellisense, but I fail to activate something like autocomplete. I know about Intellisense, but I'd like something that, for example, just fills in <div></div> when I am writing <di + ENTER.

I know some other editors have that feature and I know it got disabled in VS Code because of problems - can anyone elaborate and explain why?

</comment><comment><USER81> When I started using TypeScript a couple weeks ago I briefly tried out VS Code, but the VIM plugin was really, really bad (worse than Sublime's was when I used it a few years ago).

Now I'm on Atom, which has the best VIM support I've ever seen (haven't tried evil-mode, though) and seems to support a similar feature set. They felt about the same speed, too, on this 2013 Macbook Air.

Regardless, other than that quirk, I did really like VS Code, and I'm glad there's more competition in the free editor space :)

<comment><USER82> Atom's vim support is OK, but nowhere near the best. Kate (KDE), IntelliJ, and emacs EVIL all offer better support (others may, but I haven't used them). I completely agree that Atom is way ahead of VS code in vim support.

I use Atom a lot, but I wish it had support for the goto column command (pipe), proper search/replace support (it does weird things with the trailing slash, deleting words at the end of lines, and macros.

</comment></comment><comment><USER83> Just piggybacking on this thread to ask if there is a way to configure the editor so it accepts the spread operator? I'm getting errors and my Google Fu is failing me.

<comment><USER84> This is mentioned in the release notes for 1.0.0 [1].

Their suggested solution is to disable built-in JavaScript validation entirely and rely on ESLint instead.

> Some users want to use syntax constructs like the proposed ES7 Object > Rest/Spread Properties. However, these are currently not supported by Salsa > and are flagged as errors. For users who still want to use these ES7 > features, we have revived the javascript.validate.enable setting to disable > all built-in syntax checking.

[1] [https://code.visualstudio.com/Updates#_100-march-2016](https://code.visualstudio.com/Updates#_100-march-2016)

</comment></comment><comment><USER78> Ah, yes. Yet another thread in which HN devolves into hyper-religious zealots arguing over their favored denomination of code editor being the one true way.

</comment><comment><USER85> I use VSCode for ReactNative projects and absolutely love its built-in debugging capabilities. With its clean and vivid UI, it makes my code look beautiful.

</comment><comment><USER86> First impressions: felt great, supported a ton of languages, has some very powerful looking debug tools (for nodejs)

Anyone have any luck creating an extension with mac classic? Tried manually adding the theme (following their doc) and no luck. Then created a msft account to try and create a package to install it as an extension and couldn't get past 401 on create-publisher.

Back to sublime for now, but I'll keep an eye on this one.

</comment><comment><USER87> Parsing/indexing on Ubuntu 14.04 with an NFS mounted drive with a mix of C++, js and python is really slow.

[https://github.com/Microsoft/vscode/issues/5282](https://github.com/Microsoft/vscode/issues/5282)

I'm really hoping they look into this. I miss the intellisense from VS ever since I moved full time to Linux development.

</comment><comment><USER88> Go, Ruby and Python support :)

</comment><comment><USER89> Looks like they still haven't integrated the IntelliSense for Python features from the "big" Visual Studio yet. Thats a Bummer.

<comment><USER31> We're working on it. :)

<comment><USER77> Thank you!

</comment></comment></comment><comment><USER90> Version 1.0 seems to no longer support syntax highlighting for C# files. Why would they do this? Or am I the only one seeing this?

<comment><USER91> They moved the C# support into an extension in the previous version, you just need to install. [https://code.visualstudio.com/Docs/languages/csharp](https://code.visualstudio.com/Docs/languages/csharp)

<comment><USER90> Ah, thanks.

</comment></comment></comment><comment><USER92> I find Visual Studio Code much better with plugins than Atom. Atom died after installing the Nuclide plugin suite and would not work until I uninstalled those plugins. Code on the other hand runs plugins in a separate thread meaning it does not tend to dies so easily. VS Code rocks!

</comment><comment><USER93> Today I used VSCode to write a slack bot in NodeJS.

The editor experience was smooth and fast, with fast intellisense.

I had NodeJS debugging working after 5 minutes reading a VSCode NodeJS page on the VSCode site and clicking a couple of buttons in the editor.

I had a very good initial experience and will use again.

</comment><comment><USER94> This is not nice -- [https://github.com/Microsoft/vscode/issues/5275](https://github.com/Microsoft/vscode/issues/5275)

<comment><USER95> It's now an optional install:

[https://code.visualstudio.com/updates/vFebruary#_languages-c...](https://code.visualstudio.com/updates/vFebruary#_languages-c35)

<comment><USER94> The link says: "or if you already have a project with C# files, VS Code will prompt you to install the extension as soon as you open a C# file.". As a matter of fact, it doesn't.

<comment><USER96> > As a matter of fact, it doesn't.

Actually it does. I just opened one C# file and got that prompt to install C# extension, after which everything was back to normal.

</comment></comment></comment></comment><comment><USER97> I made the switch to linux in 2005. There's always been two tools I've sorely missed since that transition: excel and visual studio. Glad to see the latter finally come.

<comment><USER98> There's very little connection between Visual Studio and Visual Studio code...

<comment><USER96> In the context of 80/20 rule, they're pretty comparable.

</comment></comment></comment><comment><USER99> I'm surprised to see a LaTeX plugin maintained by Microsoft in VS Code. Seems a bit niche for first party support from Microsoft but I'm totes down!

</comment><comment><USER100> Anyone knows how can I install it on Linux (Red Hat) when I don't have admin privileges? Any portable version I can just unzip and use?

</comment><comment><USER101> I remember them announcing that they'll get rid of the coreclr dependency for debugging C++, does anyone know if that is the case?

</comment><comment><USER102> VSCode is so good.

I do wish it had a global symbol search, similar to Sublime's (cmd+shift+r). It's indispensable for code navigation.

</comment><comment><USER103> Played around a little, definitely feels better than Atom, but lack of good emacs mode will keep me from using it for now.

</comment><comment><USER104> For people like me trying out the .deb on linux: the executable to run is (somewhat cheekily) "code"

</comment><comment><USER105> you still can't split working windows vertically... which will drive me nuts with my vertical monitor!

</comment><comment><USER106> I can't find the option to open a terminal in the editor. Am I missing something? Needs a terminal pane.

<comment><USER107> You can run commands via the task runner.

If you need a real terminal - why not simply open one and split it next to Code using your window manager?

<comment><USER106> Why not simply add a terminal pane to the editor so I don't need to?

<comment><USER107> Because most people have no need for a terminal panel, so that's a feature probably better suited for an extension.

</comment></comment></comment></comment><comment><USER108> Having tried it briefly, looked much better than Atom!

I would use it at work if I could turn off the phone home feature.

<comment><USER96> > I would use it at work if I could turn off the phone home feature.

You can: [https://code.visualstudio.com/docs/supporting/faq#_how-to- di...](https://code.visualstudio.com/docs/supporting/faq#_how-to-disable- crash-reporting)

<comment><USER108> Very cool, thanks!

</comment></comment></comment><comment><USER109> Probably a good option for newbies, but anyone that's been coding for any length of time will already have too much muscle memory to warrant a switch. For me it's Emacs for editing and Visual Studio Pro for "project administration" and in the rare situation, interactive debugging. I've not yet made the leap to OmniSharp, but that's what is next.

</comment><comment><USER110> Is there a way to code and debug VB.Net-Code? Can´t find anything about it...

</comment><comment><USER111> Download page says required MacOS 10.10, but working fine on 10.9 here.

</comment><comment><USER112> I use Visual Studio Code writing nodejs application. Love it.

</comment><comment><USER113> Well we know what happens to vStudio and WPF now, don't we?

<comment><USER114> UWP has the latest version of XAML, implemented natively this time and with a faster rendering backend. WPF lives on in spirit.

<comment><USER115> Even WinForms is still around somehow, though in a "cannot be killed" legacy Form as opposed to WPF having a direct descendant in UWP.

Silverlight, though...

<comment><USER114> Silverlight is actually a descendant of WPF.

WPF > Silverlight > UWP

All your skills are transferable.

</comment></comment></comment></comment><comment><USER116> For web development, java scripting and rails dev I find Brackets to be the best ([http://brackets.io](http://brackets.io) ) , Its super easy to setup and much better than VS Code 1.0

</comment><comment><USER117> Does the mac launcher work if you primarily use python 3 now?

<comment><USER118> Yes it does! Sorry for that :)

[https://github.com/Microsoft/vscode/issues/3790](https://github.com/Microsoft/vscode/issues/3790)

</comment></comment><comment><USER119> What is a 'Folder' and why do I want one?

</comment><comment><USER120> Visual Studio Code is my successor to vim.

<comment><USER121> The successor to vim is an updated version of vim ;)

</comment></comment><comment><USER122> They finally gave column selection. Nice!

</comment><comment><USER123> What's so exciting about this? As far as I can tell it's just a pretty basic editor. Is there anything innovative in it?

<comment><USER123> Why the downvotes? Am I missing something here?

<comment><USER124> I didn't downvote, but you can easily answer your question about what's interesting/exciting about it by simply reading the other comments here. It's pretty clear this scratches the itches of more than a few devs.

<comment><USER123> I read the comments, have tried it out and concluded it's just an editor :-). Evidently other people came to different conclusions.

<comment><USER96> I wouldn't call it _just_ an editor, but rather a development tool which is context aware and provides a lot of info about the codebase you're working on, plus helps with the excellent IntelliSense / code completion.

You should take a closer look at it's features.

<comment><USER123> Maybe I am just a little spoiled by using Visual Studio, PHPStorm or Netbeans. They all have these features.

</comment></comment></comment></comment></comment></comment><comment><USER125> why the shortcut(ctrl+',', ctrl+shift+f,...) not work in visual studio code?

</comment><comment><USER126> has anyone tried refactoring support? As good as Jetbrains?

</comment><comment> awinter-py I still have the CD-ROM from visual C++ 6.0, is that better than this? (service pack 1)

</comment><comment><USER127> I'm a bit confused by people's praise of VS Code. Are people really writing software with anything less featured than that?

As someone who uses Visual Studio for everything, I have a hard time understanding how people can get anything done in Atom/Sublime/Notepad++/etc.

<comment><USER96> > As someone who uses Visual Studio for everything...

This is a classical hammer/nail example. Big red sign to me. I'm a long time Visual Studio user, and that what you are saying is exactly the problem I see in MS-based developer circles.

Visual Studio is not appropriate for everything. As a matter of fact I don't use it at all for SPA development anymore, but just for server side stuff.

However, to give you few arguments:

1\. VS Code and Sublime work on Linux/OSX/Windows and I do work on all three of those. Having the same tool is a great gain here.

2\. Editing capabilities of VSCode and Sublime are definitely superior to Visual Studio, to the point that I find myself copying pieces of code from Visual Studio to Sublime, editing it and pasting back to Visual Studio.

3\. Speed is not comparable. Visual Studio has become a bloated beast. Sometimes it takes a minute to start it, and then you enjoy busy freeze times whenever you push it just a bit harder than it likes.

All in all, I find my self being much more productive when _not_ using Visual Studio for anything except pure .NET development.

</comment></comment><comment><USER128> Isn't this based on Atom (or at least similar design)? It really makes me sad that people are making editors with so many features and nice things, but ignoring the fundamentals like latency.

[https://pavelfatin.com/typing-with-pleasure/](https://pavelfatin.com/typing- with-pleasure/)

I'm eagerly awaiting a mac version of 4coder ([http://www.4coder.net/](http://www.4coder.net/)).

<comment><USER129> Did you actually try it?

<comment><USER128> That's a fair point, I tried Atom and it felt laggy but I haven't tried this one yet.

<comment><USER130> You should. It's really quite different (and starts up faster and has, at least on my machines) barely any lag.

</comment></comment></comment></comment><comment><USER131> I think VSCode is amazing - if only I could change the colour of the blue status bar. I find it highly distracting. There's a Github issue about it, with MS saying that they may add more general customisation support in the future, but it doesn't seem like there's a short term solution.

I know it seems like such a minor thing, but I can't have that attention seeker on my screen. Which is a bummer, because I think IntelliSense and its Git integration are clear benefits over Sublime Text. And apart from this issue, I really, really like the UI.

</comment><comment><USER35> Still no CLI mode for editing text. Vim has had this for years. How am I supposed to integrate this behemoth into my work flow if I can't even run it in a terminal?

It's just too clunky for my taste.

It's also hilarious that Atom gets shat on for data collection when no one cares that VS does it too. Microsoft can do no wrong, only OSS projects have standards to live up to.

<comment><USER132> You're asking for VS Code to be a completely different product. VS Code is a GUI text editor like Sublime and Atom. There's no reason for it to run in a terminal. Vim and Emacs are classical CLI based text editors. Are you asking for an alternative to those?

<comment><USER35> First you say:

>completely different product

then call them both

>text editors

emacs and (g)vim have a gui mode.

<comment><USER132> Yes, they're both text editors, but they're completely different classes of text editors. MS Word is also a text editor, but it would be ridiculous to fault it for not having a CLI. It's nice that Emacs and Vim have GUI modes, but I doubt they're the primary way users use those editors. Emacs/Vim and VS Code/Sublime/Atom fulfill different needs and preferences.

I'm curious about your answer to this: would you argue that MS should combine Word and VS Code into one text editor?

<comment><USER133> FWIW, I recall a time when Word used have a CLI. My memory fades, but I think it was either v4 or v5.

[https://en.wikipedia.org/wiki/Microsoft_Word#Origins_and_gro...](https://en.wikipedia.org/wiki/Microsoft_Word#Origins_and_growth)

The Internet Archive seems to have a version listed on the 'Abandonware' listings.

[https://archive.org/details/msdos_microsoft_word5](https://archive.org/details/msdos_microsoft_word5)</comment></comment></comment></comment></comment>


Google at Carson's Speed - <AUTHOR> http://www.cringely.com/2011/05/google-at-carsons-speed/

<comment><USER2> Either I don't understand something, or else this article contradicts itself.

Apparently Google determined that they were spending more on electricity than on silicon. And in their massively parallel world, 3 processors running at 1/3 speed are just as good as 1 running at full speed. So they buy more machines, underpower them, and get the same results at lower cost.

As a result, Cringely claims, they have more computing power than they are using, and they think about what to do with that extra power. But I reply: they only have excess cycles if they switch back to running their servers at higher power. And they've already decided not to do that. Thus, no excess cycles, no unintended consequences, no "lead foot".

Right? Am I missing something? Is Cringely?

<comment><AUTHOR> I posted this article because I found it thought-provoking, and I hadn't heard of the Breguet Number and Carson's Speed. But it does seem to me rather half- baked (or even only one third ;-).

I was hoping that someone else would set the mess straight, including sorting out the vague definitions, but no such lazyweb luck this time ...

First thing that looks wrong to me is that server power estimate at one-third. I occasionally see CPU reviews with white-boxes benchmarking at something like 120W for idle power and 200W for full-throttle work, for CPUs rated at 90W or so. Perhaps racked servers have less overhead, but I doubt they do any significant work at 1/3 of full power. But I'd be happy to be contradicted by someone with real info.

P.S. Coincidentally, in the LWN piece I also linked yesterday (<http://news.ycombinator.com/item?id=2564007> ), commenters samth and incase provided links to info about an IBM Research tool (Performance Analysis of Idle Programs, by Erik Altman et al.). Web page: [https://researcher.ibm.com/researcher/view_project.php?id=13...](https://researcher.ibm.com/researcher/view_project.php?id=1332) . PDF paper: [https://researcher.ibm.com/researcher/files/us- sjfink/res000...](https://researcher.ibm.com/researcher/files/us- sjfink/res0000076-altman.pdf)

<comment><USER2> Well, it _was_ thought-provoking. And I also had never heard of the Breguet Number & Carson's speed. So thanks for posting.

EDIT: Carson's speed is clearly a real concept. However, a web search turns up nothing about the Breguet Number. Are we sure Cringely isn't just making this up?

Also, FWIW, my original point (see GP by me) is also made in the comment by NoTalentHack on Cringely's site.</comment></comment></comment>


PyLucid – A Lucid Interpreter Written in Python - <AUTHOR> https://billwadge.wordpress.com/2019/12/04/pylucid-a-lucid-interpreter-written-in-python/ <comment><USER2> Fascinating - after several years of designing and a year of implementation, I'm running a closed beta of an LLVM-compiled language (general purpose but made for audio and dsp) that was strongly influenced by Lucid. For performance reasons it's not strictly "push" dataflow like Lucid, rather it pulls the output. It's a mix of dataflow from Lucid and type system from Haskell, aimed towards being performant and practical. [https://www.elasticaudio.com/](https://www.elasticaudio.com/)

Outside of monitoring systems and hardware specifications, dataflow has been sorely overlooked, and Lucid is truly mind-bending. I could see dataflow becoming more relevant as Moore's law and performance/cost benefits start scaling horizontally, while functional languages are seeing more practical use. Potential uses include Audio, obviously, but UI, graphics, and anything that involves pipelines calling to outside environments.

 _EDIT_ I see PyLucid implements what Wadge calls "demand-driven dataflow" which I think is equivalent to "pull dataflow", though the ideal Lucid implements "eager dataflow" (I believe equivalent to my term "push dataflow")

</comment><comment><USER3> Looks like this may be the corresponding Github repo?

[https://github.com/billwadge/pyLucid](https://github.com/billwadge/pyLucid)

</comment><comment><USER4> I don't remember how Lucid compares, but the SISAL heritage probably needs reviving too. (Dataflow work is happening again at Manchester -- one of the dataflow hardware and SISAL sites -- via OpenStream for parallel programming.)

Concerning POP, I think it lives to some extent in Poplog, though I don't know how alive that currently is.

Correction: I realize the article refers to POP-2, and POP-11 is in Poplog. I actually rescued an ancient POP-2 manual from the bin recently, but I don't know how POP-11 compares.

</comment><comment><USER5> There are at least 2 other projects with the name PyLucid: \- [https://github.com/jedie/PyLucid](https://github.com/jedie/PyLucid) \- [https://github.com/yelantingfeng/pyLucid](https://github.com/yelantingfeng/pyLucid)

You might want to consider other names

<comment><USER6> What would you call a reference interpreter for the Lucid programming language? I understand your point, but nomenclature is not somehow first-come- first-serve; there are such things as better and worse uses for names.</comment></comment>


Facebook tests fighting revenge porn by asking users to file nude photos first - <AUTHOR> https://www.cnbc.com/2017/11/08/facebook-revenge-porn-fix-includes-asking-users-to-file-nude-photos.html <comment><AUTHOR> From my perspective, this and similar programs, like Amazon Key for example, shifts the responsibility of a company's liabilities to the consumer, and generally leaves a bad taste. I think these programs are poorly conceived with the wrong motivation and self-serving intentions. I think it would be a good thing if consumers recognized these for what they are and pushed back against them.

</comment><comment><USER2> Duplicate of [https://news.ycombinator.com/item?id=15648080](https://news.ycombinator.com/item?id=15648080) and others.</comment>


ZeroBin, opensource Pastebin where the server has zero knowledge of pasted data - <AUTHOR> http://sebsauvage.net/paste/ <comment><USER2> The genius of this is the realization that browsers do not send the named anchor (technically "fragment identifier"[1]) to the server. Using the named anchor as the cryptographic key enables users to pass around simple URLs to encrypted data. Data is stored on the server, but the server never has access to the complete URL with the key, so it cannot decrypt it.

As others have pointed out, this doesn't protect the data from a compromised server, but I think it has a different motivation.

It appears the purpose of this is to reduce the liability of whoever is running the server. Perfect for magnet links and such.

This is another step in the right direction of protecting the web and its maintainers from legislation.

[1] <http://www.w3.org/TR/html401/intro/intro.html#fragment-uri>

<comment><USER3> Interesting... but bafflingly, doesn't the URL shortener service they provide totally defeat this?

<http://snipurl.com/230jiso>

They allow you to shorten the URL by using another service. But now snipurl.com has your URL fragment and can read your stuff!

<comment><USER4> No, because the goal isn't to protect the user's data from being "leaked", it's to protect the user from the hosting site (zerobin) being forced to take down their posts.

<comment><USER5> So what happens when Zerobin or SnipURL is ordered to take down "all posts from the same client IP address as the post with the shortened URL of ..."?

<comment><USER2> Don't log IPs? End user IP's are mostly dynamic anyway.

<comment><USER6> And run the entire server out of memory. 64GB of ram is cheap on servers now; you boot from a write-protected flash drive, and everything is done in memory. If you power the box down, anything stored in ram is lost.

<comment><USER7> _> If you power the box down, anything stored in ram is lost._

That's the theory of ideal RAM, but in practice RAM is not ideally volatile. Cf.: <http://en.wikipedia.org/wiki/Cold_boot_attack>

<comment><USER6> I believe that in almost all cases, the LEO tasked with seizing equipment in an operation are going to be ill-equipped to execute this attack. Now, if its the CIA or NSA after you, you have other problems.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> It's not really true that (due to the data being encrypted client side) your data is safe even if someone were to gain control of the server. It's something often claimed by these "Host Proof" style services.

As long as you are downloading the client side code from the server, someone just needs to make a small change to the javascript and they get access to your data.

Only if you can trust the code, and then make certain that the code does not change, is your data truly safe from the host.

Cortesi (<http://corte.si>) has done some interesting writing on the subject. <http://corte.si/posts/security/hostproof.html>

He implemented a similar service (<http://cryp.sr> \+ <http://corte.si/posts/security/crypsr.html> ), and also worked on creating a browser addon that would verify a webpage against a known hash (<https://github.com/cortesi/apphash>).

Here are a couple of HN submissions on cryp.sr which have some discussions on the "Host Proof" concept:

<https://news.ycombinator.com/item?id=1438552>

<https://news.ycombinator.com/item?id=1226277>

<comment><USER9> They actually mention this in the "drawbacks" section of the project page:

>Won't protect against Man-in-the-middle attacks (eg. javascript substitution)

I think it is pretty much the case that anything that works as man-in-the- middle will also work if an endpoint is compromised.

<comment><USER10> If you did not trust the supplied server, you can host the javascript (including the support libraries) on a server _you_ control (and, theoretically, can trust) by making your own web site. I would expect it to be pretty simple to store the data on your server or on a third party server, e.g. S3.

</comment></comment></comment><comment><USER11> Hm. I ran this with Fiddler running; and I saw exactly what they claimed. I received a cypher text and the client rendered it.

More importantly, I noticed another query before it: GET /qsml.aspx?query=http%3A%2F%2Fsebsauvage.net%2Fpaste%2F%3F9f9ee11adc3a2093%2312WGK1zDE5Nqpz8mwVa%2BA%2BQQ8%2F12zJqHb5935uRvWdw

Bing was searching for my link on the internet in case it wasn't a URL. Knowing this, couldn't someone demand Google give them someone's search history to sebsauvage.net; and, if whole URIs are returned, the anchor tag will also be provided?

This doesn't seem completely private. The webserver may not know what's in your text; but your search providers will; or will have the knowledge to be able to.

</comment><comment><USER12> i made a chatroom implementation on exactly the same principal a few years ago using long polling. the password to the chatroom served as the client-side encryption/decryption key, the encryption algo was AES and a random IV per word.

here is the algo i was using for the client-side enc/dec.

<http://www.myersdaily.org/joseph/javascript/alphac.html>

<comment><USER13> Sorry dude, your home-brew encryption scheme (not AES) is trivially breakable.

All messages with the same key are XORed with the same stream of data, given more than one message encrypted with the same key that is trivially reversible - see any cryptography text book for details. Your "seed" doesn't help because you include it in the message...

<comment><USER12> heh, well it was a prototype. nothing in production.

the crypto scheme was randomized between 3 algos to reduce the statistical data size for each. one was AES, one was alphacrypt, another one was something else. the json protocol exchanged an algo_id which was stored with each message.

as for home-brew, i used the encrypt/decrypt code i found at the provided location. i'm no crypto expert and the guy claims to have a mathematics PhD with "Eleven years of publishing scientific and technical papers (computer science and higher-level mathematics)", so hopefully his security assertions are not entirely without merit.

the key is not stored anywhere. it must be exchanged by other secure means, just like any symmetric encryption/AES.

if you encrypt "a" using a key "foo" and the lib selects a random seed char to tack onto every word, there can (from what i understand) be 255 variations to encode the same plaintext word...and this set varies for each key.

storing the seed, like storing a salt doesn't seem like it would help much. so it's not immediately obvious that having access to many messages encrypted using the same key would allow you to do any kind of trivial statistical analysis other than on word length alone.

if it is in fact trivially breakable, i would love to see it implemented by simply having access to the encryption code and ciphertext of 5 different messages of several words in length encoded using the same key 100 times each.

it'd be awesome to learn more about crypto....and about 100 other topics, too :)

<comment><USER14> First of all the "seed" is bupkis because it's not actually used in the encryption - it's just used to xor the ciphertext, and then sent along with it. You can trivially reverse that step and then get on attacking the rest of it.

After that, the attack is elementary:

You have two plaintexts, A and B. These are both xored with the same keystream X, so the attacker has access to both A ^ X and B ^ X.

Xoring both cipherstreams gives you A ^ X ^ B ^ X, which is equivalent to A ^ B.

Do you see the problem yet, or do I need to continue?

EDIT: The real point is if you're not a crypto expert, don't write crypto code. (If you are a crypto expert, you already know better than to try writing your own crypto code). Also, don't trust obscure web pages that present crypto implementations - use a widely-known (and hence widely-vetted) implementation instead.

<comment><USER12> maybe will just stick with the AES, then.

thanks for the info!

<comment><USER13> "The Code Book" by Simon Singh is awesome reading. It certainly explains how and why naive schemes like this are easy to crack.

<http://amzn.com/0385495323>

</comment></comment></comment></comment></comment></comment><comment><USER15> I was expecting this as soon as I saw that the CEO of Pastebin (or whoever he was, I don't remember) said that they will put a stop to posts from Anonymous and such.

</comment><comment><USER16> The problem is always that we have to TRUST the server's claims about all this. I think the web should be enhanced with httpc

<http://news.ycombinator.com/item?id=2024164>

<comment><USER17> You could save a local copy of the html and javascript to make sure you're using the same code every time. You'd probably have to make a few tiny changes (absolute/relative URLs, etc), though.

<comment><USER5> Or you could just use PGP.

<comment><USER16> How would PGP solve the problem of knowing that a resource on the internet didn't change? Doesn't someone have to verify this, which is the point of httpc?

</comment></comment></comment></comment><comment><USER18> I don't see ZeroBin fulfilling any useful purpose for the following two reasons:

1) The encryption and decryption features do not provide data confidentiality to users because the encryption/decryption environment is not controlled by the end users. The host retains complete control over the algorithms used and the input and handling of keys and plaintext. Users would need to verify that the client-side environment is safe to use on every single page load.

2) The host will still be legally required to block access to encrypted messages once someone sends them a URL containing the key. Furthermore, the host will still be liable to produce log files identifying users. Extensive case law exists in multiple countries to support these two statements.

Similar comments were made in the HN discussion of CrypTweet[1].

[1] <https://news.ycombinator.com/item?id=3611453>

</comment><comment><USER19> So it's basicly <https://ezcrypt.it/> with longer urls, a url shortener which breaks any measure of confidentiality, a less polished UI (which is kind of sad since it is basicly a rip anyway), and broken SSL, which, for all it's faults, will still help to protect the integrity of the javascript which is critical to the security. _yaaaaawn_

<comment><USER20> But ezcrypt.it's source doesn't seem to be released, which would be nice.

<comment><USER19> It will be up shortly. <https://github.com/novaking/ezcrypt>

<comment><USER20> Hi, I've noticed that ezcrypt has started out started out on github but hasn't gotten past the first readme. Can anything be done to help it be fully published?

</comment></comment></comment></comment><comment><USER21> Interesting. This is similar to an idea I've had for a privacy-sensitive version of Facebook ("Faceless"?) that uses public key encryption at the client to prevent the servers from being able to read anything posted.

When you post new content to your friend list, your client uses your private key & your friends' public keys to post a separate encrypted copy of the content for each friend. Thus only they (and you) can read the content.

Note before people point out all the flaws in this idea =)... I'm aware that this would have problems on the key management side of things, plus one- encrypted-post-per-friend would get computationally (and bandwidth) intensive as your friend list (or "circle") increased in size. I'm also not convinced people actually want this - Facebook has made it abundantly clear that most people don't care about online privacy.

I would use it, though!

</comment><comment><USER22> So, the same thing as <https://ezcrypt.it/> ?

<comment><USER20> Not exactly unless I missed their project page where they released their source. I'd be very glad if it existed somewhere.

</comment></comment><comment><USER23> This is so ingenious that it baffles me how no one thought of it before.

Needs an alternative way of unlocking. A short link and then a passphrase generating key.

<comment><USER19> Oh, but someone did think of it before. <https://ezcrypt.it>

</comment></comment><comment><USER24> Interesting project. If you're the developer - I would like to see the ability to view the encrypted message without viewing the page source.

</comment><comment><USER25> I'm not sure that is true. If the link automatically decrypts the paste then you could use server logs to get the plaintext of the document.

<comment><USER26> From my understanding, the link contains 2 parts -- paste ID, and decryption key _following_ a "#". Assuming the latter isn't going into the server logs (I believe the fragment identifier isn't sent in headers at all, unless there's JS on the page to tell the server about it), the actual decryption seems to be taking place via javascript (as well as the encryption to begin with), and therefore the encryption key has no reason to be sent to the server at any point.

</comment></comment><comment><USER27> I'd like to see some improvements like making the ciphertext directly readable (and writeable) so that we can copy and paste the text into (and out of) true client-side decryption that doesn't rely on code served from the same server. This is one of those cases where it's highly secure in theory, but in practice may not be secure if the server is compromised.

</comment><comment><USER28> This is interesting!

It really is true that if you have an idea there is already someone also working on it. I have been putting together something very similar and I'm just days away from launching it. I just set up the server last night. I will have to get it up ASAP now. Fortunately its a little different to this but built on a very similar concept.

</comment><comment><USER29> "kittens will die if you abuse this service" means "we have no reasonable method to stop you abusing this service".

<comment><USER30> They probably have the same methods as any other pastebin: block IPs which send an unreasonable quantity of data.

</comment></comment><comment><USER31> Projects like this scare me considering the issues PasteBin has in regards to sensitive data being shared illegally; and that was without encryption. I'm foreseeing legal hiccups and requirements for policing the content.

<comment><USER32> Real criminals can:

\- Host such data off of a server bought with a stolen credit card and accessed via anonymous proxies.

\- Use any of the normal pastebin sides out there with offline encryption methods. (E.g. use PGP + copy/paste encrypted text into browser)

\- Host such data off of a hacked server.

I don't really see how ZeroBin is scary. You could even do something like this: <https://dgl.cx/wikipedia-dns> with a hacked domain account + a hacked server. I'm sure the amount of traffic could be small enough for the hack to remain hidden for a long time.

</comment></comment><comment><USER33> Interesting. I'll still stick with KDE paste for their api, but seems promising

</comment><comment><USER34> How is the service able to verify the key? In the screenshots it says "Could not decrypt data (Wrong key ?)"

Shouldn't a wrong key decrypt the text to just unreadable garbage?

</comment><comment><USER35> Very clever.....now do it for files :D

</comment><comment><USER36> would there be any use for a "n of m" version? you'd somehow generate m urls, and any n of them would allow you to recover the secret. i guess instead of urls they would be separate parameters, but otherwise it should be doable, right? can't think of any uses, though...

<comment><USER37> This would be easy to implement via a secret sharing scheme, where shares of the secret are maybe stored in local storage until enough of them are collected in the browser to recover the encryption key. But I can't really think of a compelling use case either.

</comment></comment><comment><USER38> I'm not sure how this is any different than a pastebin service over https. The data is encrypted in teh browser meaning that someone won't be able to snoop (if that's a concern for some reason) but there is nothing stopping the server admins from seeing your data as long as the server is storing the encrypted data and the decryption keys. Am I missing something?

<comment><USER39> you are missing something, read their project page which states:

"The key is never transmitted to the server, which therefore cannot decrypt data."

but it does seem like the resulting queries could be stored in the servers logs, as the key needs to be part of the request? edit: no it doesn't, I needed to read more :) the key is the anchor part of the URL. neat!

</comment></comment><comment><USER40> Awesome. I needed a nice pastebin for our intranet :)

</comment><comment><USER41> Source code not available yet apparently.

</comment><comment><USER42> Imma gonna paste my data where nobody can see. Imma gonna paste my data where it can be truly free. Imma gonna paste my data in grandma's apple tree.

Imma gonna clear all my caches and de-bank my cash. Imma gonna get a plane ticket to the Isle of San Mosh. Imma gonna get away from The Man, away from all this tosh.

Imma gonna paste my data where nobody can see. Imma gonna paste my data where it can be truly free. Imma gonna paste my data in grandma's apple tree.

</comment><comment><USER43> Phrases like "Kittens will die if you abuse this service" make me uncomfortable. Just replace it with "Privacy & Terms comming soon".

I continue to read unprofessional things like that in the startup environment. I'd say leave the humor to your customers. Just my opinion. People always talk about "scaling". A phrase like that does not.</comment>


Show HN: John McAfee's Last Stand - Joshua Davis [ebook] - <AUTHOR>

I stumbled upon this ebook while randomly browsing Amazon and thought it might be of interest to the HN crowd. Unfortunately HN immediately auto-flagged the amazon link so allow me to post it in this round-about way instead.
The book is written by WIRED's Joshua Davis who apparently had access to McAfee before he went on the run.
Note: I'll post a clicky link below, since all links in the OP post aren't. <comment><AUTHOR> clicky: <http://amzn.to/TKjOlb></comment>


Suggested YC News CSS patch - <AUTHOR>

Currently, you can use a line-leading-space to create a PRE+CODE block in a YC News story or comment. This has an intended, usually desirable effect -- the PRE+CODE text does not wrap. If the PRE+CODE text includes a long line, however, there is another usually undesirable effect -- the width of the enclosing block element grows, and then even non PRE+CODE text anywhere on the page fails to wrap. Reading even simple unrelated paragraphs/comments then requires horizontal scrolling.
Here is the above paragraph with a leading space to trigger/demonstrate the problem:

 Currently, you can use a line-leading-space to create a PRE+CODE block in a YC News story or comment. This has an intended, usually desirable effect -- the PRE+CODE text does not wrap. If the PRE+CODE text includes a long line, however, there is another usually undesirable effect -- the width of the enclosing block element grows, and then even *non* PRE+CODE text anywhere on the page fails to wrap. Reading even simple unrelated paragraphs/comments then requires horizontal scrolling.
 A simple fix would be be to add to the news.css stylesheet:

 pre {overflow:auto}
 Then, the PRE block will get its own horizontal scrollbar, when necessary. <comment><USER2> While we're at it, maybe add

a { text-decoration: underline; }

to force link underlining.

The current CSS relies on the browser for this; since the links on Hacker News are reasonably close in color to the background text, users who disable link underlining in their browsers may have trouble seeing them.

</comment><comment><USER3> I just tried adding it, and in my browser the long line just gets cropped at the edge of the table; there is no scrollbar. Is there something else I need to add or change?

(Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:126.96.36.199) Gecko/20060728 Firefox/18.104.22.168)

<comment><USER4> It works for me on Firefox (Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:126.96.36.199) Gecko/20071127 Firefox/188.8.131.52) but it doesn't work on Safari. (Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10)

</comment></comment><comment><AUTHOR> Thanks for applying the change!

I now see, though, that on a _single-line_ my Firefox [Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:22.214.171.124) Gecko/20071127 Firefox/188.8.131.52] for some reason only clips, rather than adding the intended scrollbar. For example:

     Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor

As soon as there's _more than one line_ in the PRE, the expected scrollbar appears:

     Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor Lorem ipsum dolor
     Lorem ipsum dolor

The CSS change helps in the common multiline case but could still be improved. Tinkering a bit, I find adding a small padding helps trigger the scrollbar. Specifically, try this:

     pre {overflow:auto; padding:2px}

Unsure why this is necessary, suspect a browser limitation, where only a vertical trigger causes both horizontal and vertical scrollbars to be considered.

Oh, and I also see it doesn't help at all in IE7, but at least it leaves things no worse. Can't help there, IE users are on their own.

<comment><USER3> I added the padding and now the scrollbar appears in my browser for one line examples.

I think I actually like it best with cropping instead of the scrollbar. The curious can still get at the text by widening the browser or copying and pasting. Is there any way to get just cropping?

<comment><AUTHOR> CSS property

     overflow:hidden

...should just crop.

If the transition text-jump isn't too annoying, this might also be interesting:

     pre {overflow:hidden; padding:2px}
     pre:hover {overflow:auto}

PRE blocks would be clipped until mouseover, when a scrollbar would appear if necessary (bumping following text down).

<comment><USER3> I just added your solution (handy to have a repl in the server) and it works well. Thanks very much; this had been bugging me for a long time.

<comment><USER5> It works fine in Opera, but it still makes the whole window scroll on the newest nightly build of Firefox 3 like before the patch was applied.

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b3pre) Gecko/2007122605 Minefield/3.0b3pre

</comment></comment></comment></comment></comment><comment><USER6> i don't get it. for me (safari on mac) they both go off horizontally. so it's not a problem specific to pre. and horizontal scrollbars suck anyway.

<comment><USER7> The problem IS specific to pre. The problem is that a long line in a pre makes the page wider and then the other paragraphs uses all the available space (wich is larger than the screen, and then horizontal scrollbars appear).

With the patch proposed by gojomo, a long line in a pre will not make the page wider so the other paragraphs would work correctly. Evidently, the pre line will still be long so horizontal scrollbars will be still necessary but only within the pre.</comment></comment>


Unpaid Interns: Real World Work Or Just Free Labor? - <AUTHOR> http://www.npr.org/2011/11/16/142224360/unpaid-interns-real-world-work-or-just-free-labor <comment><USER2> Here's an excellent job-market signal for college students to check: if an internship is unpaid, bail out of that occupation. Students pursuing worthwhile majors and learning skills that are truly in demand should be able to obtain PAID internships with a routine expectation that successful interns will be offered full-time employment at the same company, as my oldest son did last summer.</comment>


The states people really want to move to – and those they don't - <AUTHOR> https://www.washingtonpost.com/news/wonk/wp/2015/12/28/the-states-that-are-seeing-a-boom-in-population-and-the-states-that-arent <comment><USER2> Something I notice is that the country as a whole is becoming a whole lot more like those states no-one wants to live in (e.g. New York, New Jersey, California & Illinois) and a whole lot less like those states people want to be in (e.g. Texas). That doesn't seem good.</comment>


Ask HN: Any open source alternatives to intercom.io? - <AUTHOR> intercom.io is excellent, but can be quite costly for a startup. Anyone know of any open source alternatives? <comment><USER2> Serious question: What would you be willing to pay for Intercom? Which features would you use the most?

Intercom is a cross between a CRM, Marketing Automation, Support and Live chat. There are open source alternatives for each of these product lines

<comment><AUTHOR> Particularly the Support (collaborative inbox) and Live chat

<comment><USER2> For Live chat, there are a couple of options like LiveHelperChat/Livezilla. In the end, I ended up using Olark, since I didn't want to maintain one more service.

For support - It really depends upon your use case and volume. One non-open source alternative is Google Groups - You can configure a Google Group as a Collaborative inbox

</comment></comment></comment><comment><USER3> I'm looking for a cheaper automation system. Startup with not many customers. Starting point seems to be $49 for most of these companies. Drip, ConvertKit, Intercom etc

</comment><comment><USER4> Intercom does a lot. Any part in particular you're looking to use?

</comment><comment><USER5> Check chat.center

</comment><comment><USER6> Alternative for intercom: [https://userengage.io](https://userengage.io) Have a free plan.</comment>


Ask HN: Is encryption safe enough to publish encrypted copy of private data - <AUTHOR> If we have private data, encrypted using best practices (salted, 2048bit keys, private keys stored off line, etc), is it considered safe to post this encrypted data in a publicly accessible location?<p>Imagine if everyone encrypted and published a tarball of their email history. Would this data be considered "vulnerable" to attacks ? <comment><USER2> Any form of encryption can be cracked eventually, given enough time and processing power. What if a new type of supercomputer is invented tomorrow that can crack 2048 bit in minutes? Not publishing your data would give you the opportunity to re-encrypt using the latest method.

</comment><comment><USER3> One must assume encrypted content will not be safe in the future. I would also be leery of anything that says "perfect". e.g. Perfect Forward Secrecy. In the future, we may be making fun of that.

</comment><comment><AUTHOR> I am more worried about the obvious attack of sending a person a large known plaintext, and then using this to decrypt his tarball.</comment>


French pro freerider was asked to get work visa to attend Redbull Rampage (USA) - <AUTHOR> https://www.pinkbike.com/news/remy-metailler-denied-us-entry-wont-be-at-rampage.html <comment><USER2> Exactly as he should have. He was traveling for commercial purposes and cannot use a travel visa. Nearly every country in the world requires commercial travel visas if you plan to work in the country.

For a professional rider, these competitions are work.

<comment><USER3> Depends on whether you get paid even if you come in last place. If its only the top few that get money then I disagree. The article doesn't make it clear.

<comment><USER4> Sponsorships still pay you if you lose

<comment><USER3> The sponsored kayakers that I knew got free kit and that was about it. Admittedly biking is a bigger sport, so maybe thats the case there.</comment></comment></comment></comment>


Python: Why can't we write list.len()? - <AUTHOR> http://stupidpythonideas.blogspot.com/2016/02/unified-call-syntax.html <comment><USER2> > It's become part of the "modern C++ dogma" that free functions are part of a

> type's interface, just like public members. But some things that are part of > a

> type's interface, you call function-style; others, you call dot-style—and,

> because there's no rhyme or reason behind the distinction, you just have to

> memorize which are which. And, when designing types, and protocols for those

> types to interact with, you have to pick one arbitrarily, and be careful to > be

> consistent everywhere.

Is this really it though? I don't agree that "there's no rhyme or reason behind the distinction." In fact, it's probably because non-member functions improve encapsulation [1], and because it is not possible to calculate the length of an internal buffer in C++ from outside the class. Unlike in Python, you can't access "private" or implementation specific members in a C++ class, so getting the length of a list or vector is something that has to be part of the class. On the other hand, you can access elements of a class without needing the underlying implementation, so it's reasonable to write a find procedure that is separate from the class itself.

For this reason, you're not "pick[ing] one [protocol] arbitrarily," you're doing it to preserve encapsulation and thus have a stronger object orientation. Perhaps the author can shed some light on what they meant here.

EDIT: minor formatting of quote

[1] [http://www.drdobbs.com/cpp/how-non-member-functions- improve-...](http://www.drdobbs.com/cpp/how-non-member-functions-improve- encapsu/184401197)

</comment><comment><USER3> Because len() is a global function. That's perfectly fine in an OO system (everything does not have to be an object, attribute or method). Sure, it's not as consistent as anything.len(), but it works just fine. That's often the reason why Ruby claims to be a cleaner OO implementation than Python.

To me, Python really shows its warts when reversing a string. Something you never do out side of school (or on big ending to little endinan conversions).

In Python 2:

        string[::-1]

In Ruby:

        string.reverse()

Now that's mind boggling and totally yucky.</comment>


China adopts cyber security law in face of overseas opposition - <AUTHOR> http://www.reuters.com/article/us-china-parliament-cyber-idUSKBN132049 <comment><AUTHOR> A translation of the draft -

[http://chinalawtranslate.com/%E3%80%8A%E7%BD%91%E7%BB%9C%E5%...](http://chinalawtranslate.com/%E3%80%8A%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E6%B3%95%E3%80%8B%E8%8D%89%E6%A1%88-%E4%B8%89%E6%AC%A1%E5%AE%A1%E8%AE%AE%E7%A8%BF%EF%BC%88%E5%85%A8%E6%96%87%EF%BC%89/?lang=en)</comment>