How to not waste time on a side project when trying to get a job - <AUTHOR> http://hackcareer.com/side-project/ <comment><USER2> I don't understand the logic of this article. My side projects tend to be efforts in self employment, not 'click bait' for an employer. While not everyone has the same approach, this article seems to imply the only value of side projects is for future employers. I'd hate for people to get the wrong impression about the value of these projects.

<comment><USER3> And many times, my side projects are my way of relaxing. Some people relax by partying, some relax by walking their dog, some relax by spending time with their kids. And my choice of relaxation time is often just building something interesting that has zero self-employment or market value, but is just funny or cool. It is refreshing to do something for pure happiness and fun, after dealing with the unhappy real world, is all about traction and money and not happiness.

I also have another set of side projects with specific intent to learn something new, which I consider an educational time investment in myself.

Neither is "click bait" for employers, and I consider neither to be a "waste of time".

<comment><USER4> Like you, I find it extremely relaxing to build pointless things. Do you have the same trouble I do in explaining that this isn't "work" to people close to you?

<comment><USER3> I didn't have that problem much in Boston, but I do have that problem after moving to the Bay Area. People just don't seem to get it.

No, I'm not planning on raising money for this side project.

No, I don't have a million users.

No, I don't know why people would want this.

No, it's not for a startup.

No, it's not related to my actual startup at all.

It's called having fun, damn it.

<comment><USER5> This is why I participate in the Stupid Shit That No One Needs And Terrible Ideas Hackathon every year. It's super fun to build goofy things that you can laugh about with friends.

<comment><USER6> Landlord, utility companies, car mechanic, partner, and kids roll on the ground from the laughter as well.

<comment><USER7> I can't tell if you're saying everyone outside software has goofy hobbies and this is nothing worth writing about, or if you're trying to say that software- based hobbies stop software developers from doing their day jobs and paying the bills related to your list of other humans.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I totally stop my side projects when job hunting. There really doesn't seem to be any practical time. Often I find that I need that time to study new concepts and play catch up improving my skills so I can be even more presentable to a company. I mean the tech industry, especially software engineering is rife with testing merge sorts, parsing csv files, and non-real world coding challenges when interviewing. Who has the time? Let alone the shear amount of frameworks and systems you need to understand depending on the companies specific pipeline. Forget your side project and reduce the strain.

<comment><USER9> I had never even heard of HackerRank before applying at a few places. I was supposed to write a binary search tree algorithm without using anything except the language docs. I rarely write anything new without a quick search, it wastes valuable time reinventing the wheel.

<comment><USER10> I find I often forget basic language syntax when I don't have adjoining lines to crib from, say, when white boarding. And that's with languages I'm actively working in—I'm hopeless in anything I haven't used in a couple months, even if I wrote in it daily for the five years before that. I'll flat out forget which language features it supports, or how to address them.

<comment><USER11> Same. 25 years experience. (especially now that I have about a dozen obsolete languages under my belt). This is fine in daily practice, and does not interfere with productivity. But getting through that hiring filter; devastating.

<comment><USER10> I hope that this is because I have, over the years, become like Liezi's good judge of horses[1], but fear it's just that I have a bad memory for programming language details. Probably it's a bit of both.

