skysight-inc/HackerNews huggingface dataset:
That's a great write-up on the situation. There's one thing I'll counter:

"And so economically, the only companies to survive are those that have built a steaming hunk of shit,"

This is true in average case because most of these startups don't care about quality that much since they don't have to for reasons you describe. However, if they did, then they could at least document things, do limited amount of Design-by-Contract, and/or do assertion/property-based testing as they went along. They can also follow principles like cleanly separating modules, protocols that have an update feature, standardized formats for data, and so on that can make rewriting a lot easier later. Easier, not easy, as rewriting is also difficult. That's why I mentioned documentation and Design-by-Contract as they take very little time. Essentially just write down whatever was in your head at that moment.

Most of the time will still go to experimentation and debugging which... wait, styles like Design-by-Contract in safe languages knock out a lot of that debugging. Good docs do, too. Now, we've gotten to the point illustrated by methods like Cleanroom where the QA might cost a little extra, might cost the same, or might even save time/money due to less debugging of new or old code.
Thank you. Will do. I tried Firefox Focus yesterday and now I'm swooshing through the web. Just wish I could use tabs.
If that were the case, they wouldn't need those clauses inserted into contracts.

The idea of any kind of "duty of loyalty" is absolutely laughable in this day and age. Employers have long since rejected any sense of having loyalty to their employees.

Also, if you're going to link to something, at least link to the Wikipedia article on it. Linking to a Google search is pretty dickish.
When a major storm hits, and linemen swarm a region, the lack of remote-control and monitoring on distribution substations and unmanned windfarms makes things much worse.

And storms hit far more often.
Check out Standard Notes as well for a good cross-platform encrypted notes app: https://standardnotes.org.
I disagree. I and others (such as Thoughtbot) often start by writing integration tests first. It’s known as outside-in testing.

TDD by started by with low level tests is just backwards. Outside-in helps you clarify the design from the perspective of the user.

https://robots.thoughtbot.com/testing-from-the-outsidein
7 Biggest Security Mistakes in FinTech That Can Easily Be Avoided
I stopped using Leanpub as soon as you started charging author's an upfront fee of $99 PER BOOK to even start writing a book on your platform.
There are all kinds of problems that unforgeable append-only public ledgers make less crap while not solving the fundamental problem that people are at the center of all people-related transactions. For instance I can bribe a notary to backdate a notarization. Can't bribe a blockchain. This is good. There are lots of things like this.
Cyberweapons created by the USA were used to shut down the entire national hospital system of the UK, one of their biggest allies. Good job USA!

Iran is educated enough to make nuclear weapons, but you want their program shut down because you think they're not responsible enough to be trusted with nuclear weapons.

The US is educated enough to make cyber-weapons, but I want their program shut down because I think they're not responsible enough to be trusted with cyber-weapons.

Maybe the UK should go on the offensive, wipe a few NSA datacenters, for the long term safety of the British people?
> necessitate re-writing the test anyway, so why write it to begin with

Because now you have an unambiguous record of the conscious decision to change your interface, because the test demonstrates the correct change of that interface.

I don't write tests first for everything I do, but I try very hard to when I'm writing code that other people may read for this exact reason. Otherwise they have to divine my intent through less significant means.
https://en.wikipedia.org/wiki/Dead_Hand_(nuclear_war)
while I want to read this article, that font makes it impossible.
TDD could be the reason for the bad system design. If you are writing to pass a test if you do not refactor you end up with a mess. Why not write it properly as a first step and start adding the tests later in the process.
Why do so many neuroscience PhDs take unrelated industry positions?
Pay $10 to disable the cron job running yet another pile of 3rd-party code on a production server, even if it was (eventually) just for a year? I don't see it as a "never!".

The market is probably (a) people who want to support/donate to LetsEncrypt and (b) people who are ultra-paranoid / strongly prefer less moving parts in ops.

