Visual Studio 2017 Launch [video] - <AUTHOR> https://launch.visualstudio.com/ <comment><USER2> Its a great sense of relief to finally ship this product, we really hope folks give it a try and join our live keynote which is streaming now at [http://launch.visualstudio.com](http://launch.visualstudio.com)

<comment><USER3> As a newcomer to .net I was really confused by the lacking refactoring support in Visual Studio (yes, things we spoiled Java brats take for granted like extract method, extract class, move to separate file etc).

Is this available in VS 2017?

Edit: and live unit testing! I was looking forward to that until I found out it was only available in the enterprise version. (And yes, here you have an edge on Java anyway I think)

<comment><USER4> I think "most everyone" just uses Resharper - Microsoft kind of has a background of letting a healthy ecosystem of 3rd party addin providers exist, and only gradually incorporates the best features into the core product.

<comment><USER5> Most times when someone complains that Visual Studio is slow, you'll find they have Resharper installed.

<comment><USER6> Hard to live without though! I upgraded my PC to a 4.2ghz six core 6850k i7, 32gb ram and a 950 Pro NVME soon after I started dev in C#.

It was still slow, but somewhat less so. :)

</comment></comment></comment></comment></comment><comment><USER7> Where did the ISO:s go? Please give us something with a known hash.

I attempted to create the offline installer [1] but the vs_community.exe just silently quit after some mintues, having downloaded only some certificates.

The custom download idea is easily planted with malware and all those bad things. Also, please consider upgrading from SHA-1.

> We understand that a lot of customers want an offline installer for Visual > Studio 2017. Even though we don't offer an ISO image, it's easy to create > your own.

