skysight-inc/HackerNews huggingface dataset:
Talk to the client and find out what their reasons are for them to make that request. During this process you can probe how much your client understands the processes involved in doing what they want. If they understand the processes and the problem you have with the request presents itself obviously, straight up ask what they expect to receive given the problems that exist. Who knows maybe they think they want z from X but really what they want is z from y and talking through it you might work this out.

If the client doesn't understand the process enough for the problem to be obvious to them, then I would explain it. After both of these things I would continue ahead and complete the task unless requested otherwise by the client ,aka full steam ahead unless they change their mind. Even if it's dumb shit your still getting paid to do something atleast and your making your client happy which is all that matters.

Also this might come across formally but in irl you can do all of this in really unobtrusive ways using some good casual banter about the task at hand. Keep it friendly, remember "there are no stupid questions only stupid answers".
Competition in search for excellence is a dangerous tool, management implements a metric and the departments optimize for the metric no matter what the long-term goals are. This is how Sears became run into the ground: http://www.salon.com/2013/12/10/ayn_rand_loving_ceo_destroys...

Armed forces around the world rely on esprit de corps. The British SAS don't have to compete against Navy Seals to know they are the best, they know already.
The Muggle Problem
I'm really wondering how VC money was supposed to make this business profitable. Sure, the idea is let them last long enough to grow their customer base, but with "millions" of pages read, they were making ramen-profitable-for-one-guy money from something that required a team of people. I imagine it didn't seem clear to investors that there was a big potential for growth, and they'd need big growth just to survive, much less provide a return to investors or drive off into the sunset in a Ferrari.
Success Story: Simkl's TV App
Mir: the new order
SSAS: Discipline, Accuracy, Attention to Details
Chinese tech giant Tencent launches AI assistant
I've also never found TDD to really be very beneficial except for all but the most trivial utility libraries.

Most of the time, I have an idea of where I want to go, but not necessarily exactly what my interface will look like. Writing tests beforehand seems to never work our since nearly always, then will be some requirement or change that I decide to make that'd necessitate re-writing the test anyway, so why write it to begin with?

The extent of my tests beforehand these days (if I write any before code) are generally in the form of (in jasmine.js terms)

it('should behave this particular way', function() {
fail();
});

Basically serving as a glorified checklist of thoughts I had beforehand, but that's no more beneficial to me than just whiteboarding it or a piece of paper.

That said, all of my projects eventually contain unit tests and if necessary integration tests, I just never try to write them beforehand.
> If you suck at writing code, then TDD should help you determine whether your sucky code produces the correct output for a given input

Well, if you suck at writing code, what guarantees do you have that the tests (which are also code you write) are even correct?
Can somebody explain this please?
Embedded DSLs often seem like the typical "bike shed coding styles" taken to the extreme. In my opinion they often value form over function, creating an entirely new (subset of the) language just because.

I can obsess about code formatting as much as anybody else but creating my own subset of the language just for a specific domain just seems excessive. It puts additional burden on anyone else trying to work with it because they now not only have to worry about the "host" language but also the idiosyncrasies of the embedded DSL.
It doesn't necessarily lead you there at all. "Dependency injection" is a fancy phrase for "pass stuff a function needs into the function", only it does so by adding state to objects where that state probably shouldn't exist. You don't have to faff around with IoC or MVVM to properly isolate dependencies; indeed, it's the core idea behind something like Gary Bernhardt's "Functional Core, Imperative Shell" (which, if you're not understanding this instinctively, makes me fear for your code):

https://www.destroyallsoftware.com/talks/boundaries

https://www.destroyallsoftware.com/screencasts/catalog/funct...
Any programming language suitable for business application development is going to have static analysis tools that can reveal your percentage of test coverage.

As long as 95% (or whatever) of your logical branches are covered by tests, I don't really care whether you wrote the tests beforehand or after the fact.

However, TDD being hard is not a justification for not writing the test coverage at some point in the dev cycle. Too many developers, and managers, make that fallacy leap.
A UX critique of the Nintendo Switch
Defining the interface before you write the code is the major advantage of test-driven development and what it added to that way of thinking was very valuable especially to novices. It also makes your code more modular and reusable. Writing code as if other people were going to use it is something we don't talk about enough.
Contract-driven development is the best model for building stable and reusable systems at scale. The flaw in TDD is that it tries to make the tests be the contract instead of supporting the contract.
> The Lee-Gardner Amendment would help us reduce drag by allowing us to make our engines narrower. Current engine noise rules for new supersonic aircraft are more stringent than those for the existing subsonic fleet. By setting our engine noise to the same levels as existing subsonic airplanes, we could make our engines produce so much less drag that we would save 20–40 percent on fuel, depending on whether you use this year’s or next year’s rules as a baseline.

