I wasn't getting hired as a data scientist, so I sought data on who is - <AUTHOR> https://towardsdatascience.com/i-wasnt-getting-hired-as-a-data-scientist-so-i-sought-data-on-who-is-c59afd7d56f5 <comment><USER3> This is an awesome analysis of the situation. Some things I have noticed as a data scientist of 4 years so far: \- Increasingly, data scientist is just being used in place of senior analyst because it attracts more applications. \- At the firms I've worked that are software tech companies, there was an outsized interest in mid-level software engineers wanting to be data scientists, mostly because the career development prospects at that stage are grim and data science usually means a pay bump. This demand has had the opposite effect - software shops are leery of promoting engineers to data scientists for fear of inciting contention among the ranks. \- Building on the data scientist usually means senior analyst, it has also come to mean analyst that can build their sql query into a scheduled ETL or daily process of some sort. You work in pandas instead of excel sorta thing. \- I have personally gotten all my data science jobs from talking about the business side of things. I think engineers approaching the field from a hard-skills perspective is totally wrong. My last technical take home was in a language I had never used before and likewise my execution was shitty, but I was able to well explain the problem, how the data could be used to predict the variation, and how the data science product fit into the business. I got an offer before I left the building.

<comment><USER4> >as an outsized interest in mid-level software engineers wanting to be data scientists, mostly because the career development prospects at that stage are grim

What are you basing this on? Senior software engineer jobs are a lot easier to come by than data scientist jobs and from what I've seen, pay better than the average data scientist job as well.

<comment><USER3> I am just going on my experience, but according to glassdoor data scientists of the same years of experience earn about 20k more than senior software engineers here in Boston.

<comment><USER5> Glassdoor is not accurate

<comment><USER6> source?

</comment></comment></comment></comment></comment><comment><USER7> "Finding 1: most data scientists have postgraduate degrees"

Data Scientists primarily function to tell a story (based upon data) that technicals and non-technicals alike will use in business decisions. It's critical that a Data Scientist _be perceived_ as trustworthy, since the decision-makers are unlikely to reproduce or even understand the Data Scientist's full argument.

What signals trustworthiness? A graduate degree from a Harvard Yale Princeton Stanford (HYPS) or similar university definitely speaks well for a candidate. Online degree programs like Coursera / Udacity / etc won't carry nearly the same weight until their alumnae network grows, and that will require growing into non-technical fields.

What signals _untrustworthiness_ ? Sadly, the "hacker" skills that are so very key in DS (e.g. for data cleaning) are completely at odds with traditional (and especially non-technical) assessments of trustworthiness. Many companies in the Bay Area will look past this issue, but it's arguably a competitive advantage to simply be able to assess "hacker" skills effectively. That also entails making space for "hackers" at your company. Can't take hackers? You probably will never hire a good Data Scientist.

<comment><USER8> That, or, candidates without formal education lack the basic statistical knowledge and/or communication skills required.

PhDs can't code, hackers don't know stats. A good team has both. If you're a one-man show, you need to do both yourself.

<comment><USER9> Hedge funds often have data engineers who focus on building the infrastructure and cleaning the data.

They also have quant guys/data scientists who use the data to help drive investment decisions.

</comment></comment></comment><comment><USER10> Leo Breiman [0] (inventor of bagging and random forests) wrote a paper called "Statistical Modeling: The Two Cultures" [1], and since I read it, I see it everywhere. The basic idea is that Statisticians place(d) too high an emphasis on model interpretability ("data modeling" in the paper), and as a result, missed out on the revolution of machine learning ("algorithmic modeling" in the paper). In the author's words (parenthetical added by me), "[T]he focus in the statistical community on data models (simple, interpretable models) has [l]ed to irrelevant theory and questionable scientific conclusions."

In this TDS post, the author says "Statisticians and Actuaries are at the bottom of the heap as a prior role for existing data scientists." Maybe this isn't a coincidence? Plenty of companies had statisticians on staff, but the explosion of data science happened anyway. Why? Because data scientists do the same types of tasks as statisticians, but while statisticians are of the data modeling culture, data scientists are expected to be of the algorithmic modeling culture. It seems that the market is saying that the algorithmic modeling culture is getting results.

The author references "Type A vs Type B Data scientists" [2], which seems to be getting at the same thing: "The Type A Data Scientist is very similar to a statistician... Type B Data Scientists share some statistical background with Type A, but they are also very strong coders and may be trained software engineers. The Type B Data Scientist is mainly interested in using data "in production." They build models which interact with users, often serving recommendations (products, people you may know, ads, movies, search results)." For whatever reason, there is a correlation between Algorithmic modeling / Type B and "getting things done".

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

