skysight-inc/HackerNews huggingface dataset:
You're assuming TDD has failed and are reaching for evidence to make your case.

From the SWEBOK [0]:

5.1.5 Test-Driven Development

[1, c1s16]

Test-driven development (TDD) originated as one of the core XP (extreme programming) practices and consists of writing unit tests prior to writing the code to be tested (see Agile Methods in the Software Engineering Models and Method KA).
In this way, TDD develops the test cases as a surrogate for a software requirements specification document rather than as an independent check that the software has correctly implemented the requirements.
Rather than a testing strategy, TDD is a practice that requires software developers to define and maintain unit tests; it thus can also have a positive impact on elaborating user needs and software requirements specifications.

It really depends on many more factors than getting to market first. If we developed software in this way for fighter planes or search engines I think we wouldn't find them nearly as useful. Perhaps even dangerous.

In the absence of a more formal software specification or testing strategy TDD is the best way for a self-directed team of software developers to maintain that specification.

Beyond that it also has benefits for practitioners working in languages that lack a sound type system to catch domain errors for them at compile time. Coupled with property-based testing TDD can be extremely effective.

[0] http://swebokwiki.org/Chapter_4:_Software_Testing
Your "narrow strip down the middle of the lane", makes me wonder why it has to be under the asphalt and not simply embedded similar to cats eyes.

I'm picturing future roads looking like massive Scalectrix tracks...
I know about cider, but what I'm looking for is a decent, quick download & click to run environment that will let me play around with Clojure. Something you could hand to intro to programming students and have them writing code in a repl in sixty seconds.
Unless the majority of people you know are gay, that isn't possible.

For each hetero man you know following strategy 2, by definition, there is a corresponding woman (his partner).

And vice versa with the women who are using strategy 1.
Why? I would assume they serve at least slightly different purposes/roles, no?
> TDD works for experienced developers who know the problem domain well

This is important: it's not only junior devs that fail --
TDD also does NOT work for experienced developers who do NOT know the problem domain well, as the infamous Sudoku solver debacle showed, where Ron Jeffries got too caught up in TDD/refactoring to make any serious progress in actually solving Sudoku.
Ask HN: Trigger finger and tendonitis
I tend to get extremely painful forearm tendonitis and trigger finger from my Mac's trackpad to the point my finger will stop functioning and I have to get cortisone shots every year or so.

I generally use shortcut keys, but inevitably I use my trackpad when I'm in learning mode (scrolling through blogs, changing tabs, etc).

I purchased an Evoluent mouse to switch back and forth and ended up getting shoulder tendonitis. I bought a Wacom tablet and switch between all three. It helps, but I look like an input device diva.

If you get or used to get frequent tendonitis, how do you relieve it or avoid it?
TDD is a nice idea, however TDD can add quite a bit of overhead. Upfront overhead, before writing any code. This isn't a problem if it is justified/ needed. Plus the tests can become more cumbersome when code changes, more baggage to carry.

Testing often becomes a KPI, and therefor is commonly gamed. Doing the bare minimum to tick '100% code converge!'. I'm a fan of contracts to test the spec and boundaries(whether human or other application) of software.

TDD requires discipline and experience; You could spend an infinite amount of time writing tests and never deliver, or the other extreme becoming incapacitated fighting bugs.

Our first priority should be crash-free software, THEN start to think about making it bug free.
Not at all :) I was responding to the criticism of O'Reilly reducing to just two choices - Safari or Amazon.

We're committed to DRM free options wherever possible. We're coming up with some new stuff, but DRM free pdfs and epubs are pretty much our core business.
USAA is still affected by many of the same forces that affect for-profit insurers. USAA has changed a lot in the last 20 years as they've opened up to more members.
> The main failing of TDD is the assumption that you know all of the tests that you will need before you know your software.

You know what makes this work for me (I am a TDD & BDD dev, and I don't think it's dead) is the fact that you can reorder commits. When I hit a case like this, where the correct code is easier to write than the correct test, I still test it.

