Traveling Salesman Problem Visualization [video] - <AUTHOR> https://www.youtube.com/watch?v=SC5CX8drAtU <comment><USER3> A much better method than those that are shown in the video is to optimize over the subtour elimination polytope by using a cutting plane algorithm. The necessary separation problem for the set of the subtour elimination inequalities can be solved by computing a minimum cut.

This gives a usually very good lower bound for the value of the minimum tour. Unluckily the optimum solution over the subtour elimination polytope can be fractional. This problem can for example be solved by branch & bound (or even better branch & cut) algorithms or by randomized rounding (a more heuristic method for which in general one can nevertheless often prove strict mathematical results).

Full Disclosure: I currently write a PhD thesis in mathematics on some geometric questions in the theory of cutting planes.

<comment><USER4> Could you either 1) simplify the explanation using simpler english or 2) provide a paper or thesis which illustrates your point?

<comment><USER5> Remember linear programs? E.g.

min 10x + 5y s.t. x <= 10 y >= 5 x+y = 8

(Not very useful example)

Now we can extend normal linear programs to what is known as Mixed-integer linear programming (MILP). This allows us to specify the domain of variables, i.e. we can say variable x must be a positive integer or variable y must be binary.

(This extension instantly makes solving generic MILPs NP-hard because obviously we can transform any e.g. 3-SAT problem into an equivalent MILP problem)

MILPs can also be used to solve the Traveling Salesman (TSP) problem. You use a binary variable for every possible pair of cities or edge the salesman could travel on that specifies if the edge is used or not. Since you want a loop, you also add a constraint for each city that it is entered and exited exactly once using the edge variables.

At this point, you could think we are done: we enter and exit each city once, so we have a loop and since we minimise the sum of edge costs, we also have the optimal loop.

Unfortunately, our formulation is incomplete because it allows a loophole for the solver: doing multiple tours or _subtours_.

If we have a TSP with 5 cities, the solver could choose the edges such that you have two loops or subtours, e.g. one with 3 and another with 2 cities. That would be perfectly consistent with our formulation since each city is still entered and exited exactly once. It's not a valid solution for the TSP however since we require one single loop, not two unconnected ones.

To fix this problem, we need to add what are known as "subtour elimination constraints". These check that for every partition of our city set into two sets A and B, the cities in A and B are connected, i.e. we have one edge leaving A for B and another returning from B to A (or vice versa).

Unfortunately, since we need to do this for every possible combination of sets A and B, we would have to add exponentially many of these subtour elimination constraints, and of course for very large TSPs even _enumerating_ all sets A and B is already infeasible.

So what is done in practice is to first leave out all subtour elimination constraints, since this is what causes the exponential explosion (so far, our problem was polynomial in size). You then solve the linear relaxation of the MILP, i.e. you pretend that the binary constraints on the edge variables do not exist and use Simplex to solve the resulting linear problem.

Then you create a weighted graph: the cities become vertices, and the edge weights are given by the (fractional) values of the edge variables. For this graph, compute the minimal cut using your favourite polynomial time algorithm. This gives you three things: a partition of the cities into two sets A and B, and a value for the flow between these two sets. If the flow is less than 2, you have found a violation of the subtour elimination constraint for sets A and B. You add that one constraint to the solver ( _cutting_ the invalid solution) and start anew.

This process can be fully integrated into a branch & bound or branch & cut solver for MILPs.

