Ask HN: What have you found the most useful interview question to be? - <AUTHOR> Hiring or applicant side, is there a question you've found that over time has helped you out the most in getting a better understanding about the people on the other side of the table? <comment><USER2> I am considered a great hirer, and it is because of this "one weird trick."

The most useful "question" is any generic task.

It can be as simple as

\-- please put this spreadsheet in alphabetical order

\-- I have misplaced your resume, could you send me another copy?

\-- That sounds like an interesting article, would you send me a copy later on

Even the most trivial task will really illuminate the difference between candidates. Compared to a task, merely talking is entirely useless. Some very polished candidates will simply ignore the request and do nothing. Some will do one of two or three. Some very quiet candidates who are not "impressive" will do all the requests, thoroughly and with obvious care.

How can someone handle the request to forward an article with care? You have to see it to understand. They may remind you of the context, say a word about the article, and add another one for more context for example.

<comment><USER3> I can get the first task, but what is your reasoning behind the two other tasks?

<comment><USER2> I use the verbal ones for interviews where I haven't had time to prepare, or they are not there in person.

Really, listening to a request and following up is just one of those key things. If I had them come in and do a longer interview which I had prepared for, I still find it useful!

</comment></comment></comment><comment><USER4> In interviews I like to try and get a reaction, and the best way to do that is to sit down with a coffee or two (or three) and just chat about their experience over the last few years, in a judgement-free zone - dev to dev.

In terms of an actual question, the only useful ones are ones that come from this chat, because it's where we have a back-and-forth conversation about tech decisions, what issues they had, what they had to overcome, and what decisions that particular dev made. My goal is to get a reaction, negative or positive, and dig into why that situation happened, what they did to overcome it, and what they'd do with hindsight.

Not only does it make an interview more interesting for all involved, it tells you more about the candidate than a quiz would. You learn what they do under pressure, what pisses them off, and what experience they have for the kind of work you do, because you've been using your experience against theirs in conversation. Sometimes, to make it fair, I tell them (without dropping client names) issues I've had recently, and I see if any of the solutions were raised by the team, or are ultimately the solution we went for.

I've had enough success with this approach that (when I did interviews) this was my approach:

1\. A really basic take home test, probably in a language they don't use, just to see if they can write any code. Literally something that takes an hour to do. A favourite of mine was to get them to write an application in a given language to hit an endpoint, with a given code and their email address. When done correctly, an email is sent to our HR team, who then set up an interview. Based on our logs, you'd be surprised at how many candidates couldn't do this - by which I mean had clearly worked on the test, submitted something, and had failed to send a PUT request with the correct data.

2\. A relaxed interview, like above, in neutral ground like a coffee shop. I use the walk from office to coffee shop to handle company questios, and the standard interview stuff,

<comment><USER5> I would have failed your test. I'd have assumed that you didn't want your server inundated by requests, set up my own server to verify what my client was doing, and then submitted the code.

Even if you specifically told me that I must actually hit your server, I'd still test on my own server, and then possibly forget to change the endpoint before submitting (no way to unit test that). Shit happens, and you lose someone on a technicality.

Also, what if your server stops working? Now you're wasting people's time.

Don't rely on magic; it eventually bites you in the ass.

<comment><USER6> Not GP, but I would say that lack of attention to detail is a negative mark. Depending on GP's industry or team, that could be a dealbreaker.

If you can't connect to the server, or it returns a fatal HTTP error, a reasonable candidate would reach out via other means (assuming they aren't deliberately hidden or unavailable).

<comment><USER7> If I would see that the server is unreachable I wouldn't contact anyone, I would interpret that as a red flag. The company would have no problem with deeming me unfit to work for them if I fail to complete the task - why should I consider working for that company when it's their fault that I'm unable to complete the task? What if this situation illustrates how the company works on the inside (no one takes care of the environments, things are constantly broken)? Is it worth it to find out?

<comment><USER8> That's a lot of jumping to conclusions. A simple "Hey guys, the server seems to be down, not sure if you're aware. Can you let me know when it's back up so I can submit my request, as intended?"

Shows understanding, shows willingness to reach out and solve problems, shows ability to delegate responsibility.

<comment><USER7> My approach is merely a reverse take on "it is better to pass up a good candidate than to hire a bad one" that most companies seem to utilize. I'd rather refrain from continuing the interview (even if the company wouldn't end up being that bad) than wasting several months in a bad place.

</comment></comment></comment></comment></comment></comment><comment><USER5> "Tell me about one or two projects you've done in the past that stand out for some reason. Maybe you learned a new technology over the course of it, got to interact with cool people, got shipped off to a different country, had weird clients, got a killer contact. Maybe the project was a total disaster. Doesn't matter what happened or how long ago, just something you found memorable."

Get them talking about what things they get emotionally invested in. You learn a lot about someone this way.

The trick to good interviewing is putting the candidate at ease. When someone's future is on the line, they behave very differently, and preform worse than they would in a regular work environment.

Asking questions like "what have you done well" and "what mistakes have you made" will favor narcissists, because they will embellish, whereas those more on the neurotic side will take more blame, and dislike taking credit.

So put them at ease. You'll get far more real answers that way.

<comment><USER9> > Get them talking about what things they get emotionally invested in.

Yep. I ask something similar and explicitly tell the candidate I'm NOT necessarily after "tell me a time you delivered strong business impact", "tell me a time you added a new skill to your resume", or the other stereotypical things that make a good "interview story".

</comment></comment><comment><USER10> I find this one short and useful: "so you know language X and Y, can you compare some features between them that you like and dislike?". If they get into deep comparisons about the tradeoffs between type safety, state, maintainability, multithreading, undefined behaviour, functional vs OO, libraries etc. that's a good indicator to me.

<comment><USER11> +1

I've been asked this question in interviews on more than one occasion. I find it gives me a good opportunity to show off some knowledge, and with a good interviewer, it's a very good conversation starter for something that can end up being quite deep diving.

</comment></comment><comment><USER12> Hiring side.

"Tell me more about what _you_ did." Can be asked off almost any line of conversation. I'm seeking two outcomes:

1\. Candidate's ability to quickly articulate a complex process, organization, problem, etc. to someone who has absolutely no understanding of it (i.e., me).

2\. An understanding of their specific role and impact, as well as how the team worked together. You often have to coach people through the latter, as many candidates will default to the royal-we.

The other one I'm playing with is, "Let's say you start working here, but six months later, you leave for another opportunity. Why would you leave?"

I'm still figuring out the delivery on that one, but you get an interesting insight into what matters to the candidate.

<comment><USER13> The honest answers to the second question aren't very nice, and have everything to do with the character of the persons employed at a firm.

Why would I leave a firm in six months? Most likely because my boss is an asshole. Am I daft enough to get into that with an interviewer, who may be that boss? No.

<comment><USER14> I'd rather not get a job that very probably do not fit me anyway, instead of finding out after having left that my new boss is an asshole.

The overhead of starting again the job search from scratch, explaining why I want to quit after 6 months (for real this time) is much bigger.

<comment><USER13> Just because my interviewer asks me that question, doesn't make him an ass.