They're narrowing the engine to get less drag and setting the noise to the same levels as conventional planes.

Skeptical. I know what narrower means but noise is a result rather than a parameter.
Things you can Omit in an MVP
Facebook introduces new ad metrics and promises that more are coming
I've recently tried Lyft - at airports and downtown areas it's fine (10-15% cheaper than Uber), but in some more suburban areas the wait times (compared to Uber) make it unusable.
Using fake ransomware to stop real ransomware
We all know ransomware, right? It encrypts your files and demands money. You pay, your data is decrypted.

The only reason you would pay is if you believe there's a reasonable chance you will get your data back.

Now imagine that for every trustworthy ransomware out there, there were 10 ransomwares that take your money but don't decrypt your files.

People would just stop paying, eventually.

Could this be what is going on right now?
Hacking, witchcraft, radioactivity. They all have in common that they are something you can't see, hear, or smell coming at you. Thus they are anxiety inducing...
Cloudyn acquired by Microsoft
Hi!

I'm Raphael Hernandes, who's behind this project. Thanks for the support.

If you wish to contact me, feel free to email me r@privacidadeparajornalistas.org or on Twitter @rhhernandes.

Thanks once more!
Another interesting aspect of Google Analytics is understanding how fraudsters sneak by, and the discussions here on HN whenever this comes up.

Examples:

· Hackers Make $5M a Day by Faking 300M Video Views | https://news.ycombinator.com/item?id=13219871 (6 months ago)

· Uncovering an advertising fraud scheme | https://news.ycombinator.com/item?id=2333824 (6 years ago)

Discussions:

· Alleged $7.5B fraud in online advertising | https://news.ycombinator.com/item?id=9796102 (2 years ago)

· Inside Google's Secret War Against Ad Fraud | https://news.ycombinator.com/item?id=9628967 (2 years ago)
It can be done sanely, but they don't have anything flying yet (was supposed to be May 2017 but that came and went).

Also, don't be fooled. The smaller test aircraft, if it ever flies, will have a much lower sonic boom than the larger airliner. Sonic boom is largely proportional to aircraft weight.
Very true. Even Robert Martin himself says that TDD without refactoring is worse than TDD (in one of his books). He mentions that if refactoring is not done you will be worse off than had you not done tests at all. He even recommends simply deleting all the tests.
Would you say this is the battle between syntax & semantics?

If you are inventing new syntax to support semantics you don't fully understand along the way, it usually ends up as some franken language.

Lisp makes this a feature by limiting what most people end up doing into one syntax, and with things like macroexpand-1, you can see what "real code" is being generated.
I am delighted by the idea of a little anthropomorphic chunk of air shouting "Move, there's a plane coming!" and then face palming upon realizing too late that it is using sound to warn other bits of air about something moving at supersonic speeds.
That's really great feedback. I wrote something about API building a couple weeks ago without specifying I was referring to a _web_ API. I'll try to be much more conscious of this going forward. Thanks for the expression.
I also don't understand why people tend to elevate a technique that's very useful for some cases to a religion that needs to be followed always.
If you're talking about Scholze's lectures about his cutting-edge work, there is not a chance they are accessible to undergraduates; when I attended one as a fourth-year PhD student specializing in algebraic number theory, I would say I only kind of got the gist of it.

Re: your skepticism... The guy is a once-in-a-generation talent; his constructions were able to vastly simplify multiple very long, very complicated proofs that groups of the top people in this field were working on. This is in a field (algebraic number theory) which is considered one of the more saturated and technically difficult within all of mathematics (admittedly, I am likely biased on this point). That being said, all of his work so far has been in the ballpark of Langlands/p-adic/arithmetic geometry, so I would be surprised if he achieved significant results that strayed too far from this stuff.

I'm not sure what you mean about Feynman; Peter's genius is not so much his ability to communicate complex ideas in a simple way, but rather he was able to come up with constructions (or if you like, abstractions) which compartmentalize the complex ideas in the right way so that they are easier to deal with. To make an analogy with computing, think of the concept of a "thread". Without the concept of a thread, you'd have to do so much manual maintenance that you could never dream of building say Google. Scholze's perfectoid spaces are analogous; their definition would have been understood by mathematicians 50 years ago, but no one really got that this was the right thing to consider.
It seems to me that masses can only be created by steadily increasing the diameter of a roughly spherical body, presumably of constant and uniform density. Is there any way to vary the uniform densities of bodies? So I could create one small dense body with the same mass as a big diffuse one?
I like it! I'll have to try that the next time I encounter some new code.

A few questions:

* Do you worry about file names?

* Do you use names from the code or your own shorthand?

* How do you handle conditionals?
My experience is that whether one is writing tests first or not, the code that is being written does get tested one way or the other.

In other words, people (for example web-devs) who don't write tests first tend to "test" their code by clicking around in the browser to see whether they get the desired effect.