I write the test after, then I reorder the commits once the test passes, and make sure it fails predictably in the way you were expecting it to fail. Sometimes you find your test doesn't fail correctly with the codebase you had before the feature was implemented, and then you amend the commit and use rebase or cherry-pick.

Adding BDD to the mix helps a lot too. Sometimes you can write the whole test up-front! Sometimes you can write pseudocode for the test, but you don't have enough information about the details of the implementation to write what you'd call a complete test before the feature is born. Usually you can at least get a vague, english-language description of what the feature is supposed to do.

Then you have, at least, a foundation for your test (which can ultimately be upgraded to an executable proof/regression test), and you have a way to measure how far from the vague, usually simple, plain-english description of the feature you've had to go in order to produce "correctly behaving" code. (And you can amend the behavioral spec to correctly explain the edge cases.)

I am in the habit of telling my team members with less TDD and BDD experience, who are just trying to get the hang of building up a codebase with strong regression tests, that they should always try to write a Cucumber Scenario before they wrote the feature, even if they don't write step definitions until (sometimes a great while) after the feature is done.

I agree that the burn-down chart is not the end goal of TDD, and you should not optimize your process simply around making sure you have a progress chart and a great estimate up-front. Complete coverage of the codebase is more important! And surely there are other things even more important than that.
Did you not worry about the same at the peak of outsourcing boom? How is competing with the next generation of students any worse than competing with the whole world?
We already contribute to society more than most.

I am seriously tired of being seen as nothing more than a bag of blood for society to suck on and then come and insult me by emplying I haven't contributed enough.

Dammit I don't mind paying a fair amount of tax to make society work, but when they also choose to insult me because I haven't contributed enough and then waste what I have contributed.
JSX is similar, and I'd say it's a huge positive
I would be extremely surprised, and very sad if in 10 years computers still need programmers for 90% of what they need them for today.

Soon we will consider any programming just as arcane as machine code is today.
Full-Stack Swift in 30 Minutes
>but at least they don't have unelected politicians setting rules

I guess you are referring to the European Commission that is an executive branch of the EU institutions i.e. a government. Guess what - in most cases people have no control over who becomes a member of the government - in best case they can vote for a person who becomes a leader of the government (say president in US).

In that regard the selection of the members of the EU government is more transparent and demographic and perhaps also less effective.

President of European Commission: https://en.wikipedia.org/wiki/European_Commission#Appointmen...

Commissioners: https://en.wikipedia.org/wiki/European_Commissioner#Appointm...

It is sad that many people do not understand how EU institutions work part due to their ignorance but also due to foreign propaganda.

But I do not argue against British (or any) people to have a right to choose their own way (but I am also not sure that this is what they actually wanted).
> One thing I've noticed. TDD takes longer.

It's not just you, there's ample evidence[1][2] that TDD is a tradeoff between delivery time and quality. I think most experienced practitioners would agree this makes sense: when the schedule slips, you can cut testing but you can't cut implementation. Works at all beats trumps works in all cases.

In the TDD model, you make that decision up front, as well as the investment in tests. When the schedule slips in development, there's nowhere to cut but the most painful part, so you don't. The schedule slips.

To take a contrarian position, TDD fails because it doesn't allow management to revisit decisions as reality deviates from the plan N months ago. This seems like a surprisingly non-agile approach at the high level.

[1]: https://pdfs.semanticscholar.org/4dcf/5e7eed29c6707a8e1a415c...

[2]: https://www.infoq.com/news/2009/03/TDD-Improves-Quality
> Are people scared of books these days?

No, but books are more difficult to access than online tutorials and more expensive.