[1] [https://www.reddit.com/r/taoism/comments/38h66v/liezi_book_8...](https://www.reddit.com/r/taoism/comments/38h66v/liezi_book_8_part_9_judge_of_horses/)

</comment></comment></comment></comment></comment><comment><USER12> To be honest, this submission gives me the impression that it's clickbait material. The article is field with platitudes and small things you can glean from Cracking the Coding interview book. Judging from the user's submissions, this seems to be self advertising.

<comment><USER13> It resembles the lightweight listicles of a career site's newsletter.

</comment></comment><comment><USER14> Forget about side projects if you are looking for a job. Focus on leetcode.

It is like buying stamina when the next boss can be easily defeated using strength.

<comment><USER15> Can you elaborate on why that might be the case?

<comment><USER16> Regardless of how impressive your side project is, unless it is a very special exception (e.g. you're head maintainer of a linux distribution or open source tool the company hiring you is extensively using and needs your expertise on), it's only getting you into the door to talk to people, and it's not a route around the interview process.

So, ultimately that process is going to be whiteboard coding, because it (let's be honest) basically always is. That whiteboard coding tends to draw its questions, most often, from question pools like those on Leetcode.

This means if you're resume's strong enough for someone to talk to you, you probably should be optimizing to pass the whiteboard section.

<comment><USER17> Yes/No -- In my last job hunt, I talked to more than one employer who said they had declined people who rocked the whiteboarding, but had nothing else to show. People are building teams who can work together, communicate well, and dedicate their efforts to completing projects together. Good whiteboarding is a prerequisite to being part of a team... but not the entirety of a hiring decision.

<comment><USER18> I have yet to be on a team where good white boarding was a prerequisite.

</comment></comment></comment></comment></comment><comment><USER19> It would be interesting to know what proportion of employers even look at your Github, let alone dig into detail enough to investigate your side projects to this level.

I work on quite a few side projects in my own time because I enjoy it, but I've never been asked about my projects on Github or my blog.

<comment><USER20> This surprises me all the time. Most people hire me without ever doing any research on me. I get to a job interview and they ask me if I know what "object oriented programming" means. Had they searched for my name, they would have found my name on the Wikipedia page for object oriented programming:

[https://en.wikipedia.org/wiki/Object- oriented_programming](https://en.wikipedia.org/wiki/Object- oriented_programming)

And I've never gone to a job interview where people knew I had a blog, even though I list the blog on my resume:

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

I have to assume that other people put a blog on their resume, but its a mostly un-used site, so the maybe the employers get in the habit of ignoring personal sites? I've written on hundreds of technical topics over the years, but no one is ever aware of this when I arrive in a job interview.

Likewise, no one has ever checked my projects on Github.

<comment><USER11> I don't even cop to having a github, and I don't have anything useful on my "public" github.

But where I have public-facing projects' URLs on my resume - interviewers seem to be completely clueless about them. They'll ask me questions about a topic, and I'll point them to that URL on my resume as an example of how I know that area, or did that task.

It seems like they only read the "skills overview" blurb at the top, that we put there to get through the search filters - and they don't read the work history.

</comment></comment></comment><comment><USER21> Why do I have to build side projects and memorize algorithm trivia to prove to employers that I know enough to do a job? What's the value of my degree if it doesn't tell employers that I know what I'm talking about? Why are software engineers the only ones with this problem (can you imagine if doctors had to memorize random trivia to get a job)?

<comment><USER22> > (can you imagine if doctors had to memorize random trivia to get a job)?

Comparing yourself to doctors, with the implication that it's easier for them, is pretty silly. Doctors have to memorize perhaps the most shit to get a job, and are frequently reevaluated on it through examinations to keep their license.

<comment><USER18> > are frequently reevaluated on it through examinations to keep their license.

Not in the US. Keeping your license, whether for medicine or engineering, is just a matter completing continuing education units. There are nearly worthless activities that count towards CE units, and I have yet to see any that are actually graded (they are all just butt-in-seat things).

People here seem to have anloftier view of licensure than it deserves. Sure, it's better than nothing. However, licensed != competent and should never be used as a substitute for measuring competence.

</comment></comment></comment><comment><USER23> I am confused now. I have been working on my side project almost 2 years (started working on it a couple of months after my first job in it). Firstly my plan was to deploy this project and open to users finally, however after some time, I realized that there is a lot of similar web pages and it is not a good idea. So I decided to work on this project as some kind of battlefield for testing new frameworks. Finally I ended up with a quite big project (about 390 commits, front-end, and back-end part). Overall the quality of this project is not so good in my opinion, I see a lot of places where things can be done better. Do you think does it worth to put information about this project and link to the github? Even when the code quality is not so good, code coverage is low?

<comment><USER24> I would also love to know the answer to this. I have an app that is nowhere near what I would consider ideal quality-wise but it's a project that is done, deployed, and open source. Do I even mention it? I wouldn't as it stands.

<comment><USER25> I don't know about how bigger firms feel about it, but I'd probably not regard it as a positive. Only show me code you think I'd accept at my work place.

For juniors it could be a positive signal though, if you're the kind of person that always looking to learn new things. Depends on the situation if you should show it or not: who are you trying to come across as?

If you have the resume, don't show it. Otherwise, do show it and let me know what parts you like and why some other parts are WIP (comments are great here).

Another thing to take in consideration is your own criticism. You might be really critical of the project since you're an exceptional programmer, and great programmers tend to move forward quickly and look back at their own old code with distaste. :)

</comment></comment></comment><comment><USER26> I was a bit nonplussed reading this as well. If I'm interviewing a future colleague I am especially curious about their side projects on GitHub ... but I don't care how well what they have done dovetails with my current technical needs, or many "iterations" they have shipped, but rather: are they passionate/do they make things they care about? Can they write clearly? Is the code of high quality? Have they interacted with others well (respectful/helpful tone in PRs, Issues, etc.)? I find most candidates don't bother with half, or any, of these, but the ones that do tend to be good ones (and, alas, are also employed already).

</comment><comment><USER27> My own experience as tech recruiter, who looks at dozens of resumes a day, is that I only take some minutes to review your publicly available code.

If I see commented code, rough violation of coding standards etc., that is bad and I will ask about it.

So if you share side projects, remember that it gives the interviewer "attack surface" to disqualify you. However, good interviewers won't look 20% for your weaknesses and 80% for your strengths.

If you are a regular open source contributor, I might use this information to argue that you are be better than other engineers who don't _regularly_ code in their free time.

<comment><USER28> Commented code is a negative now? Damned if you do, damned if you don't in this industry.

<comment><USER29> I think they meant commented-out code.

<comment><USER27> Yes. And good commit messages are better than (stale) code comments.

<comment><USER29> Of course. But I think we're talking about two different things.

</comment></comment></comment></comment></comment><comment><USER30> Personally when I was unemployed my side projects helped me learn new skills, and fit my desire to do something with my spare time. Applying for jobs was a pain, building something was enjoyable and gave me hope

</comment><comment><USER31> I have nothing to add to the article, but just wanted to point out regarding that YouTube instant thing:

1\. Feross never got the job he was "offered" and reportedly "accepted"[1]. He went on to do other things.

2\. He is on Patreon, and you can support his Open Source efforts here: [https://www.patreon.com/feross](https://www.patreon.com/feross)

3\. Or... you can try and hire him. He was excellent to begin with and seemes to have only gotten better through the years.

4\. 2010. That was an era. "Must have been love, but it's over now."[2]

[1] [https://techcrunch.com/2010/09/24/youtube-instant- instant/](https://techcrunch.com/2010/09/24/youtube-instant-instant/) [2] [https://youtu.be/s-XolL_1dN0](https://youtu.be/s-XolL_1dN0)

</comment><comment><USER32> Feel like some of the other comments are sort of missing the point of the article although the author probably could have been clearer in what his point was.

My take is that this is targeted toward people without any sort of traditional/university CS background trying to get into tech from scratch and in addition to taking a basic javascript course or whatever are following the standard advice you hear of "you need to have some side projects to get employers attention." Think its just trying to give some pointers to people going down that path with the very specific larger goal of it leading to a full time job.

So ya, I would bet the author would probably agree that side projects are almost valuable in and of themselves, but some are going to be more likely then others to lead towards a full time position, etc.

</comment><comment><USER33> Another great way to impress employers (and in some ways much simpler): write blog posts about what you've read, learned or done. Even if it's on a current employer's blog.

</comment><comment><USER34> here's my side project I just finished: [http://www.eggie5.com/126-semantic- image-search-video](http://www.eggie5.com/126-semantic-image-search-video)

Semantic Image Search: takes high dimensional images vectors from a Deep Convolutional Neural Network and searches for similar images using Locality Sensitivity Hashing.

Search is O(1) + O(n/B) where the last term is a small fraction, B, of the complete search space n.

The goal was an E2E machine learning project: modeling, training, validation, deployment and serving. Using VGG-mased CNN w/ tensorflow, redis for database, Flask for web frontend , tensorflow serving and docker+kubernetes for orchestration.

It all works on my local machine but when I went to deploy it to my prod website the tensorflow serving part broke down and I haven't had time to fix it yet :(

It was just supposed to be a one weekend project after I got the inspiration from the AlexNet paper, but it took over a month. Most of the time was fighting k8s.

So another data science project doesn't make it to production...

</comment><comment><USER35> Man this article is so flawed, it's not even funny. I was going to comment earlier today but I was certain it would get buried. I'm a bit disappointed that it's still on the main page. Here's my take..

> Make sure your side project isn't a waste of your time

A side project is _never_ a waste of your time. It's a way to build something new, to exercise your creativity and passion, and to (when it's all said and done) ship something! I'd wager that 90%+ of "coders" have never built something from zero to hero. That is _inherently_ a valuable thing, regardless of what your future boss thinks.

> Your side project, by itself, probably won't get you a job

Okay, so? I'm pretty sure no sane person is going to go through the hard work of building a side project to impress during an interview. Not only that, but for a side-project to be successful, it also needs marketing, PR, networking, and so on. You probably won't have to do any of those things at your next programming job, but you _most definitely_ need to do it when launching a side project.

> 1\. Is your side project relevant to the job you're applying to?

Again, who cares? Side projects should never be contingent on what jobs you're applying to.

> 2\. Does your side project have depth?

Doesn't matter. A side project can be as shallow as Snapchat 1.0 (disappearing images? Sign me up). Run with it. Build something awesome and win at life.

> 3\. Has your side project at least had 2 iterations?

I actually agree with this. Most of my MVPs are kind of shitty until I show them to a select group of friends and family that more often than not rip them to shreds. Fail fast, fail often.

> You have to bring attention to your side project

Yes, yes you do. But guess what: looking for a regular 9-5 programming job is completely antithetical to "bringing attention" to your side project. The latter of which involves emailing zillions of people, setting up mailing lists, getting featured on blogs, product design, going to talks, giving talks, and so on.

<comment><USER36> The article also misses the point about intrinsic VS extrinsic motivation in software. Personally I think being motivated by money, careers, nice cars — whatever — is just fine. But I think the only way to know if you _really_ want to stick with Programming, and especially any particular branch of programming, is by finding out what _intrinsically_ motivates you.

That can be your rock to hold onto as burnout approaches...

</comment></comment><comment><USER37> If you have more time remain after you get a job. Side project is not waste your time.side project also gives you extra work & money for you.</comment>


Karen Uhlenbeck, founder of geometric analysis, honored with Abel Prize - <AUTHOR> https://www.sciencemag.org/news/2019/03/founder-geometric-analysis-honored-abel-prize <comment><USER2> > But Chang is also careful to point out that the Abel Prize committee stuck > strictly to research in choosing the prizewinner. The prize citation does > not mention Uhlenbeck's mentoring efforts or her role as an inspiration to > female mathematicians.

This is very important. Media and others can argue with each other about gender but committee would had done a great disservice if they had given the prize because the was a woman. Instead they gave out the prize based on the accomplishments in the field of mathematics.

Looking at this article itself, it spent about 3.5 paragraphs focusing on the work which is the focus of the prize, about 4 paragraphs as a biography of her, and then the remaining 5.5 paragraphs about her gender and gender politics. Compared to other prize winners, I suspect this is going translate into significant worse cover of her accomplishment in mathematics for which the committee is giving her the prize. My best bet currently is a science radio channels that usually go into depth around Abel prize winners work, as they tend to have a bit room than text articles.

<comment><AUTHOR> [http://www.abelprize.no/c73996/seksjon/vis.html?tid=74011&st...](http://www.abelprize.no/c73996/seksjon/vis.html?tid=74011&strukt_tid=73996)

[https://www.quantamagazine.org/karen-uhlenbeck-uniter-of- geo...](https://www.quantamagazine.org/karen-uhlenbeck-uniter-of-geometry-and- analysis-wins-abel-prize-20190319/)

[https://www.nytimes.com/2019/03/19/science/karen- uhlenbeck-a...](https://www.nytimes.com/2019/03/19/science/karen-uhlenbeck- abel-prize.html)

[https://www.newscientist.com/article/2196755-karen- uhlenbeck...](https://www.newscientist.com/article/2196755-karen-uhlenbeck-is- first-woman-to-win-prestigious-maths-abel-prize/)

[https://www.bbc.com/news/science- environment-47613929](https://www.bbc.com/news/science-environment-47613929)

[https://www.zmescience.com/science/math/karen-uhlenbeck- abel...](https://www.zmescience.com/science/math/karen-uhlenbeck-abel- prize-19032019/)

<comment><USER2> Nice. The second link you gave has basically replaced this one and is currently on the first page, and the wast majority of that article is focused on the work she did. Similar the comments under that article is also focused on the work.

<comment><AUTHOR> I do what I can.</comment></comment></comment></comment>


Show HN: Reddit Comment Search - <AUTHOR> http://www.commentfindder.com/

<comment><USER2> Just used it, very awesome!!

I ran a handful of product name searches that usually appear on reddit every few weeks and found it very strong at finding recent posts but struggling to find comments older than a month I know exist.

I'm assuming a richer interface is on its way in the next update.

Thanks for sharing!</comment>


Hot weather cuts French, German nuclear power output - <AUTHOR> https://www.reuters.com/article/us-france-electricity-heatwave/hot-weather-cuts-french-german-nuclear-power-output-idUSKCN1UK0HR <comment><USER2> I think this is a non-problem. At least for France and Germany, peak electricity consumption is in winter, because electric heating is much more common (and needed!) than air conditioning. This seasonal surplus is such that nuclear power plants actually have to reduce their power output in summer. Here is a chart showing a ±30% seasonal variation in nuclear electricity production: [https://jancovici.com/wp-content/uploads/2017/10/elec- mensue...](https://jancovici.com/wp-content/uploads/2017/10/elec-mensuelle- nuke-France.jpg)

<comment><USER3> It is a problem, if not a very big one right now. With the climate changing, expect Europe to build out more air conditioning to cope with hotter summers, raising power usage. Dismissing this very real operational problem for the power plants is unwise.

<comment><USER4> Air conditioning is consuming much less electricity than heating, there's no scenario where it would become greater than the winter usage. And there's only a few reactors affected by this issue, you have this kind of clickbait article every year.

<comment><USER5> > Air conditioning is consuming much less electricity than heating, there's no > scenario where it would become greater than the winter usage.

How about "most people aren't using electricity for heating"? People rarely heat their houses with electricity in Europe, that would be very expensive. It's usually gas or oil boiler, sometimes a coal one.

<comment><USER4> You have about 50% share of electricity heating in France, it's far from nothing.

Edit: And coal heating is probably close to zero to be honest, that sounds old, even for the countryside. The rest of those 50% would be gas, petrol and wood.

<comment><USER6> I am so jealous. Here in Kazakhstan we use coal-powered central heating. And here is the kind of air it gives us:

[https://b.radikal.ru/b12/1902/bd/a6d615dba25b.jpg](https://b.radikal.ru/b12/1902/bd/a6d615dba25b.jpg)

[https://d.radikal.ru/d15/1901/1b/ea0e8c26f8d2.jpg](https://d.radikal.ru/d15/1901/1b/ea0e8c26f8d2.jpg)

It gets much worse in the evening.

These photos were taken in Almaty, but the situation is the same everywhere (if not worse).

<comment><USER6> At first I wanted to post this particular photo, but couldn't find it, and now I can't edit the original comment.

[https://d.radikal.ru/d17/1812/fd/ed5cc5dcd4c4.jpg](https://d.radikal.ru/d17/1812/fd/ed5cc5dcd4c4.jpg)

<comment><USER4> Those pictures look awful, I hope it will improve in the future :/

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> This should also be affecting coal plants, since they also need to exhaust heat via an identical mechanism. Yet the article only mentions nuclear.

<comment><USER8> That's because you need literally days to get a nuclear plant running again. Coal plants can start within hours.

But do you have numbers on how it's affecting coal plants? Maybe coal plants don't need so much cooling?

<comment><USER9> They don't necessarily shut the nuclear plants down, they throttle the power output. It isn't a strict on/off switch, but a controlled reaction. They said two were offline but it wasn't said why they were offline. (Likely usual maintenance and refueling). You wouldn't specifically shut down for this reason.

</comment></comment></comment><comment><USER10> How big of a problem is this if nuclear is going to be an option as global temperatures rise?

Will nuclear be shut down so often in the future that we can't depend on it? Similar to the argument folks make against solar(it doesn't work at night).

<comment><USER11> Power plants are designed are designed to take useful energy by transmitting heat between something hot and something cold. They can be designed to work for any condition of "cold" and a few degrees doesn't change the ability to design.

Problem was these plants were designed for an amount and kind of heat sink which wasn't there for a while. If it became a frequent problem it would be fixed by building alternative heat sinks that worked in more situations.

Water cooled reactors run at about 300C, molten salt around 700C or "much higher", and some designs for gas cooled reactors go over 1000C. The weather being a few degrees hotter or even tens of degrees hotter isn't really going to matter if your cooling system is designed to handle it.

The minimum temperature gap up there is > 250 degrees, taking a few away isn't going to make anything impossible, but it might make some existing plants increasingly unreliable if there are no investments in new plants or upgrades.

<comment><USER12> this is not an engineering problem, it is a "how much are we willing to affect wild life" problem.

<comment><USER13> No it's an engineering problem, these plants were designed without cooling towers because it was assumed the direct cooling using river water would be sufficient in all but the rarest cases.

<comment><USER14> Presumably it's more of a financial/efficiency problem. Pumping water is expensive, less reliable and a heap of maintenance nightmare compared to passive options. You'd avoid it entirely if it was feasible.

<comment><USER13> > Presumably it's more of a financial/efficiency problem.

It's absolutely a financial decision, but it wasn't a financial _problem_. Cooling towers are not free but in the grand scheme of building a nuclear plant they're not expensive either (most power stations — including non- nuclear — have cooling towers).

And "Direct cooling" is not a passive option, you're still pumping water from and to the river or body of water in order to condense steam in the secondary circuit. What you're not doing is semi-closed cycling of that water through a cooling tower, you're feeding the condenser straight from the body of water, and sending water back into it more or less directly (possibly having gone through a radiator of some sort to shed some heat).

<comment><USER15> Don't forget the PR aspect, and political cost. A lot of people in France believe nuclear power is carbon intensive because of the plume coming out of the towers.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> This story omits the most important information. What happens to plant and animal life if we raise the river temperature? And what happens if we instead burn more coal in Germany to compensate?

<comment><USER17> The plants and the fish can die. On the short term, the oxygene content of the water is the problem. The oxygen content decreases with increasing water temperature. So beyond a certain temperature, the oxygene levels can go below the levels required for survival, the animals and plants suffocate. Especially in lakes it can happen, that in these weather conditions basically all fishes can die at the same time. Agitating the water helps to maintain higher oxygene levels.

</comment></comment><comment><USER18> "Available nuclear power supply was down 1.4%" and for environmental reasons, not engineering oens. So much drama for nothing. If you advocate for renewable in reaction to this article, tell me how much a solar panel drops everyday at night, or a wind turbine when there is no wind.

<comment><USER14> > Available nuclear power supply was down 1.4 percentage points at 65.3% of > total capacity compared with Wednesday.

You left out an important part to the point of being intentionally deceptive, the opening paragraph says it's down 8% overall. If aircon were common that could mean large scale brown outs. As this becomes more common they'll probably need more solar to help with the unreliability of nuclear.

> tell me how much a solar panel drops everyday at night

Nighttime is the easiest problem to solve with solar, it correlates with lower energy use and is an extremely predictable occurrence making it much easier to plan for than weather events.

> or a wind turbine when there is no wind.

Depends on the location and what it's paired with, but wind is almost always available in some capacity.

Let's not pretend nuclear is perfect, even without events like this plants go offline for things like maintenance (TFA mentions 2 that are currently offline), renewables aren't unique in their need to build excess capacity to deal with intermittent availability.

</comment></comment><comment><AUTHOR> tl;dr:

> High water temperatures and sluggish flows limit the ability to use river > water to cool reactors.

> EDF's use of water from rivers as a coolant is regulated by law to protect > plant and animal life and it is obliged to cut output in hot weather when > water temperatures rise, or when river levels and flow rates are low.

<comment><USER19> When I started reading this, particularly the first line quoted above, I was ready to call BS on it, and almost stopped reading. The idea that that the river being a bit warmer would make it ineffective at cooling the reactor was too silly. But then I got to the second quote and realized they just don't want the reactor to make the river any warmer than it already is.

<comment><USER20> The Wikipedia article for Bugey Nuclear Power Plant says "Some of the cooling comes from direct use of the Rhône water (units 2 and 3) while some is done by the use of cooling towers (units 4 and 5)." Cooling towers use evaporation to remove the heat, and water has high enthalpy of vaporization so they'll probably still work even with warmer input water, but if the direct cooling system is not designed to boil the water then it might fail if the input water is too warm.

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

<comment><USER19> I live near [https://en.wikipedia.org/wiki/Oyster_Creek_Nuclear_Generatin...](https://en.wikipedia.org/wiki/Oyster_Creek_Nuclear_Generating_Station). When the plant was running, it would suck in so much water that one river would run backwards, pulling in brackish water from the bay (near the outlet of another river), and depositing the outflow into a different river, which went back into the bay about a mile away. Both the inlet side and outlet side were rich fishing and crabbing grounds. Now that the plant is shut down, both the inlet and outlet are nearly stagnant, and all the seafood is gone. The outlet was a particularly popular fishing spot, because the warmer water both attracted more fish and greatly extended the fishing season (even through the winter, when you couldn't catch much elsewhere).</comment></comment></comment></comment>


.NET: So long and thanks for all the fish - <AUTHOR> http://lucisferre.net/2012/02/08/dot-net-so-long-and-thanks-for-all-the-fish/ <comment><USER2> As a .NET developer that's currently working on a 100,000+ line application that uses all parts of Windows, .NET Framework, and the C# language, I suspect this person is pointing his finger in the wrong direction when he's blaming Microsoft, VS.NET, and C# for "getting in his way".

Best case scenario, is he has been using the wrong tools to solve the problems he works on. But can't admin his own fault.

If anything, what I'm working on now would be downright impossibly complex and infuriating if written in Python (his example of a language and ecosystem).

To me VS.NET is incredible. The .NET framework is incredible. And documentation and information is readily available. But more importantly, the problems I'm solving can't be more easily solved using another stack.

And every time I blame one of the above, a few days later I realize that the real issue was just a stupid mistake I was making myself...

As an example, just the other day I was using a BackgroundWorker (new thread) to do some work outside the UI thread. I needed to do 3 or 4 tasks and decided to re-use the BackgroundWorker for each task (instead of using a new one each time).

Of course problems started showing up. For a while, I was convinced that VS.NET was debugging on the wrong thread, and that there was an issue with re- using BackgroundWorkers in NET. I mean I'm a good programmer, it can't be possibly my fault!

Basically, I forgot to unsubscribe to the BackgroundWorker events. Which caused the previous DoWork attached anonymous functions to run multiple times.

.NET is the way Windows applications are built. VS.NET has no rival on this platform. And this stack is not any weaker because people such as the author leave us. Referencing a few negative blog posts does not prove .NET is dying and that "developers are leaving for greener pastures", which by ALL METRICS is completely not true. If the author wants to think that Python and whatever other choice of IDE will now solve his pain... Then let him eat his cake.

<comment><USER3> "But more importantly, the problems I'm solving can't be more easily solved using another stack."

Can you expand on that a little - what are the particular characteristics of the project that make it better suited for Windows than for a web stack of some sort?

<comment><USER4> If OP actually cared about the execution speed, he'd be able to have the .NET code running often almost two orders of magnitude faster than Ruby:

[http://shootout.alioth.debian.org/u32/benchmark.php?test=all...](http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=yarv&lang2=csharp)

If he says that Ruby fits him better I can just conclude that he trades the execution speed for ease of the development, which can be a reasonable trade- off. I'd still like to hear him talking in a year if he actually worked on really comparable problems in .NET and in Ruby.

<comment><USER5> I'm not very familiar with Ruby, but with Python, I can profile my app, map the hotspots and easily rewrite them in C. Probably, I'll be done with the rewrite before the .NET version reaches RC quality. There is no reason to assume Ruby would be much different.

In reality, I very rarely have performance problems. I have heard Ruby got much faster with the 1.9 release.

<comment><USER4> If you "rarely have performance problems in reality" that explains a lot. Speed differences between Ruby and NET (see the link in my previous post) translate to having one server instead of twenty. If you make low traffic solutions, that's OK. If you move bottlenecks to something outside of your responsibility (like for example, your app waits on sql server because no caching is done) OK, not your problem. If somebody doesn't have problems in buying more hardware, OK.

Still it's approx. 20-times (see the link before, it is for Ruby 1.9) trade- off between development convenience and the hardware involved.

<comment><USER5> If you really need a rack full of Ruby servers to do the job of a single .NET server, your Ruby programmers are doing something (hint: most probably everything) wrong. Language choice excepted.

Server performance is only very rarely tied to CPU performance. There are a whole lot of factors other than that that impact performance.

</comment></comment></comment></comment></comment></comment><comment><USER6> Funny to see this considering my opinion is pretty much a polar opposite to Chris'.

In the last couple of years C# has gotten better than ever. LINQ, Lambdas & Generics combined with the IDE's autocomplete and refactorings have made the language really nice for power devs.

The next release will include a _Compiler as a Service_ which could be a game changer if it's embraced by the community and if it's not borked by Microsoft.

A good _rule of thumb_ for .Net is that anything from Microsoft which is built around a tool should be _avoided like the plague_. For example _Entity Framework_ and _WPF_ are horrible tool-bound monsters. They don't play well with version control, don't play well with clean coding (POCOs) and almost feel designed to sell other tools ( _SQL Server_ / _Expression Blend_ ).

Entity Framework is especially bad. It combines terrible performance, terrible scaling (it has terrible support for large schemas) and until recently didn't even support "code first" development.

Thankfully, like other dinosaurs that kind of thing is going the way of VB6.

To add a bit of context: I have a pretty broad background - been coding for 21 years (started at 10) and have experience implementing something significant in: C64 (BASIC/6510asm), Pascal/Delphi, VB, Java, PHP/HTML/JS, TSQL/SQL, C# and ActionScript/Flex. I've dabbled with Ruby and the beautiful Python.

I abandoned dynamically typed languages for serious projects (those expected to work for > 5 years) because of the poor refactoring support and the dominance of style over substance in the community. I work in the Enterprise, and there software maintenance quickly dominates the cost of projects making the big two static languages a better choice.

I still, of course, turn to dynamic language when they're the best solution to the problem. For example for situations where speed of development dominates returns (think opportunity cost) or where a language is deeply embedded in a specific community (Python and NLP).

<comment><USER7> Many geeks/hackers don't understand or won't accept the fact that you just mentioned regarding maintenance and Enterprise.

<comment><USER8> Well, I don't ... and it isn't just me who thinks claims made about the "enterprise" are pure marketing BS.

<comment><USER9> Perhaps that's because most people who think that the claims are BS have never worked with codebases that are expected to exist and be maintained for at least a decade with minimal downtime.

Within large companies those types of codebases are normal. The upfront development cost of applications is significantly less than the long term maintenance cost - especially once you've factored in the cost of hardware over the time period, and having to keep institutional knowledge of the applications amongst development teams, sys admin teams and network teams.

<comment><USER8> Oh I have worked with codebases (in large financial institutions and in engineering applications) that are meant to be contiguously maintained for more than a decade. They have been working nicely 16+ years and are easy to maintain with no downtime. Obviously, none of it involves the CLR or .Net. On the other hand, I've also seen seriously big projects ruined by .Net with no handover or documentation. But worst, no accountability. I've also seen a few successful ones but I would expect that culture to deliver continuous quality -- but it surely hasn't.

That's why I am saying that most of these claims people bandy around about enterprise computing are nonsense.

</comment></comment></comment></comment></comment><comment><USER10> I'm not a .NET person. Heck, I'm not even a Windows person. I found this sentence interesting:

 _Things like the Microsoft "professional engineer" who advises you at your invitation, and then sends e-mails behind your back to executives to inform them of his concern about the "business risks" of non-Microsoft technology choices._

That's really weird. Who finances these commissars? I mean, I've seen this sort of thing take place, but only when a two-letter consultancy was gunning to take over some director's entire department. What's in it for the commissar?

<comment><USER11> In the .NET ecosystem, there's a number of individuals that enhance their own self-promotion by hitching their wagon completely to the Microsoft train. They present themselves as "experts" and justify high hourly rates by presenting their Microsoft sponsored credentials.

Often such folks have little in the way of open source contributions, commercial products, or shipped code that they can point to. But they've probably spoken at a number of events promoting "The Microsoft Way" and have likely been awarded a Microsoft MVP award as a result of those efforts.

In general, they get by simply by advocating the Microsoft toolchain, and moving on from consulting engagement to engagement just before they're exposed. Or they focus their consulting services on large corporate IT where even their meddling makes little difference in the grand slow scheme of things.

<comment><USER7> This is how most mid-size traditional consulting companies work. You can switch the word Microsoft to IBM or Oracle or something else.

This is how you get referrals. Like it or not, it's business.

<comment><USER10> I realize that traditional consulting companies hitch themselves to particular vendors or sets of vendors. I was surprised that consultants would act as Party Commissars, reporting developers or groups that depart from their preferred vendor(s). I thought reporting people for deviation from a party line went out in 1989, when the Berlin Wall fell.

<comment><USER11> A lot of the folks that I referred to are actually independent consultants, or switching consulting companies regularly.

That phenomenon transcends the typical consulting firm loyalty and is more of a culture around Microsoft products.

</comment></comment></comment></comment></comment><comment><USER12> I'm a .Net engineer who feels like this day will also come for myself very soon. Don't get me wrong, I love .Net. It has treated me well and I love the direction that Microsoft is going with Azure, their adoption of open source, and the resources they provide for startups.

Sometimes it's just hard to 'switch over' like the author as done. I've done plenty with Java and PHP too but there's nothing there that excites me really. So now I'm dabbling with Python to see if there are any sparks there. Have I made a good choice? I guess we'll see.

I do find it interesting that you don't seem to hear people say things like "I'm done with Ruby, switching to Python". People make a bigger deal of leaving .Net and Java as if it's something you'll never go back to.

<comment><USER13> Why not try F#? That's a genuinely awesome language, an ML usable in the "real world".

<comment><USER14> I tiptoed around this a bit, but I think F# is great. I have little experience with it, but I work with someone who has been using it pretty extensively for a bit and we've talked about it a number of times.

This, however, is where the environment/culture issue (that I also danced around) comes into play. In most .NET shops it would be extremely hard if not almost impossible to bring in another programming paradigm like functional, let alone mix it. This is perhaps a bit ironic considering most of the same places use javascript, but if they could write C# instead of javascript on the client side, I'm certain most would (in fact when ASP.NET first made this somewhat possible it was the norm until people got bitten by all the pitfalls).

<comment><USER13> Believe me, the cultural issues you will face introducing F# will be 1/10th of those of introducing OCaml, I speak from experience!

<comment><USER14> Well fortunately that won't be an issue for me anymore ;-).

</comment></comment></comment></comment></comment><comment><USER15> This is the problem that you define yourself by your programming language/environment/OS of choice, versus just being a really good problem solver.

See: [http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a- pro...](http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/)

I would say don't call yourself a [Java|Javascript|C|C++] developer.

If your career were a blog post, languages are more like a tag than a title.

Contrast "I Solve Problems" with "I Only Solve Problems with PHP."

<comment><USER16> There may be a population of developers who can jump super-easily between tools/languages. But I think the population of developers who, simply because it's what they have spent the most time with, are more productive in one environment is larger.

The OP is basically saying "I'm super comfortable & productive with the MS stack. It's been fun and good. Now I get to focus on something else. The change will be good for me."

Nothing wrong with that.

</comment></comment><comment><USER17> Gotta admit that I'm getting to that point too, so good for you. I've been working with the .NET stack since the beta, and at this point in my career I dabble in other languages, but keep coming back to the bread and butter since "that's what I know". All the while I'm involved in the ALT.NET community secretly eyeing Rails and Python wondering when and if I can take a hard left and make the jump. I'm sick of working in the .NET box where we get excited about tools and features that were released years ago on other stacks, just to have a port done that's about 3/4 as good as the original.

tl;dr; good for you man.

<comment><USER12> Is there a support group for folks like us? :)

<comment><USER18> I released a commercial .NET app 2 weeks after the official 1.0 release and am still using the framework. I've dabbled in Ruby, Java, JS, written an iPad application, etc. I have my gripes with some of the .NET tools but I really like C# as a language. My biggest gripe is the business decisions made by Microsoft over the past few years. Under Gates, Microsoft really understood the developers created their monopoly. Under Balmer it feels like Microsoft wants to extract every ounce of blood from developers which is ultimately going to bring down the house.

</comment></comment></comment><comment><USER19> The "tl;dr;" version:

 _I just want languages, tools and frameworks to help me get work done and then get out of my way. Is Rails a clean code panacea? Is Javascript elegant? No. However, am I more productive, less burdened and do I have more options and flexibility? Absolutely. I am far less frustrated trying to produce elegant, clear, extensible and maintainable solutions in these dynamic languages. I also find that dynamic languages, modern web frameworks and -nix is just more fun._

</comment><comment><USER20> Two years ago I began developing a large web application and I had to choose a language and stack. Having built applications on .NET and PHP most recently, I knew I could fall back on either and be safe. I decided to investigate RoR and .NET MVC. For whatever reason, RoR felt strange and I knew it would have a steeper learning curve initially, but probably be more efficient to develop with in the long run. On the other hand, .NET MVC felt a bit more familiar, and had many attractive qualities that "appeared" to mimic RoR. I went with .NET MVC. Now 2 years later I find myself spending my day job in .NET MVC and my side projects are all RoR. I found that .NET MVC was a great bridge from regular .NET to RoR. I am frustrated that I didn't pursue RoR harder 2 years ago, but hind sight is 20/20. I am extremely happy to be working on side projects in RoR because honestly it is more fun. Don't get me wrong, RoR isn't all roses, I'm just finding fewer weeds!

</comment><comment><USER21> I'm also primarily a .NET dev, using ASP.NET MVC. But for my most recent project I used node, and I'm hooked. Probably because it allowed me to take existing JS knowledge and apply it, but still. ASP.NET MVC just feels too heavyweight afterwards.

That said, whenever using something other than C# I miss LINQ. It's awesome.

<comment><USER22> I've been working a lot with node lately as well, there are some things I like but some I miss so much from C# ... there is nothing anywhere near as good as VS for node, and god I miss ReSharper and compilation errors.

<comment><USER12> I'll admit it. Losing that is a bit scary in some ways. It does lead to some laziness though. But sometimes it's awesome to remove a property from an object and have the compiler tell you all the places that are broken now.

On a similar note. I've followed your Playtomic blog a bit and it helped me make the jump to MongoDB for our gamification platform. (We still use SqlServer for lots of things though) Here's to trying new types of kool-aid! :)

</comment></comment></comment><comment><USER23> This reminds me a lot of posts I used to see on Javablogs 5-6 years ago. Not sure what that means, but I don't think it's the language so much as where people _are_ with the language. In 2005-2006, there were a lot of folks who'd spent almost a decade with Java. They were good at it, but they were also getting bored and looking for new horizons, and Ruby and Python were available. Beta versions of .Net rolled out in 2000, so we might have the same kind of phenomenon.

None of which is to say other languages might not be better. But being better has never been enough, on its own. If it were, C++ might never have gotten a start. Language popularity depends a lot on history. But boredom/dissatisfaction with a dominant language can help give a new language a chance.

<comment><USER24> I think a big part of it is also the dead weight that accumulates with older technologies. Sometimes it is a person just making a decision for the stability of their household or because they've been at it so long it is all they know. Whatever the cause, as a technology (particularly a language) ages, more and more people that are change adverse remain and those (many times the best and brightest) move on. Not really surprising, but a bit unfortunate for those who remain.

</comment></comment><comment><USER25> I'm using .Net (MVC3) for my current web startup. I thought about python, I thought about RoR, I thought about Java, but I decided on .Net.

Why?

I knew C# well at the time, maybe not the best out of the languages I know, but well enough to hit the ground running. And I knew with MVC3, I would be running in no time. Visual Studio is an awesome environment IF you have a fast PC. I have a fast PC. LINQ, and LINQ to SQL, is incredibly powerful. I can drastically alter my SQL DB, and have my ORM code auto-generated immediately.

Out of the box, .Net takes care of a lot of the detail. I can optimise this detail later if I need to (I hope).

With the aim of this code being maintainable, and having hated maintaining a large python code-base before, I wanted to use a statically typed language.

Importantly, I knew .Net was going to be scalable when I needed it be (stackoverflow.com as an example).

How is it going?

Very well. But I've not launched yet. I have no regrets, and think C# is an amazing language to work with.

I would generally consider myself language agnostic, so whilst the decision was hard, I was confident it wouldn't matter too much in the end. Hopefully that will remain the case, but you never know what's around the corner...!

</comment><comment><USER26> "It seems as though the whole philosophy of .NET centres on catering to the novice... .NET, and specifically C#, both coddles you and then scolds you at every turn."

Perfect summary and exactly how I feel about .NET.

<comment><USER27> I'm trying to figure out how a language which features reified generics, covariance and contravariance, lambdas, expressions-as-data, type inference, both static and dynamic types, reflection, and anonymous types could be considered by anyone as "catering to novices" or "coddling" you. Say what you want about MS, but C# is an incredibly powerful and expressive language.

<comment><USER28> The image in the link sums it up ("...all without writing a single line of code!", which I've heard personally in Microsoft events). It's not that the languages or the framework lack advanced features, it's that Microsoft/MVP's constantly tote the "beginner" features. I find C# to be very fun to code in... so long as you avoid anything that the tool will do (or only the tool can do) for you.

</comment></comment></comment><comment><USER29> After seeing a few blogs like this, I was starting to get the general impression that C# and .NET were dying out.

However, according to the TIOBE Index [1], C# was actually second in growth in 2011, just behind Objective C. Not sure how reliable that is, but thought it was an interesting (and unexpected) trend.

[1] [http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

<comment><USER30> I think there's some significant selection bias on HN, particularly against Windows and Microsoft. It seems a disproportionate amount of the people here are using Python/Ruby on OS X, so naturally you'll get more articles about moving to that sort of stack and away from .NET and the like than the opposite.

In reality, .NET is actually a very interesting platform. LINQ is actually really cool and C# is largely a better language than Java. If this isn't enough, you can always use F# which is a _very_ nice functional, statically typed language based on OCaml. On top of this, MSR produces interesting research in programming languages, which can easily be subsumed by their product languages. There is actually a healthy exchange of ideas between Haskell and the .NET languages, for example, even going _both_ ways. (Haskell recently got some features from LINQ, for example.)

<comment><USER31> What are those LINQ features you're talking about?

<comment><USER30> I was particularly thinking about things like order and group in list comprehensions[1]. Turns out the paper introducing them was actually from 2007, so maybe it's not _that_ recent :). (I thought it was newer than that.)

[1]: [http://research.microsoft.com/en- us/um/people/simonpj/papers...](http://research.microsoft.com/en- us/um/people/simonpj/papers/list-comp/list-comp.pdf)

Here is a random video I found earlier where SPJ talks both about this in particular and the exchange of ideas between Haskell and .NET in general: <http://www.youtube.com/watch?v=iSmkqocn0oQ>

</comment></comment></comment></comment><comment><USER32> I too have second thoughts about .NET. I absolutely love C#. I've worked in just about any language & dev stack out there and, to me, nothing comes close to the immense power of C#. My biggest gripes with .NET is tooling and deployments. I do agree that sometimes you wait for ages for tools that are already available in other development stacks (think EF or Team Foundation). Deploying on .NET is an absolutely atrocious experience. Dealing with MSBuild, XAML workflows and WebDeploy is just a royal pain in the butt. On the other hand, I do have to say that when you have a rock-solid group of engineers working on a complex .NET solution, the architectural patterns are much easier to implement and bring new people into than other stacks I'd worked on. Everything just looks cleaner, plus you have some pretty solid frameworks you can tap into such as MVC for web, LINQ for powerful querying, WCF for service- oriented needs, WPF for beautiful desktop apps. Moving from all of this is certainly pretty tough. But I sometimes feel the need to embrace the cool stuff that's happening with the speed of light in other stacks. It's just too big to disregard.

</comment><comment><USER33> >> You'd probably have to have been living under a rock to have missed all the previous blog posts from others leaving .NET for greener pastures

Well some people have the opposite experience and also have written posts as to why they are moving to .NET.

<comment><USER14> They do? I'd would actually love to read them (I'm sure so would others) so perhaps you would provide some links?

On this note though, I should probably mention I didn't reference those posts to prove there is a deluge of people leaving .NET (in fact I highly doubt that there is), but for context and to demonstrate just how cliche and unoriginal mine was. ;-).

</comment></comment><comment><USER34> To me its about trends as much as anything. I noticed a few years ago that the kids on reddit were not interested in .NET but were interested in JavaScript etc.

So, honestly one of the main reasons I got out of .NET was because it seemed like it wasn't as cool as I thought it was anymore.

Another reason, although this is probably a secondary rationalization, is that open source isn't really that big in .NET, and open source seemed important (and cool).

Which isn't to say that there aren't lots of rational reasons to get out of Microsoft development, but I just think that we should acknowledge that people don't usually do things for rational reasons. They mostly do what other people seem to think they should do.

Anyway, I don't see anything wrong with drag-and-drop components or intellisense or even compile time checks. That stuff is really helpful. I am working on composable drag-and-drop widgets for JavaScript/CoffeeScript web applications. And I think that less code is better, and if you can accomplish the same thing with a GUI designer, drag and drop and some property editing, then that is better than writing source code to do it. Its better engineering.

IDEs that are slow are not great, of course. The biggest issues for me are that most everything is closed source and generally the language C# is much more verbose compared to CoffeeScript or JavaScript. Also your software will only run on Windows desktops and not over the web.

<comment><USER35> I'm trying to understand your last few sentences. Microsoft has open sourced huge amounts of code in the last four years or so. The entire MVC framework is open source, for example. Nuget (another open source project, but built with the community) is really driving the adoption of many open source projects in the larger .net world. You have companies like telerik (huge .net shop) releasing some of their own software open source now.

Microsoft even redistributes jquery. The culture (at least in the web side of .net) has really changed in the last few years.

Which brings me to your last sentence. Any software built with .NET will not run over the web? Where are you getting that from? I've been programming .NET for 8 years now, and I've only programmed stuff that runs over the web.

<comment><USER34> Sorry that last part was a mis-stated. A lot of .NET is Windows desktop programming.

A lot of the "web" stuff is XBAP or whatever which is basically desktop packaged to go in IE.

Sure there is plenty of ASP.NET development going on, and that is over the web.

But come on, you can't say that most .NET software is not closed source. Sure, some of it is being 'opened up', but for the most part, ASP.NET and C# libraries and components are not open source. Especially when you compare the ratios to other platforms.

<comment><USER35> >But come on, you can't say that most .NET software is not closed source.

Which is probably why I said nothing even close to that.

I can only really talk about the web related tech. Huge parts of ASP.NET are open source.

Then you have projects like F# which are open source.

Nuget package manager is open source (formed out of two community open source projects).

The Dynamic Language Runtime is open source.

IronRuby and IronPython are both open source.

MEF is open source.

The Orchard CMS is open source and control has actually been given completely over to the community.

Silverlight controls was open source.

I could go on and on. Open source is bigger in microsoft than you give it credit for. When you imply that most .net software is closed source, it's true, but you can say that about any language. Most software written in ruby is closed source. The one exception might be javascript, because you can't really close the source to that.

However, you can take a look at the big .NET open source projects, or just the AltDotNet community for the counterpoint.

>Especially when you compare the ratios to other platforms.

That is a meaningless metric

>So, honestly one of the main reasons I got out of .NET was because it seemed like it wasn't as cool as I thought it was anymore.

How in the world can C# not be considered cool? It's statically typed and reflective. It's got generics (reified) and delegates. Those things led directly to anonymous types, anonymous functions (lambdas, if you wish), co & contra variance, and type inference. Those things led to expressions which enabled Linq. Then you throw in dynamics. The next version will have the compiler as a service and the 'await' keyword which vastly improves multi-core and event drive programming.

Yeah, there are other languages out there that are doing some cool things. I don't see how anyone could think C# isn't cool, though. BTW, while microsoft is still working on their C# 5 compiler, Mono (the open source .net implementation) has already completed theirs and it is available today. They had compiler as a service before microsoft even announced it.

</comment></comment></comment></comment><comment><USER15> .NET is finally mature enough to get the "I'm leaving" posts.

There were plenty of these in heady times of '06 and the Ruby rush. Except with Java.

I'm sure at some point there were some for Cobol and Fortran and C and C++.

<comment><USER14> You seem to be defending .NET with a lot of handwaving. How exactly does one demonstrate that "I'm leaving" == maturity. By your reasoning then, anyone leaving what they feel to be a failed language/framework automatically proves it's maturity by doing so. I don't get it.

</comment></comment><comment><USER36> In the end it all boils down to use the best tool for you for the job you're working on.

That aside, going from Rails to .NET MVC has been a lesson in patience. While I am glad to have skipped Webforms, there is still something about .NET MVC that weighs on new ideas.

It's just easier to get up and running with a Rails stack and get your idea out there.

But that's just me, maybe for you it's Python, or C or Assembly. Whatever it is you work best in that's what you use.

Posts like this can help a community identify weak points though so I'm always glad to see them.

</comment><comment><USER37> _sigh_ Scientists stand on the shoulders of giants; programmers stand on each others' feet.

</comment><comment><USER38> My biggest pains with .Net C# are:

1) Not runnable properly on Linux (I always have trouble with mono - maybe its just me)

2) Compilation and app restart time etc are annoying when wanting to develop rapidly

LINQ and the syntax of the language, VS etc are all awsome though.

<comment><USER39> Visual Studio compilation times are ridiculously fast for me, are you talking about Mono/Linux in point #2 also?

</comment></comment><comment><USER40> I have a lot of fondness for C# (version 3+) even though I don't use it any more. VS is a good IDE, too. Windows itself is meh.

Overall, you can do a lot worse.

</comment><comment><USER7> There are probably 2 reasons why I would look at .NET and one of them is not pure .NET/Windows anyway.

1) Consulting/Contracting gigs

2) Mono for cross-platform GUI development

</comment><comment><USER41> I love c# to bits.

</comment><comment><USER42> I have worked pretty much my whole career in .NET, and I think it's pretty good in terms of actual coding and development. It has gotten better by leaps and bounds in recent years. .NET and C# aren't the problem, the insanity of the Windows stack is the problem. So many stupid little things unrelated to your code can go wrong, the toolchain is paltry, and deployment is still a mess.

If you're actually using drag-and-drop you probably already lost.

<comment><USER43> C# is an awesome systems language, hampered primarily by official support being limited to windows systems. But a lot of other technologies swirling around the .net stack are horrific. EF, workflow/xaml, wpf, and even the build infrastructure such as team foundation and msbuild are not a pleasure to work with and in many cases generally inferior to free open source alternatives.

Worse yet, sometimes you get the feeling that building expertise in all these tools is limiting because it has little commonality outside the windows bubble. Working on improving IIS performance won't help you much in a wider world were apache and nginx expertise is more useful, for example.

</comment></comment><comment><USER8> I no longer do .Net development and leaving it all behind was a breath of fresh air. It was ridiculous.

I find it monstrously overblown and while its proponents/fans call it elegant I think its a horrible inelegant mess. Great if all you do is Windows, no doubt.

Plus I don't trust Microsoft on Mono (which at one time I thought was a neat idea) and I don't trust them not to dump their existing .Net devs like they did with VB6 sometime down the line and without warning as soon as they and their marketing department decide the next shiny-shiny programming paradigm has arrived. There are plenty of rumours about this and I frankly don't discount any of them as being too far-fetched.

<comment><USER44> > I don't trust Microsoft on Mono

The FUD on this issue has been tirelessly debunked. Microsoft would have to contravene its own covenants and agreements in order to do this.

There are reasons to dislike Mono. This is not a legitimate one.</comment></comment>


Computational Mathematics with SageMath (2018) - <AUTHOR> http://sagebook.gforge.inria.fr/english.html <comment><USER2> I didn't post this item, but I am the person that started SageMath in 2004, so if anybody has any questions I will try to answer them...

<comment><USER3> Maybe I misremember horribly, but I think I read somewhere that the original motivation for staring Sage was to provide an open source alternative to the proprietary tools. Do you still think it is an ideal worth of following?

And Sage has been (and is!) huge undertaking, which developments of the project surprised you most? Which parts of it you like most and which least?

In the name of many, many users thank you for starting it!

<comment><USER2> Yes, our official mission statement is still "Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab." Yes, I think this is still worth aspiring to, though it's very difficult to do with very limited financial support (given how much money the Ma's have).

> which developments of the project surprised you most?

It was dramatically more difficult to get real funding than I expected. I remember my first NSF grant asking for funding directly for Sage, where I put in what I thought was a humble request for about 10% of what Magma operates with... and they cut everything except one single 50% postdoc. I definitely thought the math community would support development of a community owned platform for computational mathematics much more strongly, and was extremely surprised when that was not the case. Europe has been much more supportive (with OpenDreamKit), but I'm in the US.

That said, I'm also very pleasantly surprised that actual contributions to Sage have continued and grown in many areas of mathematics, and the project is successful and healthy today and supporting research level mathematics in many areas.

</comment></comment></comment><comment><USER4> I made extensive use of Sage during a recent research project. The most useful thing about Sage for me is that it integrates cleanly many mathematical libraries, making it easy to export results from one tool into the other. The visualization tools are a bonus, and made debugging quite easy. In my case, Sage neatly connected graph isomorphism tools with group theory libraries, saving me a tremendous amount of work.

The main downside for me is the performance overhead of using Sage. It is great for quickly prototyping ideas, but I found that some components were not designed with performance in mind. For instance, I used the Sage interface for Gap for much of my group theory computations, and I found that this interface was incomplete (it does not natively support the product replacement algorithm, for example) and quite leaky (I needed to manually garbage collect to keep from running out of memory).

</comment><comment><USER5> Sage is definitely not the easiest thing to use, but it's a great way to 1) actually get your math right and 2) record and share your work. I used it to work out the cubic formula and share it alongside a blog post: [https://alexcbecker.net/mathematics.html#the-quadratic- equat...](https://alexcbecker.net/mathematics.html#the-quadratic-equation-and- beyond)</comment>


Show HN: NullAuth – A proposal for password-less authentication - <AUTHOR> https://www.nullauth.org/ <comment><USER2> Also see SQRL: [https://www.grc.com/sqrl/sqrl.htm](https://www.grc.com/sqrl/sqrl.htm)

A ton of work has already been poured into it. In particular around the area of "user convenience" features (recovery, reset, forgot/lost, low friction day-to-day usage, etc) and preventing phishing and MITM attacks.

<comment><AUTHOR> This is an excellent effort. Let me see what I can learn from it. Thanks for the link.

</comment></comment><comment><USER3> A couple of things:

What happens when/if your private key is compromised? All accesses will be compromised All accesses need to be rekeyed

Some factor that's unique to the service would help to minimize this, something of an unique extension to the public/private key, something like two keys for the service, the general one and the other one (this is something other than your password, so the server would still need no password)

Tooling is key . Not only being able to manage all those public/private keys but also backing them up and make sure that they aren't lost. Or perhaps using email or other channel to reset them

Keybase could probably be an excellent tool to manage such key.

This is still a tad raw, and somehow user experience isn't factored in. We have a very powerful computer with fingerprint recognition in our pockets, why do we still need to type in passwords? (think WhatsApp web login)

<comment><AUTHOR> User experience hasn't been factored in and tooling is key here. Tooling could (perhaps) be such that the user would never need to see the key pairs; tooling would manage them. That everyone always has a mobile phone in their pocket is a big opportunity; it could hold gatekeeper software that's with you wherever you are.

> What happens when/if your private key is compromised?

We'd need to revoke the keys and that would be hard to do manually. But with tooling, eventually easier than logging on to a website and changing passwords.

</comment></comment><comment><USER4> Nice, but where do you keep your private key?

Why storing and syncing a private key or multiple private keys is better than storing and syncing a complex password or multiple complex passwords?

<comment><AUTHOR> Syncing private keys seems like a somewhat risky thing to do.

I'm leaning towards generating a new key and something like this: Add key for <user@website> at <utcmillisecs>: <new_public_key_goes_here>;<sign_with_current>

Also see: [https://news.ycombinator.com/item?id=15943546](https://news.ycombinator.com/item?id=15943546)

</comment></comment><comment><USER4> I have another suggestion: keep a public database of linked accounts: email@example.com == someone@twitter == someone@keybase. Let people append to their set of linked accounts only if they prove to control at least one of the accounts in the set plus the account being added.

How do you prove you control something? I don't know.

<comment><USER5> You mention Keybase as one of those accounts, but isn't this one of the goals of Keybase? See: [https://keybase.io/docs/command_line](https://keybase.io/docs/command_line)

<comment><USER4> No, Keybase uses these social network proofs to verify the ownership of the public key so you can encrypt messages to it, like what a "web of trust" would do in traditional public key directories.

Since they need public proofs, email will not be supported, for example. Also, they're very slow[1] in adding more providers, or perhaps they don't want more providers.

But yes, I think the database Keybase is building can be used for a login system somehow.

[1]: [https://github.com/keybase/keybase- issues/issues/518](https://github.com/keybase/keybase-issues/issues/518)

</comment></comment></comment><comment><USER6> The multiple device part seems tricky to improve on. I don't see how this approach can be tweaked to make it easy for non-technical people to access on multiple devices.

It seems like you have to define a new device on a existing logged in device before using the new device. Is there a way around that? If I want to log into an app for the first time at work and forgot to define a new device name at home where I already can log in, I wouldn't be able to do so from what I understand.

</comment><comment><USER7> I am always interested in proposals for getting rid of passwords. However I am not smart enough to review the technology without the domain experts on HN breaking it down for me

</comment><comment><USER8> This looks really interesting, but I'm wondering how you came up with the spec for the command language.

It seems a bit arbitrary and since this meant to be used in a machine-to- machine context and for security, wouldn't a binary protocol make more sense (which would get you smaller transfer size and resistance all sorts of string- based terminator attacks)?

<comment><AUTHOR> I was aiming for the command to be human readable and easy to parse. Transfer size isn't a major concern imho since commands will be very short in length.

But I admit I haven't thought very much about how it could be attacked. Do you see potential holes here?

The syntax is: {command} with key1=val1, key2=val2, key3=val3;{signature}

<comment><USER8> I don't see anything obvious, but a string-delimited system is more vulnerable in general (especially if the spec grows).

Consider for instance that the escaping of comma's wouldn't be necessary in a binary protocol.

</comment></comment></comment><comment><USER9> This sounds interesting... Integration with the major password managers would help adoption I'd think.

</comment><comment><USER10> Hi!

I wanted to check out the browser extension that is mentioned, but the site is returning 404.

Mostly, I wanted to find out whether the extension is using WebCrypto for the key generation, signing, verification, etc, and how the private key is being stored.

Can you please elaborate on this?

<comment><AUTHOR> As I mentioned on the top, it isn't ready yet. I just wanted to put a spec out there for discussion. I also wanted to take ideas on implementation, such as what you just provided.

I'll keep you posted on progress, if your email is in your profile. Hoping to have everything (plug-in and serverside examples) ready in a week or two.

<comment><USER10> Also, forgot to mention:

If you were to use WebCrypto, it ought to be possible to securely (with respect to cross-origin policy) store a user's private key using IndexedDB.

<comment><AUTHOR> Being able to transfer private keys between devices owned by a user might be a necessary feature. Otherwise accounts will be tied to a single device. Not sure what would be a good way to do this though.

<comment><USER10> Absolutely, yeah.

WebCrypto has support for keypairs that can have the private key data extracted (there are limits, though, which I cannot accurately remember) from the JavaScript object in which they are contained.

So it ought to be possible to extract the key data, encrypt it (also using WebCrypto) and sync it (somehow) to another device.</comment></comment></comment></comment></comment>


Dreams: Night School - <AUTHOR> http://www.psychologytoday.com/articles/index.php?term=pto-20071029-000003&print=1

<comment><USER2> What about erotic dreams? What about abstract dreams? I frequently dream about the code, or, even, in the code.

Quoting: "Dreaming is a sensitive system that tries to pay much attention to the threatening cues in our environment," Revonsuo concludes. "Their function is to protect and prepare us."

So, the erotic dreams are here to protect and prepare us... ?

But, more seriously, if you believe that erotic and mathematical dreams are yet another kind of survival scenario, it doesn't take a genius to realize that in more broader sense, all your activities, not only dreams, can be generalized to survival training. What's the difference between thinking about math during the sleep, or no?

</comment><comment><USER3> I suspect dreaming is just a process that goes on constantly but gets completely stifled by either consciousness or deep sleep. The notion that we rehearse our instincts at night makes me wonder why we don't dream about the full gamut of our instincts more often--things like: 1) Placing food in mouth, 2) Finding a designated area to defecate, 3) Forming social hierarchies, 4) Killing animals, 5) Enforcing mores, etc. I've never dreamed about any of those things.

<comment><USER4> The suggestion here is not that dreams are rehearsing _instincts_ , but that they're rehearsing of behaviors which are important for survival, and the selection of which behaviors to rehearse depends mainly on what the waking mind is concerned with, since that's a good indicator of "important survival behavior".

Hence dreaming about code for those that program all day, or having World of Warcraft dreams after playing too much WoW. Er... not that I've ever done that last. Nope. Not me.

</comment></comment><comment><USER5> That's funny because there is that BBC documentary The Power of Nightmares about how politicians gain power by attaching their message to whatever the populace is currently having nightmares about, and by creating new nightmares as well.

</comment><comment><USER6> While it seems pretty logical that everything in our behavior, including dreams, comes down to evolutionary processes and survival, still positive dreams remain unexplained from this point of view.

<comment><USER7> Don't positive thoughts help survival?

Perhaps we have evolved to an optimum mix of the two (nightmare & positive dreams).

<comment><USER6> Or maybe a positive dream is a successful resolution of a nightmare scenario. When we wake up we remember only emotionally intense episodes and forget others. If you did solve a problem in your dream, the solution "dominates" over the original problem in terms of its emotional charge.

</comment></comment></comment><comment><USER8> Given all the new articles/submarine ads for drugs that let you stay awake straight for a week - probably not a good idea to use them now...</comment>


How a Rust Belt Native and SV Technologist Is Re-Thinking American Manufacturing - <AUTHOR> https://medium.com/initialized-capital/how-a-rust-belt-native-and-silicon-valley-technologist-is-re-thinking-american-manufacturing-b4e0388f8eca#.xkkgzxe14 <comment><AUTHOR> Growing up in Michigan and being around manufacturing people my whole life this guys thoughts really resonate with me. Love to see him as an adviser to some of the politicians and educators locally. Once the boomers retire I am not really certain who will do these kinds of jobs?</comment>


DNSy.me - DNS and RBL reports - <AUTHOR> http://dnsy.me/

<comment><AUTHOR> Please test it out and advise/propose any new features you'd like to see. It's been a side project of mine, constantly improving it. Thank you!</comment>


Why Science Can't Be Trusted - <AUTHOR> http://asserttrue.blogspot.com/2013/02/why-science-cant-be-trusted.html

<comment><USER2> Not a bad article. I thought it might be B.S. at first. But he cites a lot of good source. Now I don't know what to think.</comment>


Max Levchin wants to see more startups trying for bigger things - <AUTHOR> http://www.technologyreview.com/qa/428186/max-levchin/

<comment><USER2> I think that one thing to do for that is stopping spreading the word: "don't re-invent the wheel". Because inventing is hard, it is a discipline and without 10000 hours of practice, one would probably never invents anything big. And to have 10000 hours of practice, one must re-invent a lot of wheels.

I see that each day. I'm working with great coders, very smart and keen. Very experimented. They are pretty fast at coding, they are fast thinkers, fast shippers. They are pretty fast for everything...

But when they hit something new: it's disastrous. Really. Especially their communication.

Personnaly, I'm not able to make a batch file without help... the worse is that it's almost not exaggerated. And yet, they gives me most of the big work because I'm the only one able to deal with it.

Another point is that we are probably at the ice age of computing. Most of the "invented things" should be re-invented a couple more times. After all what is "an invented thing"? Can we say that I have invented the numbers if I have invented the roman numerals?

For me, there is no doubt, we should spread the word: invent the wheel.</comment>


Asteroids are stronger, harder to destroy than previously thought - <AUTHOR> https://phys.org/news/2019-03-asteroids-stronger-harder-previously-thought.html <comment><USER2> That's why you need the best damn oil drillers in the world to plant the nuke.

<comment><USER3> Based on the simulations, it takes the pieces a while to re-congregate. Thus, you'd have to time the burst to have the particles as far apart as possible when they arrive. I wonder if there's a significant radiation side-effect risk? How much would the atmosphere absorb?

<comment><USER4> From 1945 to 1992, 520 atmospheric nuclear explosions (including eight underwater) have been conducted with a total yield of 545 megatons.

So keep the device down to a couple megaton and we should be "OK". (for certain values of "OK")

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

</comment></comment></comment><comment><USER5> This is why gravity tractors are so great. Gravity tractors are immune to everything. (1) They are the honey badgers of asteroid deflection.

(1) Except short deadlines.

</comment><comment><USER6> I thought deflection was preferable to destruction, because it requires much less energy. Is destruction what's needed only if the asteroid is discovered too late to deflect it?

</comment><comment><USER3> Somebody went and Made Asteroids Great Again.

<comment><USER3> _Yikes_ , that comment did _not_ make my Score Great Again, and it's too late to delete. Lesson: avoid any jokes even remotely related to you-know-who.</comment></comment>


Ask HN: Checklist for highly available bare metal deploy? - <AUTHOR> We're a small startup in Shanghai, China, currently in stealth mode. Our core algorithm is relatively computationally intensive, and better adapted to CPU.
Cloud here is not cheap (comparatively), e.g. a measly on-demand 1 core 1G RAM instance could run up to $23/month + traffic + storage. Prepaid is ~$10.
However, we're able to buy (own) bare metal 2 x 2893v3 (24 cores) + 256G ECC RAM + 5 x 300G 15K drives with a battery-backed hardware RAID for about $1500. Another $60/month for 1U colocation with unlimited power and 10M unlimited link (bandwidth is crazy expensive in China, e.g. dedicated 100M link can cost up to additional $1500/month). I'd say 10 of these should be enough at our scale.
The load is pretty typical web & database flow with some heavy Numpy/Scipy spikes from time to time.
Let's assume that the engineer labor cost is zero.
Could HN recommend some learning resources for minimizing pain with this setup? <comment><USER2> Probably the biggest thing is to separate edge servers from backend servers, running DNS and reverse http(s) proxies (aka load balancers) on the edge servers. This would allow you to achieve high availability on the internet facing layer and below. Use DNS routing and DNS failover to steer clients to specific edge servers and to avoid unavailable ones. The more edge servers you have from more independent hosting providers, the higher availability you can get. They can be cheap VPS servers. Failover between backends then can be handled on the edge servers on the reverse proxy layer. Backend servers won't even need physical IP addresses, they could tunnel to edge servers and be located anywhere. You would need to handle connectivity problems though, you can start by using fail fast approach with very low connect timeout and low timeouts and such to quickly and seemlessly switch between backends. I don't know of any off-the-shelf solution that can handle connectivity problems well, so at some point you will have to write your own tunneling proxy, but before that you can survive on nginx, it can mark backends as failed and avoid sending requests there for configurable amount of time. Start with at least 3 edge nodes from different hosting providers and 2 locations for backends, could be a single location if you can get 2 independent ISPs there.

<comment><AUTHOR> Good advice! I think Envoy is very well suited for this, configurable over API and has dynamic async DNS resolve with keepalives.

</comment></comment><comment><USER3> Before sending anything to cloud, I test it on a few different machines I have sitting in my office.

Then I sandbox it on some free tier cloud for a sanity check.

If you ever do send it to production on cloud, be ready to pull the plug if it ever goes crazy and wants to give you a crazy bill.

In China, electricity and parts and even land can be cheap compared to USA right? So I think that explains the lack of cloud providers.

Good luck!

<comment><AUTHOR> Thanks! There are many cloud providers (Alibaba, Tencent, Huawei, Kingsoft etc), but they are not a de-facto "standard for everything", like AWS in the US. They are more used for CDN and cloud APIs, like recognition or mobile storage (think Firebase). But for infra, many companies still run racks.</comment></comment>


The First Rule of Programming: It's Always Your Fault - <AUTHOR> http://www.codinghorror.com/blog/2008/03/the-first-rule-of-programming-its-always-your-fault.html

<comment><USER2> seems to be a lot of old codinghorror reposts turning up these days

of course, its nice that Jeff's been blogging a bit more often recently; one hopes Joel'll do the same.</comment>


Pantone Color of the Year 2020 - <AUTHOR> https://neil.computer/notes/pantone-color-of-the-year-2020/ <comment><USER2> I agree it would be cool that Pantone will publish their research but I gotta say those colours selections tend to be pretty accurate: they highlight ongoing colour trends rather than creating ones</comment>


Taxi drivers in European capitals strike over Uber - <AUTHOR> http://www.theguardian.com/politics/2014/jun/11/taxi-drivers-strike-uber-london-live-updates

<comment><USER2> This seems awfully self-defeating. "Uber is taking our business, so we'll stop offering our services, leaving Uber with tons of windfall profits. That will teach them a lesson."</comment>


Show HN: Open-source collection of Invite codes for any services - <AUTHOR> https://github.com/sandoche/Invitecode-website <comment><USER2> We decided to make it open source so you can add your codes and share it with your friends.</comment>