Depending Less on Structure - <AUTHOR> https://lmatteis.github.io/depending-less-on-structure/ <comment><USER2> 1\. Example is too simple, functions could modify anything in a model depending on context.

2\. Good luck trying to optimise this (just merging all behaviours together at the end does not equal optimisation).

3\. You're just pushing the problem elsewhere - now I need to understand all behaviours from a black box, then wrap them, all while dealing with all the other wrappers people have already put in place. Imagine dealing with that complexity.

<comment><USER3> Yeah. I like it from the point of view of "think new thoughts". It's an interesting thought. Let me highlight that with a few more words here to indicate that I don't just mean that as a polite sidebar; it really is an interesting thought. There may be something there.

But as presented, the code complexity scales like a nightmare; it makes the worst Ruby monkeypatching look sane. Something would have to be done about that before even a toy implementation could be done, because this will fall apart very quickly.

When you give away structured programming, you give away its benefits too. One of its benefits is that in a structured program, you can freeze a thread at any point and you have a clean mechanism for determining from there what its stack trace is, and all the relevant scopes it has access to and could be affecting it. In real code, this process may produce a very large number of variables and stack levels, but it'll still be a fraction of the program's possibilities. This is how structured programming helps us approach programs as structured slices of the code base, instead of a holistic view of the entire code base at once (this is the true reason goto-based code was so evil in the day; you could never do this analysis). This approach throws this away. That is not intrinsically wrong. But I'm not convinced at this time that the compensating features we get make up for losing that clarity, especially because the benefits are going to have terrible scaling problems as presented.

If someone was going to pursue this, this is the angle I'd take; how do I freeze my program and determine what is affecting the behavior of the current execution trace? Assume an arbitrarily powerful debugger attached to your running process, as long as it doesn't "magic" anything into existence. I can see sketches of ideas in my head, I am by no means saying this is unsolvable. But I think it's something I'd need to see laid out a bit more before I got too excited. To anyone thinking about this, I'd advise you to also not forget _scale_. Anything works for 100 lines of code. I need you to present me with something that can make sense of when I'm running, let's say, _thousands_ of these advisory functions at a time on a single question. Structured programming has an answer to that; being a thousand layers deep in a stack trace may be a lot for a human to take in, but nevertheless, the procedures that structured programming provides will still give you answers. (And I'm not asking for the solution to work any _better_ than structure programming does in that case. Thousands of anything is irreducibly complicated. But it needs to at least give me understanding in the ballpark of what I have in a thousand-deep stack trace.)

<comment><USER2> If you want to continue thinking along these lines, then look at how humans do it. For example, when writing a word document, the person has a continuous stream of ideas of how to write about a subject. But do they continually append only to the document? No, they delete, rewrite, restructure etc. It's just english is more flexible than our programming languages (and thus more ambiguous), so these operations are easier to do.

I would think if continually layering over the top of existing ideas was somehow better, then evolution would have gone that route instead.

<comment><AUTHOR> You're comparing writing a document with how we evolved which in my opinion is a false analogy. Our brains interact with complex systems in a much more intricate way than what is "writing a structured document". And in fact the entire attitude of this approach is the fact that we're not dealing with a statically structured word document, but with a much more intelligible system: a computer. Hence why not imagine programming differently: where we discuss with the system, and inquire it similarly to how the modules written in the article illustrate.

<comment><USER2> Perhaps, but we've had this problem since being able to formulate speech, where we have no way to 'undo' what we said in the physical world. So our language adapted to allow us to say things such as 'let me rephrase that', or 'ignore what I said, I'm wrong' etc. It's interesting that when we moved to computers, the preference was almost immediately to be able to completely delete/rewrite our thoughts instead.

<comment><AUTHOR> Indeed! And that's exactly why I think programming feels so unnatural. Sure it is natural for us as we have years of experience modifying the structure of programs - where the structure is dictated by the nature of how computers mechanically work with memory/storage and others parts of the processor. Programming is this way because the actual computer structure demands it to be that way.

Hinting at solutions that are closer to how we generally think or at least closer to how "non-coders" interact with computer systems should be more mainstream. For instance, this approach is much more similar to how non-coders write down requirements: when we discuss with people "clicking the button should stop the door from opening" we don't open a bunch of other documents and modify them accordingly to satisfy such statement. Instead we just "pile- on-top" such fact that might overwrite, contradict or replace other pieces of requirements.

The whole point of this article is to make programming similar to the way we write requirements.

<comment><USER4> It will make it as much of a mess as any legal document, making it impossible to work with for any sane human not paid to do so.

If you literally cannot guess at a glance how it will work as a programmer, how can you expect a user to do so?

Even this trivial example is rather wrong. People do not think of message passing, synchronization or locks. We generally work on unordered, timesliced but fuzzy logic.

When I press a button, it will immediately light up a red lamp - nothing in this is remotely near to how a machine will implement it. There's no message passing in the transistor that sits on a wire. Immediately does not exist, but you can consider some things "perceptually immediate", putting a hard time bound. Yet our programming does not deal with time explicitly. Pressing a button means a contact, but it does not say for how long or whether any bounce has to be handled, because we think in terms of stable states when really they don't exist either. Yet there's immutability and hard state everywhere in our programming.

A human will handle a hardware error with a workaround, but software will fail in any unexpected scenario. And there's tons of these. We simplify programming by relying on the intelligence of the operator in many cases, but do not provide guidance. Literally not even whom or where to ask. It's good if the software even attempts to collect error info.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> How do we handle errors? Race conditions? Re-tries? Anything beyond the boundary of our executing process is veering into distributed systems.

From what I can tell that's exactly what a 'module' is. By weakening the contracts between modules and turning synchronous execution into asynchronous calls, you've taken on creating a framework / language that takes the difficulties of distributed systems and made them local, so every bit of important logic is a distributed systems call.

</comment><comment><USER6> > However I think that this approach comes with some cost. For instance if > (isMultipleOfThree(x) && endsWithDigitFive(x)) is very easy to understand, > but isMultipleOfThree(x) and endsWithDigitFive(x) in different modules is a > lot harder. Personally I see this more as a trade-off: trading control flow > for extensibility.

I think this is a massive understatement. Imagine replacing most of the ifs in your program with new top-level constructs that run in parallel and exchange events. The maintenance overhead of this idea seems astronomical, for relatively little benefit. I would be terrified to add new modules to such a beast, knowing that they could affect the behavior of any other module, in complicated cascades.

<comment><AUTHOR> Difference is that any point in time you can add things that "must not occur" ex. forbidden scenarios. If you don't understand a specific execution you can block it and work on replacing it with another one that is more appropriate.

<comment><USER6> How would I know if blocking an event would not cause cascading behavior wrecking other use cases?

<comment><AUTHOR> How do you know when adding a new requirement that the forbidding of something won't cause a cascading of other requirements to conflict with each other?

In essence we are used to restricting our understanding of a piece of software through the structure and the code (and maybe some documentation). Instead this approach aims at a much more dynamic and feedback oriented view on debugging: if blocking an event causes other things to break one should be able to run tests with the new blocking module in place and figure out why things break; just like you do in normal code.

I would argue that also a small change to a strictly-structured program might cause the wreckage of other use cases.

<comment><USER7> When doing things properly, we are not restricting our understanding of a piece of software through the structure and the code, we are restricting _what we need to take into consideration_ in order to achieve a necessary understanding our code, and confidence in its correctness.

In badly-designed conventional code, changes can have far-reaching consequences, which makes it hard to understand, but under this proposal, it would seem to be the default. Reasoning about asynchronous behavior is hard. (These points are demonstrated by how much had to be written to explain the example.)

The author says that merging is the problem, and that this approach obviates it. With conventional programming, the pain of merging can be mitigated with the careful separation of concerns, while this approach seems to turn every aspect of programming into merging.

Everything I have said here about conventional programming depends on doing it well, but at least you have the option to do so, and simplify things through the separation of concerns, while I suspect the approach here makes combinatorial explosions of complexity almost unavoidable. The goal is not to make complex software, but to solve complex problems with software that is as simple as possible to produce and verify.