The one major downtime I'm aware of so far (a month ago) could also be a factor: Let's Encrypt is down | https://news.ycombinator.com/item?id=14374933
Which is another way of saying TDD is somewhat usefull, if you start from a huge pile of code written by someone else.

When you think this might be going on, so if I do this it should work... then writing some tests will help decide if your assumptions or your code is wrong. Most importantly you are probably writing minimal code in those situations so the overhead of tests is minimized.
I remember an old Microsoft analysis where they measured empirically time to delivery and actual defects and found TDD to not reduce defects while increasing time to delivery. Can't find it anymore.
It is quite possible that without Schwartz’s help, Trump would not have got to the Oval Office

Curious, why is every non-technical article have a reference to Trump within? It almost seems as if they hate Trump so much, they want to take credit for the man. I think I'm reading about Ghost writing, no, it's about Trump. I think I'm reading about Science, nope, it's about Trump, on and on. Okay, I get it, you think he's the worst thing ever.

Would a member of HN's psychology community care to elaborate on why this is?
As an alternative to the traditional answers here, consider trying Lumen Lisp:

https://github.com/sctb/lumen

It's self-hosted in JavaScript and Lua. It matches the JS runtime as closely as possible, so if you're comfortable with JS, Lumen is basically a wrapper around it.

Think of it like CoffeeScript on steroids.

There isn't a lot of documentation, but if you have any questions I'm happy to answer them.
US and Canadian carriers definitely still tell you to put your phone in airplane mode.
It currently costs more than $2 to transfer Bitcoins. It's free to transfer money to people in the same country off the blockchain, and the transfer confirm is faster.
TDD will as often as not (and maybe even mostly) surface errors (or gaps) in the specifications rather than errors in the code.
I'm not sure what to call this, but it's free, and uses Python Arcade to teach programming (in Python) in the context of game development:

http://programarcadegames.com/

It appears to be an online form of a book (which you can purchase too). The author makes the site and contents available for free, and uses it to teach introductory programming (so maybe not for everyone here - but some may find it useful). It also appears there is a MOOC-like aspect to it as well.

As an aside, often when the question comes up from someone wanting to learn to program, invariably the advice offered is to "program or develop something that interests you" - that is, try to learn thru programming something related to your interests.