(I'm sure wolfgke can give a much better explanation, though)

<comment><USER3> revelation alrady explained the idea pretty well, so I will give a different explanation that outlines some subtile points that are rarely mentioned in the literature (IMHO):

In discrete optimization one often has the job of minimizing a linear function over some set of 0/1 vectors V (this could for now be also an arbitrary set of points in R^d). The good news is: This is equivalent to optimizing over the convex hull of V and thus optimizing over some polytope P. The bad news is: This polyhedron is often very complicated to describe in terms of inequalities (which exist by Minkowski's theorem). So give up the dream? No - we just approach a little bit differently.

Let A, b be a rational (!) matrix/vector. Then a theorem by Meyer says that

conv {x \in Z^m x R^n: A x <= b}

again forms a rational polyhedron. Indeed lots of problems (for example TSP) can be written in this form (subtour elimination polytope for TSP). Again the problem is finding the inequalities that describe it in a reasonable time. One way to handle this problem is adding inequalities iteratively until we get to the (mixed-)integer hull. Indeed one can show that if n=0 (ILP - <USER2> linear programming) or the integral variables are 0/1-valued such algorithms exist and can in principle be implemented (though they are rather slow; for the pure integer case something to google for is "Gomory's cutting plane algorithm"). Note that in the general MILP setting finding such an algorithm is (at least for practical purposes (yes, I know about the famous Del- Pia,Weismantel paper (A. Del Pia, R. Weismantel, On convergence in mixed integer programming), I know about t-branch split disjunctions (Dash,Dobbs,Günlük ,Nowicki,Swirszc - Lattice-free sets, multi-branch split disjunctions, and mixed-integer programming), I know about how Cook-Kannan- Schrijver circumvented this problem (W. Cook, R. Kannan, A. Schrijver - Chvátal closures for mixed integer programming problems); so you don't have to correct me ;-) )) still an unsolved problem (the theoretical side here is different, see paper references - but I don't want to go into these very subtile details). This idea to iteratively add inequalities as necessary is called "cutting plane algorithm".

For the subtour elimination polytope we have the property that the number of inequalities is exponential in the number of vertices. Nevertheless by LP duality and Carathéodory's theorem we just need at most the number of variables of inequalities to certify the optimality of a solution. So we "theoretically" just have to be clever and add the right inequalities ( ;-) ). For a given point, finding a violated inequality (or assure that none is violated) is called the "separation problem". This problem can be solved for the subtour elimination polytope. The good news is: When it can be solved for an arbitrary point (not only a vertex) we can already optimize in polynomial time over the polyhedron (just apply ellipsoid algorithm). The bad news is: The ellipsoid algorithm is painfully slow. So we have to be more clever (but here my knowledge ends - let's say: From here practise begins ;-) ).

I remark that a modern approach to avoid an exponential number of inequalities is to use so-called "extended formulations" (the basic idea is to formulate the polyhedron as a projection of a more simple polyhedron). This can be applied for the subtour elimination polytope (the best reference I can give is the PhD thesis of Kanstantin Pashkovich (full disclosure: I know him personally): [http://edoc2.bibliothek.uni- halle.de/hs/urn/urn:nbn:de:gbv:m...](http://edoc2.bibliothek.uni- halle.de/hs/urn/urn:nbn:de:gbv:ma9:1-2666)). But in general this approach has strong limitations. For example one can show that finding a maximum matching is possible in polynomial time (Edmond's matching algorithm), but there exists no extended formulation of the matching polytope of polynomial size ([http://arxiv.org/abs/1311.2369](http://arxiv.org/abs/1311.2369)). If you are interested in the theory of extended formulations, besides the PhD thesis of Kanstantin Pashkovich I can recommend the famous Yannakakis paper that laid out the whole theory (Yannakakis - Expressing combinatorial optimization problems by Linear Programs [http://www.sciencedirect.com/science/article/pii/00220000919...](http://www.sciencedirect.com/science/article/pii/002200009190024Y)) and the survery paper by Conforti, Cornuéjols, Zambelli (Conforti, Cornuéjols, Zambelli - Extended formulations in combinatorial optimization).

</comment></comment></comment></comment><comment><USER6> If you are looking for a simple, powerful but fast open source library that solves not only simple but real world TSPs (with time windows etc) and the more complex vehicle routing problems then have a look into jsprit: [https://github.com/graphhopper/jsprit](https://github.com/graphhopper/jsprit)

(note: I'm one of the GraphHopper founders)

</comment><comment><USER7> This is really nice. I find this kind of visualization making understanding algorithms way easier.

</comment><comment><USER8> This is awesome

</comment><comment><USER9> Why is this linked to someone's G+ page?

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

<comment><USER10> I assumed it was someone involved with the project, but since there's no obvious sign of that, we've changed the url from [https://plus.google.com/+TimHarfordEcon/posts/bWijuaPkzfR](https://plus.google.com/+TimHarfordEcon/posts/bWijuaPkzfR).

<comment><USER11> Tim Harford is a UK economist who also presents "More or Less" on BBC Radio Four. He draws attention to a lot of other stuff on his social media profiles.

[http://www.bbc.co.uk/programmes/b006qshd](http://www.bbc.co.uk/programmes/b006qshd)

So although it's not the original source (and the original source is better) he's not just some Internet random.</comment></comment></comment>


A speech-to-text practitioner's criticisms of industry and academia - <AUTHOR> https://thegradient.pub/a-speech-to-text-practitioners-criticisms-of-industry-and-academia/ <comment><USER3> I work in a startup doing STT. We have reached SOTA on lowest CER in our language among industry. The main reason we are doing well is not because we have smart engineers tuning on fancy model, but rather we developed novel method to collect tremendous amount of usable data from via internet (crawling speech and text transcripts, using subtitles from movies, etc). Implementing interesting paper improves 1%, but pouring in more data improves 10%. I guess this is why big guys aren't exposing what data they've used. It takes a fortune to collect just 100 hours of clean speech-to-text labeled data, and they will never meet user expectations in market.

<comment><USER3> Also, we have developed our internal framework that eases pretraining - finetuning to subtask pipeline. After months of usage it required a lot of refactoring to match the need of all forms of DNN models. I would like to hear from other ML engineers if they have a internal framework which generalizes at least one subfield of DNN(nlp, vision, speech etc)

<comment><USER4> Hi, my name is Alexander, I am an author of both Gradient pieces, Open STT and silero.ai

Interesting We did mostly the same Did you open source your data as well?

<comment><USER3> I don't think my superiors are going to open our source code. Thanks for letting me know about your project

</comment></comment></comment></comment><comment><USER5> I agree with many points of the article. I do think we're closer to an English STT ImageNet equivalent than you think. For most other languages I don't think it's possible until data is collected/released, or some kind of automatic data collection process becomes standard that can generate 10k hours of usable training data for each of a bunch of arbitrary languages.

Seeing better "state of the art" results on librispeech is far less interesting to me than two recent developments:

\- Facebook's steaming convnet wav2letter model/arch, pretrained on 60k hours of audio, which I've been using for transfer learning with great results. It's fast, not too huge, runs on cpu, and has excellent results without a language model.

\- The librilight dataset. I aligned 30k hours of it (on CPU, on a single large server, in about a week) and my resulting models are generalizing very well.

<comment><USER6> > The librilight dataset. I aligned 30k hours of it (on CPU, on a single large > server, in about a week) and my resulting models are generalizing very well.

Was this using the pretrained model from Facebook? If so, how much custom code did you need to write to get the alignment? I've been looking for a way to take an arbitrary position in a given text and look up where in the corresponding audio it appears, but I'd prefer not having to train a speech recognition model to do that.

<comment><USER5> I train my own models here: [https://talonvoice.com/research/](https://talonvoice.com/research/)

I used my wav2train project, which is based on Mozilla's DSAlign: [https://github.com/talonvoice/wav2train](https://github.com/talonvoice/wav2train)

DSAlign only generates roughly sentence level alignment, which still may be a good start for you. It works by segmenting the audio by pauses, transcribing the segments with a strict language model, then figuring out where in the text the segments are based on the transcript. wav2train then generates audio segments using the alignment, but you could edit it to stop there and just look at the tlog file that tells you where the sentences are in the original file.

I've also used the Gentle Forced Aligner and Montreal Forced Aligner. MFA wasn't too hard to set up for English, but I don't recommend running it on large batches of audio, as it was slow and unreliable at large scale for me.

</comment></comment></comment><comment><USER7> As another practitioner, I find it odd that the author mentions frameworks such as OpenNMT but not Kaldi when comparing SST toolkits/frameworks. Overall, I get the feeling that the author hasn't worked with speech data for too long.

I agree with some of the general points the author makes, such as papers having tons of equations just for equations sake, reproducibility, not enough details to reproduce (in a conference paper..), chasing SOTA on some dataset, but these aren't limited to speech processing research. Large companies don't release their internal datasets for voice search (Google Assistant, Alexa, etc.), call center, or clinical applications, as there is no incentive to do so and also because they likely can't for licensing and data rights issues. By the way, what's the situation for the author's OpenSTT corpus? Did the people speaking on the thousands of hours of phone calls release them under a free license?

<comment><USER8> > As another practitioner, I find it odd that the author mentions frameworks > such as OpenNMT but not Kaldi when comparing SST toolkits/frameworks.

[unpopular opinion ahead] Maybe that's because Kaldi represents the ultimate culmination of the author's critique:

• the provided scripts are useless to anyone without access to the academic datasets they use

• Kaldi is very cumbersome and overly complex to use and adapt (most of the toolchain relies on __exact __copies of entire directory trees)

• Kaldi is a __research __tool by researchers for researchers and not in any way shape or form aimed at practitioners in search of a deployable solution

• Kaldi is very poorly documented (from a user perspective) and focuses on recipes for your own experiments, not writing applications and roll out

In summary, Kaldi isn't a practical toolkit. It's a framework for R&D on speech-to-text.

<comment><USER9> > the provided scripts are useless to anyone without access to the academic > datasets they use

Kaldi team shares all datasets when possible on [http://openslr.org](http://openslr.org), a major collection of speech datasets. Librispeech and Tedlium were major breakthrough in their times. When everyone in research trained on 80 hours WSJ and Google trained on 2000 hours private dataset, 1000 hours of librispeech was a game changer.

> Kaldi is very cumbersome and overly complex to use and adapt (most of the > toolchain relies on exact copies of entire directory trees)

On the other hand the Kaldi API is very stable. You still can run 4 year old recipes with simple run.sh. Any tensorflow software gets obsolete once in 3 months when TF API changes.

Kaldi recipe results are usually reproducible up to the digit and you can even see the tuning history (which features did improve, which didn't).

> Kaldi is a research tool by researchers for researchers and not in any way > shape or form aimed at practitioners in search of a deployable solution

There are hundreds of companies all over the world building practical solutions with Kaldi. The only thing that Kaldi team should do is to ask users to mention it.

> Kaldi is very poorly documented (from a user perspective) and focuses on > recipes for your own experiments, not writing applications and roll out

There are also dozen of projects on Github which enable use of Kaldi with simple pip install or docker pull. kaldi-gstreamer-server, kaldi-active- grammar, vosk and many others.

</comment></comment></comment><comment><USER10> Interesting (possible) additional piece of the puzzle on the industry:

As opposed to the explosion of CV training data, big players may find themselves thinking they _can 't_ expose the tagged raw data for audio the same way that tagged raw data for images was exposed to the public. The privacy backlash on the way some previous public-release datasets have been used was notable.

Has the ecosystem changed so the kind of mass-collaboration that led to ImageNet can't be repeated due to privacy concerns of how the audio could be (ab)used?

</comment><comment><USER11> Very good explanation of the current state of the art in STT. I have also personally gone down this rabbit hole(especially the CTC bit) and agree 100% with what the author says. My personal viewpoints:

1\. To have an ImageNet moment, we should have an ImageNet. LibriSpeech doesn't cut it. We should have an equivalent SpeechNet. Problem is visual language is one, while speech languages are many. So we should have an ImageNet for every language? And train for every language?

2\. What is an ImageNet moment? Personally, though ImageNet has contributed a lot, similar to speech and NLP, even vision applications have promised more and delivered less in real world scenarios. And just like speech and NLP, only the big boys actually provide solutions in vision which shows in vision also they have access to better data which they don't share.

<comment><USER12> I'm no way an expect in any of this, but I'd expect that there would be a lot of features common between a lot of languages, akin to the International Phonetic Alphabet [0]. Pre-training on _all_ languages to get those shared features could make it easier to fine-tune eg. English on top perhaps. Or not, just pondering here.

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

<comment><USER13> Good luck finding records of the 6000+ existing languages...

<comment><USER9> You can check [https://github.com/festvox/datasets- CMU_Wilderness](https://github.com/festvox/datasets-CMU_Wilderness), it has recordings of 700 languages created from New Testaments from [http://www.bible.is/](http://www.bible.is/)

</comment></comment></comment></comment><comment><USER14> TDLR:

\- the big boys (Google, Baidu, Facebook etc - basically FAANG) are getting SOTA using private data without explicitly stating it

\- their toolkits are too complicated and not suited to non-FAANG-scale datasets/problems

\- published results aren't reproducible and academic papers often gloss over important implementation details (e.g which version of CTC loss is used).

\- SOTA/leaderboard chasing is bad and there's a general over-reliance on large compute, so non-FAANG inevitably end up overfitting on publicly available datasets (LibriSpeech).

I'm far from an expert, but having spent the last 6 months familiarising myself with the STT landscape, I would say I mostly agree.

First, the author wants more like Mozilla's Common Voice. Not sure if he/she is aware, but I think the M-AILABS speech dataset ([https://www.caito.de/2019/01/the-m-ailabs-speech- dataset/](https://www.caito.de/2019/01/the-m-ailabs-speech-dataset/)) will go a long way to "democratizing" STT.

Second, agree that the toolkits are all complicated and weighted in favour of highly parameterized NNs. This works great if you have FAANG-style data (and hardware), but really isn't pushing the field forward in other respects (compute/training time, parameterization/etc). In all fairness, though, HMM- based frameworks like Kaldi are notoriously complex and take significant effort to wrap your head around. I think speech is just inherently more complex than image or text.

Third - and this applies to ML in general - agree that papers all too often gloss over the important details. I see no reason why publications shouldn't all be accompanied by code and dataset hashes.

I think we're seeing FAANG all converge on a non-optimal solution, simply because we've effectively removed resource constraints. When your company doesn't blink at spending a few million on creating its own datasets, and you have massive TPU farms available at your disposal, there's no incentive to focus on sample- or compute- efficient models.

What's more, they also have the resources to market their successes much more effectively. Think open source frameworks, PR pieces, new product releases, and so on.

This effect is two-fold. First, it creates a lot of noise that crowds out the slower, smaller contributors. Second, it also draws a lot of junior research attention - who would want to risk 4 years of their life on a pathway that might not work when NNs are here today and there's clear evidence that they _work_ (albeit only for certain problems in certain environments with certain datasets).

<comment><USER15> Facebook released a pretty impressive SOTA system with public data sources a few weeks ago

<comment><USER16> What does "SOTA" mean in this context; all I could find is "Software Over the Air" but I'm unsure of what it means in a Speech to Text context

<comment><USER17> "State of the art".

But I think your original question is still great:

What _does_ state of the art mean in this context?

</comment></comment></comment></comment><comment><USER18> On a somewhat related note, why does the Google STT engine have a grudge against the word "o'clock"?

If you say "start at four" it gives you the text "start at 4." So far so good, but if you say "start at four o'clock" you just get "start at 4" again, not "start at 4:00" like you wanted. In fact you can say the word o'clock over and over for several seconds and it will type absolutely nothing.

<comment><USER6> Having recently experienced a similar issue with "filler" words that mysteriously disappeared in a transliteration pipeline, I'd guess that this is due to an artifact in the training data. Most likely the STT engine was trained on transcriptions created by lazy humans who simply wrote "4" when they heard "four o'clock", so the engine learned that "o'clock" is a speech disfluency just like "umm" that usually doesn't appear in writing.

</comment></comment><comment><USER19> As someone who thinker with Text to Speech (TTS), I can say this apply to TTS as well. Good model such as Tacotron2 rarely scale beyond clean ( good text and speech alignmen ) large ( > 12 hours ) datasets.

</comment><comment><USER20> I see the same issue in optical flow. Everyone and their grandma are overfitting Sintel.

But everyday phenomena, like changing light conditions or trees with many small branches cause the SOTA to fail miserably.

I even approached research teams with my new data set that they could use to measure generalization, but the response has been frosty or hostile. Nobody likes to confirm that their amazing new paper is worthless for real world usage.

<comment><USER21> This is one of the reasons why I never got myself to finish my master's thesis.

My advisor advised me to use synthetic data, because the work I was supposed to build upon did as well.

I insisted on real data which I generated myself and, unsurprisingly, it showed how undoable this whole thing was(using stereo audio data to localise speakers) with the suggested methods.

</comment></comment><comment><USER22> This is quite interesting, looking at chip technologies, algorithms, actual papers and industry processes together.

Neither debunking nor selling AI but a big picture.

</comment><comment><USER23> A lot of it is solving the wrong problems.

'text to speech' is good for tapping people's phones. Voice user interfaces don't get good enough until they can hold a conversation. That is, ask for clarification if you don't understand what people say. Superhuman performance at TTS isn't good enough to replace a keyboard with a backspace button.

<comment><USER24> Are you mixing up STT and TTS here? Maybe I'm misunderstanding what you're trying to say.

<comment><USER23> yep, that's the kind of mistake that a human can catch... remember some of those errors are inserted at the transmitter, some along the channel, and some at the receiver. If a receiver is going to get great accuracy, it has to catch errors introduced anywhere!

</comment></comment></comment><comment><USER25> I feel like there is a project waiting to happen (or that I'm unaware of) to use movies/TV and captions to extract well-annotated audio.

While for copyright reasons this dataset likely can't be released publicly, the method to generate it from materials should be possible to release so that IF you have the source, you can get the annotated audio.

<comment><USER26> Audiobooks could be another resource, but they'll only give you a narrator's intonation. On the other hand, at some point it may become easier to train people to speak in a certain way to computers instead of training computers to understand the unclear mumblings of casual speech.

<comment><USER27> > Audiobooks could be another resource

Yes, that's in fact the source of the commonly cited LibriSpeech dataset. It used publicly available recordings from the LibriVox project and has done some cleaning steps as well as alignment of the transcript with the audio to arrive at 1000 hours of cleaned up audio.

The M-AILABS dataset uses LibriVox as well, among other sources, to arrive at 1000 hours of cleaned up data in various european languages.

Overall there's still a large untapped potential in LibriVox data: [https://gist.github.com/est31/1e195c55fab8f95a72393db1519da1...](https://gist.github.com/est31/1e195c55fab8f95a72393db1519da107)

But you'll have to give up properties like gender balancing in your dataset that then has to be counteracted during the learning process, e.g. by having gender-custom learning rates.

<comment><USER5> Facebook's librilight taps this potential. They have a script for easily fetching an entire language from librivox, and I have a pipeline on top of that for book fetching and transcript alignment that I've successfully trained from.

I think the next step here needs to be auto-finding librivox source books that aren't in e.g. Gutenberg. I only auto-found books for 75% of English. Only found books for 20% of German. I don't actually know where to look beyond Gutenberg for books that don't have easily linked text. Common crawl? Librivox forums?

(Or you can take Facebook's semi-supervised approach and generate a transcript from thin air instead, but imo that will work better for English than languages that don't have good baseline models yet)

</comment></comment></comment></comment><comment><USER28> What is the hacker's "good enough" tiny lib to take even a small set of single words from my own voice as input through my laptop mic?

<comment><USER29> Pocketsphinx[1]. I used it, and pico2wave along with some old-school interactive-fiction style code to create a "computer" for my open source space game[2] so I can drive the spaceship around by talking to it[3][4].

[1][https://cmusphinx.github.io/wiki/tutorialpocketsphinx/](https://cmusphinx.github.io/wiki/tutorialpocketsphinx/) [2][https://spacenerdsinspace.com](https://spacenerdsinspace.com) [3][https://www.youtube.com/watch?v=tfcme7maygw](https://www.youtube.com/watch?v=tfcme7maygw) [4][https://scaryreasoner.wordpress.com/2016/05/14/speech- recogn...](https://scaryreasoner.wordpress.com/2016/05/14/speech-recognition- and-natural-language-processing-in-space-nerds-in-space/)

<comment><USER28> Ooh, thanks for the links. I'll check these out.

</comment></comment></comment><comment><USER30> When this becomes a solved problem, government agencies will have a field day. So it has to be delayed until most of the world has free speech.

<comment><USER24> That sounds absurd. Government agencies are not holding back an entire industry of researchers.

And surely the countries without free speech would be among the most interested in computer-based eavesdropping.

<comment><USER30> We live in a world where some people have immense power. We, as in engineers and scientists are the enablers.

</comment></comment></comment><comment><USER4> Hi, my name is Alexander, I one of authors of both Gradient pieces, Open STT and silero.ai.

We are planning on adding 2-3 new languages soon (English, German, maybe Spanish), so if you would like us to fully open source everything - <USER2> support us here - [https://opencollective.com/open_stt](https://opencollective.com/open_stt)

A lot of feedback here, very nice!

As with the Russian Speech community for some reason people are willing to share their feedback on third-party forums, but do not bother to write to the author directly.

If you have something to say - please email me - email@example.com or telegram me (@snakers4 or @snakers41) if you would a faster reply.

Also it seemed to me that some of the readers missed that there were actually 2 parts of the article - [https://thegradient.pub/towards-an-imagenet-moment- for-speec...](https://thegradient.pub/towards-an-imagenet-moment-for-speech- to-text/).

With this all addressed, to answer some common criticisms / points raised below:

> Kaldi cool, NNs not cool

Though it is true that production solutions CAN be built with Kaldi (and I have even spoken with people who built them, as well as vosk author), we purposely omitted Kaldi because we believe that it is a technological dead- end. Also it depends a lot on antiquated technology, is very difficult for new-comers etc etc

Another problem is that ... it requires a lot of specific knowledge to add languages. Whereas our approach is just plug-and-play - just add more data!

For example - our best model in production is just 300-500 lines of code in PyTorch.

With so much resources poured in tools like PyTorch, it just makes sense to use tools that are simple / robust / offer a lot of future-proofing and cool features etc etc Also you can ofc switch DL frameworks if you wish =)

Also you can do CV, NLP, etc with PyTorch unlike Kaldi.

As someone noted, does not really matter what you are using, if it suits your compute. Fully e2e approaches still are GAFA scale only, and I just realized why Google even bothers with them - please see my post here [https://t.me/snakers4/2445](https://t.me/snakers4/2445)

> ML APIs changing w/o backwards compatibility

TF does that, and it is a joke. Paid marketing says that TF is cool, but real practicioners (that I know personally) use PyTorch. It is a holywar, but I believe TF just has a lot of captive audience ...

PyTorch core API on the other hand has been mostly stable since 0.4 (now it is on 1.4)! (!!!) No one speaks about this for some reason.

> Deep Speech is a bad starting point

Yes and no. Vanilla huge LSTMs are really GAFA scale only. But out networks is at least an order of magnitude faster. Please see this - [https://thegradient.pub/towards-an-imagenet-moment-for- speec...](https://thegradient.pub/towards-an-imagenet-moment-for-speech-to- text/)

> cool open source datasets

Check out Open STT! We have not been able to OSS everything, because Russian corporations would use it w/o even crediting us. But you can support us and change it. Also other languages.

caito.de is really cool, albeit very small common voice - is very call, but on the smaller side libri-light - you have to align it yourself, so no difference really - easier to make it from scratch

Also I do not understand why people use flac, when opus exists?

<comment><USER7> Hi Alexander, I appreciate you posting here; I didn't feel too strongly about this to sign up for an account to comment directly on TheGradient.

> Kaldi cool, NNs not cool

It seems you're misrepresenting things. Kaldi models are NNs, they are trained using a sequence-level objective function (LF-MMI, not entirely unlike CTC), they can also be trained completely end2end (without using HMM-GMM systems to generate alignments for CE regularization and obtaining lattices). The Kaldi authors are currently working on moving NN training to PyTorch.

The fact is that, if you need a complete easy-to-use off-the-shelf solution ("Just give me the transcription of that audio file!"), Kaldi is not it. You need to train models and you need to use other projects, such as vosk, kaldi- gstreamer-server, etc. or build your own solution. People have done so and use it in production successfully. Use the right tool for the job, a poor workman blames his tools, yadda yadda.

Perhaps it's just that speech recognition IS difficult, there is no one-size- fits-all-use-cases solution, and when people can't figure out Kaldi, they seem to think they need to throw out everything and pray that CTC will fix it somehow. Get sufficient data in your domain and things might work better. Don't use a couple of audiobooks for training, expecting that it will perfectly transcribe Indian accented English callcenter conversations. I really appreciate your effort on releasing OpenSTT, in particular that you provide data in different conditions and domains (phone calls, lectures, broadcast radio, etc.). This is useful no matter what particular tool (Kaldi, DeepSpeech, w2l, RNN-T, transformers) people are using.</comment></comment>


Ask HN: Recommendation on external monitoring service provider - <AUTHOR> Can you please recommend and share experiences on monitoring service provider? I am looking to monitor different ips and ports over the internet with flexible schedule and alerting. One I am considering is UptimeRobot , but would like to hear other recommendations as well... Thanks a lot! <comment><USER2> If you're looking for something that will give you analytics, trending alerting etc with not only IPs and ports but also processes, containers, services, you can check out sysdig - www.sysdig.om

<comment><AUTHOR> thanks, I am looking into remote monitoring of other services I am using like APIs, etc and to get notified if they fail...

</comment></comment><comment><USER3> New Relic, DataDog, PagerDuty, Pingdom, apex.sh

<comment><AUTHOR> Thanks, will take a look</comment></comment>


Shadow Brokers: NSA Exploits of the Week - <AUTHOR> https://medium.com/@msuiche/shadow-brokers-nsa-exploits-of-the-week-3f7e17bdc216 <comment><AUTHOR> _" If intelligence agencies invest heavily in sabotaging technology products it means companies with valuable assets need to invest more in Incident Response."_

There is a seed of a startup company right there.</comment>


Grabr Raises $3.5M to Help Travelers Monetize Unusued Checked Luggage Allowance - <AUTHOR> http://www.forbes.com/sites/grantmartin/2016/08/25/grabr-raises-3-5-million-in-funding-to-help-travelers-monetize-unusued-checked-luggage-allowance/#1f4a47a16f68 <comment><USER2> I consider myself a travel budget, but when I travel with a carry-on only, it's to skip having to wait for baggage. I don't think I'd go through this for $10, which also implies _sourcing the item(s)._</comment>


Beyond the Milky Way, a vast galactic wall 1.4b light-years across - <AUTHOR> https://www.nytimes.com/2020/07/10/science/astronomy-galaxies-attractor-universe.html <comment><AUTHOR> [https://iopscience.iop.org/article/10.3847/1538-4357/ab9952](https://iopscience.iop.org/article/10.3847/1538-4357/ab9952)</comment>


How Justice Scalia defended digital privacy and also held it back - <AUTHOR> http://motherboard.vice.com/read/justice-scalia-digital-privacy-and-the-third-party-doctrine <comment><USER2> I'll admit that this is a somewhat strange viewpoint, but I hope that one day the Supreme Court declares cryptographic libraries equivalent to a munition (as it is classified by the Department of State for export control purposes) and thus subject to 2nd amendment freedoms.

<comment><USER3> Second amendment "freedoms" like background checks, prohibition of most types, mandatory licensing, legibility to private regulation, and a minefield of draconian legal gotchas?

No thanks. We'll make our own freedom.

<comment><USER2> It's likely that the NSA has developed far more advanced cryptographic methods that they use internally. If so, then most types of 'strong' crypto are prohibited by virtue of being classified, analogous to the situation with firearms.

Currently cryptography (at least in the United States) is subject to a myriad of legal gotchas, starting with export controls.

The only thing preventing an outright ban given the impetus toward government assured national security is strong lobbying by tech companies and Congress men and women that represent their districts. Codifying that right into precedent will make things like a special 'backdoor' harder to ram through Congress.

<comment><USER3> Your first part doesn't really follow, in that if those methods were independently discovered or otherwise leaked, they wouldn't be illegal. Individuals don't have nuclear weapons due to more than not knowing how to build them.

I'm not _opposed_ to your idea. I just don't see it having long-lasting effects given how laws get perverted. Rather than things being simply not illegal, draconian regulatory regimes are created around them - eg Colorado's recent pot "incorporation".

A "rammed" backdoor seems unlikely to me, if only because it would be an immediate rallying point for the entire tech community, businesses included. A creeping regulatory regime that _slowly_ boils the frog is more worrisome.</comment></comment></comment></comment>


On the reception and detection of pseudo-profound bullshit [pdf] - <AUTHOR> http://journal.sjdm.org/15/15923a/jdm15923a.pdf <comment><USER2> "The precise reasons that people see profundity in vague buzzwords or syntactic but completely random sentences are unknown." Here is my guess: people probably find that understanding profound sayings does tend to involve more thinking than other sentences... so people probably come to associate having to think about a sentence more with profundity.

</comment><comment><USER3> Damn, you beat me to linking it by 2 minutes. :D</comment>


DOM-less Polymer-like approach to building complex JavaScript apps - <AUTHOR> I've been playing with the idea of a DOM-less Polymer-like library. After few days of hacking this is what I came up with:
https://github.com/arodic/carbon.js
I like Polymer, but I got tired from creating DOM elements and templates for every single piece of encapsulated logic so I made something that allows encapsulation and DOM-like composition in pure JavaScript.
It works with Polymer (with imperative binding only at the moment).
Let me know what you think! <comment><USER2> This would make a good "Show HN" post.

Start the title with "Show HN :".

Put the URL in the other box.

Don't enter text in the main box.

It might make sense to put add additional information in the README.md for the repository.

<comment><AUTHOR> Will do! Thanks for the suggestion.</comment></comment>


Yahoo Aims to More Deftly Blend Ads With Content - <AUTHOR> http://www.nytimes.com/2014/02/24/technology/yahoo-aims-to-more-deftly-blend-ads-with-content.html

<comment><USER2> "However, the company is also beginning to push into two of the hottest areas of Internet advertising: stream ads, in which marketing messages are mixed in with the feed of news headlines and other information, and so-called native ads, which are sponsored articles or photos that resemble regular editorial content."

I thought the FTC demands that search engines distinguish between organic and paid results?[1]

[1] [http://ftcbeat.com/2013/06/30/ftc-to-search-engines- distingu...](http://ftcbeat.com/2013/06/30/ftc-to-search-engines-distinguish- paid-search-results-or-risk-ftc-action/)</comment>


Ask YC: What is the best way to learn Perl? - <AUTHOR>

Language wars aside, what is the best way to learn Perl if one wants to use it primarily for web development? There are so many books and websites out there, it's hard to separate the good from the bad. If it helps, I am pretty proficient in PHP and know the basics of Ruby and Python. <comment><USER2> I work in a company that writes almost everything in Perl, and as a result I have personally written tens of thousands of lines of the stuff, and I maintain and debug several times that amount. This code is used for everything from serving web pages to interacting with carrier SMS-C to number crunching. So believe me, Perl is definitely the devil I know.

That being said, the only advice I can offer you is unsolicited: don't learn Perl. Perl is a very powerful language in a lot of ways and in its day it was the only game in town for serious rapid development. It is fundamentally broken in a lot of ways though, and unlearning the brain damage that you will get from becoming a Perl expert could take a very long time (it has taken me years). I won't launch into a diatribe about these language characteristics unless you ask me to, but do not doubt that I could.

People talk a lot about how great CPAN is, and it does have a certain charm, but it is ultimately more trouble than it is worth. There are CPAN modules for everything, but just as often as not they are flawed or buggy or too limited and you don't realize this until you've sunk a considerable amount of time into the problem. Just the other day a colleague wasted an afternoon trying to get LWP::Parallel to work as advertised before realizing that it could not be done.

Perl is great for building prototypes, but when you go to deploy the stuff you realize that DBI fundamentally can't do connection pooling in the way you want, and mod_perl has an execution lifecycle that can only be described as 'whacky' (depending on how you include your handler modules, sometimes mod_perl will simply stop evaluating your module when it reaches an error, leaving your symbol table partially filled in with no error warning), and once you've used a couple of CPAN modules they'll all invite their friends and those friends will invite their friends and pretty soon your Apache children are using 15-50 megabytes of _unshared_ memory each. Yeah that's right, the interpreter goes and touches a bunch of pages of Perl 'code' post-fork and blows the COW and now all your RAM is belong to mod_perl. It's really cool when an 8-way Xeon server with 16GB of RAM can only handle a couple of hundred req/s before it starts faulting and crashing Apache children on malloc.

Do yourself a favor and use Ruby instead. Ruby is so much like Perl that you can almost call it a dialect, but just not quite as broken. Pretty broken still, but not nearly so broken as Perl. It has all of Perl's good characteristics and only most of its bad ones. And if the availability of libraries, or the lack of decent threading or other deployment characteristics bother you, then use JRuby which is now basically the fastest production Ruby and can call into all of the Java libraries (which _can_ do connection pooling in the way that you want). Personally I prefer Common Lisp and Rhino but you can't go too wrong with JRuby.

If you go the Perl route you will definitely come to regret it.

<comment><USER3> Two things are certain in life: every language has its pluses and minuses, and every person has an opinion.

There are lots of things perl is bad at, but it has a lot of strengths, especially if you work in the biological space. I also know several successful internet startups that run on perl, so I have to disagree with benreesman's advice to not learn perl.

Is it good for everything? No. (and no language is)

<comment><USER2> If there are libraries for doing biological computation written in Perl that do not have available bindings for other languages then that would constitute a reasonable excuse for using Perl. This would be just as true if the library was only available 1990s Visual Basic, and is just as irrelevant a factor in the assessment of a language as a whole.

Beyond the availability of some particular piece of code (in my case the tens or hundreds of thousands of lines of legacy systems that I lack the resources to replace) there is literally no excuse for using Perl or for inflicting its insanity on another hapless generation of web programmers.

All of Perl's admirable qualities (convenient object-literal notation, first- class functions, correct Scheme-style lexical scoping, powerful and seamless regular expressions, convenient string processing and Unix integration) are available in other languages. All of them, period. Many of these languages do not share Perl's unforgivable faults (sigils to dereference variable namespaces, contexts, typeglobs, references, dismal error handling facilities, confusing and nonstandard object facilities). The only way to use Perl to build a large system is to lean on Conway's methodology, which consists of a book that reads like an airtight indictment of Perl by one of its chief implementors and a collection of CPAN modules that demonstrate a brilliant mind with a perverse allegiance to a cult-like cause. Do sensible class hierarchies without Class::Std, I dare you. Do reasonable try-catch-finally exception semantics without Error.pm, I dare you.

try { ... } otherwise { ... } finally { ... }; # works try { ... } otherwise { ... } finally { ... } # no trailing semicolon, oops I just clobbered your next statement and produced a catastrophic failure that even an experienced hacker could stare at for hours without seeing

It only takes about two hours reading 'Perl Best Practices' to realize that it's a brilliant book, written by a brilliant mind to attempt to make Perl a workable language for building large systems. It's a shame because he comes so close, but it turns out you can't rewire a language like Perl with libraries alone, even if only because you can't compel others to use them.

Perl is a language for expert hackers only, no one else should be allowed near it. And even expert hackers are working harder than they need to because there is a constant intellectual tax on the inconsistency of the language. It only offers a little bit more power than Python, and actually less than Ruby at a much higher cost.

There is no excuse for Perl in the 21st century, and you clearly have not spent time trying to use it to build large and complex systems or else you would feel the same outrage that I do than anyone would continue to contemplate it.

</comment></comment></comment><comment><USER4> Read Learning Perl, keep a copy of Programming Perl and Perl Cookbook near (the three books are from O'Reilly).

Then, for webdev I recommend Catalyst [http://search.cpan.org/search?query=catalyst&mode=all](http://search.cpan.org/search?query=catalyst&mode=all) with it's great doc, <http://search.cpan.org/~jrockway/Catalyst- Manual-5.701003/>. Catalyst uses DBIx as ORM, [http://search.cpan.org/search?query=DBIx%3A%3AClass&mode...](http://search.cpan.org/search?query=DBIx%3A%3AClass&mode=all), which also has a pretty good doc [http://search.cpan.org/~ash/DBIx- Class-0.08010/lib/DBIx/Clas...](http://search.cpan.org/~ash/DBIx- Class-0.08010/lib/DBIx/Class/Manual.pod).

Finally, I suppose you will use Apache as a server, then you must look at its doc and mod_perl one (although you can also run the perl app as a cgi).

<comment><USER5> I also recommend Catalyst/DBIx::Class. It's a deadly combination. Both are totally modular, so you end up creating a really flexible system when you build a large application. I recommend using Catalyst under FastCGI with nginx (using TCP to connect to your FastCGI processes.)

</comment></comment><comment><USER3> The best way to learn any language: Write something in it! Think of a particular webapp you want to build, and do it (referring to a book/CPAN/anything else. Perldoc is useful to learn specific syntax.

The CPAN modules are pretty useful, especially DBI (databases) and Mechanize (automate website interactions).

</comment><comment><USER6> Perl has been my primary language since 2000. I would learn it in the context of building an application. Read chapter 1 of the Camel Book (the basics), which you can get online. Then just jump in and search the web or look in the book when you run into problems.

Note: tons of stuff has already been done for you at CPAN: http:://search.cpan.org

I've also found the Perl Cookbook and Mastering Algorithms with Perl somewhat useful. However, much of their content is now in bits and pieces on the Web, and so searching for your specific problem often is enough. If you don't know the site already, check out <http://perlmonks.org/>.

<comment><USER7> I left Perl behind some time ago, but I second epi0Bauqu's recommendation of Perlmonks. It's quite an amazing community and resource, and well worth exploring.

</comment></comment><comment><USER8> Read the man pages.

Start with man perl, then read the following: perlintro, perlreftut, perldsc, perlretut, perlboot, perltoot.

This should get you started then read all the others, get the Camel book which is the defacto reference.

And write as much code as you can (which is really true of learning any language.)

Dropping into #perl on EFNet (now on freenode) used to be helpful, but it doesn't look like it anymore.

<comment><USER9> On the contrary, #perl on freenode is extraordinarily helpful.

</comment></comment><comment><USER10> The best book for learning the language is "Learning Perl" published by O'reilly. If you work through all the exercises you'll "know" perl well enough for doing most things. Also helpful is the Perl Cookbook. Contrary to other advice, I didn't find Programming Perl (the camel book) as valuable as Learning Perl.

You could learn via web and man pages but perl is weird enough so that the Learning Perl workout is valuable.

<comment><USER9> I think the best book for learning Perl is 'Beginning Perl', 2nd Edition by James Lee, published by Apress.

<http://www.amazon.com/gp/product/159059391X>

</comment></comment><comment><USER11> benreeseman somehow missed the bit which said "language wars aside"!

If you're learning Perl for web development, after you've got through the Camel book and the basics, you would go to PerlMonks, as many have said, and I'd say the main task before you is to get to know the various templating systems.

There's a progression of using perl for HTML and it goes like this:

1) hundreds of annoying print() statements

2) fewer print() statements because you've discovered HEREDOCS, but still annoying

3) using a templating module

and in my case it was 3 a) using a templating module badly then 3 b) using a templating module properly.

So check out the options like HTML::Template, Mason, Template::Toolkit, and so on to see what they do.

</comment><comment><USER12> My day job is basically as a feature programmer for a perl based web application system. Trust me. Learn python / ruby for web applications. Or stick to PHP.

The thing that made people love Perl is the same thing that makes more mature people hate it. The language is so flexible that you will invariably write bad code. You need a very strong set of coding standards if you'd like to write perl systems that remain maintainable.

Learn python or ruby to make your web app. Learn C# / ASP.Net if you'd like to be on a windows stack.

<comment><USER9> Have you ever coded in Catalyst/DBIx::Class? Pure joy.

</comment></comment><comment><USER13> I've got different advice. Don't start with a full blown web app. Getting perl and apache and a db going can complicate the issue a bit.

Start by simply replacing some bash scripts with perl instead. Everything you can do with a shell script, you can do better with perl. When I was starting with perl, I started replacing my init scripts with better perl verions on my Fedora system. You'll be pleasantly surprised by how much shorter and more elegant init scripts become in perl!

<comment><USER14> Now you've got two problems.

</comment></comment><comment><USER15> let your cat walk on the keyboard, execute it, and try to figure out what it does.

</comment><comment><USER16> Perl has a number of books, but the one that seemed most useful to me is Intermediate Perl because it covers Perl's object orientation and references in great detail. To learn the basics of the language either spend money for Learning Perl (which I would not recommend you do) or use the online tutorials and websites.

Honestly though for web development, unless you either have a legacy Perl code base you have to work with or are already a Perl guru, nearly every other option for web programming will run faster and have lower maintenance costs (in time and effort) than Perl.

Since you know PHP and have dabbled with Ruby and Python, why not take a look at Seaside Smalltalk or PLT Scheme?

      Seaside: http://www.seaside.st/
      PLT Scheme: http://www.plt-scheme.org/

</comment><comment><USER17> I agree with the advice to read Higher Order Perl, but read Wall's (Blue Camel) book Programming Perl first. Both are fun to read, but I found HOP much more useful after reading Wall's book. If you don't already know regular expressions, read Mastering Regular Expressions. Then for additional ideas try the Perl Cookbook, also from O'Reilly. For additional inspriration along the lines of Higher Order Perl, read On Lisp by Graham, which is not about Perl, but shows how the same concepts and more are elegantly applied in Lisp. The web documents Higher Order Javascript and the Little Javascripter are interesting if you want to also understand that Javascript, like Perl is fun in the same ways that Lisp is.

<comment><USER18> This is all good advice, but I'm not sure the Perl Cookbook is a necessary component. HOP definitely is, though. Learning Perl and Intermediate Perl are great learning books...they make a nice starter before the camel (though the camel is a must-have, no matter what, so pick it up at the same time and treat it as a reference until you're ready to dig deeper).

</comment></comment><comment><USER19> Is the camel book still pretty much The Book? It was back when I learned Perl.

<comment><USER18> Yes, and it has continued to get better through its revisions.

</comment></comment><comment><USER20> I agree with most of the suggestions here. Read the man pages, perlintro, perlreftut, all those. The Camel book is great also. And of course write scripts. One thing I would like to add is reading Higher Order Perl. [http://www.powells.com/biblio?PID=29575&cgi=product&...](http://www.powells.com/biblio?PID=29575&cgi=product&isbn=1558607013)

</comment><comment><USER21> I can't say, although I agree with some people who say 'don't learn perl'. I would say Learn it, and then don't use it unless you have to. I'm just starting a class on it. I only intend to use it to fix existing code, or read it to re-implement it.

</comment><comment><USER22> I don't know Perl, but I've read good things about O'Reilly's _Programming Perl_ (also known as The Camel Book).

I am looking forward to a time when O'Reilly's _Programming Arc_ exists. It's still too early for that, though.

</comment><comment><USER23> > write as much code as you can

Can't agree with this one enough. Also, it is better to write a lot of small scripts, than to write one big one. They will be easier to debug, and you'll get more done.

<comment><USER16> Well, Perl code is usually write only anyway. So why not?

</comment></comment><comment><USER24> The only way I can learn languages is to start a project using it, then figure it out as the need arises.

</comment><comment><USER25> Like every one has said so far, find something to do and code it in Perl.

<comment><USER3> "Like every one has said so far"

Then why start a new comment? This is what the "upmod" feature is for!

<comment><USER14> Shouldn't you have used the down arrow?</comment></comment></comment>


Ask HN: Is it age discrimination when a company recruits undergrads exclusively? - <AUTHOR> I suggested recruiting at some master's programs for our internship program, but was promptly rejected because they only consider undergrads. I don't understand their motives for this. Could it be consider a form of age discrimination?<p>(This is at a medium-sized tech company in SV). <comment><USER2> It clearly would be _discriminatory_ (in the broadest sense) because it creates a distinctive criterion that _a priori_ defines who can, and who cannot, apply. However, 'discrimination' is just a synonym that has taken on all the negative connotations of _distinguishing_ (a word with whom it shares a common root) and therefore one should sometimes wonder whether or not all 'discriminatory' acts are _prima facie_ ill-advised. If you can rephrase the criterion in terms of _distinguishing_ between different groups you're (probably) on an ethically defensible high-ground.

</comment><comment><USER3> Have you asked for a _reason_ for this limitation? For instance, it could be something as simple as undergrad programs providing academic credit for internships, but masters programs not: which affects the employer's obligation to pay the intern.

</comment><comment><USER4> In theory, anybody can be an undergrad

<comment><AUTHOR> In theory, anyone can be named "Chen", "Nguyen", or "Mwangi" but try instituting a policy banning those people from an internship program.</comment></comment>


No-IP's Formal Statement on Microsoft Takedown  - <AUTHOR> https://www.noip.com/blog/2014/06/30/ips-formal-statement-microsoft-takedown/ <comment><USER2> The comments here are surprisingly pro-Microsoft. I'd personally rather deal with spam and botnets over a corporation legally being able to take over the DNS of other companies due to the actions of users of a service. Despite pretty clear slippery-slope arguments, I recognize this isn't a universal opinion. There are many people who would like to curb cyber-bullying at the expense of freedom of speech or curb terrorism at the expense of privacy and civil liberties. It takes all kinds, I guess.

<comment><USER3> It wasn't actually due to the actions of their user though, was it? It was because of the actions of NoIP themselves, who did not act to prevent abuse by their users.

From what Cisco and Microsoft are reporting NoIP is (was?) a hotspot of botnet activity. If NoIP was not doing anything against that Microsoft's lawsuit doesn't sound that unreasonable.

How this was actually implemented in the end (MS just taking over the DNS) does seem a bit strange to me though. They should at least have been taking over by a government agent.

<comment><USER4> Wouldn't a similar line of reasoning be "It seems that computers running Microsoft Windows are a hotspot of botnet activity. Year after year, a vast majority of computers used in botnets are running Windows; they are clearly not doing enough to prevent abuse by their users. Lets give control of the Windows code base to Linus"

<comment><USER5> I think most of the judges would be able to see through it and recognize that running a free DNS service which ignores abuse by botnets and having an OS which can be used to run various programs on, including malware, is a bit different thing. If you could prove Microsoft "clearly not doing enough to prevent abuse", you could probably win a juicy class-action lawsuit, but proving this would be extremely hard.

<comment><USER6> If they went through with their intended plan to stop supporting Windows XP, then proving that they were "clearly not doing enough to prevent abouse" would be trivially easy.

<comment><USER5> How so? Microsoft never promised it would support XP forever. EOLing old versions is a standard and widely accepted industry practice. Just buy (or install for free) a newer operating system. Buying a license to run Windows XP on your computer does not entitle you to unlimited amount of free labor from Microsoft. If you think that makes XP suck, nobody forces you to buy it or keep using it. Are you also expecting Linus to still make patches for Linux kernel 1.0?

</comment></comment></comment></comment></comment></comment><comment><USER7> What I don't understand is the legal basis of Microsoft, a private entity, simply being handed over the property (the domain names) of another private entity. I understand that this is something that was ordered by a court, but under what legal theory was the order issued?

I'm not a lawyer, but I think I've got at least a basic idea of the circumstances under which the government can take someone's property. This doesn't seem to coincide with any of those potential circumstances, especially when the seizure transfers the property to another non-governmental entity.

What's more, where's the due process? No-IP seems to be saying that they didn't even know about the court case until being served with the order. Did they really not have the opportunity to contest this?

EDIT: To summarize some of the documents people have linked to and analyzed below, it looks like Microsoft was granted a temporary restraining order under "Federal Rule of Civil Procedure 65(b)", which allows for such orders to be granted without providing notice as long as certain requirements are met.

Microsoft was required to post a $200,000.00 bond, which is supposed to pay for any damages incurred by No-IP, and No-IP will be granted the ability to contest the order in court on July 10, and maybe earlier. However, it is clear that No-IP knew nothing about even the lawsuit until they lost control of their domains, as this was specifically ordered by the court.

Also, there is no answer as to whether transferring control over domain names from a defendant to a plaintiff is something that courts should be empowered to do as part of a temporary restraining order. I hope a lawyer with some knowledge in this area can chime in to answer that question.

<comment><USER8> I don't think they had any opportunity to contest.

IT IS FURTHER ORDERED that the Registry Operators must:

...

d. Shall completely refrain from providing any notice or warning to, or communicating in any way with Defendants or Defendants' representatives and shall refrain from publicizing this Order until this Order is executed in full, except as necessary to propagate the changes ordered herein to all parts of the Domain Name System;

[http://www.noticeoflawsuit.com/docs/Second%20Amended%20Order...](http://www.noticeoflawsuit.com/docs/Second%20Amended%20Order%20-%20flattened.pdf)

I haven't yet found Microsoft's justification for the seizure without notice.

<comment><AUTHOR> Edit: Looks like Microsoft filed for and got a emergency temporary restraining order against all the defendants including No-IP.

[http://www.noticeoflawsuit.com/docs/Second%20Amended%20Order...](http://www.noticeoflawsuit.com/docs/Second%20Amended%20Order%20-%20flattened.pdf)

Also this is No-IPs response to Cisco's previous accusations. [http://www.noip.com/blog/2014/02/12/cisco-malware- report/](http://www.noip.com/blog/2014/02/12/cisco-malware-report/)

They did have lot of chances to contest. Apart from Microsoft's notices, the court sent a notice to No-IP which they didn't respond to. They cleary state that ex-parte decision will be taken if they don't respond. Maybe federal courts don't like it very much if you act like they don't exist.

[http://www.noticeoflawsuit.com/docs/Summons%20for%20Vitalwer...](http://www.noticeoflawsuit.com/docs/Summons%20for%20Vitalwerks.pdf)

<comment><USER9> I'm not sure they did, the order has this statement (emphasis mine);

8\. Microsoft's request for this emergency ex parte relief is not the result of any lack of diligence on Microsoft's part, but instead based upon the nature of Defendants' unlawful conduct. Therefore, in accordance with Federal Rule of Civil Procedure 65(b) and Civil Local Rule 7-5, good cause and the interest of justice _require that this Order be Granted without prior notice to Defendants, and accordingly, Microsoft is relieved of the duty to provide Defendants with prior notice of Microsoft's motion._

I should note my laymans reading is that Microsoft proved exigent circumstances that negated the need for prior notice.

<comment><USER7> Here is Federal Rule of Civil Procedure 65(b):

[http://www.law.cornell.edu/rules/frcp/rule_65](http://www.law.cornell.edu/rules/frcp/rule_65)

 _(1) Issuing Without Notice. The court may issue a temporary restraining order without written or oral notice to the adverse party or its attorney only if:_

 _(A) specific facts in an affidavit or a verified complaint clearly show that immediate and irreparable injury, loss, or damage will result to the movant before the adverse party can be heard in opposition; and_

 _(B) the movant 's attorney certifies in writing any efforts made to give notice and the reasons why it should not be required._

So, if all of this is considered a "temporary restraining order", then it must be based on these rules, which also seem to provide certain protections to the affected party, including requiring the plaintiff to put up security to reimburse the affected party for any damages they may suffer as a result of the order.

I hope that a lawyer can chime in here and give a decent opinion as to whether this is kosher, and also to answer whether it seems correct to effectively transfer control over property such as domain names through this mechanism.

<comment><USER10> Later in the order they required Microsoft to post a $200,000 bond. Not sure if that actually covers the potential damages.

</comment></comment></comment></comment></comment></comment><comment><USER11> They also deny Cisco's allegations here.

[http://www.noip.com/blog/2014/02/12/cisco-malware- report/](http://www.noip.com/blog/2014/02/12/cisco-malware-report/)

It doesn't compute that Cisco is casting blame on them and Microsoft got a court order when all they had to do is send an email.

It's kind of strange, they're probably unable to keep up with the abuse reports and validating them or something. There are a lot of dynamic DNS providers so why do the bad guys pick them for the most part for their DNS needs?

<comment><USER12> Presumably because they have a free basic service if you use one of their subdomains. While other companies I'm not aware of might offer the same I've yet to stumble across them.

<comment><USER13> DynDNS and afraid, which as far as I know are the next two most popular services like this, both have free options.

EDIT: Looks like DynDNS recently got rid of their free offering. I wonder if that was related to this?

<comment><USER14> DynDNS dropped their free offering a couple of years ago. If you had created your account before then, you were grandfathered in, and still got 5(?) domains for free; as long as you logged in frequently enough.

<comment><USER15> Dyn permanently ended its free hostname program in May 2014, with 30-day notice given on April 7. [http://dyn.com/blog/why-we-decided-to-stop-offering- free-acc...](http://dyn.com/blog/why-we-decided-to-stop-offering-free- accounts/)

</comment></comment></comment></comment></comment><comment><USER16> If this action is troubling, then we need to stop putting the blame in the wrong place.

Microsoft does not have the power to seize domains. A federal court order made that happen. This order is (apparently) the responsibility of the U.S. District Court of Nevada. If you want to blame someone, then blame the court.

Obnoxious people ask courts to do obnoxious things every day. Good courts do not comply.

<comment><USER17> So why not blame the "obnoxious people" in this case, too? It's like the patent system abusers (which perhaps not by coincidence, Microsoft is one, too) excuse: "don't hate the player, hate the game". Yeah, right. Nobody held a gun to their head to do this. It was a premeditated action by Microsoft.

<comment><USER16> You are correct that Microsoft would deserve some of the blame, if there is to be blame. However, user pessimizer put it very well:

> Microsoft has no obligation to you. Your judicial system does.

In any case, there is no "hating the game" here. The fault -- if one has a problem with this action -- is not with "the system", but with a very specific player: the federal judge who issued the order. (I don't feel like going through the trouble of finding his/her name, but I doubt it would be difficult.)

</comment></comment></comment><comment><USER18> So when will Canonical file an ex-parte TRO against Microsoft for failing to secure Windows XP against malware? It would be nice to see a windows update which upgrades to linux :P

Later edit: Isn't this ironic, how most botnet members are running Microsoft's software, yet they get to do this?

<comment><USER19> Creating the tools by which _anyone_ might theoretically spawn abuse is not the same as proactively hosting those engaging in the same.

E.g. one might reasonably disrupt a farmer's market known to be selling beef infected with salmonella without banning cows of the same breed across the world.

<comment><USER20> Would you shut down the printing company that makes the flyers that tell people where the market is though? Oh, and hand over the presses to a local supermarket to keep printing the flyers but with the convert replacement of the address of the supermarket as the place to source your meat.

</comment></comment></comment><comment><USER21> I was affected. Even though I used NoIP's free service simply to get to my home network, I still can't get in.

Thanks Microsoft.

</comment><comment><USER22> Wait, how can a company seize the domains of another?

<comment><USER23> By convincing a judge that it was necessary?

Actual detail here: [http://www.noticeoflawsuit.com/index.htm](http://www.noticeoflawsuit.com/index.htm)

<comment><USER8> The legal team got a domain just for the notice?

</comment></comment></comment><comment><USER24> This smells like BS, this also isn't the first time that other entities have had to step in to cleanup their crap.

Especially this quote: "Apparently, the Microsoft infrastructure is not able to handle the billions of queries from our customers."

Azure DNS, Microsoft.com, Bing. Yeah, all of those already require billions of DNS queries. I don't doubt things are not working correctly, but insinuating Microsoft can't handle the load just makes their case smell even worse.

<comment><USER22> I think what is insinuated is that they botched the job, not that they're not technically capable of doing it.

<comment><USER24> I can agree with the fact they probably botched it (potentially on purpose), but the way it's articulated in the No-IP reply leaves little ambiguity that it was intended as an attack on their technical capability.

I am not in love with what Microsoft did here but No-IP is not doing the best job of defending their position.

</comment></comment></comment><comment><USER25> The Microsoft hate here is unfounded and ill informed.

Those of us working defense at large organizations have known for a while that No-IP domains are wretched hives of scum and villainy. Any company with a threat model that includes at least one of a diverse set of characters ranging from malware authors to organized crime to nation state teams should be logging all DNS requests and treating any request to a No-IP domain as an indicator of compromise.

Microsoft has a successful history of disrupting botnet C&C and distribution channels via domain seizures, which is why this request probably sailed through Federal Court. The only difference in this situation is that there are innocent bystanders affected, which generally doesn't happen since the other domains they have seized have been 100% used for fraud.

I feel bad for those folks and the people at No-IP who maybe meant well, but the truth is that the fight to keep normal people safe is bigger than just technological, and needs to include civil legal actions like this.

<comment><USER26> You seem to miss a key takeaway from this: the analogous comparisons to this in physical services companies is laughable:

If, as a car company, i sell cars with potentially lethal flaws, i am required/told to recall and fix those vehicles. Other companies who sell cars are NOT allowed to have a court order the seizure of my phone numbers and have them direct to competitive business, so they can figure out who is driving safe cars and who isn't.

Secondly, the idea that private companies can be labeled "wretched hives of scum and villainy" by other private employees and have that permissible as anything other than meaningless hearsay is itself, nonsense.

I have read many documents on this today and every HN comment and I have yet to find someone present a case as to why on earth this is a good and sustainable precedent.

<comment><USER27> How does missing the 'car analogy' help at all? Analogies are only ever useful to explain to those who do not understand the first case - trying to draw parallels otherwise inevitably leads to gross simplifications, and they're incredibly frequently abused to try and make another point. Analogies are great if John Oliver, or you're at the bar and talking to Erv the local HVAC guy - but this is hacker news, we normally understand this - and trying to port it to a completely different legal framework is probably disingenuous.

</comment></comment></comment><comment><USER28> If I keep getting spam emails from a Hotmail account, should I file a motion to take down the whole Hotmail domain?

<comment><USER29> Sure, you could do that. Personally, I have always had a reply from their abuse department within the hour (usually it's solved by then, too).

But indeed, if you feel you have sufficient evidence that MSFT is downright neglectful and turning a blind eye to spam accounts, feel free to file a motion and post a $200k+ bond.

</comment></comment><comment><USER30> If anyone needs a replacement for no-ip, I wrote this the other day:

[https://github.com/davidbanham/cloudflare_dyndns](https://github.com/davidbanham/cloudflare_dyndns)

<comment><USER31> And I recently setup [http://dhcp.io/](http://dhcp.io/) \- source also on github.

<comment><USER32> Nice! Simple HTTP API, no custom client needed, very easy to include in scripts.

Is there any reason why you're not serving via HTTPS? Without encryption, credentials are completely open to the network.

<comment><USER31> Largely because this is a toy-project which has no income behind it.

(It was initially going to be commercialized, but in the end I found people pretended they'd pay, rather than actually wanted to do so for extras like more hostnames, MX records, etc. So in the end I went with a different project [https://dns-api.com/](https://dns-api.com/))

I could pretend I regard DNS data as public, but sniffing the update token could allow malicious users to change things in surprising fashions so it really does deserve SSL, but I'm not going to pay for it. I would hope that if users cared about security they'd deploy their own instance - and pay for the resulting Amazon traffic.

</comment></comment></comment></comment><comment><AUTHOR> Interesting that the claim they didn't get any notice, this is what Microsoft has to say in their complaint.

>...United States, including those located in the state of Nevada and the city of Las Vegas. Defendant has a contractual obligation to take reasonable and prompt steps to investigate and respond to reports of Internet or computer abuse, and the company has also made representations to the public that it has an "abuse team" to police and take action against such malicious activity. Yet Defèndant has failed to take sufficient action to stop, prevent, or effectively control this malicious conduct in breach of its contractual obligations and best practices of the industry, causing further harm to Nevada and Las Vegas residents.

<comment><USER33> We assume that this is on-going (No-IP was the go-to since 2004) and Microsoft has finally decided they'd be able to take it over. Unfortunately they didn't plan enough to anticipate the amount of traffic they'd receive. If I was No- IP, I'd be out for blood.

Someone sends a court order to essentially handicap your business, putting it at risk for the sake of malevolent users. This was a situation where No-IP's "resolution" process should have been reported (ie they cater to criminals for profit), and not man-handled by a separate law and business body.

<comment><AUTHOR> >Someone sends a court order to essentially handicap your business, putting it at risk for the sake of malevolent users.

"Someone" in this is case is a federal district court which did that because there was no communication from No-IP. MS does not have the power to send court orders. The court ordered No-IP to send a response and looks like there was no response.

>If I was No-IP, I'd be out for blood.

Who's blood?

<comment><USER34> > "...which did that because there was no communication from No-IP ... The > court ordered No-IP to send a response and looks like there was no > response."

That's absolutely false. Microsoft explicitly asked the court to allow them to file the entire case under seal, and to obtain ex parte emergency relief _without notifying the defendants_.

The TRO states: "...good cause and the interest of justice require that this Order be Granted without prior notice to Defendants, and accordingly, Microsoft is relieved of the duty to provide Defendants with prior notice of Microsoft's motion."

The judge signed that. No-IP did not receive any advance warning or service by Microsoft's own admission, and No-IP's blog post confirms they weren't served until today.</comment></comment></comment></comment>


Pirate Bay Ready For Perpetual IP-Address Whac-A-Mole - <AUTHOR> http://torrentfreak.com/pirate-bay-ready-for-perpetual-ip-address-whac-a-mole-120528/

<comment><USER2> At this point it might be a good idea for TPB to think about offering their website as a Tor hidden service. Because of the way hidden services work there would then be no better way to ban it than through banning Tor, which is neither easy nor a publicly defensible thing to do.</comment>


How to Paste a Phone Number into the iPhone's Phone App - <AUTHOR> https://www.howtogeek.com/685561/how-to-paste-a-phone-number-into-the-iphones-phone-app/ <comment><AUTHOR> I had a phone number in an email that I wanted to cut-and-paste into the phone app. When I switched from the email app to the phone app I didn't find a way to paste - there's just the numeric keypad. No box or other indicator of how to paste a number.

Fortunately I'm at home and could look up how to cut-and-paste and found this excellent article.

I get regularly frustrated with how the "it just works" philosophy hides things or makes them difficult. I suddenly started having problems with my Bluetooth trackpad but not my keyboard. I actually bought a Bluetooth mouse but am having trouble with it, too. I've tried resetting the NVRAM and PRAM but it doesn't seem to work with the Bluetooth keyboard. I need to try again with a physical keyboard, I guess.

I was having trouble updating MacOS a while ago and had to deal with the different hidden commands to reboot my Mac.

I'm encouraged that the new Apple Silicon Macs are supposed to have boot options available on the screen. I would love to see Apple make more things more obvious to the end user.</comment>