Reported Bitcoin 'founder' Craig Wright's home raided by Australian police - <AUTHOR> http://www.theguardian.com/technology/2015/dec/09/bitcoin-founder-craig-wrights-home-raided-by-australian-police <comment><USER2> From the article:

> Guardian Australia understands the raids are not related to the claims that > Wright may have been involved in the creation of bitcoin, but are related to > an Australian Tax Office investigation.

So the story is that the Australian Tax Office just happened to be running an investigation looking into some facet of Craig Wright's finances. An investigation that apparently revealed some sort of abnormality, resulting in a raid on a property connected to Mr. Wright...

...18 hours after a major technology publication "outed" him as the possible person behind "Satoshi Nakamoto".

Welp, that looks completely coincidental to me. /s

<comment><USER3> If I had an ongoing investigation into someone suspected of tax evasion and suddenly the internet at large revealed his identity, I'd be sure to raid asap - Wright was probably not aware that the tax office was investigating him, but I'm sure that if he is Satoshi and sits on a million BTC, and his identity is revealed, I'd try and GTFO. Which wouldn't be in the tax office's interest.

Not sure if the above makes sense. The two are probably related.

<comment><USER4> I am thinking here is what happened

The guy seeing an opportunity and possibly having some early coins declared himself to tax office as Satoshi, but maybe claimed he lost keys to majority of coins. He then proceeded to have one of his companies claim tax back for R&D of bitcoin. The whole thing probably backfired then.