This is good advice, but for some though, that can be too abstract, or they might find that things related to what they like are actually boring to develop software for (contrived example: They like running against a stopwatch, but creating a stopwatch program isn't exactly exciting).

I personally think that game programming can bridge this gap; for instance, in my contrived example, the student could instead strive to create a "running simulation" (ie, part of a "track and field" style game, for instance). Even a side-scroller simple thing would be great fun (and have sufficient difficulty) for development and learning purposes. It could be extended, too (maybe take it both horizontal and vertical - 2d parkour platformer? Heck, that sounds like something -I- would like to develop!).

In reality, just about any interest can become a game, with just a little bit of imagination (plus fudging on things a bit or a lot - which is something you have to know and internalize as a game developer: Don't try to simulate the real world, you won't get very far unless you have a large development team, and even then you'll be fudging and simplifying things, if you know what's good for you).
Chris and Jonathan Nolan have their fair share of writing gaffs, but its mostly on the dialogue front. Both are brilliant worldbuilders, but don't tell me that "For you" is Oscar-tier dialogue.

And before you ask, I am a hothead.
What’s RSA?
+1. And you have to learn the all damn dsl wich is always badly documented and with zero tooling or support instead of just using the regular language API for witch you are equiped for.
highly likely an overfitted model if such a small change can drive such large variation
Boom and other proponents of lifting the supersonic aviation ban are trying to cause confusion between engine noise restrictions (relevant at takeoff) and the inescapable noise from a passing shock wave that is the byproduct of supersonic flight.

From the amendment text (https://www.commerce.senate.gov/public/_cache/files/0238c447...)

Proposed rule:

2) specifies a noise standard for sonic boom over the United States that—

(a) is economically reasonable and technologically practicable;

(b) is informed by noise levels that are tolerated in the United States for non-aviation purposes; and

(c) will foster employment in aircraft and aircraft engine manufacturing in the United States.

In other words "fuck you, we can make it as loud as a jackhammer".
A Performance Lens for Low Precision Neural Network Inference
I'm a huge fan of the Foundation series, and I really can't see how it can be adapted for video in any sort of faithful way. For one thing it's almost all dialog. There is very little action or exposition, the former of which at least Hollywood relies heavily on.
I appreciate that! I mean, obviously I was wrong about _some_ things, otherwise I wouldn't have had to write that post. So I'm super open to new ideas and learning. That's also why I'm replying to all these comments. I'd rather reply with more detail so people can give better feedback. I just wish more of the commenters here would start from a perspective of asking questions, than thinking the answers to all my problems are glaringly obvious. Reality is extremely nuanced, in my opinion! I would love if more people were asking more questions, rather than making strong claims based on a very small amount of information that was more intended to communicate a very important life event to friends and users, than to be a detailed diagnosis of everything that happened.
Super curious about a bunch of things here:

1. Are those numbers inclusive of Apple taking a 30% cut?

2. You have a $15k per month content budget, but what about other overhead? Does the 15k subscriber number for profitability cover that too?

3. How is churn?

4. What's your CAC and LTV?

Most importantly: you talked to dozens of investors, some of them probably smart and experienced. Why did they say they didn't think it would work?

They might be wrong, obviously, but I'd be curious to hear their main objections.
Keep your powder dry probably refers to gunpowder... old flintlock rifles had separate gunpowder and bullets, and if the powder was really wet the gun wouldn't fire. So, have faith but do everything you can to improve your chances of success.
gilfoyle, is that you?!

but seriously, hn is great as a daily news source. one person's echo chamber is another person's wisdom of the crowds. =)
LinkedIn open-sources tools for managing website outages
I'd assume most investors are not really interested in you reaching profitability. In fact it's probably a negative for them.

What they want of for you to reach a high valuation which allows them to get a +10x return on their investment. What they want is for you to need more money from them in order to survive, so if they believe in the play they can increase their stake.

At some point they want liquidity. But that doesn't have much to do with your profitability.

Honestly, you probably know better than me. But this has been my limited experience.
"What I've found works really well is independently writing tests afterwards to really test your assumptions."

Sure. If you actually do it.

The problem with most companies, and the reason why I think that TDD 'works' is that it forces you to right some tests, any tests at all.

Many people, if they don't write the test first, will just end up not making any tests at all.
If you wanted, you could have any bug in a running web server pop up a window in your editor, fix the bug within the call that's buggy, then resume execution from that point at the call stack, successfully returning results to the client. Doing so doesn't necessarily make a lot of sense, but it's a very powerful technique if you choose to use it.
The biggest benefit is precisely to make transactions outside of banks and governments because although they may be trusted now, there is no guarantee they will be in the future. And we collect money just to prepare for the future. Yes, if I was honest, governments were honest, banks were honest, and thieves were honest, decentralized currencies wouldn't be important.

> and finally libertarians that want to make themselves sound clever at a party

Even mentioning something like this gives me the impression you just sound bitter about cryptocurrencies in general
> Testing first forces you to think about your desired outcomes and design your implementation towards them. If you think clearly about your problem, invariants, and APIs then you will guide yourself towards a decent system.

The way I put it: "if I don't know the domain and range of my function, I shouldn't be writing code yet, I should be investigating the problem."

TDD is for unit tests, and unit tests best test functional, stateless code--the functional, central logic of your application is what you should be specifying and writing unit tests for, not all the imperative stuff wrapping it for IO and failure catching and the like (Gary Bernhardt[1] calls it scar tissue).