If I suddenly decide I want to learn Common Lisp one night, I'm going to Google "learn common lisp" and read/watch tutorials before I buy/borrow a book. That's not to say I won't move to a book eventually, but tutorials are infinitely easier to access.
This is genius time! I've moved a half dozen times in and since college. No way I can impose on friends and family to help me move anymore. When are you coming to L.A.? I'm all in when you do.
Thanks again! That seems like the natural progression. In an article by LinuxAcademy or ACloudguru, I remember reading that as far as AWS was concerned, Software Architect Associate -> Developer -> DevOPS was the route to proceed and it somehow didn't add up in my mind.
How would you use TCP sockets to de-duplicate Kafka streams with a many-to-many communication pattern? Surely there is a valid scalability reason for why AWS IoT only provides "at least once" guarantees in their MQTT broker even when TCP is the underlying transport [1].

[1] http://docs.aws.amazon.com/iot/latest/developerguide/protoco...
One politician’s solution to the overdose problem: Let addicts die
Always good to hear positive feedback :) Thanks! Any particular books you've enjoyed recently?
Its part of the game:

Stand up and shout loudly. You'll be taken seriously by some, given money or resources by others, talked about, and blogged about. Now, use that energy flowing your direction to create books, talks, and materials.
Hopefully a Clojure user will correct me, but something like (1 2 3) has a single printed representation for slightly different data structures. You can construct something which prints as (1 2 3) and when you read it, then it is something else.