</comment></comment></comment></comment></comment><comment><USER8> This looks similar to tuple spaces, which were popular when I was a kid. At least the promise is similar: programs that work together without knowing about each other, by adding rows to a data store or waiting for rows that meet a specific condition. [https://en.wikipedia.org/wiki/Tuple_space](https://en.wikipedia.org/wiki/Tuple_space)

</comment><comment><USER9> This 'layering' of new functionality reminds me of the Subsumption robots architecture[0].

My main takeaway was that you could build complex behavior by layering together reflexes. You wouldn't actually disable an existing layer, just add an overlay to disable it in certain circumstances.

I heard in a lecture once that our hands are wired similarly; we have a nerve that triggers a grasping motion involving all fingers, then we have overlay nerves that can disable the signal on a per-finger basis.

It may be that this is a fine way to build complex systems that's not optimal for _human_ reasoning patterns, but may for evolution (or other hypothetical non-human reasoning processes).

[0] - [https://en.wikipedia.org/wiki/Subsumption_architecture](https://en.wikipedia.org/wiki/Subsumption_architecture)

</comment><comment><USER10> At the top level it seems this is and-ing together multiple requirements. You can add more requirements and it will return true less often.

This sounds similar to the Cue configuration language? I haven't used it but I understand that you can add new constraints without necessarily understanding all the other constraints.

You probably do need to test the results to make sure you haven't overconstrained things, though?

</comment><comment><USER11> This reminds me of a project I worked on right after college, doing the initial implementation and research of something now called FLX ([https://books.google.com/books?id=DiOr9P2oA6YC&pg=PA115&lpg=...](https://books.google.com/books?id=DiOr9P2oA6YC&pg=PA115&lpg=PA115&dq=feature+language+flx&source=bl&ots=wLZG_mHcj9&sig=ACfU3U0mJBnlsBzUyGK6X-R1-sf0IutIgA&hl=en&sa=X&ved=2ahUKEwiq- emc7IHnAhXVHjQIHT9eAP0Q6AEwAXoECAkQAQ#v=onepage&q=feature%20language%20flx&f=false))

One of the issues when then number of modules grow to a large number is that they may all have different conditions to keep track of. It's then possible that the modules all contradict each other and never yield an executable state. Imagine trying to debug a system like that.

The next layer is then to ask, with all the modules and their output state, will their combinations ever be satisfiable. At that point, we turn the states into a large predicate logic equation and can use a SAT solver to figure that out.

I left off there in 2005, but the project is still being researched on. If you're interested I can get you in contact with the professor.

<comment><AUTHOR> Very interesting insight! Indeed the authors are working (as of 2019) on making the sync points resolve based on constraint solvers:

\- [https://arxiv.org/abs/1909.00408](https://arxiv.org/abs/1909.00408)

\- [https://www.researchgate.net/publication/338358976_Executing...](https://www.researchgate.net/publication/338358976_Executing_Scenario- Based_Specification_with_Dynamic_Generation_of_Rich_Events)

I am currently reading through your research and will sure get back to you about this.

</comment></comment><comment><USER12> The concept is interesting - adding new behaviors to existing code without fully understanding it. The new code also looks like it could execute concurrently, which is a bonus.

But there are times you do want to understand how things work. With lack of clear "connections" to follow in the code, it seems like it would become harder to reason about what is going on in the first place.

<comment><USER13> I think there could be 'views' of data flow instead of a static data flow. I.e. You could somehow query the data flow for a specific output to see which behaviors had effect on it.

</comment></comment><comment><USER14> Forgive me my ignorance but isn't this scemantically how branch prediction and pipelining in cpus work ? As in when you are writing code that looks like 'isMultipleOfThree(n) && isMultipleOfFive(n)' in a lower level language, the compiler and cpu work together to produce the logic that computes both and sync()s on the answer ? I do not see the benefit of pulling this complexity upwards into the problem domain or the manner we model solutions to real-world problems.

OTOH, if one were to think about it, we _do_ anyways build software in the manner described -- the only difference being that we 'sync()' on a different layer of abstraction -- the OS, the network, the libraries, the apis ..etc. Building software to be modular, pluggable, extensible, swappable at those layers has always been considered to be good practice. Is the benifit of creating additional absraction layers within the software itself really worth the complexity ? I'm not convinced.

</comment><comment><USER15> The example with the number is poorly chosen. It is overly simplistic and can easily be implemented as as something like

(pseudocode) bool satisfies_all(value, functions) { for each funcction in functions { return false if not function(value) }; return true }

I get that the author wanted to go with a very basic example to keep it easy to understand, but it seems like that's the main problem with the proposed mechanism: It gets very hard to understand very quickly, leading to spaghetti code.

</comment><comment><USER16> <quote> In the common integration-style way we'd have to alter and somewhat complicate the modules that are responsible for these changes.

In this new Behavioral Programming style we can instead map these changes quite naturally to new modules that can be swapped into the program without touching or even seeing how the system works. </quote>

If it's so natural, where's the example?

<comment><AUTHOR> I gave an example of how a requirement is mapped to an actual module in the next section.

</comment></comment><comment><USER17> This sounds a lot like lazy evaluation. And the cohesion/coupling graphics look a lot like a category diagram. Haskell is a language that is lazily evaluated and is one of the reasons why programs written in it compose so well. The benefit of it is that you don't have to write all of this extra code.

An interesting way to think about it.

</comment><comment><USER18> To me it's a bit like event-based programming: separating the event (when to do) and the eventhandler (what to do) where handlers depend only on events and not on other handlers (or state), so the logic the handlers depend on remain separate.

<comment><USER19> Yes, although a key difference seems to be that steps in the pipeline are allowed to interfere with arbitrary other steps.

<comment><USER20> Traditional event-driven programming often has event priority values or rank, and an optional "end event processing" operation associated with events, doesn't it? MS-Outlook's "rule engine" has these, for example. That seems the same thing as "allowed to interfere with arbitrary other steps".

Sure, you can "lock out" using/modifying such operations, but one must know when and where to lock someone/something out. Programming is still a persnickety endeavor with or without using events.

<comment><USER4> At least events themselves are processed sequentially, so having a trace of them is meaningful. Here, anything goes, as there's a multitude of queues.

</comment></comment></comment></comment><comment><USER21> > _Intuitively we just introduced a change to a program, albeit a simple one, > without having to do any integration work._

Rather, "while leaving integration work undone, pretending it doesn't exist".

</comment><comment><USER22> does it mean instead of spending time on defining functions, we need to spend time on defining modules? what's the difference between modules in this context and functions in the `traditional` context?

<comment><USER23> As far as I understand, a "module" doesn't takes parameters, neither return a value, but instead subscribe and publish to some queues? That can be seen abstractly as a function (topics to subscribe to) => (messages written to topics). I think that they are named "modules" to make it clear that it isn't a conventional function, but instead a block of logic that consumes and effects some message passing data structure.

Just my understanding after reading the article ¯\\_(ツ)_/¯

</comment></comment><comment><USER24> I wish there were more context here. I have no idea what `sync` is. I gather this is js. Searching "javascript sync function" yields nothing obvious. Is it a framework thing?

<comment><USER6> There is no JS in this post, it is pseudo-code for a wholly different kind of language/runtime system:

> Let's rewrite the program above using a sort of new "language" with > different execution semantics.

The semantics of it seem to be "wait for an event with some tags".

</comment></comment><comment><USER25>
        return isMultipleOfThree(readInput());

</comment><comment><USER26> I might be missing something but from a quick skim did he just reinvent (a specific instance of) monads?

<comment><USER6> Well, Haskell's IO is "a specific instance of monads", but it was still an important discovery, even though monads were a well known concept.

The idea would be to encapsulate your whole program in a very specific monad, one that:

\- runs all functions in parallel

\- implements sync points between functions

\- implements an event system with named events and attached values

This does not at all reduce to "reinventing monads".

Note: I think the idea is horrible, any moderately complex program written this way would be entirely unmaintainable in my opinion. The author touches on this towards the end, but I think they are completely minimizing the down- side.

<comment><USER27> > Note: I think the idea is horrible, any moderately complex program written > this way would be entirely unmaintainable in my opinion. The author touches > on this towards the end, but I think they are completely minimizing the > down-side.

I agree so much. I can't help but think that modifying code you don't understand by injecting more code via hooks is a recipe for disaster, and the next person maintaining the composite product has to chase down all (ab)users of these events like we once had to hunt down abusers of global variables to understand what the hell is going on.

I don't even agree with the premise that this thing is less dependent on structure. Arguably, it is more dependent. It's just that instead of structure at the syntax level, we're now dealing with structure at a higher level, structure that is opaque to syntax but nevertheless present. Those named events and synchronization mechanisms make up their own structure.

</comment></comment></comment><comment><USER28> The point of structure is to aid comprehension. If you throw out the requirement for the system to be comprehensible, you can write it any way you wish.

Treating code as a black box with regard to making behavioural changes is essentially taking the worst aspects of TDD to extremes. It is not enough that it gives the right answers for your test cases, since you can only test a vanishingly tiny subset of all cases which need to be handled. It must be possible to reason about all possible outcomes, and that means _removing_ unnecessary logic, not plastering over it.

<comment><USER4> Alternatively it involves actually mathematically proving that the function is used correctly, which is rather hard in sequential programming languages, and nigh impossible in parallel. Just proving the alleged "sync" works is a nightmare involving some proof or assumptions on underlying hardware. Exhaustive testing of parallel behaviors is near impossible too.

Removing logic can only go as far as the essentials that are required for solving the problem.</comment></comment>


Russia 'successfully tests' its unplugged internet - <AUTHOR> https://www.bbc.com/news/technology-50902496 <comment><USER3> > Details of what the test involved were vague

So we don't know what exactly they tested. Why is this news, let alone an international one?

Also, as far as I understand, what the Russians were officially saying was that they were developing fallback systems for the event if, in another bout of sanctions, Russia gets disconnected from the global internet. Which, given their standing with the international community, may be a reasonable thing to do. But the journalists present this story as Russia's voluntary step towards isolating itself from the global internet. I am not sure why.

<comment><USER4> > the journalists present this story as Russia's voluntary step towards > isolating itself from the global internet. I am not sure why.

Some potential benefits to Russia:

1\. Thwart cyber attacks

2\. Control information

3\. Halt foreign online payments

There are of course downsides, but I think the original premise was security in the event of war / aggression.

<comment><USER5> > 1\. Thwart cyber attacks

By whom? State actors can just launch attacks from computers that have both a Russian internet link and a link up to a internet providing satellite, no?

<comment><USER4> No security is full proof, but they call it "hardening the target" when you reduce your attack surface.

<comment><USER6> Of course security is an obvious pretense for control.

The way you actually reduce attack surface is to take the critical pieces off of it and minimize the paths to be watched, not the whole system. That would be like ensuring it is possible to close off all of the highways into Washington DC to response time for the three federal branches. If it was actually that damn important they would make and use secure tunnels. The only added benefit is an excuse to shut out protesters.

Not to mention mere independence isn't everything for system functionalities. Going to muscle powered factories to remove logistical dependence on power would be an obviously stupid move for example because the performance is so much worse. It is "selling ceramic knives that cannot be sharpened as never needing it" marketing deception of trying to cast a flaw as a strength.

<comment><USER7> > _Of course security is an obvious pretense for control._

Russia doesn't need pretense for control.

</comment></comment></comment></comment></comment></comment><comment><USER8> Rarely mentioned, but Russia also tested the security of their (mobile signal networks) SS7 and Diameter systems Dec 16-17.

It never fails to amaze me how little attention is paid to these systems that can track, intercept and hijack the comms of mobile phone users of any country, internationally.

<comment><USER9> Maybe because it is what they themselves were successful in pwning in the West?

It is a long running rumor in Russian internet that Russian spies managed to tap UK politician phones with fake roaming requests in 2016.

<comment><USER10> The question is, why UK politicians didn't use encryption which is available to ordinary people? Like Signal or even Whatsapp.

<comment><USER9> Using encrypted VOIP will not do anything about SS7 hacks, as it will be your voice calls and SMSes that get rerouted, and remotely MIMed

<comment><USER11> You did answer, MITM doesn't work for Signal and WhatsApp, correct?

<comment><USER12> You could MITM Signal if you control the cell towers on either end. It would be visible, because the security number would change. But in my experience helping people set it up, very few users understand what those numbers are for, and what it means when they change. Most just mark them as verified immediately.

</comment></comment></comment></comment></comment></comment><comment><USER13> How much Facebook and other tech giants will be affected by a fragmented internet? Is FB still a $600B company if they are prevalent only in the USA, UK and Canada?

I wonder if this trend of closed borders limited information circulation could lead to the diminishing of companies that depend on the network effect and rise of the companies with hard tech.

<comment><USER6> I suspect yes to the first if widespread enough in GDP (frankly in the grand scheme of things they matter less than Italy) and a hard no to the second.

There is no reason to think that "hard tech" (assuming you mean more physical hardware) would benefit as a field they aren't really competitors even in terms of sucking up talent. Isolation wouldn't give them an edge there.

Second as fragments would call for reinventing the wheel locally or possibly copying it to serve an insular market. We have already seen this with Cuban mechanics. They didn't become "the Detroit of the third world" producing cheaper cars for other nations, or even a divergent tech path for transit that was better in some way. They just essentially practiced at the art of antique automobile necromancy. Small players with adjacent bigger markets can innovate and scale up. Small players in small markets stagnate. The "small and local serves you better" is more meme than fact. People really want their parochial corner to be just as good but it hasn't worked out that way and stays small for several good reasons, and "choice" isn't one of them.

</comment></comment><comment><USER14> Russia is a kleptocracy and all these 'tests' are just another way to steal money. Kleptocratic billionaires can not keep being billionaires without such 'projects'.

<comment><USER15> Did you ever wonder where those former Soviet citizens - now oligarchs - picked up their capitalist skills?

<comment><USER14> They didn't. No selling and multiplying. Only taking and dividing.

</comment></comment></comment><comment><USER16> Rising balkanization, tariff wars, sanctions, isolationism and nationalism sets the table for future "dark ages"-like declines and world wars. Sanctions, isolation and tariffs, each like eye-for-an-eye, makes the whole world "blind." Overall, it's another nail in the coffin of the mythology of perpetual progress, showcasing eras of decay, retreat, chaos, division and regression. Some points of the existing order need to be adjusted before corruption, greed, hate and narcissism scatter us like dust into the wind.

</comment><comment><USER17> > "Increasingly, authoritarian countries which want to control what citizens > see are looking at what Iran and China have already done.

The US does the same. Indeed, the US takes down stuff globally, often by pwning a site's primary DNS servers.

But of course, they claim that they are only taking down "illegal" sites. But there's rarely (if ever) any sort of due process.

Edit: This is a well known fact. The FBI even brags about it, from time to time. But if any y'all want to claim that it's not, or is somehow distinguishable, please do share.

Edit: For example, the FBI took down a news site, which was arguably protected by the Constitution:

[https://www.deepdotweb.com/](https://www.deepdotweb.com/)

... and you can see it through early 2019 here:

[https://web.archive.org/web/*/https://deepdotweb.com](https://web.archive.org/web/*/https://deepdotweb.com)

</comment><comment><USER18> If they did keep Russian users inside then would they allow external user in also? I'd be concerned we'd be missing out on a lot of Russian content.

<comment><USER19> The government here is less bothered by Russians reading something foreign than by them writing something not too happy. Mostly in Russian language, but whatever.

You missing out on some content is collateral damage, and that's not the government's problem. After all, there's government-approved content, and that should be enough.

</comment></comment><comment><USER20> Starlink will be a total game changer when it goes global.

<comment><USER21> I don't know about that. Nothing stops them from banning the sales of the ground station equipment.

<comment><USER22> It's probably not that difficult to manufacture and there will be a black market for the tech.

<comment><USER23> The situation when the Internet is a black market thing is a huge victory for the Russian authoritarian state.

They can afford to have 15% of the population with access to information and what not on the black market. The course of the country will be dictated by the beliefs of the other 85%, which will all buy into the 1000s of kaleidoscopic realities readily manufactured by Surkov & Co, and will all support every single action of the government.

</comment></comment></comment></comment><comment><USER24> It was the next logical step for Russia after they built their own GPS and their alternative to the World Bank, the BRICS bank. Their biggest enemy has proven that they cannot be trusted and they are the ones who invented the Internet. Anytime they have a disagreement with a nation, they take their ball and go home. Like what they were doing with Huawei. I won't be surprised if China and India are working on the same kind of project.

This world needs an alternative to anything built by the USA. That way superpowers will have to go to the negotiation table on an equal footing. We don't want one bully. We need at least 5 bullies.

<comment><USER25> Of course Russia has had its own version of GPS for decades. Those ICBMs need some way to find their destination. [https://en.wikipedia.org/wiki/GLONASS](https://en.wikipedia.org/wiki/GLONASS)

World Bank has never been important to Russia. You're right the US is dominating financial world right now which most of the world hates and its inevitable for something else to compete.

<comment><USER6> Really the world bank's role is to be the scapegoat for fiscal misrule as the lender of last resort. They may or may not be "fair" (a subjective standard) and there are legitimate things to disagree with such as assignment of debts from previous regimes but crucially they lack the power to do much. They are judges without ballifs or executioners. They wield no force but saying no to loans and telling others what they think.

If the countries could sustain themselves without credit from them then they have no need to be involved. The worst is essentially snarky comments pointing out that the current management goes against orthodoxy/still hasn't paid them back from 1977. If the country succeeds despite going against their judgement then they just look silly until either the world bank revises their conventional wisdom or they get to say "told ya so!" when the shoe drops.

Austerity may do worse than an open credit pipeline in terms of growth and human impact but there are no guarantees that the creditor wouldn't mess that up as well and solvency is required to function in their role. While nice they literally can't be an infinite credit that never needs paid back fountain.

</comment></comment></comment><comment><USER26> How do they handle corporate intranets?

Normally I'd expect Globocorp to configure its intranet with, for example, a separate AS each for Germany and Russia. But the AS in Germany may be connected to the Russia AS via a 155 Mb/s leased line from Berlin to St Petersburg with BGP routers. The German AS may also connect via a corporate firewall to a public ISP in Germany, and the Russian AS to a public ISP in Russia.

It is theoretically possible, therefore for a user on a public ISP to connect via Globocorp's intranet to a public ISP web site in Germany.

Is there some technical or administrative requirement to prevent transit via corporate intranets?

<comment><USER27> I guess they would simply cut it in half by disconnecting the Russian ISP to the German one. Even VPNs stop being useful if all connections to the outside are severed.

<comment><USER26> Disconnecting the Russian ISP to the German one doesn't disconnect the leased line internal to Globocorps intranet which connects the Gobalcorp intranets in Russia and Germany.

</comment></comment></comment><comment><USER28> What infrastructure needs to be replicated "locally" for a country to unplug itself yet still have a functioning Internet simulacrum?

<comment><USER29> Nothing that they don't already have in place with some configuration adjustments. The Internet is just a lot of interconnected routers.

<comment><USER28> I'm thinking BGP, DNS, IP subnets allocations and all the low level stuff. Also SSL authorities etc.

I'm sure there's a lot of stuff you'd need to roll, I bet it would make for an interesting article :D

<comment><USER30> +1!

</comment></comment></comment></comment><comment><USER31> I believe Eric Schmidt was the first to predict this: [https://www.businessinsider.fr/us/eric-schmidt-internet- will...](https://www.businessinsider.fr/us/eric-schmidt-internet-will-split- in-two-2028-china-2018-9)

</comment><comment><USER32> No actual unplugging this time

<comment><USER33> Very unclear what they actually did at all.

</comment></comment><comment><USER34> If Russia gets cut off from the rest of the Internet the camgirl site industry may never recover!

</comment><comment><USER35> > "Increasingly, authoritarian countries which want to control what citizens > see are looking at what Iran and China have already done.

[https://en.wikipedia.org/wiki/Internet_censorship_in_the_Uni...](https://en.wikipedia.org/wiki/Internet_censorship_in_the_United_Kingdom)

</comment><comment><USER36> Russia unplugged the internet and took a look at China.

</comment><comment> c-smile Not sure why is this such a big deal.

I can imagine that US will also disconnect itself if hostile access to critical infrastructure is at stake.

China is permanently semi-connected for that matter.

<comment><USER37> But it's not about critical infrastructure, it's about control over information coming in and going out.

</comment></comment><comment><USER38> Mr. Lee's Greater Hong Kong IRL

</comment><comment><USER39> Commentary about the exercises from Russian Telegram channel ЗаТелеком (Following Telecom) [1]. Found through link on Meduza.io

Google Translate with some manual editing for clarity by me.

1: [https://t.me/zatelecom](https://t.me/zatelecom)

# 1: [https://t.me/zatelecom/13046](https://t.me/zatelecom/13046)

"I got and decoded some materials from today's meeting of the Ministry of Digital Affairs on the exercises. Something tells me either a closed regime or not closed regime will be announced, but we won't be able to get access either way. So, feed on some rumors. Let it be rumors from me. After [sunglasses] are my additions, probably mocking, will always follow. Based on what I heard and the slides, I can draw two additional conclusions:

the Internet is impossible to understand and nobody understands what needs testing;

 THEY'RE CONFUSING the law "on sustainable Runet" and the law "on critical objects of information infrastructure". These are different laws, each living in its own sandbox, this confusion has been going on since the very beginning of the draft law "on a stable Runet"

 Some slides (for some reason labeled Positive Technologies):

⏰ On December 16 and 17, exercise scenarios were worked out to ensure the stability and integrity of mobile radiotelephone communications for the SS7 and Diameter protocols

All four federal mobile operators participated in the exercises. As part of the exercises, 18 attack scenarios were worked out for each operator - <USER2> through signal networks 2/3 of the SS7 generation and 6 through signal networks Diameter

 The attacker was able to successfully carry out 62.5% of attacks through SS7 and 50% through DIameter The average attack detection time was about 2-3 minutes

During the exercise, all scenarios were completed in full. Testing out the scenarios for each operator was about 6 hours. On average, working out one scenario took about 20 minutes. [sunglasses] Grains of corn fried by each curator were eaten about 800 grams each. Drunk 24 liters of coffee. 46.5 kg of cookies consumed

LEARNING RECOMMENDATIONS

To increase the effectiveness of warning, detecting and blocking attacks through signaling networks on the side of the telecom operator, it is necessary to provide:

1⃣ Attack detection tools through the SS7 and Diameter signaling networks, which will allow timely detection of attacks on individual mobile subscribers and the operator's infrastructure

2⃣ Telecommunication equipment settings that prohibit signaling messages that are not used to establish communications between operators, but can be used to conduct attacks on networks of telecom operators

3⃣ Procedures and security tools that allow you to quickly block ataui through signal networks

4⃣ Periodic external signaling network security audits

5⃣ Leave the market if points 1-4 were as unexpected for the operator as for representatives of the Ministry of Digital

CONCLUSIONS ON THE RESULTS OF THE EXERCISES

In the Russian Federation, it is necessary to create a regulatory framework and a unified system for collecting and analytically processing information about attacks through signaling networks on the infrastructure and subscribers of mobile telecom operators, as well as connecting it to the State SOPKA [2/3 slide picture from 4 positions OPERATORS -> UNIFIED SYSTEM -> GASOPOK]

[sunglasses] Also in the Russian Federation, it is necessary to create a regulatory framework, to create a unified system for collecting and analytically processing information about attacks on WordPress and PHPNuke, as well as connecting it to GosSOPKA

[sunglasses] Also in the Russian Federation, it is necessary to create a regulatory framework to create a unified system for collecting and analytical processing of information about attacks on active switches, as well as connecting it to the State SOPKA

[sunglasses] Also in the Russian Federation, it is necessary to create a regulatory framework, to create a unified system for collecting and analytical processing of information about viruses sent to e-mail boxes, as well as connecting it to GosSOPKA"

# 2: [https://t.me/zatelecom/13053](https://t.me/zatelecom/13053)

"About yesterday's "exercises." Again. Well, because in the morning the calls started again and the cart was breaking. Let me write here once, so I don't have to get up six times.

1\. These were no "exercises." The circus that Sokolov arranged in the Ministry of Socks [Ministry of Digital Development, Communications and Mass Media of the Russian Federation ~Editor] is at most an "interagency meeting." Any military man will tell you that "Exercises are combat training activities, where the troops solve tasks on the ground in conditions that are closest to combat, large-scale comprehensive training operations."

And in the ministry they held a MEETING. That's all.

2\. Hysterical squirrels rush about the Internet with stories that "everything broke !!! aaaa !!!". Say hello to them. In fact, of course, the two dozen morons sitting in the office could not break anything. First of all, who would let them, the morons, onto real networks?

3\. The proof that all those who gathered for the "exercises" are first-class morons was that when they were talking nonsense about the "18 attack scenarios", nobody laughed. Everyone sat with serious faces and nodded their heads.

I'll explain: "attacks through the SS-7 protocol" is about telephony. Not about the Internet. SS-7 (aka OKS-7) is, roughly speaking, the protocol by which signaling data for dialing is transmitted. The fact that we have not heard for a hundred thousand years that someone "broke the phone number" tells us that the telephone operators are working and the holes (yes, there were holes) were closed. Well, the figure of 62.5% of successful attacks, firstly, tells us that in two-thirds of the calls we could not get through, and secondly - how, tell me, from 12 attacks the figure could be 62.5%? ? Is this a successful attack in 7.5 cases out of 12?

Further, Diameter protocol is likewise not related to the Internet. Google what Diameter is already. Hint: This is a service authorization- authentication-accounting protocol that is used in IMS networks. This applies to mobile communications and IP telephony. To IP-telephony, in short. But not to the internet. Well, half of the successful attacks tell us that these numbers were obtained "at a training ground", which was set up by bungling dumbasses, or simply thought up.

4\. I want to remind you that there is no "sovereign runet". It was not built. And the forecast for the "construction" of this crap is 5 years, minimum. Look: for the first year they will only work on a sub-law and write a technical assignment. Then for two more years they will work out the engineering solution. Which will become obsolete exactly at the beginning of implementation. And then they will implement it for another three years - Rostelecom only has seven macro-regions and 79 branches. Just to bring equipment to everyone is already an impossible task for assholes from the offices. And it, equipment, also needs to be installed, commissioning, acceptance, testing, signing of acts ... Well, trust me - RTK can delay projects for decades ... I can say exactly the same thing about other "very large operators" . And it didn't get into a fucking little thing - imagine a box designed by the morons from the offices.

Therefore, I repeat, any failures on the networks can be justified by anything, but not by "sovereign runet".

Enough hysteria!"

<comment><USER40> I believe in recommendations number 5 ("Leave the market...") is also marked as [sunglasses], which makes it about equivalent to /s here.

<comment><USER39> Good point, I probably should have just linked to a gist - some of the formatting and emoji didn't transfer.

</comment></comment></comment><comment><USER41> For years Putin's defenders here at HN would talk about the great benefits he was bringing the country. Interesting how in the last year or so they have pretty much given up pushing that idea.

</comment><comment><USER42> I think this is more to do with Russian tech sector trying to push their products, instead of Western ones.

Uber - Yandex(russian alternative) etc.

</comment><comment><USER43> Seeing how the globalnet has become a front for globalized surveillance, disconnected subnets are actually a welcome development.

<comment><USER10> They are a welcome development for governments who'll be able to execute tighter control. I don't think that they're a welcome development for citizens, even for those who do not really care about politics. Want to play World of Warcraft today like you always did? Too bad, servers are in France. Want to learn some web development? Too bad, MDN is not mirrored.

<comment><USER44> I'm hoping Elon's StarLink takes off.

<comment><USER45> StarLink will be blocked in countries like China or Russia or they will have to follow their law.

Thought experiment: Can you imagine Russian satcom provider providing Internet service to US based customers in violation of the US law?

Rarely is technology a sole answer to social or political problem.

</comment></comment></comment></comment><comment><USER46> China:naive boy

<comment><USER47> Please don't post unsubstantive comments here.</comment></comment>


Does flash photography really damage art? The persistence of a myth. - <AUTHOR> http://www.imaging-resource.com/news/2012/07/19/does-flash-photography-really-damage-art-the-persistence-of-a-myth <comment><USER2> Even if it does require billions of flashes to begin to fade artwork in a gallery setting, consider some of the most popular pieces of artwork, such as the Mona Lisa, which are heavily photographed and will continue to be so over hundreds of years. Over time, it's feasible that enough people would photograph it with a flash that it would begin to fade.

If the data and its analysis in this article are correct, it doesn't make much sense to ban flash photography in most settings, but it does for things which are and will continue to be extremely popular for centuries.

<comment><USER3> I'm surprised they allow photography in art museums anyway. Even putting aside the "buy a print at the gift shop" argument, you're taking a picture of a painting. What's the point? Are you really going to be looking through your photo album for pictures of the Mona Lisa?

Have an experience for once that doesn't exist through the lens of a camera. A famous painting isn't something that can only be seen once in a lifetime by traveling to Paris.

<comment><USER4> I take photos (where allowed) of artworks simply as a reminder that I liked the piece, not to preserve a realistic reproduction of it. In that sense it's like any other photograph - I'm capturing a facsimile of my experience.

Regarding the article, I think flash photography should still be banned, simply because it makes for a better museum experience. Can you imagine the crowd in front of the Mona Lisa? It would be like red carpet for the Oscars.</comment></comment></comment>


Study finds more extreme storms ahead for California - <AUTHOR> http://news.mit.edu/2017/more-extreme-storms-ahead-california-0103 <comment><USER2> Powder magazine says the predicted snowfall for the upcoming week is largest ever. Extreme is good!

[http://www.powder.com/stories/hydrological-hammer-of-the- god...](http://www.powder.com/stories/hydrological-hammer-of-the-gods-or-hot- air/)

<comment><USER3> >record rainfall had set off mudslides, floods, and power outages across the state

</comment></comment><comment><USER4> Although not my current career, I come from an engineering background. This does not sound all bad.

What I am hearing is that we simply need to build better dams, which can reduce the impact of the deluge while simultaneously improving the availability of water in the region. Depending on the amount of water, we may even be able to use it to irrigate large portions of land _, and allow rivers and creeks to flow year round.

_ Not all irrigation has to be for farming... perhaps we can water our national parks as well. Large lakes evaporate tremendous amounts of water too, further repairing the water cycle as well as being a force of localized cooling.

<comment><USER5> One of the strongest detractors against dams is their large ecological footprint. Wouldn't larger reservoirs make this worse in some ways?

</comment></comment><comment><USER6> An interesting read on the topic: [https://en.wikipedia.org/wiki/ARkStorm](https://en.wikipedia.org/wiki/ARkStorm)

</comment><comment><USER7> Interesting. IIRC, not to deny climate change, but for context: there was a storm c. 1990 with sustained winds over 70 mph in Blossom Valley which nearly blew in windows through their frames and knocked over many fences.

<comment><USER8> 3 inches of rain in an hour isn't all the unprecedented, which is what makes me wonder about the veracity of the sources. In the 80's it would rain so hard (and so much) at times that it would knock people down and break windows and flood streets...mudslide warning still exist along roads in orange county, CA from that time.

</comment></comment><comment><USER9> Take that, drought!

</comment><comment><USER10> How much would they bet?

</comment><comment><USER11> "the state will experience three more extreme precipitation events than the current average, per year"

A better title would be "California predicted to have 3 extreme precipitation events per year by 2100" but that won't get as many clicks.

<comment> rm_-rf_slash Not sure why this post was downvoted but I would agree given that the meaning is the same for both statements. Is there something I am missing?

<comment><USER12> Personally I find the frequent comments complaining that the title should be a dry summary of facts a little dreary. There's a middle ground between clickbait and a mini-summary and this title seems to be perfectly reasonable.

</comment></comment></comment><comment><USER13> Many scientists said the same thing about hurricanes after Katrina and they were completely wrong.[1] And calling the storms from 2014 the "Storm of the Century" was a joke, another case of media hyperbole.

[1] [http://science.time.com/2013/09/09/a-silent-hurricane- season...](http://science.time.com/2013/09/09/a-silent-hurricane-season- ignites-a-debate-over-global-warming/)

</comment><comment><USER14> Politicians and spokespeople linking the California drought with climate change has damaged the credibility of these reports. I'm inclined to believe MIT researchers' climate models but I think this should have been addressed in this press release.

<comment><USER15> This story is about extreme storms. The example storm mentioned from 2014 occurred in the worst of the drought, caused all kinds of issues, but it didn't fix anything. Both future droughts and more extreme and frequent pineapple expresses can co-exist because of climate change. MIT et al. shouldn't have to explain that in every press release made involving the climate.

<comment><USER14> Thanks for this context. I and others in these comments were under the misapprehension that this meant the drought was gone. See what I mean?

I feel you made the case for explaining it to the audience even stronger.

<comment><USER16> Here is a link to the drought map for the West Coast.

Comparing December 27, 2016 to December 29, 2015.

Drought is significantly improved over that time period, but still quite severe in Southern California.

[http://droughtmonitor.unl.edu/MapsAndData/WeeklyComparison.a...](http://droughtmonitor.unl.edu/MapsAndData/WeeklyComparison.aspx)</comment></comment></comment></comment>


Emiller's Balls-Out Guide to Nginx Module Development - <AUTHOR> http://docs.huihoo.com/nginx/nginx-modules-guide.html <comment><USER2> I got disappointed at the beginning. Not only folding string checking into a tree of letter by letter checks doesn't buy you performance with 4 letters, but also if you bring that as an example of performance improvement in a server you're just showing your ignorance.

Great speed improvement:

        switch (*((uint32*)m)) {
          case 0x54534f50: r->method = NGX_HTTP_POST;

Does it matter now if I spend `O(no_reqests^2)` time looking for the next connection to serve?

<comment><USER3> So, how long does it take to identify a verb on a 2.66GHz Core2 MacBook Pro…

      FOURCC                         4.9ns   // The parent comment code
      FOURCC-without-alignment-bug   6.1ns   // ... safely assemble the word
      NGINX                         10.3ns   // main ariticle's code
      STRCMP                        17.6ns   // most commen verbs first

The FOURCC codes as in the parent only work if you can assume you know the character after the verb to be a space or other known character because GET and PUT are too short. They also require disambiguating code for the 5+ letter verbs but these are all relatively rare (probably).

My strings are all 4 byte aligned, so the FOURCC case may be getting an unfair boost, it never generates an unaligned read which possibly is slower.

Test data is a set of jumbled GET,HEAD,POST,PUT lookups that I made up to meet my idea of a web server.

There are some worst cases hiding out there, for instance all PROPPATCH verbs…

      FOURCC                        14.7ns
      FOURCC-without-alignment-bug  17.7ns
      NGINX                         19.8ns
      STRCMP                        37.4ns

Feels like gcc sequentially tests case values. Make sure to put them in the order for common verbs to match first. The FOURCC codes get the most control here. NGINX is most consistent, probably from its two layered lookup nature.

So there you have it: nginx's algorithm is significantly better then strcmp, and fairly independent of verb distribution. A FOURCC lookup is faster, even if made safe for all architectures. And finally, strcmp isn't that bad (freebsd anyway, the GNU libc is about half as fast as seen in further testing).

(I am left with a nagging desire to check a perfect hashing function though.)

Edit: gperf is about 50% slower than the nginx method. No need to go that direction for perfect hashing.

<comment><USER2> I'm not sure if you were just curious, or were you trying to prove that nginx is right in optimising this. But since we have the figures - assuming strcmp takes 37ns, we could estimate that wikipedia spent whole 13 seconds parsing the request verb each day in 2008 (assuming 350M visits). Cutting it down by half would definitely be worth the programming time... not.

<comment><USER3> I was mostly just calbrating my opimization decision making.

I think only considering wikipedia visits is underestimating. A visit is many http transactions, and a webserver is targetted for many times the traffic of wikipedia. Still, it is likely no one ever felt a better user exprience from this one optimization.

But what if all the code is 33% faster than strcmp style code? That would be nice, but also seems unlikely.

My biggest two takeaways:

— beware your OS. The freebsd (mac) strcmp is about twice as fast as the GNU glibc.

— forget about gnu's gperf, it is extra complexity for no benefit. Maybe it would win on very long word lists, but I don't know.

</comment></comment></comment></comment><comment><USER4> Is this first code snippet, where the HTTP parser checks for "POST" or "COPY" real? It certainly reads like a joke on how not to optimize your code.

Also, wouldn't it be faster to check all four characters at once with a 32bit compare? And what about branch prediction of the CPU?

<comment><USER5> What is a 'branch prediction of the CPU'?

<comment><USER6> The CPU has an instruction cache (it reaches out to memory for the series of instructions and grabs a whole bunch at once to be more efficient). When there's a branch (logically, an if statement, a loop, or a goto, or a switch) it has to make a decision about whether or not it should cache the instructions in the if statement or the instructions following the if statement.

Within the linux kernel the macros likely and unlikely are defined so that you can have code of the style

      if(likely(x > 10)) {
        /* These instructions, which probably will be executed,
         * will be cached
         */
      }

      if(unlikely(ptr == NULL)) {
        /* These instructions, which probably won't need to be
         * executed, will not be cached
         */
      }

</comment></comment></comment><comment><USER7> The author later wrote a piece on how this guide allowed him to begin making money as an open source contractor: <http://www.evanmiller.org/contracting- advice.html>

<comment><USER8> After his contracting he worked with me at IMVU; I learned a lot from him. He left IMVU for the University of Chicago Economics PhD program.

I can't wait to see what he'll do next.

</comment></comment><comment><USER9> The final version of the guide is here: <http://www.evanmiller.org/nginx- modules-guide.html>

</comment><comment><USER10> The lxr link to the nginx source code is not working... Where could I find it?

<comment><USER11> google.com

<http://nginx.org/en/download.html></comment></comment>


Amazon DynamoDB On Demand - <AUTHOR> https://aws.amazon.com/blogs/aws/amazon-dynamodb-on-demand-no-capacity-planning-and-pay-per-request-pricing/ <comment><USER2> Finally! One of the worst things as a startup was trying to capacity plan my DynamoDB when I had no idea what the useage pattern would be. Now I can not worry about it while I get data for future capacity planning.

<comment><USER3> There was already had DynamoDB Auto Scaling to achieve that. Main benefit of DynamoDB On-Demand from my point of view is:

\- easier setup (a single setting instead of configuring auto scaling rules and policies for the table and all its indicies)

\- possibly cheaper (depends on the not yet published details of the per- request pricing)

<comment><USER2> Auto scaling lagged though. And you still had to guess at the base level. They mentioned in the keynote that this is a big improvement over auto scaling.

<comment><USER4> I am puzzled by this statement: Tables using on-demand mode support all DynamoDB features (such as encryption at rest, point-in-time recovery, global tables, and so on) with the exception of auto scaling, which is not applicable with this mode. Source: [https://aws.amazon.com/blogs/aws/amazon-dynamodb-on- demand-n...](https://aws.amazon.com/blogs/aws/amazon-dynamodb-on-demand-no- capacity-planning-and-pay-per-request-pricing/)

Does it mean auto scaling is no longer needed, or it won't happen in this mode (some hidden fixed capacity?)

<comment><USER3> With DynamoDB On-Demand AWS handles scaling transparently for the customer. So they'll definitely scale, but as a customer you shouldn't notice it. I'm quite curious how that works out in practice with rapidly changing request rates.

<comment><USER4> Thanks!

</comment></comment></comment></comment></comment></comment><comment><USER5> Doesn't seems to be attractive price-wise.

Quick math (us-east-1 North Virginia, reads, strong consistency):

1\. Provisioned:

$0.00013 per RCU

1 RCU provides 3,600 reads per hour

0.00013 * 1000000 / 3600 ~= $0.036 per mln reads

[https://aws.amazon.com/dynamodb/pricing/provisioned/](https://aws.amazon.com/dynamodb/pricing/provisioned/)

2\. On-demand:

$0.25 per million read request units

[https://aws.amazon.com/dynamodb/pricing/on- demand/](https://aws.amazon.com/dynamodb/pricing/on-demand/)

So AWS on-demand is more expensive if your read utilisation is higher than 14.4%. Not that exciting for any serious use-case.

Plus you can reserve DynamoDB capacity for a year and save ~56%: (30 + 0.0025 * 24 * 365) / (100* 0.00013 * 365 * 24 )

<comment><USER6> That calculation only works if you can spread your workload over ten minutes in the hour. If you want to get it done in ten seconds, then you don't have any more to do for the next hour, then on-demand is much better.

</comment></comment><comment><USER7> Love that this feature finally released. I was a dev manager on DynamoDB years ago when we first started working on this. I left three years ago and had almost given up hope that this feature would see the light of day.

The great thing about it is that it helps with spiky and sporadic workloads. In my current work I have a bunch of unit tests that hit a set of dynamodb tables. I have those tables provisioned at a 5 RCU and 5 WCU each. Multiply this by ten tables and I'm paying $25 per month. In the grand scheme of costs, this isn't much, but it's annoying and adds up. (One can argue that unit tests should be hitting a mock or a dynamodb local. That's true, but you also want some tests that actually hit the service.)

On demand can be great for sporadic tests, for prototypes, for small personal projects, and for just messing around.

There are also spiky non-customer-facing production scenarios that can benefit from On demand.

</comment><comment><USER8> Am I correct in thinking Google Cloud Datastore has this already? What are the biggest remaining differences between DynamoDB vs Datastore?

<comment><USER9> DynamoDB has a simpler key/value data model like BigTable. Cloud Datastore is a document-store with a richer data model (built on top of BigTable, or at least it was until the latest version with Firestore).

</comment></comment><comment><USER10> It looks like you will be charged more for on-demand but I don't see a list of the rates yet, anyone find them?

<comment><USER11> The pricing page is available at [https://aws.amazon.com/dynamodb/pricing/on- demand/](https://aws.amazon.com/dynamodb/pricing/on-demand/) , but it looks like it's not yet updated with the per-request rates. The blog post mentions rates in us-east-1: "in the US East (N. Virginia) region, you are charged $1.25 per million write requests units and $0.25 per million read request units, plus the usual data storage costs."

<comment><USER12> My math:

Provisioned: $0.00065 per WCU. One WCU is 1 write per second for an hour = 3600 writes. So 277 WCU is 1 million writes in an hour. Cost is $0.18 per million write requests. (If you reserve this for a year it's $0.08 per million write requests.)

We generally run our tables with autoscaling set to 70% of capacity, so at $0.18 per million write requests our effective cost is $0.25 per million write requests. A good deal cheaper than on demand.

We have a few tables where we run closer to 30% of target capacity because of hot shards. There our effective cost is $0.60 per million write requests, which is still cheaper than on demand (assuming on demand doesn't have the hot shard problem).

I'm having trouble understanding when this would be beneficial.

<comment><USER13> This is actually meant for companies like ours. We have a very spiky workload (need massive throughput needs and then nothing happens for rest of the day). The current auto-scaling doesn't work since it takes time to scale up and you are limited to only few of those changes per time period. We ended up setting the throughput high to avoid that. Also people in company set up these high throughput on dynamodb and we end up paying thousands of dollars more before this is discovered. I know we can write lambda's to automate the detection and all of that but that is too much work. This feature is ideal and will drive our costs down a lot.

</comment></comment></comment></comment><comment><USER14> It's nice to see that DynamoDB becomes truly serverless (although it lived under the serverless umbrella for a while) with this enhancement.

But I feel the on-demand mode should be best accompanied with the provisioned mode, which is the hybrid mode. So instead of using the laggy autoscaling to handle the burst traffic, using the on-demand capacity to serve that.

Disclosure: I work for Alibaba Cloud and use Alibaba Cloud Table Store which provides the hybrid mode ( [https://www.alibabacloud.com/help/doc- detail/27291.htm](https://www.alibabacloud.com/help/doc-detail/27291.htm) )</comment>


The Next-Gen Web: HTML5 - Will We Ever See A Real Standard? - <AUTHOR> http://www.techcrunch.com/2008/06/05/the-next-gen-web-html5-will-we-ever-see-a-real-standard/

<comment><USER2> If you want to use HTML5 today, check out the Google Gears project, it is a plugin layer for (almost) all browsers that allows you to use some of the neat HTML5 features, today! I learned all about it at Google I/O this year, its a really neat technology I hope to embrace soon.</comment>


Secretive military spaceplane lands in Florida after record-long orbital flight - <AUTHOR> https://www.reuters.com/article/us-space-military-spaceplane/secretive-military-spaceplane-lands-in-florida-after-record-long-orbital-flight-idUSKBN1X60PH <comment><USER2> My trusted close relative used to do classified work on "Buran", the Soviet Union's answer to the United States Space Shuttle program.

According to him, the USSR military developed Buran to match what they saw as the space warfare capabilities that USA gained with the Shuttle. Unlike the ICBMs, the shuttles decoupled the event of the payload launch from event of the payload delivery, i.e. bombing. The early shuttle missions demonstrated the ability to "dive" to an orbit from which they could deliver a nuke directly to Red Square and then return back to the low Earth orbit. Shuttles could also perform attack missions against targets in the Earth's orbit, approaching and destroying USSR's satellites as a prelude to a nuclear war.

Buran was designed to perform both of these missions. Unlike the shuttles, Buran could perform them while 100% unmanned. Until this X-37B flight, US did not have a public demonstration of a technology matching what USSR had with Buran in the late 1980s. Given the "hot peace" nature of the contemporary relationship between US and Russia, it is not surprising that US would want to demonstrate that it went above and beyond what USSR accomplished in space warfare. X-37B does that.

If you are wondering about the 2-year mission for X-37B: when Buran launched in 1980s US immediately started speculating that the "unmanned" capability of Buran was just another lie by USSR. Can't say the same about about X-37B considering that it was in orbit for twice the time of the longest manned mission.

<comment><USER3> Your friend is mixing together some stuff in telephone game style.

While there were some military applications to the space shuttle, it rather emphatically was not some sort of covert space bomber. It's ability to glide and boost itself back into orbit is very limited as it can't store a ton of propellant. While gliding it needs to be in a level slightly nose up posture. How do you think it's supposed to release a bomb in that pose? It rather plainly has a thermal protection system on the bottom, and nothing usable as a bomb bay.

The whole idea is just preposterous.

The military applications of the shuttle were the ability to launch and capture satellites, as well as to potentially act as a reconnaissance platform. The X-37B largely continues those same missions.

<comment><USER4> Bart Hendrickx and Bert Vis, Energiya-Buran: The Soviet Space Shuttle, 2007

>The IPM studies were conducted under the leadership of Yuriy Sikharulidze and Dmitriy Okhotsimskiy, two of its leading scientists.

>The IPM studies focused on the Shuttle's possible use as a bomber, more particularly its capability to launch a nuclear first strike against the United States. Efraim Akin, one of the institute's scientists, later recalled:

>"When the US Shuttle was announced we started investigating the logic of that approach. Very early our calculations showed that the cost figures being used by NASA were unrealistic. It would be better to use a series of expendable launch vehicles. Then, when we learned of the decision to build a Shuttle launch facility at Vandenberg for military purposes, we noted that the trajectories from Vandenberg allowed an overflight of the main centers of the USSR on the first orbit. So our hypothesis was that the development of the Shuttle was mainly for military purposes. Because of our suspicion and distrust we decided to replicate the Shuttle without a full understanding of its mission. When we analysed the trajectories from Vandenberg we saw that it was possible for any military payload to re-enter from orbit in three and a half minutes to the main centers of the USSR, a much shorter time than [a sub- marine-launched ballistic missile] could make possible (ten minutes from off the coast). You might feel that this is ridiculous but you must understand how our leadership, provided with that information, would react. Scientists have a different psychology than the military. The military, very sensitive to the variety of possible means of delivering the first strike, suspecting that a first-strike capability might be the Vandenberg Shuttle's objective, and knowing that a first strike would be decisive in a war, responded predictably" [14].

<comment><USER5> On other hand, US had own intelligence screwups that ended with "self disinformation."

USSR military planners had a plan to very intentionally design Alfa and Papa class submarines with very bizarre specs, and uncertain strategic role with an intent to set American strategic planners on a wrong path.

They were intentionally let to sail close to population centres, with a lot of subassemblies given to civilian manufacturers to encourage leaks.

Amazingly, 30 years later we got to know that the plan actually worked for them. From what is known now, news of Alfa's existence truly did set the military, CIA, and the executive branch into a contention in late seventies.

</comment></comment></comment></comment><comment><USER6> "The statement that this @usairforce X-37 flight deployed small satellites is alarming, since the US has not reported those deployments in its UN Registration Convention submissions. This would be the first time that either the USA or Russia has blatantly flouted the Convention."

I'm also alarmed by this. I wouldn't want Star Wars (neither Lucas's nor Reagan's) to become our future.

<comment><USER7> It may be that those deployments were replacing existing satellites. I'm sure other nations know when the vast majority of satellites were originally deployed, which gives them a rough estimate of what technology they might have. Being able to subvert this assumed knowledge by changing what the satellite is is quite possible more useful than launching a new one and having them both up. Even if what the space plane did was tracked so there's not likely to be any surprises, in-place upgrades might have their own uses.

If that's the case, and it's just replacing existing satellites, they're still tracked accurately under that convention. Not that the USAF would say either way unless pressed by national powers, as the ambiguity helps their mission. It also helps internet blow-hards that like to take relatively small amounts of information and construct narratives they can lambast. It's entirely possible the USAF deployed new satellites, or replaced some satellites, or did nothing like that and the messaging is posturing or disinformation.

If it was doing stuff with satellites, I'm actually more interested in how it got inventory to do so over a two year time span. Did it drop to lower altitudes to refuel and get more satellites to deploy/replace/upgrade?

<comment><USER8> > If it was doing stuff with satellites, I'm actually more interested in how > it got inventory to do so over a two year time span. Did it drop to lower > altitudes to refuel and get more satellites to deploy/replace/upgrade?

1) CubeSats can be very tiny, and perhaps it was only releasing babysats for part of the mission, or at long intervals

2) surely we'd have noticed if there was a space fuel depot,

2b) if there was, why would it need to find it at a lower altitude?

<comment><USER7> > 2) surely we'd have noticed if there was a space fuel depot

> 2b) if there was, why would it need to find it at a lower altitude?

Well, it's a space plane, so I was thinking of a more exotic variation of conventional air refueling, but upon further thought that seems very unlikely as if it was that easy to get from land to the refueling point and from the refueling point to space, we'd see that as the usual way to get to orbit instead of rockets (or rocket attached ships). I don't spend a lot of time thinking about rocketry and orbit unless in a discussion about it, so this wasn't immediately obvious to me initially.

That said, it's possible that some satellites actually contained extra fuel for future use when deployed, either in them or as a separate attached payload. In that case, there wouldn't be one large space fuel depot, but possibly many small ones.

</comment></comment></comment></comment><comment><USER9> Given Reuters cite the air force as their source, would anyone hazard theories as to why they're so happy to announce the movements of a supposedly secret plane? It's pretty much in the news every time anything happens involving it, which seems quite intentional.

Is it perhaps just some kind of announcement of a capability to foreign countries?

<comment><USER10> Anything in orbit can (and is) actively tracked by amateur and professionnal astronomers around the world. The secret aspect of the X37B plane is it's mission. Nobody knows what it was doing up there. Hypotheses range from carrying weapons, spying, or doing experiments. In any case, it is certainly also used as propaganda, a show of strength.

<comment><USER11> And I believe even the pro trackers lost it at least once, until it was rediscovered by accident. Which adds intrigue.

Not counting foreign intelligence, obviously.

</comment></comment></comment><comment><USER12> There was this amazing article in 2010 about "chemical compounds i will not work with". Tetrafluorohydrazine was one of them:

[https://blogs.sciencemag.org/pipeline/archives/2010/02/23/th...](https://blogs.sciencemag.org/pipeline/archives/2010/02/23/things_i_wont_work_with_dioxygen_difluoride)

and mentions briefly that hydrazine is produced at los alamos for national security purposes.

<comment><USER13> Almost all spacecraft (including satellites) use hydrazine (MMH, UDMH or Aerozine 50) for rotating around itself to keep pointing in the right direction (see attitude control, reaction control system).

When used as a bi-propellant, hydrazine is usually combined with N2O4, which is also super toxic.

It is not just the military that uses these things. Everyone uses it because it is the best performing high thrust (not ion engine) non-cryogenic (storable) propellant. It being hypergolic (self igniting) is a bonus for reliability.

The military actually switched to solids for ICBMs and SLBMs.

The F-16 has a hydrazine APU, and I would not be surprised if the F-35 does the same thing.

<comment><USER14> > The F-16 has a hydrazine APU, and I would not be surprised if the F-35 does > the same thing.

The F-16 has an EPU not an APU, i.e. an Emergency Power Unit vs an Axillary Power Unit. Lacking an APU is an exception when it comes to jet aircraft and necessitates a few changes. Relevant here is that an APU can provide power in an emergency, so the role is played by the hydrazine powered EPU for the F-16.

This makes hydrazine somewhat more of a rational choice for something you expect to use rarely. If it were expected to be frequently used then it would have to be frequently refilled and that would necessitate all ground crew wearing the full body hazmat suits you see in the photo for the X-37b here as well as many other complex safety precautions.

The F-35 has a conventionally jet fuelled APU[0] so it has no need for an EPU or hydrazine.

Interestingly Concord didn't have space for an APU (due to the shape of the empennage and placement of a rear fuel tank). I have seen pictures of a hydrazine powered EPU on one of the prototypes, but this was never going to make it into service as certifying carrying something as toxic as hydrazine - even back then - would be nigh on impossible. This is the question that starts the most epic thread about Concord[1] (warning - you may get sucked into reading all 103 pages!)

[0] [http://www.f-16.net/forum/viewtopic.php?f=60&t=12192](http://www.f-16.net/forum/viewtopic.php?f=60&t=12192)

[1] [https://www.pprune.org/tech-log/423988-concorde- question.htm...](https://www.pprune.org/tech-log/423988-concorde- question.html)

<comment><USER15> I think you meant "Auxiliary Power Unit," not "Axillary Power Unit." Most planes lack armpits :)

<comment><USER14> Ah yes, good spot! And I got to learn a new word[0] today :)

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

</comment></comment></comment></comment></comment><comment><USER16> SpaceX webcast of the launch in 2017 [1]

Some info on the payload at 6:30 mark

[1] [https://www.youtube.com/watch?v=9M6Zvi- fFv4](https://www.youtube.com/watch?v=9M6Zvi-fFv4)

</comment><comment><USER17> Why do the ground crew in picture have hazmat suits?

<comment><USER18> Hydrazine is hella toxic

<comment><USER19> From Wikipedia:

"The hydrazine antidepressants...were discovered and initially marketed in the 1950s and 1960s. Most have been withdrawn due to toxicity..."

</comment></comment></comment><comment><USER20> Not sure if anyone has noticed, but these things seem to be setting 2+ year records every few months. So ... how many are up there?

<comment><USER21> "There have been five X-37 orbital missions. The spaceplane's first mission, USA-212, was launched in April 2010 and returned to Earth in December 2010. A second X-37 was launched on mission USA-226 in March 2011 and returned in June 2012. The third mission was USA-240, which launched in December 2012 and landed in October 2014. The fourth mission, USA-261, launched in May 2015 and landed in May 2017. The fifth and latest X-37 mission, USA-277, was launched on 7 September 2017, and broke the record for the longest X-37 mission, after 718 days in orbit, on 27 August 2019, finally landing on 27 October 2019 after 780 days in orbit."

[https://en.wikipedia.org/wiki/Boeing_X-37](https://en.wikipedia.org/wiki/Boeing_X-37)

</comment></comment><comment><USER22> Lots of theories about what that vehicle does... the one I like the best is that it intercepts "enemy" satellites and reprograms them. Of course, what comes around goes around and it would only be a matter of time before the Chinese do that to us if that's actually one of this vehicle's missions. A more likely scenario is that it is doing maintenance on and/or bringing home some of our own stuff -- as well as being an observation platform in its own right.

<comment><USER23> I don't know about reprogramming satellites but its possible it just grabs them and forces them to fall out of orbit. That's easier and quite effective.

Or it's just a moveable spy satellite that can hover over whatever it needs to.

Funny you mention the Chinese doing that to us. I just finished Snowden's book and he mentioned how he only learned what the NSA was doing after having to research what the Chinese were doing. Turns out, same thing!

<comment><USER24> The only place a satellite can 'hover' is directly above the equator in a geostationary orbit. Anywhere else and the best you can do is a highly eccentric orbit with a high inclination so you get lots of "hang time" over the target area, but that also means being very high up. From what I understand the X-37b was tracked by amateur astronomers to have a reasonably high inclination this time around, but an almost circular orbit.

Traditional spy satellites have very high inclinations because this lets gives them coverage of more of the planet (as the planet rotates beneath them.) The X-37 has thusfar to my knowledge not flown at a severely high inclination, from what I understand the most recent launch was somewhere around 54 degrees, and previous flights were lower. For reference the ISS is around 52 degrees.

The figures are all imprecise and the X-37b supposedly has the delta-v budget for relatively dramatic inclination changes, but even so 54 degrees is very far away from where earth-observing spy satellites traditionally are.

> _its possible it just grabs them and forces them to fall out of orbit. That > 's easier and quite effective._

Honestly that seems neither easy, effective, nor subtle. To grab and deorbit something like that you'd need to grab it in such a way that let you thrust through it's center of mass which doesn't seem easy to do for a few reasons (not least because the distribution of mass inside the target satellite may not be known.) And since spy satellites can be massive, you'd need to burn a lot of fuel to do it. It's conceivable they're doing something a bit trickier, like slapping a time delayed ion thruster onto the side of victim satellites which would then slowly deorbit the target after the X-37 is long gone, but I'd still wager on the victim figuring out what was going on. Such anomalous thrust is something that would be noticed.

</comment></comment></comment><comment><USER25> This is my take away: _"The sky is no longer the limit for the Air Force and, if Congress approves, the U.S. Space Force"_

I used to be worried that the current trendiness of Space in the media would be a fad, gone by 10 or even 2 years from now. Such statements make me hope that — _finally_ — people who matter have recognized both the value and inevitability of space. After that, it's all just a matter of time... _wink@sagan_

<comment><USER26> The Space Force/Core is not a proposal to significantly change US national security capabilities in space. It is merely a re-org of the command structure to put the existing infrastructure under a more specialized chain of command. Such command re-orgs can have practical implications, of course, but it is in no way some sort of novel realization that space is important for the military.

<comment><USER25> Thanks a lot for the explanation / clarification, helps me qualitatively appreciate events.

> it is in no way some sort of novel realization that space is important for > the military.

I know, and didn't mean to imply that it was; I said "used to" because my fear is long gone, and such statements now pile up, like _+1_ 's I guess. _(Upvotes are currently winning by a fair margin!)_

I would however suggest that having a centralized Space command is a great leap towards building presence, solving big problems. Speaking as an EU citizen; but I'd vote for that, and with my wallet too.

</comment></comment></comment><comment><USER27> So what do you called an unmanned spacecraft? We've got unmanned aerial vehicles (UAVs), and unmanned submersible vehicles (USVs), and and unmanned land vehicles (ULVs), are they "unmanned orbital vehicles" (UOVs?) or maybe unmanned rocket vehicles? (URVs?)

<comment><USER28> Since you bring up naming, man/unmanned really needs to be dropped for crewed/uncrewed. NASA technically adopted this in 2006, but they still mess it up. Here's more info on their terminology, as well as other options you brought up:

[https://www.planetary.org/blogs/emily- lakdawalla/2015/100509...](https://www.planetary.org/blogs/emily- lakdawalla/2015/10050900-finding-new-language.html)

<comment><USER27> Thank you for that, pretty much exactly what I was wondering.

Presuming "uncrewed" gets added to the dictionary I would expect that to prevail as the antonym for "crewless" might reasonably be "crewful", which also sounds weirder than "uncrewed"/"crewed".

</comment></comment></comment><comment><USER29> A reusable space plane has always been popular with the military. There were several secret military space shuttle missions. At times the military talked of owning one of the shuttles. They keep this dream alive with unmanned space planes.

</comment><comment><USER30> People may be overthinking why the USAF flies the thing. If it's in active service, the USAF flies it once in a while. Otherwise they mothball it or retire it. Aircraft which just sit there don't stay in operating condition.

<comment><USER31> I mean, it's been in orbit for more than two years. That doesn't really lend itself to a test flight to make sure it works.

<comment><USER32> Unless they're testing it's durability?

<comment><USER33> Or more likely slowly taking high resolution photos of foreign satellites and/or trying to sniff any RF coming off of them.

</comment></comment></comment></comment><comment><USER34> A time record of an uncrewed vehicle and orbit is... not really news worthy.

I mean, you put it up there, and if the orbit is high enough, it simply stays there, no action required.

This doesn't seem to be much more impressive than a satellite that stays operational for 10+ years in orbit (and there are quite many of those).

<comment><USER35> And those satellites burn up in the atmosphere when their useful life has expired. This is notable because it returned to Earth in one piece.

<comment><USER34> Yes, but that has been done before.

The newsworthy portion seems to have been that it's been longer in orbit than before, and then returned.

Is it really all that impressive that it stayed 2 years in orbit before returning, instead of 1.5 years?

I'm sorry, I just don't see what the story is here.

<comment><USER36> I think the important part is the "spooky factor" of "this highly maneuverable space plane can stay on orbit for two years doing who knows what".

The implication is that the US military has a vehicle that can stay on orbit for as long as they want and move around to do anything from deploying secret satellites to spying to disabling enemy spacecraft without anyone else necessarily knowing what happened.

</comment></comment></comment></comment><comment><USER37> That ship looks incredibly cool. I assume it's un-manned.

<comment><USER38> Unmanned, yes. It looks like it would be a pretty miserable two years of your life if it were!

[https://www.af.mil/About-Us/Fact- Sheets/Display/Article/1045...](https://www.af.mil/About-Us/Fact- Sheets/Display/Article/104539/x-37b-orbital-test-vehicle/)

> The X-37B Orbital Test Vehicle, or OTV, is an experimental test program to > demonstrate technologies for a reliable, reusable, unmanned space test > platform for the U.S. Air Force

<comment><USER39> > _Unmanned, yes. It looks like it would be a pretty miserable two years of > your life if it were!_

Nothing a Kerbal couldn't handle.

</comment></comment></comment><comment><USER40> I think the secret has been so far that they had a driverless plane? That means the plane itself could be used as a weapon?

<comment><USER41> Previous long-term missions of it also had media coverage, so not a secret.

</comment></comment><comment><USER42> This seems like an unlikely coincidence — if I'm reading this other link right, it had been flying over Syria.

[https://www.heavens-above.com/orbit.aspx?satid=39025](https://www.heavens- above.com/orbit.aspx?satid=39025)

Edit: obviously I read it wrong. Still a strange coincidence though.

<comment><USER43> It's in low earth orbit so ground track changes every ~90 minute orbit. It flies over all countries with latitudes.

<comment><USER44> I always assumed it had an ability to relocate. I guess sustained movement in a 2y mission is hard, you have to budget for non-replaceables to make thrust work, ion thrusters consume stuff too.

I kind-of get it, that for a sufficiently timed orbit, it sees all places.. eventually. Being able to relocate means you can be where you want to be, without predictable periodicity.

<comment><USER45> It's hard to explain without calling out to Kerbal Space Program, but it's really hard to figure out what you mean by 'able to relocate' in the context of orbital flight.

Your orbital period is determined by size of your orbit, and the difference between that and the earth's rotation causes your land track to precess. For most this means your land track will eventually be over every possible point. Raising or lowering your orbit will let you find a 'flyover' intercept in fewer orbits, but it will still take time to get there. Hard to do accurately and you normally want to keep that fuel around for boosting your orbit when it degrades due to atmospheric drag.

Other kinds of orbital manoeuvres could be used, but they are even more expensive and less likely to get you were you want to be (as long as you are in an inclination that passes over your desired target).

The main reason for this is that orbits are characterised (pretty much exactly) by your position/velocity pair. Every orbit your position and velocity will repeat, absent any external forces. Modelling any acceleration as instantaneous (which is pretty close) you can see that you can only ever directly change your velocity. Accelerate prograde and your orbit will be raised _on the other side of your orbit_ ; when you complete one of your new orbits you will be back in the exact same location, but with your new speed.

<comment><USER44> _but it 's really hard to figure out what you mean by 'able to relocate' in the context of orbital flight._

I mean make a change of plane in unpredictable ways. You can't just scoot sideways for no apparent reason, clearly orbit means what it says. But the point would be to make changes of orbit at cost, to get somewhere faster than waiting for the orbit you are in, to get there.

(height and speed over a point on the ground being assumed to be less important than actually being over it, when you want it to be over it)</comment></comment></comment></comment></comment>


Show HN: ClimaCell Micro Weather API – high-resolution, real-time weather - <AUTHOR> https://www.climacell.co/api/ <comment><USER2> Why not allow me to check the weather at my location without singing up, so I can check how go the info is?

</comment><comment><USER3> Do i need to sign up to view the pricing tiers?, I cannot find it on your webpage

<comment><AUTHOR> Sorry about that. It's a bit hidden (and called "Plans"). Here you go: [https://developer.climacell.co/](https://developer.climacell.co/)</comment></comment>


Forks over knives and Plant based diet - <AUTHOR> http://www.forksoverknives.com/ What are your taughts on plant-based diet? <comment><AUTHOR> I have wathed "Forks over knives "on netflix and "Engine 2 kitchen rescue" Really changed the way I eat -- I am eager to hear your taughts?</comment>


Wikileaks releases text of secret trade agreement - <AUTHOR> https://wikileaks.org/tisa/press.html

<comment><USER2> Naturally, this thread is filled with crickets. Am I the only one reading these texts?</comment>


Ask HN: What do Angel Investors or Seed funds care about? - <AUTHOR> I have always thought about this situation. Lets say you are running a company that is on track to do $5M in revenue in next 2-3 years (based on solid patterns being bootstrapped for a while). It could be scaled further with a little bit of extra cash injection AND new support structure like investors who are experienced. Does it make sense for such company to try and find investors at this point ? Do investors exist for such companies or the only option is small business loans ? If in 10 years, this company could hit $15 Million in revenue, is that too small for angels/seed fund investors ? I know it is not worth it for larger investors or VCs but wonder what the options are for such companies. <comment><USER2> So this is typically where high net worth individuals (HNI) come in, aka, angels but not your typical tech angel and not seed funds IMO. I would argue a very large unreported, under discussed part of funding for traditional businesses is done this way, but it doesn't have the sex appeal of tech angels and VC's so people don't hear about it and the press doesn't cover it.

It is not rare to work with a HNI and they infuse you with say 50-500k for growth based on your business metrics. How they structure the deal can be very different, it can be anything from a "loan" with monthly payments starting usually after some number of months or it could be as ownership via shares or Units (for LLC's) and quarterly or annual distributions based upon an agreed to valuation. But there are almost an unlimited other numbers of ways this gets structured.

Not everyone is looking for 10x returns, a lot of HNIs will invest as sort of a paying it forward (they want people to succeed), but don't be misled they are still looking for solid returns. An example, I did one of these deals with an HNI where for every sale we made they took a percentage of the sale. Until the principle was paid back it was a higher percentage but it lowered once principle was paid back and the return was capped at a total value/time whichever occurred first e.g. they could get up to 4x their investment back or it stopped 5 years after the principle was repaid whichever came first, they were also guaranteed a specific return if we sold before either of the triggers happened. This deal worked for both of us, because as we succeeded they got paid and they were incentivized to help us succeed because they could get the max value out sooner the faster we grew.

<comment><USER3> We're in the mock-up stage and has started negotiation with on of well-known VCs in Silicon Valley

So, based on our condition do you think which deal is good enough?

We have a $1.5 trillion annual Total Addressable Market - TAM globally in smart cities market and we have chosen a company as our beachhead market strategy that has 1 million customers which if accepts our solution we will have $2.5 billion annual sales which would be between $250 million annual income

We need around just 500K users to become a unicorn

So what's the best strategy today for us in the pre-seed stage?

<comment><USER4> > We have a $1.5 trillion annual Total Addressable Market

FWIW, anyone who throws out ridiculous TAMs when trying to sell their idea is an immediate red flag. It's a poor and over-used tactic.</comment></comment></comment>