1: [https://docs.microsoft.com/en- us/visualstudio/install/create...](https://docs.microsoft.com/en- us/visualstudio/install/create-an-offline-installation-of-visual-studio)

<comment><USER8> A few quick thoughts on the topic of ISOs, to give you all a little extra context.

1\. Visual Studio 2017 is a huge product, because we support so many types of development: from Android to UWP to C++ to Unity to Linux. If we were to still offer a 'full' install, it would come in at over 50GB. That's one huge ISO image!

2\. We surveyed hundreds of people during the previews and RCs, and people told us that they had historically used an ISO for two reasons: (i) because they wanted to download once and create a network install for enterprise deployment; (ii) because they had a shaky internet connection and wanted to be sure they'd downloaded successfully before installing. A single monolithic ISO isn't the best solution for either of those scenarios - it's just the one that people are habituated to over all these years.

3\. For the former (enterprise deployment), we have a full administrators' guide that provides detailed guidance on how to deploy the product: [https://docs.microsoft.com/en- us/visualstudio/install/visual...](https://docs.microsoft.com/en- us/visualstudio/install/visual-studio-administrator-guide). This includes PowerShell scripts, examples of using the installer to create and update a network cache, descriptions of how to deploy Visual Studio in a fully offline environment, and so on.

4\. For the latter, we've worked really hard to improve the robustness of the installer. The componentization work we've done means that the smallest install is one-tenth the size of Visual Studio 2015, making it far more likely to succeed. And other typical installs are smaller too. We download VS in small packages that are more likely to succeed, and we use multiple ways (WebClient, BITS, WinInet) to download those files to minimize problems with AV and proxy software. If you want to download first then install, you can use the offline guide to cache just those pieces that you need, which we've just rewritten for RTW: [https://docs.microsoft.com/en- us/visualstudio/install/create...](https://docs.microsoft.com/en- us/visualstudio/install/create-an-offline-installation-of-visual-studio)

5\. Because of the nature of our product (rapidly updating, lots of third- party components), an ISO is problematic. We don't have the rights to redistribute several large components (including Android), and others update on a rapid cadence that often includes critical security fixes, meaning an ISO image is incomplete, often outdated, and potentially insecure. Most customers assume that an ISO would support offline installation, but that's not true. And so we fear that offering an ISO will just creating more disappointment.

Lastly, we're listening to requests for an ISO and paying attention to the feedback we're getting; at the same time, we're hoping that this is the release where we can gently move forward to a new model that better supports delivery of developer tools at a fast, well-maintained cadence.

Hope this is useful context. And again, we're listening :)

Tim Sneath | Visual Studio Team

<comment><USER9> The lack of an ISO is a bit anti-enterprise I feel. Working in a bank with firewalls that flag a lot of stuff as false positive blocked items using the builder is problematic. The 2015 ISOs solved a lot of issues for us in terms of building a deployment via SCCM. I'm getting a headache just thinking about trying to get pulling hundreds of packaged executables through the firewall signed off by IT Security.

I feel an ISO including only standard packages from Microsoft itself would solve a lot of issues.

Layout is really crappy around blocked files or corporate firewalls. It feels untested in anything other than a completely open environment because some of the package downloads can fail silently with a fuzzy enterprise proxy. Creating layouts for patches seems dependant on what direction the wind is blowing, I think 2015 Update 3 took about 4 tries to download everything correctly and only way to verify was reading through the logs. Also that one needed a random Windows KB update on Windows 7 which was extra fun.

Better handling for layout around error handling and validation of downloads would be a boon. It would be great if there was a way of verifying an already created layout. Is there any way?

</comment></comment></comment><comment><USER4> For those who don't know, VS community is feature wise almost identical to professional, less CodeLens, Azure benefits, and TFS features.

[https://www.visualstudio.com/vs/compare/](https://www.visualstudio.com/vs/compare/)

<comment><USER10> Note that you can't use VS community for your work if your organization has either of 1) more than 5 developers 2) more than $1 mill in revenue 3) more than 250 computers

<comment><USER11> >more than 5 developers

*more than 5 developers using visual studio community

<comment><USER10> Good point, thanks. Still close to useless for professional use, which I guess is Microsofts idea.

<comment><USER12> Good enough if your company has a small but experienced IT department with a few designers, a bunch of front-end guys on SublimeText and a handful of .NET guys.

</comment></comment></comment></comment></comment><comment><USER2> Also folks should check out or comprehensive release notes: [https://www.visualstudio.com/en- us/news/releasenotes/vs2017-...](https://www.visualstudio.com/en- us/news/releasenotes/vs2017-relnotes)

<comment><USER13> Sadly no mention of any improvements to their C compiler :( The C99 support is still incomplete and it looks like MS has given up on C.

<comment><USER14> It is called Visual C++ and hence the focus is on C++. The only C related updates are done to the extent as required by ANSI C++.

For anyone else that still wants to write straight C, there are other compilers and Microsoft has integrated clang's frontend with VC++ backend.

This has already been communicated in a few places.

Cloudfare's crash just proved once more why the world needs less C.

<comment><USER15> Your last sentence is curious because it's highly debatable whether the world needs less C to get more C++ ...

<comment><USER14> C++ provides the tools that C lacks for writing safer code.

Of course it doesn't help if people write "C with C++ compiler" and better alternatives are desired, where copy-pasting C code is not possible.

Eventually one of the current candidates will won over the roles of C and C++, except for environments married with C, like UNIX derivatives.

Until then, when the choice boils down only to C vs C++, there is no question that in regards to language features for writing safer code, C++ is the only possible answer.

<comment><USER15> C++ would not have helped as a target language for compiling Ragel, at the level the compiling is done. Actually IIRC Ragel enhanced their output to mitigate that kind of situation, and the intermediate language they target is still C.

I'm not sure anybody targets C++ as an intermediate language when emitting code at this level. (I do have written some code that emits some C++, but at a wildly different and higher level). I'm not sure this would bring any value.

<comment><USER14> Of course it would have helped if they made use of a _std::vector_ like class with bounds checking enabled, instead of a pure C array.

"Many years later we asked our customers whether they wished us to provide an option to switch off these checks in the interests of efficiency on production runs. Unanimously, they urged us not to--they already knew how frequently subscript errors occur on production runs where failure to detect them could be disastrous. I note with fear and horror that even in 1980, language designers and users have not learned this lesson. In any respectable branch of engineering, failure to observe such elementary precautions would have long been against the law. "

Hoare, 1981 -- [http://www.labouseur.com/projects/codeReckon/papers/The- Empe...](http://www.labouseur.com/projects/codeReckon/papers/The-Emperors-Old- Clothes.pdf)

<comment><USER15> I'm still unsure of the rate at which this could be a solution to leverage checked C++ library types, and whether in the precise case of the Cloudfare issue this would be applicable. However I still think that in most case if you must handle out-of-bound conditions from a checked language outputting to an unchecked one, you just emit your checking code yourself...

Also the C++ standard is 1500 pages long. I prefer to avoid knowing that as a backend language when I can...

<comment><USER14> > you just emit your checking code yourself...

Which C programmers keep failing to do, regularly, according to the CVE database.

> Also the C++ standard is 1500 pages long. I prefer to avoid knowing that as > a backend language when I can...

Which includes the libraries that C lacks.

ANSI C + POSIX isn't much shorter than that.

<comment><USER15> > Which C programmers keep failing to do, regularly, according to the CVE > database.

Again, we were talking in the context of the language used as a backend, output by a compiler using an other higher level language as the source.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> It's a live video stream, so you might be watching in the middle. Jump to the 1:10:00 mark to start watching at the beginning of the presentation.

</comment><comment><USER17> Is it viable for those of us with only a handful of GB free in our C: drives? 2015 and previous would only put a few bits in the "install location", and still pollute the C: drive with up to 20 GB of stuff of hardcoded paths.

<comment><USER17> I installed the basic C++ tools (precompiled modules, Win10 and 8.1 SDKs, etc) and it has taken 2.5GB out of my C: drive (hardcoded location for the Windows 10 Kit apparently) plus 2GB on my install location.

Then I added NodeJS tools and everything went into the C: drive.

If I select Cordova and other Android and mobile stuff it quickly complains that I do not have enough space - which suggests these tools and SDKs are hardcoded to C: as well. I have not investigated in more detail.

<comment><USER18> Windows junctions to the rescue

<comment><USER17> I recall from previous versions that attempting to use junctions would seriously screw up the updater. Given the amount of problems I had to completely uninstall vs2015 a while ago, I totally believe it.

</comment></comment></comment></comment><comment><USER19> I'm excited to use VS 2017 and generally very pleased with their C++ language support and integrations like git and cmake.

It's a minor nitpick, but I must say I was disappointed to see this issue unceremoniously closed: [https://visualstudio.uservoice.com/forums/121579-visual- stud...](https://visualstudio.uservoice.com/forums/121579-visual-studio- ide/suggestions/5672660-improve-intellisense-tooltip-for-make-shared-make)

<comment><USER20> It has been reopened.

I am curious, did you vote for this item? If so, did you receive an email when we closed it?

Thanks! Eric, VC++ Team

<comment><USER19> Cool! No I had not voted, but did now.

<comment><USER20> :D

</comment></comment></comment></comment><comment><USER21> I don't use them very much, but this stream reminds me Microsoft really does a fantastic job of presenting its work in the developer tools space.

<comment><USER2> thank you, we worked very hard on this keynote and the two day agenda. Today after keynote we'll have various interviews with Brian Harry, Miguel de Icaza, Julia Liuson and others. We'll then do various technical demos on top product features.

Tomorrow we have a full day of training for both a Web and App development track. Hope folks tune in and all the details are up on [http://launch.visualstudio.com](http://launch.visualstudio.com)

</comment></comment><comment><USER22> VS 2017 is rounding up to be the best 2017 yet released. It's much faster and packed with tons of useful new features. Pretty happy with using it!

<comment><USER22> Now only if u would fix the damn XAML editor crashes!

<comment><USER23> Have you checked out Ammy[1]? It's been great to me so far. It does hot code reloading during runtime, so no need for a crummy designer that crashes 30 times every day (the XAML designer isn't 100% WYSIWYG anyway).

Plus, IMO, the language is a lot more readable and enjoyable to author in than overly verbose XAML.

[1]: [http://www.ammyui.com/](http://www.ammyui.com/)

</comment></comment></comment><comment><USER24> I've used Visual Studio for many years.

Visual Studio 5.0 was very responsive. Visual Studio 2015 is not as responsive. Nowadays it seemes a bit bloated, even after disabling unused plugins and features.

Switched to CLion and Rider, which are not known for their speed, but feel more responsible than VS to me. That and a more affordable price and cross- platform support.

<comment><USER2> I am sorry we lost you and we're very aware of the need to improve IDE performance and have invested a lot into this release towards that goal. Just one example to read is this blog series when the product was still codenamed VS "15". [https://blogs.msdn.microsoft.com/visualstudio/2016/10/14/imp...](https://blogs.msdn.microsoft.com/visualstudio/2016/10/14/improved- overall-visual-studio-15-responsiveness/)

(VS "15" is Visual Studio 2017)

We also have Visual Studio Code for those who want a lighter code editor, see: [http://code.visualstudio.com](http://code.visualstudio.com)

<comment><USER25> My experience of installing VS Community Edition several years ago was that it downloaded a lot of dependencies when I requested a fairly basic C# and C++ environment: versions of SQLXML, Windows SDK, etc, which had to be managed and upgraded separately.

Is it much more self-contained now? perhaps via nuget?

<comment><USER26> New Installation Experience - A reduced minimum footprint for faster and more customizable installations, as well as support for offline installs.

Visual Studio IDE - A broad range of enhancements in Visual Studio 2017, including reduction in startup and solution load times, sign in and identity improvements, improved code navigation, open folder view, and connected services enable connections between your app and any service on-premises or in the cloud.

[https://www.visualstudio.com/en- us/news/releasenotes/vs2017-...](https://www.visualstudio.com/en- us/news/releasenotes/vs2017-relnotes)

</comment></comment></comment></comment><comment><USER27> Very cool that their "Mobile Center" SDK has React Native support. [0]

This looks very feature competitive with the "AWS Mobile Hub", even going beyond it with its CI app build integration with GitHub and device simulators!

Also, although they announced Amazon Pinpoint in December, there is still no support for it in their "beta" React Native Mobile SDK [0] (Which has had no commits in 5 months)

[0] [https://docs.microsoft.com/en-us/mobile- center/sdk/getting-s...](https://docs.microsoft.com/en-us/mobile- center/sdk/getting-started/React-Native)

[1] [https://github.com/awslabs/aws-sdk-react- native](https://github.com/awslabs/aws-sdk-react-native)

<comment><USER2> We also have a new video on Mobile Center if you're interested, we just released it as part of launch event:

[https://channel9.msdn.com/Events/Visual-Studio/Visual- Studio...](https://channel9.msdn.com/Events/Visual-Studio/Visual- Studio-2017-Launch/T116)

(its by the product team)

<comment><USER27> I'm curious if CodePush[0] can be used along side (or integrated into) Mobile Center.

That seems like a no-brainer if you are supporting React Native based apps.

Also, I didn't see any support for platform native Notification APIs for React Native. The current notification service is for pure-JS / Cordova[1]

[0] [https://microsoft.github.io/code-push/](https://microsoft.github.io/code- push/)

[1] [https://azure.github.io/azure-mobile-apps-js- client/](https://azure.github.io/azure-mobile-apps-js-client/)

<comment><USER28> Yes, CodePush can be used with Mobile Center - here is a demo video ([https://www.youtube.com/watch?v=lfqZ8Uy2p3U](https://www.youtube.com/watch?v=lfqZ8Uy2p3U))

CodePush will also be integrated into Mobile Center, so that you can also making CodePush a part of your CI process. We are also working on adding support for Authentication, storage, testing and Push notifications.

[I am the PM on CodePush and React Native Mobile Center stuff]

<comment><USER27> Awesome to hear!

Do you have a general timeframe?

I'm going to be deciding between Azure Mobile Center and AWS Mobile Hub in the next couple months for a personal project.

<comment><USER28> You should be able to use Mobile Center and CodePush separately today. We are planning to incrementally roll out a backward compatible solution over the next 2 months.

</comment></comment></comment></comment></comment></comment><comment><USER29> Does anyone know how to unsubscribe from the "Your Visual Studio Subscriptions update for March" spam emails from Microsoft? I think they're super annoying, and have no unsubscribe instructions _at all_. I just got one announcing this launch.

<comment><USER30> Microsoft emails are absurdly hard to unsubscribe from.

I've had to resort to dropping MS domains at our exchange edge to stop receiving them.

Their Azure sales team are even worse - I've actually had to shout (repeatedly) at them to stop them from calling me, all because I wanted to try Azure AD as a test. They're on my permanent blacklist now, I won't even consider Azure because of the constant harassment over email and phone.

<comment><USER31> The answer to any sales calls that won't stop (I found this out by happenstance):

"We're a consultancy selling services for these tools/products."

or

"We're a competitor, and I registered for your free trial for competitive research."

In my case, these are true answers, but I never get more than one sales call from anyone.

I can't help you on the email front, but it's easy to set up filters for those.

</comment></comment></comment><comment><USER32> Usually a new version of VS comes with a new version of the .net framework. It doesn't seem to be the case here. I can't see the tuples announced for VB for instance.

I am getting an error with Dim p As (x As Integer, y As Integer) saying that I am missing a reference to 'System.Runtime.CompilerServices.TupleElementNamesAttribute' (but if tuples are part of the language why do I need an external reference? and this assembly doesn't seem to exist anyway). In fact right now a simple empty command line program containing nothing more than the below hangs the VS IDE completely...

      Module Module1

        Sub Main()
            Dim p As (x As Integer, y As Integer)
        End Sub

      End Module

<comment><USER33> I can't comment for VB or the error you're getting, but System.ValueTuple is a nu-get package that facilitates the new tuples in C#; so maybe try including that in your project?

<comment><USER32> But how can it be called a new language feature if it's not supported unless I add some external references (and the what's new page doesn't make any reference to a nuget package).

<comment><USER34> Hi CM, i'm Cyrus, a developer on the C#/VB IDE.

First: The benefit of this approach is that people can now use this sort of feature down-level. i.e. you can interoperate with this code even if you're on a previous version of C# or VB. Also, it means that the libraries can be rev'ed independently of compiler and IDE releases. There's a lot of value in having this sort of thing. And in the past people would rightfully complain about the lockstep nature of wanting to adopt a language feature, but having to switch over an entire toolchain to do so.

Second: We actually do have a feature to help you out here. It's available in C# in RTM and will be in VB in the next update. If you enable: Tools | Options | Text Editor | (C#/VB) | Advanced | 'Suggest usings for types in NuGet packages'

then we'll offer to add the NuGet package for this for you when you use a tuple.

We'd like to eventually make this option on by default. However, there is a memory cost to it, and we'll need to win back that memory usage in some way so that we can abide by our commitment to VS using less memory and being more lightweight by default than previous versions.

<comment><USER32> But, to repeat another comment I made below, are you satisfied with this solution? Would you expect to have to go to a package manager to use tuples in python? The power of .net, and of visual basic in particular was its simplicity. What I am seing is Microsoft going into the opposite direction, with an ever more fractured ecosystem, .net, .net core, .net portable and .net standard running in parallel. Asp.net and asp.net core running in parallel, winform, wpf, winRT apps, uwapps, xamarin, etc running in parallel. And now when a new feature is introduced in the syntax it requires to add some external dependencies, which can be simplified by changing some default deep into the IDE...

My opinion is that simplicity matters a lot to the success of a platform. And by the way nothing in the error that you display when using tuples in VS2017 suggests a nuget package or an assembly name that can be searched.

<comment><USER34> > are you satisfied with this solution?

Yes. This approach allows for far more interoperability in this space. Instead of having language features be locked into specific compilers/toolsets. You mentioned 'simplicity' and we've traded off one sort of simplicity for another. The approach you would like (which we used in the past) used to _not_ be simple for the customer that wanted the scenarios to work that we're enabling now.

> Would you expect to have to go to a package manager to use tuples in python?

I could definitely expect that new language features might require library updates, yes.

> My opinion is that simplicity matters a lot to the success of a platform.

I think a lot of things matter to the success of a platform. For every developer who wants the type of simplicity you mention, there are developers who want other sorts of things to be simple.

> And by the way nothing in the error that you display when using tuples in > VS2017 suggests a nuget package or an assembly name that can be searched.

Yes. We could certainly make this experience better, and that's on me. However, as i mentioned already, there were difficult constraints to balance. We're hoping that our work moving things Out-Of-Process will help make it so that we can just light up this scenario by default. Then, you'd get this error, and the lightbulb would be right there to fix it up.

However, like with all things in development, you can't always get everything you want complete for every release. In this case we did not feel like it was justified to hold back all the rest of great feature work and performance improvements in VS just because users would have to do one manual step with one language feature when working with C#. You are free to disagree with that assessment on our part. But we're always going to end up having to pick a set of things we don't think will make it into any given release, and it's quite likely that for any given release there will be some things that you'd want (and which would make things better) that won't make it.

A great benefit of the new VS is that it's now much simpler for us to ship updates very rapidly. Instead of needing to wait literally years for updates, we can patch things immediately and we can complete features and get them in the hands of users in a matter of weeks. In that regard, i'm ok if this one particular experience isn't perfect. We can improve things as we move forward and continue delivering better and better experiences.

Thanks!

<comment><USER32> Actually I tried using that nuget package on VS2015 but it doesn't seem to work. Is VS2015 support C# only?

</comment></comment></comment></comment></comment></comment></comment><comment><USER35> What are the dependencies to C# 7? Is it only available on dotnet core and on some future version of full .net?

<comment><USER34> Hey DMarlow, could you clarify your question? A C# 7.0 program should run on pretty much any version of .Net after 2.0. Similar to C# 2.0-6.0.

The only thing we ever really adopted in C# that needed a new runtime version was Generics.

<comment><USER35> So with c# 7 all I need is VS 2017? It'll work with existing .net 4.5.x and 4.6.x projects? I tried tuples and VS complained. Are there instructions to get that working somewhere?

In order to compile on a build server do I need an updated toolchain?

<comment><USER34> > So with c# 7 all I need is VS 2017?

All you really need is the new C# compiler. You can get that with VS2017, or standalone. But the _programs_ produced by this compiler should be runnable on pretty much every runtime out there.

> It'll work with existing .net 4.5.x and 4.6.x projects?

Definitely.

> I tried tuples and VS complained

What was the complaint? in order to use Tuples, you need a reference to add the System.ValueTuple NuGet package as that's the type under-the-hood that packages up the tuple values so other people can consume them.

This is a nice approach because it means your APIs can use Tuples, while people using C# 6.0 and earlier can still use them. effectively.

> In order to compile on a build server do I need an updated toolchain?

If you use C# 7.0 features, then use. You always need the appropriate compiler to use the latest language features. But you shouldn't need to really 'upgrade' anything else if you don't want to. (You can, of course, if you do want to).

</comment></comment></comment></comment><comment><USER36> I just want to say thanks to the VS team for all their hard work. VS is by far my favorite MS product.

</comment><comment><USER37> _Finally_ seems that wildcards in project files are handled correctly by Visual Studio now, i.e.

        <Compile Include="**\*.cs" />

looking forward saying goodbye to the no.1 source of merge conflicts for us!

</comment><comment><USER38> Most of the web dev features they are so excited about already have been in various IDE's (IDEA, Sublime with plugins, Netbeans etc) for couple of years. Some of which are source map, live reload, linter, ES5/6 support etc.

</comment><comment><USER39> I am on bazel learning curve and was searching to integrate Bazel build system with visual studio (xamarin) project, apparently Bazel support for windows is still too nascent. I home something comes up on this lines.

</comment><comment><USER40> So is there a Mac version?

<comment><USER2> It's not GA yet (only Visual Studio 2017 for Windows is GA today) but we have shipped an update so Visual Studio for Mac Preview 4 is now available.

Details: [https://blog.xamarin.com/better-apps-visual- studio-2017/](https://blog.xamarin.com/better-apps-visual-studio-2017/)

<comment><USER41> So this is full, 100% Visual Studio for Mac (soonish), or is it Xamarin Studio rebranded?

<comment><USER2> Visual Studio for Mac will be our Mac IDE going forward and will grow in features, sure its past is Xamarin Studio but its future will have A LOT of investment so its worth checking out in Preview 4.

<comment><USER42> So the answer was no

<comment><USER43> > So this is full, 100% Visual Studio for Mac (soonish), or is it Xamarin > Studio rebranded?

No isn't an answer to that question.

> Visual Studio for Mac will be our Mac IDE going forward and will grow in > features, sure its past is Xamarin Studio but its future will have A LOT of > investment so its worth checking out in Preview 4.

Is a good answer to that question.

</comment></comment></comment></comment></comment></comment><comment><USER44> I really hope they add wildcard (e. g. src/*.cpp) support in C++ project files

<comment><USER45> Visual studio already supports this in 2015 and older iirc, at least for C# and SQL projects, but it's an undocumented feature. You have to close and re- open the project if you add/remove a file so it notices that it's different.

part of the new project system that grew out of the ill-fated project.json is to make this a first-class experience, but again that's focusing on the .csproj, I have no idea if it applies to C++.

<comment><USER46> It also works in C++ projects. But it breaks a bunch of IDE stuff, e.g. Add New Item.

</comment></comment></comment><comment><USER47> What happen to Python support? It was supported in the release candidate.

<comment><USER46> Please read this:

[https://blogs.msdn.microsoft.com/pythonengineering/2017/02/2...](https://blogs.msdn.microsoft.com/pythonengineering/2017/02/22/python- in-vs2017/)

And this:

[https://blogs.msdn.microsoft.com/pythonengineering/2017/03/0...](https://blogs.msdn.microsoft.com/pythonengineering/2017/03/07/python- support-in-vs2017/)

<comment><USER47> Perfect, thank you.

</comment></comment></comment><comment><USER48> Someday I hope it finally gets ported to x64 so that it can use more than a tiny fraction of the RAM in my desktop, instead of page thrashing all the time.

<comment><USER15> There seems to be some people in the IDE team who believe that a 32-bits only IDE is a feature and not a bug, including for reasons as fun as because it crashes sooner in case of memory leaks... I guess eventually those people will move to other things and/or the market pressure will be such that we will see a 64-bits IDE. Just don't know exactly when...

<comment><USER34> Hi Xorblurb :)

I'm a dev on the "IDE team" :)

We've actually done a huge amount of work investigating and addressing perf issues and working to create an architecture that can scale well. 64bits is not a panacea. And if we had simply moved to that, most people would find that their IDE was using much more ram _AND_ behaving more sluggishly.

We decided to invest our energies in work that would actually benefit the vast majority of customers. This led to efforts that we were able to demonstrably measure as producing better experiences for people. If there's a point that 64bit will actually produce better results for people, we'll gladly move to it. Thanks!

<comment><USER15> I'm sure you carefully evaluated the pro and cons and that for now the best option for customers, also maybe given the state of your code (I've got no idea if you have problems in that area or not, but hypothetically this is the kind of thing that could have an impact) and your resources and what you want to do with such resources, is to stick to 32-bits. Because, well, you did stick to 32-bits, and it does not suck (although I've never tried to open extremely huge projects in VS)

But I also "know", and you also maybe secretly "know", that you _will_ eventually move to 64-bits :P I completely don't know when, and I would completely understand that neither do you, and I would also understand that there is currently no immediate plan to move. But eventually you just will.

Now, ok, I'm not 100% sure about that. But my mind would be overly blown if this does not happen (given I don't have a clue of when, I guess I could have to wait for 20 years to see if my mind is blown or not :P ). I mean come on, even iPhone programs are 64-bits now.

(You know what this reminds me of a little bit?: Mozilla not working on a multiprocess architecture as a priority a while ago...)

<comment><USER34> > but hypothetically this is the kind of thing that could have an impact

It's not hypothetical :) We've measured, and moving to 64bits is a _serious_ issue and would directly affect many customers who could not take the RAM hit.

> But I also "know", and you also maybe secretly "know", that you will > eventually move to 64-bits

At some point we probably will. but it certainly isn't now. We have ample information on the types of machines that people use for development and we've measured extensively the different approaches that are possible. Right now 64bits would be a bad decision, and going the multi-process route turned out to be quite good.

> I mean come on, even iPhone programs are 64-bits now.

That's not a reason to move. We should move to 64bits if it delivers a quality improvement and does not dramatically degrade the experience for many customers. That's not what would be the case today.

> There seems to be some people in the IDE team who believe that a 32-bits > only IDE is a feature and not a bug, including for reasons as fun as because > it crashes sooner in case of memory leaks...

To be clear. There are _zero_ people on the IDE that think this. The IDE team has to deal with the reality of the situation that there are humongous solutions, and very resource constrained machines. And we've been hearing from _huge numbers_ of developers that they absolutely do not want memory requirements to go up. Just moving to 64bits is extremely problematic. As i've already mentioned that can easily double the memory requirements for many components in VS. That's going to make VS2017 a complete non-starter for many customers.

We do not haphazardly make changes "just because". We measure measure measure, and we're loathe to do anything that we've got enormous real data on on how negative the impact could be.

The approach we've taken has actually extremely improved throughput, scaling and latency, all while actually _decreasing_ memory usage. We're going to continue making the changes that support those goals. If/when we can have a 64 bit architecture that supports those same needs, and gives an acceptable impact on the vast majority of user machines, then we can move there.</comment></comment></comment></comment></comment>


Fear of Spiders Can Develop Before Birth - <AUTHOR> http://www.livescience.com/animals/fear-of-spiders-100218.html <comment><USER2> This is the previous study that was cited in the article: <http://phobias.about.com/od/research/a/snakeandspidpho.htm>

(I'm sure I read it in the dead-tree version on the New Scientist but can't find it now).

What's interesting is that the children simply paid more attention to spider/snake-like shapes rather than actually fear them. This seems to have been the case with both of my children who have been fascinated by spiders from an early age and will spot them from across the room. I encourage the curiosity and discourage the fear (we're in Ireland after all).

For some reason, I think it's more plausible that we have a genetic predisposition to pay attention to spiders/snakes rather than the emotional fear response. Perhaps that distinction isn't present in crickets?

</comment><comment><USER3> This is awesome stuff, esp. in regards to epigenetics.

wiki: "In biology, and specifically genetics, epigenetics is the study of inherited changes in phenotype (appearance) or gene expression caused by mechanisms other than changes in the underlying DNA sequence, hence the name epi- (Greek: επί- over, above) -genetics. These changes may remain through cell divisions for the remainder of the cell's life and may also last for multiple generations. However, there is no change in the underlying DNA sequence of the organism;[1] instead, non-genetic factors cause the organism's genes to behave (or "express themselves") differently.[2]" <http://en.wikipedia.org/wiki/Epigenetics>

A further round of study would be exposure to a spider of female crickets and male crickets before pregnancy, and another would be to see if there are any lasting changes passed in successive generations.

</comment><comment><USER4> a). They didn't link to the study. Or if they did, not anywhere I could see. Inexcusable in 'science' journalism!

b). Any control group on the babies to see if it's actually fear of spiders they learnt, or just fear?

<comment><USER5>
      Any control group on the babies to see if it's actually fear of spiders they learnt, or just fear?

What would comprise the control group? Psychopath baby crickets?

<comment><USER6> I'm not sure what the cricket equivalent would be but in a mouse model open space and bright space anxiety tests would be a reasonable approach to understanding whether the anxiety is general or specific to spiders.

<comment><USER4> Exactly. Something else scary that doesn't resemble a spider.

</comment></comment></comment></comment><comment><USER7> When your mother has spiders in her womb you have a right to be scared.</comment>


What Blocks Ruby and Python from Getting to JavaScript V8 Speed? - <AUTHOR> http://stackoverflow.com/questions/5168718/what-blocks-ruby-python-to-get-javascript-v8-speed <comment><USER2> The other major issue is backwards compatibility. Ruby and Python have large API surfaces on both the C API and scripting language sides, with many libraries making use of obscure language features. If any single one of those features doesn't work, the library won't. Witness how tough the Python3 migration has been.

I talked with the Unladen Swallow guys sometime after the project was canceled. They said that the main issue was not getting Python to run fast on LLVM, where they said they had some really encouraging results. Instead, it was:

1\. Bugs in LLVM which they had to spend a lot of engineering effort working around. This is probably much less of an issue now, with Clang, XCode, Julia, and Rust all being used in production with a good deal of success.

2\. Compatibility with the C API. This was considered a "non-negotiable" for Unladen Swallow's design, and one major reason they started by forking CPython rather than building from scratch on LLVM. The problem is, the C API makes a lot of assumptions about how objects are laid out in memory, how they are memory-managed, how they are accessed, etc. If you must support defining & calling methods from C, there's a lot less freedom to, say, stick a trampoline in the method preamble or a PIC at the call site or switch to using a tagged representation of pointers and ints. That means that the VM has to fall back on the interpreter (and possibly waste cycles converting & marshalling data) for a lot of things that are supposed to be fast, which kills many of the real-world performance gains.

V8 had the luxury of defining its own C interface. I've often wondered whether a Python that gives up C extension compatibility could get similar speed gains - I even ran the idea by a former Python core team member who worked on my team at Google, and he said there was no theoretical reason why not. But then, Python without C extension compatibility would be Python without Numpy, Scipy, scikit-learn, PIL/Pillow, JSON, StringIO, and many other critical packages. At that point you might as well start over with a new language.

<comment><USER3> _Python without C extension compatibility would be Python without Numpy, Scipy, scikit-learn, PIL /Pillow, JSON, StringIO_

Would we really miss them if Python was then fast enough to do these things natively?

<comment><USER2> Somebody has to actually write the new functionality, and then many more people have to _learn_ the new functionality.

Anyway, this thought experiment has basically been done. "Ditch the backwards compatibility, start with a new language, make it fast by design, and rewrite all the packages that make it super popular." It's called Julia. And it's popular among some people, but for a lot of others, the maturity of the Python ecosystem still makes it a lot more attractive despite the performance & multi-language issues.

<comment><USER4> I believe that Julia still uses a lot of C/FORTRAN packages that numpy relies on, like BLAS, so they're not really re-written in Julia (at least yet?).

<comment><USER5> I think he meant re-do the bindings. A lot of Julia is written in itself, but not things like that. Large libraries benefit from Julia's extremely simple C calling mechanisms.

</comment></comment></comment></comment></comment><comment><USER6>
      Put on hold as too broad by rene, davidism, vaultah, Sam, iCodez 2 hours ago

      There are either too many possible answers, or good answers
      would be too long for this format. Please add details to
      narrow the answer set or to isolate an issue that can be
      answered in a few paragraphs.

      If this question can be reworded to fit the rules in the
      help center, please edit the question or leave a comment.

Meta: It's interesting that 5 users thought that it would benefit the SO community to put this question on hold, while 100+ thought it was an interesting question. In one way, SO does keep the noise down pretty well, but this doesn't feel to me like noise. Does avoiding questions like these actually make SO a better place? Is there a reworded version of this question that would actually elicit better responses? Or is this just the joy of playing the enforcer?

<comment><USER7> I'm not a moderator, but I agree that the question is not really constructive in the scope of what stack overflow is supposed to do: answer questions to specific problems. The question itself is interesting as are the answers, and the whole discussion around it is great, but it doesn't belong on that site.

Why is python not as fast as JavaScript is a completely different question than "An internal error occurred during updating maven project". The later seeks a solution to a problem while the former only encourages discussion but is impossible to solve (because it's not a solvable question).

So, I feel this question was appropriately tagged, or perhaps even not aggressively enough.

<comment><USER8> > the scope of what stack overflow is supposed to do: answer questions to > specific problems

Honestly people should read the manual then. That will give you the specific answer to your question. Stackoverflow wanted to replace other message/discussion boards in regards to programming. It's veered away from that purpose and IMHO has become cumbersome to use. If you have to worry more about how you word your question than the question itself is it worth asking there?

<comment><USER9> > If you have to worry more about how you word your question than the question > itself is it worth asking there?

well, you are supposed to ask a question after you have researched the solution, so the extra worry wouldn't actually be relevant.

<comment><USER8> The manual answers all questions related to programming.

</comment></comment></comment></comment></comment><comment><USER10> The public domain CMUCL/SBCL line of compilers (as well as most commercial common lisps) are notorious for being the fastest dynamic/interactive systems since the 1990's. Most dynamic languages are still nowhere near the speed of the assembly code produced by most common lisp compilers while still retaining the impressive dynamic & incremental aspect of the language (although every year they are closing in). In the end, it comes down to how much effort was put into these compilers, rather than the language itself. For years DARPA spent loads of money on a highly trained team of compiler experts to work on CMUCL (later SBCL) led by Scott Fahlman. I doubt Ruby and Python will be able to attain JS speed until more effort goes into on these systems, which so far are still defined by a canonical, byte-code interpreted implementation.

<comment><USER11> Isn't finding what function to call at a particular function call much easier in Lisp (or Julia) than it is in Python/Ruby/JS? The vast numbers of CL and Scheme compilers are relatively easy to write, exactly because the languages leave (somewhat) less to decide / change at runtime than Python/Ruby/JS.

Edit: PL's aren't physics.

<comment><USER10> Definitely not. It's almost hard to think of what Lisp doesn't let you change at runtime, since the compiler is always there. Common Lisp is in fact much more dynamic at run time than python/ruby/smalltalk. I would say that Python and Ruby are the more limited ones. You can recompile functions whenever in CL, you can even compile functions that call undefined functions at runtime. Lisp is known for its extreme late binding and reflection, with almost everything redefine-able on the fly (except functions declared inline, you need to recompile to callers afterwards. but only if you declare them inline). Even in defining classes, Common Lisp will redefine a class and update all the _old_ instances of the class as well. As far as I know, Ruby and Python do not automatically update old instances. Ruby, like Common Lisp, does allow you to add new methods at runtime without redefining the entire class, and as far as I know python does not.

> The vast numbers of CL and Scheme compilers are relatively easy to write, > exactly because the languages leave (somewhat) less to decide / change at > runtime than Python/Ruby/JS.

I would say it's a mistake to conflate Scheme and Common Lisp. Scheme isn't even defined well enough to say something implementation independently about whether the environments should decide things at runtime or not. But Common Lisp as a language has special/dynamically scoped variables and runtime definable macros which make it much more difficult to write a compiler for it. I would say that Common Lisp has way more things to decide at runtime than python or ruby. Maybe they're about the same in terms of difficulty of writing a compiler for, if only because lisp has no parsing/lexing pass. Again, in the end, it's mostly not a language issue. It's how much money and how many compiler experts work on your implementation.

</comment></comment></comment><comment><USER12> If the difference in speed comes down to money, as the first two answers suggest, then why is LuaJIT even faster than V8? I'm pretty sure PyPy has had far more money invested in it than LuaJIT has.

<comment><USER13> Because LUA is much simpler, already porting LUJit to LUA5.3 is revealing hard as far as I understood

<comment><USER14> My understanding is that LuaJIT isn't really under active development anymore.

It does seem like it would be hard to add the 5.3 features to LuaJIT without compromising on efficiency, but given how clever Mike Pall is, I'd suspect it can be done.

<comment><USER15> It is under active development. There is the start of an arm64 port recently for example. Mike did take a break to do other stuff for a bit it seems, but its not stopped.

<comment><USER14> Ah, the note at the top of [http://luajit.org/sponsors.html](http://luajit.org/sponsors.html) had made me think he was not.

</comment></comment></comment></comment></comment><comment><USER16> When Ruby or Python is too slow you can switch to something else. When JavaScript is too slow you have to either pay someone to make your code faster or pay someone to make the browser faster.

<comment><USER17> Not all JavaScript runs in the browser

<comment><USER18> It mostly did before V8 was created. A few people ran JS outside the browser using Mozilla's Rhino, but it wasn't very common. Nodejs probably was the first widely adopted platform for non-browser JS, and it was built on V8 after V8 already existed. So I believe historically server-side JS did not drive JS performance.

<comment><USER19> It should be mentioned that Microsoft has had server side Javascript (well, Jscript) running on IIS since 1997. I used to write data driven websites in it.

[http://en.wikipedia.org/wiki/JScript](http://en.wikipedia.org/wiki/JScript)

<comment><USER20> and Windows Script Host (wscript/cscript).

</comment></comment></comment></comment></comment><comment><USER21> IMHO, a few things:

1) Python & Ruby have lots of dependencies on the C FFI — PyPy is great, but not replacing CPython because of this.

2) A huge amount of effort is going into v8. Perhaps that level of effort will catch up to the effort put into the JVM.

3) Using esoteric, hard to optimize features in Python and Ruby is apparently a sign of cleverness. And those features are used in the major frameworks like RoR.

4) Incompatibility between other engines. Right now though you have to be backwards compatible with the web, it is acceptable to implement a small subset of the new features. People wouldn't be happy with several versions of Java / Python / Ruby all implementing some of the new features but not all of them.

But really, besides a highly optimized regex engine, v8 is still kind of slow. Just happens to be the fastest of the slow.

</comment><comment><USER22> For context: this question was asked in '11\. PyPy is _really really fast_ now. I'm not sure exactly how it stacks up against v8, but it definitely holds its own. It's roughly 7 times faster than cpython.

<comment><USER23> ...if you can afford the memory requirements.

<comment><USER22> True, but you could say the same thing about almost any JIT compiler/interpreter for a garbage collected language. It's not like java is known for it's memory efficiency. I'm not too knowledgeable about the memory efficiency of v8, I imagine they pay attention since it's in a browser, but I'm going to guess compared to a simple interpreter it's probably not great.

<comment><USER23> That is of course true, but pypy does have an unusually large memory burden (and the developers do know about it - it's just not top priority at the moment).

</comment></comment></comment></comment><comment><USER24> Keep an eye on this new python implementation:

[https://github.com/dropbox/pyston](https://github.com/dropbox/pyston)

</comment><comment><USER25> I think the top answer is pretty spot-on.

Also, JavaScript has a much smaller API surface area. In addition to optimizing core code execution, a decent amount of work goes into optimizing the core libraries and built-in types: RegExps, string operations, collections, hashes, etc.

In JavaScript, that set of stuff is pretty small. In Ruby and Python, it's enormous.

</comment><comment><USER26> V8 needs to be as fast as possible because the running time is dominated by processing.

Python only needs to be fast enough because the running time of a typical program is largely affected by i/o time.

</comment><comment><USER27> This question is from 2011 (missing in the link title). Does things have changed since then ?

</comment><comment><USER28> What is V8 speed? Without actually quantifying anything this is all just bull shitting. For all I know V8 is slower and they are asking why python and ruby aren't as slow as V8.

Secondly, if we assume the question is saying that V8 is faster, is it faster than vectorized numpy functions? Without specifics in mind, this question is just to start a language war.

<comment><USER29> I disagree. The history of browsers of the past couple of years shown the JavaScript has sped up tremendously compared to older browsers.

While python and ruby may be getting faster they're not seeing those order of magnitude speedups that we've seen in JavaScript.

</comment></comment><comment><USER30> Its more deep grained that "the VM is slow" The default python interpreter is really quite fast, but biggest performance problem with python is that _everything_ is an object.

Don't believe me? look here: [https://jakevdp.github.io/blog/2014/05/09/why- python-is-slow...](https://jakevdp.github.io/blog/2014/05/09/why-python-is- slow/)

perl is not much older, but in a majority of tasks its faster than python, even c-API python. (it even threads!)

Yes it could be engineered around, I assume thats what pypy is doing (although STM is is going to limit performance in a threaded environment)

Javascript was designed to be an embedded language, so it was had to be quick to initialize, and have a simple object model.

Python was designed to be an easy object oriented language.

<comment><USER31> That's not why Python is slow. That's why Python is harder to optimize.

Being harder to optimize is not being slow. This is an important distinction. If you want to know what that means and the real reason why Python is slow, go read this instead: [https://speakerdeck.com/alex/why-python-ruby-and- javascript-...](https://speakerdeck.com/alex/why-python-ruby-and-javascript- are-slow)

<comment><USER32> Aren't things that are harder to optimize generally slower for precisely that reason?

</comment></comment></comment><comment><USER33> From the accepted answer: "Given that at least IronRuby, JRuby, MagLev, MacRuby and Rubinius have either monomorphic (IronRuby) or polymorphic inline caching, the answer is obviously no."

What an amazing "obviously"!

</comment><comment><USER34> It sounds like Lars Bak needs to write a book on VM design.

<comment><USER35> Even if he never does, we're lucky to have the source to many of his VMs available :)

<comment><USER36> Would the dart VM be the place to start? It's the newest and I saw a presentation somewhere where it looked like part of what motivated them to create it was having to deal with so many edge cases in JavaScript. I imagine the source of V8 is probably not going to be that easy to pick up.

</comment></comment></comment><comment><USER37> In short: money, money, and money.

Ruby has what, a handful (if that?) of people at Heroku who work on Ruby some of the time? Not sure if Matz does full-time or not.

<comment><USER38> It does seem strange to me that so few people are paid to work full time on ruby etc (core tech) when you consider the massive total benefit from making ruby a few % faster or better. Why is the funding not there?

<comment><USER39> I think there are a few issues. The first is funding. If you are an engineering manager and trying to ship product, you don't want a 25% faster Ruby VM in 10 years, you want someone to benchmark and optimize existing code in existing products 25% today. I agree that it's a good pay off, cost versus benefit...however the benefit is spread around hundreds and thousands of companies. Google gains marketshare for chrome when V8 gets faster, there's very few companies that get significant advantage explicitly from making Ruby faster for everyone. If you're paying to make Ruby faster, it's also getting faster for your competitors too (if they use Ruby).

There are a bunch of core contributors that are very active. Several of their companies allow them to spend time contributing (most of them are from Japan). Another example is Aaron, he is on Ruby core and his company allows him some time to contribute to open source, so this is sponsorship in a way. I while a company stands to benefit from sponsoring a full time developer, they benefit just as much if someone else sponsors a full time developer. Right now there's not enough companies with either a business incentive, altruism, or interest. Perhaps there are companies out there interested in sponsoring full time devs who just don't know how (and to your point cannot find them) but I think that would be the minority case.

<comment><USER40> Oracle seems to spend some money on java and JRuby which is pretty fast and will get even faster the coming years. Not sure how much if any they are directly funding JRuby but they are funding the JVM which is used by JRuby.

<comment><USER41> Per Chris Seaton's comment in this thread:

> Oracle Labs pays two people full time (including me) [to work on JRuby] and > a PhD student, and more soon.

</comment></comment></comment></comment></comment><comment><USER42> It is a pity that V8 is so entangled with the language Javascript.

In my opinion, V8 would have been much more powerful if it was fully parameterizable in all the types that it supports, etc. In that case Python could simply be translated into V8 intermediate code (or javascript).

<comment><USER43> The .Net DLR is like that, although I was disappointed when they dropped Dynamic JScript... more so when they effectively dropped continued DLR support altogether, it was a nice runtime. Maybe with Rosilyn some open support for dynamic languages will come back.

Personally I've been working with JavaScript since the mid 90's, and node.js since very early on. I like JS more than most as it's my favorite language, for all its' warts. I do feel that for most work loads a modular dynamic language implementation for a given task is a better idea than building a compiled version. If you need more performance from something, or it's something relatively obvious (A/V processing comes to mind) it's similar to a premature optimization to go compiled first these days.

Kind of more than you are/were looking for.. but you may want to look into IronRuby/IronPython ... it's a pretty nice way of working with the languages.

</comment></comment><comment><USER44> [http://www.cdotson.com/2014/08/nodejs-vs-python-vs-pypy-a- si...](http://www.cdotson.com/2014/08/nodejs-vs-python-vs-pypy-a-simple- performance-comparison/)

</comment><comment><USER45> For quite a few python use cases on the tech side you just recode your python prototype in fortran (and use the full fat Intel compiler)

<comment><USER46> I'm not sure what "full fat" means, but compared with current gfortran in my experience, ifort is incorrect by default, surprisingly unreliable, and typically generates similar speed code at the 10% level. My all-free software build of a quantum chemistry program was reported to run faster than an all- Intel libraries one on a cluster which has faster processors but is otherwise very similar to ours.

If you just write in Fortran, you don't have to have to debug two versions.

</comment></comment><comment><USER47> short answer: features.

</comment><comment><USER48> Pypy is slower than v8?

<comment><USER49> Yes.

</comment></comment><comment><USER50> When can we run Ruby & Python code in the browser?

<comment><USER51> Ruby has Opal [http://opalrb.org/](http://opalrb.org/) a Ruby compiler to JavaScript.

Or Decaf [http://trydecaf.org/](http://trydecaf.org/)

Or [http://rubyfiddle.com/](http://rubyfiddle.com/) if you want to be literal about Ruby in the browser :-)

<comment><USER50> Thanks. Brython looks more like what I was looking for. Everyone's porting code into Javascript but I think a better browser can be built with more language support.

</comment></comment></comment><comment><USER52> Crazy thing is, Ruby is already so much more powerful than Javascript. Javascript is fast, easy to implement and relatively easy to learn - but it is so limited.

As a programming language, Ruby really pushes the limits of what we are used to.

<comment><USER53> Dylan and Lisp/Scheme are way more powerful than Ruby and compile to native code.

Ruby pushes what?! I bet you never used a commercial Smalltalk system.

<comment><USER54> There are always touchy Lisp and Smalltalk fans who must vent their spleens at the earliest opportunity, but barely a sliver of active developers today have used a Smalltalk system and only marginally more, even with Clojure, have used a Lisp in anger. So, when you are not actively trying to read the literal worst into something, you will see that Ruby does in fact do quite a lot that "we," in the general case, are not terribly used to. That's a major reason I use it, for example, where performance isn't a big deal.

</comment></comment></comment><comment><USER55> have you guys actually tried anything else than serving web requests with node...because for any other backend procedure node is not faster....and definitely the code is not cleaner!

Check also atom vs sublime text as desktop applications...

<comment><USER56> I'm not sure how the comparison is relevant seeing as Sublime Text is written in C++. What am I missing?

<comment><USER57> Atom is written in js + chrome "engine" for the ui.

Javascript is fast enough,the problem is that Atom is basically using browser rendering for the ui,which isn't as fast as using c++ widgets.</comment></comment></comment>


Free, open and collaborative routing service - <AUTHOR> https://maps.openrouteservice.org <comment><USER2> A nice feature of this service is the ability to generate 'isochrones' \- a visual display of how far you can travel from an origin within different time- duration bounds.

[http://maps.openrouteservice.org/reach?n1=8.992583&n2=-79.60...](http://maps.openrouteservice.org/reach?n1=8.992583&n2=-79.600754&n3=11&a=8.998822,-79.602424&b=1f&i=0&j1=90&j2=15&k1=en- US&k2=km)

<comment><USER3> I tried this for Lisbon, Portugal, and found it completely ignores one of the two bridges [0]. So it makes we wonder how good this service is.

[0] [http://maps.openrouteservice.org/reach?n1=38.757564&n2=-9.19...](http://maps.openrouteservice.org/reach?n1=38.757564&n2=-9.198647&n3=11&a=38.748243,-9.140093&b=1f&i=0&j1=90&j2=15&k1=en- US&k2=km)

<comment><USER4> Could it be because three bridge is closed for cyclists?

Seems to be working when you create it for cars.

Either way it's probably a data issue and can be fixed if needed.

<comment><USER3> My stupidity indeed. Thanks for pointinng this out. I assumed cars was the default (I changed the Panama link above). Both bridges are closed for cyclists, but ferries cross the river as well. So the routing includes those, very nice!

<comment><USER2> I should have mentioned the bicycle setting in my link; Panama and the canal seem like a good example to illustrate how the shape of isochrones can change based on geographic and transport conditions (most cities will probably result in fairly concentric circles for walking, cycling and driving).

Anyway, glad to hear that the routing takes those road usage restrictions into consideration :)

</comment></comment></comment></comment></comment><comment><USER5> Very impressive! Seems to have trouble with my address in the UK, but accepted postcodes just fine. The ability to select not just different transport types but sub-types (i.e. normal bike or e-bike) is very nice.

Loving the wheelchair option :-) that's not something I've seen before, but now I've seen it - It's a blindlingly obvious accessibility feature...

</comment><comment><USER6> I'll tell you more, if you need routing for yourself then open-source OsmAnd has offline routing on Android and, probably, iOS. Info on public transport is not perfect but more than usable where I am. That's in addition to the tons of information from OSM: from local businesses to features specific to maritime navigation, flying and horse-riding.

The only thing that it misses is info on traffic load—which might be tricky to gather for a FOSS service while critically depending on the quantity of collected data.

</comment><comment><USER7> Really nice!

They appear to use a forked version of Graphhopper [1] [2] for route calculation.

[1] [https://www.graphhopper.com/](https://www.graphhopper.com/) [2] [https://graphhopper.com/maps](https://graphhopper.com/maps)

</comment><comment><USER8> Wow, the user interface is very fluent. It has a lot of options, that's really powerful. Amazing how far you can come with a Google maps-like interface in 2020.

As a German citizen, I enjoy that the basis data (only OSM?) is really good. This seems to be a project based on the University at Heidelberg. That's a pretty hilly area, maybe that's why they focus so much on height elevation :-)

</comment><comment><USER9> At first glance it looks quite nice compared to the other OSM routing software I've used.

For instance, when going to a certain large hardware store, OsmAnd basically told me to pull over off the Interstate and hoof it up to the store, instead of actually routing me off the highway and into the parking lot.

This site seems to do it correctly, which is nice!

</comment><comment><USER10> thought this had something to do with internet routing and got excited :)

<comment><AUTHOR> Oh, sorry! I'll try to find a better, more precise name next time :)

</comment></comment><comment><USER11> This is great! Well, except for the fact it hijacks my back button and my local map is out of date by at least 6 months.

But, I love that this is open.

</comment><comment><USER12> I appreciate the inclusion of cycling as a transportation mode ( _glares at Apple maps_ ) when looking for directions. Comparing two of my regular routes, the options given are actually preferable to what Google Maps suggests (to the point of being the routes I would normally take anyway to take advantage of less car heavy routes).

</comment><comment><USER13> I note that this has an API which is free but with rate limits ([https://openrouteservice.org/plans/](https://openrouteservice.org/plans/)). Is the intention in future to have plans that charge for usage above these limits?

<comment><AUTHOR> I don't understand their business behind that, neither. Note however that on GitHub ([https://github.com/GIScience/openrouteservice](https://github.com/GIScience/openrouteservice)) they mention it as a "demonstration server".

</comment></comment><comment><AUTHOR> The OSM Wiki page on OpenRouteService ([https://wiki.openstreetmap.org/wiki/OpenRouteService](https://wiki.openstreetmap.org/wiki/OpenRouteService)) might be worth checking out, too.

</comment><comment> globular-toast Unfortunately, Graphhopper (and this) has a problem with routing on bridleways in Great Britain. It seems to be a very old issue but I'm still experiencing it now. It makes it not very useful for walking in GB.

</comment><comment><USER14> Darn. When I saw the title, for a second I thought this was someone else I could get to advertise a /22 for me instead of AT&T.

But this is neat, too.

</comment><comment><USER15> Not IP packet routing then?

</comment><comment><USER16> This is really awesome!

</comment><comment><USER17> Why!? Another web page hijacking my back button!!

<comment><USER18> Agh, yeah. I can sort of see how this made sense in the early days of webapps, but now that everyone is so conditioned to using 'apps' I think aside from it being annnoying 'leave my browser chrome alone' behaviour that shouldn't be allowed, sites shouldn't even want to. I doubt many people use a webapp/SPA and click the browser back instead of the in-app back when they want in-app navigation, these days.

<comment><USER19> > I doubt many people use a webapp/SPA and click the browser back instead of > the in-app back when they want in-app navigation, these days.

I have back/forward buttons on my mouse and I use those. Why would I move the mouse to click an in-app navigation button instead?

<comment><USER20> Not to mention, that I also use keyboard shortcuts to navigate back, to avoid having to move my hand to the mouse.

</comment></comment></comment></comment><comment><USER21> I love it!

</comment><comment><USER22> Is this another one of those things like openmaptiles.com which is technically open but they don't really provide the tooling to generate new tiles and getting a copy of the tiles costs either thousands of dollars or you can only get versions that are 3+ years out of date? And also none of the tools are actually open source, or the ones that are go completely undocumented and don't actually work?

/rant

<comment><USER23> This is all wrong!

1.) you're mixing a routing service with a tile service (just view the map). A routing service needs always a tile service to display its result.

2.) the difference between openmaptiles and a traditional apache mod_tile is, that you don't need a ~600GB postgress to serve the entire planet. It's pre- rendered in vector tiles and the entire planet fits into a ~50GB mbtiles (sqlite3) file.

3.) Generating your own mbtiles file is documentated here: [https://openmaptiles.org/docs/generate/generate- openmaptiles...](https://openmaptiles.org/docs/generate/generate- openmaptiles/) and here is the belonging github repository [https://github.com/openmaptiles/openmaptiles](https://github.com/openmaptiles/openmaptiles)

But take care, rendering the entire planet took a lot of ressources. e.b. i7 sandy bridge with raid 0 ssd will take ~1 year for planet zoom level 0 to 14. And aws c5d.12xlarge will take 7 days only for zoom level 14.

<comment><USER22> > that you don't need a ~600GB postgress to serve the entire planet.

That 600GB must surely include the full history? The xml dump of just the current openstreetmap data is only ~90GB, and generally XML dumps get smaller when you put them into a real database. That isn't a good comparison.

I could have _sworn_ the last time I checked this the docker image had dependencies that simply were not available, either in docker or on git but I guess I'm mis-remembering.

<comment><USER24> 90GB is a bz2 _compressed_ file not raw xml

See the wiki: [https://wiki.openstreetmap.org/wiki/Planet.osm/full](https://wiki.openstreetmap.org/wiki/Planet.osm/full)

<comment><USER22> Well I suck. I'm honestly not sure how I got so wrong on this issue.</comment></comment></comment></comment></comment>


The Problems of Scaling and Scoble at Quora - <AUTHOR> http://quorareview.com/2011/01/26/the-problems-of-scaling-and-scoble-at-quora/ <comment><USER2> I fail to "get" Quora. If I go to the site directly, they want me to register before I'm allowed to do anything. I can't find any reasonable way to search there or browse the questions and answers.

However, if I go to Google and search for something, and toss in a "site:quora.com" it will show me the Quora results, and Quora lets me see the questions and answers (although not the comments). Those pages even have a search on them so I can look for more.

None of those pages seem to have any monetization. So where do they plan to get their money? Seeing no apparent monetization makes me suspect that they plan to use their user information for monetization, and wonder if that is why they say you have to use your real name.

I know they've received a lot of buzz, including here, so assume they are probably on the up and up, but that's sure not the gut feeling a get when I compare what I see as a non-registered person with, say, what I saw at, say, stackoverflow.

Anyone else here not getting it or am I the only one?

<comment><USER3> I'm on Quora and I like it there, although I visit with decreasing frequency. I think they are trying to emulate more of a Twitter/Facebook thing with their user base - a more "social" experience than stackoverflow, I guess - and I assume their monetization strategy is as undefined as it was for either of those two when they started.

</comment></comment><comment><USER3> There's an entire website outside of devoted to discussing Quora? Weird. Beyond the title, what does this article have to do with Robert Scoble? After reading it, I did a quick Cmd-F... his name doesn't seem to appear in the article at all.</comment>


Ask HN: What is the missing ingredient in machine learning? - <AUTHOR> It was pointed out recently that as powerful as neural networks are -- they seem to be capable of learning nearly any type of pattern recognition -- they still require many orders of magnitude more training samples than a real biological mind that can grasp important patterns and relationships with very little trial and error or observation.
I'd be curious was musings anyone has as to the possible "technical" tool in a human mind that has this remarkable ability. A nice byproduct of AI research is that it makes us more able to respect and marvel at our own minds.
My guess is that our brains do require extraordinary data sets to perform good pattern recognition and learning, but that past generations pass these data sets down in the form of instincts and other genetic information, rather than rely on "runtime" behavior to "train" our "neural nets." <comment><USER2> Our brains were written in Common Lisp with all types declared and (declare ((safety 0) (debug 0) (speed 3)) -- that's obviously a joke, but maybe there's a kernel of truth in there somewhere?

::shrugs::

Our brains are also constantly making novel micro-theories about the temporal relationship between things. Aw hell, it's constantly making novel micro- theories in general.

But mainly I think, we have a big list of shit we never quite figured out -- and whenever we make some new connection, a background process tries to find a fit with those unsolved mysteries.

In fact, _my_ brain is constantly trying to work out a cartesian product of all types of problem with all types of solution. Even in reverse -- which has resulted in sometimes spooky insight.

Sometimes the results make me laugh at odd times.

Maybe someone needs to find a way to reward AI for finding interpretations or theories that we would find funny. Maybe it's just as simple as making an AI that isn't a joyless fuck.</comment>


The NY Times' 10 Best Books of 2013 - <AUTHOR> http://www.nytimes.com/2013/12/15/books/review/the-10-best-books-of-2013.html

<comment><USER2> Because everyone has the same taste in literature.</comment>


Selling Software To Large Businesses - <AUTHOR> https://training.kalzumeus.com/newsletters/archive/enterprise_sales <comment><USER2> > _As my father always counselled me with regards to dating advice: "Don't > come up with reasons for them being out of your league. Make them come up > with them. Someday, someone -- perhaps someone surprising -- will say Yes."_

Isn't this a line from "Shit My Dad Says"? [https://twitter.com/shitmydadsays/status/4811790555](https://twitter.com/shitmydadsays/status/4811790555)

Maybe all fathers say the same thing.

More to the point, we're not afraid of BFEs because they may be "out of our league" and say no; if they said no right away we'd be fine.

We're afraid of BFEs because we fear they will absorb all of our time in endless email conversations, nitpicking, forms-filling, PDF-generating, phone calls, meetings, and eventually say no -- or even if this results in a sale it may not be worth it.

I'm not saying this is true -- I'm just trying to describe the fear. The OP clearly addresses most of those points by the way.

<comment><USER3> In my experience working with clients of various sizes, it is generally not the largest that are particularly painful but the smallest. The largest have staff trained and dedicated to their positions. The sole/small operators are juggling everything and most struggle to do many things well (often I'm one of those struggling).

These are the clients who, when you ask them for written content for their website, give you a scan of their competitor's brochure with the name crossed out and replaced with that of their own business. (This actually happened to an officemate of mine today.)

FWIW, I think the fear of selling to large companies is of embarrassing ourselves in comparison to larger and more experienced operations who have an SLA template, dedicated tender writers, etc.

<comment><USER4> The funny thing is, the larger the company is, the less likely anyone there will remember anything you (as "some supplier") does or says--unless you're the one who wins the sale.

With the super-Enterprisey corps, you can even fail horribly to sell one branch/office/department, then turn around and strike a huge deal with some other branch/office/department of the same company.

</comment></comment></comment><comment><USER5> The UK Government is doing a lot of work to get around these problems. Firstly all new development is preferred to be open source (1), secondly they have created at least two programs where suppliers are pre-vetted and then can offer their products (and services) in an online catalog. (2). I failed to know about either of these in time but there are 700+ SMEs on there.

I am not saying that this is all solved - but a large chunk of the process patio11 described is explicitly "blipped over" for new services into central UK Government.

There are some rays of hope - I will let you know !

(OMG - GCloud 4 is open - if you are a UK software company then I urge you to join if you can.)

(1) [https://www.gov.uk/service-manual](https://www.gov.uk/service-manual) (2) [http://gcloud.civilservice.gov.uk/about/](http://gcloud.civilservice.gov.uk/about/) (3) [http://blog.mikadosoftware.com/2013/08/22/how-hard-can-it- be...](http://blog.mikadosoftware.com/2013/08/22/how-hard-can-it-be-selling- software-to-the-uk-government/)

<comment><USER6> Thanks! I just registered in both and it is a very simple process(though I am still waiting on approval). There are quite a few software contracts in there.

<comment><USER5> Dang-nabbit - competition !

Well it's simple for now - have not waxed through the 16 docs they provide for G-Cloud (and the Agile consultancy has already finished - yes a preferred supplier list for agile development)

</comment></comment></comment><comment><USER7> patio11: I was driving to work a few weeks ago, and heard a 'public service reminder' on the military radio station that broadcasts from the base in Vicenza: "try and remember appointments because missed appointments cost the army N zillion dollars a year" or something like that. There's the ultimate enterprise customer for you to land!

Also, I had a look at AR's home page, and was surprised by how much text there is. I have to assume that you've tested that and it works.

<comment><USER8> I think you need to have about 800 words for a page to rank well for given keywords, incoming links aside.

<comment><USER9> Source?

</comment></comment></comment><comment><USER10> Incredible read patio11.

I totally am totally used to think like a human (ref : Twenty times as much, you ask? No, transitioning from "pocket lint" to pennies. Stop thinking like a human.)

That said, do you think of your large corporation customers reading this article? I'd be afraid that they would think like human and may feel ripped off, even though they made the right choice when comparing with the other options.

<comment><USER11> I work for an organization that has been paying over $100 for a 4Gb flash drive with our logo on it for years. It takes a lot for an enterprise to feel ripped off.

</comment></comment><comment><USER12> I didn't see this in there but support and maintenance is a great recurring spend. For enterprise software this can be 20% of the purchase price, if you give a discount on the software (this can give the purchasing folks a win to take to their boss) you can often get the S&M at full undiscounted price. Get enough of these deals and making payroll every month gets a lot easier.

<comment><USER13> How can you charge maintenance for SaaS?

<comment><USER14> Put an extra line item in the quote for maintenance. Done.

Seriously, not only does that work, there are companies which will _send the quote back_ and ask you to requote them with a maintenance contract if you don't do it the first time.

(And yep, 20% is indeed quite standard at many places.)

<comment><USER15> Is this separate from the line item about support (best effort / no SLA purchased)?

And if it's separate, in what sense does enterprise purchasing use "maintenance"? Software updates?

<comment><USER16> _in what sense does enterprise purchasing use "maintenance"_

90% of the time, they don't. It's a checklist item. They don't care if it ever gets used.

<comment> __--__ To be fair, even if it never gets used, it's a hedge against the risk of relying on a third party.

My last project was heavily reliant on a particular feature in a game development framework. We were more than 1 million into development when they announced they were discontinuing the feature. We had a service contract, but not a maintenance contract. They basically told us at that time that all those bugs we had filed over the last 6 months? Here's the code, fix them yourself. We pivoted as hard as we could, but it was too late and we had spent too much money. The end result is my company canceled the project and laid off my entire studio.

</comment></comment></comment></comment></comment></comment><comment><USER17> This is all fine and good until your internal user needs to involve the IT department to open the firewall to your SaaS service. You'd be amazed by how many Fortune 500 companies block things like Evernote and DropBox, Google Docs, etc...

At which point, the purchasees will be going through some official channels to get at your service...

</comment><comment><USER18> An important thing to consider when selling to BFE's is not just that their budgets are larger, but the value they will receive from your offering is bigger, too. I see a lot of SaaS founders get embarrassed about charging enterprise rates, when, as Patrick says, the rates don't even really matter at that scale. Yet while they may be able to charge 20x as much as their regular plans, they may be delivering 50x the value. Make sure you have a good understanding of how your application will provide value, and how they will measure that, not only to support your sales efforts with the customer, but so that you feel confident about your side of the sale, including the price.

</comment><comment><USER19> Some pointers from someone that deals with large and small organizations.

\- Expect to be audited both security wise and financially. \- The larger the organization, the longer the process. (Although smaller clients can be just as dysfunctional.) \- Track everything; email, phone call, meeting, etc. It will save your ass in a dispute and may provide valuable metrics. \- The customer isn't always right, but they still are the customer. \- You will have to fire customers or crank prices up so the pain isn't so bad.

<comment><USER20> Could you by any chance explain what is meant by "Does the software have auditing capabilities?"

What exactly are "auditing capabilities"? Is it business-speak for log files?

<comment><USER21> It is more than just that. Log files only give you a list of individual transactions that happened. Auditing capabilities (as I understand them) imply the ability to trace a sequence of interrelated transactions in order to determine whether business procedures and rules were properly followed or even determine flaws in the procedures and rules themselves. For example, if a customer complains that a physical product is defective, and you detect that a specific component is at fault, you could trace which supplier sold you that component, when it was bought, where it was stored, etc., in order to determine the root cause of the component being defective: Was a business procedure not properly followed? Is there a flaw in the purchasing/storage/manufacturing/whatever process that results in products being defective?

<comment><USER16> That sounds way more comprehensive than most "auditing" I've seen in software. Usually it's timestamped activity logs with a couple of reports and maybe some filtering. Very basic.

<comment><USER21> Well, then software salesmen are taking advantage of the ignorance of their customers.

Of course, "auditing" as I described it is not just a button to be clicked on a GUI - it requires the user to know what stuff he is auditing in first place.

</comment></comment></comment></comment></comment><comment><USER22> Such articles are really motivational for solopreneurs - to know that even as a one-man company you still can land a major enterprise customer.

</comment><comment><USER23> "One of the most common objections I hear from folks thinking about moving upmarket into the enterprise is that they're not cut out to be Sales Guys. Guys, believe me, I used to play World of Warcraft and still often stare at my own shoes while talking. Nobody is less qualified to be a Sales Guy than me."

i loved reading that.

<comment><USER24> Me too, but you do realize he just sold you on something utterly untrue? :)

</comment></comment><comment><USER25> > "On the other hand, when you send us an email, you may have to wait a few > hours, but you'll get your response from me, every single time, and I will > do my best to fix your problem. I built this product from the ground up and > I am fanatical about taking care of you because you'd be my biggest > customer, and if I don't take care of you, the business is over."

Honestly, I don't know about this. This might work if you have a super-duper revolutionary product that nobody in the industry has, or you have some insane reputation(college/work whatever).

Disclaimer: I've not done buying/selling at enterprise levels - just watched a few others do it.

<comment><USER16> Having just had to get a hard drive replaced on a server under an "enterprise" warranty agreement, spending 30 minutes on the phone with a heavily accented robot who insisted on being sent zip files containing the output of the array diagnostics utility, to confirm that the drive had failed (yeah, why do you think I'm calling?) I would much rather have sent an email, even if it took a few hours.

</comment></comment><comment><USER26> This is really a nice writeup.

Good ideas, my only fear is not remembering this case when the need arrives.

</comment><comment><USER27> I hadn't heard the concept of "suggested CCing to the internal team" before. How do you phrase this? Are you asking them to forward your email on, or to CC others on their reply to you?

<comment><USER28> A simple line I've used before:

"Please feel free to CC your technical team so we can make sure we're all on the same page regarding [technical requirements X, Y, and Z]."

Or something to that effect.

If the purchasing agent is feeling over-their-head technically, they might jump at the chance to involve someone who actually _understands_ the requirements.

Disclaimer: I don't do SaaS, but I've been involved in a few enterprise sales in the capacity of "sales engineer".

</comment></comment><comment><USER29> _You can crush arbitrarily large /sophisticated competition on small deals that are uneconomical for them to pursue with the goal of expanding into the core of the business. Clayton Christensen calls this "disruptive innovation." I personally like to think of the old line about how to eat an elephant: in small bites, starting at its vulnerable underbelly._

That's good stuff. Worth the price of admission, by itself - and something I'll be filing away in my "bag of useful ideas and thoughts".

</comment><comment><USER30> Great article and excellent advice as always Patrick. Accurate all the way down to their accounts department not caring at all about your invoicing terms.

</comment><comment><USER31> I routinely spend money on behalf of my employer, on software and software services. Here are some reactions, which I hope are helpful to folks trying to sell to enterprises.

1) If you want to sell to enterprises, build your product for enterprises.

This means that you must be able to document systems and processes that lead to high reliability and security. Every aspect of the product must be managable by more than one person, in case someone goes on vacation or is fired (prominent enterprise services that fail this: Twitter and YouTube). You must be able to distinguish between "users", who just use the product to do their job, and "administrators", who manage the product for the enterprise. (Don't send "upgrade now" emails to users!) You must support--or be able to support--browser and OS versions that are a few steps behind what consumers are using. If it's client software, you must work on Windows. Etc.

2) Put your answers in email. Don't bother with attachments unless it's to print or sign.

I can't tell you how many emails I get from salesfolks with Word documents or PDFs attached to answer my questions. Just answer my questions, please, and do it in the body of the email so I can easily read and forward. Your product sheet might have the answer, but I don't want to dig for it. The sales process can be a competitive advantage, but only if you actually act like you're a person I'm conversing with, not a brochure-forwarding bot.

3) Don't jerk me around on pricing.

If you publish a low-dollar tier or tiers on your site, let me take one of those levels even if I'm a big enterprise. Here I disagree with Patrick-- enterprises ARE cost conscious. Managers are charged with buying what they need. If it MUST be expensive, that might be ok. What's not ok is spending a penny more than necessary. If I see a 50-foozle price on your website of $500/month, and you tell me I need to pay $5,000/month for 50 foozles just because I'm enterprise--see ya. Just because big businesses are rich, it does not make them saps.

4) "No" is rarely permanent.

If I tell a telemarketer at my home not to call me back, and they call me back, I am pissed. But if I tell an enterprise salesperson I'm not interested right now, or I only want the low website-advertised price, it's ok to call me back later to see if I changed my mind. There are a lot of brains in a big enterprise, which means mindsets and needs can actually change pretty fast. That said--respect a timeline you're given. If I say don't bother calling for 6 months, then don't call me next month (5 would probably be fine though). Be attentive but not pushy.

5) Don't try to go around me

If I tell you I'm the person you should be talking to, that still means that I will need to get clearance to spend. Don't try to find the "decision maker" above me. I'm not lying to you--I am the person who is responsible for managing the sales process for the actual decision maker, because the decision maker just wants to make decisions, not read 2,000 word emails from 5 different prospects. _I know the decision maker better than you do._ Going around me is just going to make me tell them that you are an unreliable loose cannon, and they will believe me, not you.

6) I have assymmetric expectations about communications; unfair, but that's life.

If you send me an email, it might be a week before you hear back. Feel free to politely follow up. I probably feel a little guilty about it, but sales guys are easily pushed down the priority list. But--if I send you an email, I expect an answer very fast. Meeting that expectation can be a competitive advantage. As Patrick says, a perception of responsiveness can beat a perception of size. I have often picked smaller companies over big ones because they answered every email and phone call right away.

</comment><comment><USER13> > Last time we talked about SaaS pricing, focusing on people paying in the > tens to hundreds of dollars range

Where can I find this?

<comment><USER32> I believe this would be the one - [https://training.kalzumeus.com/newsletters/archive/saas_pric...](https://training.kalzumeus.com/newsletters/archive/saas_pricing)

<comment><USER33> ya. but in reality adobe also doing like this now. more on passive income. But i do financial software and thinking open to SAAS mode.Some investor potential high cost and some are not.Building financial saas are complex but it's much easier in long term like me. don't have to go client place everyday.

</comment></comment></comment><comment><USER34> Second hand re-hashing of other people's experience is the best.

Seriously though, Patrick, you take an isolated episode and then extrapolate it into an assertive definitive business "theory". This is the good old armchair athletics. You appear to routinely do this and I personally find it seriously off-putting.

<comment><USER3> I think it's worth remembering that this is one guy who started with his bingo cards, was pinching himself through the small-scale success of that as a side- earner, spoke honestly of it on HN to an audience appreciative of _anyone_ sharing figures and experiences so openly regardless of their scale. Consider too how many here would be keen for any earning side project at all.

From the cultish following that developed (in the absence of many alternatives), he picked up some consulting work and commenced further pinching and explaining of his efforts.

Then, from that consulting to more self-pinching following some success with winning enterprise clients. And again, sharing what he personally learnt.

Yes, the jump from "guys, consulting is awesome!" to "no wait, consulting has its issues, wait until I tell you about enterprise sales!" was bemusing to me, but it's a discovery anyone following along saw happen to a real-world person. Some of the writing style (NDA, etc) can be dorky/annoying, but if you remember that this is a kid in a candy shop documenting the wonders of their personal experience, maybe that will help you appreciate it.

This isn't his business theory but a series of relatable experiences enough people value to upvote any time he shares more.

</comment></comment><comment><USER35> great read. i enjoyed the specifics of how you beat out the big player

</comment><comment><USER36> No thanks. Destroy enterprises, never negotiate with them. If their internal processes are so easily gamed, they're easy prey.

<comment><USER37> So if you were the CEO of "Appointment Reminder", your first plan of action after getting a request for information from a hospital would be to plan your takeover of the healthcare industry?

<comment><USER36> I don't want to say anything against Patrick or other consultancy oriented entrepreneurs, but I'd just put up a price on the saas app and be done with it and move on with the next thing. I'm functionality-oriented, create a lot of functions that automate work and let the product sell itself.

It might be a little foolish and leaving money on the table but I just think more and more code is better than more and more marketing. Software should eat the world, and as fast as possible.

<comment><USER29> _and let the product sell itself._

And what if it doesn't?

 _but I just think more and more code is better than more and more marketing_

Ideally you want code AND marketing, and - better yet - you want them working in concert with each other. Marketing isn't something evil, ya know... it's the means to finding out what customers want, and then letting them know that you've built a thing that they will want, so you can sell it to them (or so they can buy it, if you like that terminology better).

Quality marketing is a lot more than just shady web-advertising tricks (pop- ups, pop-unders, interstitials, link-spam, content farms, etc.), annoying TV ads, cheesy radio spots, spam emails, etc. Those are all just tactics which a given firm may choose to use or not use.</comment></comment></comment></comment>


Functional Pearl No.2 – The Max Number of Surpassers - <AUTHOR> http://typeocaml.com/2015/02/20/pearl-no-2-the-max-number-of-surpassers <comment><USER2> Enjoyable article, but that two-column layout is _bizarre_.

</comment><comment><USER3> If you like this then you should check out the source, Richard Bird's book [0] for it and many other similar examples.

[0] [http://www.amazon.com/Pearls-Functional-Algorithm-Design- Ric...](http://www.amazon.com/Pearls-Functional-Algorithm-Design- Richard/dp/0521513383)

<comment><AUTHOR> Yeah, I formally introduced the book when I presented the pearl 1: [http://typeocaml.com/2015/02/02/functional-pearl-no-1-the- mi...](http://typeocaml.com/2015/02/02/functional-pearl-no-1-the-min-free- nature/)

</comment></comment><comment><USER4> If we're targeting O(n log n), we could just sort the array and examine the number of times the minimum entry appears.

<comment><USER2> The answer is not always the lowest number, e.g., if it appears late in the list.

<comment><USER4> Ah! I missed the "whose indices are bigger" item in the description.

<comment><USER5> Crap, me too! It also would've helped if he provided an example where the answer wasn't also the min.

<comment><AUTHOR> Yeah, you are right, the example number list in the post was not that awesome. If I am free at any time, i will modify the example. Just refining the diagram will be quite painful.</comment></comment></comment></comment></comment>


5 Productivity Apps For The iPhone - <AUTHOR> http://www.sitepoint.com/blogs/2008/08/19/5-awesome-productivity-apps-for-the-iphone/

<comment><USER2> No mention of the equivalent, cheaper, but more polished MobileFinder? (More polished than Caravan, doesn't leave Windows users in the lurch like FileMagnet.)

Also, there is another RSS Reader that syncs with your Google Reader account. I suspect that research was a little less than comprehensive here.</comment>