[1] [https://projecteuclid.org/download/pdf_1/euclid.ss/100921372...](https://projecteuclid.org/download/pdf_1/euclid.ss/1009213726)

[2] [https://www.quora.com/What-is-data-science/answer/Michael- Ho...](https://www.quora.com/What-is-data-science/answer/Michael-Hochster)

<comment><USER11> With the failure modes we've seen from deep learning and related AI, maybe the statisticians are on to something?

</comment></comment><comment><USER12> Hello guys. It's me, Hanif. Just a response to some of the comments here:

1\. I think it's absolutely fair to criticize this aspect of the analysis: the relative frequencies of the backgrounds of data scientists have been presented as suggesting the success rate from each field. Many of the comments in the post itself made a similar critique. As I've acknowledged in my responses to these comments, what we need are the relative frequencies of applicants from the different backgrounds, not just hires. However, one can justify the inference about the success rate of, say, Statisticians and Actuaries if one has the prior belief that the relative frequency of statistician applicants to DS positions should be higher than the observed relative frequency of statistician hires (<1%!) to DS positions. I don't think this is unreasonable. 2\. I make a similar argument with regards to MOOCs/bootcamps: my prior belief is that the relative frequency of bootcamp-only applicants should be higher than the observed relative frequency of bootcamp-only hires. Hence my statement about necessity vs. sufficiency. 3\. It's somewhat more complicated for applicants with both degrees and MOOCs/bootcamps. I haven't done this, but what I can do is to look at the education distribution for hires with and without MOOCs. If the education distributions were similar, it would suggest that MOOCs have negligible impact. If, however, there is a higher relative frequency of say Bachelor's degrees in the MOOC category, that would suggest that MOOCs/bootcamps have some value-added impact. 4\. An ideal prospective study for the above would be to extract a sample of individuals from a precursor role, say, data analysts (hence naturally controlling for education). Note which of them have MOOCs or bootcamps, then follow them up in time to see how many end up as data scientists in each category. 5\. I might actually change that profile picture. It's 3 years old, in more innocent times. 6\. As it happens I have landed a data scientist position in Singapore and will be starting in September.

<comment><USER13> Nice that you showed up to respond to this stuff. Instead of a blob of text, I suggest an edit to your comment to put each numbered point in its own paragraph. It will make it more readable. Lots of folks here sort of mix skimming and focused reading with the opening sentences helping them determine what they should invest time in.

<comment><USER12> Thanks nick. I've been trying to but the updates are never reflected :(

<comment><USER13> The oldest rules...

[https://github.com/minimaxir/hacker-news- undocumented](https://github.com/minimaxir/hacker-news-undocumented)

...mentioned 2 hours as the limit on an edit. I don't know what it currently is. You're past 2 hour mark, though. Might explain it.

</comment></comment></comment></comment><comment><USER14> > For myself, it was worth noticing that Statisticians and Actuaries are at > the bottom of the heap as a prior role for existing data scientists.

This has a lot more to do with the relatively small number of statisticians and actuaries out there than it does the odds of people from various backgrounds transitioning into data science roles.

<comment><USER15> Exactly. The data is about the backgrounds of data scientists, but is incorrectly interpreted as the probability of becoming a data scientist given a certain background. Obviously the two are related (Bayes' theorem), but to draw any conclusion one would need to know the number of PhDs, Masters, etc. that are applying to become data scientists. For example, the fact that a small fraction of data scientists has a MOOC degree does not imply that the probability of becoming a data scientist if having "only" a MOOC degree is low. For all that we know the few people in the market having this kind of non-traditional preparation could have 100% success rate in getting those jobs.

</comment></comment><comment><USER16> > ...I had conflated the practice of data science with the strategy to become > part of it.

What an excellent analysis that applies far beyond Data Science.

Perhaps describing themself as "Statistician, Data Scientist, Software Developer" might have a better hit rate against the skimmers who pre-screen the resumes. An honest-to-ghu statistician who became a programmer is much more exciting than someone who looks like a programmer attempting to leverage themselves into a new hot sector.

</comment><comment><USER17> Like any other job hunt, it all comes down to networking with people you hope to work with. Blindly learning techniques won't get you anywhere if you don't have anyone who will vouch for you/introduce you to other people

<comment><USER18> Doesn't that defeat the premise of the tech industry as a meritocracy?

<comment><USER19> > Doesn't that defeat the premise of the tech industry as a meritocracy?

If you don't do any marketing of yourself, nobody is going to know about your merit. "Build it and they will come" is a Hollywood fantasy, not reality.

<comment><USER20> I think this is unfair. There are lots of jobs out there, and lots of employers looking for people with specific skills. The reason networking works is because discoverability is a problem. If I apply to every job that listed my skills as required I'd waste 90% of my time because my area of expertise is so specialist that only 10% of the people who have all the skills listed are experienced in the right ways.

Whereas if I network with people the jobs they recommend are far more likely to be a fit because I've networked with them - they know my skills.

<comment><USER19> > I think this is unfair.

Fair or not, it's how most everything in life works. For good things to happen you, you have to put yourself in a position where good things can find you. That means marketing yourself. It applies to getting your dream job just as much as it applies to getting your dream partner.

Even if you get your dream job, talent and hard work simply isn't good enough. You'll need to be able to sell your ideas to others in the company.

</comment></comment></comment></comment></comment><comment><USER21> I am looking for people that find and solve problems on their own, especially for data science roles. The Linkedin profile (hanifsamad) is all about how he is good at solving problems given TO him. Indicators:

\- "I am for the problems worth solving (..)"

\- Use the default header on Linkedin

\- No sign of roles or additional engagement that indicate 'self driven problem solver'

I love the article, but I need actionable insights.

<comment><USER22> I sure as heck put a lot more weight on his clever approach and execution in gathering data on a problem he discovered _on his own_ than I do on what header (??) he used on LinkedIn.

<comment><USER21> It's a good sign that you question what is given to you

</comment></comment></comment><comment><USER23> I'm in the US, but I have worked with a couple of folks from Singapore, so I'm at least going to attempt to make what may be a culturally sensitive suggestion: I would consider a somewhat less 'free, young, and happy' LinkedIn picture. Collared shirt, short sleeve, empathetic smile. Your pic makes you look like you're 16. I suspect you want to look like you're 25-30. Your prospective employer wants to imagine you listening to them explaining their problem, prepared to work with them on the data collection and software development. Look like that.

</comment><comment><USER24> Data science is so obscure the author is right to point out how there's a real difference between what a data scientist actually does and what he needs to do to actually get a job in data science. If you can write queries and understand product metrics, that's about half of all of the data science jobs and interviews.

But IMO the field is getting to a point where the engineers are going into machine learning because it's a pay bump and the data analysts are realizing they can start calling themselves data scientists with some more experience under their belt.

Ultimately the field is saturating to where people are now going into this field as an easy way to hit six figures. You see that with the rise of the data science bootcamps but I digress as I wrote more about it here: [https://www.interviewquery.com/blog/the-saturation-of- data-s...](https://www.interviewquery.com/blog/the-saturation-of-data-science)

</comment><comment><USER25> Is this a situation of garbage in, garbage out?

That is, there might be more interesting distinguish factors, but he was limited to education, position, and years of experience?

</comment><comment><USER26> I started out my career as a 19 year old in business intelligence and old school data warehousing, and only in the last three years been able to properly apply my skills in the world of big data as a data engineer, and I've found that regardless of the fancy titles the kind of stuff I do is exactly the same. Perhaps the most surprising thing is that because "data engineering" is disassociated from the notion of traditional warehousing, you get lots of "experts" who have never heard of an ETL and think about software instead of data pipelines.

And with data scientists, I've found that it's a mix of a) people who did mathematics or physics degrees suddenly getting into computer science b) senior analysts learning how to power up their analysis and c) computer science graduates who went on to do phd in data science

Working with them my humble opinion is that a) you can't ignore the software aspect of your job, meaning that you need to understand basic database principles, parallel computing, SQL, etc. b) you also need to understand that it's not about how fancy your algorithm is, but also how it can be quantified, how you can manage the life cycle, how you maintain it, etc.

<comment><USER27> > you can't ignore the software aspect of your job, meaning that you need to > understand basic database principles, parallel computing, SQL, etc.

I still find it amazing that so many data scientists I know do not understand basic data software principles. Stuff like distributed vs parallel, database types (NoSQL vs RDBMS), immutability etc.

Madness.

</comment></comment><comment><USER28> "Finally, I would note that while the data is silent on the necessity of skills acquired from non-traditional certifications such as MOOCs and bootcamps, it does suggest something about their sufficiency: they clearly aren't. A postgraduate degree is a far better indicator of your prospects as a data science hire. "

</comment><comment><USER29> Superb. This analysis shows that you are not only able to process data, but that you will creatively find opportunities to make data useful, in ways which other folks in whichever company you end up in may not even think to ask for. If people with data science openings are not attempting to hire you from this thread, they're crazy.

</comment><comment><USER30> This is such a mind booglingly _obvious_ way to find the skills needed to get a position that I am amazed I have never heard of it before (I wish I had thought of it!)

It also shows what Inthink is the most vital skill of a Data Scientist - to go and find the data to support the question

nice one

</comment><comment><USER31> Analysts have been doing data science long before Data Science was a thing, unless i am missing something, it's a rebranding of tasks that have always been performed.

<comment><USER32> My grandfather was an "analyst" for GE, which involved a lot of physical calculation, but also FORTRAN and COBOL. It used to be before programming became its own profession that managers, accountants, secretaries, and other disparate jobs were just expected to program off-handedly. It's interesting that we're somehow in the same place again, but in reverse, having to make new names for jobs that involve programming but not "software engineering"

</comment></comment><comment><USER33> Sidenote for anyone who encounters the same: Medium is giving me a paywall, so I opened a private window and it works. Does anyone know how Medium paywall works? Is it the author that says "premium" content, or is it medium based on traffic?

<comment><USER34> The author determines if it is premium or not. Medium visitors get an limited allocation of premium articles they are allowed to view for free each month.

</comment></comment><comment><USER35> anecdotal evidence ahead ...

I wanted to be a data scientist at a top tech company, so I did as Hanif did, and went to the data on LinkedIn. my search was more specific - only data scientists at top tech firms, and is also a very tiny sample.

But first, my situation at the time: Masters in Computer Science at the University of Pennsylvania. strong database, AWS, spark, and python skills. worked in a social media research lab that looked social media impacts on health, mostly did NLP involving twitter and health outcome data. Coauthored a paper that ended up in JAMA (journal of american medical association). Eventually I got what I wanted, but it wasn't easy.

TLDNR:

\- message recruiters directly

\- find a way of showing them you are a good candidate beyond your resume - <USER2> found kaggle was really helpful, I recommend it.

\- be careful of getting pigeonholed out of DS positions by recruiters. your LinkedIn should speak 'I am a data scientist at heart'

\- be prepared to fail interviews and learn from mistakes

\- study stats (youtube,books), coding (leet code), and SQL (leet code?)

Findings: Degree - Need masters or PHD. Major - Statistics or some version of it was most common and MBA's at top MBA programs 2nd, Computer Science very rare. why MBAs? probably because those programs had wonderful stats programs. School - Top schools are very important. previous job - Intern at a top tech company. Intern as a data scientist hugely beneficial. Next most important feature was whether the previous positions was data scientist. Not data backed, but I would argue that becoming a data engineer to get adjacent skills is a bad strategy. DE are highly needed, a recruiter will put you on DE loops, not DS ones. I feel like data analysts also struggle to become DS.

I thought my situation was at least somewhat ideal, but I was not getting interviews. 0. Its hard emotionally to not be able to get to where you want without been giving a chance, just got to keep trying. Findings helped me realize (previous job) that I was going to need to go about getting interviews in a more efficient manner.

I needed a way of getting attention. the reply rate of websites seems to be 1/50, which is problematic if you want to work for a specific set of companies. I think the best thing to do is to go on LinkedIn, search <company name> \+ recruiter. Message the recruiters directly, they have all the power in setting up phone screens, and they send batches of candidates to open positions hoping some of them will get a role. Now you got their attention, so you also need a way of getting into those batches.

An important metric for success was already being what I wanted, so I had to find a way of saying 'I can do this'. I starting spending most of my free time on kaggle, the zillow home price prediction. I finished top 100, which I STRONGLY feel this helped me get interviews. I recommend it. Its a free, zero risk way to get experience and display your passion/skills.

Next, I got some phone screens but failed a few and failed an on site. Technical phone screens are either stats, coding, or SQL - never been asked ML questions. Sometimes I failed coding questions, sometimes I failed stat questions. I addressed this by studying lots of stats (YouTube was very helpful) and coding (leet code). I already had years of SQL experience, so those questions were always easy for me but be prepared to answer the histogram question. I had some recruiters tell me in initial phone screen 'even though you applied to a data science position, we think you would be a better match for this data engineering position instead'. ouch, I realized my LinkedIn and resume looked very DE like because of my years as a database administrator and I added lots of spark/HIVE to my resume because I saw that on most DS postings. Its important, but don't over highlight the wrong things. I politely declined and kept trying.

Eventually I got exactly what I wanted, and I am very happy for it. It took me 2 years after graduation to get there, and I had failures at all parts of the process. I know it sounds cliche, but keep trying is my best advice.</comment>


Barbara Liskov Wins Turing Award - <AUTHOR> http://www.ddj.com/hpc-high-performance-computing/215801518

<comment><USER2> There is already an HN discussion on this topic; <http://news.ycombinator.com/item?id=510520>

<comment><USER3> The titles are exactly the same even. Perhaps titles should be unique and checked. It might be a quick hack to reduce duplication.

</comment></comment><comment><AUTHOR> A history of CLU [http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS- TR-56...](http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-561.pdf) is a very interesting read. CLU is a classic language and it was the first language that provided linguistic support for abstract data types. It also included iterators, exceptions, and a mechanism for polymorphism.</comment>


Never mind the algorithms [role of click farms, exploited labor in US-election] - <AUTHOR> http://www.casilli.fr/2016/11/20/never-mind-the-algorithms-the-role-of-exploited-digital-labor-and-global-click-farms-in-trumps-election/ <comment><USER2> elections over fiy</comment>


Government formally drops charges against Aaron Swartz - <AUTHOR> http://arstechnica.com/tech-policy/2013/01/government-formally-drops-charges-against-aaron-swartz/ <comment><USER3> Felony charges abate at death. Either side can file a document known as a "Suggestion of Death" to the court. The case is the dismissed by the court. The Government did not "drop the charges," though I don't doubt that they filed a motion trying to do so. I don't believe there was a civil forfeiture but if there were they would move to substitute the Estate for the individual. This is not the case in criminal cases.

</comment><comment><USER4> Can we please actually push for change within our government over this tragic loss. There seems to be a problem, how many more times are we going to allow the justice department to do this to individuals?

I hate to compare the notion, but to put it into perspective. Every time I hear of a woman getting raped and the man not being prosecuted because the woman just feels like she shouldn't, I get truly upset. This shows the man, that it was acceptable and he can do it again. How many more times are we going to allow the justice department to push around people of much lesser worth in this world?

<comment><USER5> _Every time I hear of a woman getting raped and the man not being prosecuted because the woman just feels like she shouldn't, I get truly upset._

So you think the government should continue to prosecute cases even when the victim of the crime claims that no crime occurred?

<comment><USER6> It gets complicated sometimes. What if the mafia have repeatedly extorted money from a shop owner, and the government can prove it but the shop owner doesn't want to press charges because he's worried of what the mafia will do to him? That's not an abstract hypothetical, that's how the mafia traditionally operated.

In the case of rape, the traditional defense is to drag the woman's reputation through the mud. Often there is pressure from the woman's place of work, and she really can suffer retaliation if she pursues the case.

There aren't really easy answers in these cases, and I don't mean to imply that there are. But a blanket, "don't prosecute unless the victim wants us to" policy provides a lot of incentives for the criminal to engage in victim intimidation.

<comment><USER5> Yes, that's exactly my point. The (alleged) victim cannot be allowed to decide, because that opens the door to intimidation. In this case, look at the comments saying 4chan will "take care" of Ortiz. If JSTOR had stayed in the case, you don't think they would have been taken care of too?

As a practical matter, prosecution without victim cooperation is difficult, but it's not a travesty of justice. It's the way the system is supposed to work.

</comment></comment></comment></comment><comment><AUTHOR> I think the point is that the charges were dropped ONLY because he passed away. There is no mention of any fault in how he was prosecuted even after all the recent press and outcry from so many people. They just washed their hands of it and moved on.

</comment><comment> mark-r This is non news. What else were they going to do?

<comment><USER7> It's standard, but I was struck that it appears to have been at the top of their to-do list this morning rather than some days from now. I'm guessing they want to head off any reporters talking to personnel, because the second some DoJ lackey in the process gets asked "how do you feel about this?" a can of worms will open right up.

<comment><USER8> You're overthinking it.

It's a pro forma activity that takes all of 30 seconds, and doing it now means they can close the case file sooner rather than later.

<comment><USER7> It's easy enough to check, has every other case against someone who died been dropped already? Does the DoJ have an API?

<comment><USER8> It's not easy to check: PACER does not provide that sort of functionality and the courts have not bothered to record death of defendant as a data field. You're welcome to attempt this project by hand; it will probably take you the rest of your natural life.

PACER was designed and implemented in the days when AOL and Compuserve _were_ the Internet. It doesn't have an API.

</comment></comment></comment></comment></comment><comment><USER9> That's 4 days late.

</comment><comment><USER10> Admittedly, I dont know anything about the law but I have a couple of questions:

1) If convicted, would that have set some precedent that could have affected others for years to come?