</comment></comment></comment><comment><USER5> Here is an Amazon comment left by Wright. [https://pbs.twimg.com/media/CVvsxDOVAAANOD-.png:large](https://pbs.twimg.com/media/CVvsxDOVAAANOD-.png:large)

"Silicone" Valley? "Assumed to the centre of everything"?

Color me skeptical that this guy is Satoshi.

(source: [https://twitter.com/kashhill/status/674393417019883520](https://twitter.com/kashhill/status/674393417019883520) )

<comment><USER6> Agreed...

Exhibit A ([https://bitcoin.org/bitcoin.pdf](https://bitcoin.org/bitcoin.pdf))

This paper, and the technology it proposes, are as eloquent and ingenious as they come.

Exhibit B (from one of Wright's blog posts in the Wired exposé) "Well.. e-gold is down the toilet."

The telltale 2 dot ellipsis... Imagining this semi-literate blowhard writing that paper is a real stretch.

<comment><USER7> I think it's most likely that he was just involved in the early stages. If not him then one of his associates wrote the white paper.

</comment></comment></comment><comment><USER8> "I do not want to be your posterboy. I am not found and I do not want to be."

Why oh why can't journalists just respect his wishes!

"People love my secret identity and hate me."

It certainly seems that the Australian police aren't on particularly good terms with him at the moment.

If the Australian government takes control of the Tulip Trust bitcoin stash, the world has to deal with a cryptocurrency being managed by politicians.

Whoever gets them, I hope that the bitcoins remain off the market until at least 2020 as Kleiman wanted.

Which makes me think - could the bitcoins from Kleiman be considered "inherited", and thus subject to inheritance regulations?

Another hypothetical thought: when the original bitcoin creator mined the first bitcoins, they were worthless. They only gain value if someone else projects value onto them. They're not being used. Imagine they're a form of trading derivative (e.g. stock options): the right to trade in future. Are those taxed? Anyhow, it seems very complicated, and confiscating personal computers with a whole host of other files seems extreme.

<comment><USER9> > Why oh why can't journalists just respect his wishes!

Because it's their job not to. Lots of people don't want to be found but it's in the public interest to find them.

I'd argue the same goes for the creator of Bitcoin. It's in the public interest to find this person and see what they stand to gain from Bitcoin's continued use and value, and what they are likely to do with the money. You will respond that it doesn't matter, but it does.

What if Bitcoin came from Iran's secret service and it will be used to fund an enrichment facility?

What if it came from a drug lord?

What if it came from Michael Bay and he's going to make yet another Transformers movie with it?

All of these are in the public interest to find out and make people reconsider their adoption of it.

A decision void of context is necessarily an ignorant decision.

<comment><USER10> What if knives had been invented by a drug lord?

Who cares? What's important is whether knives are useful to us or not. If the inventor is a drug lord, then the problem is that he is a drug lord, not that he invented knives.

If someone invents something useful, then he should be rewarded, independently of whether he then uses the resulting money to save starving children or to buy Doritos all to himself.

If he does something illegal with that money, then we should come after him because he did something illegal, not because he was able to do something illegal (because he had earned a lot of money).

<comment><USER9> You missed my point entirely.

The point is if we know he's a bad person, we can choose not to use Bitcoin as is, and instead use a fork of it where he doesn't profit from it.

Also stop with the myth that Bitcoin was completely invented by one guy. It was based upon ideas from a lot of people prior to Satoshi. If there's a moral obligation to reward him (there is not) then there's a moral obligation to reward all of them as well (there still isn't.)

<comment><USER11> And you've missed the point where lives have been ruined and people could potentially be killed as a result of this nonsense.

<comment><USER9> Lives have not been ruined. In my opinion Newsweek owes Dorian Nakamoto some damages, but that will be decided in the courts. His life is not ruined, though, and nobody else's has been. That's way over-dramatic.

<comment><USER11> I was not talking about Dorian.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Once again, you have a journalist ruining a person's life by claiming they created BitCoin.

Wired better be able to back it up.

<comment><USER13> It's just as shitty whether it's true or false. Either way, they're deliberately exposing someone to unwanted public attention to sell magazines and ad impressions.

<comment><USER14> Everything they publish is for that purpose whether it exposes someone or not. At least this is actual news if it's true and not mindless reprints of known information.

<comment><USER13> > _Everything they publish is for that purpose whether it exposes someone or > not._

Obviously. It's okay to make money off of things that are helpful or at least harmless. Not okay to make money off of hurting innocent people.

> _At least this is actual news if it 's true and not mindless reprints of > known information._

So what? Facts are not inherently virtuous. If I published a report on your intimate personal habits, would you feel better if everything in the report was true?

</comment></comment></comment></comment><comment><USER15> [http://www.businessinsider.com.au/the-australian-who-may- hav...](http://www.businessinsider.com.au/the-australian-who-may-have- invented-bitcoin-claimed-to-have-landed-54m-in-taxpayer-funded- rebates-2015-12)

"Under the scheme, a company which turns over less than $20 million is eligible to apply for a cash rebate of 45 cents for every dollar spent on research and development activity.

According to a press release in May, 2015, DeMorgan Ltd succeeded in its application for the rebate.

That means DeMorgan were able to prove to AusIndustry that it had spent $120 million on R&D activities in the 2014/2015 financial year, all while turning over less than $20 million. A 45 cent rebate on $120 million works out to $54 million."

<comment><USER16> I'm a consultant in the R&D Tax space. The press release relates to an advanced finding, which is an advanced approval of R&D activities. It does not however guarantee approval for the amount of expenditure they would be claiming. A tax refund of that size would naturally attract the attention of the Australian Tax Office(ATO). The press release is also dated before they could submit their tax return to obtain a 14/15 refund. A key problem with the press release is that there is now a $100million cap on how much expenditure they can claim in a financial year, so theoretically their maximum benefit would be $45million.

$120million in software R&D is a very large spend in Australia for one year, Google Australia for example claims about $40-$50million in R&D spend each year. Atlassian and some of the larger banks would claim a similar amount. I have not heard much about DeMorgan before, however if it all checks out they would be one of the most significant powers in the Australian tech space.

<comment><USER17> Fellow Australian here (albeit currently living in Tokyo).

The "We create tax refunds" part of your homepage says that a company can get a tax refund even if there is no sales.

Does this mean that if I establish a company tomorrow, invest $100k of capital, and spent $100k of capital on R&D, then the ATO will give my company $45k?

<comment><USER18> Yes, you have to spend the money though so youll still be down 55K, it doesnt count to things like capital purchases.

<comment><USER19> Depends who owns the company you spend the $100k with.

They'd need to pay 30% tax on their income, leaving a net outlay by the government of $15k (15%) overall.

<comment><USER17> Their income would be less than the $100k. They would have incurred expenses when they provided the services.

I paid $100k, the provider took the $100k and spent $60k. This means they declare $40k income.

The company pays $12k tax.

The Goverment gives $55k to my hypothetical company.

</comment></comment></comment></comment></comment></comment><comment><USER20> I fear gwern has gone off the deep end on this one, situation is getting ridiculous: [https://www.reddit.com/r/Bitcoin/comments/3vzgnd/bitcoins_cr...](https://www.reddit.com/r/Bitcoin/comments/3vzgnd/bitcoins_creator_satoshi_nakamoto_is_probably/cxsa9hs)

<comment><USER21> (EDIT: There are some good points in the ensuing discussion below. I don't know what to think yet, but my comment here was unfair. Sorry, kanzure. And thank you to everyone who responded.)

As far as I can tell, you're bullying gwern. Please stop.

If you have a point, then make it clearly. Leave out speculation about "what would happen if it was a US no-knock raid."

What, precisely, did gwern do? Their replies address your points, from where I'm sitting. What am I missing here?

<comment><USER22> Gwern has a long history of obsessive and misdirected behavior on this subject which is likely to cause harm to others. This particular case is Gwern's N-th accused "satoshi"... and this time the evidence consists mostly of counter evidence.

For example, these pgp signed emails are signed with the key with short ID 5EB7CB21 which is not the well known key, does not exist in old keyserver dumps, and has a pref-hash-algos list of "8 2 9 10 11", which is the list that GNUPG started generating a year (commit e50cac1d848d332c4dbf49d5f705d3cbbf074ba1) after the date on the key. The well known key, which the new key claims to be generated within 24 hours of, has "2 8 3" which was an the prior list of hashes.

<comment><USER23> > This particular case is Gwern's N-th accused "satoshi"

Not with this degree of certainty.

<comment><USER24> What certainty? Here's what they have: possibly backdated keys; edited blog entries; leaked emails. All from same, untrustworthy source. That's not certainty or concrete. It would probably be tossed out of court in the U.S. the second the defense brought up the blog editing.

</comment></comment></comment></comment></comment><comment><USER25> [http://gizmodo.com/this-australian-says-he-and-his-dead- frie...](http://gizmodo.com/this-australian-says-he-and-his-dead-friend- invented-bi-1746958692)

It seems like when you put everything together that Craig Steven Wright + Dave Kleiman + unknown associates = Satoshi. This honestly seems like a much simpler conclusion to me than the alternative which is that someone (whether a group or a person) went to the trouble of concocting extremely elaborate and convincing evidence for the purpose of framing Wright as Satoshi.

Hopefully the media didn't out the wrong guy this time (although in retrospect: I'm not even sure why Gwern thought it wise to send the leaks to the press. I would have thought that he would sympathize with Satoshi wanting to stay anonymous given that he writes under a pseudonym himself...)

</comment><comment><USER26> I don't understand - why would they raid his house? Is he suspected of dodging taxes? But as far as I understand, most tax evaders don't get their houses raided at first. It makes sense to first contact the person and/or send a letter.

<comment><USER27> From what I read on other sources, he is under investigation for tax issues by the ATO for a number of years now.

Perhaps the ATO felt they need to move quickly when news broke out (suggesting he is the BitCoin creator), to secure his assets before they are transferred / moved.

<comment><USER28> I doubt that this [very] clever person would put his bitcoins at risk of a seizure at his/her home

<comment><USER29> True, however I don't doubt that there _are_ [very] stupid people who think it would be a good idea to break in to his house to steal hard-drives/computers in case they have bitcoins on them.

And it looks like the ATO doesn't doubt that either and wants to protect evidence from its ongoing investigation.

<comment><USER30> The guy that put together silk road was found with all his stuff at the same coffee shop every day.

</comment></comment></comment></comment></comment><comment><USER31> _> Guardian Australia understands the raids are not related to the claims that Wright may have been involved in the creation of bitcoin, but are related to an Australian Tax Office investigation._

Seems like a hell of a coincidence for these two things to happen on the same day...

<comment> bro-stick There is a strong _incentive_ for SN to stay anonymous now: extortion, GBH threats, kidnapping, tax evasion, etc.

This could be some guy feigning humblebragging to fool prospective customers, or the vaguest individual Wired decided to hoist the label onto because it garners eyeballs in a Daily Mail way that's hard to repute.

The raid is explained because many governments want evidence for tax evasion and evading the conventional banking system... control SN = control BTC.

<comment><USER32> Many governments are interested in finding Satoshi. They need a scapegoat to pin this bitcoin thing on. They still believe finding him/her might be effective method of getting rid of bitcoin. It's like trump wanting to go ask bill gates about locking up the internet.

<comment><USER33> Proof for these ludicrous statements please.

<comment><USER32> i admit i don't have conclusive proof. however, is it really 'ludicrous' to speculate that those in power seek to destroy bitcoin in any way possible? especially when taking into account how vocally anti-establishment the bitcoin community has become.

<comment><USER34> > is it really 'ludicrous' to speculate that those in power seek to destroy > bitcoin in any way possible? especially when taking into account how vocally > anti-establishment the bitcoin community has become.

No one is that afraid of the bitcoin community, or of bitcoin itself. The bitcoin fringe is only novel in their application of the blockchain towards the problem of reducing the risk in organized crime. The world has heard the anarchist, anti-bank rhetoric before, and for that matter, from groups that actually blow up banks and murder people to further their goals.

There seems to be no evidence of any government seeking to "destroy bitcoin in any way possible." One would expect there to be fewer bitcoin based companies openly operating if that were the case. Rather, it appears that governments have reacted to bitcoin by defining it in terms of their existing regulatory frameworks, and deciding whether or not, and how, it can legally be used and taxed.

So yes, it does seem a bit ludicrous.

</comment></comment></comment></comment></comment></comment><comment><USER35> So... this was a tax raid? Quite a harsh response, considering the rules were drafted 12months ago... What are the money laundering measures that caused Aussie banks to disown Bitcoin? Maybe that could shed light on the motivations behind the raid?

<comment><USER17> > So... this was a tax raid? Quite a harsh response, considering the rules > were drafted 12months ago...

You're making very ambitious assumptions that the tax raid is related to the rules that were drafted 12 months ago.

I'd bet significant sums of money that he isn't in trouble for creating bitcoin. Its more likely to be some other action he has done, possibly with bitcoin.

</comment></comment><comment><USER36> In case anyone is interested in the ATO's treatment of crypto currencies - [https://www.ato.gov.au/General/Gen/Tax-treatment-of- crypto-c...](https://www.ato.gov.au/General/Gen/Tax-treatment-of-crypto- currencies-in-Australia---specifically-bitcoin/)

</comment><comment><USER37> Earlier, extensive discussion here: [https://news.ycombinator.com/item?id=10699846](https://news.ycombinator.com/item?id=10699846).

Since this story contains significant new information, it doesn't count as a duplicate.

</comment><comment><USER38> So if the popular theory that he's faked a lot of the evidence to make himself look like Satoshi is true, it would appear he didn't entirely think his plan through...

<comment><USER39> I think most likely Satoshi was a pseudonym jointly created by Kleiman & Wright for their collaboration, but after Kleiman died, Wright went back and faked emails to make it look like he alone was Satoshi.

</comment></comment><comment><USER40> I see no mention of a crime in this article. If he did create bitcoin, he should be celebrated.

<comment><USER41> Tax-related investigation

</comment></comment><comment><USER42> The guy introducing himself - seems quite plausible [https://www.youtube.com/watch?v=LdvQTwjVmrE&feature=youtu.be...](https://www.youtube.com/watch?v=LdvQTwjVmrE&feature=youtu.be&t=57s)

<comment><USER43> This guy is sending my bullshit detector off the charts.

I'll bet that the story here will turn out to be that he's built a backstory around being Satoshi in either an attempt to get famous, or some fraudulent scheme to profit from it.

On reading the tax stuff, I'm wondering if he's told the Australian Tax authorities that he is Satoshi.

<comment><USER42> Yeah thinking about it the guys answers seem calculated to imply he's Satoshi which seems something unlikely for the real Satoshi to do. There is also evidence of faked PGP keys [https://news.ycombinator.com/item?id=10706511](https://news.ycombinator.com/item?id=10706511)

</comment></comment></comment><comment><USER44> What a weird ass article, I mean from the guardian - writing paragraph over paragraph of gossip from somebody who barely knows the man (their landlord), because somebody has not paid their taxes on time?

</comment><comment><USER45> Wasn't it the case that Satoshi Nakamoto published PGP keys early in the days of Bitcoin? Shouldn't the issue of an individual claiming to be Satoshi Nakamoto be trivial to solve?

<comment><USER46> It sounds like in this case he _doesn 't_ want to be Satoshi, but the ATO investigators think he might be.

</comment></comment><comment><USER47> cmon. Not a chance. Dorian had at least the name. I suspect this guy could not write C++ that even compiles to save his life. He's an IT expert with a long list of acronyms that sell threats models to the government. As to why the fakery... no idea. My best guess for SN stays an alternate schyzo personality of John Nash. He had prolly forgotten himself hence the lost bitcoins.

</comment><comment><USER48> Let's say there is a tax related issue or governmental issue with wright? Still very coincidental now also what is interesting is that the government has released In the last few days an innovation agenda where there are a few benefits in the startup / tech sector. So much coincidence :/

</comment><comment><USER49> statistics on the timing of satoshis original forum posts: [http://i.imgur.com/58l7W05.png](http://i.imgur.com/58l7W05.png)

could be australia, no? probably the deadzone is a bigger tell than where he posted. Ostralia is about UTC +10h? no posts between 4 and 8am is believable.

</comment><comment><USER50> Whether he is Satoshi or not, the only rational thing to do at this point is say he is not

<comment><USER15> At this point, if he _is_ Satoshi, he would probably be better off coming out of the closet. If you read through the McGrath-Nichols documents about the Hotwire bankruptcy and how the R&D tax credits dispute killed Hotwire, it's clear the ATO has it out for Wright.

I bet that whatever this raid is about, it's about something like R&D tax credits again ([http://www.businessinsider.com.au/the-australian-who-may- hav...](http://www.businessinsider.com.au/the-australian-who-may-have- invented-bitcoin-claimed-to-have-landed-54m-in-taxpayer-funded- rebates-2015-12) says $54 million in 2015 alone!) or some sort of VAT rebate, and it may kill _another_ of Wright's companies. There's not much you can do against the ATO if they are determined to reach an adverse decision against you... But if he's Satoshi, he can take the moral high ground and wage a media campaign to shame the ATO into dropping the case and maybe finally correctly treating Bitcoin as money.

<comment><USER51> > _But if he 's Satoshi, he can take the moral high ground and wage a media > campaign to shame the ATO into dropping the case and maybe finally correctly > treating Bitcoin as money._

How does this help? If they treat it that way, wouldn't Wright have a huge income tax debt?

<comment><USER15> > wouldn't Wright have a huge income tax debt?

Yes, but presumably he can pay it out of his Bitcoin fortune. He has to deal with that at some point anyway, and by going public now, he gains additional leverage on his VAT or tax credit or whatever the ATO has decided to get him for this time.

<comment><USER52> Bitcoin is still volatile.

Typically tax on volatile income is paid when you "cash out" to a more stable currency.

<comment><USER53> I wonder if capital-gains tax applies to Bitcoin? I'd think it would. And it's quite large, too.

<comment><USER54> Yep, the Australian Tax Office recognizes it as a commodity that's subject to capital gains taxes.

</comment></comment></comment></comment></comment></comment></comment><comment><USER55> The bitcoins that Satoshi Nakamoto own are worth about ~400 million USD. There are also a ton of coins missing from Mt. Gox and Silkroad. Maybe it's all related somehow? Anyhow, it's clear why the authorities would be interested: potentially there are hundreds of millions of USD on the line.

This said, this is horrible for Craig Wright if he is innocent...

<comment><USER56> well he is (innocent), until proven guilty...

<comment><USER57> Which is irrelevant because the biggest threat is likely to be from those who won't wait to find out.

</comment></comment></comment><comment><USER58> Innovate they say.

</comment><comment><USER59> Repeat after me "I will not disrupt the NWO."

</comment><comment><USER60> What would be the problem if he were Satoshi Nakamoto? He'd rather deserve the Nobel prize.

<comment><USER61> I think the possible reason for raiding him is to catch up on tax obligations from having accrued so much undeclared wealth.

I don't know if there are other crimes for which they intend to charge him, but that's the first one that pops to mind.

Also, they've obviously had meetings in advance of "what do we do if we determine the identity of Satoshi", because this raid was FAST.

<comment><USER62> You don't have to pay taxes on capital gains until you sell the asset. Satoshi hasn't sold his hundreds of millions of dollars in Bitcoin, they're just sitting there on the blockchain where they were mined.

<comment><USER63> Unless Australian tax law considers Bitcoin a currency.

<comment><USER64> It doesn't</comment></comment></comment></comment></comment>


Convert Python source code (.py) to Jupyter notebook (.ipynb) with p2j - <AUTHOR> https://github.com/raibosome/python2jupyter <comment><AUTHOR> Say no more to copying code line-by-line to Jupyter notebook. This conversion just needs your code to be paragraphed, like how codes should be. Comments are converted to markdowns. Codes are converted to cell codes. It's as easy as running pip install p2j and run p2j your_code.py

Pull requests are welcome!</comment>


FBI Raids Apartment of Alleged King's Speech Uploader - <AUTHOR> http://www.wired.com/threatlevel/2011/04/kings-speech-uploader/

<comment><USER2> It is always nice to have confirmation that these things get leaked by the very industry trying to vilify the leakers.</comment>


Leaked Emails Reveal MPAA Plans to Pay Elected Officials to Attack Google - <AUTHOR> https://www.techdirt.com/articles/20141212/12142629419/leaked-emails-reveal-mpaa-plans-to-pay-elected-officials-to-attack-google.shtml

<comment><USER2> This is dynamite stuff. Is the MPAA outright bribing state Attorney's General? How many more revelations to come from the Sony hack?

<comment><USER3> It doesn't look like bribery, no. It looks like paying a big law firm to provide legal input to the State AG in a case against Google.

I'm no attorney and I don't know for sure, but it wouldn't surprise me if that was very common thing. Which doesn't mean it's not shady.

It definitely doesn't look like cash money being given to state officials. It might be shady, but it's not bribery.

<comment><USER4> How on earth is a private company allowed to "provide legal input" toan AG?

<comment><USER5> As I recall that was the model for the monster anti-tobacco lawsuits.

The general principle is well established, going back to Roman law, then English common law in the 9th Century: [https://en.wikipedia.org/wiki/Amicus_curiae](https://en.wikipedia.org/wiki/Amicus_curiae)</comment></comment></comment></comment>


A Bit of Friday Fun – Perceptions of Reality [YouTube 8m51] - Pick-A-Hill2019 https://youtu.be/Dq0gmzTDqaA <comment> Pick-A-Hill2019 This is just a bit of light-hearted fun for a Friday with absolutely 0% science behind it - but it does illustrate how two different people can see exactly the same issue/problem in very different ways. Try it out at home amongst friends (or here) and compare what you saw with what others saw.

I was surprised at the variances in people I tried it with and, since it's a Friday – Why not?</comment>


How Do You Name Your Servers - <AUTHOR> Random question, as I sit here trying to determine how to creatively name a block of servers.  What kind of naming scheme do you use to name your servers? <comment><USER2> Crack open Tolkien's _The Silmarillion_ or the appendices to _Return of the King_ and you won't lack for names.

</comment><comment><USER3> Repeat after me, servers are cattle, not pets.

<comment><USER4> Elsie.

</comment></comment><comment><USER5> This is a hilariously difficult question, and I think stuff4ben provided a great answer.

I'm going to start naming my web servers:

web-server-load-balancer

web-server-1

web-server-2

web-server-3

</comment><comment><USER4> Beach cities. Navy ships. Grateful Dead songs.

</comment><comment><USER6> Greek Gods names.</comment>


Ask YC: if Haskell is the hammer, what should be the nail? - <AUTHOR>

Hi, guys.  I've been thinking of learning Haskell, and so have been casting about for a good project to start in it.
I found a top ten list of Haskell projects (http://haskell-news.blogspot.com/2008/01/top-10-most-popular-haskell-programs.html) and it looks like things are sparser than I might have hoped.
Anyway, if one wanted to break into that top-ten list by using using Haskell's strengths, what are some kinds of projects that one would take on?
Also, if anyone would like to join me, that would only add to the fun. <comment><USER2> I've just started watching the Simon Peyton Jones videos on the subject (from OSCon last year), and I've been kinda thinking I might tackle some systems monitoring problems (I usually use Perl for that sort of thing...and most every other sort of thing, lately). I, too, have been struck a bit by how low- level most of the libraries and such are, at this point (then again, compared to CPAN almost every language has a dearth of high level libraries). And I'm still far too much of an amateur at the language to do much about it. But it is an interesting language, and probably useful to tinker with even if no useful code ever comes of it.

<comment><USER3> You may find systems monitoring to be a bit challenging in Haskell if you're accustomed to Perl. By design, the normal POSIX abstractions that are so tightly integrated into Perl are held at arm's length in Haskell, if available at all; something as simple as forking a child process or switching effective UIDs will require far more code in Haskell than in Perl.

That being said, if you want to be able to _reason_ about system configuration states, and write concise deterministic rules that dictate the triggers for and transitions between between such states, Haskell may be worth some additional attention.

<comment><USER4> I don't think that's necessarily true. Take a look at all the System.Posix modules: [http://haskell.org/ghc/docs/latest/html/libraries/unix/Syste...](http://haskell.org/ghc/docs/latest/html/libraries/unix/System- Posix.html)

<comment><USER3> That's exactly my point, though -- there's a standard module for POSIX integration, but it's not part of the language syntax itself. It's a subtle thing if you don't do systems code often, but it becomes apparent after working with Perl for a while how much of it really is a domain-specific language for UNIX systems operations.

Haskell, as a general-purpose functional language, is always going to require just a few more keystrokes/lines of code to accomplish the equivalent system operations.

<comment><USER4> Since I don't have any experience with doing system code in Perl, a small example would be nice.

<comment><USER2> I just talked about this in a JavaScript thread a few days ago as a reason JavaScript isn't quite ready to take the place of Ruby, Perl, and (kinda) Python on the server (though it probably will in the next year or two).

The most obvious example in Perl is its file processing abilities (which are scary at times, and astonishingly beautiful in their conciseness--thus Perl is still the master of one-liners). Like Haskell, JavaScript also has some file- related libraries...but they're also off in the ghetto of a clunky library, as it has been (historically) in SmallTalk and Lisp. The difference between making a function call and using a core language feature can be subtle...but it's definitely a friction point (I hate using Python, despite its many positive aspects, for many system related tasks because regexes are in the ghetto, for example).

So, here's a simple example:

        while (<>) {
            for $chunk (split) { # split on white space
                # do something with words
            }
        }

This is the entirety of code for processing a file word by word (<> is a magic filehandle that slurps in files on the command line, and not really recommended in code used by untrusted folks...so in real world software there would be a bit more boiler plate, but not much...but it's a good example). Add in that regexes are first class citizens and a file handle in Perl can be a pipe or a network socket or stdin/stdout, and you have an exceedingly low friction environment for building system-related tools.

That's not to say that Haskell can't overcome the fact that systems-level stuff isn't in the core language (most Perl additions in the past several years have also been in the form of libraries rather than more keywords and new syntax--at some point it makes sense to put things into libs rather than making the language bigger). I don't know enough about Haskell to say.

But, I can say that I've been quite intimidated by the amount of code I need to write to do things that are one-liners or a handful of lines in Perl. I'm sure some of this is my lack of knowledge, and some of it is the lack of CPAN (in ten years, if Haskell is extremely lucky and extremely successful, it'll have a selection of libraries on par with CPAN of today). But I'm having fun tinkering, regardless. Worst case, I'll learn something new.

I had a lot of fun with mjd's Higher Order Perl (which exhibits most of the major functional techniques, like currying, recursion, infinite iterators, memoization, etc. using Perl), so it'll be cool to "go native" for a while, and what better way to learn than by doing tasks I'm already familiar with in a new language...I may get some new perspective on how things can be done in Perl (since it has lots of functional features) and maybe I'll even find some new features that can be added to our products uniquely easily by introducing some Haskell code.

An interesting source of perspective on what makes Perl magical for systems- related tasks would be a perusal of the perlvar manpage. Perl has a bunch of "magic" special variables, many of which are related to how Perl behaves when given files to munch on. Folks find this intimidating, but it's a source of great power, particularly for one-liners and pipes (Perl is very much of the UNIX culture, and Perl fits into a long line of pipes as well as grep or awk or sed). Of course, for many classes of problem you would _never_ use most of those special variables. But, for systems related code, it's hard to beat. (I've tried. I spent a few years in a Python shop, and was constantly amazed by how verbose my code had to be in Python vs. doing the same task in Perl...it was also generally a lot slower. I _like_ Python for lots of stuff, but systems tools aint exactly its strong suit. I may find the same is true of Haskell.)

<comment><USER5> Take a look at Don's reimplementation of some classic Unix tools as Haskell oneliners: <http://www.cse.unsw.edu.au/~dons/data/Basics.html>.

The mere fact that interact lets you make a pure function into a Unix-style string -> string utility should show that you are exaggerating a bit.

      interact (unwords . something . words)

handles basically your whole simple example.

Another simple example: capitalize every word of the input:

      main = interact (unwords . (map (\(x:xs) -> Char.toUpper x : xs )) . words)

<comment><USER2> _show that you are exaggerating a bit_

No, it merely shows that I don't know Haskell--I didn't claim Haskell couldn't be as concise as Perl for this kind of thing...just that I don't know how to make it as concise. The link helps very much, thanks. (And, just so no one is misled, the same example could be done as a Perl one-liner, as well, using the magic variables I mentioned in the prior comment. I just figured I'd make it readable, since there are some anti-Perl bigots around just waiting for the chance to say, "I knew it! It's nothing but line noise!".)

Also worth noting...I love that I can write code like the example you've shown in Perl (with some minor syntactic differences, but it does have first class functions and expressions as arguments), and the fact that Haskell seems to be _entirely_ made up of code like that made it seem very appealing on first glance. That slurping a file can be written in Haskell in one line and some lib imports makes me...umm, I'm embarrassed to say...a little giddy. And it makes me wonder why I didn't start using Haskell sooner.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Right now, the area Haskell absolutely thrashes everything else is speedy and lightweight concurrency (it even stomps Erlang in the Debian Shootout). So if you can find a project that needs fluid responsiveness, multi-connection or or multi-CPU scaling, Haskell is the ideal tool.

<comment><AUTHOR> Okay, here's what comes to mind based on those criteria: an operating systems, databases, large numerical simulations, intensive graphical manipulations, mind-modeling. Do these sound right?

<comment><USER6> It's not really much use for OSes unless you're a research project, because the compilers target an OS and not bare metal.

Also, it's slower than C on actual processing (about the speed of Java). So numerical stuff is out, unless the benefits of being parallel outweigh the benefits of being fast. (This may improve as the back-end optimization project shows results.)

I think the perfect target would be any sort of massively multi-user network server.

</comment></comment></comment><comment><USER3> Personally, I think there are some very interesting possibilities for using Haskell in the highly-secure web application space. The most trivial example would be simply using the type checker to protect against SQL injection and cross-site scripting attacks by representing user input with a different type than query parameters or HTML output.

I've also thought for a while that Haskell would be a great environment in which to implement a static analysis tool to check the security of existing application code. In particular, I think that the PHP community could really use an information-flow and type-checking tool external to the core runtime which could be used to run a quick "sanity check" over source code. The simplicity of the language (relative to, say, Ruby or Perl) makes it a prime target for parsing and analysis, and the large body of existing code in the wild makes for an interesting set of test cases.

<comment><USER7> There's this meme about type checking defeating SQL Injection that I don't really understand.

There are basically three situations I see injection problems recurring in modern web code:

* The stupid cases where people are interpolating input strings directly into query strings, so that a query for "O'Neill" will accidentally break your SQL.

* The not-so-stupid cases where column sorts and query builders pass limits, sort orders, and groupings directly from user inputs.

* The cases where stored procedures resort to dynamic SQL.

The first problem is solved not by better type checking, but by switching to parameterized queries, where the query string is parsed prior to argument binding.

The second problem is solved by not passing SQL literals in and out of input.

The third problem isn't even happening in the application's programming language.

Which of these problems is handled well by application type checking?

As for XSS attacks, I'm again skeptical. If the problem was as easy as type checking, you'd solve it trivially by output filtering everything from the database, neutralizing HTML metacharacters. It's not that easy: there are lots of times when you really do need to honor HTML in input.

<comment><USER4> The main problem is that both SQL and HTML are often simply represented by strings. The programmer has to keep track herself to make sure everything is escaped and unescaped at the right moment.

The point is that you can use Haskell's type system to get guarantees about and keep track of escaping. It's really light-weight to add new types. Also, dynamic typing would probably mess this up.

Still, all this mainly comes down at the shoulders of the library designer. But, looking at some of the available libraries (such as Text.XHtml) this works really well.

In the case of Text.XHtml the easy/default case when using a string in HTML is that it's escaped. When you want to 'parse' a string to HTML you'll have to be explicit. That makes it really hard to 'accidentily' forget to escape HTML.

The way I look at Haskell's type system is that it's a great tool for easily enabling 'safe' programming. It won't work automatically, but it gives you the opportunity to let the type checker take care of guaranteeing that everything will work as expected ;)

<comment><USER7> Yeah, I think this is a bit naive. Of the three SQLi cases I mentioned, only the first is due to the app language's handling of string input and query strings, and that case is just as easily handled by parameterized queries.

The second case is not due to the fact that the same type is used for input and query strings; when a web app passes DESC or ASC or LIMIT 100 in via POST arguments, that's a design problem type systems don't solve.

Likewise, type systems might fix the simplest XSS problems, but the nasty ones occur in code that is explicitly trying to handle input that has been laundered through the database and must include HTML characters.

<comment><USER3> I still don't see why "type systems don't solve" the problem of keeping data domains separate. If user input is of a different type than SQL query components, you simply can't allow GET or POST arguments to hit the database un-sanitized. Yes, you can perform the check by hand (i.e., fix the "design problem"), but as we've all seen, programmers don't do that _consistently_ , which leaves us patching the same class of vulnerability time and time again.

Type systems also don't have to be the algebraic types of Haskell; SELinux DTE and FlowCaml/Jif information flow analysis both fit loosely under the umbrella of "type checking," and yet allow for very fine-grained and interesting security properties of complex, real-world systems to be asserted and enforced.

</comment></comment></comment></comment></comment><comment><USER8> what isn't haskell for?

i've been throwing it at everything from fastcgi programs to scrapers to scripting to systems stuff

maybe the one place it isn't well suited is in the realm of throw-away quickies. haskell code takes longer to write. that doesn't mean you are writing a lot of code. i still see a role for perl/python in throaway scripts

haskell has practically every meaningful cool concept in CS built in. it is _the_ functional language (for now). it is very fast and as the number of cores rises, haskell's performance will start to leave traditional tools in the dust. with the new GC it will destroy erlang on its own turf.

haskell takes time to learn and time to code. if you are in a rush, it is not for you. otherwise, haskell can handle almost any problem

in any case, you can come to haskell or it can come to you. the next ten years will see functional concepts get weaved into every language.</comment>


Launch HN: Lyrebird (YC S17) – Create a digital copy of your voice - <AUTHOR> Hi HN!
We are the co-founders of Lyrebird (https://lyrebird.ai/) and PhD students in AI at University of Montreal. We are building speech synthesis technologies to improve the way we communicate with computers. Right now, our key innovation is that we can copy the voice of someone else and make it say anything. The tech is still at its early stage but we believe that it is eventually going to make possible a wide range of new applications such as:
- reading loud text messages with the voice of the sender,
- reading audiobooks with the voice of your choice,
- giving a personalized digital voice to people who lost their voice due to a disease,
- allowing video game makers to have more customized dialogs generated on the fly, or avatars of their players,
- allowing movie makers to freeze the voice of their actors so that they can still use it if the actor ages or dies.
Yesterday we launched a beta version of our voice-cloning software: anyone can record one minute of audio and get a digital voice that sounds like them.
We know that many on HN are concerned about potential misuses surrounding these technologies and we share your concern. We write further on our ethical stance on this page: https://lyrebird.ai/ethics/.
Our blogpost about the launch: https://lyrebird.ai/blog/create-your-voice-avatar that features the first video combining generated audio and generated elements of the video.
There was a thread about us on HN when we launched our website four months ago (https://news.ycombinator.com/item?id=14182262) but at that time, no one could test our software yet and we did not really answer any question of the community. So this time we are ready for questions and would love some feedback! <comment><USER3> This looks really great, congrats! Forgive me if I missed something, but I was wondering if you could clear up some confusion. From the terms: "Subject to the Biometric Data Agreement, you hereby grant to us a fully paid, royalty- free, perpetual, irrevocable, worldwide, non-exclusive and fully sublicensable right (including any moral rights) and license to use, license, distribute, reproduce, modify, adapt, publicly perform, and publicly display Your Voice, Digital Voice..."

Just to be clear, the license of the voice/digital voice is revoked upon deletion of the recordings? I understand it is subject to the biometric agreement, but the words perpetual and irrevocable still worried me. Thanks!

<comment><USER4> Yes! This is what our lawyers suggested to protect ourselves.

We delete all the recordings when you click delete, so we can't recreate the voice anymore. However, this is still necessary in case we share some generated sentences in social media or so (like we're doing on twitter now).

<comment><USER5> > However, this is still necessary in case we share some generated sentences > in social media or so (like we're doing on twitter now).

This is something that you should only do with the permission of the user who provided the voice. You _don 't_ need generalized permission to do that for every user, and given the nature of the technology, you shouldn't ask for such permission.

<comment><USER6> From the grandparent comment:

> This is what our lawyers suggested to protect ourselves.

Generally speaking, a lawyer's advice is going to be optimized for maximum protection in possibly unforeseeable circumstances, not for what might actually be needed or even reasonable to request of every user.

Generally speaking, companies aren't going to go out of their way to rein in their lawyer. Most people won't even read that fine print, unfortunately.

</comment></comment></comment></comment><comment><USER7> Sounds amazing! Just to add a usecase - for many people, creating a decent voiceover is one of the big sticking points for producing youtube videos or educational courses. If I could write a script, and have software generate a decent enough voiceover, it would be amazing.

It's not even necessary to copy anyone's voice, as long as there's a selection of the most comprehensible and human-sounding ones.

Then, you could even automatically generate slideshow presentation from a few illustrations and headlines, and that would make "rendering" articles into videos very fast and easy. I'm sure a lot of people would pay for such service.

\----

By the way, recently I've encountered Deep Voice 2, a similar research project by baidu:

[http://research.baidu.com/deep-voice-2-multi-speaker- neural-...](http://research.baidu.com/deep-voice-2-multi-speaker-neural-text- speech/)

Results are very impressive.

<comment><USER8> I made a joke video for work, featuring clips of Sir David Attenborough narrating a fake nature documentary I cut together from video I took at work.

It would have been an order of magnitude better if I could just generate arbitrary phrases in his voice.

(Or maybe not; maybe the constraint made the video better.)

<comment><USER9> I think the constraint makes the video funnier, take for example dinoflask's edits of Blizzard's Jeff Kaplan

[https://www.youtube.com/watch?v=gXTrrTX7YuY](https://www.youtube.com/watch?v=gXTrrTX7YuY)

</comment></comment></comment><comment><USER10> While it's good that you have an ethics page: [https://lyrebird.ai/ethics/](https://lyrebird.ai/ethics/), it only has two ethical guidelines:

* Spread awareness of this technology

* Your digital voice remains yours

I would feel a lot better about this if you also had explicit ethical boundaries, for example disallowing users impersonating someone else, e.g. Donald Trump, Barack Obama. "Your digital voice remains yours" sort of sounds like you won't use/share my digital voice with others, but doesn't directly address whether bad actors can maliciously impersonate someone who hasn't registered with Lyrebird.

<comment><USER11> To build on that a bit. My bank uses voice recognition as a security measure and to authenticate me when I call in. Throw a bad actor in the mix and that becomes a security issue.

<comment><USER12> Reminds me of the classic "My voice is my passport. Verify me." Hopefully that is not the only second-factor option they provide?

<comment><USER11> Ha! Luckily it opt-in/out and they do allow you to keep a pin/code word as a backup.

</comment></comment></comment></comment><comment><USER13> Their ethics don't seem to be something they take seriously as the video they use to promote their own site is an impersonation itself.

Seems from right out of the gate, they are breaking their own ethical guidelines as a cheap promotional tactic. If they care that little about themselves and a former president of the United States, what do they care about your likeness.

It also doesn't help that you give them a universal perpetual license to do whatever they want (including selling your likeness for someone else's use) by uploading.

This just seems like a slimy team that put up an ethics page as a CYA.

I'm willing to eat my words if they had Barak Obama's consent to use his digitized voice for this but, it's highly doubtful since there's also the coat and seal of the President of the United States on the flag in the background which would be a massive ethical breach of a former President just to promote a silly little startup.

<comment><AUTHOR> > Seems from right out of the gate, they are breaking their own ethical > guidelines as a cheap promotional tactic. If they care that little about > themselves and a former president of the United States, what do they care > about your likeness.

We state in our blogpost that we make an exception for Obama/Trump in order to raise public awareness. Both of them are regularly used in Machine Learning benchmarks (for example [0] [1]). Note that we don't allow users to generate from Trump/Obama's voice.

Once again, we care a lot about these issues and that's why we only allow users to copy their own voice.

[0] [http://www.washington.edu/news/2017/07/11/lip-syncing- obama-...](http://www.washington.edu/news/2017/07/11/lip-syncing-obama-new- tools-turn-audio-clips-into-realistic-video/) [1] [https://www.youtube.com/watch?v=ohmajJTcpNk](https://www.youtube.com/watch?v=ohmajJTcpNk)

These issues are challenging and suggestions about how you think the technology should be introduced/regulated are very welcome.

<comment><USER13> It's still hypocritical and insulting to the reader's intelligence.

You could make Obama say anything. He could say something humourous, something that he's never said before. You would have just as impressive of a demo if you had Obama say "I'm a little teapot short and stout..." and then used overlay text to promote yourself. You chose instead to make a video where he promotes your startup.

That is both hypocritical and immoral and not only using his personal likeness but, also the seat of the Presidency of the United States.

This fast and loose way that Lyrebird treats their technology only makes me think that they don't really think about the massive negative potential of the technology and just want to get scale / profitability as fast as possible.

</comment></comment></comment><comment><USER14> "I'm using my voice as my password".

Vanguard allows voice authentication ([https://investor.vanguard.com/account- conveniences/voice-ver...](https://investor.vanguard.com/account- conveniences/voice-verification?lang=en)) - and who knows who else will roll something similar out in the future. Yeah, its really really dumb, but it's happening in production now. I wouldn't use this product if I were you, but honestly you should also not use voice verification/authentication for anything.

<comment><USER15> Fidelity began verifying voice for telephone customer service a short while back. They recorded me during the call then at the end said they were going to use it to verify for future calls. No way to opt out.

<comment><USER16> Did they say something to that effect before the call started, or only told you at the end? Or did they just use the "this call may be monitored for quality assurance and training purposes" blanket?

<comment><USER15> I remember it too vaguely at this point but something was mentioned in the beginning while I was waiting. I feel like it was worded along the lines of a promo or I wouldn't have told the rep. I wasn't interested multiple times. "Verifying is now easier and more secure with voice verification..."

</comment></comment></comment></comment><comment><USER17> Seems like a really useful piece of technology. As you said, it's got quite a few applications in the gaming, film, medical and messaging industries.

That said, am I the only one imagining this getting abused by people in those fields as well? Seems like a good way to avoid paying voice actors for future work. Just record the minimum 30 recordings, then use this software to create all their future dialogue.

This could lead to some interesting lawsuits over who a character's voice belongs to and whether a company has the right to use someone's voice recordings to get free work done on future projects. Like how during the production of Trail of the Pink Panther, Peter Sellers' widow sued the film's producers and studio over them using clips of him from deleted scenes in earlier films in the movie.

</comment><comment><USER18> The innovation I'm waiting for is

>> reading audiobooks with the voice of your choice, AND the speed of my choice.

<comment><AUTHOR> Yes definitively! This is also something we are working on.

</comment></comment><comment><USER19> I don't buy the "raising awareness" argument, ethically speaking. To do that, you could release demo files that show the capability without weaponizing it through easy access. It'd be great to increase awareness around our vulnerability to EMP attacks, but we don't need to publish specs and or sell a working prototype to make that case.

This is just one of those areas where the negative implications, I believe, far outweigh the positive ones. Aside from the noble cause of helping the disabled, most of the use cases center around entertainment. As great as that may be, the likely application to fraud and the potential for a catastrophic misuse in matters of war and peace just dwarf any upside.

</comment><comment><USER20> Will this technology be licensed for redistribution or only for online API use? I ask because in the video game scenario it would be great to have this in a library I could distribute instead of relying on the API to be available at all times.

<comment><AUTHOR> The first version will only be an online API. I agree with you that we should eventually think about licensing it for offline/embedded redistribution.

</comment></comment><comment><USER21> Really fun stuff. I noticed that it seems to have problems starting sentences. Especially if I try to start a sentence with "hi,". Interesting nonetheless. This passage seems to be rendered fairly well: [https://lyrebird.ai/g/LYoVuaZm](https://lyrebird.ai/g/LYoVuaZm)

Also, [https://lyrebird.ai/g/D3Fw328D](https://lyrebird.ai/g/D3Fw328D)

<comment><AUTHOR> Unfortunately for certain voices our model has difficulties to generate the very beginning of the sentence. We hope to fix this problem soon.

Some other people shared their voices on twitter if you want to compare: [https://twitter.com/LyrebirdAi](https://twitter.com/LyrebirdAi)

</comment></comment><comment><USER22> I guess I see a ton of upside here, but I also see that this could easily be abused and possibly a tool to completely destroy someones life. Imagine getting a phone call from your "partner" saying they cheated on you. I dont know how it would be useable(api?) and I do still detect a bit of artificialness to to voice, but as this gets better I worry about the down sides and potential for harm by copying someones voice.

<comment><AUTHOR> Thank you for raising those concerns. We take those very seriously. You can read more about our ethical stance in this article: [https://lyrebird.ai/ethics/](https://lyrebird.ai/ethics/)

To recap:

\- we want to start by raising public awareness about the technology and we did demos with the voices of Trump/Obama for that,

\- your digital voice is yours, people can not use it without your authorization.

</comment></comment><comment><USER23> I just tried to signup with a Hotmail email address and I got this error message: _This email cannot be used to create an account. It might be due to your email domain name._

I realize Hotmail isn't the sexiest email provider these days but it's one of the more commonly used. Do you have a list of email domains you allow?

<comment><USER4> We accept hotmail. It might be because of some special characters. Do you use + ?

<comment><USER23> Nope. Just letters and numbers. Same with my password.

I tried with my Gmail address and it worked fine. That address has no numbers in it. I used the same password. If you aren't prohibiting Hotmail addresses then it must be the numbers in the email address that are triggering some validation.

Regardless, I have access now. Looking forward to trying your product!

<comment><USER24> Don't reveal your powerlevel in HN, dude. Now you've not only reduced the search space for your Hotmail password, yoy've clued an attacker in that that's also your Gmail password!

<comment><USER23> I use Pass [0] to generate unique/random passwords for each site I sign into, I don't use the same password for all sites. I was just describing what I used for this instance (only characters and numbers), not what I do every time. I appreciate your concern though!

[0] [https://www.passwordstore.org/](https://www.passwordstore.org/)

</comment></comment></comment></comment></comment><comment><USER25> When the demo page was launched it seemed like Lyrebird was going to be an API. Will there still be an api?

<comment><AUTHOR> Yes definitively, we are starting a private beta at the moment.

<comment><USER25> awesome! I signed up back then but haven't heard anything since. Is there anything else I can do to try out the beta?

<comment><AUTHOR> Not yet. We are starting with a few developers/companies only and will expand it progressively.

What would be your use case?

<comment><USER25> My wife built an app that teaches people (foreigners) how to speak english. Based on the words in their flashcards, we generate dynamic sentences so during practice their flashcards are rarely the same. For example, if I have (happy, sad, run, write) in my backpack, then a sample flashcard would show up as: "When I run, I will be sad".

I see lyrebird api being very helpful in helping my users practice listening skills and add a level of creative fun! If we had 10-20 different voices, the flashcards will be read a little differently each time. Right now (since our flashcards is dynamic), our audio feels very monotone. We would love to help you beta test your API and work something out.

</comment></comment></comment></comment></comment><comment><USER26> I assume you guys know about VocalID that got an NSF SBiR grant for giving mute people a voice (through similar means) [https://www.vocalid.co/](https://www.vocalid.co/)

</comment><comment><USER27> This is incredible - recorded my voice and I'm blown away with the results.

One thing: I found that I was in such a hurry to record that I probably spoke faster than normal. It'd be nice if there was a way to tune a few parameters manually (tempo, pitch, etc).

If I ever lose my voice and have to have a TTS appliance speak for me, I'll be contacting you all to get my voice profile!

EDIT: For those interested, pretty impressive that it figured out the appropriate cadence for this: [https://lyrebird.ai/g/v7MpYaUA](https://lyrebird.ai/g/v7MpYaUA)

<comment><AUTHOR> Thank you for the feedback!

> It'd be nice if there was a way to tune a few parameters manually (tempo, > pitch, etc).

Yes we are currently exploring ways to control the generation: volume, pitch, tempo, speed but also intonation and emotion.

<comment><USER27> Emotion would be a nice one - my wife's first comment was that it sounded too bored.

</comment></comment></comment><comment><USER28> This looks awesome. I commented on the original post about how exciting this is for worldbuilding (and creating realistic voices for fictional characters, with all the uses that come there).

Random question: it's said that people think their own voices sound weird when they hear recordings of themselves played back. Do you have a way to measure that phenomenon? Have you seen people complaining about the accuracy when in fact it was just that effect making people sound "weird" (to themselves)?

<comment><USER29> The reason for the phenomenon is that some large percentage of how you hear your own voice comes from bone conduction. In addition, the higher harmonics of your voice are more directional, which is to say "aimed away from your ears", and tend to be diminished when reflected back to you by the objects around you.

The end result of this is that your own voice, when recorded and played back to you, will generally sound less bassy and more harmonically rich than you expect it to.

</comment></comment><comment><USER30> This is only tangentially on topic, but is there an API or some engine that I can feed short sentences into and get high-quality generation back?

I have an RC controller radio that supports voice prompts, and I would like to add some short phrases that are missing, such as "air mode on", "throttle warning", etc.

Is there anything on par in quality with Google's/Siri's voice? Not the Google TTS, but the voice they use in Now.

</comment><comment><USER31> Amazing - I cant wait to integrate this with our VR product. We previously used Amazon Polly attached to a chatbot: [https://twitter.com/Alientrap/status/829032930626383873](https://twitter.com/Alientrap/status/829032930626383873)

First uses that come to mind are players adding themselves to a VR world - <USER2> maybe celebrities / public figures.

</comment><comment><USER32> Congrats on the launch! The tech is amazing

Quick q's (purely out of curiosity):

1) > We are [...] PhD students in AI at University of Montreal

Are you doing the startup on the side/planning on going back to school?

2) I don't recall reading about you guys in articles about YC S17 demo days. What are reasons why some companies might not participate in demo day or remain off-the-record? In your case, you seem to have had a working product long before demo day

<comment><AUTHOR> Thank you!

1) The research of the PhD and the startup are quite complementary at the end, so we hope we can continue doing both.

2) We didn't do demo day because we raised our seed round just before YC and did not want to raise again.

</comment></comment><comment><USER33> This is probably going to be great, but I just tested out voice generation with the bare minimum of 30 recordings, and it really fell flat. When I tried playback with an input, all it could produce was a high-pitched buzzing sound and then maybe 1/4 of the words I typed in, which sounded nothing like me.

Perhaps you should increase the minimum from 30 recordings to 100?

<comment><USER4> Hi! Thanks for testing it! For many voices it works well with only 30 recordings. For some, you need a bit more. It seems that quality of the audio (no background noise, clear and loud voice, lots of intonation) is what matters the most.

</comment></comment><comment><USER34> I am confused about the functionality. What is that I will be able to do, if I go through recording 30 sentences?

<comment><AUTHOR> You will be able to create a digital voice that sounds like you and generate any sentence from it.

And thanks, we are going to update the instructions to make them more clear.

<comment><USER34> Thanks. Such an explanation on the website would be helpful. BTW, the Trump/Obama tweets do not add value. Using political objects to define a technical service, is a mismatch under the context. It also doesn't help in explaining what this service provides (people wouldn't expect that Trump and Obama have given you consent to use their voice). Just an opinion.

</comment></comment></comment><comment><USER35> When I try test my digital voice, after clicking "Generate," I get this error after about 10 seconds:

Something went wrong. Please try again!

I've tried about 5 times.

EDIT: I went to back to the page a few minutes later, and the recordings were all there. So it looks like it works, but is giving a false error message.

<comment><USER4> Can you refresh and try again? Let me know if it works.

<comment><USER35> It's working now. Thanks. Very cool.

Small issue: Would be nice if you could delete recordings.

<comment><USER4> You can!

<comment><USER35> Sorry, I meant the test recordings, not the originals of my voice.

</comment></comment></comment></comment></comment><comment><USER36> I have a youtube channel (vimgirl) and before recording I have to write scripts for what I plan to say in the video. The digital voice doesn't seem to be working right now, but when it does it would cut down my screencast production time by at least half.

</comment><comment><USER37> Cool stuff! Question from your FAQ:

> Q: Will I be able to copy another person's voice?

> A: Yes but only if you have the authorization of the person whose voice is > being copied.

Perhaps you can unpack that answer a bit? What's the authorization process?

<comment><AUTHOR> Sure, good question!

There will be two scenarii:

\- you want to use the voice of someone that has a Lyrebird account: he or she has to give you their authorization.

\- you want to use the voice of someone who does not have an account. We have specific contracts for that. Say you want to copy the voice of Morgan Freeman, the contract will be between him/her, you and Lyrebird. We will also probably explore alternative ways for that.

<comment><USER38> Did you get authorization to use the voices of public figures in your promotional materials? If not, how can users be sure that you will not arbitrary use their voice profile for promotional materials or otherwise?

</comment></comment></comment><comment><USER39> Hey.. how does lyrebird handle accent? I work in education space and due to accent of people in my country, the content doesnt work well with global audience.

are you open for beta? would like to try out your api on education content.

<comment><AUTHOR> For now, it works better with American English accent but it is still able to adapt to other accents.

Our upcoming versions should be more robust to different accents and we also plan to extend it to other languages.

</comment></comment><comment><USER40> ...make possible a wide range of new applications such as

\- hacking voice-controlled interfaces

\- generating fake news

FTFY

don't @ me saying "sure any technology can be used for good and bad stop being a ludite" yeah I know that just messing with you

<comment><USER4> Yes, this is a tricky subject! We have thought a lot about it and we think we are doing the right thing for society.

We write more about it here: [https://lyrebird.ai/ethics/](https://lyrebird.ai/ethics/)

</comment></comment><comment><USER41> This is exciting I've been following you guys since at least May. How do you plan on getting the voices out of the uncanny valley?

<comment><AUTHOR> This is going to be very tricky! No clear answer to that, we are putting a lot of effort on research but our progress is quite difficult to predict.

</comment></comment><comment><USER42> I wonder how it would work using training data from one language in generating voice in another language.

</comment><comment><USER43> Strangely, the resulting digital voice sounds Irish... but I am not.

</comment><comment><USER44> Press start recording button and nothing happend. iphone 7 ios 10

</comment><comment><USER45> Awesome idea. It was just a matter of time!

</comment><comment><USER46> voice upload is not working :(

<comment><AUTHOR> Thanks for pointing this out, this was reported by a few others. We are investigating it. For now, just refresh the page and it should work.

<comment><AUTHOR> We've fixed the bug!

<comment><USER47> Getting failed upload after clicking validation... Chrome showing this in console: "VM291:1 POST [https://lyrebird.ai/my/recordings/](https://lyrebird.ai/my/recordings/) 400 (Bad Request)"

</comment></comment></comment></comment><comment><USER48> How about Adobe Voice? This seems to share a lot of the same breakthroughs as Adobe Voice.</comment>


Microsoft Azure IP Advantage: A closer look at the 'patent pick' - <AUTHOR> https://blogs.microsoft.com/on-the-issues/2017/02/16/microsoft-azure-ip-advantage-closer-look-patent-pick/ <comment><AUTHOR> Things to make you go "WTF".

The part about handling lawsuits for their customers is a strong enough statement against (software) patents -- that getting sued is pretty much inevitable -- but it sounds like they'll let you use _their_ patents to counter-sue. Which is even more fucked up, since the underlying assumption _has_ to be that it isn't possible to exist without violating at least one of them.</comment>


Cisco Announces Intent to Acquire Duo Security - <AUTHOR> https://duo.com/about/press/releases/cisco-announces-intent-to-acquire-duo-security <comment><USER2> Duo was definitely the coolest thing I'd used for remote login; they had it so a quick checkmark/X shows up on your watch for two-factor that you just tap to acknowledge.

Cisco stuff though...hmmm. I hope it's a good fit engineering-wise (or really, just NeXT-Apple the remote login folks and trash the awkward Cisco tools).</comment>


Ask HN: Will the committee that built Common Lisp make a new one in the future? - <AUTHOR> <comment><USER2> No. ANSI X3J13 committee has been discontinued.

It seems that using ANSI to make new standard is unadvisable. The process is cumbersome and there are copyright issues with ANSI.

If there is need to revise the standard. Common Lisp folks can for less byrocratic organization to do it. Library standardization can happen organically.

<comment><AUTHOR> It's too bad, since being a "standard" has helped CL to grow so much, despite some warts that the language inherited from old times habits.

Without a standard, it seems most efforts to build a new Lisp come to a naught (think Racket and Clojure and Arc and ...)

<comment><USER3> I use CL quite a bit, and disagree with you.

The standard was great for removing incompatibilities between all of the old competing Lisps, but now that all of the implementations are on the same page and support the base line standard, I don't see the point in updating and revising the standard.

Is there really anything to add that couldn't be done as a library? And while there are warts, it's easy enough to avoid those parts or use macros and libraries to smooth over them. There may be some undefined behavior or implementation specific things in the standard, but it's far less than C or C++, and facilities like the _features_ list makes it pretty easy for libraries to detect implementation differences and do the right thing.

> Without a standard, it seems most efforts to build a new Lisp come to a > naught (think Racket and Clojure and Arc and ...)

Seems like a non sequitur. There are plenty of languages without standards that have become popular (Python, Perl, Java, Ruby, Go, etc.) and also plenty of non-Lisp languages that don't have standards and have gone no where. And then there's ILisp, which has a standard and has still gone basically nowhere.

<comment><USER4> > _I don 't see the point in updating and revising the standard._

I'd like to see outstanding issues noted in the existing standard to be resolved.

For instance, there is one ambiguity in unwinding. Unwinding occurs under the locus of a dynamic control transfer which has selected an exit point. Unwinding can be intercepted by a form like _unwind-protect_. That form can "hijack" the control transfer by initiating another one, possibly to a different exit point. The question is: _what exit points are still visible and hence available_ when a given unwind protect cleanup block is executing? Can the unwind-protect choose a less distant exit point than the original control transfer?

ANSI CL basically leaves this aspect nonportable: when an unwind protect cleanup is executing, it could be the case that all of the exit points which were "on the way" to the current exit point are already "torn down". Or it could be the case that the implementation performs "tear down as you unwind": exit points are torn down as their binding forms are terminated during unwinding.

In a nutshell, it is implementation-defined whether to tear down intervening exit points during the original search for the exit point, or leave them up and take them down during the actual unwinding.

The latter behavior is probably less surprising and should probably be ANSI CL standardized.

<comment><USER5> This is a good point.

I have two things I wish were in the standard:

* I wish the abstract syntax generated by backquote were standardized. This would permit backquote forms to be used for pattern matching in something like Optima.

* I wish there were a standard coroutine mechanism, that could be used for CLU-style iterators (aka Python generators). Although threads can be used for this, the context-switch cost makes it undesirable to do so.

So it's not that hard to come up with examples of things we would like to have added or clarified. But I think they're things we can, after all, live without.

</comment></comment></comment></comment></comment><comment><USER5> You have to think about this ecologically. What niche would a new CL occupy? What use would anyone have for something similar to CL but not identical? How could such a thing catch on?

If the features you think should be added are just extensions, it's very likely they can be added as libraries (though there are occasional exceptions). If they actually change the language so as to break existing code, it's very hard to see why anyone currently using CL would want to use your language. The CL ecosystem is already considered to be behind other major languages in terms of library coverage; your new language would be starting from zero on that point.

I think the only way a completely new Lisp would catch on is for some company to create their own, and then to spend enough years using it for enough different things that they create an adequate library on their own -- requiring that they get pretty large. But why would a small company, just starting out, create their own Lisp when they could use CL? (Okay, okay, of course PG did exactly that with Arc. But it's still an unusual choice.)

CL is unusually mutable as languages go, anyway. It's even possible for a library to turn it into a subtly but pervasively different language -- I think my functional collections library, FSet [0], is a great example. And of course, this is done without breaking existing libraries.

[0] [https://github.com/slburson/fset](https://github.com/slburson/fset)

<comment><USER4> > _How could such a thing catch on?_

The way C++11 catches on: implementations update to the standard and it creeps into use.

<comment><USER5> C++ implementations catch up to the standard because they know there's user demand. The hard thing for a new CL standard would be getting _users_ to care. Do you know of anything a new standard could offer that would attract wide interest?

<comment><USER4> \- Unicode support

\- Special characters in string literals via something analogous to \x3F, \177, \n, \t, \u+1234.

\- Way to write long string literals split across lines with indentation, without involving _format_ :

      TXR Lisp:
      (foo bar "this is just one \
               \ string literal with only single spaces")

\- Standardized code walking primitives: one body of user code with no #+this #-that which correctly walks all special forms.

\- _expand-full_ function: perform all expansion on an expression in a given macro environment. Optionally report all free variable and function references still emanating from the expanded code.

\- native lazy list via lazy-cons type which satisfies _consp_.

\- require numerically equivalent fixnums to be friggin' EQ, damn it.

\- Overhaul of path names, w.r.t. current OS landscape. One standard way to parse a POSIX or Windows path string to a path name, or a URL. path names should have a :method for this.

\- Standardize the Meta-Object Protocol for CLOS.

\- Standard support for weak hash table keys and values.

\- Hash tables with arbitrary :test function.

\- GC finalization support: register callback for finalized object.

<comment><USER5> > \- Unicode support

Agreed, it would be nice if this were standard.

> \- Special characters in string literals via something analogous to \x3F, > \177, \n, \t, \u+1234.

> \- Way to write long string literals split across lines with indentation

I haven't needed these often, but I guess some people would use them a lot and there's no downside.

> \- Standardized code walking primitives: one body of user code with no > #+this #-that which correctly walks all special forms.

Also agreed. Do you happen to know of an open source code walker that has all the required conditionalizations? I would be curious to see it.

> \- _expand-full_ function

Can't this be in a library?

> \- native lazy list

I haven't done enough programming with lazy lists to have a good feel for the value of this.

> \- require numerically equivalent fixnums to be friggin' EQ, damn it.

Heh :-) Why? Seems like this would be a big problem for ABCL.

> \- Overhaul of path names, w.r.t. current OS landscape.

I agree, it would be nice if there were more standardization here.

> \- Standardize the Meta-Object Protocol for CLOS.

Agreed; this should be easy by now.

> \- Standard support for weak hash table keys and values.

I would prefer a more general weak-reference mechanism that would let us build our own weak data structures. Java has this. It's going to be hard for some implementors, though.

> \- Hash tables with arbitrary :test function.

Desirable, though I don't use the built-in hash tables that much anymore anyway.

> \- GC finalization support

I've never found finalization to be as useful as it sounds like it ought to be. It also seems to have a lot of overlap, both in use cases and in implementation difficulties, with weak references. I would just go with the latter.

Overall, this is a good list, though I don't agree with every item, and I have my own desires, as I mentioned previously. The question is whether the community can be pushed to any kind of consensus, at least on the point that there are enough things worth doing that it's worth setting up some kind of formal process to decide on them. It seems like an uphill battle to me. (In any case, I have no time to devote to it myself.)

<comment><USER4> Some of the things in that list are being done already or provided in different ways.

Implementations have weak hash support; not all exactly the same. I haven't seen weak references; that would be an invention.

There are _expand-all_ type functions; not all the same.

Could it be a library function? Not one that supports everything in every implementation. The code walker support would help.

What if an implementation has a &foobar keyword that is supported in its macro lambda lists? A portable expander that doesn't know about this won't properly handle macros that use it. (It will handle global macros because it just calls those, but _expand-all_ has to itself implement _macrolet_ ).

Code walking is done, with ugly portability switching and whatnot.

Also w.r.t. that, add:

\- _useful accessors on macro environment objects!_

You can't do anything with a macro &env now other than pass it to macroexpand or macroexpand-1. It holds useful information like "is X a lexical variable in this scope?"

Speaking of lambda lists:

\- standard parser for lambda and macro lambda lists.

</comment></comment></comment></comment></comment></comment><comment><USER6> That's a very good question. I asked this question at a dinner after European Common Lisp Meeting in Madrid in 2013, a wonderful, memorable gig, BTW. I was surprised how unanimous CL elites were on this subject. They were strongly against even small, incremental improvements or additions. IMHO, it would be nice to have a standard socket library, for example. One of the reasons mentioned was cost of the standardization, including updates of all the implementations. I kind of understand it, but, on the other hand, it makes me a bit sad. Things either grow, even very slowly, or become fossil.

</comment><comment><USER7> I served on NCITS/J13 many years ago when we were trying to decide whether to revise the standard or merely reaffirm the old one. I believe we chose the latter course after many months of discussion but I don't remember why. Was anybody else here on the committee who remembers this? My vague recollection was that there were many directions we could have gone with a revised standard and we couldn't come to a consensus that wouldn't have ended up splitting the community into factions.

</comment><comment><USER8> I think most standardization in the LISP sphere happens around RnRS family of standards, ie Scheme.

<comment><USER9> RnRS are barebone compared to ANSI CL, and the last few versions of Scheme suffered severe resistance from the community.

<comment><USER10> do you think its because they got old and fat?

(sorry for being snarky, there is a huge subjective difference between r5 and r6)

</comment></comment></comment><comment><USER11> There is no reason to build a second Common Lisp. Those ideas are all fairly well represented, and you only need something new if you're diverging to different ideas: shen or haskell for types and values, julia for method dispatch, or pony for safe concurrency.

<comment><USER12> so, there's nothing to improve in CL? My experience seems to be almost diametrically opposed to yours. CL seems a fossil from 20+ ago that hasn't incorporated any of the Computer Science learnings and advancements that have been made since its standardization.

<comment><USER13> Can you elaborate?

<comment><USER14> Monads?

<comment><USER13> Are monads an /advance/, or are they just a language feature that might be nice in some cases, pointless or harmful in others -- like any other feature?

<comment><USER7> Some monads like the maybe monad would be a dramatic improvement over just defaulting everything to nil everywhere. Likewise error monads would nicely complement the existing CL error mechanism.

You can get some monad behavior in CL now. Bind is fairly easy to write in CL but unit is messy. And CL's lack of automatic currying doesn't help.</comment></comment></comment></comment></comment></comment>


Building better software with better tools: sanitizers vs. Valgrind - <AUTHOR> https://lemire.me/blog/2019/05/16/building-better-software-with-better-tools-sanitizers-versus-valgrind/ <comment><USER2> > Sanitizers are a game changer, they bring C++ closer to languages like Java > and Rust.

This is a stretch, IMO. I suppose it is ever-so-slightly-closer.

> They do not bring the safety to production, since you probably do not want > to use sanitizers in production or release

You're right, they're not intended for use in production -- until now! ARM dedicated some virtual address bits to tagging memory [1][2][3] for ARMv8 so that we can have sanitizers in hardware. Imagine: chrome on your smartphone being protected!

[1] [https://developer.arm.com/docs/ddi0487/latest/arm- architectu...](https://developer.arm.com/docs/ddi0487/latest/arm-architecture- reference-manual-armv8-for-armv8-a-architecture-profile)

[2] [https://clang.llvm.org/docs/HardwareAssistedAddressSanitizer...](https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html)

[3] [https://arxiv.org/abs/1802.09517](https://arxiv.org/abs/1802.09517)

</comment><comment><USER3> > Sanitizers ... do not bring the safety to production, since you probably do > not want to use sanitizers in production or release

My team runs ASAN in production. We run lots of servers, and we have load balancing that keeps CPU utilization equal across servers. ASAN binaries are slower (maybe 1/2 throughput / 2X "local" cpu-bound latency?) but not so much slower that running it on a small fraction of our servers means we can't meet our SLO. And it's been a huge help to us. Once in a while, we have some segfault that's pretty mysterious otherwise, as the stack trace where memory corruption is discovered can be totally unrelated to the stack trace where the problem was caused. If it happens on the ASAN servers, the root cause is instantly obvious.

TSAN is more problematic to run in production; it's a _lot_ slower.

<comment><USER4> Yes, thread-sanitized code is unbearably slow. Plus, you cannot use both ASAN and TSAN in the same build (but either can be combined with UBSAN).

</comment></comment><comment><USER5> The distinction between "sanitizers" and "Valgrind-like" drawn here is quite arbitrary. I _think_ the core distinction being drawn is that "sanitizers" use compiler-inserted instrumentation and "Valgrind-like" tools use dynamic binary translation, though the author doesn't make this clear.

The conclusions drawn are questionable. The author states that "sanitizers" are fast and "Valgrind-like" tools are slow, but it actually depends on the tool. Some sanitizers are much faster than others. Some dynamic binary translation tools (e.g. DynamoRio's Dr Memory) are much faster than Valgrind. It wouldn't be hard to come up with examples where a compiler-based sanitizer is slower than a dynamic binary translation tool. It all depends on what the tool is actually checking.

Items 3 and 4 are also questionable. It's certainly possible to configure dynamic binary translation tools with customized function-specific behavior. Dynamic translation tools are generally even easier to use than sanitizers because you don't have to modify your build at all, you can just run tests under some kind of wrapper command.

<comment><USER6> He doesn't use the term "Valgrind-like". He only talks about Valgrind, which he calls a "great tool" (he's right!). But he is evangelizing sanitizers, in clang and gcc, which are relatively new. And, yes, they do work by adding instrumentation at compile-time, which allows them to be much faster than Valgrind (which does all its analysis at run-time). See: [http://btorpey.github.io/blog/2014/03/27/using-clangs- addres...](http://btorpey.github.io/blog/2014/03/27/using-clangs-address- sanitizer/)

Sanitizers are great tools, too. Maybe you can quibble about his item 3, but he's dead on with item 4. If you have tests, you add a couple compiler flags, and then you'll find memory problems automatically with your unit tests (without much slowdown).

<comment><USER7> I currently work in the DNA analysis industry. We have some pretty massive data sets and computational challenges. We use C++ for the heavy lifting. There's no way we'd be able to valgrind anything but toy input (valgrind's performance cost is prohibitive) -- and there's so many different possible inputs and code paths that it'd be effectively impossible to automatically generate all possible toy inputs. So we use sanitizers, as many as we can. They're a game changer in correctness validation.

I'd love for fuzzing to be a thing, but even that seems impractical on a large scale (please prove me wrong!) since it's a _lot_ more work than just setting a compile target in cmake and ensuring that sanitizer flags are set for that compile target.

<comment><USER8> The right approach to start fuzzing with AFL, to me, is to recycle existing unit tests or integration tests. In fact if you already have tests that create a record (sorry, struct or class instance), inject them in your part of your application, you're almost. Read your input data from a file and 'there' you go... Paralellizing or distributing an AFL session on dozens of machines is a matter of rsyncing some files.

Sanitizers are also very useful there in C/C++ languages because they're mostly runtime checks. In Ada you had them already for a long time, and you can be very through with your checks (see for example validity checks [https://gcc.gnu.org/onlinedocs/gnat_ugn/Validity- Checking.ht...](https://gcc.gnu.org/onlinedocs/gnat_ugn/Validity- Checking.html) , runtime stack size checks [https://gcc.gnu.org/onlinedocs/gnat_ugn/Stack-Overflow- Check...](https://gcc.gnu.org/onlinedocs/gnat_ugn/Stack-Overflow- Checking.html#f4) , and the very very powerful Initialize_Scalars that has saved me many times [https://www.adacore.com/papers/exposing-uninitialized- variab...](https://www.adacore.com/papers/exposing-uninitialized-variables- strengthening-and-extending-run-time-check) ).

Shameless plug, but if anyone is interested in an introduction to fuzzing (in Ada) I wrote something some time ago that could be useful : [https://blog.adacore.com/running-american-fuzzy-lop-on- your-...](https://blog.adacore.com/running-american-fuzzy-lop-on-your-ada- code) .

Fuzzing is fun !

<comment><USER7> I did a little bit of fuzzing and in general I agree with you about the right approach being to build off of existing unit/integration tests.

But in practical terms, that's still a _lot_ more than "add this compiler flag" or "swap out this library".

</comment></comment></comment></comment></comment><comment><USER9> Why "versus"? You use both, of course. And additionally, you use static analyzers like clang-tidy, cppcheck, PVS, you-name-it. And you're _still_ gonna be miles away from Java and Rust w.r.t. safety. Undefined behavior is the bane of the C-language family.

</comment><comment><USER10> Sanitizers and Valgrind are nice, but you need a comprehensive test suite to really benefit from them. They only detect problems that are triggered by your testsuite. This is a far cry from statically proving that your software is free from e.g. use-after-free mistakes.

<comment><USER11> No test suite, no problem. Just run in a production staging area or deploy to beta users.

<comment><USER12> That's better than nothing, but it would still be no proof that the are no issues, as uncommon behaviour/access patterns could take some time to appear (or will only show up after other services are introduced).

</comment></comment></comment><comment><USER13> Yesterday a coworker had an issue where ASAN wasn't finding a std::vector out of bounds error. It turns out the code doing the deference was in libc++, which was not ASAN instrumented even though his program was. Valgrind found the error right away. They're all great tools with their own pros and cons. If you have the testing infrastructure, use all of them.

</comment><comment><USER2> Note that valgrind can also detect uninitialized reads (or conditional considered uninitialized memory). This is possible with MSan but MSan is a little more challenging to use than ASan+UBSan or TSan.

In the years that I've used the sanitizers, I have yet to discover a false positive. It's always been a real bug.

<comment><USER14> I tried getting MSan to run but it never links properly for me.

</comment></comment><comment><USER15> Can someone explain how windbg is valgrind- like? I always considered it a debugger.

<comment><USER16> windbg has many powerful plugins, and some do automatic verification (or talk to tools that do so), so it can be a tool kit for verifiers like valgrind is.

<comment><USER15> Interestibg. Are there advanced blogs or so out there, demonstrating in the real world? Raymond chen seems to only touch it's surface.</comment></comment></comment>


Why gamers are a great fit at the gym - <AUTHOR> http://www.cnn.com/2011/10/14/health/video-gamers-bodybuilders-fitocracy/index.html

<comment><USER2> It seems like the argument boils down to "someone who can obsess over and get really good at one thing can also do the same with another thing." Note that I don't mean "obsess" to be pejorative.</comment>


Salvatore Sanfilippo talks Redis design and internals - <AUTHOR> http://thechangelog.com/post/2801342864/episode-0-4-5-redis-with-salvatore-sanfilippo

<comment><USER2> Do you know the feeling of your registered voice sounding crap? Add to this your English skills sounding even worse ;)

Well talking with @pengwynn was great and I hope that English skills apart you will find the interview interesting. If I said stupid things, I'm here to reply to any question (more probably tomorrow morning as it's late here in Italy)!

<comment><USER3> Your English is perfectly understandable. Don't worry about it. ;-)

<comment><USER4> It does make me wonder about current audio language translators. I wonder how much progress people have made with those.

</comment></comment></comment><comment><USER5> Loved the interview, very interesting, perfectly clear. Helped me a lot to understand the internals. Specially interested about the replication explanation. Great work, Salvatore!

</comment><comment><USER6> How can I scale redis Pub/Sub system when I need more messages/second?

<comment><USER2> Pub/Sub is receiver-intensive, not publish-intensive, so basically if you have many subscribers the best thing you can do is to setup a few slaves.

PUBLISH commands are propagated on slaves. So you can attach your subscribers in a random slave.

Another approach is, if you don't have any pattern matching subscriber, to shard based on the hash of the key.

</comment></comment><comment><USER7> cool :) great to hear some of your thoughts man!

</comment><comment><USER8> listening and tweaking my notes for the redis workshop which is due friday :)</comment>