Likewise, just because they would interpret that answer as a black mark, doesn't make him an ass. Maybe the reason I run into asses all the time, is because I am one. Even if they don't interpret it as a black mark, it's a pretty daft way to start a professional relationship.

There's too many unknowns, so the correct course of action is to make up some non-confrontational lie.

</comment></comment></comment></comment><comment><USER15> Ironically, when interviewers talk about how they interview, they pretty much all seem to believe they are very good in evaluating candidates. But when candidates talk about job interviews, they all seem to agree interviews are done badly.

A rule I have is that everyone is good in something and bad in something else. So, if by the end of the interview I haven't found a topic where the candidate excels and a topic where sucks, the interview hasn't been effective.

<comment><USER16> If you've found what they're good at, and it matches what your needs are, does the information on what they suck at help you decide between multiple candidates?

</comment></comment><comment><USER17> From the hiring side:

"Tell me about a result or achievement you're very proud of. How did it come to be a goal for you, and what did you do to accomplish it?"

(Crucial followup after they answer) "Now tell me about a mistake you made along the way and how you overcame it."

Talking about real work provides insight into motivations and enthusiasms, and gives you permission to dive into details as they talk. It also helps show whether they have a healthy attitude about mistakes. This question can also provide some insight into team dynamics since very few big things are accomplished solo these days.

From the applicant side:

"Let's say I get hired and I do an amazing job. You're going to write my 6-month or annual review--what would you write?"

Like Amazon's trick of writing the press release first, this helps hiring managers get specific about their expectations for the hire. It's amazing how often companies hire folks with only a vague sense of what success should look like.

</comment><comment><USER18> Applicant side: "What's the biggest struggle that you're currently working through?" coupled with "Tell me a bit about how you're working through that struggle."

I find this tells me a lot about the person who's interviewing me and the current climate they're operating in. Asking follow-up questions helps a lot here too. It's a good way to find out if the interviewer (frequently the hiring manager) is struggling with an unmotivated team, overly-onerous bureaucracy, lack of funding, staff turnover, outdated software, etc.

</comment><comment><USER19> I have a generic question which I ask in all interviews, whether hiring for a dev, manager, project leader. It works wonders for me.

For each position in the candidate's resume (or the last 3 if the resume is too long) I ask "what did you like about the job? what did you dislike? What made you happy to go to work and what made you drag your feet? It can be anything: boss, coworkers, how work was organized, office politics or lack thereof, visibility/interest of the job, commute time, offices... There are no wrong answers". Then I let them talk.

When it's done right, I find this is a great way to understand what motivates them and to make sure their intrinsic motivation is aligned with the position they're applying for and the company context. For instance, for a developer I'll be interested in someone who likes fixing problems; for a project manager, being result-oriented is usually a good thing. Someone who likes having a clear set of steps to follow is probably not a good match for my management style. Another thing that I can check is how they coped with a situation they disliked. Did they try to address it, work around it, or did they give up/avoid it?

I was first exposed to this approach as a candidate. I remember spending 90 minutes talking about all my previous positions, reflecting about what I'd liked and disliked for each of them, and coming out of there knowing more about myself than I did going in.

</comment><comment><USER20> Having them do a code review (about 10-15 minutes), i.e. have a short (about 50-80 lines) piece of real code, that I have prepared with plenty of problem, messes, non-idiomatic code, or little ugly things.

NOT a test as in "find the 10 hidden mistakes", but an invitation to talk about ways to improve the code. I make it clear to the candidate that it's not about the syntax, or any algorithm, but about quality.

It's really good to see what kinds of things they care about (e.g. do they look into low-level performance, or more into things like variable naming and method length), how deep their knowledge of the language is (e.g. do they recognize non-idiomatic code, and suggest more modern approaches), if they are more of a high-level thinker or more detail-oriented etc. And of course, it nicely weeds out the (surprisingly high) number of people who cannot really program, without relying on any memorization of keywords. Plus, it's pretty realistic - nobody ever writes code on a whiteboard, but doing code reviews of code somebody else wrote is something that happens all the time.

Most candidates find that task quite fun - and with really good candidates I quite frequently learn something new myself.

I was planning to do a blog post about why and how I do that review - let me know if that would be of interest to you.

<comment><USER21> I would love to be asked to do a code review during the interview process. What a great idea.

I can imagine that another good thing about it is that it takes enough focus and is a familiar enough task that even if I'm in nervous-applicant mode, it will kick me over into acting like I'm already working there.

</comment></comment><comment><USER22> When interviewing someone for a more senior position, I would always ask, "What was your worst [work-related] mistake?" If they couldn't come up with anything, they were either lying or they just coasted through their previous jobs. If their answer was mostly about how it was really someone else's fault, then I'd consider them lacking in the kind of attitude I consider important in a co-worker.

<comment><USER23> I wonder if it's okay for an interviewee to ask something like "What's the worst thing about this company?"

</comment></comment><comment><USER24> On the applicant side, one of the more interesting questions I've been asked (as a product manager) was something to the effect of:

"What is something you believe about product management that differs from conventional wisdom (or what the majority of other product managers believe?)"

I thought it was a good question, because it gives the chance for the candidate to talk about how they think, and it gives them a license to speak a little more honestly than they ordinarily would say in a normal interview. It shows you how much thought the person has given to their profession and how they approach their job.

If you were asking this during hiring, I think it should be done with care on your end, because I could see it easily being misinterpreted by the wrong team/interviewer.

For example, if someone came in and said something like "Compared to others, I think A/B testing is a waste of time", it would behoove you to dive in a little bit more to understand why they think that. It shouldn't be disqualifying if you're a team that does a lot of A/B testing.

</comment><comment><USER25> For me there are two critical questions I ask of a candidate.

1\. I tell them the story about a massive screw up in my career (its funny) about how I thought I was getting fired about being frank about it... etc. I then ask "do you have a story about a major screw up in your career. The answer should say a lot. Dealing with crisis, dealing with mistakes, can you laugh about traumatic things (a great coping mechanism as a programer). I'm looking for insight into you in a professional setting. There have been occasions that this one question takes up the BULK of my allotted time and has on occasion gone over.

2\. Can you read and talk about a piece of code GIVEN to you. The bulk of the battle for most devs is READING existing code and trying to figure out where to fit fixes in, or how to integrate what they are doing into a larger, standing system. The provided sample should have errors, room for improvement and plenty of ambiguity where the reader has to make assumptions or ask questions.

</comment><comment><USER20> Generally, asking opinions rather than specific technical answers.

Asking "Do you have experience with technology X" is useless - everybody knows that "yes" is the expected answer.

Asking specific technical questions is random - they might or might not have come across that particular problem. Also, in practice the answer would simply be looked up, and you don't want to hire for memorization.

Instead, ask things like"How did you find working with <technology X>? Can you compare it to <common alternative>, or <similar tech also listed on their resume>?". Or maybe "what worked really well with <technology X>? What pitfalls did you fall into? Anything for which you would, or would not, recommed it?"