2) If the "Suggest of Death" papers were filed, does that mean that the courts cannot convict him of any wrong doing, thus preventing any precedent from being set?

(Though it sounds like one.. this is not a conspiracy theory.. just a legitimate question)

<comment><USER11> Common law holds an individual responsible for their actions, not their families or associates. As such, there is no-one to punish in the event of death, so there is no point in continuing the trial (and no-one to pay for a defense, hence no fair trial is possible). It's why in some areas suicide is not a crime, but attempted suicide is.

</comment></comment><comment><USER12> I'll drop my personal indictment of USG after it's dead too.

<comment><USER13> Please let us know in a year how the Civil War is going.

<comment><USER12> It's not a war, as it's not even really an actionable thing. It's a calmly stated judgment that informs interpretation of events.

USG, having become entirely inconsistent with its founding philosophy, the purported highest law of the land, and the People's will, has ceased being a legitimate government by or for the People. It should instead be regarded as an uncontrolled, extremely powerful entity to be avoided at all costs, and hopefully worked around eventually.

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

<comment><USER13> Who would you like to rule instead?

<comment><USER12> This is an anti-productive question. Any answer will have specific downsides from the status quo, polarizing most people into supporting the current system for fear of the unknown.

Personally, after trying out various political decompositions, I don't even have a straightforward answer to this. I still cling to a hope that as technology progresses, it will empower people to be informed and mostly autonomous, easily moving between any still-necessary minimal domains of leadership/authority to keep them responsible to those they serve.

<comment><USER13> So you want to knock off the government. But you refuse to specify who you want to replace it with. This should arouse suspicion in any person capable of thinking critically.

<comment><USER12> Which part of 'not really actionable' did you willfully misunderstand? The main things I would like are for people to separate their perspective from that of the government, start seeing themselves as autonomous actors that only follow its practically infinite proscriptions out of pragmatism, and make sure the systems they create are empowering their fellow humans and not augmenting this unaccountable machine.

<comment><USER13> You keep backsliding from your original stated intent to see the US Government "dead," which is plain enough. The key detail is that you have no vision whatsoever of what would be there instead. Would it be a US-scale Somalia? The Confederacy? You and your buddies running things? In the absence of any specifics it would be rational to assume the very worst. Even the Bolsheviks had specifics.

<comment><USER12> In the presence of specifics, it would still be rational to assume the very worst. If we overthrew the government for a plausible movement to create a scarcity-free utopia, we still most likely wouldn't end up with such - <USER2> kind of people who seize the reins of power don't sit idly by just because we're hopeful. And correct me if I'm wrong, but this is the major reason you're having an allergic reaction to what I'm saying.

But don't worry, democracies usually aren't overthrown. And this one, being ultimately ruled by capital, certainly won't be. But it still is dying, and may even get there in our lifetimes. In the worst case, it will face this long period of decline followed by ultimate economic and thus societal collapse. This process will not be pretty, and we can only hope that whomever fills the resulting power vacuum isn't preaching a message of a scarcity-free utopia, if you know what I mean.

The better outcome is one in which this failing husk of a nation is used to incubate (and is slowly replaced by) more agile and sustainable methods of societal interaction and coordination - based on voluntary interactions on the Internet. For rough examples, we can look at the positive ideas of cryptoanarchism for example implementations of various things (and please note that these technologies evidently play out much differently than was forseen). We don't need a "first amendment" and constant struggles to define a uniform meaning of freedom of expression for 300M people. We can codify the first pass of this concept by running TOR, and let much smaller autonomous groups use the resulting environment as a starting point for refinements appropriate to their community. Likewise with economic policy and many other issues that are currently centrally and unaccountably dictated by Uncle Sam. There's obviously a whole host of things I'm not or am unable to address, and focusing on any particular philosophy/technology is missing the larger picture (which is why I avoid doing so). However, the beauty in this approach is that if you decide you don't like it, but still believe in everyone's right to be generally left alone, you can simply _not participate_.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> It's too late to apologize....It's too late

</comment><comment><USER15> Not to sound crass, or maybe I want to sound crass. But this is just looking like a chess game now.

As if we couldn't see this kind of thing coming with the way the movie industry portrayed hacking in the 80s and 90s. Public consciousness will, I venture to assert, take this kind of non-news as the new news norm. To the dismay of EFF, Creative Commons, Wikileaks, etc.

</comment><comment><USER16> So, they admit pressure was only there to make him commit suicide?

Now that he's done it, charges can be dropped?</comment>


Looking Forward: Support for Secure Shell - <AUTHOR> http://blogs.msdn.com/b/looking_forward_microsoft__support_for_secure_shell_ssh1/archive/2015/06/02/managing-looking-forward-microsoft-support-for-secure-shell-ssh.aspx <comment><USER2> For all Balmer's thing of dancing on a stage and chanting "developers", there was no point under Gates or he at which Microsoft felt like a pro-developer company.

That has completely changed in the last eighteen months. Each time I think "wouldn't it be cool if" I'm finding a few weeks later that someone at Microsoft is well ahead of me. How much easier it will be to ship my sucky roguelikes to Windows users in this new world!

Hmm. They can now have a path to obsolete cmd. As long as they ship a decent ssh client with the system, users will become accustomed to ssh-ing to their own box instead of using cmd.

Wishlist: tmux, emacs, vi, netcat, shell option for vi-mode, rc-file with preferences, ncurses library, something simpler than curses, zip and unzip. 256 colour is fine, although 24-bit would be impressive. /proc would be cool, but also a big ask I assume. They already have a strong compiler. Make it really easy to find the hex fingerprint required to log on to the sshd-server. Something like inetd could be useful, too.

<comment><USER3> >Wishlist: tmux, emacs, vi, netcat, shell option for vi-mode, rc-file with preferences, ncurses library, something simpler than curses, zip and unzip

No thankyou. I can certainly understand including SSH support, but I don't want what is pretty much the only remaining viable non-Unix platform to start bundling horribly dated and clunky Unix-like commands and bloated GNU tools.

<comment><USER4> Couldn't agree more.

As a die hard Unix guy and ex Slashdot-esque zealot (colloquially a bit of a twat). Yet I'm knocking out PowerShell all the time now and dread having to log into the pile of CentOS kit I have lying around. It is arcane. Even after 15 years I spend most of my time in the manpages or working out another damn config format.

Literally did a two liner to scrape a web page, parse it and call a REST endpoint with the parsed data as JSON in PowerShell. I cant even use python now. I've been broken.

It makes me cringe saying all this as well kind of like a racist making amends with his past.

The only thing I still hate is windows update.

<comment> david-given I did find an open source implementation here:

[http://pash.sourceforge.net/](http://pash.sourceforge.net/)

Don't know if it's any good --- never tried it; it says it's about half complete, but I don't know if it's a useful half.

After looking at the docs, you could do a lot of what Powershell does with Unix shells; you'd need a different set of conventions, where instead of using unformatted text as an intermediate format you used a streamable table format with support for metadata. Then you could have commands like 'where', which would be awesome.

$ xps | xwhere user -eq dg | xsort -desc rss | xtop 10 | xecho "rss=@.rss cmdline=@.command"

...or something. sh syntax is a bit lacking; PowerShell's got lots of useful builtins, including having native support for the format so it knows how to present it to the user. An sh version would conversion routines back and forth from text.

The tricky part would be bootstrapping; getting enough functionality quickly enough that enough people would start using it to make it sustainable.

I'd still rather use this than faff around with awk, though. I've done way too much of that. And if I never have to parse the output of ls -l using cut again, I will be a happy person.

<comment><USER5> Isn't this just complaining you want a different tool? The entire Powershell format depends on, amongst other things, the object interface being sane, existing, and usable.

The whole point of the GNU system was working around the usual "I can see it here, need this bit, and want to put it there". If you need to do something really specific a lot, you write a tool which does that.

<comment><USER6> Exactly. The Unix/Linux world has not gone the way of a Powershell type shell for the simple reason that for the uses where we want an object-oriented API, we have a plethora of scripting languages designed for that purpose, and we all have our own favourites.

When we want a text oriented API we use shell scripts. When we want an object oriented API we pick our favourite scripting language - which may very well for many of us be different for different problem domains.

</comment></comment></comment></comment></comment></comment><comment><USER7> Wonderful.

I am a big supporter of Powershell, and while Powershell has supported remoting since almost day one, it will never enjoy quite as much support as SSH already receives (e.g. third party tools, firewall support, etc). It is also nice that they're looking into using something fairly "proven" secure, OpenSSH is exposed to the internet a lot (even if, yes, that is not best practice) so we can reasonably expect it to withstand day to day attacks.

In general people really are starting to run out of reasons to "hate" Microsoft. It will be interesting to see what they come up with in the future...

PS - I really hope later they expand this to SFTP support. SFTP is significantly better than either FTP or FTPS, and something Windows has lacked since forever.

<comment><USER8> SYSLOG! For the love of god, please support syslog! I work as a consultant supporting a SIEM, and the amount of hoops we need to jump through to get logs from Windows servers is crazy compared to changing one line in a syslog.conf file. I actually dread when a client says "we're an all Windows environment" because wow initial setup just got that much harder.

And if we want to install a syslog forwarder on their domain controllers... no one ever trusts software installed on their domain controllers. _Everyone_ trusts a single line in syslog.conf.

<comment><USER9> MS has supported event forwarding since 2003. You can set machines to forward events or have them pulled. The events are XML that conform to a published schema. There is a WMI call that call pull the aggregated events off the collection servers.

I heard this kind of thing from a vendor the other day. It's like people don't even try to learn how it works.

Why are they different? The event log has some transactional guarantees that were required for a specific kind of security evaluation...C2? I can't remember the rest.

The thing is...you don't have to install a client on the domain controllers. You can setup forwarding to some log hosts and collect them there.

<comment><USER10> _It 's like people don't even try to learn how it works_

It's much harder to know how it works, for some reason. Information like this doesn't make its way into the community and circulate. On a UNIX system you can poke around /etc and get an idea of the scope of what is configurable. The same is very much not true of the registry and only slightly true of WMI.

<comment><USER9> You are right. The guy that wrote PowerShell says that UNIX is document oriented configuration while windows is API oriented configuration.

To get into it in any depth you have to approach windows programmatically. The most power is through C\C++...to be a good windows admin you need to read the docs about how you interact with different subsystems, even if you aren't going to code against them.

<comment><USER11> > You are right. The guy that wrote PowerShell says that UNIX is document > oriented configuration while windows is API oriented configuration.

That's an interesting way of putting it. I strongly prefer the Unix way then,(just avoid turing complete config languages).

<comment><USER9> After coding for several years, the two aren't all that different.

I'm not saying that I think that the UNIX WAY is ever going to go away...but I do think that extreme scale makes the programmatic approach to configuration make more sense. Instead of treating every system as a "system" you treat it as a simple programmable node among thousands of others. You are already starting to see Linux go this way with systemD. The stuff that the CoreOS people are doing with etcD, fleet, and flannel are really the future of *NIX.

Please cut me some slack...I'm NOT TRYING TO ARGUE ABOUT SYSTEMD. I'm just saying that it's oriented towards developers using API's. That's one of the reasons why admins who are used to the "one true way" dislike it so much. And they should have options if they don't want to use it. I'm just saying that cloud scale deployments are driving changes to infrastructure to make it more "programmable". I'm not even saying it's "right"...Its just a observation.

<comment><USER12> I think you have it backwards. Sysadmins are not the ones arguing in favor of "the one true way". That is squarely in the newer breed of developer/admin devops hybrid that the systemd camp is pandering.

For sysadmins the _nix way of text in and text out allow systems to be as simple or complex as they need to be, because parts can be swapped, added or removed as needed.

The kernel don't care what your initial process is (you can for instance point the Linux kernel straight at the sh binary and be presented with a root shell the moment the kernel is done getting the hardware up and running), and the programs you want to run don't care either.

Thus you can run _nix on anything from a dinky single core SoC to a warehouse sized compute cluster.

But systemd is pandering the latter while giving the former the middle finger. This by ignoring the text in text out loose bindings that has been the core of *nix.

<comment><USER9> I'm not trying to be facetious...What part of X11 matches the text in/text out -- small programs that do one thing -- mode? Even Linus says that "model" doesn't really apply any more.

Maybe systemD and it's author's are whatever...I think that the CoreOS people are demonstrating that programmatic administration is the best model for massive scale. That's my only point.

<comment><USER12> X11 may be an odd duck out in the _nix world, but then i started as a way to put graphical terminals on mainframes.

As such the server end started out being a beast all its own...

Still more flexible than systemd though, as i can run a X server on, say, Windows to get the UI of a program running any kind of _nix out there.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> > Given our changes in leadership and culture, we decided to give it another > try and this time, because we are able to show the clear and compelling > customer value, the company is very supportive.

Is that code for Ballmer's regime vs Nadella's regime?

<comment><USER14> It's pretty much a public secret that Ballmer was one of the last reasons why Microsoft did not participate much in the OSS community even though a lot of employees wanted it.

To give a concrete example of the changes (heard from a former Microsoft employee): Under Ballmer they were not allowed to touch anything open-source. Pretty soon after he left that was changed to a policy that a BSD/MIT open- source solution must be used if it is available unless there's a damned good reason.

<comment><USER15> Ballmer has a BAD case of "Not invented here". I remember reading a story about him calling out and mocking an employee in a meeting b/c they has an iPhone (this was around 2008 I think). First off it's a VERY GOOD IDEA to use your competitors products if only to see how they stack up (Spoiler: They blew away MS's mobile offerings in 2008 and still do to this day). Second, what a way to make all of your employees yes-men who live in their own world shut off from what was happening in real world. He was douche all around from what I can tell and him leaving is one of the best things that could have happened to MS. Ballmer took over MS soon after I really got into computers and let it stagnate (XP/IE6) which lead me to switch to Linux/OSX and I've never looked back. I'm not saying it's all his fault but I think he was extremely influential in decisions that ultimately pushed me away from MS.

<comment><USER16> I moved away in 1999 to the Mac, and because of the incredible expensive Macs nowadays, I'm probably going to make another move, to Ubuntu.

Still, Steve Jobs was not an easy guy either. I don't know if he would mock an employee for having an Android phone? Not unlikely given how anti-Android he was.

<comment><USER15> VERY good point and honestly one that I hadn't thought of. I'm not aware of any publicised cases of Jobs calling out an Android phone but I would believe it, he was an asshole. IIRC he was so anti-android b/c he saw Android as a blatant rip-off of iOS (not weighing in here on either side).

As far as cost of macs I think it's still worth it even if you want to run Ubuntu as your OS b/c they hold their value better than any other laptop I've seen on the market. They also resell FAST which is very nice.

<comment><USER17> I buy my computers to use them, not to resell them. At this point my Macbook Pro is worth maybe $300, and I'd be more likely to gift it to a relative than sell it in the first place.