[1] - https://www.destroyallsoftware.com/talks/boundaries
An Immigration Lawyer Reviews “Paddington”
If you're interested, this is called triple-ledger accounting, you just have to keep all the receipts. This has the advantage that you can keep transactions private until the point that it needs to be made public.
Ask HN: Tech trends of 2017 – Which are you watching/using/working on?
You pay for not specifying those parameters and so on in other ways later on.

By leaving those things out you are broadening the problem model and denying the compiler information that it needs from you as the programmer so that it can do a good job of solving the problem.

You have to remember that the computer can't synthesise knowledge about the problem domain that you deny it in the first place.

So sure tightening things down by specifying them may be tedious but it is the reality of the problem that you are solving.

Convenience of leaving it out will translate to instability such as run-time exceptions not to mention a massively reduced ability in tooling support (like IDE auto-complete).
You’re being down-voted because this is already well known, and has been used for years.
Software's Seven Deadly Wastes
Do you believe rich people will leave the United States if we taxed them more heavily?
When https://oncall.tools/ is tied into https://iris.claims/, it ends up being a pretty nice system.
Oh hai Hacker News!

vindarel on Github has been doing an enormous amount of contributions in the past two weeks, and the modern look and feel (and some of the more modern content bits) are entirely due to their hard work.

eudoxia0 spent some time prior to that converting it and getting it modernized.

I'd like to congratulate them on their work, since we're on the front page of HN.

(I sort of steward the GH fork of the cookbook these days).
Exactly this!

It is literally faster to write the test, then to manually go around hitting your endpoint.
Here's a link to the research paper for those who are interested: "Ambient Backscatter: Wireless Communication Out of Thin Air" (http://abc.cs.washington.edu/files/comm153-liu.pdf)
> Besides the "normal" resistance to wind, if you want to build a sort of half-pipe covering a highway you need to consider the pressure induced from the inside by high-speed moving objects and the possibility to resist accidents (preventing an 18 wheeler from completely crash a - say - 100 m section of the half-pipe in case of an accident needs a rather sturdy structure).

I mean, aren't these issues already basically solved? I frequently drive through miles-long tunnels under Boston at 70mph.
Yes a lot of people kept parroting TDD (as most people parrot the latest fad without thinking for 3 seconds if they should actually do that)

> I absolutely think _tests_ are useful, but have never found any advantages to test-DRIVEN-development (test-first).

Seconded. Especially the crap about "make the test fail first" (making the test fail is useful, especially if you're unfamiliar with some aspect of it), but it should not be an obligation
> if you were working on a big app and there was a bug, writing a failing test for that bug and then looking into the fix is very helpful.

Well, first of all, that's not TDD. TDD is Test-Driven Development. In your scenario, you wrote the test after the code in question. In TDD, the whole point is to write the test before the code in question.

So the value in your scenario is only insofar as the test is a useful way to quickly exercise the code in question. For example, if we have some sort of customer-facing website and there is a bug in how they save their user profile, it will be easier to test fixes to the problem if we don't have to go through the full flow of logging into the site, navigating to the profile, making edits, and clicking save all the time. But having an XUnit-style framework for running that test is not necessary for that.
Which ORMs do you like and what do you like about them? What is the sweet spot?

I've worked with and liked

- JPA, mostly Hibernate (although we were mostly sticking to the standard parts)

- a few months of Entity Framework which was one of my favourite parts of my .Net experience (2.place I think after Asp.Net MVC which I really liked.)

- SQLAlchemy (a few years ago) at least I think I liked it.
One thing I've noticed. TDD takes longer. It just does. You can argue that you are racking up less technical debt in the long term but every consulting gig I've been on where TDD was the "directive" often deteriorated because the business does not want to factor in between 40 and 100% extra time to allow proper TDD coding. They want the same somewhat arbitrary and bonus driven deadlines that they always do, and in order to meet them, we usually end up tossing out TDD halfway through and reverting to just having skilled developers get the job done as quickly as possible.

THIS is the economic reality of TDD failing. A manager wanting to reduce quarterly spend so he gets his bonus doesnt care that TDD will cost him less over 5 years, he cares that he can get a project delivered on time and under budget...
Common Lisp is great. :)
It's ok! And I am really sorry to hear about your dad's business. That must have felt terrible, far worse than I'm feeling right now.

