Thank You Yahoo for YUI! - <AUTHOR> http://developer.yahoo.com/yui/

<comment><USER2> We're using YUI pretty extensively at my startup HubSpot.

Beyond the functionality, one thing we really like is that Yahoo! is continuing to invest in the product, posting regular updates, and building a community around it.

<comment><AUTHOR> You have one extremely nice webapp. The grading function is really impressive - nice work.

</comment></comment><comment><USER3> I don't get it, is there some sort of news about YUI, or are you just professing your love for it?

<comment><AUTHOR> The news would be all the new functions they've added and the continuing development they are doing (many in beta), but basically I'm using the system and finding it to be truly impressive and wanted to give those Yahoo!s some credit (and let others know about the great value they're building over there.) Also, Yahoo! has been having a rough time lately yet they continue to innovate which is very good news.

</comment></comment><comment><AUTHOR> It is truly amazing what power you can add to your web app with very little coding thanks to YUI. Thank You Yahoo!! You guys rock.

<comment><USER4> Hey, it's great that you are enjoying it, but is your personal happiness really "Hacker News"? If you'd found something interesting to say about it, that would be different.

I'm kind of curious why people upvote this story. Is it just because they agree with the premise? Like the "vote this up if you love chocolate ice cream" genre on Reddit?

<comment><AUTHOR> For anyone who is developing a web app and is not aware that YUI is growing and getting better, I can't see why this wouldn't be newsworthy here.

<comment><USER4> Announcements about YUI might be news, a blogpost like "consider YUI for your next project! Here's why!" might be news. Your personal gratitude, while admirable, isn't news.

It's not my site, though, and I'm only expressing my personal opinion about what I like to see here. I prefer straight news and commentary, without Twitter-style observational chatter.

</comment></comment></comment></comment><comment><USER5> YUI is bloated.

<comment><USER6> backup your comment? In what sense is it bloated?

<comment><USER5> The fact that the zipped source weighs in at 10 MB?

<comment><USER7> You seem to be forgetting about the docs and the examples in there....</comment></comment></comment></comment>


DAWN: Durable Array of Wimpy Nodes (2011) [pdf] - <AUTHOR> http://www.ssrc.ucsc.edu/Papers/ssrctr-11-07.pdf

<comment><USER2> There's already at least one startup building a flash controller intended to enable a DAWN-like architecture using TLC (triple-level-cell) flash, NxGnData [http://www.nxgndata.com/](http://www.nxgndata.com/) \- more details on my blog at [http://blog.dshr.org/2014/08/is-this-dawn-of- dawn.html](http://blog.dshr.org/2014/08/is-this-dawn-of-dawn.html)

Full disclosure - I am a co-author of the DAWN paper. The key point of the DAWN paper is the same as the FAWN paper, that conventional architectures with large amounts of storage paired with powerful CPUs can be out-performed on many axes by large numbers of small nodes each with a small amount of both storage and computation. Flash is the available memory to do this with now, it will be replaced eventually by better solid-state memories (e.g. Phase-Change Memory) but the architecture will remain. See also Seamicro [http://www.seamicro.com/](http://www.seamicro.com/) for a current example in the FAWN-like space.

</comment><comment><USER3> The point of this paper rests on an unfair cost comparison of local flash vs. S3. We know that S3 is much more expensive than local disk. If they compared local flash against local disk (e.g. Pergamum), disk would still win.

They have a newer paper that sounds better: [http://www.ssrc.ucsc.edu/pub/gupta25-mascots.html](http://www.ssrc.ucsc.edu/pub/gupta25-mascots.html)

<comment><USER4> Erm, yes and no. We focused more on the medium than the exact architecture. In point of fact, we directly say we draw heavily from the Pergamum design. The high-order bit, so to speak, is that disks suffer from a variety of electromechanical problems that flash and other SCM's don't suffer from, making it more appealing as a long term storage medium. Its (potentially) longer 'shelf-life' and lower power requirements mean it would likely have lower total cost of operation than a disk based approach.

</comment></comment><comment><USER5> They've buried the lede under cute terminology, like "wimpy nodes" and "storage class memory (SCM)".

The main thrust of the paper is that under certain assumptions, flash/solid- state/etc memory ("storage class memory") may already be competitive with spinning hard disks or tape for long-term archival storage of bulk data.

<comment><USER4> The "wimpy nodes" was a bit too cute for my tastes, but storage class memory is actually a fairly common term in the research community. The "wimpy nodes" was meant to be a coat-tail grab for the FAWN project, which we (disclaimer: I am one of the authors) heavily drew from in addition to the Pergamum project.

<comment><USER5> Thanks for the clarification. As an anecdotal data point, I didn't recognize the _storage class memory_ term, even though I'm quite interested in these topics, sometimes reading related research papers.

The abstract would have been more helpful had it alluded to the definition, for example "…of storage class memories (SCMs), such as flash memory, has been…".

Similarly, the term isn't defined on first use, and even following the footnote which strongly suggests definition/discussion of the same topic elsewhere ([21]), that particular term doesn't appear in the referenced Rosenthal "Keeping Bits Safe" article.

(Now I know, but I'm still not a fan of the term. At these levels of abstract analysis, it's all 'memory', and it's all being considered for 'storage', so _storage class memory_ lacks vividness/contrast.)

<comment><USER6> The industry term is NVM, which refers to all classes of non-volatile memory, typically high density ones.

How do you like Crystal Ridge?

<comment><USER5> NVM makes slightly more sense to me than SCM.

Crystal Ridge? (If you mean the nursing facility, still hoping for a more Rainbows End arrangement.)</comment></comment></comment></comment></comment>


Announcing .NET Core 1.0 - <AUTHOR> https://blogs.msdn.microsoft.com/dotnet/2016/06/27/announcing-net-core-1-0/ <comment><USER3> FYI, from the announcement. Probably the most important part at the end, italicized by me. Also note (elsewhere) that licenses are MIT and Apache2:

.NET Core Tools Telemetry

The .NET Core tools include a telemetry feature so that we can collect usage information about the .NET Core Tools. It's important that we understand how the tools are being used so that we can improve them. Part of the reason the tools are in Preview is that we don't have enough information on the way that they will be used. The telemetry is only in the tools and does not affect your app.

Behavior

The telemetry feature is on by default. The data collected is anonymous in nature and will be published in an aggregated form for use by both Microsoft and community engineers under a Creative Commons license.

You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (e.g. export on OS X/Linux, set on Windows) to true (e.g. "true", 1). Doing this will stop the collection process from running.

Data Points

The feature collects the following pieces of data:

The command being used (e.g. "build", "restore")

The ExitCode of the command

For test projects, the test runner being used

The timestamp of invocation

The framework used

Whether runtime IDs are present in the "runtimes" node

The CLI version being used

 _The feature will not collect any personal data, such as usernames or emails. It will not scan your code and not extract any project-level data that can be considered sensitive, such as name, repo or author (if you set those in your project.json). We want to know how the tools are used, not what you are using the tools to build. If you find sensitive data being collected, that's a bug. Please file an issue and it will be fixed._

<comment><USER4> Microsoft is looking to do more data-driven design; this is the reason for all the telemetry in Windows as well. Raymond Chen pointed out an example where a button was removed File Explorer (prime real-estate) because the telemetry showed that hardly anyone ever pressed it.

It's unfortunate they are so tone-deaf about the PR implications in Windows.

<comment><USER5> Like when they removed Macros from Visual Studio because according to telemetry only 1% of users used them.

<comment><USER6> I always suspected that there was probably significant overlap between users of macros and users who opted out of telemetry. Lesson learned: leaving "yes" checked from now on.

<comment><USER7> Big Brother has trained you well. ;-)

<comment><USER8> Yep. Don't vote and nobody will care about your (unexpressed) needs when making decisions.

<comment><USER9> Well, it would be nice if there is a way to vote or express one's needs via some alternative to having one's usage actively mined for data.

<comment><USER10> I think you are truly in a minority if you'd rather take a survey than have the data collected automatically. There has to be a sane middle ground.

<comment><USER7> Data collected by a neutral third party without conflicting interests pushing for creative monetization opportunities that's responsible for sufficient annonymisation/aggregation before releasing the data?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> A couple months ago I installed .NET core on a Ubuntu virtual machine running on the Windows 10 hypervisor, and was able to get a MVC5 app running using Visual Studio Code. As someone who really loves Visual Studio (it made me expect a lot more from my tools) and C# (it made me expect a lot more from my languages), it was an exciting moment. I actually took a selfie with my monitor.

It was still a little rough: the "getting started" instructions ONLY worked on Ubuntu 14.x and not Ubuntu 16.x, and my PR to the documentation pointing this out was nixed. (I notice they've since added a disclaimer: [https://docs.asp.net/en/1.0.0-rc1/getting- started/installing...](https://docs.asp.net/en/1.0.0-rc1/getting- started/installing-on-linux.html#installing-on-ubuntu-14-04)). I really hope to someday be able to build projects with React and a .NET core WebApi and be confident that my teammates will be able to get the project running on their macbooks without kms.

<comment><USER12> I wish MS would release a stripped down version of VS for OSX/Linux, but I know it probably won't happen.

<comment><USER13> Does this count? [https://www.visualstudio.com/en-us/products/code- vs.aspx](https://www.visualstudio.com/en-us/products/code-vs.aspx)

<comment><USER12> I've played with VS Code a bit, it's a pretty cool tool for small scale scripting, but it's not really a replacement for a full fledged IDE.

Hopefully Jetbrains will release their cross platform C# IDE sometime soon. I would prefer Visual Studio, but I don't think that's going to happen (at least not anytime soon).

<comment><USER14> From my experience, Rider is pretty stable and usable. Have you tried it out at all? [https://www.jetbrains.com/rider/](https://www.jetbrains.com/rider/)

<comment><USER12> Oh, didn't realize you could request early access. I'll check it out, thanks.

</comment></comment></comment></comment></comment></comment><comment><USER15> F# doesnt work ootb with sdk preview2. Work ok with preview1 of SDK (win/ubuntu/osx/docker), but preview2 has a bug, the fix is in progress ( ref [https://github.com/dotnet/netcorecli- fsc/issues/12](https://github.com/dotnet/netcorecli-fsc/issues/12) ) and will be published a nuget package with fix soon.

<comment><USER16> You reported the issue 11 days ago. I'm surprised they just announced it with such a basic use case being broken. It doesn't bode well for F# as a first class citizen in their ecosystem.

<comment><USER17> F# is not a first class citizen. They pay it lip service because it's a far more advanced language and makes MS look like they're on the cutting edge. Plus the team that made it is responsible for dragging the CLR into the modern era (or into the 60s) by bringing generics. And showing off important features on .NET such as quoted code, async workflows, F# interactive. But a simple look at tooling and language announcements shows that the F# team is very underfunded.

<comment><USER18> > The results of the 2016 Stack Overflow Developer Survey are in! F# came out > as the single most highly paid tech worldwide and is amongst the third top > paying techs in the US

[https://fsharp.tv/gazettes/f-the-most-highly-paid-tech- world...](https://fsharp.tv/gazettes/f-the-most-highly-paid-tech-worldwide- in-2016/)

<comment><USER17> Yes and it's clear from what the F# team has said that the hope they have for the future of the language is that the community will invest.

That's fine, but let's not think that this will produce tooling anywhere nearly as refined as C#'s stuff. Take F# interactive v the C# one. F# has like a decade lead. Yet the C# interactive editor is smooth, polished, even has VS project integration, something the F# team had thought of doing many years ago.

Non F#-team members[1] have said that internal politics are the issue here. To the point where some books were ... edited ... to paint C# in a better light, relatively. MS's marketing reflects this. My guess is they're too proud to admit their flagship language from their high-profile hire was shown up by what was a research project. And that the CLR's arguably biggest tech advantage over the JVM (generics) was also only done through the intense efforts of MSR; that MS Corp was against it.

It's sad, because MS is in a position to really elevate the world's programming consciousness/ability by _really_ promoting F#, yet it's still a novelty for, as MS has said "scientific and engineering" applications. Yet, apart from tooling/legacy, F# handles every case C# does in a better way. At worst, it's C# with lighter syntax.

Oh well. At least it's there, works, and has some level of support. Only reason I consider using .NET these days.

1: The F# folks are amazingly polite and I've never heard them even hint at a complaint about MS.

<comment><USER18> The finance industry where F# shines is willing to invest, I suppose. OCaml e.g. is backed by Jane Street and F# is even simpler in that regard because the hardest part is efficient runtime which is for F# is .NET - already done well by MS. But what some corp willing to invest in tooling for F# could do while MSVS is closed source and is not most transparent IDE in the world to say the least wrt plugins.

> too proud to admit their flagship language from their high-profile hire

That's acute while we know that high-profile hire's past victories (Turbo Pascal, Object Pascal, Delphi) were never about the _language_ , but about _incredibly_ polished IDE, compiler, libraries and runtime.

> yet it's still a novelty for, as MS has said "scientific and engineering" > applications

MS marketing wisdom is overrated, to say the very least. Look at Tablet PC. Windows XP Tablet PC Edition released in 2001. Ink APIs are all way through Windows SDK since back then. And they never realized that stylus thing is something more than just a 'uhm, you can draw a kitten, maybe?'. At least they never articulate anything more than that in any promotion campaign. And now Apple released iPad Pro and will eat the TabletPC-Covertable-Surface market.

</comment></comment></comment></comment></comment></comment><comment><USER19> After so many years microsoft finally presenting their tools in a more moden way. Never been a huge fan of .NET but i can't deny is a great tool hopefully people try it out on more platforms.

<comment><USER20> I still can't shake the feeling that their naming is just confusing. I still am not sure what exactly is .NET and what's not.

<comment><USER21> .Net is 14 years old now - if you don't know what it is by now you're probably not ever going to know. It's a cross platform runtime and a group of programming languages that run on it, just like Java.

<comment><USER22> The general idea of .NET as a platform is easy to understand. The naming of .NET Core, .NET Framework, ASP.NET, etc. and the difference between them is not.

<comment><USER23> .NET Framework = the whole shebang, the full runtime including Windows-only bits.

.NET Core = portable subset of .NET Framework. Therefore not entirely compatible with .NET Framework.

ASP.NET Core = portable rewrite of ASP.NET. AFAIK not fully compatible with previous versions.

<comment><USER24> iirc asp.net core does not contain the web framework part, just the server stuff

</comment></comment></comment></comment></comment></comment><comment><USER25> It's fascinating how Microsoft's marketing moved from ".Net - One platform with multiple languages" to "This is .Net - here some samples in C#"(without mentioning C# by name anywhere in the page).

I think that .Net would be much better if they had this kind of focus in dev side from the start.

*Hides from the f# mafia.

<comment><USER26> Can you make a mafia with only three people?

<comment><USER27> Funny, I saw far more than 3 F# presenters at NDC Oslo a few weeks ago..

</comment></comment></comment><comment><USER28> If I'm an experienced Python developer who develops a lot of websites and APIs using Django or Flask and SQLAlchemy, is there any reason to try this stuff? C# is a great language, but what about the libraries? What replaces Flask? What replaces SQLAlchemy? How do I deploy? Looking for some practical reasons to invest time on this if Windows development is not in my roadmap.

<comment><USER23> Well, besides libraries, performance.

.NET supports proper multithreading (no GIL) and it is also much faster than CPython.

If IronPython gets ported to .NET Core (maybe it already has, I don't know), then you'd get those benefits for free.

<comment><USER29> In the public repos, there no substantial new work taking place with IronPython.

<comment><USER30> If there was enough interest you could get the Microsoft Python team to support IronPython. There's been talk of a renewed effort.

[1] [https://blogs.msdn.microsoft.com/pythonengineering/](https://blogs.msdn.microsoft.com/pythonengineering/)

</comment></comment></comment></comment><comment><USER31> Documentation as a PDF (constantly updated):

[https://readthedocs.com/projects/aspnet- aspnet/downloads/pdf...](https://readthedocs.com/projects/aspnet- aspnet/downloads/pdf/latest/)

It's really just a copy of their informational web site content with articles by different authors, but still very conveniently combined into a single PDF useful for printing etc.

<comment><USER32> Thank you!

I have been looking for something like this!

</comment></comment><comment><AUTHOR> Release notes: [https://github.com/dotnet/core/blob/master/release- notes/1.0...](https://github.com/dotnet/core/blob/master/release- notes/1.0/1.0.0.md)

</comment><comment><USER33> I might be missing something here, but does this mean that .NET Framework and .NET Core have diverged, and you need to take extra steps to keep code compatible with both?

 _The major differences between .NET Core and the .NET Framework:_ [...] _APIs — .NET Core contains many of the same, but fewer, APIs as the .NET Framework, and with a different factoring (assembly names are different; type shape differs in key cases). These differences currently typically require changes to port source to .NET Core._

While I understand the motivation, this at first sight looks like something that will be with us for a long time, and could make life more difficult especially for library authors, who need to potentially target both 'platforms'.

[ _Disclaimer:_ haven't used .NET technologies for a very long time and might be horribly wrong here]

<comment><USER34> There are new platform targets that cover the common functionality. Support in NuGet is a bit nascent though.

[https://github.com/dotnet/corefx/blob/master/Documentation/a...](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net- platform-standard.md)

</comment></comment><comment><USER35> I've mixed feelings about this release, because it seems a bit early to me. Some fundamentals will change soon (project.json replacement) and I am still not able to get debugging to work in VS Code on OSX. The whole situation in the .NET Core space was very confusing for the last months and this trend seems to continue. This is sad, because I'd love to code in C# on any platform and that things would just work as advertised on the website.

Edit: Debugging works now for me, after the .NET Core Debugger was automatically installed in the background!

<comment><USER36> It's still extremely buggy. Very difficult to get a .NET MVC app up and running (they're not using the term WebAPI anymore).

<comment><USER37> I also think they've made a terrible decision, the first-class support for DI is a bad direction which has made many simple concepts like config settings into absolute farces that take 5 lines of code.

It's code "purity" over usability. It's putting the core dev team's principles over their customers actual need, completely violating KISS, DRY and YAGNI.

DI really is our generation's factories. I'm already seeing projects written by people who don't understand it making utter nightmare spagetti code, worse than any code I've ever seen.

It's nasty scaffolding code which is a symptom of limitations of the language, definitely not code anyone should ever actually be wasting time writing.

Instead of recognising it's a flash in the pan, the core team have embraced it and are trying to force it down everyone's necks, and a lot programmers simply don't get it and are making an utter mess instead.

<comment><USER38> >and a lot programmers simply don't get it and are making an utter mess instead.

Then maybe those programmers should go back to JS ES5?

</comment></comment></comment></comment><comment><USER39> Is there a primer somewhere that explains simply what the difference and dependence is between .NET (core, foundation), ASP.NET (core, foundation), Xamarin, Visual Studio (in all it's different flavors including VS.NET etc.) and Visual Studio Code?

I tried Wikipedia, and Microsoft's own homepages for each, and am even more confused.

I'm a hierarchical thinker, and a hierarchical tree explaining the above would be very very helpful.

Disclaimer: I haven't downloaded any of these yet. I usually don't until I've understood something.

Bonus question: If I want to develop websites and electron apps using: HTML, CSS, Javascript and PHP, what's the minimum set of technologies (or whatever it is that Microsoft is calling them these days) I will need?

<comment><USER23> Dotnet Foundation = NGO that manages various legal and org things for .NET. Think FSF for GNU.

.NET Core = cross platform software development platform. Includes a VM, compiler, tons of libraries.

ASP.NET Core = HTTP server + server side .NET libraries.

There is no ASP.NET Foundation, it's all part of the Dotnet Foundation.

Xamarin = .NET libraries for mobile development. Wraps Android/iOS native libraries.

Visual Studio = native Windows IDE for .NET and other languages.

Visual Studio Code = portable, Electron/HTML 5 IDE for Javascript/Typescript and other languages.

You probably want Visual Studio Code for HTML/PHP. But you should check out .NET Core, it can replace PHP.

By the way, if it works, it works, but I find it better to research and do at the same time. Downloading only after you've understood the org chart seems a bit too radical for me :)

<comment><USER39> Thanks. Very helpful. Last 2 Qs: is Framework different from Core? And how does Windows Presentation Foundation fit in all this?

<comment><USER23> .NET Framework is the old .NET Framework. It's basically the entire shebang, tied to Windows: VM, class libraries, etc.

.NET Core is as the name says, just the "core" of the .NET Framework, the part that's cross platform. However, I'm not sure that at this point the code's common, I believe at least a part of it has been reimplemented. I think that in the future .NET Framework will be based on .NET Core. Therefore .NET Framework will be .NET Core + Windows specific bits.

WPF is the fancy name for a .NET UI toolkit for Windows, basically. Think of it as a Windows-only GTK.

<comment><USER39> Thanks. That clarified everything. Sad that one can't find this simplified info on Wikipedia or on the Microsoft website.

</comment></comment></comment></comment></comment><comment><USER40> Does Microsoft have some diagram or something that shows how all the .NET things fit together (on Linux)?

The C# development I've done was... fine, but that was seven years ago and it's like Java in the sense that it's an amazingly complex thing to grasp and keep up with. Understanding how everything is layered is pretty complicated at this point.

<comment><USER41> I could be wrong, but I think this is what you are looking for. [http://www.hanselman.com/blog/AnUpdateOnASPNETCore10RC2.aspx](http://www.hanselman.com/blog/AnUpdateOnASPNETCore10RC2.aspx)

<comment><USER40> Thanks, that sort of helps. It's still a little confusing though. Branding and naming isn't something Microsoft is awesome at.

<comment><USER23> What's your current stack? Maybe we can compare and contrast the two stacks.

</comment></comment></comment></comment><comment><USER42> I don't see mention of FreeBSD anywhere in the .NET Core 1.0 announcements -- has official support for FreeBSD dropped or been postponed?

<comment><USER43> * FreeBSD is listed on CoreCLR GitHub repo ([https://github.com/dotnet/coreclr](https://github.com/dotnet/coreclr)). See current build status here: [http://dotnet-ci.cloudapp.net/job/dotnet_coreclr/job/master/...](http://dotnet-ci.cloudapp.net/job/dotnet_coreclr/job/master/job/release_freebsd/)

* Also, see doc here (last updated in feb though): [https://github.com/dotnet/coreclr/blob/master/Documentation/...](https://github.com/dotnet/coreclr/blob/master/Documentation/building/freebsd-instructions.md)

* Laslty, FreeBSD arrived on azure last week, so it would be quite surprising if support was dropped.

<comment><USER42> I understand, but none of those links are the .NET Core 1.0 release announcements.

And the download page for .NET Core 1.0 doesn't mention FreeBSD at [https://www.microsoft.com/net/download#core](https://www.microsoft.com/net/download#core)

</comment></comment></comment><comment><USER44> Interesting name choice considering they have already had a .Net 1.0. I mean I get it, I understand why they chose to make this more of a 1.0 release but for those already in the .Net ecosystem it seems a little confusing to me.

<comment><USER45> Excuse me if this was already obvious, but the word "core" designates a new product line, starting from 1.0. Obviously, it's informed heavily from the old .net framework, but it's not backwards compatible with it.

<comment><USER46> This is just a personal view, but my first instinct when I read about product "CoolApp" and "CoolApp Core" would be to assume core is a subset of the first. Not a new and re-engineered product line.

I could see why others might see .Net Core as a parallel product as opposed to a new one.

</comment></comment></comment><comment><USER47> I'd LOVE to see some Linux web/micro benchmarks... particularly against Java, Go, Node, Python.

<comment><USER48> _fwiw_

against Java --

[http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...](http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=csharpcore&lang2=java)

against Node.js --

[http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...](http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=csharpcore&lang2=node)

against Python --

[http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...](http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=csharpcore&lang2=python3)

<comment><USER49> I find the binary-tree benchmark specially disturbing, it looks like the .NET Core GC/escape-analysis has some catching up to do.

<comment><USER48> The multi core difference?

Check the cpu secs and cpu load; check the source code.

<comment><USER49> Oh I should have checked that first. Thanks.

</comment></comment></comment></comment></comment><comment><USER50> Good news! Now time for all the library and framework authors to add support for .NET Core. I know a lot of people were waiting for RTM before starting this, considering the massive changes between RC1 and RC2.

I've started a support matrix project at [https://anclafs.com](https://anclafs.com). Feel free to file an issue or send a PR on GitHub.

<comment><USER51> You're missing akka.net there

<comment><USER50> Thanks! I have a big list of things to add but I'll check this is on there and add it if they are planning (or have already added) support for Core. It started as things I had talked about in my recent book.

<comment><USER50> Added, closing [https://github.com/jpsingleton/ANCLAFS/issues/4](https://github.com/jpsingleton/ANCLAFS/issues/4), thanks!

</comment></comment></comment></comment><comment><USER52> I'm receiving

> "dotnet-dev-osx-x184.108.40.206-preview2-003121.pkg" can't be opened because it is > from an unidentified developer."

I know full well how to get around this, but it makes me suspicious of what I've downloaded. Would Microsoft have truly missed this?

<comment><USER50> It is annoying. The preview MSIs are signed but the preview PKGs are not. The last release was so maybe it just takes some time?

BTW you can ctrl-click/right-click the installer package and select open to get the option to run it without fully disabling gatekeeper.

[[https://github.com/dotnet/cli/issues/3434](https://github.com/dotnet/cli/issues/3434)]

<comment><USER53> Hey folks, sorry for the inconvenience around PKG signing. We're working on it right now and should have things updated soon.

Lee [.NET PM]

</comment></comment></comment><comment><USER54> Giant leap forward represented by Microsoft!! Happened right there when I heard of Microsoft released SQL Server running on Linux...

</comment><comment><USER55> They should have named it as xNET :) pronunce it as cross platfrom NET - <USER2> net framework which works on all platforms

</comment><comment><USER56> Any ideas how to do GUI development with .NET Core? Is there a version of Xamarin? Are there plans to port Windows.Forms, WPF? There is this massive thread about it [http://forums.dotnetfoundation.org/t/cross-platform- wpf/421/...](http://forums.dotnetfoundation.org/t/cross-platform-wpf/421/90)

and an issue here [https://github.com/dotnet/corefx/issues/5766](https://github.com/dotnet/corefx/issues/5766)

<comment><USER57> You can have a Web UI in desktop app. Just run the app with embedded kestrel web server and make all UI in HTML. And it will look pretty good an all platforms.

CatLight is one of the apps that do that - [https://catlight.io](https://catlight.io)

<comment><USER58> That's Electron, .NET Core (?) and Squirrel, all working together. Looks pretty cool, just pity the people on <20 megabit connections - these apps are getting pretty big.

</comment></comment></comment><comment><USER31> A bit unrelated, but I'm hoping to hear something soon about the future licensing model for the upcoming SQL Server on Linux. Do we get a free version without DB size / CPU / RAM limitations (but perhaps with some other restrictions) that smaller companies and startups can use in production?

I'm planning to run my future ASP.NET MVC projects on Linux and very much would like to know if a better SQL Server Express / Community Edition is coming or do I need to move to PostgreSQL (which I have already started looking into).

<comment><USER59> Why limit yourself with Express/ Community if you can get full featured RDBMS with Postgres?

<comment><USER60> For a developer favoring .NET, the degree of .NET integration with SQL Server might be a compelling advantage for applications where the limitations of the relevant SQL Server tier weren't a problem.

</comment></comment></comment><comment><USER61> What's the current status of the CoreRT runtime [1], the one designed for AOT compilation? Can it be used for non-trivial programs yet?

[1]: [https://github.com/dotnet/corert](https://github.com/dotnet/corert)

</comment><comment><USER50> Live stream of the release at Red Hat DevNation: [https://channel9.msdn.com/Events/Linux/DevNation-2016](https://channel9.msdn.com/Events/Linux/DevNation-2016)

Starts at 0930 local.

</comment><comment><USER62> I was really hoping for ARM support at least as far as RasPi goes for 1.0.

But still very good news I personally love .Net it's nice to be able to use it cross platform without having to work specifically around mono.

<comment><USER23> From what I see Samsung has been contributing on that front. They said in the announcement that Samsung has joined the Dotnet Foundation.

<comment><USER62> Yeah, the only problem with Samsung is that they most likely going to make builds for the Exynos based SOC which isn't that wide spread. The ARM ecosystem is quite fragmented and depending on how you build your software it's not as portable as one would assume.

It's also not clear which instruction sets they are going to be aiming for Exynos started with ARMv7 + all the stuff that Samsung added to it, but the newer ships are ARMv8. The Raspberry Pi still uses ARMv6, 7 and 8 depending on the exact model with the newer RasPi compute, and Zero models still running the old BCM2835 ARMv6 CPU's.

So I'm hoping for a more or less clean stock ARMv7 and ARMv8 builds for the .NET core coming out sooner rather than later, I also hope they'll release the X86 version to more platforms than Windows since running it on something like an Intel Edison which comes with a 32bit ATOM CPU will be quite cool.

.NET is quite powerful and for my taste it's considerably better than Node.JS (I don't like Javascript, this isn't some technical observation just personal preference) but I do like C# and F# quite a bit and having the ability to run the same code across multiple platforms makes me excited for IOT/Embedded devices again especially considering that I don't have to work through some of the headaches that come with Mono (some pun indented).

<comment><USER23> Well, I imagine that if someone offers support for those platforms they won't say no. But they'd probably also need for stuff such as the CI chain.

</comment></comment></comment></comment><comment><USER63> What is the licensing like if you're a vendor and you want to ship software based on .NET Core on your own hardware appliances? Can you redistribute the runtime, or do you have to pay?

<comment><USER23> MIT and Apache, apparently.

<comment><USER64> The source is MIT and Apache, but that doesn't mean the binaries you get from MS are redistributable.

For anyone asking this question and not getting a sufficient answer, the safe route would be "build from source, then distribute that".

</comment></comment></comment><comment><USER65> I don't understand, why does the package name for Linux say preview2?

        apt-get install dotnet-dev-1.0.0-preview2-003121

Isn't this the final release?

<comment><USER50> The preview refers to the tooling (CLI, VS etc.) [[https://github.com/aspnet/home/wiki/roadmap#schedule](https://github.com/aspnet/home/wiki/roadmap#schedule)]

</comment></comment><comment><USER66> Do we officially have better-than-Java on all platforms now?

<comment><USER67> Yeah but so what. If the "best" language always won, why isn't the entire world running on Haskell and Rust or whatever? Java's eco-system is ginormous and it's deeply entrenched as _the_ "corporate stack" in non-MS shops, with more than 15 years of history.

I'm afraid this is just too late to make a big dent. C# is nicer than Java, but not _that_ much nicer to warrant switching over or rewriting your stuff in a very immature eco-system.

Maybe they're hoping to capture some of that elusive start-up market- and mind-share? That one is already pretty hostile towards MS...

Either way, this is a _good_ thing, I just wish they had done this in 2005 or so.

<comment><USER68> On top of that, Scala is a much nicer language than C#. I moved from being a C# developer to Scala and couldn't be happier. Best thing about C# is Visual Studio (IDEs are weaker in Scala land) but a bigger ecosystem and more powerful language make it for it imo.

<comment><USER69> Could you sell me on Scala over C#?

<comment><USER68> Pattern Matching, Destructing, and ADTs are amazing. Inference is much better and not just for local variables.

for comprehension is the equivalent of LINQ syntax which is nice, very powerful when working with asynchronous calls.

Higher Kinded Types combined with implicit parameters are the two aces in the hole that make it an asbolute definitive win when heads up against C#. When I had to switch back to C# in my last job (some projects were scala, some C#) this was what I missed the omst. Combining the two gives you the 'type class pattern', which is pretty much the first time i've actually seen composition and code sharing just work without the cruft of an 'OO' like framework.

[http://www.cakesolutions.net/teamblogs/demystifying- implicit...](http://www.cakesolutions.net/teamblogs/demystifying-implicits- and-typeclasses-in-scala)

</comment></comment></comment></comment></comment><comment><USER70> A few years ago, I wouldn't have thought I would write this, but it looks like Microsoft is definitely changing, for the best!

Two questions:

\- Does .NET Core offers something similar to Go goroutines or Erlang "lightweight" processes?

\- And something similar to gofmt?

<comment><USER71> I don't know of any green threads in .NET -- at least, not built in. However, .NET does have a built-in thread pooling / task execution service. You generally interface via `System.Threading.Tasks.Task`[0], which has static `Run` functions, or use the `Factory` property to get the underlying `TaskFactory` for more fun. Since the executors are pooled, the creation costs will be amortized over your program's lifetime.

Then there's `async`/`await`[1], which is built on top of tasks.

[0] [https://msdn.microsoft.com/en- us/library/system.threading.ta...](https://msdn.microsoft.com/en- us/library/system.threading.tasks.task%28v=vs.110%29.aspx)

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

<comment><USER72> I remember that a long time ago, .NET threading was implemented in such a way that it should, in theory, support Win32 fibers. It's why all the low-level .NET APIs don't use the OS thread IDs, but instead have their own IDs, and require explicit mapping.

I believe that it was abandoned as a supported scenario a while ago, though. But you can still see artifacts of that in the docs, e.g.:

[https://msdn.microsoft.com/en- us/library/system.threading.th...](https://msdn.microsoft.com/en- us/library/system.threading.thread.managedthreadid\(v=vs.110\).aspx)

"The value of the ManagedThreadId property does not vary over time, even if unmanaged code that hosts the common language runtime implements the thread as a fiber."

</comment></comment></comment><comment><USER73> I was expecting they would fix the Uri class on Unix ([https://github.com/dotnet/corefx/issues/1745](https://github.com/dotnet/corefx/issues/1745)) before releasing 1.0 :( Now I fear their backwards compatibility policies will prevent to fix it later. So much for crossplatformness...

<comment><USER74> Way too many compatibility issues unaddressed by that PR to have a hope of getting anything changed there. Also it looks like what you (?) are trying to do could easily be solved with the Path.* and Directory.* path manipulation functions. No need to put a million apps at risk when you can wrap your call to Uri() with a three line helper.

<comment><USER73> 3line helper? _facepalm_...

<comment><USER75> Care to enlighten us?

</comment></comment></comment></comment><comment><USER76> Does this represent some kind of change for .NET? Why is it called 1.0?

<comment><USER77> It's the first version of .NET that's cross-platform, it's the first version of .NET that's totally open source, and it's the first version of .NET that can build self-contained apps (no need to have .NET Framework installed to run .NET Core 1.0 apps). See the release notes[0] for more info.

It's called "core", because it doesn't contain the Windows desktop UI toolkits, like Windows Forms and Windows Presentation Foundation (WPF), and excludes some other Windows-specific functionality.

Additionally, this is the first version of .NET in which apps can be totally self-contained. Previously, you'd need to install the .NET Framework on your machine to run .NET apps. That is no longer a requirement in .NET Core 1.0.

So, it's a pretty huge release. And really the first time in decades that MS has built it's premier dev stack with multiple OS support.

[0]: [https://github.com/dotnet/core/blob/master/release- notes/1.0...](https://github.com/dotnet/core/blob/master/release- notes/1.0/1.0.0.md)

<comment><USER78> Interesting. I'm guessing it doesn't support COM interop?

<comment><USER79> If you need COM interop, you don't need cross platform compatibility. You can just use the full .Net framework.

<comment><USER80> I remember working with COM on MacOS 8... And it supported remote objects, so, it'd be, in theory, possible to self inflict that pain.

<comment><USER81> I experience a physical revulsion just thinking about all the wasted years I spent with COM and DCOM.

</comment></comment></comment></comment></comment></comment><comment><USER82> Damn, I wanted to learn more so clicked Learn -> Get started with .NET Core and ... 404

Not the best start :-/

[https://docs.microsoft.com/en- us/dotnet/core/index](https://docs.microsoft.com/en-us/dotnet/core/index)

<comment><USER83> Thats [https://docs.microsoft.com/en- us/dotnet/articles/core/index](https://docs.microsoft.com/en- us/dotnet/articles/core/index)

<comment><USER82> Cool, thanks. Well the link on the page is somehow still not displaying this.

<comment><USER53> Sorry about that! Link should be fixed up shortly.

Lee [.NET PM]

<comment><USER82> Thanks for sorting this. I'm a little embarrassed I complained on HN instead of raising an issue on GitHub or something :)

</comment></comment></comment></comment></comment><comment><USER84> This is great news! I know that some of the devs from MS visit this site. Good work guys!

</comment><comment><USER85> Does anyone know if the changes planned to project.json are included in this?

<comment><USER38> No, they are not.

</comment></comment><comment><USER86> At my shop we have been using ASP Core since RC1 and have been quite happy with it. The tooling feels a lot like Node.js in a way, much different from any previous .NET development. It's awesome to have C# be deployable as docker containers on Linux hosts.

My biggest gripe so far has been that Nuget doesn't have a way to search only for libraries that are Core compatible.

If you are San Diego area and interested in working on Core, we are hiring. Inquire at christian.peth(at)millenniumhealth.com

</comment><comment><USER87> I am interested in hosting a .NET web app on linux, so I read the docs: [https://docs.asp.net/en/latest/publishing/linuxproduction.ht...](https://docs.asp.net/en/latest/publishing/linuxproduction.html)

Is there any advantage to running a reverse proxy (nginx) if you already have Cloudfront in front of your cluster, doing the https & gzip work? And, if your web app serves literally 0 static content?

<comment><USER69> >And, if your web app serves literally 0 static content?

Even real time dashboards have _some_ cacheable content. I would still want to use something like Varnish/NGINX in between.

<comment><USER87> Mobile backend, every call hits the db

</comment></comment></comment><comment><USER88> The dawn of a new era!

</comment><comment><USER89> Does this still use mono's jit and GC on mac and linux? Last I checked mono's GC is conservative and the jit isn't as good as the .NET one.

<comment><USER90> It does not; it uses the same JIT and GC as the Windows version of .NET Core, and the code is also shared with the (full) .NET Framework that ships inside Windows.

Actually, this has always been the case for .NET Core, but you may be thinking of our older preview versions which gave you the option to run your app entirely on mono.

(I work on .NET at Microsoft)

</comment></comment><comment><USER50> There is another blog post here: [https://blogs.msdn.microsoft.com/webdev/2016/06/27/announcin...](https://blogs.msdn.microsoft.com/webdev/2016/06/27/announcing- asp-net-core-1-0/) (they have 2 blogs, one for ASP.NET and one for .NET)

The stream on Channel 9 is about to start.

</comment><comment><USER91> sudo apt-get install dotnet-dev-1.0.0-preview2-003121 ... some second later...

>> This software may collect information about you and your use of the software, and send that to Microsoft.

Edit: Please visit [http://aka.ms/dotnet-cli-eula](http://aka.ms/dotnet-cli- eula) for more information.

The link is a 404 on GitHub

<comment><USER92> Fixing now...

<comment><USER92> Fixed.

</comment></comment></comment><comment><USER93> What happened to the so called promised "dynamic compilation"? There was supposed to be a great improvement in compilation times...which is still quite long on the default sample.

I don't feel like Microsoft has improved enough for me to make the switch from .NET 4.x.

<comment><USER94> As someone who's mostly moved off of windows, the ability to build/target docker (linux) and dev on osx (already using vs code for node) is pretty compelling.

</comment></comment><comment><USER95> Microsoft is about 5 years too late with this.

I'm sure their MVC stack is fine, but this isn't a problem needing a solution in 2016. There are dozens are frameworks in your favorite language that can deal with taking HTTP requests, grabbing data from a backend, and spitting it out as JSON. They all run fine on Linux servers, are easy to develop on Mac.

C# is a nice language too, but I'd need a compelling reason to jump from Java / Scala over to .Net. And JetBrains puts out products just as good as Visual Studio for every major language.

The one thing that might make me consider this would be MS implementing the actual valuable part of .Net to Linux, Mac, and others: the desktop GUI libs and Visual Studio GUI tools.

Of course this will never happen since the MS dev tools team is beholden to the Office and OS departments.

Instead, I imagine .Net core will not gain much traction.

</comment><comment><USER96> Any tutorial on how to build a .Net core web application specifically on Linux. There seems to be a lot to wade through docs wise with a lot of it still talking Windows.

</comment><comment><USER97> I still don't understand what's a .NET project now, how to define one? what to checkin? is it still project.json? Or do we need another tool?

</comment><comment><USER36> Is some information missing from the article? I'm eager to use this but it's not showing me how to set up my `tasks.json` file.

</comment><comment><USER98> Is this the release of .Net Core and ASP.Net Core, or is this just the .Net Core?

<comment><AUTHOR> First line of the blog post: _We are excited to announce the release of .NET Core 1.0, ASP.NET Core 1.0 and Entity Framework 1.0, available on Windows, OS X and Linux!_

<comment><USER98> Interesting, I could swear that the first time I clicked the link it went to a product page. I never saw the blog post.

<comment><AUTHOR> You're right, the link was updated after the announcement post was made public (was [https://www.microsoft.com/net/](https://www.microsoft.com/net/)) :)

</comment></comment></comment></comment><comment><USER99> I'd like to be able to write AWS lambda methods in .Net core.

</comment><comment><USER100> Am I the only one annoyed with the post title of "NET" and not ".NET"?

<comment><USER101> Possibly removed automatically by Hacker News</comment></comment>


Doom as a tool for system administration - <AUTHOR> http://www.cs.unm.edu/~dlchao/flake/doom/

<comment><USER2> This is such an awesome idea. I wonder why nobody give a real world use to games like Angry Birds. Given the right methophor there must be a way of putting an useful angle on mindless entertainment.</comment>


Getting better and finding happiness through cycling - <AUTHOR> http://duruk.net/progress-of-happiness/ <comment><USER2> Great story. Here's my variant.

I never learned to ride a bike as kid. At age 33, I realized I was about to move to a city where biking is close to mandatory (Melbourne), so I sucked it up and went for a couple of one-on-one adult bike lessons. Despite a first lesson that was so painfully fumbling and awkward I almost gave up, I showed up once more and figured out the key: when you start to fall over to the left, steer to the left, and you will suddenly no longer be falling. Rinse and repeat. We did a little cruise around the neighborhood, and hey, I was biking! Although I did have my ceremonial first fall when I crashed into a bollard at the end of a bridge (at very slow speed, fortunately).

Then I started commuting to my new workplace by bike. 15 minutes, a nice and easy ride, mostly on bike paths separated from road traffic -- but it was still scary as hell initially, and I walked the route a few times, trying to figure out exactly what I'd need to do to cross every road and turn every corner. The first morning was freaky, but I still remember the feeling of adrenaline rush when I arrived at the office the first time: Whoo! I survived! And then on the way back later that day, my shoelace gets caught up in the gears and I do a slow-motion crash onto the bike path. No real damage, but my nerves were sufficiently shot that I had to walk the bike home and skip the next day. Two days later I was at it again.

Next I attempted to learn curb hopping. My spectacularly mistimed 2nd attempt saw the wheel hit the curb full on, so I flew head over heels and shredded one knee to bits on gravel. Turns out you can keep biking just fine with a bloody knee, it only starts to hurt once the blood gets a chance to congeal.

And now I commute by bike every single day, rain or shine, 0 or 40 degrees. I wouldn't give it up for the world and am considering upgrading from my current trusty but heavy mountain bike into a zippier road model.

<comment><USER3> Push your laces into your shoe and put your sock (a long one!) over your pant leg on the chain side. That'll save you at some point in the future. You got pretty lucky, falls can be quite nasty. Another safety tip: on any turn that is a bit sharper stop pedalling and keep the inner pedal highest. That way you increase ground clearance (pedal strike on ground or kerb becomes next to impossible) where you need it most. And if you're going for a tenspeed style racing bike (or 27 speed these days ;) ) or something like that please don't use toeclips until you're a very confident rider.

<comment><USER4> I'm not sure if there's a way to avoid problems learning toeclips. I cycled since childhood but was terrified by stories of "death clips", and decided not to get them.

But at a race prep meetup for a long triathlon I was the only one without them, and got mollycoddled by the organisers. They gave strong advice to get them.

So I got them and took it easy - riding around a park, slow rides. I still had several bad falls when I got onto the roads though. And I need to go through busy roads to get to the country (no car).

I found that you need to be very deliberately transactional in the way you cycling when you have clips. For example - as you approach lights, once you get a certain distance out of it's still read then that's it - you just start start unclipping. You don't want to play the game of edging up to the lights, because a car might do something confusing and then you're screwed. You need to position yourself in traffic much more carefully, and hold off on some situations you wouldn't have thought twice about when you had pedals.

<comment><USER5> I agree. You can't learn to use death clips without a little pain. I'm all for them on road riding or mellow XC rides, but some of my buddies started using them on full down hill tracks like in whistler BC. They swear by them and yes a lot of world cup racers now use them, but I think it's few and far between because of the learning curve. I don't think I could ever do it, I'm not fully comfortable on a full suspension bike unless I can eject quickly. It's bad enough getting tied up in your handlebars, let alone not getting your feet out as you endo a cliff drop.

</comment></comment></comment></comment><comment><USER6> I've found happiness through Ultrarunning. I can relate to many of things that the author mentions but one thing is particularly poignant:

> I distinctly remember the first time I actually made it up that hill, I > remember feeling that if I could do something that I sucked at so bad couple > weeks ago now, I could do apply that to anything.

Once I found I could run for 3 hours non stop it felt amazing, then 4 hours, 5 and so on. It was the first time in life that I really got the feeling that hard work could bring massive benefits to areas that I had no previous experience in. And no one had to show me. I could just go out and do it.

Anything really is possible.

<comment><USER4> How do you manage food and water for long runs?

<comment><USER6> Organised races are easy as they are provided at aid stations. My normal saturday run is usually my longest and is the one where calorie intake is needed. I've tried different solutions including carrying it all with me. Now I tend to park the car 'in the middle' of my run. Then I'll just do 2 hour loops from the car. The main item needed is water as its easily possible to carry enough calorie and electrolytes with you. I'm also currently living in Western Australia where is normally just hot and there isnt much water on the trails.

If you are interested in running nutrition (or any endurance nutrition) I wrote about a presentation I went on a few months ago [http://justrunning.net/2012/09/the-steve-born- seminar-15-sim...](http://justrunning.net/2012/09/the-steve-born- seminar-15-simple-ways-to-improve-your-athletic-performance-right-now/)

</comment></comment></comment><comment><USER7> When I meet successful people in business from time to time, I more often than not find that having conquered the business world - physical challenge brings them more happiness than another business success could. Especially if it just a 5k that some average athlete shrugs off; all challenges are personal. Sometimes, if running a profitable business, building and managing people effectively is not a challenge, a 40 min 5-k can very well be.

Book recommendation, not just about cycling: The Rider, by Tim Krabbé

"The greater the suffering, the greater the pleasure. That is nature's payback to riders for the homage they pay her by suffering. Velvet pillows, safari parks, sunglasses; people have become woolly mice. They still have bodies that can walk for five days and four nights through a desert of snow, without food, but they accept praise for having taken a one-hour bicycle ride. 'Good for you'. Instead of expressing their gratitude for the rain by getting wet, people walk around with umbrellas. Nature is an old lady with few friends these days, and those who wish to make use of her charms, she rewards passionately."

[http://www.belgiumkneewarmers.com/2008/01/tim-krabbes-the- ri...](http://www.belgiumkneewarmers.com/2008/01/tim-krabbes-the-rider.html)

<http://www.amazon.com/Rider-Tim-Krabbe/dp/1582342903>

</comment><comment><USER8> Cycling is great, I highly recommend it. Don't think of it as a cheap hobby though, once you get into it you are almost guaranteed to start breaking things on a cheap bike and want better gear.

As a side note, if you do get a bike on a shoestring budget get an older bike as those things were built to last; modern cheap bikes have gimmicky suspension setups (suspension is great but there are vast differences between cheap elastomers and a plush oil based setup) that don't help and add weight (and parts to go wrong) to the bike.

Also if you are finding it difficult to get into, try different styles of cycling. Fast road riding, cross country mountain biking, long distance cycle touring , downhill mountain biking and BMX riding are all _vastly_ different experiences that use completely different skills and muscles.

On another note, if you get serious I do highly recommend so called "clipless" (a cleat in the shoe locks into the pedal) pedals for most styles of riding.

These things seem so scary and dangerous to start with, but I can virtually guarantee that once you are used to them you will not want to go back even for technical offroad riding. The extra efficiency and control you gain is astonishing, toe clips don't even come close. Of course make sure you practise on a grassy area first and get the feel for them and make sure you are confident with them before heading into traffic.

Falling off your bike when you stop for a red light is at best embarrassing and at worst really dangerous.

Also Sheldon Brown's page (RIP) on cycle maintenance though heavily outdated unless you have an older bike is probably one of my favorite parts of the "old internet".

<http://sheldonbrown.com/>

<comment><USER9> Agree on Sheldon Brown's site. Amazing old internet site.

I can't get into clipless riding though. I tried toe clips and found it incredibly dangerous riding in the city (New York City). I don't feel safe unless I can bail off the bike in an instant. It also seems the clips discourage cyclists from stopping at red lights.

Maybe it's a good idea for more rural riding, but I pretty much never do that.

<comment><USER8> Toe clips are way scarier than clipless once you get used to clipless.

With toeclips there is something physical that is stopping your feet from moving and you have to get your foot completely clear of the strap before it is safe to put it down.

With clipless on the other hand, if you have your pedals set right (spring tension) it becomes an automatic reaction when you know you are about to stop or about to go down. You also get much more freedom of foot movement without destabilising the bike. I got into a few hairy situations riding some technical trails but ejecting feet from pedals was never an issue.

Nowadays I actually find it more hairy riding with flats since I have to worry about my feet falling off the pedals accidently if I hit something too hard.

<comment><USER10> Agreed. To properly get out of a toe clip pedal, you have to 1\. take your hand off the handlebar 2\. crouch down 3\. catch your thumb on the strap tightener 4\. pull it away from you 5\. remove your foot fully from your cage

with clipless:

1\. kick your heel out so that your foot is more than 13.5 degrees with your toes pointed towards the bike.

2\. there is no step 2.

</comment></comment></comment></comment><comment><USER11> Cycling is the perfect hacker sport:

* You can go out riding by yourself, or with groups.

* You can geek out about the tech involved if you want.

* It gets you outdoors in a context very different from sitting on your ass in front of a computer. Great for clearing the head.

The biggest drawback is that it's tough to find the time for a good ride (at least 2 hours), whereas something like running takes less time.

If anyone ever makes it over to the Padova area with their bike, I'd be happy to take you out on a ride and show you the area. The Colli Euganei and Colli Berici are both pleasant and attractive areas to ride.

<comment><USER12> Great. I love mountainbiking and was serious about it for more than ten years now. I agree with all you are saying. I would add that there are still opportunities to improve and build better bicycles. Especially the recumbent bikes community is very actively hacking better machines. I have some friends involved and was able to try several prototypes - if I have the extra money to invest I would definitely support this. It is innovative, useful and fun! I have also used a bicycle for commuting in every city I've ever lived. It is probably the best way to explore the surroundings and get to know the city map. Just note: I have experience only from Europe and Eastern Asia. David, I would be happy to visit you someday with my bike in Padova.

</comment></comment><comment><USER13> I always wanted to be an amazing jump roper. As a kid I couldnt ever play with others jumping rope, I just couldn't do it. When I would jump rope solo, I had to double jump each time because I was so physically out of rhythm.

Last year my new years resolution was to get in shape. In the summer I jumped rope almost everyday. There becomes a moment when you are jumping, where you stop jumping and you feel like you are floating. Your legs are moving the rope, and as you continue your mind flourishes and floats. I love this feeling; jumping rope is my cycling.

Last time I went to the gym I was doing double revolution jumps and this guy looked at me and was like "I haven't seen anyone do that since Rocky". ADRIAN.

</comment><comment><USER14> You can get massive endorphin high from cycling hard and up hills. It's really hard to describe unless you've done it. I believe this is the same rush some runners get. Road bikers tend to go for this sort of high, mountain bikers often get in to the downhill. I am a bit weird in that I prefer uphill to down and usually ride a mountain bike.

One thing I would recommend is, once you're out of traffic or are confident of staying on the edge of the road and not being hit by passing traffic, try playing some trance or other high energy music through headphones. You don't need a special iPod or expensive headphones, just a regular smartphone in your pocket (if like me you remain unconvinced about doing the lycra thing) and in- ear headphones threaded through your shirt will do it. This isn't just a random recommendation: by adding high energy music, I find that my subconscious regulation of breathing changes and I am able to more accelerate my metabolism both more quickly and to a further point.

Source: During my first startup in southwest China I used to leave the office about 4 or 5pm and cycle up a Himalayan mountain at high speed before retiring to social drinking. Through the wonders of cycling I managed to lose a lot of weight and maintain high energy despite heavy drinking :) Also used to do whole day group or solo rides on the weekends, sometimes both days, usually with more off-road.

I've also done (usually month long) cycle tours around southwest China, France, Romania, and Taiwan.

A couple of years back, while living in the Hollywood hills of LA for a year, I got a bit in to road biking .. the mountains north of eastern LA are fantastic for weekend rides. Unfortunately I'm living in Bangkok now, no chance to cycle but a huge private pool to enjoy, and plan to hit southwest China on a regular basis to visit the squirrels in my favoured cycling environment: high altitude Himalayan pine forest. Ahh, nature and exercise are so life affirming :)

<comment><USER15> Where in SW china were you doing your cycling? And what kind of startup were you doing that allowed you to be there? (NB I just moved back to SF after a year and half in Kunming)

<comment><USER14> Cycling: all around Yunnan. <http://pratyeka.org/bike/southern-yunnan.html> is my original trip. I mostly lived in Jinghong (Xishuangbanna) and Kunming.

Startup: My own, since there was nobody doing anything there that required my skills I simply made my own project. China-focused multilingual hotel reservation system, with integrated global SMS, digital fax, from-scratch diskless Linux-based VOIP call center.

</comment></comment></comment><comment><USER16> Cycling to work was one of the reasons I lost 50lbs. I biked about 10km each way from my apartment in Kitchener to my office in Waterloo (Ontario). Now live in Toronto where, outside of winter I cycle on a daily basis. Sold my car last year too, which is a nice cost saver.

If you know how to get around safely, I can't think of any reason why you wouldn't want to cycle. Most people are worried about sweating, but is easily solved by not riding like some Tour De France wanna-be and enjoying a nice casual ride.

<comment><USER17> I live right in downtown Toronto, and frankly I'm terrified out of my mind to try cycling around!

<comment><USER16> It's definitely not perfect not the most pleasurable experience but if you find the right streets for your route it can become quite a relaxing ride. :)

</comment></comment></comment><comment><USER18> I had a light weight Dawes galaxy touring bike (more comfortable than road bikes) and tried cycling for about 2 years. Problem is I live in London where there are actually no pleasant cycling experiences to be had. I gave up after the third attempt by psychotic drivers to take my life and bits of what I can only describe as cycling routes worse than an outback road in Afghanistan. Oh and dog owners - the scum of the earth: either end up rolling through shit or having them out of control jumping at you.

Plus it was awful being sopping wet and covered in 'london shit' that you can't clean off without resorting to rubbing yourself with swarfega.

Horrible experience. Even a picadilly line tube train (known as the tandoor) is better in the middle of summer with sweltering 32oC and no air.

<comment><USER19> My experience is quite contrary. I've lived (and actively cycled) in three cities: San Francisco, London and Helsinki and although London is absolutely the worst of these three to cycle from the safety perspective, I nevertheless learned to enjoy cycling in traffic. I've rarely been more alert and present in the moment as during my morning rides to work. It gave me quite an adrenaline rush and I felt great afterwards.

<comment><USER18> That rapidly changes the moment you get knocked off. Someone pulled out on me in Clapham and clipped my panniers and nearly knocked me off. Scared the shit out of me.

Humans are just sacks of jam in an accident. No thanks.

</comment></comment></comment><comment><USER20> I too can vouch for the changing power of cycling (and long distance running, which I discovered around the same time). It replaced a nicotine addiction for me, alleviated mood problems and continues to help me think clearly. I'm the sort of person who requires regular solitude--long runs or bike rides give me that (they can be deeply meditative) and force me to get some fresh air.

Arranging their life in such a way that regular commutes can be accomplished on a bicycle or by foot is one of the most valuable lifestyle changes anyone with a desk job can make.

</comment><comment><USER21> I recently got into road biking myself, but one thing I disagree with in this post is that you should buy an expensive road bike to start. I bought a $400 road bike off bikesdirect.com and another $120 on step-in pedals/shoes and outside of a few more cheap accessories I've not spent more than $700 on the whole package. It's the best bike I've ever personally ridden and I have really gotten into the sport (I'm training for a triathlon next summer).

It reminds me of when I bought my first new car, a 2007 VW Rabbit. I knew what I wanted - the four-door non-sport edition, but the dealer asked me if I wanted to test drive the GTI which I didn't know came in a 4-door. I was very tempted but resisted because I knew as soon as I test drove the GTI, the Rabbit would feel sluggish in comparison. The point is, if you start out by test driving something expensive, whether it be a bike or a car, your expectations will rise from zero to very-high and it will taint the well of cheaper options.

It's much more economical to buy a cheaper bike when you have zero expectations, especially if you don't know whether or not you will commit to the sport long-term. You can always sell it and upgrade to a nice $1000+ road bike in the future if you end up loving the sport. I might even recommend going cheaper than I did and buying a used road bike on craigslist for far less than the $400 I spent on a new bike (however cheap $400 is for a new road bike). As others have mentioned here, half the fun of owning a bike is learning how to maintain, repair, and upgrade it over time.

<comment><USER22> I think what you have would count as an expensive bike. Since you can get a working bike from a place like Walmart for just about 200.

That said, if you are counting what you have in the not too expensive department, I agree completely. I got a pretty good deal on craigs list. Is an older bike, but unless you plan on going competitive, it is hard to go wrong with a quality bike.

<comment><USER23> > I think what you have would count as an expensive bike. Since you can get a > working bike from a place like Walmart for just about 200.

No, that there is a cheap bike. Average bike prices are around $700 or so. An expensive bike is ~ $4K with carbon fiber/titanium frames. Sure, you can get a Walmart bike for $200, those things fall apart very soon and encourage bad posture.

<comment><USER22> I should have clarified, "to many that view bikes as a toy, a 700 bike is an expensive bike." It is not that I disagree with what you are saying. I just realize there is a majority that does not want to spend more than 200 on a bike. And that isn't "before accessories."

Myself... I just wish I biked more. I don't have the courage to bike the full 14 miles to work, and the 3 miles each way using the train just feels sorta "meh."

I am highly tempted by the bike lights at revolights.com. If anyone has experience with those, I'm all ears.

</comment></comment></comment></comment><comment><USER24> It has worked well for me in the past. I lost 30 lbs when I got back in to cycling, but it's slowly crept back on[2] so I need a new effort to sort it out.

My commute is only 8 miles and I do this the vast majority of days in all weathers (London, UK) even if it's icy or snowy (this weather to come in the next few months) as I've got a spare pair of wheels with Schwalbe Marathon Winter studded tyres on them.

Combining my commute (the alternative is to take the train) with a 30 minute exercise session saves me time and I still get an hour of exercise a day, and I also get a bit of time to arrange my thoughts for the day.

Yes there are increased risks, but these are greatly outweighed by the health benefits.

It can get quite addictive, and the distances soon build up. I got back into cycling about 6 years ago and did a 60 mile charity ride. Those 60 miles certainly felt like a long way by the time I'd finished, but that led to doing a 200km Audax[1] in ~10 hours (they're not races) and then progressively longer rides all the way up to rides lasting multiple days and doing ~300km+ each day. Last year was Paris-Brest-Paris 1200km which has to be done in under 90 hours. That was fun, despite my relative lack of preparation.

1\. Other countries call them Randonnees or Brevets. Which are generally measured in kilometers hence the swapping of units.

2\. Several reasons; gluttony and apathy mainly. Easily sorted by being less lazy and keeping an eye on food intake again.

</comment><comment><USER25> Cycling is one of my fondest memories from childhood. One of the biggest drawbacks to living in the city I live in is that it isn't very cyclist- friendly, so I don't really view biking to work as an option. I live about 6 miles from my office but any reasonable route to/from work would require riding on congested roads with drivers who don't know how to interact with cyclists. The possibility of serious injury or death resulting from someone hitting me with their vehicle at 35mph just isn't worth it. :(

<comment><USER26> Car commute routes often have more-or-less parallel routes better suited for bicycling. If you are pedaling on the same route you would drive on, it is likely to be well worth spending some time trying to find a more suitable route. I would prefer a longer route with many stop signs over a congested multi-lane route with traffic lights. Spend a weekend morning in your car with a road map looking for smooth pavement.

Disclaimer: Works well in grid layouts (western US), less well in older cities, depends on local topography, rivers, rail, etc.

</comment></comment><comment><USER27> Moved to Amsterdam few months ago. Love biking to and from work. Average daily 60 minutes on my bike. Helps me a brown man used to tropical weather get over the cold. ;-)

<comment><USER3> A very hearty welcome to my hometown. Enjoy the fireworks tonight!

</comment></comment><comment><USER28> Yes, yes, yes! This article matches the feeling I had when riding a road bike for the first time. The sense of speed and freedom is amazing, like rediscovering the joy of a bike without training wheels. If I can offer one piece of advice, it is to find a group of like-minded cyclists to ride with. Nothing builds camaraderie like toiling in the saddle with four other guys on a Cat-2 climb, and you will learn so much from their experience.

</comment><comment><USER29> Cycling fundamentally changed my life for the better about 10 years ago. I got pretty deep into it — became a bike messenger in NYC and later in Richmond, Virginia. Did a couple of long-distance tours (2,000+ miles). After friends and family, it's the fabric of my life. I don't own a car, and I ride every single day, whatever the weather.

Cycling provides a lot of valuable life lessons in the form of metaphors. And after you reach a baseline of physical fitness, the sport turns out to be mostly a mental / psychological challenge. For example, when I'm climbing a hill, I charge at it. I climb all the way through with full effort until _after_ I crest over the top. I don't stop the effort just shy of the finish. It's much more gratifying than giving up just before you're done because you know the pain's about to be over.

Cycling provides a life-long way to push yourself, test your abilities, traverse the globe, see beautiful places, and find camaraderie, and relive the joy and freedom of being a kid on two wheels.

</comment><comment><USER30> For me this is the bit which really rings true:

"I successfully avoided my picture taken. Not so much consciously, but more with the knowledge that it would come out not particularly flattering."

It reminds me of a point Tina Fey made in her Google talk that she just had to learn a particular expression which would make her look good and then bust it out whenever her radar picked up someone taking a photo. I started mimicking that idea, along with various body language tricks and found myself pleased with the results. It makes it much easier to get motivated to work out and dress stylishly when your starting point is already better than you thought because of a few powerful little modifiers. In the spirit of the OP, that's not the end - it's the start of getting better at something!

</comment><comment><USER31> I took up cycling from similarly un-athletic beginnings out of necessity because I had no other transportation. That necessity was lucky for me, because I never would have had the discipline to follow through on it if I had the option not to. I'm great at thinking of excuses. It's too hot/cold. It's raining. I'm tired. I'm late. But after a few months, something changed, and I started looking forward to my rides, and found that they were getting easier. After that it didn't take much before I was totally hooked. That was 8 years ago, and the benefits to my health, energy, and general outlook on life have been large. Group rides can also be a great way to meet people over a common experience.

Anyway, bikes are great.

</comment><comment><USER32> I live and work in London, and while cycling would free me from the shackles of public transport, I am almost certain I would be killed on the roads within 6 months.

Cycling is dangerous when you share such tight little roads with 20 tonne trucks, cars and other vehicles.

<comment><USER33> I've been riding seriously for 18+ months, in rural and urban environments in the South of England. I get nervous when I think about the accidents I read or hear about in the news, but I have never had any problems with deliberate harassment, and only a couple of times when people have been careless and I had to bellow at them (works incredibly well, bellowing).

Training and hi-viz are everything: I have lights for daylight running and a fluorescent jacket.

Jacket: [http://www.amazon.co.uk/Blackrock-Workwear-Highland- Visibili...](http://www.amazon.co.uk/Blackrock-Workwear-Highland-Visibility- Detachable/dp/B003G4HT9M/) Headlamp: [http://www.amazon.co.uk/Lumen-Cycling- Bicycle-Light-HeadLigh...](http://www.amazon.co.uk/Lumen-Cycling-Bicycle- Light-HeadLight/dp/B007OKE1AO/) Blinkies: [http://www.amazon.co.uk/Cateye-HL- LD130-TL-LD130-Light-Set/d...](http://www.amazon.co.uk/Cateye-HL-LD130-TL- LD130-Light-Set/dp/B002HD56JS/)

Also, learning how to ride correctly has made a huge difference, try this book:

[http://www.amazon.co.uk/Cyclecraft-complete-enjoyable- cyclin...](http://www.amazon.co.uk/Cyclecraft-complete-enjoyable-cycling- children/dp/0117037400/)

If you want the reassurance of a helmet (I have mixed opinions) get a Specialized since they're made to a higher standard than most other brands.

Try to find quieter routes if you want to try riding. This app can help:

[http://www.transportdirect.info/web2/journeyplanning/findcyc...](http://www.transportdirect.info/web2/journeyplanning/findcycleinput.aspx)

As can scouting your route using street-view, etc.

Try it, you should live :) And as OA says, you'll live well too.

<comment><USER34> Thanks very much - that app shows me a quiet way from home (Raynes Park) to work (Leatherhead); 13.4 miles. It's far enough off the busy roads I know that I would never have discovered it unaided. On to Street View... then the forecast is good for New Year's day, so it's a good opportunity for a practice run.

<comment><USER33> Looks like the forecast for new year's held out. I'll be able to get back on my bike for the first time in three weeks (flu + weather).

</comment></comment></comment></comment><comment><USER35> I had the same experience learning to unicycle in my late thirties. Fall, try again, repeat. It's hard to actually get hurt (the unicycle just slips from under your butt and you end up more or less standing) and if you persevere you'll reach the great moment in which you can actually ride the thing... first a coupe of meters, then 5 or 10 from time to time, then you don't know how but you are actually able to ride it. But it still feels it should be a physical impossibility, and I still feel happy and exhilarated when I do it.

</comment><comment><USER5> Very inspirational. I fell in love with with mountain biking when I move to BC. It's the one thing that year after year keeps me balanced and allows me to live a happy life. There's nothing more satisfying then finally conquering a drop or technical feature. Especially when your first impression was "that is not possible".

</comment><comment><USER36> I recently wrote a post about this (www.nickmulder.me) I started at 17, raced professionally till last year when I got a kink / blod clot in my legs.

Cycling is a nice distraction from your passion but for me personally, it became a passion that cannabalized my other hobbies. Its quite an addiction, the reason I think is because it is so quantifiable and if your'e a bit of a numbers guy like me it is a perfectly gamified concept (check out strava.com)

Nonetheless, having commuted each day of my young life through wind, rain, snow and having put over 100,000 kilometers on my bike I can attest to the fact that the feeling of accomplishment is unparalleled.

Whatever your reason may be, cycling is an amazing way to channel your energy and strive to reach your goals.

</comment><comment><USER37> I caught the bug last year (2011) got a new bike in February this year and severely broke my leg in March (non cycling accident). Even with the bad leg I managed to lose a bunch of weight and feel great.

Thank your for sharing your story.

</comment><comment><USER38> Great story. Thanks for sharing.

Congrats to you for finding something you're passionate about and sticking with it, and improving your health.

Can't help but wonder ... how is the weight now? I am sure it is a lot better.

<comment><AUTHOR> Used to be around 185lbs at 5 8. Now I'm at 150ish, probably could go down to 145 or so.

<comment><USER39> Do keep in mind that you're replacing fat mass with muscle mass the more you continue to ride and tone your body. If it seems like you're slowing down in the weight loss, you might just be building muscle. 5'8" / 150 is pretty skinny, if I have anything to say about it.

<comment><USER40> Just in terms of health recommendations (by the CDC, WHO, ect...) the ideal range is a BMI of 18.5 to 24.9. For someone who is 5'8", that would 122 to 166 pounds. Power athletes would be heavier of course, but as a group they don't have the greatest health outcomes.

</comment></comment></comment></comment><comment><USER3> My personal favourite cycling site:

<http://www.adventuresofgreg.com/HPVMain.html>

My #2 is already mentioned elsewhere (Sheldon Brown).

</comment><comment><USER41> This is really awesome. Thanks for sharing it, it's a perfect example of a fundamental truth about life. Many happy miles ahead.

</comment><comment><USER5> If you want to see some crazy road biking check out Martyn Ashton: <http://www.youtube.com/watch?v=7ZmJtYaUTa0>

</comment><comment><USER42> Mountain bike. It's SF. And Trek makes some of the best.

</comment><comment><USER43> It's amazing how difficult it seems to be to get happy with these things and it always just lasts for a few moments. Whereas God can make one happy in a much deeper sense without all the effort. Also it can last much longer (until you neglect the relationship with him)

<comment><USER9> Can't tell if you're trolling, but are you suggesting that riding a bike requires more effort than having a deep relationship with God? I suspect your local religious leader would disagree.

Exercise is good for your body and your mental health. Any sane religion would not discourage it.

<comment><USER43> Ah right, I should have known that saying something about the effort was going to be taken like that. What I meant is the effort is completely different. The story about biking makes it very obvious that it's just a very temporary happiness that can be achieved by something like that. It's not reliable in any way. You fight for one moment of happiness and you don't even know if it will even come. Wonderful.

<comment><USER9> Existentialists spend their whole lives chasing fleeting moments of earthly happiness. It's all we got. Don't take it away from us.

If you've managed to find God's love, all the best to you. Still, even if this is your permanent, reliable source of serenity, it does not mean you shouldn't seek happiness in this mortal world as well. Your comment is completely irrelevant.

<comment><USER43> >Don't take it away from us.

I wasn't taking anything away from you

>Your comment is completely irrelevant _to me_.

FTFY</comment></comment></comment></comment></comment>


HTC: Wasted Opportunity - <AUTHOR> http://gosullivan.co/post/44925442615/htc-wasted-opportunity

<comment><USER2> Yep, had 3 devices (double shame on me?). Seems to have one of the least graceful product depredations paths of any mainstream phone manufacturer I'm aware of.</comment>


Please stop saying Java sucks - <AUTHOR> http://blog.smartbear.com/programming/please-stop-staying-java-sucks/ <comment><USER2> As a language, Java is just that, a very capable language. The JVM is full of great engineering, and when properly tuned, is a very powerful compile target.

Where things start to suck is what seems to surround Java. Years and years of XML configs, Maven and Ant processes. Devs whom haven't been allowed to read about new advances.... I was at a Java user group about a year ago when Venkat Subramaniam came to speak about functional programming. This was right around the time when DHH made his assertion about unit testing. Venkat made a joke like, "and as we learned this week, we no longer need to test our code". No one got the joke. A room full of at least 200 developers and no one got it... because they probably spend most of their time in a cubicle thinking that these new-fangled technologies will die someday, and we can all go back to writing crap like we did in 1999. (Other fun assertions from that user group had to do with JSON being horrible and XML being a far better format for web communication)

It highlighted the problem for me. While Twitter engineers are doing really cool things with Java, many are mired in these huge monolithic apps that take hours to build and even longer to deploy. And much of this stuff is stored in SVN... with no unit tests. It's the culture. They look at front-end developers with disdain... with their GitHub accounts and Vim/Tmux setups. Java doesn't suck. The culture that has grown around it does.

<comment><USER3> Java _isn 't_ capable, however, of high levels of abstraction without various surrounding crufts, however. _That_ is why it sucks. It's not simply a matter of "more lines", it's the additional cognitive overhead reading those lines demands, and the tooling required to make it suck less.

<comment><USER4> Did you just call jython, jruby, groovy, and all of the other dynamic JVM languages cruft?

Or maybe you don't consider them high levels of abstraction... if that's the case might as well not consider inheritance, interfaces, dynamic proxies, classloaders, and annotations while we're at it.

<comment><USER3> No, I didn't: none of those are Java. They're Jython, JRuby, Groovy, and the other JVM languages.

We're discussing Java-the-language. Not the JVM. And without various surrounding crufts you don't have an expressive, dynamic, malleable language with high levels of abstraction.

Lambdas _help_ , but do not _solve_ , Java's impoverished model of abstraction.

<comment><USER4> All of the things I listed are part of the Java language and standard library.

[http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/P...](http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html)

[http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoad...](http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html)

[http://docs.oracle.com/javase/7/docs/api/java/lang/annotatio...](http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html)

etc

<comment><USER3> I never said it didn't have those things; I'm not sure why you're still talking about them.

I said Java has an impoverished model of abstraction, and without external tools (byte-code manipulation, libraries, etc) it still doesn't.

Then you brought up not-Java, which I also didn't talk about. You brought those up because those _do_ have better models of abstraction than Java does, which effectively concedes my point.

</comment></comment></comment></comment></comment></comment><comment><USER5> Java is fine. It did lag a little behind there for a few years, but the last two Java releases have really pulled things together.

I will say C# is still my preferred language just for quality of life reasons, and I also feel like Java has been largely relegated to either web-backend or enterprise desktops. There is no practical way to deliver a Java application to an consumer now, Java Applets are "dead" and running Java on the desktop is a pain. Minecraft is likely the only reason any non-business user has Java still installed.

But saying Java is "only" good for web-backend stuff is kind of like saying a car is "only" good for driving. That's where the majority of new development currently happens and it has a very bright future. Java on Tomcat delivers that experience just fine (although C# w/MVC is still my poison, again for quality of life stuff).

<comment><USER6> Could you explain the "quality of life" bit? Are you saying that if you programmed in Java life would be hellish?

<comment><USER5> This article summarises the differences: [https://msdn.microsoft.com/en- us/library/ms836794.aspx](https://msdn.microsoft.com/en- us/library/ms836794.aspx)

Although it is a little out of date in some areas (for both languages).

C# has been stealing from F# for several versions now, so we get all kinds of nice shorthand for accomplishing sometimes complex operations.

</comment></comment></comment><comment><USER7> Meh, I like Java. Like, I actually enjoy programming in it. Some key reasons:

1\. IDEs are not a crutch. They're a useful tool. Anyone who talks about expressiveness or efficiency in Ruby but discounts IDE help is a hypocrite. You learn the tools you have. Refactoring large methods, extracting interfaces, mass renaming with guaranteed safety -- those things actually matter when you learn to use them.

2\. Ant is dead. Hibernate is dying. Spring XML config is largely dead. Much like the perf argument, most of the bad impressions people have of it are based on years-old issues.

3\. Tools like Spring Boot and Dropwizard have made it so a Java REST service is smaller than a RoR one.

4\. Gem upgrades can be backwards incompatible, so once your app is of a certain size, your framework support becomes very rigid and brittle.

5\. Twitter left Ruby because of perf issues. _drops mic_

6\. Active Record ~= Hibernate. Hibernate can be configured with annotations, so leave the XML out of this. You still have n+1 and over-selection of fields by default.

7\. Global interpreter lock. 'Nuff said.

8\. The actual argument used by DHH wrt performance was, 'Ruby is fast enough' \-- if the Java community tried that, it would be an endless mocking parade.

I could go on, but won't. I don't care if others leave Java, just means more work for me. Hell, replacing shitty rails apps and replacing them with reasonable java apps is a good consulting business :)

<comment><USER8> > Twitter left Ruby because of perf issues.

That's not completely true. Some parts of the stack were written in Scala, etc., but to my knowledge, much of the front end is still Ruby.

</comment></comment><comment><USER9> Hear, hear! Is Java the right tool for everything? No, but for large code bases, it is miles easier to dive into a codebase, and the tooling is so much better than anything else I've seen that's not Visual Studio (as much as I'm not a MS fan, VS is really nice).

Is Java perfect? No, but it gets a whole lot of things not-wrong. More reasons: [https://drew.thecsillags.com/Why- Java/](https://drew.thecsillags.com/Why-Java/)

</comment><comment><USER10> > AutoCAD is going to be big, Quickbooks is going to be big, FireFox is going > to be big

1\. you probably aren't writing those. 2\. Even if you are, you probably aren't writing them in Java.

The problem is the reason why you have to write so many lines in Java. Annoying checked exceptions, lack of expressiveness, boilerplate.

Strong type checking? great. prevents whole swaths of errors.

> Move code around, change signatures, add a function to an interface, and I > know nothing is broken. Python can't.

True, now how painful is it without the IDE?

> It's true that in Java you tend to have lots of filler code

right and that sucks. The reason that few lines of code is nice isn't just the chances of bugs occuring. It's also nice because it means that I can pack in logic into a smaller, more readable, space. All that other stuff in java doesn't really do much of anything, it is just there (mandatory javadoc on a method called boolean isFooFrobulated(Foo foo), yay so useful!). It means I have to write it, have to maintain it, have to read through it when looking for a bug.

Consider how many java haters actually like C#. It just adds in better tooling to reduce the amount of stupid boilerplate code you have to write. It adds a nice layer of sugar on top that makes things far more pleasant.

<comment><USER11> > 1\. you probably aren't writing those. 2. Even if you are, you probably > aren't writing them in Java.

You probably also don't have teams as big as Autodesk or Quicken, therefore you'd better have a language that helps prevent breakages. Java is a good match for that.

> True, now how painful is it without the IDE?

Why would you do that? Because you like working without good tools? Text editing is but a very tiny aspect of software development.

</comment></comment><comment><USER12> Funny how people get riled up over stuff like this. The article is from 6 years ago and you still hear the same comments like "the _____ sucks but the ____ is fine" (ecosystem|language,types|jvm etc.)

The only way to have a healthy debate about a language is to have context: if you are building an integration between a custom app with a RDBMS that has to send data to an ERP system in XML, and there are specs with interfacing the ERP in Java, C#, C++ are you going to argue that Haskell or Lisp is better?

If you have to put a simple web application together quickly as a working prototype are you going to choose Ruby/Rails, Perl, Java/JSP, etc.? It probably doesn't matter technically but does matter when it comes to the experience of the people building it.

Just debating languages against each other in some sort of "cage match" is sort of ridiculous.

</comment><comment><USER13> I think when I've heard people saying Java sucks, they mean its type system allows defects that the type system of F# or Scala can prevent. Those reasons given for Java being better than Python or Ruby are also why F# is better than Java.

<comment><USER14> It's a lot more than that. For example, it's really annoying to define new types in Java.

<comment><USER15> Could you be more specific? _How_ is it really annoying to define new types in Java?

<comment><USER14> You have to manually define its constructor, manually provide getters if you want the value to be immutable, put each class in a separate file (or namespaced inside another class), and if your type has finitely many alternatives you have to set up the whole visitor pattern thing. Compare that with C#'s properties and readonly, Scala's case classes, Swift's enum types.

<comment><USER4> Making immutable structures in Java truly does suck... this is the most valid complaint that I've heard in a long time about the language.

It would be extremely easy to implement properties as syntactic sugar in the language or via built-in annotations without changing the class file spec at all.

</comment></comment></comment></comment></comment><comment><USER16> Disclaimer: I come from C++ and PHP world, but in the last few years, have been working in Java after a long gap.

So here are the pros and cons of Java I see (not comprehensive but somethings that I tend to care about):

Pros:

1) The strongly typed features does help in finding potential bugs during compile time.

2) The Generics and Container frameworks seems fairly sane when compared to the complexity of C++ templates.

3) Concurrency features are nicely standardized now - Executor framework, concurrent container frameworks and so on.

4) In short, 'stock java' (without all the heavy-weight frameworks) seem nice comfortable and sane to work with.

Cons:

1) Fairly large and legacy XML-driven frameworks like Spring and Hibernate is a huge time-sink to figure out all their intricacies, not to mention very hard to debug things esp. when some 'business logic' resides in these mysterious XML incantations.

2) While not really a Java problem, but due to these humongous frameworks, there is a tendency to build giant war files with code and configs all bundled together. Need to make a config change? Check it in some xml file, and then build to deploy wars/jars. It takes some work to separate code from configs, and convincing traditional Java engineers to move away from this model - i.e. check configs separately, deploy them independently, restart servers etc.. without any need to build and deploy process.

3) Legacy app-server based architectures where there is apache in the front with IPC overheads to a Java app-server.

The way I get around some of the cons is to convince the engineers to sparingly use the frameworks (just enough to get some basic routing rules to map urls to controller entry points in the MVC setups), use more lightweight servers like Jetty (directly listening on socket ports), esp. when it is just handling some API requests, and sticking with JSON as the payload format.

It is been a challenge but I have had success in using Java in very limited ways, and decoupling it from serving web (jsp) pages and so on.

</comment><comment><USER17> The biggest problem I have with Java is that it is handhold-y in _ineffective_ ways.

It doesn't have automatic getters and setters, because they obscure the code that runs. Except that in practice _everything_ ends up with getters and setters precisely because it means it can obscure the code that runs - namely, so you can add behavior without having to change the public interface. Which means in practice it's just more boilerplate and more opportunity for typos.

Ditto with operator overloading, interfaces, default arguments, multiple inheritance, dynamic types...

</comment><comment><USER18> I have the feeling that the "Java sucks" outcries are not so loud anymore. Java improved significantly over the last few years, the frameworks are better and more lightweight these days (compare Java EE 7 with J2EE ...). And Java has probably the best tooling available. Plus there are some migration stories of companies moving away from Ruby, Python or other scripting languages.

So, all in all Java is a fine technology and you can use the solid foundation with more convenient and concise languages like Scala and Kotlin.

</comment><comment><USER19> The reality is that if Java was a useless language, it wouldn't be the most used programming language in the world. It's not the right tool for every task but more people in the world find it the right tool for their job than any other language. There's a reason for that and it's not that a now defunct company funded its development decades ago.

</comment><comment><USER20> Java sucks.

But seriously, every language has its pros and cons. Java is a powerful, fast language, but verbose and often wielded like a hammer IMHO.

<comment><USER3> I'm curious how you mean "powerful" here.

</comment></comment><comment><USER21> Aren't Android apps written in Java?

<comment><USER22> Yes. Why?

<comment><USER21> I am wondering then why people think Java is only good for old school enterprise apps (according to the comments).</comment></comment></comment>