user=> (list 1 2 3)
(1 2 3)
user=> (list? (list 1 2 3))
true
user=> '(1 2 3)
(1 2 3)
user=> (list? '(1 2 3))
true
user=> (cons 1 '(2 3))
(1 2 3)
user=> (list? (cons 1 '(2 3)))
false

It might not be a big deal, but from a language design view I would expect the single most important external data structure representation in Lisp - a list - is not overloaded with different data structures, where basic operators give different results. I personally would also think that in Lisp the predicate list? is fundamental and returns true for everything which looks printed like a list.

Common Lisp has a related problem for arrays: there are some attributes of arrays which have no printed representation. One will read an array back, but it might lack some features - like not having a fill-pointer. But atleast ARRAYP will still return true.

This seq/list thing might not be a big deal in practice, but it's another design wart. The language has in several places names, which are fundamental in Lisp and which mean something totally different now. Like 'atom'. Since the concept of a Lisp atom no longer applies - remember we have seqs, not linked conses - the name was reused to mean something different. atom used to mean (not (consp thing)) now it is something else.
> The article asserts that the problem fixed by the legislation is noise regulations that end up requiring wider supersonic engines to meet, which increase drag and cost of operation.

> To the extent the costs result from legislative mandates, and are not inherent in building supersonic aircraft, you obviously can

The problems with cost are real, but it's more from flight restrictions than drag (subsonic flight over mainland to final destination using a supersonic-optimized engine is going to be very inefficient).

We can just look at the Concord as a prime example. Barred from supersonic flight over mainland, it became economically infeasible to continue to operate only trans-oceanic flights (I believe all 3 operators ran it as a loss-leader, of sorts, due to the novelty). Even then, when approaching the destination, the Concord had to revert to subsonic speeds, and ditch the shock wave while still out at sea. Unless there's some magical way to generate only minute shock waves from large passenger aircraft (I'm highly skeptical here), you're going to break people's windows etc, or you're going to burn up a bunch of fuel and wind up with the same issues all over again.

The other lesson learned from the Concord is, there's very few cases where people need to be somewhere that quickly, and are willing to pay the high ticket prices to do so. One can almost always book an earlier flight, for a substantial savings (I'm also highly skeptical there's any fuel cost savings with supersonic flight as the article seems to claim).
> That being said, performance is what you want when it comes to low level layers that other layers have to rely on - e.g. You don't want your net stack be dragged down by a slow TCP/IP implementation.

What you don't want, is a whole economy disrupted by a poor technical decision. Abstract technical goals like "performance" are not valuable goals in themselves.
The goal of TDD is not to have tests, or a huge test coverage. Those are just important side-effects. One goal, ignoring how it improves focus and divides complexity up nicely, is to make cleaner code. If your code respects the single-responsibility-principle, is not duplicated, and doesn't have dependency issues, you can adjust the requirements faster. The test suite allows you to be confident your changes to some parts of the system don't break others.

You can keep more code, not even having to touch many parts of the system. You know that by changing x, you don't also have to change w, y and z. Of course code still must change, but its vastly simpler and quicker to change.

Now, that doesn't mean you can't have those benefits without TDD, it's just much easier and clear.
Is there a proposal to distinguish between a "thought leader" and a "public intellectual" beyond feeling that one is superficial and vapid, while the other is deep and interesting?

The problem is that "superficial" and "deep" are just metaphors, and boring or interesting is subjective.
Yeah I dislike that mantra, but I think it was a guideline for novice. I think the phrase should be updated to "make the test fallible".
It is pretty obvious that the snippet loads the real script. I expected this article to be about what the actual google analytics tracking script does rather than the tracking script loader.
The providers (ViaSat, Panasonic, etc) make money. I'm saying the airlines don't make much money on it. They have to bear the installation costs, which are very high, and pay the providers the bandwidth charges. There's also lost revenue while the plane is out of service and a slight (but adds up across the fleet) rise in fuel burn due to the antenna bump. Whatever they charge passengers doesn't recoup it all.

The cell / ground based systems have a different model, and the installation costs, while high, aren't quite as high. But, the providers there, like GoGo, set the pricing, keep the branding, etc, and only share a commission back. I don't believe it's a net positive revenue for the airlines either, but I know less about that space.
Of course. We know it can be done since it happens with alacrity at bill time. Why not do it in advance? It could could save the insurers money as well as the patient if the patient chooses the less expensive option.
iOS 11 and Privacy: What Developers Need to Know
That's a fine point, if you're using SANs. With Let's Encrypt, you don't need to use a SAN so long as each of your endpoints is distinct. (If they're not, I'm uneasy with your architecture in the first place, y'know?)

However, I would also point out that wildcards allow people who aren't you to create domains that you didn't create and represent them as being from you, which is an attack vector that even SAN enumeration doesn't allow. We're talking whitelists over blacklists.
> Competition is a healthy thing.

It is a way to incentivize and improve efficiency, but it can also be a very expensive way to do so. It requires a lot of redundancy. You're effectively doing the work multiple times in parallel and discarding the loser.

That's fine when you're talking small farmers growing strawberries who can switch to another crop if it turns out their strawberries aren't good enough.

But running multiple nuclear weapon processing facilities simultaneously and pitting them against each other is an insanely costly way of improving safety.
Speed of dotnet run vs. the speed of dotnet for published apps
This is generally better, but we're delivering these messages to integrations which don't necessarily take idempotent actions.
As I remember, one Microsoft was one of the original TDD pushers. One person who worked there for over 20 years told me that "the peak TDD" at Microsoft was right around time of Win ME release
Both the judge and the article thought the "Even if there was standing..." question worth talking about. It sounds like you're trying to quash discussion on anything other than standing.
Nah man, I have it on good authority that a node.js frontend to a series of Rust microservices is the best design for these control systems. Quit joshing me that anything else is ever used in any domain.
FYI, your landing page breaks on Safari with uBlock.
Here's a theoretical larger project, as well: https://en.wikipedia.org/wiki/Atlantropa
Why can't you just enjoy the disruptive potential of complex algo-intelligence deployed for the incremental betterment of a functioning economy?

(Looking for an agent)
They kicked out the British, why do they want them back? lol
I don't think the comparison to applying to jobs works. When applying to jobs you have a pretty sizable knowledge of the companies. When online dating, you know very little about each person (the amount of data varies greatly depending on the service and person). You can't know if you're going to like someone until you meet them in person, but you can have a pretty good idea of whether or not you're going to like a company by researching online.
The license doesn't allow that.

Yes, that's dumb.
YES! I'm a student at Columbia and I hate having to spend money on cheap furniture and having to sell it for a very low price at the end of the school year when moving out. This is EXACTLY what I'm looking for, and I'm sure that a ton of other students are looking for the same too. Best of luck with YC :)
I shudder at reading the phrase "Thought Leadership industry". It is largely manufactured, consensus-oriented opinions by people that happened to get popular for one reason or another and most likely don't really know exactly what they're talking about aside from some popular slogans, terms, or arguments already having been made. It's really quite anti-intellectual, yet at the same time ivory-tower.
Yep. Disabling AdAway seems to do the trick. Thanks for the heads up
You've made me think about this !

I recently had to pass between Canada and the US and I, too, was forced to enter a checkpoint where I was held by someone carrying a gun, who asked invasive questions about why I wanted to cross into a different territory and I had to satisfy the guard that I was not going to present any threat and that my purpose for travel was legitimate.

Like a fool, I previously believed this was a normal thing done by countries and that these were normal border policing activities at so-called 'border crossings'.

But after reading your post, I now realize I was forced to be subjugated by an evil oppressor.

At least, that is if I accept that an otherwise normal action at territorial separation points can be re-phrased in pejorative terms through re-naming of border crossings as the more sinister sounding 'checkpoints'.

edit:typo.
That SO post makes no sense to me. It claims:

> The authentication test can't merely back down one level to mysub.example.com because that isn't covered by the cert requested, and may not be under the control of the requesting agent either.

This just seems wrong. Performing the check like that seems to be a sane way to do it. If people can't control the base domain they have no business requesting a wildcard cert.
How to Obfuscate
https://en.wikipedia.org/wiki/San_Fernando_Valley#Adult_ente...
TDD allows you to make your abstractions based on real evidence, rather than conjecture.
Why do they need this? Directions to give preferential treatment to minorities in the hiring process would work just fine.
Is generating enough income to give a profit to investors so different from generating enough income to meet operating expenses. Even without investors, if I was working at an insurance operation I'd feel a conflict between trying to be good to customers and trying to keep the lights on.
looks like cool stuff. too bad I didn't read the article and don't have anything intelligent to say
Does DRM claim to accomplish that? Sure, they appear eventually but it does slow people down and raises the technical knowledge bar required to do so.
Britain is the genesis of freedom. Go read the Magna Carta. Other Western European countries also spread fantastic ideals.

Non-Western countries have ZERO freedoms, and people are crawling over themselves to move to the West. DESPITE, these "colonial powers" leaving 40-50 years ago, those populations want to move to Europe, the US, Australia/NZ, and Canada.
There are a host of good reasons not to choose Racket. An intent to explore the Lisp family of languages is not among those within a standard deviation or two of the median. Likewise approaching the Lisp family of languages with tooling expectations in the fat part of today's Bell Curve probably makes Common Lisp a more frustrating tool than is necessary. In different circumstances, the value of tradeoffs would be different...for example reading an ANSI Standard might be perfectly acceptable as an alternative despite being on the long tail of ordinary practice for someone coming from "the JS, Java, Python world" -- with particular attention to the ECMAscript standard.
Kafka 0.11 (recently released) has exactly once semantics and transactional messages built-in.

- Talk from Kafka Summit: https://www.confluent.io/kafka-summit-nyc17/resource/#exactl...

- Proposal: https://cwiki.apache.org/confluence/display/KAFKA/KIP-98+-+E...
Working in the "trenches" where you direct your own work and have $1B in the bank isn't exactly the same as working in the "trenches" under the direction of those disconnected managers that have all this leverage on you. Good engineers, who should not be going into management, are doing so because it's their only way out of the trenches. Founders get a choice between becoming managers or letting someone else run their company. Can you manage a tech company without understanding technology?

How come we're not innovating more on the structure of those companies?
How to fix errors in production with GitHub and Sentry