We're all human and doing the best we can.
I'd agree with this characterization. I started my career in Boston - actually, one of the first companies I interned at did high-assurance systems for avionics, financials, and medical devices.

However, look at the size of the West Coast tech industry vs. the size of tech firms in New England or the Midwest. That's what I mean by an economic argument. I got paid 5x more at Google than I did in Boston, and I was employee #45,000 or so, not even an early employee.
You seem confident that you know more than the authors of the papers referenced. Since you're obviously passionate about this topic, what are your qualifications and where do you do research? Have you studied this subject specifically and can you share any of your own research?
I've never heard TDD being that you write all of your tests up front, before you've written any code. I've always heard it as: When you're writing a class/unit, you write a few tests for what that unit is going to do. You then make those tests pass. You add some more tests, make those pass, and so on and so on.
You don't have any such guarantees. But your test would have to be broken in the same way that your real code is broken, not in some different way.
That requires too much infrastructure. Just have the cars carry their own grenades. If you can make them tiny nuclear bombs (Californium-251 might enable this) then you could achieve amazing range.
100%. This is perhaps one of its most powerful attributes. Whether I have a spec written on paper or one I've informally defined in my head, I very often find myself enumerating the potential failure cases (determining the domain and range of my code, as it were) and going "hey...wait a minute...what about X?".

Writing tests after code is completed, on the other hand, lends itself to reifying an implementation as "correct" and divergence from the implementation as being wrong. No bueno.
People have a constrained view. They see their own problems and have seen the "old" way do nothing but fail and the "new" way do nothing but succeed. What other reaction would you expect?

If they actively researched and looked beyond their personal experience then dramatic 0% to 100% Success rates would turn into more reasonable assessments.

I think my view on TDD is more reasonable than most of the zealots, but I still like mant of the ideas of TDD a great deal. I don't think it much matters if the tests come before or after the code as long as they come early enough to save time and effort. This means that specification of some kind is required, without specification you can't do TDD. Once you have tests and some code, you can add more test to increase confidence and with confidence you can aggressively refactor.

Sometimes its enough to write a minimal viable product and then write tests just so that refactoring for version 2 can be done reliably. I am doing something like this now for some C++ build system stuff... That sounds odd saying it loud, but yes I have cmake modules complex to need tests so I can be confident in refactoring them. But I didn't write any tests until the minimal viable version sort of work enough to have bugs filed against it. Now TDD on ethat project seems like great idea, when I didn't use any tests in the beginning (Partly because we couldn't specify what we wanted).
How to Become Better at Coding – A Revitalizing Journey
[EDIT] Many here are acting as if TFA were about the noise of sonic booms, and it is not. From the actual amendment:

(3) specifies a noise standard for landing and take-off of civil supersonic aircraft that is no more stringent than large subsonic aircraft in use for transporting passengers in the United States on January 1, 2017. [0]

That is, Boom are claiming that their engines could be narrower, if they were allowed to make as much noise taking off and landing as large passenger jets make taking off and landing. Perhaps TFA could have been clearer on this, but the reading comprehension is not strong on HN this morning.

[0] https://www.commerce.senate.gov/public/_cache/files/0238c447...
TDD is designed for developers with advanced refactoring skills. By the time you reach that level you stop needing the organization ttd provides.
> How would you write a function parameter that takes two arguments, whose type is determined by the seed argument?

I feel like I'm missing something here. I would think it would just be

reduce<I, O>(fn:(O, I|O)=>O, seed:I): O