This kind of info is hard to fake, gives you good insight into their thought process and priorities, or just gets people talking about their projects more easily than a generic "tell me about your work on project y".

</comment><comment><USER26> More important than trying to find a question of adamantine perfection and blinding luster is the knowledge that regardless of how many hours you have to interview a candidate, your opinion will still be partial, influenced by biases and to some degree wrong.

<comment><USER26> More on topic, interviewee side: Describe me a typical day here.

Expected answer contains: Overall process, roles distribution (who does what), project management style, issues triage, etc...

</comment></comment><comment><USER27> When interviewing someone, "What will your next job be after this one and how can we help you get there?"

My follow-up is usually something like, "Explain that job title/position to me. What does that person do? What skills do they have?"

</comment><comment><USER28> When they ask "Do you live with your family? What jobs your family members have? What are your hobbies? Where you were born? Are you married? How old are you?" then I know that I don't want to work there.

<comment><USER29> not sure if you live/work in the United States, but the majority of those questions are illegal to ask.

</comment></comment><comment><USER30> I can answer on the hiring side when it comes to programming jobs.

In a 100% honest world, you wouldn't even need to interview for technical positions; you could look at the person's resume and tell instantly whether or not they are capable of doing the job. But people lie a lot and over- embellish. So best questions to ask are about the items listed on their resume, because you find out who's telling the truth and who's not.

</comment><comment><USER31> From the applicant side: Why are you hiring for this role? Is it a new position, or did someone leave it?

<comment><USER6> Yes, always my number one applicant question.

I even had one interview where that question basically lead to the interviewer explaining just how bad it was, and how unlikely it was that I actually wanted the job (and I had no reason to believe that was a trick or bluff). I certainly left feeling like I dodged a bullet.

</comment></comment><comment><USER32> _Let 's use our time together well. I know you've read the position summary. Met with HR and members of our team here. What questions do you have for me? _

Behind the question-- I'm probing for curiosity and intellection. Also, what's important and top of mind to them.

</comment><comment><USER33> I like to ask about a project, could even be something from university days. I ask them to explain how they approached the problem, what were the challenges, how did they overcome them, and what was the final result of the project.

</comment><comment><USER34> Applicant side (and software focused), asking interviewers how new functionality is defined, developed, and deployed gives a lot of insight to how the team works within the organization.

</comment><comment><USER35> 1) Tell me a little bit about yourself. 2) Tell me about an interesting challenge you had in your current position and how you solved it.

</comment><comment><USER36> "Tell me about the last time you failed"

It usually reveals character on how a person deals with tough situations.</comment>


DevOps Newsletters - <AUTHOR> https://devopsnewsletters.com/ <comment><USER2> This is nice, but what I'd really like is a website that is the following:

* Long-form curated "DevOps" stories; a mix of news and editorials

* Monthly update frequency

* Presented in a form that is easily scanned; headlines and a paragraph or two on the front page, with clickthrough to the full article

...basically, a DevOps newspaper, but curated carefully and produced slowly.

<comment><USER3> Mine updates more often than monthly but otherwise sounds like a good fit? www.corey.tech

<comment><USER4> > Moto

> Through automation, anything is possible.

Did you mean 'motto'? I like what you've published so far, I might mention on articles you surface like "SCP is insecure and slow"[0] that it was written by a company with a competing product to sell you, in this case Gravitational.