Writing tests, running them and then iteratively updating/fixing the code is IMO so much more efficient than manually clicking around to test one's code.
Used car dealers do that. There's usually an alphanumeric that tells the salesperson how much they paid for the car and some other stuff.
https://en.wikipedia.org/wiki/Delta_Works

It doesn't answer all your questions, especially since economists have noticed that the US has trouble keeping large public works on budget, but it's the obvious project to look at.
Miami is basically screwed when it comes to rising sea levels.

Florida is not a very high state, to start with. The Everglades are basically a 60-mile wide river because there's insufficient height to actually channelize them. If the sea level rises around 5-7m, Miami starts flooding from the western direction as well. Protecting Miami would mean building an island in a shallow sea, not enclosing a bay.

The other problem is that South Florida is built on a very porous bedrock, so there is significant underground hydrology. The sea is largely kept out by the pressure of Lake Okeechobee and related hydrological systems pushing against the salt water intrusion. Even if you built up the land in Miami itself, as the rest of Florida floods, the sea starts making better inroads and Miami floods from underneath.
> Mutability has its place, and simply hiding it behind abstractions tacked on to the language (vars, refs, agents, and atoms in Clojure's case) isn't a productive way to deal with it.

In Clojure if you want mutability, you don't use an PersistentHashMap i.e. `{}` inside an atom `(atom {})`, you import and instantiate a mutable java class `java.util.concurrent.ConcurrentHashMap` or `java.util.HashMap` `(let [m (doto (java.util.HashMap.) (.put "foo" "bar") (.put "spam "eggs"))] .... )` and bang on it just like you would in Java. Clojure doesn't attempt to solve mutability because the host platform has already done a good job at that. Clojure provides semantics around state managment of persistent data if you need that sort of thing, but that's not necessarily a good replacement for mutability if you actually need a mutable thing.
Have you tried creating a 'creator's' software that's lightweight, easy to use and has lots of pre-loaded illustration packs (with a wide variety of themes) & drag-and-drop style animation presets?
Few points on immutability and Clojure.

The abstraction that hides mutable data structures is transient[1], not vars, refs, agents and atoms.

Those abstractions are all to do with mutable references, not mutable data. They're there to make sure that you have safe ways to coordinate state in concurrent environments.

I agree that immutability can be annoying in languages that weren't designed with it in mind, but the languages that were almost always make it easier, safer and performant to create copies rather than mutate data.

If you're writing Clojure or Haskell and you think you're going to save yourself time by "just creating a map and mutating its structure" then you're misunderstanding the purpose of the language. These constraints are what enable the guarantees and contracts those languages make.

[1]: https://clojure.org/reference/transients
Wonder if the article author had bothered highlighting the model of laptop if it was anything other than a Macbook. Hell, going by the image used it was wrapped in a non-descriptive case (not even a window for the logo).
Agreed, but I would add there are specific scenarios where doing the test first really helps - when you're building a routine complex enough that you can't think upfront how you'll do it, like a complex calculation for example. In that case, at least thinking about the tests first and making one by one pass helps you breaking down the problem into smaller, easier parts.
Core Developer Motivations and Affiliations
If your CM is testing that the expiration date of the certificate that is actually used by a TLS server is correct, through whatever means, for example after each renewal operation, and if you also have some way to verify that the renewal operation runs regularly, then you're effectively monitoring your certificate expiration date. I'm not particularly concerned with where you do it from, whether it's part of your CM or a third-party service, etc., as long as it happens.

There are plenty of other things related to your TLS certificate you might want to monitor that don't quite fit into CM (OCSP revocation status and availability, unexpected key rotations, etc.), so you'll likely need separate monitoring either way.
Not really. You can definitely practice TDD in two week sprints.
Ask HN: Who do you use for donation handling for open source projects?
Currently, we accept donations via PayPal. But PayPal's support leaves a lot to be desired. We're currently being hit with multiple fake donations using stolen credit cards so they can be tested. Inevitably, the charges get reversed and we get hit with a chargeback fee. So, we have to manually refund every single one of these fraudulent transactions. We lose the PayPal fee on each refund. This can get substantial. Yesterday we got a fake $6,000 donation from the same PayPal email address that's sent in 6 other stolen credit cards/bank accounts to test. This one will cost us $174 if it goes through. PayPal offers no facility to block the account or report it. The "see the details of this transaction" links in the notification emails don't even work (broken for 16 months now) so we have to manually search or page through to every fraudulent transaction, which makes it easy to miss one.

So, who is everyone else using for donations to open source projects? How are their fraud handling abilities? How's support?
How to start a big Programming Project without getting lost
Actually Ukraine is the stable escape strategy for conferences which should have been held in Russia. Latia is also quite popular, but Ukraine is the usual target to escape Russia's strange visa handling.
I wonder what will be the escape country for the US situation. Canada or Mexico.
No, I'm saying that the IARC group for all of those product is exactly the same.

The ones saying silly things are the one saying things like the oine you said disregarding any evidence.

If you're so afraid that glysophate might be carcinogen, you should be very afraid of roasted potatoes or red meat because they are in the same exactly group.

And please, can you tell me where I have said anything of eating glysophate?
By non-Newtonian I think you mean relativistic. Boom is going Mach 2.2 or about 1500 mph. Light is going 186,000 mile per second.

Not even close.
> I'd like to hear more of your thoughts on that.

These days it seems that even for the most rudimentary programming tasks everybody reaches straightaway for their favorite framework/lib without too much thinking.

I think in a way all these frameworks and libraries have had a negative impact on the general quality of coding. Programmers end up with limited knowledge of how the underlying technologies work: the HTTP protocol, SQL, the DOM...

And because these frameworks tend to grow over time, in an effort to be comprehensive and serve everyone's needs, they introduce more and more dependencies, more and more tooling, more and more code, which you'll need to get to know sooner or later.

Programmers who use said frameworks and libs become more and more "hooked", start using more features than actually needed (do you really need that auto generated REST API for that 3-page dry cleaning website?), and in the process become, well, dumber.

You can of course take this argument to absurdity by claiming that everybody should just write machine code. That's of course not what I mean. I just think that for many programming tasks, programmers would be better off - and no less productive - just by attacking the problem head on, with a good understanding of the technologies involved.

Sometimes a simple handsaw is more efficient and less hassle to use than that fancy sophisticated table saw you got in the corner.
That's exactly how I've always done it, and it works beautifully for me.

Put "test stubs" out there that define what I'm testing in "human" terms, leave the stub either skipped or failing.

I've also found that if I wait a day or 2 after writing the implementation to write the tests, they catch much more.

If you write the code to match the tests, or you write the tests right after the code the chance that both the test and the code are wrong is much higher in my experience than if you wait a bit and come back to write the tests with fresh eyes.
I agree entirely, it's hard to do much productive (or not productive) work without WiFi these days. If you're building a little side project you need access to third party APIs etc, or some documentation.
The investigation further revealed that the penalties imposed by the government on the private firms that make America’s nuclear weapons were typically just pinpricks, and that instead the firms annually were awarded large profits in the same years that major safety lapses occurred. Some were awarded new contracts despite repeated, avoidable accidents, including some that exposed workers to radiation.

The author buried the lede.
Quick intro to web development with TypeScript, webpack and Aurelia
Right, which is why I see them to continue to outsource that to networks. Amazon and Netflix are in a position where they have the reach that leagues want, but they don't have the experience with live content. My guess is that is their (Amazon, etc.) hesitation in jumping into a bid.
I found it just flew in the face of iteration. I get something simple working, then iterate a few times, adding complexity. If you have to iterate your tests as well, you're just walking in treacle.

Either that or you end up with a load of stuff in your interface that you thought you'd need, but when you actually got to it you either didn't, or it wasn't important to implement at the outset.
It's interesting to me that programming is becoming a fundamental part of many (maybe most) things humans do. And yet we treat it as if there was one single correct way of programming and all other ways are wrong.

I feel like it's much more akin to human language. Though the language primatives might be the same, it's used differently in different contexts are appropriate.

In formal, legal speech, you might want to be explicit.

In informal, everyday speech, not so much.

Similar analogs exist in programming. 10 time script to reformat data for one time use, careful documentation, tests etc. not really required.

Aircraft flight control system, very different...

But then why is it that so many programmers seem to focus on "the one true way" (TDD, agile etc). Beats me.
Revenue is the important number to look at - Wikipedia has it at $329.5M as of 2014. Profit is after salaries - when all the early Firefox people left, they were replaced by other programmers, who probably cost a bit less but not a whole lot. I think tsunamifury's estimate of $500K-1M minimum isn't out of line, but even then, a team of 20 people making $1M fully-loaded costs $20M, which isn't exorbitant. Mozilla's revenue was estimated at $57M in 2006.
Of course if something analagous to the SAS selection course was used for hiring at these labs, methinks you wouldn't see sloppy work either.
"Getting bits diddled remotely by bad actors is not something they've had to think about as long."

They should never have to worry about this.

Power plant equipment, etc., should not have networking capability. Not just no Internet, but no networking.
Within the existing framework that forbids sonic booms, we suggest to adopt a flexible posture, pivot and disrupt air travel.

tldr: Screw the peasants on the ground, Silcon Valley tycoons should be allowed their pet jets.
Planet Earth II did an episode about Cities, I found it fascinating. They definitely talked about the Falcons in NYC. But even more interesting was the fish that eat pigeons.