I also found it to be a huge pain to install Linux on it, which is why all my Linux computers are Thinkpads (with the exception of the old HP workstation I'm typing this from).

</comment></comment></comment></comment></comment></comment><comment><USER18> This has been my long time dream. There's so little that prevents this from happening theoretically (obviously there's a lot of coding will be done, but hey that's the fun part). I am very glad Microsoft is taking all the right steps to bring two world closer: Linux and Windows.

With all the announcements around stuff like Docker for Windows Server Containers and cross platform .NET, this was nearly inevitable. Now the server management also steers in the right direction.

Disclaimer: ms employee doing tons of open source.

</comment><comment><USER19> [http://www.microsoft.com/en- us/download/details.aspx?id=2391](http://www.microsoft.com/en- us/download/details.aspx?id=2391)

If I am forced to use Windows in an Enterprise setting, then I just go to Control Panel and enable the POSIX layer ("SUA"), then download the SDK and install. With some minor changes to the %Path, it just works.

SUA has older versions of tcsh, ksh, vi and many other utilities, including an older Perl and an old GCC toolchain that does work. It is 4.2BSD based. If you are at home on BSD, it is like going back in time.

netcat, tmux, emacs, etc. you would have compile yourself. Maybe OpenSSH would compile and run. I have not tried.

Perhaps an alternative to Cygwin, etc. Not "better" but different. It generally "seems" faster and I find it's more difficult to "break" than Cygwin which in my experience can be very "delicate". The SUA White Paper says SUA comes to within 10% of the speed of native Windows.

The main advantage though, for me, is that this is not "unauthorized third party software" to the extent it comes with Windows and the SDK download comes from Microsoft's Akamai account.

<comment><USER20> I just download GnuWin which gives you most Unix tools compiled natively for Win32. Includes OpenSSH too.

[http://gnuwin32.sourceforge.net/](http://gnuwin32.sourceforge.net/)

<comment><USER21> from the look of the website, GnuWin is terribly out of date and packages like OpenSSL (I don't seen OpenSSH listed) will have lots of known security vulnerabilities..

</comment></comment></comment><comment><USER22> I happily await the day when I no longer need to install PuTTY on all of my fresh Windows installs.

<comment><USER23> In a recent HN thread, someone pointed me to MobaXterm ([http://mobaxterm.mobatek.net/](http://mobaxterm.mobatek.net/)) and I have _gladly_ deleted PuTTY.

<comment><USER24> Do you know if it has support for using an external text editor instead of the one they provide?

<comment><USER25> It does.

</comment></comment></comment></comment><comment><USER26> A tweet from the OpenSSH developers:

[https://twitter.com/damienmiller/status/605865246016692225](https://twitter.com/damienmiller/status/605865246016692225)

</comment><comment><USER27> OH THANK GOD. I'm using Ansible to manage Windows, and today that means fooling around with WinRM. For example, that involved adding Kerberos support to Ansible so that it could authenticate against Windows domain accounts, because those are authed differently from local machine accounts.

Assuming the project succeeds this time around, it's going to be way easier to incorporate Windows servers into Unix-centric management systems. That's a huge benefit to DevOps _and_ Microsoft. Thanks!

<comment><USER28> Is there any noise about being able to use Windows as an Ansible host? I like Ansible far more than the alternatives, but I can't make developers I work with keep a Linux VM running just to run Ansible to provision a development VM. That would be... crazy.

<comment><USER27> Not that I've heard, but I'm just a regular contributor and not a maintainer. The last I heard, the chances were somewhere between "when pigs fly" and "LOL no". Then again, at one point the idea of supporting Windows hosts was unlikely and yet here we are.

That said, I wonder how well it'd run under Cygwin. I've never even attempted this experiment so I don't have the foggiest.

</comment></comment></comment><comment><USER29> Hallelujah... new package manager, modular install, and now ssh?

What's left? Perhaps a real terminal?

To bad this won't make it into Win 10, unless I misunderstood something. Looks like my days of sneering at Windows as a toy are numbered... end of an era, and it makes me a bit sad, _sniff_.

<comment><USER30> Well, Win10 is the 'last Windows' according to MS, so this will probably arrive as an update later.

<comment><USER31> If this is like "OS X", then it doesn't mean anything. You'll still have to pay to buy "Windows 10.1" or "Windows 10 Redstone" or whatever they will call it.

"Last version of Windows" is nothing but marketing, just like the overhyped "one Windows" idea. There isn't _actually_ just "one" Windows 10, is there?

Most versions of Windows 10 are not even within 10% of each other in terms of differences. There's a much larger gap between them. Windows 10 IoT Core isn't _actually_ Windows 10, just like Brillo isn't _actually_ Android.

<comment><USER32> OS X updates are free. I have installed a few since getting my Mac.

<comment><USER33> They were not always free; that's a recent change.

<comment><USER32> I know that. Regardless, they are free now, so it's not unreasonable (given the competitive nature of the software industry) to think Microsoft's will be too.

</comment></comment></comment></comment></comment></comment><comment><USER34> "Those who don't understand Unix are condemned to reinvent it, poorly." – Henry Spencer

Basically, bit by bit it seems Microsoft are realising there is a ton of stuff they need to take from the unix environment.

The comments here about how awesome PowerShell and the other tools within all are seem to focus on everything being an object rather than being text.

So, we could fix that by basically providing a "Ruby shell" in one sweep. You go through the standard utilities you have on unix systems, provide them as Ruby methods on various objects (the Ruby stdlib has a great many) and provide a means to navigate a file system easily, and basically you have the beginnings of an object-orientated shell with the support of the traditional 30+ year old command line utilities.

What is it I am missing? This feels all a little reminiscent of when Microsoft got all giddy about providing symbolic links... well... yeah... I mean... what?

</comment><comment><USER35> _Finally!_ PowerShell Remoting just plain sucks, at least it has for me. I've always wondered why the PowerShell developer(s?) would do something so needlessly contrived when SSH has been around for, like, twenty years or so.

This will definitely make my job easier! Or at least more convenient.

<comment><USER36> "I've always wondered why the PowerShell developers ..." Think about the beginning of that sentence. They invented a new console language, when bash has been around forever and C# is a better programming language generally and can be run as a scripted language with a little finagling.

I don't think the PS team is bad (or PS itself for that matter), I just think there was a lot of re-inventing of the wheel for no reason, and that started way upstream of remoting.

<comment><USER37> They didn't reinvent the wheel. Bash was intended for a Unix environment with all the corresponding utilities.

PowerShell was designed for a Windows/.NET environment, which is undeniably different, and they also took the opportunity to create an object oriented shell instead of a text oriented one.

I also like C# but I do feel it makes a pretty poor scripting/shell language.

I do think SSH is long overdue, but based on the post it looks like the developers have always been on the right track - management just wouldn't let them do it. Really glad this is changing.

</comment></comment></comment><comment><USER38> How about a terminal window you can resize with the mouse, and effortlessly cut and paste text, and with tab completion that doesn't do weird inexplicable things? Do they have that yet?

<comment><USER39> There are dramatic improvements in the command prompt windows in Win10:

[http://www.hanselman.com/blog/Windows10GetsAFreshCommandProm...](http://www.hanselman.com/blog/Windows10GetsAFreshCommandPromptAndLotsOfHotkeys.aspx)

<comment><USER38> Just tried it in a VM install. Seems pretty good. A long time coming. Could use tabbed views, though.

</comment></comment></comment><comment><USER40> I wish Windows just became a POSIX compliant OS. I think that would solve a lot of these smaller issues in an elegant way. Apple did a very smart job with Mac OS X, to the point where even I switched to a Mac after having Linux for so many years. It's incredible how I can install packages using homebrew and friends..

Come on Microsoft, go all the way!

<comment><USER41> I think homebrew and MacPorts are niche though. Your "normal" OSX user wouldn't install them. Heck, I ran Linux for years and years and I haven't even installed them under OSX because if I wanted to run BSD or Linux, I'd have installed BSD or Linux.

It's like installing all those GNU tools on Windows to make it more like Linux, and putting Homebrew etc. on OSX to make it more like Linux. Why not just use Linux or BSD? I never understand it.

Also, the lack of proper Quartz windowing support from X11 apps makes using them painful.

<comment><USER40> I think the key point here is this: you're right that regular users don't need homebrew; developers certainly do. By having an analog of homebrew for Windows, Microsoft can attract more developers, which then would translate into a better app infrastructure for Windows. This would then clearly benefit regular users as well.

I haven't used Windows in a very long time, but whenever I sit by a friend's computer, I find it astonishing how badly designed Windows apps are. Certainly Apple's fixation with design created a culture of beautiful apps. But having more developers would also probably improve the situation

<comment><USER41> I'm a developer (I develop on OSX and Windows every day for my day job and at home for myself) and I do not use homebrew. There is not anything I am really missing, but I write C++/Obj-C and you might write something different.

It is interesting regarding the state of app design as most of the BSD or Linux software looks odd to me! I agree that Windows has some odd looking software but they do typically offer more features - you don't get MDI under OSX.

</comment></comment></comment></comment><comment><USER42> Well... all I can say is RESPECT!!!

But don't get lazy! We still need state of the art terminal!

<comment><USER43> Isn't ISE pretty ok? At least it has decent enough copy and paste...

<comment><USER44> What is ISE? A link would be nice too (please?)

<comment><USER45> Powershell ISE?

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

</comment></comment></comment></comment><comment><USER46> TIL that the Windows Dev team have a forum for engaging with users about console features: [https://wpdev.uservoice.com/forums/266908-command- prompt](https://wpdev.uservoice.com/forums/266908-command-prompt)

Back when I interned at MS in 2013, people were alarmed when I spoke to users on some forums about their complaints because I was designing a related feature. We had to check with legal whether I would have to delete all my posts!

</comment><comment><USER47> Wow. Just wow. This is something I never expected to come from Microsoft. They may in fact be changing for the better.

</comment><comment><USER48> This is great but I'm still sticking to MinTTY/Cygwin for SSH until Windows gets a decent terminal program.

</comment><comment><USER49> I hope that Microsoft donates money to OpenSSH/OpenBSD. The way I read this, they indicated that they would.

        "I'm pleased to announce that the PowerShell team will support and contribute to the OpenSSH community."

</comment><comment><USER50> Good news! WinRM is a massive pain. The hoops you have to go through to bootstrap a fresh Windows image to get to the point you can run PowerShell is crazy.

<comment><USER51> Until SSH support arrives, be sure to check out how BoxStarter does things!

[http://boxstarter.org/](http://boxstarter.org/)

</comment></comment><comment><USER52> Seems that Windows is adopting more and more * nix stuff. I wonder why one uses Windows in the first place if * nix stuff is what she needs?

<comment><USER35> As a Windows admin and long time GNU/Linux / BSD user, I would totally _love_ to replace every single Windows at our company with a Unixoid system. But there's a lot of software we use that either is not available on non-Windows platforms, where no decent replacement exists and/or migration is considered to expensive. If, say, Autodesk ported their software to some free Unixoid system, that would go a long way. But AFAIK, that is not going to happen anytime soon.

<comment><USER41> This is very true. The Windows software market is colossal, and the ability to run software from decades ago is a feature not found on any other OS group (Linux + OSX included).

I know we all like to think and strangely wish that we could replace Windows server with Linux boxes and Windows desktops with Linux desktops but the sad truth is that there is no good replacement for Exchange or Active Directory (and the myriad of extensions that you can install into it; even writing one isn't that hard), including all the mobile OS support for mail on it (and calendars), nor is there a Linux desktop that would be instantly comfortable and navigable to 90% of Windows users. My mum would be lost, for certain. I would be lost under Unity or GNOME3 (only with blind rage I feel).

It's a bit of a pipe dream, or very unrealistic. And I say this as a fan and user of all the major systems (and having been Linux and Windows sysadmin in the past).

<comment><USER35> Well, as far as Active Directory goes, I think it is possible to run a "Windows" domain using Samba.

But apart from that, I tend to agree. I still want to believe it is possible to get Windows users comfortable on a Unix desktop, it works with OS X, after all. But practically speaking, you are right.

<comment><USER41> You can run the domain but I don't think Samba implements Users and Computers plugins etc. does it? I wrote one (the version 2 SDK was unfathomable, the SDK version 3 in C# was much better). It let us add extra fields into AD (just like any LDAP implementation) and then present extra tab sheets within AD users and computers for configuring additional external services that we had written (we wrote some middleware to communicate with Cisco Call Manager etc. so they could configure their phone system from Active Directory, very useful!)

The clever thing with OSX is that it is Unix but 95% of the OSX users don't know it is, nor do they care, nor do they know what UNIX is. OSX is Stealth Unix. Clever.

<comment><USER35> > You can run the domain but I don't think Samba implements Users and > Computers plugins etc. does it?

Do you mean mmc.exe snapins? I have to admit, I never tried.

> OSX is Stealth Unix. Clever.

The integration of X11 into the desktop is pretty poor, and I miss a decent package manager like apt-get or yum. Apart from that, I completely agree. Apple has managed something quite impressive by building an operating system that is a Unix to techies and a comfy, user-friendly desktop to the rest (and to the Unix people).

<comment><USER52> Just out of curiosity, don't you consider homebrew "decent" or do you want official package manager from Apple? (App Store effectively being Apple's solution?)

<comment><USER35> I use MacPorts which works well enough, but it would be nicer if something comparable came as part of the base system.

Specifically it is annoying that the compiler does not find headers and libraries installed through MacPorts by default. Yes, you can tell the compiler to look for those headers and libraries easily enough. But compared to the experience on, say, Debian, it is slightly annoying.

Having said that, let me point out that I have owned a Mac for ~19 months now, and while my initial plan was to give OS X a quick try, then install Debian, I have not done so.

Also, if somebody has experience with both homebrew and MacPorts, I would appreciate if that someone could tell me about the differences and the respective pros and cons of both.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER53> Getting there slowly... For the moment I use `babun` and everything works well. [http://babun.github.io/](http://babun.github.io/)

<comment><USER54> thanks for the link :D looks great, as I am currently STILL using UnxUtils plus other stuff

</comment></comment><comment><USER55> The only thing left for them to do is to include Cygwin (or some equivalent) as a built-in Windows feature.

Hell's not only freezing over, but freezing everything else with it. What a time to be alive.

<comment><USER41> Lots of people keep saying this on this thread, but why would you want GNU tools on Windows ? Have you ever wanted to put Apple's runtime on your Linux box? Or MSVC runtimes on your Linux machine?

Weirdly, everyone wants the opposite.

<comment><USER55> I'm not interested specifically with GNU's tools, just standard Unix tools in general; Microsoft could easily use Cygwin (for example) as a reference point for porting/packaging the BSD userland to/for Windows, for example.

> Have you ever wanted to put Apple's runtime on your Linux box?

Not in that sense, but a Linux + BSD userland would be neat. Apple's runtime is basically that minus Linux plus Mach/XNU plus Cocoa.

> Or MSVC runtimes on your Linux machine?

Good God no.

> Weirdly, everyone wants the opposite.

Not universally true if you count Wine as "MSVC runtimes on your Linux machine".

<comment><USER41> Out of interest, what's wrong with MSVC runtimes? Plenty of software has been written using it.

Doesn't Wine basically implement MSVC runtimes?

<comment><USER55> And said software is typicaly bloated and buggy relative to its Unix counterparts. The MVSC runtimes are popular solely because Windows is popular.

Wine is a stopgap for software that's still reliant on Windows. The preferred approach would be for that software to instead be properly ported, which would include using a proper libc and executable package format (like ELF).

That said, my opinions aren't representative of everyone in the world. There are projects like Wine and (more interestingly) winelib that implement the MSVC, and those are popular projects (the former more popular, though the latter closer to being solely MSVC on Linux).

<comment><USER41> So are you saying the C++ STL under Windows is poorly implemented and causes sudden executable growth? (Admittedly, std::max has performance problems under VC2010 but that's kind of old)

Software bloat has nothing to do with the runtimes. It's how people use the runtimes that's the problem. Saying that the runtimes cause software bloat is a massive generalisation.

When I use the MSVC runtimes my software isn't bloated. I compile the same code under OSX and Linux and it also isn't bloated there. In fact, under OSX it uses far more RAM, and I have to bundle along dylibs with the executable inside the .app itself in order for it to be usable. This makes my OSX app far far larger than my Windows binary, which just relies on the MSVC runtimes.

Interestingly, my software doesn't crash either. If the MSVC runtimes were "bloated and buggy" then I would be crashing all the time, but my programs don't....

The executable format under Windows was originally designed to be portable - hence PE (portable executable). Just because they abandoned the other platforms (outside Intel land) does not make the binary unportable.

</comment></comment></comment></comment></comment></comment><comment><USER56> not to be too snarky, but perhaps "looking backward" would be a better title =)

(don't get me wrong, I love my ssh and am glad to see msft supporting it for real)

</comment><comment><USER57> YES!

Now, can we please get a proper terminal? :)

<comment><USER41> PowerShell? Unless you mean the normal Unix terminal, which is 40 years old?

I jest, somewhat.

You oddly never get BASH users complaining about the lack of Batch file support, but it is always vocal the other way around.

</comment></comment><comment><USER58> It is interesting that this is part of PowerShell and not Windows, unlike Telnet.

</comment><comment><USER59> I made an uncomfortably audible gasp of shock upon seeing this. Server versions of Windows have been heading in a console-only direction for a while now but the complexity of PowerShell remoting really didn't make it feel like a feasible solution.

This completely changes the windows admin game.

</comment><comment><USER60> First they ignore you, then they laugh at you, then they fight you, then you win.

</comment><comment><USER61> This would be great if they implement an SSH server, but I'm guessing the shell it connects to is PowerShell, rather than a sh derivative, so many tools many not work with it?

<comment><USER55> It wouldn't be much different than, say, Cisco switches/routers, which (IIRC) also are managed over SSH but implement an atypical shell oriented around network configuration.

So yeah, most tools would need to be adapted to manage Windows. A first-party Cygwin equivalent would be a good next step to ease that particular pain point, but said pain point is much easier than, say, having to install an SSH server yourself.

</comment></comment><comment><USER62> MS is finally waking up. I guess new CEO has some positive effect.

</comment><comment><USER63> I've been doing something similar using a virtual machine running Windows 7 and a whole host of really stupid VPN solutions to connect to customer networks. I ran sshd via Cygwin, which logged me into /bin/sh, from which I could actually start cmd.exe. Presumably, I could also have started PowerShell had I tried it.

It's nice to see that they are offering an official way to do this.

</comment><comment><USER64> As an only occasional Windows user, I wasn't sure what PowerShell was (sounds 3rd party to me, a la Cygwin).

Turns out it is a 1st party command line tool and scripting engine. From a glance it looks to use similar syntax to CMD.exe, but sits side-by-side with it, not built on top.

<comment><USER65> Looking at it from a Unix-a-like background Powershell provides a script capable shell (ala bash and friends) including built-ins that do useful stuff in some of the posix and gnu externals commonly called from shell scripts. Rather than working primarily on text and streams like most unix-a-like shells it is object based. Through the relevant modules and the objects they provide it allows pretty complete interaction with the Windows management infrastructure so in the right hands it can be very powerful. See [http://en.wikipedia.org/wiki/Windows_PowerShell](http://en.wikipedia.org/wiki/Windows_PowerShell). On any Windows machine that isn't obsolete or close to (the 2003 editions fall out of support very soon and XP already has, anything newer had PS integrated) you'll find at least v2, usually v3 or higher.

I keep meaning to find a good book or online reference and spend some time properly learning how to use the thing... For some things it'll replace my need to have cygwin installed everywhere, and it might allow me to do some stuff "better".

</comment></comment><comment><USER66> Wonderful, and I am a bit interested in seeing how well the Microsoft guys and the OpenBSD/OpenSSH team is going to interact. I have no doubt the the Microsoft developers are nothing but professional, but still the OpenSSH people seem to have pretty high standard.

</comment><comment><USER67> I spend a good majority of my day doing administrative tasks in Windows and o365 where PowerShell is a god send. There have been more than a few occasions where I wished for SSH capability, so this news is fantastic.

</comment><comment><USER68> I dont know if anyone has used Git Shell on Windows. I do a lot of Python programming on windows and git shell is spectacular - inbuilt ssh, git, vim and a full linux userland.

</comment><comment><USER69> This is a big step, I'd love some MOSH support too though.

</comment><comment><USER70> WOW that is a huge step for M$ maybe there is still some surprises left for the new order within Microsoft. I for one welcome a replacement to PuTTY.

</comment><comment><USER71> so windows users might finally be able to download a verifiable/signed and maybe "trusted" application to use ssh with?

([https://noncombatant.org/2014/03/03/downloading-software- saf...](https://noncombatant.org/2014/03/03/downloading-software-safely-is- nearly-impossible/))

<comment><USER72> Cygwin has the terminal part of PuTTY built from source. Install Cygwin with MinTTY and you get ssh with bash (and a whole lot of Unix-like niceties) for free.

</comment></comment><comment><USER73> About damn time.

</comment><comment><USER74> If but I could send this moment (and recent ones) back in time to the slashdot of 2005...

</comment><comment><USER75> I guess better late than never, eh?

</comment><comment><USER76> Born Again Microsoft! Great stuff!

<comment><USER77> Is this a reference to the bash shell? (Bourne Again SHell)

</comment></comment><comment><USER78> yeah, never too late i guess? it took more than a decade to make such a move...

</comment><comment><USER79> rip putty

</comment><comment><USER80> Oh thank god!

</comment><comment><USER81> Hell is freezing over at 0K. Oh my god. Wow.

</comment><comment><USER82> +1

</comment><comment><USER83> What's next? Powershell for Linux? Powershell for Mac?

(Pretty please?)

Powershell's piping of .NET objects is so brilliant compared to Bash piping and parsing of text.

<comment><USER84> Why not just use one of the many other languages available.

You could use ipython if you wanted object handling. Now i wonder what would have happened if they didn't have gates or ballmer upstairs and they wanted to implement a new shell.

</comment></comment><comment><USER85> I'm looking forward to MS just dropping their OS entirely and using linux as their back-end. Basically, Microsoft might be better off creating their own linux distribution running a "microsoft windows" windows manager.

<comment><USER86> Come back to us when you've found a way to implement the good stuff that Windows has, such as IOCPs: [https://msdn.microsoft.com/en- us/library/windows/desktop/aa3...](https://msdn.microsoft.com/en- us/library/windows/desktop/aa365198%28v=vs.85%29.aspx)

And no, epoll isn't enough.

<comment><USER87> If I remember correctly, the node.js team needed a lot of help from experienced Windows developers (even from Microsoft itself??) to add IOCP support to libuv.

I think kqueue is the best (well I guess I'm a BSD fan :D) but in general: app developers generally don't care about this, they just use libuv or libevent or something like that.

Does Windows really have "good stuff" for developers? .NET is excellent, but the lower level APIs look horrible. (And the CP/M / DOS era files stuff – drive letters, file extensions that actually matter – makes me very unhappy.)

Jails, ZFS, DTrace, FUSE, netmap, PAM, pf – that's good stuff!

<comment><USER88> That doesn't make IOCP worse than epoll, it's just not the same as epoll. Look at PyParallel:

[https://speakerdeck.com/trent/pyparallel-how-we-removed- the-...](https://speakerdeck.com/trent/pyparallel-how-we-removed-the-gil-and- exploited-all-cores)

<comment><USER86> Exactly! And that's an excellent presentation that outlines what's really cool about IOCPs.</comment></comment></comment></comment></comment>


I said I hated HN, blown away by the response - <AUTHOR>

Hi guys,
I wrote a post saying I now, unfortunately, hated Hacker News (http://news.ycombinator.com/item?id=4396747).
I explained that I felt with the growing size of the community HN had changed since I first joined around 5 years ago. I stressed that I didn't want people to tell me how amazing my product was if it wasn't but I felt that the HN audience had changed from a safe one - who used to criticise constructively and genuinely help you - to a much more negative one which was very keen to snipe, criticise and to just score points.
The response I recevied was overwhelming with Paul Graham even responding. Follow up blog posts were written (http://news.ycombinator.com/item?id=4396747) and and I just simply wanted to say thaks.
The discussion that took place made me see that the community is still a great one - who want to help each other and who have a genuine passion in sharing great ideas and how to make good ones better. The vast majority of people participated in a great conversation - the point scoring, the grammar nazi's, the noobs - seemed to stay quiet. I could be wrong but I have noticed a real upsurge in constructive feedback since that post and I just wanted to say thanks. I hope it can continue because it can be daunting putting yourself and your site out there - we all want to make great products but some of us need help getting from ok to good or from good to great and a comment laced with negativity, without anything constructive behind it, can really effect people who are not so thick skinned as others. Thanks again. <comment><USER2> Thank YOU, for bringing these issues to light and catalyzing that social catharsis.

<comment><USER3> You could argue that's necessary for change though.

</comment></comment><comment><USER4> "grammar nazi's"?

That's pretty much how you summon them :-)

I liked the response too, it's a lovely bunch here.</comment>


Haters Gonna HATEOAS - <AUTHOR> http://timelessrepo.com/haters-gonna-hateoas

<comment><USER2> HATEOS is a solution aimed at solving the _clients can't update_ problem. This was never really an issue since browsers (closest thing we have to a HATEOS client) always rolled out new upgrades, it's an even less of an issue now with todays auto-updating browsers.

It was also born in the web's early document-centric era where every action requires a full loop-back to the server and entire page reload, which is why it will never be used to create engaging and interactive apps.

The ideal use-case for HATEOS would've been to power native mobile apps since they can be difficult to update, but even then it's relatively non-existent with most mobile app developers realizing it provides worse end-user UX that takes more effort to achieve.

Basically 10+ years on and it's still only being used in academic circles where the few that are trying to implement it, are doing it to achieve full- REST compliance, and not anything to do with choosing the best tool for the job or trying to create the best end-user UX.

I've written an earlier post why HATEOS and Custom Media Types are often poor choices, generally requiring more effort and producing less valuable results: <http://www.servicestack.net/mythz_blog/?p=665>

<comment><USER3> FIFY:

"[Hyperlinks are] a solution aimed at solving the clients can't update problem. This was never really an issue since browsers (closest thing we have to a [Hyperlink-aware] client) always rolled out new upgrades, it's an even less of an issue now with todays auto-updating browsers. It was also born in the web's early document-centric era where every action requires a full loop- back to the server and entire page reload, which is why it will never be used to create engaging and interactive apps."

Which seems rather nonsensical. HATEOAS is just about about hyperlinks driving the application. Which is what the Web is, mostly, still, even though we have lots of crappy Flash restaurant sites.

There's two ways you might be correct: (a) REST API clients are complete silos and we no longer use hyperlinks to bridge across them or (b) JavaScript is more important than links.

(a) is sometimes true given the state of today's REST APIs, but not always - Google's APIs, Facebook's APIs, etc. all are fairly connected. Plus We still use Hyperlinks to bridge across "apps", of course, because of this proliferation of API silos still require URIs and even the browser as glue between them until more mature user agents evolve.

As for (B), REST always had Code-on-Demand (i.e. JavaScript) as an optional constraint alongside HATEOAS.

The point of HATEAOS is not about building individual apps, it's about building an ecosystem of integrated applications... i.e. the HTML web itself.

One area where I do agree with you: REST's constraints can and should be jettisoned if it makes sense for your use case. If you really want to make an app that's "engaging and interactive" and needs to be a silo by nature, then have at it.

<comment><USER2> And every time you click a hyperlink, you're requesting a full-loopback to the server and an entire page-reload. This limits it's ideal usages, e.g. it's better UX to use web sockets to live-update content, then get end-users to manually clicking hyperlinks. It's also not suitable for "mashups" (i.e. content/functionality from multiple sources) or stateful UI's (i.e. how most native desktop apps work).

And it's irrelevant in today's Single Page Apps, i.e. you're never going to be able to create a usable "Google Maps" or Google Docs-like applications that comply with HATEOS restrictions.

I'm not saying you can't build systems with it, just that it requires more effort to do and ultimately produces a worse UX - which is why it's an ignored technology/constraints.

<comment><USER4> I don't understand your arguments at all. Here's a concrete way in which a single page app may make use of it, without affecting UX at all:

Instead of hardcoding a URI hierarchy to determine where to issue a request to in order to take various actions on a message in a collection, look for link tags to specify them.

The immediate benefit is that it allows the server to signal 1) what actions it supports in the current context. E.g. if you're logged in as a user with restricted credentials, it might not return a link for the "delete everything" action, and when the rules change only the server side (which already needs the knowledge of the rules to validate requests) will need to change 2) endpoints can trivially change and the client side application is automatically up to date.

How much harder is this? You need to output a few extra tags and attributes. On the client you need to replace some hardcoded strings with lookups based on an xpath expression. But at the same time there are many cases where you may be able to remove duplicated logic.

</comment></comment></comment></comment><comment><USER5> IMHO HATEOAS seems like a solution looking for a problem. I've built and consumed lots of APIs and I've never encountered a solution where I wished that a mechanism existed to discover the next step automatically from the first endpoint.

Using HTTP verbs and resources is super useful and has caught on because its super simple. HATEOAS seems like a whole bunch of complexity to me that doesn't seem to add much value.

Maybe I'm wrong and just need to better understand the use case and value proposition.

<comment><AUTHOR> I don't think you're wrong. I can agree completely. But at the same time maybe we feel this way because we're not used to working with HATEOAS APIs. I personally haven't ever wished I could discover the next step while using an API either but maybe if those APIs were more common we'd be wondering how we ever lived without them.

<comment><USER6> How did you find out the reply page to post that message?

HATEOAS, like all of REST, is modeled after the biggest API ecosystem we have: the (HTML) web.

</comment></comment></comment><comment><USER7> Making a client add a level of indirection through <link> elements to figure out what URL to use is not inherently a good thing: it's easy for clients to get wrong, requires the use of XML rather than other output formats (sort of), and generally adds complexity without an obvious benefit. The example given was that the URL might change, and clients would be able to follow along like humans; but unlike humans, which can autonomously start using new functionality and new site organization, computers are very unlikely to be able to automatically provide a useful submission to a new API - and if the API doesn't change (or is backward compatible), there is no good reason to change the URL unless the URL is excessively coupled to the implementation. The only other benefit I can think of is that humans testing the API might use the list of available API calls, which is actually pretty reasonable, but the article seems to be articulating this as something more fundamental than a debugging aid.

In other words, how is this a good thing?

<comment><USER8> You definitely aren't tied to XML, it is just one possible format for delivering hypermedia. I'm nothing close to an expert, but enjoy the concept. Github is doing cool things with hypermedia in their API.

</comment></comment><comment><USER9> There's two massively under-addressed problems with the HATEOAS constraint:

1\. Code-on-demand requires coupling of technology stack of client and server. (If you're going to assume your clients can run javascript or x-technology, where is the decoupling?)

2\. Out-of-band communcation. Some of the recommendations I've heard have been along the lines of: let's avoid out-of-band communication in API docs etc and have it completely discoverable based on the media type. "And what happens if the media-type isn't sufficient to represent your use case?"

"That's easy, you create your own media type"

So in order to have no need for API docs for an actual API, I create a completely separate media type (which will need its own RFC type specification, or at the very least its own API docs).

This is purely academic, and I still think that nobody is doing it because only those that have tried it or seriously thought through the implications are naysayers. Nobody who's actually built a system like this is coming forth and explaining the benefits.

Maybe if we get some media type that everyone starts using because (unlike XML/JSON etc) it supports full REST-like semantics i.e. forms for POSTing and not just hyperlinks for GET requests, then we may see the purported benefits. But you still run into the problem of expressing field level validation messages in a 422 response. And expressing the valid values in a reasonable way in a template for an object.

Yes, expressing a String or a DateTime object or any other relatively primitive data type with simple validations: presence of, within array of, valid email, valid phone number may be possible.

But most of the time you can't predetermine this kind of contract up front. So there's no way of me, the producer of the API, expressing to you, the consumer of the API, that this particular regex completely satisfies my business requirements in all circumstances.

If I could nail down the expression of the required values for an API call in any sufficiently complex business system and convey it to you in some easy to digest, computer-understandable format then I'm sure we'd be gold.

But reality sets in and you realise you've added a whole bunch of cruft to every API call, and a whole bunch of unnecessary API calls to express some theoretical idea by an academic who admits that he's too busy to actually go away and start building some of these systems.

Not only that, you're making it harder for your consumers to integrate. (Unless they are using an already known media-type, which is a chicken and egg situation as the closest we have to being good enough is HTML, and you try explaining to API consumers, yes the future is HTML, and yes I want you to parse HTML to get the data from my API).

We could start saying, well hell to efficiency as technology consistently improves, but we're dealing with routing packets over the internet at approximately the speed of light. There is a real-world upper limit to this stuff and we need to improve efficiency because if you add 10 extra HTTP requests per API call, your users _will_ notice. This stuff matters.

Hell, even if these are not user critical applications and there is some as yet not understood benefit to the world as a whole having asynchronous processes running in the backends of our systems optimising some problem space and searching for solutions on their own, then we still have another real world problem. There has to be some short to medium to even long-term benefit to building this kind of system to someone.

Nobody wants to build this theoretical hypermedia, semantic web on their own dollar when there is no visible pay-off in the near future or even idealistic theoretical pay-off in the long term.

</comment><comment><USER10> We're working with a HATEOAS API on our current project. One area it really shines is in pagination. The API abstracts away both a MySQL and a CouchDB database. When paginating through SQL, the "next" and "prev" links are simply setting skip and limit parameters, but in Couch they're supplying keys and documents (because "skipping" 10,000 records in a b-tree is a really bad idea). The application no longer is exposed to implementation details; it simply follows the links.

Plus, when you can "surf" your API by following links in JSON documents, you start to twig how it's a pretty powerful thing. It takes client developers about a day to get over the strange feeling they get yielding state control to the back-end...

</comment><comment><USER11> At work we had a team develop a corporate standard for REST APIs that includes discoverability, such as including a 'links' and 'actions' properties on resources.

Our team determined that implementing the discoverability aspect was going to take a significant amount of engineering resources and wouldn't provide much, if any.

The other problem I have with the idea of discoverability in the API is that it doesn't really help the client. For example, with a forum API there may be a link to create a new comment. The client has to be written to recognize the new comment link and attach the URI to a button. What if the API changes the new comment link? How does discoverability help here? Sure, the server is sending the new link but the client doesn't know that new link is really the new comment link that it's expecting so the client has to be updated anyway.

So I don't really see how that helps prevent the client from needing updates when the server changes something.

<comment><USER4> > Sure, the server is sending the new link but the client doesn't know that > new link is really the new comment link that it's expecting so the client > has to be updated anyway.

Then you're doing it wrong.

See the article example. E.g.:

        <link rel = "/linkrels/entry/newcomment"
                uri = "/entries/1337/comments" />

The "rel" attribute remains static. You don't change that. It is what tells your client that "this link is a new comment link".

The "uri" attribute can change at will.

The client knows that "/linkrels/entry/newcomment" means that this is the link to follow to post comments to this entry.

It does not need to be updated when the url's to server resources change, as long as the "rel" attributes stay the same.

<comment><USER11> I was referring to the rel attribute, not the uri. So your point is that once the server establishes a defined API that it can't change in order to maintain compatibility with the client, which is the need for API versioning. So the client still has to be updated when the API changes.

I suppose it provides a little flexibility for the API to adjust the endpoints, but in practice it still seems like a bad idea to modify the endpoints because clients could have cached data pointing to existing endpoints that you now break.

</comment></comment></comment><comment><USER12> I really like his articles on HTTP APIs. I learned quite a lot from them. What he writes makes a lot of sense, except for the "HATEOAS" part.

What he consistently doesn't tell us is _why_ it's necessary and _how_ exactly we're supposed to implement HATEOAS—wouldn't HEAS be a much better acronym?—in our APIs.

I'm guessing the reason why is so API wrappers would be trivial to write. A single library could simply consume a "standards-compliant" API. What that means I do not know.

That's where the how comes in. It seems from the XML example that these links have to in the body of the response. That would mean _every single response format_ has to be dealt with separately. That's not very practical. I also have no idea how something like it would look in JSON for example, let alone how it should be parsed in a meaningful way.

<comment><USER13> Why not:

{ id: 35, name: "Kennedy, John F.", predecessor: { id: 34, name: "Eisenhower, Dwight D.", href: "/presidents/34" }, successor: { id: 36, name: "Johnson, Lyndon B.", href: "/presidents/36" } }

<comment><USER6> Besides killing ids, use full URIs, not just the path. That enables you to replace the links to other domains, possibly to a third-party. Just like we often link to Wikipedia on our posts, you could decide tomorrow that your service should link to dbpedia.org or Freebase instead.

</comment></comment></comment><comment><USER14> The concept of discoverable resources is something I'm very passionate about, we've developed client libraries for our API in JavaScript and .NET that start from a single document, and discover other resources via links. I wrote a blog post about it a while ago here: REST, API's and The Missing Link - <http://blog.appsecute.com/?p=98>

</comment><comment><USER15> HATEOAS seems great if you look at it on the design perspective. You can navigate the whole API just by having the entry point. Seems great right.

The HATEOAS has been introduced to solve "discoverability" of API. But in practice this don't really work. This would mean a client can't bookmark a link to a resource, but instead he would need to navigate the whole "state machine" to discover the hypertext of the said resource. This has two problem on my perspective: \- It don't look like the WEB. It is like if each time i need to find a thread on hackernews, in need to go from the frontpage and navigate until i find the thread. Why not just bookmark the url of the post and be done with it. \- This HATEOAS just translate the issue: Instead of hardcoding the links, I will be hardcoding the Relations between resources.

So if the goal of this HATEOAS is to allow one day to use a single client API that will be able to work with any REST API, Rest assured we're not quite there yet. (pun intended)

</comment><comment><USER16> People don't don't do it because the state is already managed in the Web app itself in general.

Get /widgets Get /widgets/:id

The app says "view" and then "edit item". We don't expect the API to tell us this.

People are just trying to get stuff done and many design from the UI backwards.

If we start to see more useful examples maybe the herd will thunder. ;)

<comment><USER17> You clearly come from a rails background. I would even go as far to say that "many design from the UI backwards" is extremely true in the Rails crowd (I would know).

This level of thinking create monolithic, poorly organized, unstable applications.

</comment></comment><comment><USER18> I think it's easy to miss the benefits of HATEOAS. The relative ease with which javascript clients can use so-called level 3 REST to construct resource URLs from IDs is compelling.

We've been using a HATEOAS approach for the interface between our back-end rails app and our front-end javascript rich client.

We've seen significant benefits during development because the hypermedia links allow us to DRY up the coupling between client and server.

The overall result is much less boiler plate duplication and much clearer client code. It's easier to maintain and extend.

We've judiciously identified some exceptions where the client needs to construct URLs explicitly, in our case because the URLs are tied to dates and we think it's silly to have the server construct links for next_day and previous_day let alone an entire calendar view.

</comment><comment><USER19> I spent a long time trying to find a framework that does hateoas because I was desperate to do the right thing. I was even willing to use a different language for the api to make it happen.

Thankfully, during my hunt Tom Christie released the django rest framework 2. It does this stuff the right way. All 4 levels of goodness.

From the outside it might not be obvious why it's worth having hateoas in your api but when you're exploring an api as a human it makes it so much easier.

The client tools are not really there yet to take advantage of it, but they will be, and our systems will be more stable for it.

</comment><comment><USER20> This post makes me think to this : [http://apijoy.tumblr.com/post/34286521181/when-i-assist- at-a...](http://apijoy.tumblr.com/post/34286521181/when-i-assist-at-a-debate- on-what-is-a-true-rest)

</comment><comment><USER21> If HATEOAS implementation was more widespread the biggest advantage would be the ability to create standard libraries for API calls rather than thin wrappers for every language. Your API would also be more or less self- documented, hopefully making it easier to navigate for humans and machines alike.

I am curious as to why this can't be handled at a HTTP level with OPTIONS? Could I not OPTIONS query a URI, and receive a list of supported HTTP methods (GET, POST, PUT, etc) that are available on this resource?

</comment><comment> T-R A large part of the reason that many APIs fail at content negotiation has to do with the fact that many clients don't support it properly. Chrome in particular completely ignores the Vary header (and its devs have marked the issue as "won't fix"), so it's not practical to have the same URL respond with different media types based on the Accepts header (it overwrites the cached item, so the back button doesn't work properly). Many APIs compensate for this by putting the format in a query parameter.

<comment><USER22> Good news is that this will be fixed in Chrome v25 (<http://code.google.com/p/chromium/issues/detail?id=94369>). Recent versions of Firefox and IE already provide good support.

<comment> T-R That's great to hear. Thanks for the heads up.

</comment></comment></comment><comment><USER23> This site ("The timeless repository") looks interesting but the "Recent Changes" page [1] does not appear to be something I can subscribe to in a feed reader. When I try, I instead get the main feed [2] which shows no updates since May of last year.

      [1] http://timelessrepo.com/changelog
      [2] http://feeds.feedburner.com/TimelessRepo

</comment><comment><USER24> Hateoas would enable you to spider Apis and data. Seems like a useful concept.

<comment><USER15> See my comment about the challenge we still have.</comment></comment>