[0] [https://gravitational.com/blog/scp-familiar-simple- insecure-...](https://gravitational.com/blog/scp-familiar-simple-insecure- slow/)

</comment></comment></comment><comment><USER5> This is pretty neat. Newsletter discovery is one of the biggest challenges right now. So many people are getting bogged down with crappy newsletter because they can't find the no-name authors that are generating top shelf content.

Would be cool if there is a review/ranking mechanism to help the best boil to the top.

<comment><USER6> This is one of many things I miss about RSS: there were "planets" or other aggregations of individual RSS feeds. So you could get curated content from a host of authors, and if you didn't like the curation you could grab the OPML and customize it.

Newsletters are fine, but they feel like a massive step backward both functionally and from a privacy perspective.

<comment><USER5> Totally agree about RSS. I think the best thing about email is that authors get to build their own connection to the audience. Either way, there are options to make this happen if you want it: [https://feedbin.com/blog/2016/02/03/subscribe-to-email- newsl...](https://feedbin.com/blog/2016/02/03/subscribe-to-email-newsletters- in-feedbin/)

</comment></comment></comment><comment><USER7> Adjacent to devops/SRE, I've been actively looking for newsletters (or communities) related to Distributed Systems. I'd be interested to hear if anyone has any recommendations.

</comment><comment><USER8> If you only had bandwidth to follow 1 devops newsletter which one would it be?

<comment><USER9> Depends on your interest area. I've really liked Cron.weekly, but I haven't tried most of these anyway.</comment></comment>


Turkey coup arrests hit 6,000 as Erdogan roots out 'virus' - <AUTHOR> http://www.bbc.com/news/world-europe-36818401?r=1 <comment><USER2> Yeah, the virus of any kind of opposition to Erdogan's permanent rule.</comment>


Icono – Pure CSS icons with only one element - <AUTHOR> http://saeedalipoor.github.io/icono/ <comment><USER2> It might be time for me to stop worrying about IE8 and embrace `transform`-dependent icons.

I regularly create one-off semantic icons _as long as they don 't rely on `transform`_. That limits it to ones based on a character glyph - (i), (?), (x), etc - strictly orthogonal blocks - (+), (-), etc. - or CSS triangles - mostly arrows (which don't always render great anywho).

I'm always too concerned about the fallback in browsers without `transform`. But really, that's illogical - it's just IE <= 8, and generally don't need to worry about that support anyways. I guess my hangup is that the _meaning_ of the icon gets garbled when it isn't displayed correctly in older browsers, and that seems like it crosses a line. (Thought about the "semantics" of an icon quickly feels like Philosophy 101 and probably means its time to get back to work!)

As others have pointed out, I wouldn't use the pixel-based positioning/widths as this does, but `em`s, `rem`s or `percent`s. Relying on `tranform: scale(x)` would complicate layout flows - for one thing you'd always need to compensate for the scale with `margin`, `padding`, or other pixel-budging.

</comment><comment><USER3> That's really smart - However, it seems impossible to use multiple sizes in a single document, which make it impractical over other alternatives such as Ionicons, Icomoon or FontAwesome.

Still a nice showcase, congrats!

<comment><USER4> > it seems impossible to use multiple sizes in a single document

How so? It's possible in most cases to stick an extra class on the icon, say `.2x` and add a rule to your css such as —

        [class*="2x"] {
           transform: scale(2)
        }

<comment><USER5> Perfectly viable technique, though if they are written in SASS/LESS/whatever, the author could refactor the icons to mixins with a parameter that sets the scale, so the values themselves are "true".

<comment><USER6> The author could refactor them to use ems or percents instead of pixels, that way they would automatically change size depending on their parent.

</comment></comment></comment></comment><comment><USER6> Impressive.

While I appreciate the effort and the fact that is is more of an experiment than a production-ready package, it does seem like an odd choice to go with fixed-size pixels instead of something relative, like ems or percentages.

Regardless, well done. Don't let my typical-to-HN negative tone take away from the accomplishment of this.

</comment><comment><USER4> These are awesome. Reminds me of the set Nicholas Gallagher created a few years ago. [http://nicolasgallagher.com/pure-css-gui- icons/demo/](http://nicolasgallagher.com/pure-css-gui-icons/demo/)

</comment><comment><USER7> Very impressive. Slow as hell on my computer though (3 GHz Core2Duo, Chrome 39, OS X 10.9), to the point where it doesn't seem realistically usable…

<comment><USER8> Same impression, and I'm on a Macbook Book Pro Retina.

It's really, really slow on the retina display. A bit better on my second, Full HD monitor, but still not really responsive.

</comment></comment><comment><USER9> An incredible achievement. How long did this take to make?

</comment><comment><USER10> Drawing with multiple box-shadow's, nice (performant??)

</comment><comment><USER11> could someone explain what's going on here? i looked through the page and some of the code on github and am no wiser.

</comment><comment><USER12> Awesome. Please keep adding more icons.

</comment><comment><USER13> 6 Apple products in these icons...

Was Apple a sponsor?

</comment><comment><USER14> Absolutely beautiful!</comment>


Superbowl QB Tom Brady Admits To Watching Sports on Illegal Websites. - <AUTHOR> http://connecticut.cbslocal.com/2012/02/03/brady-i-watched-super-bowl-last-year-on-illegal-website/

<comment><USER2> Artificial scarcity leads to piracy. Shocking. Why can't they make these games legitimately available online for a fee? During NCAAF season, there are too many teams and too many games to show on TV, but disappointingly, most of them weren't available online anywhere except illegally. I don't buy the existing arguments of licensing fees and advertising. Some revenue is better than no income (piracy).</comment>


Snowden Interview with Jacob Applebaum - <AUTHOR> http://cryptome.org/2013/07/snowden-spiegel-13-0707-en.htm <comment><USER2> I think Snowden et al made a mistake with the PR, with regard to what they released first.

The "PRISM" stuff, the stuff with specific internet app/service providers, is actually the _least_ troublesome. (And the closest to legal/constitutional, with FISA orders involved and all.)

MUCH more troublesome, but receiving MUCH less media attention (such that I don't even know the special program names, they are not 'prism'):

* They are recording _everything that goes over the internet_ , by tapping in at major backbones, undersea cables, etc.

* They deploy RAT malware to take over and observe targetted person's computer. (Have we been given evidence by Snowden that they do this inside the US and/or to US citizens? I am not certain. Do they get FISA orders/warrants first? I am not sure. Have we gotten info released on the RAT stuff yet? This interview is the first _I 've_ heard of it, in fact.)

Both of these are WAY more alarming, more significant invasions of privacy, less likely to be legal/constitutional, than PRISM. But PRISM's getting all the attention.

I wonder if this was in fact part of NSA/government counter-PR, to make sure PRISM gets the attention and people get burnt out on the story before they get to the REALLY disturbing stuff.

<comment><USER3> I make the same observations, but I actually think that it's a brilliant move by Snowden et. al. The way they are releasing the information so far has been from _less_ to _more_ troublesome. It's hard to say yet, but I would imagine that the first leak is on the lower spectrum of importance. But it was a great starter because it appealed to a larger audience given that it had powerpoint with big name companies on it, rather than the technical details that would be required to demonstrate the two points you mention.

As the leaks have moved on, the information has become progressively more concerning. Anyone who has followed this issue should have at least a vague idea of the caliber of information that could be coming (your post as an example). So, rather than releasing the big ticket items first, and having the rest of the issues make no impact in comparison, they're allowing as much information as possible to have it's greatest individual impact before moving on (not to mention the now well-discussed benefit of authorities lying themselves into corners trying to cover up the smaller issues).

In this way, they're priming the public so that we've spent months digesting the impact, and understanding the issue so that when we get (say) screenshots proving everything going over telecommunications is recorded, the public is prepared to understand and digest that fact quickly, and can move to action quicker--or even at all.

The more I think about it, the more I earnestly believe that this technique is the most effective methodology available to them and may be our one and only shot to stop it (keep in mind that once a subgroup of society reaches enough power and intelligence over the rest, there is literally nothing the rest of humanity could do to overthrow them; we can't dump tea in the ocean and fire guns at them anymore if they have drones _and_ know everything about everyone).

He doesn't have to convince HN readers that this is worth stopping our daily lives for to stand against, he has to convince _the general public._

With that in mind, the best thing _we_ can do right now, is help them to prime the pump. Bring it up to everyone that will listen. Make the electorate informed. Because when the news comes--the one that we will need to act on-- the public needs to be ready to hear it and move on it.

<comment><USER4> > He doesn't have to convince HN readers that this is worth stopping our daily > lives for to stand against, he has to convince the general public.

The opinion of the general public doesn't matter. It's been being effectively managed for years, and that won't change now. The proles will never revolt.

The fact is, these programs existing and being public knowledge to "foreign entities" (Obama's words), pose an existential threat to Google, Apple, Amazon, Microsoft, and any other US-based company that intends to make money handling the private data of those filthy foreigners (whom outnumber US citizens on the internet something like a dozen to one).

Sure, tell everyone who will listen. But you'll find that most people don't give a fuck, and wouldn't know what to do with the information even if they did.

This change, if it comes, will come from industry, as all major internal policy changes in US government have for decades.

<comment><USER3> What you say may be true. But history has shown that people can give a fuck and policy change can come from the people--even recently with ballot initiatives. Corporations didn't overturn Ohio's SB5. Corporations didn't legalize and regulate cannabis in Colorado and Washington. Corporations didn't pass the Dream Act in Maryland. Corporations didn't pass multi-state initiatives to legalize gay marriage. _People did_.

So independent of my opinion, there's demonstronably a non-trivial chance that you're wrong. And from chances like that, movements are born.

<comment><USER4> > Corporations didn't legalize and regulate cannabis in Colorado and > Washington.

You're right: cannabis is still illegal in Colorado and Washington.

</comment></comment></comment></comment></comment><comment><USER5> He has a nice idea about a prospective path of resistance:

"The [telcom] companies should write enforceable clauses into their terms, guaranteeing their clients that they are not being spied on. And they should include technical guarantees. If you could move even a single company to do such a thing, it would improve the security of global communications. And when this appears to not be feasible, you should consider starting one such company yourself."

Google and Facebook don't seem to care, but the people here can create the kinds of companies that do. Let the PRISM collaborators starve of a talent storage.

<comment><USER6> Yes, this is what we should talk about.

How do we create, maintain and support companies that guarantee our privacy? What do we do when those companies and its employees receive threats, blackmails and various attacks by the feds? When they become infiltrated? When they buy them up like Skype and close its security down?

Facebook, Oracle, Google all seemed to crap their pants when PRISM came out, can we increase the heat on them to stop what theyre doing?

What methods do we have? What can we, the good hackers non-NSA-employed hackers, do?

We have various encryption technologies, mega made some fine client-side encryption kind of easy to use, what else?

Whatever we build will not be a perfect solution, it will require agreements and legal frameworks and support from a major group of people. Isnt this what GNU is about, the FSF and freedom box project?

EDIT: Its kind of tiresome that HN must always have a critical comment at the top, no matter the issue, someone always tries to tear any story up to pieces. Id like to remind you people of this awesome quote;

"" __It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better __.

The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat. ""

</comment></comment><comment><USER7> More of this Hollywood movie plot version of network security:

> The analyst can then decide what he wants to do - the computer of the target > person does not belong to them anymore, it then more or less belongs to the > U.S. government.

This is kind of like when he said:

> You are not even aware of what is possible. The extent of their capabilities > is horrifying. We can plant bugs in machines. Once you go on the network, I > can identify your machine.

Software types reading this stuff know that this is not how computer networks generally work. Maybe it is a dumbed-down reference to some sort of government malware. If so I would like to see more technical precision from Snowden before I can say that he has any chance of knowing what he's talking about.

<comment><USER8> >Maybe it is a dumbed-down reference to some sort of government malware.

That's what I took it as. With government-level resources you can pretty easily throw a team at all the common web browsers and find exploitable 0-days and then MITM the next connection the target makes to any website to exploit it, and then find a local privilege escalation vulnerability if necessary. Once you have root (or equivalent) on any given machine you pretty much own it.

That sort of thing isn't necessarily in reach of your typical J. Random Hacker against a patched machine (may not have access to 0-day, can't easily MITM target's internet connection, etc.) but it's really not a stretch to imagine that the NSA can do it if they have no regard for the law.

<comment><USER7> > not a stretch to imagine that the NSA can do it

In what kind of numbers, though? I mean, from what I remember reading Stuxnet had this kind of crazy stuff in it (multiple zero-days if I recall), but also a clear target in Iran. Would they have the resources to do this to everybody? Is there any evidence of that? Certainly if there were it would be really fascinating to know more, but all we have is this movie plot scenario.

With what Snowden says it makes it sound like they do it to anyone out of sheer boredom. I think to understand the scope of this claim we need more details.

<comment><USER2> I didn't think it sounded like they did it 'out of sheer boredom', they do it to people they've targetted for investigation. In what numbers, whether targetting computers inside the US or not, etc. -- we do not know, Snowden has not yet released documents so far as I know.

The software to take over someone's computer like that exists, and can be used by script kiddies that don't even know what they're doing, to take over and 'own' many people's computers, complete control. Presumably the NSA knows about even more exploits than the easily available hacker-distributed software does.

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

[http://arstechnica.com/tech-policy/2013/03/rat-breeders- meet...](http://arstechnica.com/tech-policy/2013/03/rat-breeders-meet-the-men- who-spy-on-women-through-their-webcams/)

</comment></comment></comment></comment><comment><USER9> Some of this seems odd to me. Snowden appears very intelligent and credible, but how would he have been in a position to know who wrote Stuxnet?

<comment><USER10> How _wouldn 't_ he?

That's like asking how he would be in a position to get Top Secret documents.

<comment><USER9> I'll confess that I've followed this subject only partially, so I may be missing facts about what he had access to. Did he have complete access to everything at the NSA?

<comment><USER11> At his now famous video interview, he said that he had access to most things. He also said that he could even shut down most of NSA's monitoring system, if he wanted. Which strikes me as odd, that just a single analyst could have such power, but what do I know about spying agencies?

<comment><USER12> Here are a few things we know about the U.S. intelligence infrastructure:

* They couldn't find WMD in Iraq -- because they weren't there.

* They couldn't find bin Laden for 10 years.

* They thought Snowden was on a plane with Evo Morales -- and were wrong.

So, given these observations, I wouldn't be too surprised that one guy was able to get access. Like all big organizations, I'm sure the NSA & CIA have some amazing small groups capable to Bond-like performance.

But as a whole, they are probably a nightmare of incompetence. Therein lies the reason I'm not in favor of giving them Carte Blanche for domestic surveillance: they _will_ fuck up on an epic scale with probability=1. It is only a matter of time until their infrastructure becomes a tool for some oppressive politician or bureaucrat. HUAAC 2.0.

<comment><USER11> I'm not a US citizen so I am not the one to judge its efficiency. Nevertheless I agree with the general idea of what you say. However it is highly peculiar if he legitimately had so much power. It doesn't matter if he is an uber- hacker or not, as some others point out. No government or agency would structure its hierarchy such that a simple cog in the machine could bring the whole thing tumbling down. Unless of course the high ranking officials are like the regular PHB's we know - clueless about technology issues.

<comment><USER12> > Unless of course the high ranking officials are like the regular PHB's we > know - clueless about technology issues.

Bingo.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> _Question: What happens if the NSA has a user in its sights?

Snowden: The target person is completely monitored. An analyst will get a daily report about what has changed in the computer system of the targeted person. There will also be... packages with certain data which the automatic analysis systems have not understood, and so on. The analyst can then decide what he wants to do - the computer of the target person does not belong to them anymore, it then more or less belongs to the U.S. government._

I wonder if regularly wiping and reinstalling your operating system has any effect on the aforementioned computer compromising by government/criminal elements?

Obviously, an open source OS is a better choice than some closed, proprietary, OS, but I seem to remember some controversy about BSD developers being approached by government agents for the purpose of coding a backdoor into the systems which they were working on.

Just how secure is my unix-like OS?

</comment><comment><USER14> This information is illuminating, albeit not too surprising. But with all these releases, Snowden's chance of securing whistleblower protection on constitutional grounds is completely shot. There could be a legitimate discussion about tapping US companies, or constitutionality of the information dragnet on Americans [1]. He could have had a fighting chance if the leak were confined to just those.

That's not going to happen anymore, because now everybody is distracted by sensational asides: we're hacking everybody, we're behind Stuxnet, we're in cahoots with the Europeans, etc etc etc. Snowden is allowing the spotlight to remain fixed on him; this whole thing is perfect fodder for the media -- an individual on the run, Hollywood-style hacking plots, and predictable Internet outrage. All while the constitutionality issue gets swept under the rug (see Congress). What's more, Snowden will probably lose the battle of public (and legal) opinion because these foreign operations are arguably justifiable [2], and the leaks weaken the US bargaining position with other countries.

I'm not sure what the goal of this leak is anymore. Snowden is completely fucking himself over while diverting public attention from issues that have the best odds of an immediate fix -- the surveillance of Americans. This whole thing is a bitter popcorn-fest.

William Binney said this during the USA Today interview [3] a few weeks ago:

I would tell him to steer away from anything that isn't a public service — like talking about the ability of the U.S. government to hack into other countries or other people is not a public service. So that's kind of compromising capabilities and sources and methods, basically. That's getting away from the public service that he did initially. And those would be the acts that people would charge him with as clearly treason.

[1] Sorry, non-Americans: the Constitution doesn't cover you guys. But we need to protect ourselves from our own laws first before we can help the rest of the world.

[2] If you think the US is the only one doing this, or if the world should just hold hands and sing Kumbaya: get a clue.

[3] [http://www.usatoday.com/story/news/politics/2013/06/16/snowd...](http://www.usatoday.com/story/news/politics/2013/06/16/snowden- whistleblower-nsa-officials-roundtable/2428809/)

<comment><USER15> I hate the "everyone is doing it" "get a clue" excuses. The U.S. government hacking into Hong Kong computers is wrong and disclosing it is a public service to the people of Hong Kong. If we don't demand moral just governments we will never get them.

<comment><USER14> >If we don't demand moral just governments we will never get them.

OK, here's a clue: truly moral governance is only sustainable if all governments follow the same moral behaviors. Unfortunately, that's not a stable equilibrium, because the world is not Kantian -- thinking otherwise is naive.

<comment><USER15> The US used to be a leader, forming the United Nations, ratifying the Geneva Conventions, promoting human rights, etc. Nowadays we have squandered our moral leadership by refusing to sign things like the ban against land mines or the international criminal court; as well as by leading immoral wars and torturing prisoners. As a superpower we have the power to make the world better for everyone but the empire has turned selfish, short-sighted and evil instead.

<comment><USER14> Rose-colored glasses, maybe? How about slavery, segregation, the treatment of Native Americans, Japanese internment, McCarthyism, etc. Find a country with a history of unblemished human rights -- it doesn't exist. Anyway this thread is getting off topic, I'll stop here.

</comment></comment></comment></comment></comment><comment><USER16> I'm still conflicted over these Snowden revelations. On the one hand, it is (of course) an egregious (and probably illegal) breach of privacy.

On the other hand, I think it's incredibly naive to believe that, once a technology exists, it won't be aggressively used to further the interests of nation-states and multinational corporations alike.

What makes you think for a second that China and Russia aren't using (or at least in the process of building) the same sorts of systems?

</comment><comment><USER17> If the NSA saves all my stuff, then why do I need my own backups? Forget Dropbox, just give me access to my stuff at NSA. This is a service I'm already paying for.

</comment><comment><USER18> He should start signing all his messages</comment>


Ask HN: Recommendations: accountant familiar with US ex-pat taxes in France? - <AUTHOR>

I am a US citizen/programmer working for a US-based startup company. I bill for my work via my US-based LLC. I'm married to a French woman and live in France.  Does anyone know a good accountant that can help with my taxes? Thanks! <comment><USER2> Give Vincenzo Villamena a try? 24% of his practice is expat taxes:

[http://turbotaxcpaselect.intuit.com/accountant/vincenzo- vill...](http://turbotaxcpaselect.intuit.com/accountant/vincenzo-villamena- cpa/)</comment>


Serial over webaudio - <AUTHOR> http://substack.net/serial_over_webaudio <comment><USER2> Technically this is DSL over webaudio as it's transmitting signal levels and then interpreting them directly. If you wanted to encode the audio in the serial you would use a tonal system like frequency shift keying or phase shift keying.

So if you want to take this experiment one step further, consider doing FSK or PSK audio and add a non-return-to-zero (or NRZ) serial protocol. With NRZ the clock is actually embedded in the prototcol so with a software implementation of a phase locked loop you can recover the clock and data signal and reliably transmit from two different clock domains. (the article depends on you being able to hit one of the known baudrates accurately enough for the serial code to recognize it.)

Then for extra credit you can embed multiple frequencies in your tones, so that instead of sending ones and zeros you're actually sending 2 or 4 bit equivalent bauds. Then you can have fun doing a quick FFT on the receiving end and clock recovery to pull out multiple bits and the clock.

FWIW, the path goes very very very far down the rabbit hole.

<comment><USER3> NRZ isn't necessarily self clocking. Encodings like Manchester can be, though.

<comment><USER2> And learning the difference between clock recovery and self clocking is always fun too right? The cool thing about NRZ is that it was commonly used in Floppies and tape drives so there are lots of circuits to look at and get a feel for how it works.

</comment></comment></comment><comment><USER4> Somewhat related to this, several years ago I have successfully used FSK[0] to transfer data[1][2] from an AVR microcontroller to iPhone through its headphone jack.

[0] - [https://en.wikipedia.org/wiki/Frequency- shift_keying](https://en.wikipedia.org/wiki/Frequency-shift_keying)

[1] - [http://www.creativedistraction.com/demos/sensor-data-to- ipho...](http://www.creativedistraction.com/demos/sensor-data-to-iphone- through-the-headphone-jack-using-arduino/)

[2] - [https://github.com/ezefranca/FSK-Arduino- iOS](https://github.com/ezefranca/FSK-Arduino-iOS)

</comment><comment><USER5> I'd like to see one like this that works through the free air -- it so much more compatible with the spirit of the age where people are even resentful of putting a power cord into a laptop or phone.

The old 300 baud did, and at that data rate you can transmit a 19 character URL in 0.5s or for that matter a 128-bit UUID/GUID.

<comment><USER6> There have been a couple accessories, like pressure sensitive pens, that transmit to smart phones via infrasound via air. They aren't very reliable.

</comment></comment><comment><USER7> This is the same principle as DEX. Just with a speaker / mic setup instead of some sort of rs232 cable with 1/4" jack. What would be interesting is if you could use a sonic range below what humans can hear and still be effective with an open speaker / mic setup? Lights, hvac type controls would be very doable.

<comment><USER8> Not really. The human ear can perceive down to 20Hz, and below that, you can't perceive it actively, but the subconscious starts playing weird tricks [1]. Plus, you'd be limited to X Hz/2 bits per second. Your better bet is getting something to drive an occasional chirp at 20k hz or so, which would be imperceptible to most people.

[1] [http://skeptophilia.blogspot.com/2011/02/ghost-in- machine.ht...](http://skeptophilia.blogspot.com/2011/02/ghost-in-machine.html)

</comment></comment><comment><USER9> This is really cool and something I've wondered about doing too. Has anyone gotten an entire GCC toolchain to 'compile' to JS using a tool like emscripten? It would be pretty neat to be able to compile AVR firmware and send it to an Arduino's bootloader right from the browser.

<comment><USER10> It also depends what "browser" means to you. If "Chrome", then there's an entire UNIX toolchain you can run inside Chrome:

[https://chrome.google.com/webstore/detail/nacl- development-e...](https://chrome.google.com/webstore/detail/nacl-development- environm/aljpgkjeipgnmdpikaajmnepbcfkglfa?hl=en-US)

</comment></comment><comment><USER11> There's been info on doing this with Espruino for about a year now: [http://www.espruino.com/Headphone](http://www.espruino.com/Headphone). There's even an online-only version of the Web IDE that does two-way communications: [http://espruino.github.io/EspruinoWebIDE](http://espruino.github.io/EspruinoWebIDE)

With 3.3v logic, it turns out you don't even need the transistor - just a capacitor and bias resistors.

</comment><comment><USER12> If one could fit the device side into the bootloader for an AVR, it would make for a nice cross-plattform way of updating devices.

<comment><USER8> You wouldn't need any changes to the AVR side to do that, because the bootloader doesn't need anything special other than a reboot to get it into programming mode. However, if you've got an android device, the easiest, most reliable, way to program it would be to get a $3 usb otg dongle and just plugging your arduino into that. There are tons of free apps that will burn a new program on from there.

<comment><USER12> > _You wouldn 't need any changes to the AVR side to do that, because the > bootloader doesn't need anything special other than a reboot to get it into > programming mode._

Then you AFAIK need an additional chip for the programming. Which e.g. the Arduino has, but you'd not necessarily add to your own design.

> _However, if you 've got an android device, the easiest, most reliable, way > to program it would be to get a $3 usb otg dongle and just plugging your > arduino into that. There are tons of free apps that will burn a new program > on from there._

\+ "there is an android app for that" is exactly the thing you can avoid with such a setup, once WebAudio is reliable enough you just can distribute a link to your users and they don't need any third-party software, you don't need to maintain documentation for it, ... Having seen quite a few support discussions for DIY projects that distributed pre-programmed chips this would be useful in some cases.

<comment><USER8> No additional chip needed. With the USB Serial chip, the only special thing programming does is it's got one of the unused lines on the usb serial chip, RTS IIRC, hooked up to drive the reset pin low. The bootloader that the Arduino uses listens on the serial port for a magic number on bootup to enter into programming mode, no special chip needed.

With the webaudio setup, I guess that's fair enough. For being absolutely foolproof being able to say to go to a specific webpage and then press play on tape is something we've been doing for a while. I personally prefer USB/Serial programming, but that's possibly just me having dealt with too many hand-me- down radios with scratchy headphone jacks over the years.

</comment></comment></comment></comment><comment><USER13> As cool as this is, it does seem to take the protocols-within-protocols trend to a farcical extreme. The stack for this is:

Upgraded Phone System (As opposed to POTS.)

Internet Protocol

TCP/BSDSockets

WebSockets

WebAudio

A final layer so that you can emulate a POTS over WebAudio.

That's not really any fault of the authors, I'm just curious how many layers we're going to stack up before we start unwinding the coil for performance reasons.

<comment><AUTHOR> Once the javascript is loaded into the phone via web browser, my understanding is that the only steps left is direct connection to audio jack from the web page that is loaded into the browser.

Certainly there are implications that this data (once generated by the browser) could be retransmitted over the web to some remote hardware, but it's not critical to get this to work.

<comment><USER13> I hadn't considered that. Thanks for sharing. :)

</comment></comment></comment><comment><USER14> was the video recorded with a potato?

<comment><USER15> Yes, it was recorded with a potato.</comment></comment>


Show HN: WeeShare - organize the things you share with others - <AUTHOR> http://weeshare.com

<comment><USER2> In England wee means urine, so possibly not the best name choice...

<comment><AUTHOR> yeah. we're aware of that :( but it also means "tiny" in some parts of england, isn't it?

<comment><USER2> In Scotland and some of Ireland, not really in England though...

<comment><AUTHOR> ok, got it ;) so, let's hope people like the idea - even if they don't like the name..

</comment></comment></comment></comment><comment><USER3> The app feels very unnatural on Android. Worst part is probably that the back button doesn't work.

<comment><AUTHOR> Thanks for your feedback! When porting the app from iOS to Android we realized that we will have to dig deep into the codebase to implement "real" back button behaviour. So this is our current "workaround" while we are digging. It's good to know this detail did not get unnoticed :)

</comment></comment><comment><USER4> Unfortunate name. Also, the link does not work.</comment>


Constructors in Ceylon - <AUTHOR> http://ceylon-lang.org/blog/2015/06/21/constructors/

<comment><USER2> Class hierarchies seem to me more and more like a shadow language[1]. I first realised this in Python, where:

\- Classes can be called like functions

\- Calling a class runs a function (the constructor, called __init__)

\- The constructor is implicitly passed a fresh object as an argument (usually called "self"; this is like an implicit use of "new")

\- The constructor implicitly returns an initialised object (a mutated "self")

In a language with first-class functions, it's also pretty arbitrary to define "attributes" inside the constructor and "methods" outside, since methods are functions which are values (modulo the implicit binding stuff).

Hence classes can be completely replaced by their constructors; or in other words, classes are a design pattern when writing functions. This is a realisation that's become mainstream due to Javascript, and that's the first thing I thought of when I saw the Ceylon code in this article.

The details at the end, about execution order, partial constructors, inheritance, etc. all screamed "shadow language" to me: if you've already got functions(/methods), can't you just re-use them instead of defining a new, semantically distinct category?

[1] [http://gbracha.blogspot.co.uk/2014/09/a-domain-of- shadows.ht...](http://gbracha.blogspot.co.uk/2014/09/a-domain-of-shadows.html)

<comment><AUTHOR> Sure. A class is certainly a kind of function: one which returns a closure over its own shared declarations. That's the way we conceptualize the notion of a class in Ceylon, and it's why the syntax for a class looks so much like the syntax for a function, and why there's no essential difference between a function defined inside a class (a "method") and a function declared toplevel, or inside another function, or whatever. Ditto for a value defined inside a class (an "attribute") and a value declared toplevel or inside another function. It's the same thing, as far as Ceylon is concerned.

One of the design goals in Ceylon was to treat all these things uniformly, so that a class is, as much as possible, just like any other function.

However, there is a big and surprisingly important difference between a class and a function that returns a record: with a class you get open recursion between members of the class. You don't get that with a function that assigns members to a record type - or, at least, if you do build the machinery you need to get that, you have essentially reinvented classes with a worse syntax.

Open recursion seems like a small thing. But in fact, in practice, if you try taking it away from me, I will have to do some convoluted and nasty things to emulate it. Sure, there are plenty of simple classes where you can do without it, but there are surprisingly many classes where it's necessary, or at least very useful.

<comment><USER2> > One of the design goals in Ceylon was to treat all these things uniformly, > so that a class is, as much as possible, just like any other function.

That's reassuring to know, thanks :)

> However, there is a big and surprisingly important difference between a > class and a function that returns a record: with a class you get open > recursion between members of the class.

Record members are certainly bound too early to get open recursion, which is why I claimed that classes == functions rather than objects == records ;)

In my example of Python, "objects" are abstract: created implicitly, passed into the constructor, then (implicitly) returned.

> You don't get that with a function that assigns members to a record type - > or, at least, if you do build the machinery you need to get that, you have > essentially reinvented classes with a worse syntax.

I think there are a few distinctions to be made here:

\- Records vs. objects; which I've addressed above.

\- Syntax vs. semantics: I'm fine with special-purpose syntax, I just don't like arbitrary _semantic_ distinctions. It sounds like Ceylon is better than most in this regard :)

\- Built-in vs. library code: reinventing classes using functions is only a bad idea if they're already built into the language in some other way. If there's no built-in alternative, then doing this in a library is legitimate. Likewise, using the language's existing support for functions to build-in a class implementation is also legitimate, and it sounds like that's what Ceylon's done :)

<comment><AUTHOR> Yes, I think that's certainly what we've tried to achieve. It sounds like you and I have the same mental model, at least.

</comment></comment></comment></comment><comment><USER3> _As alluded above, the biggest problem with the constructor syntax in languages that borrow from C++ is that in the common case of a class with just one constructor, the parameters of that constructor aren 't available in the body of the class, leading to awful code like the following:_

        class Point {
            public float x;
            public float y;
            public Point(float x, float y) {
                this.x = x;
                this.y = y;
            }
            public String toString() {
                return "(" + x + ", " + y + ")";
            }
        }

_This hurts. Fortunately, we 've already made that pain go away in Ceylon._

Well that seems like a laudable goal. Let's take a look at the example code, then, to see what the alternative is:

        class Color {

            shared Integer rgba;

            //default constructor
            shared new (Integer rgba) {
                assert (0 <= rgba <= #FFFFFFFF);
                this.rgba = rgba;
            }

            ...

            string => "Color { \
                       alpha=``hex(alpha)``, \
                       red=``hex(red)``, \
                       green=``hex(green)``, \
                       blue=``hex(blue)`` }";

        }

Maybe it's just me but it looks like the pain is still there?

<comment><AUTHOR> No, the alternative is this:

        class Point(shared Float x, shared Float y) {
            string => "(``x``, ``y``)";
        }

I think I made that really clear in the post. In the very example I started with, but perhaps I need to further clarify it somehow?

UPDATE: FTR, I added the above example to my post, in the hope that it clarifies the point. Thanks for the feedback.

<comment><USER4> Why do all of your examples after the first violate the advantage you reference in the first example?

<comment><AUTHOR> Because the post is dealing with the new functionality we've added in Ceylon 1.2, which provides support for Java-style (i.e. multiple) constructors, not the functionality that has always existed in Ceylon, where parameters of the class are listed at the top of the class declaration.

Does that make sense now?

</comment></comment></comment></comment><comment><USER5> I think the name of the constructor itself may have merit eventually, but is rather distracting from the function of the constructor itself.

Much of the rest of the work seems to mirror what Scala did several years ago, and this seems to nearly replicate that. Considering the state of the scala codebase, this again might have merit, but they do not even mention it once. As such, I'm going to relegate this to the "branded language that will not survive outside advertised setting" category because it seems to prioritize positive comparisons over engineering use.

<comment><AUTHOR> So it seems to me that if you need multiple constructors then it's worth being able to give them names, in order to identify their purpose.

I have never looked at how Scala handles constructors, beyond being dimly aware that Scala has them, so I don't see why I should be expected to mention Scala, when it had no influence at all on the design of this functionality. To be clear, I find it highly unlikely that Scala constructors are very similar to what I describe in this post, except perhaps on the most superficial level. I will take a look at Scala later today to confirm that, just in case I'm wrong.

I'm not sure what argument is being made in the rest of your comment. Perhaps you could elaborate on what are your concerns?

<comment><USER6> Given you're a language designer, I'm really surprised you have not looked at Scala enough to know how it handles constructors.

Scala is also your biggest competitor (IMO) on the JVM, which makes it even more odd that you seem to not have looked at it deeply. (I'd understand not reading the latest DOT type calculus/whatever paper, but this is basic syntax/usage.)

Totally your call of course, but stealing the best ideas, in any endeavor, is usually the best way to go. Even if you decide to not steal Scala's constructors, that's fine, it's awesome if you have something better, but to have not even evaluated them...

Just surprised.

<comment><AUTHOR> I guess I don't understand what you're saying here. I was already aware of the concept of a constructor, from years of Java. And I already had a set of really extremely tight design constraints in terms of the existing language syntax and semantics, including a set of principles about how the block structure of the language works, rules about definite initialization, the fact we don't have overloading, etc, etc, which are quite specific to _Ceylon_, and aren't found in other similar languages. These constraints were pretty much sufficient to fully determine the resulting design.

Furthermore, there was an issue open in Ceylon's issue tracker for almost 2 years, following on from discussions and proposals in two other issues that go back even further, and these issues were read and commented on by many of our community members, including some who have some Scala experience.

Now, if you could point to some cool idea in Scala that we obviously aren't aware of, and which could have improved the design of constructors in Ceylon, then I guess you would have a point. But it doesn't seem like you do have anything concrete, just a concern about _process_ rather than _outcome_.

And fundamentally I'm a guy who cares about outcome. And I think the outcome is rather excellent.

<comment><USER7> I think what they're saying is that it's good to give credit where credit is due.

<comment><AUTHOR> Well since zero credit is due to Scala (read my post below where I utterly demolish the claim that Ceylon constructors are similar to Scala) then doesn't that seem like an utterly rude and obnoxious demand to you?

<comment><USER7> If that were the case, yes, but it isn't. There are obviously some differences but there are clearly also uncanny similarities.

<comment><AUTHOR> Name the "uncanny" similarities please. If you can't, I might think you're trolling.

To be fair, it's nice to see you acknowledge that there are "obviously some differences". Some tiny little subtle differences like how in Ceylon, I can actually have two constructors that both initialize an immutable field. Like how constructor resolution is by (unambiguous) name and not by (potentially ambiguous) overloaded parameter types. Like how different constructors can delegate to distinct constructors of the superclass. 'Cos, y'know, other than that, it's really just a copy of Scala.

Absurd.

<comment><USER7> I assumed duaneb was referring to the whole idea of giving parameters to the class definition.

<comment><AUTHOR> Wait, you're not talking about constructors here. You're talking about the idea of giving a class a parameter list? A feature that I independently came up with about 7 years ago, before I - or most other people - had even heard of Scala? And then implemented 5 years ago as one of like the very earliest features in the Ceylon type checker? And which is not actually the topic of the linked blog post? You're calling me out for copying _that_?!

Man, seriously, there is such a thing as two people coming up with the same good idea independently. If you can't imagine such a thing happening, I'm at a total loss.

<comment><USER7> Certainly, it happens all the time. Leibniz and Newton invented calculus at the same time. Scala is 12 years old though, and it's rare for a language designer to not be aware of the main competitor in the same space, which is probably why people assumed that you were aware of Scala.

Note that I personally couldn't care less who invented what, I just wrote what I thought duaneb and stephen were getting at to clear up the confusion since you said "I guess I don't understand what you're saying here."

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Now that there is an apparently superior alternative, do you plan to do something to eliminate the existing enum pattern explained at [http://ceylon- lang.org/documentation/1.1/tour/types/#enumera...](http://ceylon- lang.org/documentation/1.1/tour/types/#enumerated_instances) ?

<comment><AUTHOR> No, because that pattern is still strictly more powerful. With enumerated classes I can have cases which are a class rather than just a singleton instance.

</comment></comment><comment><USER9> Ceylon is my favorite language and I can't wait for v1.2 to be out! I just wish it was catching up with JDK release a little faster and generally speed up the release cycle. Spread the word, it definitely needs more love!</comment>


The nothing to hide argument in favor of surveillance - <AUTHOR> https://en.wikipedia.org/wiki/Nothing_to_hide_argument <comment><USER2> People who think that they have nothing to hide should publish their emails and chat logs online. Don't worry, I won't read them and any decent person won't.</comment>