An Art of Air and Fire: Brazil's Renegade Balloonists (2014) - <AUTHOR> http://theappendix.net/issues/2014/10/an-art-of-air-and-fire-brazils-renegade-balloonists <comment><AUTHOR> Here's a video of air traffic control dealing with the release of a number of balloons: [https://www.youtube.com/watch?v=YWrYfQTKn9c](https://www.youtube.com/watch?v=YWrYfQTKn9c)

</comment><comment><USER2> Ah, the memories of childhood. Once I went to a winter June's Party. Saint John's popular parties all over Brazil. This was a huge "clandestine" Big Deal ballonists, many were cops, my primary school mate's father was a cop, and he took us there, crossing the 13 kilometers Rio de Janeiro-Niteroi bridge at night, that huge 3 meters or so tall ballon came down in flames from the sky, my friends father stopped the car in the same middle of the bridge and went out the car to recover the balloons mortal remainings. The "Bucha" , what means the "sponge", a square of Parafine Wax mixed with Cloth fibers and Kerosene, that was the combustion torch of the aircraft was still half unburnt. Half the "silk" paper of the fuselage was still good too, ;D He smashed everything in the trunk of the car we we went on our way to fishing and explode firecrackers by Rio State coast. At That winter party we went that time, I have myself "hand-launched" a 1.5 meters ballon with the other kids. The adults lauched ballons 10, 15, 20 meters tall, full of firecrackers and fireworks that have time-control devices so they ignite and launch the fireworks when they were at a nice attitude on the sky. It was a really a piece artisan craft tech. Sometimes caused fires in Oil Refineries and Collateral Civilian Facilities Damage. This guy would bring to our primary school an Album similar to an Baseball Card Album, but instead it was an Balloon Cards Album, so I think they even sell cards of those things for kids. I remember the most famous/heaviest at time was called "The King of the Kings" and it was more than 20 meters if I recall and was never recovered, they say it went to Space : D This Ocult Art still exists, but is much more clandestine now, When a young "Boss" of a Tactical Standing Point of the Rio de Janeiro's Cartel army dies, the guys in the Favela will launch huge balloons full of fireworks, and shoot bursts of tracing bullets like those from the first Iraq War trough the sky. Sometimes an inloved Boss would launch a big Baloon for his girfriend. But it's not allowed to play like before. It's like the Brazilian Art of WarKites, that uses a mix of fine-ground Glass with wood-glue spread along the line of the kite to cut everything on it's way, preferably other people's kites, but sometimes other people's necks. People still die from it. But is still goes on. Cannot fight with wild people, must civilize step by step ; D</comment>


Time vs Monetary investment - <AUTHOR>

The following situation has happened to me twice now, both times when the startup became funded by an angel or two (not a VC firm):
I am the scrappy developer and I invest my time to build a product. The other founder invests their money to pay a sales guy, create marketing material, legal, and do all the other necessities of a real business.
We demonstrate value, we get investment. I have shares that are valued at some amount and the co-founder has shares valued at some amount, but IN ADDITION, reimburses themselves for their upfront expenses. This essentially puts them at even for their investment, while I still have lost time to make up for.
The impetus for my post is that one startup, while generating revenue, is not profitable(sales expenses & admin expenses). The other founder wants to call it quits in the next couple months if we don't exit. They have been reimbursed for their expenses, while I have over 1000 hours of sweat in the company. Sure, I have theoretical value in my shares. However I don't think the angel would by them off me, so really I've got nothing if we stop.
So my question, is it normal procedure to be reimbursed upon investment? Am I not getting paid back for my sweat investment simply because I didn't think to put it in the contract? Do developers ever enter an agreement with a "Upon funding, previous time investment will be reimbursed at $X per hour" clause? Is my lack of sleep making me sound irrational and maybe I should take a few days off? <comment><USER2> The solution is either to negotiate better, or appreciate the nontechnical work.

If the cash-only founder is really just an angel, and your agreement with him should be that his cash gets rolled into the seed. Perhaps at better terms.

This probably means that you need to hire the sales guy, create the marketing material, legal, etc. When you do that, you might discover that the other guy was actually doing hard work all along even if he wasn't coding.

</comment><comment><USER3> Sadly, your situation is fairly normal. That's the downside to investing your time (that you have to prove the product).

Next time get your own funding!!</comment>


ARM extends HPC offering with acquisition of Allinea Software - <AUTHOR> https://www.arm.com/about/newsroom/arm-extends-hpc-offering-with-acquisition-of-software-tools-provider-allinea-software.php <comment><USER2> I got my first dev job after Uni at the sister company to Allinea, so I know and have had a beer or three with most of the people involved.

Will admit to having worked near them for nearly 2 years and still not understanding fully what they do (a cloud distributed debugger for HPC workloads, iirc) but I can tell you this isn't a unicorn growth startup -- they've been working hard on this for over a decade.

Congrats all!

<comment><USER3> Thanks! It's been an incredible journey ;-)

One of the less obvious benefits of joining ARM is having extra sites to recruit developers at. Adding Manchester and potentially Cambridge to the existing two sites is cool.

<comment><USER4> >It's been an incredible journey

oh, so they are firing all of you and shutting down the company?

</comment></comment></comment><comment><USER3> Allinea product manager and ex debugger dev here, ARM is very serious about the server market and this is a small part of that larger plan.

I was surprised and pleased to see us on Hacker News - happy to answer any questions!

</comment><comment><USER5> Can someone tell me what Allinea does? What does providing software for HPC mean?

<comment><USER6> Their web site might give a clue that they produce a parallel debugger and profiler integrated with an (Eclipse PPT-like?) GUI. The debugger is based on launching instances of gdb (which isn't trivial at scale).

More to the point, can someone tell me why I should use the profiler rather than the free/gratis tools, like TAU? Their salesman couldn't.

While a full parallel debugger is clearly useful in difficult cases, easily the most useful debugging tool is stack traces, perhaps from openmpi's automatic backtrace or LLNL's STAT. I don't know whether Totalview (proprietary alternative to DDT) was ever seriously used when we had it available to a multi-site project.

From what I recall of prices, if you're going to buy the tools for more cores than on the sort of single node we have, you're talking something like my salary. Then, in practice most university users won't measure or debug anyway, and may not accept deadlock as a concept when systems people do.

<comment><USER3> With reluctance, since you ask TAU is a great tool for performance experts but few scientists have the expertise to use it. MAP is designed for them.

Plus the multi-core support is damn cool.

</comment></comment></comment><comment><USER7> slightly less editorialized from Top500 news: [https://www.top500.org/news/arm-buys-hpc-software- toolmaker-...](https://www.top500.org/news/arm-buys-hpc-software-toolmaker- allinea/)

<comment><USER8> "More than £18m": [http://www.insidermedia.com/insider/midlands/mercia-exits- wa...](http://www.insidermedia.com/insider/midlands/mercia-exits-warwick- software-firm-in-18m-sale)

</comment></comment><comment><USER9> HPC = High Performance Computing

[http://searchenterpriselinux.techtarget.com/definition/high-...](http://searchenterpriselinux.techtarget.com/definition/high- performance-computing)

<comment><USER10> Good on you. I was a bit shocked that ARM left that uninterpreted on their website; poor manners if nothing else.

</comment></comment><comment><USER11> The linked article's headline,

>ARM extends HPC offering with acquisition of software tools provider Allinea Software

is not editorialized at all. OP, are you a marketing person for ARM?

<comment><USER12> Well, what else would they spend the coin for? So they could have bigger pizza parties?

Also compare word count.

</comment></comment><comment><USER13> Reminds me a lot of Nvidia buying Portland Group, although that was probably a better match. I don't really see this making much difference - what AMD needs in HPC is tooling for their GPU/APU that covers a wide range of usecases, is stable and performant. Publications and then sales pretty much follow automatically, but IMO so far the tooling was the missing element. E.g. where's my Fortran API for OpenCL and Nvidia? How do I debug and profile this? What about device memory aware MPI wrappers? BLAS on device? Etc.

Allinea AFAIK only helps with the debugging/profiling part - but first you need a sensible programming model.

<comment><USER14> This is about ARM, not AMD.

<comment><USER13> Dangit, so much news about AMD lately ;). Funnily enough my comment still applies (I think).</comment></comment></comment>


Peter Thiel Says Wall Street 'mispriced' LinkedIn's IPO - <AUTHOR> http://www.ft.com/cms/s/2/48e72d56-8ae4-11e0-b2f1-00144feab49a.html#axzz1Ny8K7hmV

<comment><USER2> When a bank underprices an IPO, they can conveniently steer these underpriced shares to favored clients and connections.

[http://dealbook.nytimes.com/2011/05/27/why-i-p-o-s-get- under...](http://dealbook.nytimes.com/2011/05/27/why-i-p-o-s-get-underpriced/)

Doesn't seem like a mistake in that light, does it?

</comment><comment><USER3> There's an argument that LinkedIn didn't float enough -- look at how Yandex performed, and they floated enough shares to soak the demand</comment>


The Golden Ratio is Evil (and why, in Clojure) - <AUTHOR> http://copperthoughts.com/p/the-golden-ratio-is-evil/

<comment><USER2> Meh. It's "evil", supposedly, because if you add up the first N decimal digits of its fractional part then, for carefully chosen N, you get 666, the Number of the Beast.

I say we should be using binary rather than decimal -- ten is a terribly arbitrary number -- in which case, of course, _all_ numbers are "evil" other than a few dyadic rationals.

Here's a better reason why the golden ratio is evil. As you know, Bob, in mediaeval times the musical interval of a tritone -- three tones, or six semitones -- was called "diabolus in musica", _the devil in music_. It was called that because it's a highly discordant interval; in equal temperament (which of course they didn't have back then, but hush) it corresponds to a frequency ratio of sqrt(2). And why does that sound highly discordant? Well, basically because there's no simple rational number that's a really good approximation to sqrt(2); for much much more about what's going on here, put "William Sethares" into Google and consider buying his book. In fact, in a certain sense sqrt(2) is the second-worst-approximable-by-rationals irrational number, which is related to the fact that its continued fraction is [1,2,2,2,2,2,2,...]. And what's the worst-approximable irrational number, which would produce an even more dissonant musical interval -- a maximally dissonant one -- something even worse than the devil himself in music?

Why, the golden ratio, of course. Continued fraction [1,1,1,1,...]. Evil incarnate.

(Note: there are a few half-truths in the above, but only for convenience of exposition.)

<comment><AUTHOR> Oh that's pretty neat! I didn't realize the connection it had to even temperament tuning.

</comment></comment><comment><USER3> The first 144 digits of the fractional part of pi sum to 666.

</comment><comment><USER4> "golden ratio" nonsense. The words never link to the correct maths. It is evil, but not rational. <http://www.lhup.edu/~dsimanek/pseudo/fibonacc.htm>

</comment><comment><USER5> I think there are about 666 parentheses in those code examples.. I don't get the appeal of Clojure?

<comment><AUTHOR> You don't really see the parens after a while. Clojure's appeal goes beyond its syntax, as I'm sure does whichever language you prefer.

Curiously, the equivalent code in most other languages has about the same number of parens.

<comment><USER6> For fun I was whipping up some haskell one-liners as I read along.

You can just do:

        let fibs = 1 : 1 : [ fibs !! n + fibs !! (n - 1) | n <- [1..] ]

for the Fibonacci sequence and

        take 10 $ iterate (succ . recip) 1

for the first 10 iterations of the continued fraction.

To me these read much more clearly but then I haven't written anything big in a lispy language yet.

<comment><AUTHOR> There are all sorts of ways to do it; for instance, I really like the following:

        (def fibo (map second
                       (iterate (fn [[x y]] [y (+ x y)]) [0 1])))

I just went with a different version for the article to show another way of doing it that might be clearer to someone new to Clojure. As for understanding/ease of reading, the Haskell version is a little more alien to me, but that's because I haven't spent much time in Haskell.

Once again, for your CF ex:

        (take 10 (iterate (comp inc /) 1))

Which gives ratios in Clojure, not doubles. Both elegant solutions, definitely. I just wanted to use my GCF, which could probably be made to look a little nicer as well. This post was more about playing around with the Golden Ratio than writing sexy code (though admittedly, I probably could have done better in many places!)

Haskell is a really cool language: I'm making my way through Real World Haskell right now!</comment></comment></comment></comment>


Ask HN: Are you working on a Location based application? - <AUTHOR>

Are you working on a location based application? <comment><USER2> MAPLE is my acronym for Mobile Access to People Living Everywhere. Essentially a web/mobile app that will allow users to connect with each other, anonymously and in real-time to request information (text,photo,video clip,audio clip) based on their global location.

</comment><comment><USER3> I am working on a location based services app...What are you exactly looking for

<comment><AUTHOR> Are ou integrating any local data in your application, such a nearby places/establishments? If so where are you getting the data?</comment></comment>


ISinglePayer iPhone App Censored by Apple - <AUTHOR> http://lambdajive.wordpress.com/2009/09/26/isinglepayer-iphone-app-censored-by-apple/ <comment><USER2> For weeks now, technology sites on the web have been filled with wailing and gnashing of teeth about Apple's inconsistent, ill-defined, arbitrary, bordering-on-schizophrenic process for approving/rejecting iPhone apps. What makes you think they have their act sufficiently together to make a deliberate politically-motivated rejection?

Sorry, but I'm not buying the "censorship" angle.

Extra credit: Look up the statistics on which party has received more donations from Apple employees in general and Steve Jobs in particular.

<comment><USER3> I agree. I wouldn't be surprised if this was just a clever PR stunt by the developer.</comment></comment>


An Introduction to Recursion Schemes (2014) - <AUTHOR> https://blog.sumtypeofway.com/an-introduction-to-recursion-schemes/ <comment> aaron-santos My experience with recursion schemes was mixed. I applied Matryoshka[1] to a problem involving an algebra of boolean operations on polygons. The implementation was elegant in so far as the essential recursion was lifted out of many separate functions and consolidated. Recursion is always a tricky thing to get right so using recursion schemes avoided an entire class of errors and the implementation was rock solid.

The challenge became one of communication. Whereas looping and branching structures are considered fundamental building blocks recursion schemes are not. Team members immediately hit a wall when encountering ana/cata/hylo/*-morphisms. It's like taking a walk through your neighborhood turning a corner and finding an alien artifact. It's also a case of "the math people got there first" ie: the nomenclature hurts rather than helps understanding. Many times during conversations I wondered how branching and loop control structures were received when introduced decades ago. Were they dismissed or embraced and how much of this was because they were given nice names (if/else/for/while)?

In hindsight I'm disappointed that I wasn't exposed to recursion schemes as an undergrad. Recursion schemes are exactly the kind of abstraction found elsewhere in computer science. Also I would also love to see a language with recursion schemes given the same first-class support as the branching and looping constructs we see in almost all languages today.

[1] - [https://github.com/slamdata/matryoshka](https://github.com/slamdata/matryoshka)

<comment><USER2> Agreed, these things could definitely do with plain, descriptive names rather than "hylo-mylo-bananafofylo-morphism". Like cata -> recursiveFold, ana -> [co]recursiveUnfold, hylo -> recursiveRefold, etc. It's tricky because i.e. there are many different "refold"s, but the others could be qualified further (and are comparatively rare in the field, I think...)

</comment></comment><comment><USER3> This seems to be about statically typed languages like Haskell. Can it be used (and be useful) for dynamically typed languages like Scheme?

<comment><USER2> I think so. It's about factoring the recursion part out of a task, much like "map" is about factoring iteration out, and "fold" is about factoring out iteration+accumulation. I think scheme has both of these things; recursion schemes are the same idea but for recursion.

</comment></comment><comment><USER4> If anyone else has a problem reading this article, it significantly is easier to read with Chrome.

</comment><comment><USER5> Previously on HN: [https://news.ycombinator.com/item?id=18687372](https://news.ycombinator.com/item?id=18687372)

<comment><USER6> I see what you did there :-)</comment></comment>


How the world reacted to the first iPhone 10 years ago - <AUTHOR> http://www.telegraph.co.uk/technology/2017/01/09/world-reacted-first-iphone-10-years-ago/ <comment><AUTHOR> The lesson for me is that I should be more careful about dismissing something before really understanding and considering it.</comment>


Astronomers Find a Galaxy Containing 3 Supermassive Black Holes at the Center - <AUTHOR> https://www.universetoday.com/144144/astronomers-find-a-galaxy-containing-three-supermassive-black-holes-at-the-center/ <comment><USER2> Without wanting to be pedantic, but the article title reads as if NGC 6240 is a new find, which it isn't. Title should perhaps be:

 _Astronomers Find Galaxy Contains 3 Supermassive Black Holes at the Center_

or

 _Astronomers Find Galaxy NGC 6240 Contains 3 Supermassive Black Holes at the Center_

Fascinating stuff nevertheless.</comment>


Diving into the world of hash tables - <AUTHOR> http://www.zeroequalsfalse.press/2017/02/20/hashtables/ <comment><USER2> If you care about performance, it's important to note how the underlying representation of a dictionary data structure.

For instance, the unordered_hash_map in C++ is based around a linked list of key/value pair buckets. This means iterating through the keys or values is very slow (lots of cache misses!), but insertion is fast. Retrieving a key is O(logn) but a very slow O(logn), because of the cache misses.

Other implementations is to keep a sorted vector of keys and a respective vector of values. There's loki::assocvector, booost::flat_unordered_map that do this for instance. Now insertion is slow, but iteration and retrieval are very fast (a fast O(logn) by binary search with few cache misses). It's also memory efficient, since no pointers between elements.

If you have one big dictionary you would use throughout an application, and know the data up front, a good strategy is to reserve the necessary memory in an array, fill it with keys/values, sort it once over the keys and coindex the value array. Now you have a memory efficient and extremely fast dictionary data structure.

One other strategy any intermediate coder can implement is to have two unsorted coindexed arrays. You don't even need a hash function for this. Now iterating and insertion through the table is extremely fast, and it is memory efficient, but finding a key is just a fast O(n). So this is good for smaller tables. In C++ you could implement it as a std::pair<vector<key>, vector<value>>. If you need a quick small map in a function this is often the fastest data structure you can implement without too many headaches.

<comment><USER3> > sorted vector of keys . . . reserve necessary memory and sort it . . . > unsorted coindexed arrays . . .

Most of the things you mentioned are not hash tables, but members of a parent concept, dictionaries. Hash tables all by definition involve some sort of hashing of the key. The two main categories of hash table are chained hash tables (std::unordered_map does this, at least in the implementations I'm aware of) and open addressed hash tables, which use probing instead of secondary data structures to resolve conflicts.

<comment><USER2> You can implement the sorted vector of keys with a hash function instead of a coindexed vector of values. It still keeps most of the properties we like, especially if doing the coindex-sort operation is too expensive for some reason.

<comment><USER3> > You can implement the sorted vector of keys with a hash function instead of > a coindexed vector of values

So you're saying you're going to hash the keys, then sort them according to the hash, with tie breaking on the key itself? I'm not aware of any sorted table that does this, but I'm sure some exist. I suppose you'd get something of a win if N was large, and the keys had long common prefixes, and you didn't care about the ordering property.

But in that case you'd probably use an actual hash table, not the algorithm you just described. Unless there's something I'm missing.

<comment><USER2> Sorry I misspoke. Lookup is always O(1) in a hash table. But this could be a "weak dict" that is you don't actually store the keys, as long as you can reference a key through a hash you can lookup.

In the proper "data structure", we usually store the key and the value -- iteration through keys and/or values and/or pairs are probably supported operations.

Finding a key in the structure (either with binary tree search, or binary search on a sorted array, or linear lookup on an array) varies. So does iteration and most other operations.

</comment></comment></comment></comment></comment><comment><USER4> This is one of those data structures that everyone should try building at least once, kind of like linked lists, etc. Semi-unrelated, I built a couple of toy implementations a few years ago using the same basic ideas:

* This one is the my original written in something halfway resembling scheme: [https://github.com/arlaneenalra/Bootstrap-Scheme/blob/master...](https://github.com/arlaneenalra/Bootstrap-Scheme/blob/master/lib/hash.scm)

* And this implementation is part of a half finished byte code scheme that I haven't touched in a few years. Another project I need to get back to. Interface: [https://github.com/arlaneenalra/insomniac/blob/master/src/in...](https://github.com/arlaneenalra/insomniac/blob/master/src/include/hash.h) Internals: [https://github.com/arlaneenalra/insomniac/tree/master/src/li...](https://github.com/arlaneenalra/insomniac/tree/master/src/libinsomniac_hash)

They were kind of fun to build and I'd recommend giving, especially if you have some skill but don't _think_ you have the chops. To get a working toy isn't really all that hard once you understand the principals.

</comment><comment><USER5> It is really a basic data structure in most modern languages. Either built on or part of the standard library.

I can see if this was published in late 90's but today, I don't know.

And just use the built-in ones don't invent your own unless there is a very good reason for it.

<comment><USER6> Built-in implementations usually are kind of slow, waste memory, have broken iterators [1], even in modern languages. If either of those things are important - it's better to do some research and maybe even invent your own.

[1] when you can't both iterate and insert items consistently in the same loop

<comment><USER7> "Usually", really? Which languages are you thinking of, and have you benchmarked them?

<comment><USER8> It's often true due to a few factors. One is that they are safe, whereas a specific use case may not need the same level of safety. They generally optimize for the general case as well, but in your own code you can optimize for the very specific use case you have. One I ran into many years ago was implementing my own singly linked list by adding the next pointer to another piece of data. In this one specific case it was worth removing another layer of indirection. I was still young though, so there were probably even better ways of handling it.

I have only encountered these scenarios a small handful of times, but I'm not a very low level developer.

</comment></comment></comment></comment><comment><USER9> Hash Table has basically been elevated to a general idea lately. Pretty much anyone that is looking for an association between keys and values is using what they will call a hash table. To that end, few people actually know anything about how they are implemented. (And apologies if this comes across as negative, I do not mean it as a value judgement.)

This was different back when you would pick something like an alist to store associations. There the implementation stared you in the face. Same for the times you had to implement your own hash table. I don't exactly yearn for those days. Though, I am curious if alists actually win in speed for a large number of smaller hash tables.

<comment><USER10> Depends on implementations of the alist and of the hash table. It is even fully possible that the small hash table will use an alist for the cases with few (and small) elements.

<comment><USER9> Fair. I was making a huge assumption that the alist would be implemented as you statically see it in code.

My point was supposed to be that an alist really has an obvious implementation, whereas a hashtable actually does not. My main objection being that there is a ton of glossing over what goes into an actual hashtable. While I would expect someone to be able to do a basic alist implementation, I have grown away from expecting folks to do a basic hash table.

</comment></comment></comment><comment><USER11> "this is a data structure that is at the guts of basically every python object. Classes are dicts. Modules are dicts. Packages are probably dicts. Don't worry though, it's underrated!"

@_@

<comment><USER12> Python has its own very cleverly optimized dict implementation:

[http://pybites.blogspot.com/2008/10/pure-python- dictionary-i...](http://pybites.blogspot.com/2008/10/pure-python-dictionary- implementation.html)

<comment><USER11> hettinger's updates at pycon this year: it's better! [https://www.youtube.com/watch?v=npw4s1QTmPg](https://www.youtube.com/watch?v=npw4s1QTmPg)

</comment></comment></comment><comment><USER13> Quick question: are there special hash functions that are optimized for use in hash tables? Or do typical hash table implementations in e.g. Python just use standard hash functions like MD5?

 _Edit:_ It's 100% clear now. Thanks for the great answers everyone!

<comment><USER14> Typically the hash functions that you are familiar with due to cryptographic or data consistency use (SHA family, MD family, etc) do not make for good hash table choices because they produce hashes that are much larger than needed and are slow to compute so that they have better cryptographic properties (extremely low collision, no information leakage about inputs, difficulty of guessing inputs). When picking a hash function for a hash table, you want a function that makes a hash just big enough and with low enough collisions while still being fast and easily dealing with variable length keys. This could he something as simple as byte-wise XOR or addition with some shifting as you iterate the key followed by a mod or even bitwise AND mask to pick an index.

<comment><USER15> However, collision resistance must be still quite good for use in a general- purpose hash table or a HT that is possibly exposed to attackers, otherwise denial-of-service attacks become very easy.

Many "modern" implementations (Python, Ruby, Perl, Rust, Redis, ...) use SipHash with a random seed for this very reason.

</comment></comment></comment><comment><USER16> "They didn't teach me about these in my coding bootcamp"

</comment><comment><USER17> "An underrated data structure"

Uh......

</comment><comment><USER18> This article explains "2-Level Hashing" which is apparently "dynamic perfect hashing." While interesting, I'm wondering how much it's actually used? Or is it just of theoretical interest?

[1] [https://en.wikipedia.org/wiki/Dynamic_perfect_hashing](https://en.wikipedia.org/wiki/Dynamic_perfect_hashing)

</comment><comment><USER19> My data structures professor made a habit of proclaiming every few classes: "Give me a hash table, and I could rule the world"

</comment><comment><USER20> I wonder how hash tables are "underrated". They're probably _the_ data structure, if there is one.

</comment><comment><USER21> I think 90% of technical interview questions result in hashtable in it. underrated wouldn't be the word I'd use.

<comment><USER22> No they're not. And if they are, they are more advanced than this brief overview.

</comment></comment><comment><USER23> This word "extremely" has me skeptical from sentence one. Maybe I'm jaded.

</comment><comment><USER24> wtf i love hash tables now! ;)

</comment><comment><USER25> I think when the author says "underrated", what they mean is "I didn't realize how important this is". Hash tables are used everywhere, by everyone, for a lot of things.

Maybe they don't give it enough time in school for people to realize it is the king of practical software development.

<comment><USER26> Nearly every expression in high-level languages relies on multiple hash lookups. This is part of the reason these languages are regarded as "slow." I suppose you could use a tree in place, and get reasonable performance. However the hash table's nature allows you to pretty much throw more memory at the problem in exchange for speed (though this is hardly unique to this particular data structure).

For instance `a = foo.bar.baz` in Python involves 3 hash gets (local scope, foo scope, then bar scope), and a single set operation (local scope). This is part of the reason Python programs can be optimized by assigning a deep attribute lookup to the local scope outside of a loop's scope, and it will yield improved performance relative to doing the deep attribute lookup inside the loop's scope.

      a = foo.bar.baz
      for _ in range(20):
          print(a)

vs

      for _ in range(20):
          print(foo.bar.baz)

<comment><USER27> >"For instance `a = foo.bar.baz` in Python involves 3 hash gets (local scope, foo scope, then bar scope), and a single set operation (local scope)"

Can you explain where exactly and why a set operation is performed? Thanks.

<comment><USER26> When the name `a` is assigned the value of `baz`, Python is setting a key name `a` in the local dictionary (hash table) `locals()`.

Basically `a = 1` is syntactic sugar for `locals()['a'] = 1`

      >>> a
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      NameError: name 'a' is not defined
      >>> locals()['a'] = 113
      >>> a
      113
      >>>

One interesting side-effect of this is you can assign names that are not valid Python syntax explicitly.

For example:

      >>> locals()['foo-bar'] = 1
      >>> locals()['foo-bar']
      1
      >>> foo-bar
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      NameError: name 'foo' is not defined
      >>>

The name `foo-bar` can't be literally referenced, because the interpreter attempts to interpret it as the subtraction operation `foo - bar`.

<comment><USER28> locals() is presented to the user as a dictionary, but is that the way cpython actually works with it internally? I've run into weird GC issues that imply it's not a normal dictionary and it's just presented to the user as one for programattic access.

<comment><USER26> That's a good question, I'm pretty sure it's not a normal dictionary. However, I'd have to go through the CPython source to confirm. Maybe someone who's more familiar with CPython's implementation will chime in.

</comment></comment></comment></comment></comment></comment><comment><USER29> Mods, can we get a title change? As I write this every comment is taking issue with the "underrated", which isn't claimed in the article.

<comment><USER30> Though, in this case, changing it from the original does seem warranted. (This was just another bad choice...)

<comment><USER7> What's wrong with leaving it unchanged? The blog post title seems fine.

</comment></comment></comment><comment><USER31> It's actually sets that are underrated. All languages should come with a reference implementation.

Hashtables aka Maps aka Dictionaries aka Associative arrays are just fine.

<comment><USER5> Though once you have hash/maps/dicts set are with reach by making sets from hashes were keys are the element and values are just true or 1 or something like that.

But I think you probably meant having and using set operations effectively in day to day tasks, as in "make 2 sets and do a set different operation" instead of "do a for loop on first hash check if it is in the second, then put results in an accumulator.

Another thing is to think about set of sets. Can that be useful sometimes? Implementing that is slightly trickier. You'd need to be able to get a hash of a set. Python has frozenset [https://docs.python.org/3/library/stdtypes.html#frozenset](https://docs.python.org/3/library/stdtypes.html#frozenset). I've used those on occasion.

Then of course there is Erlang sofs (sets of sets) module. Stumbled on it by accident. Oh my, it comes complete with an introduction to set theory and relational algebra:

[http://erlang.org/doc/man/sofs.html](http://erlang.org/doc/man/sofs.html)

It just struck me as so out of place with the rest of the standard library modules. Would like to know its history

<comment><USER27> >"Though once you have hash/maps/dicts set are with reach by making sets from hashes were keys are the element and values are just true or 1 or something like that."

Can you elaborate on how you can derive a set from hashes by using values of True or 1? Might you have a link? Thanks.

<comment><USER5> > Can you elaborate on how you can derive a set from hashes by using values of > True or 1? Might you have a link? Thanks.

Sure. Np!

I mean that a simplified set is just a hash where the elements of the set are keys of the hash table and the values can be anything. I used 1 or True as example.

As in adding an element would be:

       my_dict[element] = 1

Then membership check is:

       if element in my_dict

Then removal is deleting:

       del my_dict[element]

and so on.

In other words, the reason sets are sometimes not explicitly there is because they are easy to implement on top of existing data structures.

Basic operations like union, difference, intersection between two sets can be done with a few simple for loops.

But like I mentioned in other comment, there is one interesting aspect to set (and hashes) in that the element now have to be hash-able. That kind of depends how mutability and identity works in the particular language.

<comment><USER27> Thanks for the clear explanation, this makes total sense. Cheers.</comment></comment></comment></comment></comment>


FCC will require phone carriers to authenticate calls by June 2021 [pdf] - <AUTHOR> https://docs.fcc.gov/public/attachments/DOC-363399A1.pdf <comment><USER2> Good. But really, why did this take this long?

It should be relatively easy to identify the bad actors here and I don't mean the spammers, I mean the telcos that make this possible, deliberately so, by essentially "laundering" spam calls.

My response to picking up a number is to answer the call and say nothing. Auto-dial systems will route the call to a person when they get a "live" response. I don't know the criteria but I'm pretty sure it's them detecting noise on the call (which could be voicemail).

A human calling will wonder what is happening and fill the silence by saying something. A machine will not.

I hang up within 6 seconds of this in the hopes that it affects some metric somewhere of this being a low-quality or spam call. I don't know if it does. I think I read somewhere once that it did. I could be wrong.

If a real human is on the other end and does say nothing in this window, they'll generally just call right back. You get the exact same number again then this time I'll answer it.

It is nice to filter contacts vs non-contacts but there are too many things on non-contacts. Businesses you deal with, primarily.

In the email world where obviously spam is a huge problem zombie relays that allow this (which I believe is the primary source?) can get blacklisted. Why don't telcos who do this also get blacklisted? Or at least identified? This isn't AT&T or Verizon. It's the little telcos that connect to them.

But is this all too little too late? I think we've discovered over the last 20 years that we're all pretty much over open networks. It's all opt-in now with the likes of Whatsapp, FB Messenger and so forth.

Oh and while we're at it, can we get rid of this stupid exemption to robocalling restrictions for political campaigning? It's defended as "political free speech". To me, this is nonsensical. Free speech doesn't mean that I should be forced to listen to it.

EDIT: Found an example [1] of the bad actors I'm talking about.

[1]: [https://www.theverge.com/2020/1/31/21117477/justice- departme...](https://www.theverge.com/2020/1/31/21117477/justice-department- telecom-scams-robocalls)

<comment><USER3> It took this long because the fcc is run by people who simply do not believe in using government to enforce oversight.

<comment><USER4> We shouldn't interfere in the free market. Those robocalls are just good old American ingenuity.

<comment><USER5> Indeed. I'm from the Netherlands and never, ever in my life received a robocall, and also do not know anyone else who received one.

<comment><USER6> I live in Belgium. I receive such a call on average twice a (week) day. Sometimes it's just blank call (nobody answers) sometimes they're offering gifts if I go to shop X, they ask if I want to compare my phone/energy bill.

The funniest one is when my fixed line provider (let's call it P) calls me on my mobile phone (which is another provider) and ask me if I'm one oh _their_ (P) customer :-) (the explanation is that the mobile/fixed businesses are separated to avoid monopoly and, since they can't share customer data ('cos of data protection rules), they have to ask them again :-))

<comment><USER7> Seconded for the P. They call me every 3 months. Every single one promises they'll note in their CRM how I wont be contacted again. None can answer why they didn't read the note from all their previous calls.

</comment></comment></comment></comment></comment></comment><comment><USER8> Does this mean I can start answering my phone again? Are there other vectors for spam calling which are not addressed by this solution?

<comment><USER9> After 15 years of cell phone spam, anything that shows up as a number on my personal phone, and not a contact, is reflexively ignored. I don't think I'll ever shake this habit: if it is important, they will leave a message.

<comment><USER10> I'm struggling with the decision of whether to automatically block anyone not in my contact list and leave a message in my voicemail explaining why. Don't want to be unfriendly, but it's only getting more ridiculous.

<comment><USER11> Recent versions of Android have an option to automatically screen callers who are not in your contact list. The caller gets a robot asking them why they're calling, and you can view the transcript of their response in real time and decide whether or not to answer.

<comment><USER12> As I recall this was a Google Voice feature as well.

My mobile carrier puts "scam likely" on calls that its algorithms have determined are likely spam, I wish there was an android option to just not ring the phone if that was the caller ID name.

<comment><USER13> My carrier was doing that but I haven't seen it on any spam calls lately.

</comment></comment></comment></comment></comment></comment><comment><USER14> I didn't see anything in there about penalties for carriers not enforcing this. Also willing to bet they beg for extensions claiming they're not ready - or too costly to implement.

<comment><USER15> Good point. I suspect carriers tolerate scammers because they're good for the bottom line.

<comment><USER16> The same way USPS is funded by junk mail, a large volume of Telecoms' voice calls is likely robo-caller spam. Still I would have thought either Verizon or AT&T could come up with a competitive advantage of, you know, "the number that comes up on caller ID is authenticated to actually be the person paying for that phone number"

The spoofed caller ID to match your local area code has landed on people in my contact list, and it was extremely jarring to think "why is my best friend's mom calling me out of the blue" and get offered a discount cruise by a robot.

<comment><USER17> Telecoms have no problem figuring out who to bill.

</comment></comment></comment></comment><comment><USER18> If you're wondering if STIR/SHAKEN was a James Bond reference, the answer is yes, and SHAKEN stands for "Signature-based Handling of Asserted information using toKENs"

<comment><USER19> Backronym writing is a real gift.

</comment></comment><comment><USER20> How will delegation be handled?

Right now, I guess I'm "spoofing" my caller ID by using a VoIP service unrelated to my actual phone provider to make outbound calls. My phone provider has every incentive to sabotage this, since this alternative provider allows me to pay probably something like 1% of the rates I'd be paying to my regular provider.

The VoIP provider verifies that I own the number before letting me use it as caller ID, but towards the network it still relies on the ability to send arbitrary caller IDs. Will this remain possible/will providers controlling someone's phone number be required to somehow enable this?

How will this work for call centers that want to send a central well- publicized inbound number from multiple locations?

Edit: So I read up on the protocol The SIP provider will provide a claim, signed with their key, confirming that they checked my number.

This leaves the possibility of providers having bypassable checks (I think mine e.g. let you set an arbitrary caller ID if you edited a HTML dropdown client-side) and "how to identify which provider is trustworthy", but that seems a lot easier to solve than the original problem.

</comment><comment><USER21> Can someone explain what this will translate into in terms of the end-user experience? For one thing, authentication will be next to useless (at least to me) if my phone is still going to ring. So does that mean it's not going to ring for a spoofed number? Also, if it results in tons of voicemail then that's still going to be quite annoying. (How) is the actual end-user experience going to be addressed?

<comment><USER22> From my understanding, it basically means all telecoms will be required to do what T-Mobile already does in the U.S. If I get a call and the reported Caller ID doesn't match the transmitted one, it reads on my phone as "Scam Likely".

Pixels also have their own solution to this: If that condition occurs, the Google Assistant will answer the call and auto-decline if it is actually a robocall.

<comment><USER21> So that means phones will still ring (unless you have a Pixel or something)? That will still drive people crazy!

<comment><USER23> Some carriers may have the ability to limit calls to customers based on attestation level. Customer could configure they only want to receive i.e "A" attested calls. This means the carrier from where the call originated knows that the customer who made the call owns the number they dialed from.

<comment><USER21> Right, but I guess I'm asking, are plans for this in the works? Because currently I'm not aware of anything like this, nor of any plans to implement anything like this. None of the announcements suggest it might be happening either, so that's why I'm lost as to what the end-user experience would be.

<comment><USER23> I can only speak for one carrier, and the answer as of this moment is no. Pretty much everyone is struggling to meet the FCCs aggressive timelines and do interoperability testing with each other. After that is done, maybe. I'm sure the FCC has upcoming requirements based on this, but to my knowledge those aren't out yet. If the FCC doesn't make additional requirements, then it will depend on the carrier's decision. I'm under the assumption that they will introduce those additional requirements though.

<comment><USER21> I see. Thanks!

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> 90% of my phone calls are from the same outfit informing me that this is my last chance to renew the extended warranty on my car. Based on my call history that recording is officially my best friend. And a very forgiving one given that it has been my last chance hundreds of times over the past several years. I hope this regulation won't interfere with our relationship.

<comment><USER25> 100% of the spam calls on my work phone in the last six months have been trying to sell me Marriott time shares.

I don't know if it's actually Marriott or not. I suspect it's just one of those "affiliate marketing" scumbags, but it still makes the brand look bad.

<comment><USER26> It's not Marriott. I feel a little bad for the big hotel chains whose names are used by telemarketing scammers because their reputations get tarnished.

</comment></comment></comment><comment><USER27> There is something else that recently reduced the spam calls I get, enforcement: [https://arstechnica.com/tech-policy/2020/02/fcc-accuses- carr...](https://arstechnica.com/tech-policy/2020/02/fcc-accuses-carriers-of- being-gateways-for-foreign-robocallers/)

Knowing a number is legitimate is great, going after scammers and those that support them is better.

</comment><comment><USER28> Why is this problem unique to the USA?

I'm not saying I never get spam calls, but I certainly have to scroll back quite a bit in my phone call history to see the last one.

Also, on the rare occasion I do get a spam call it's always from some random international country like South Sudan or Oman that I would never expect a phone call from.

What makes this problem uniquely hard to solve for the USA as opposed to anywhere else?

<comment><USER25> _Why is this problem unique to the USA?_

Every time this topic comes up on HN, someone asks that same question.

Then there's a bunch of responses that are lots of suppositions.

Then several people from small European countries chime in saying they've never had a spam call.

Then a bunch of Europeans from large countries show up saying they get spam calls, too, and it's not just an American thing.

"Why is this problem unique to the USA?" is pretty much a meme at this point.

Also...

You start with "Why is this problem unique to the USA?" Then follow immediately with, "I'm not saying I never get spam calls" which means it's not unique to the USA. So your first sentence is invalid.

<comment><USER29> Oh, I can actually weigh in here. In the past ten years, I've spent significant amounts of time in the US, France and the UK.

In the UK, I get the occasional spam call ("I'm calling with regards to the recent accident that wasn't your fault..."). At its peak, I got about one such call per week. It's been months since I've had a spam call.

In France, I got zero. In the 7 years I lived there, I got exactly zero.

Every time I go to the US, I get 2-5 per _day_ ("last chance to renew the extended warranty on your car").

As is often the case, things are bigger in the US.

<comment><USER30> Different people in the US have different experiences. Why is some random anecdote (assuming it's not made up) good enough to define xxx million people? I _don 't_ get 2-5 calls per day. My experience is more like what you describe with the UK. But that could be affected by my being on the do not call list on one hand, and on the other, occasionally answering a telemarketer by accident when I'm waiting for another call.

<comment><USER29> >Why is some random anecdote (assuming it's not made up) good enough to define xxx million people?

It's not. Who told you it was?

Experience reports are still useful and interesting.

</comment></comment></comment></comment></comment><comment><USER31> Right now I use Apple's "Send Unknown Numbers To Voicemail" feature and dear lord it has saved my life.

Will be nice to go a step further.

</comment><comment><USER32> You can see various carriers responses here: [https://www.fcc.gov/call- authentication](https://www.fcc.gov/call-authentication)

Some have provided timelines (such as AT&T), others skirt around it basically saying that they offer call SPAM protection already but that they will go along.

</comment><comment><USER33> Kind of curious why it took so long. Spoofed calls for fraud, swatting, etc. have been around for at least ten years.

<comment><USER34> There are three big issues. Robocalls and spam were not as severe an issue until relatively recently. Political robocalls in the US are an important part of how some politicians get elected and raise funds. And these solutions cost a non trivial amount of money, without increasing revenue directly.

<comment><USER35> This is about requiring authentication, not blocking robocalls in general. Right?

<comment><USER34> Authentication means blocking any calls with spoofed or no info

<comment><USER35> Right, but does robocall imply spoofed or no info? Can't they just include authentication?

</comment></comment></comment></comment></comment><comment><USER19> Is this going to impact PBX systems that use ANI Information Elements to route calls and provide caller information to customer service applications, etc? Spoofing is kind of at the heart of those things.

<comment><USER36> ANIs will still get "spoofed" as there are many legitimate use cases, but you have to "have permission" to use the number you're spoofing, meaning either you own the number or your underlying service provider owns it on your behalf.

The legitimate use case is basically: I am placing this outbound call over VOIP or a different phone line, but I want this ANI to show up on the callee's phone, so when they call back they go to the correct line (dentist's desk, software sales line, whatever)

<comment><USER37> The issue is when I have a automated answering system (asterisk, for a museum). It rattles off some prerecorded info, possibly with prompting. To talk to a human, I need to forward the caller (I.e. call and set up a voice bridge since the caller is already connected to me) to one of our volunteers, which will be to their cell phone (we are a railway museum and we don't have a staffed office on weekdays). I want to forward the call with the original caller's phone as the caller ID so that if they miss the call our volunteer can call back easily rather than trying some awful game of tag via calling back the PBX.

<comment><USER36> This should still be available, though it will likely take some work from the underlying software provider to be compliant.

The goal of the regulation is to cut down spam/scam calling, not legitimate uses, and the telecom providers know these uses and lobby heavily to make sure they'll still be allowed to work.

The telecom providers don't like scam calls either, or more specifically they don't like short calls. All the work and compute power in telecom is used to set up the call, then the cost of keeping it going is minimal so the longer the call goes on, the more economical it is for the provider

<comment> rob-olmos How will it still be available and what underlying software work in Asterisk is being referred to?

Based on the given situation, the museum won't own the caller's cell phone number that they're trying to legitimately spoof for their staff's cell phone.

<comment><USER36> You've reached the limit of my knowledge here regarding implementation details :)

Asterisk is an open-source PBX system.

I _think_ the original call will come in with the correct STIR/SHAKEN- validated SIP headers and the PBX can forward them as is, see some discussion here: [https://community.freepbx.org/t/stop-robocalls- act/60921/5](https://community.freepbx.org/t/stop-robocalls-act/60921/5)

I previously worked at a telecom software company, and I know everyone with their shit together has been preparing for this for a long time, which is why I'm not concerned that these common cases should continue working. These softwares are often built on top of or on a branch of Freeswitch/Asterisk.

<comment><USER37> Good to know; I admit I haven't looked at the technical side of this. Mostly I was just providing my "legit" use case for wanting to spoof numbers since I think a lot of times most people don't realize they exist.

</comment></comment></comment></comment></comment></comment></comment><comment><USER38> Any ideas on how this will be implemented? I use voip.ms and I can put in my cell phone number as my caller ID so I don't need to pay for a DID (basically, rent a phone number) and calls come back to my cell.

I've thought about some potential SaaS products that would leverage a similar approach. But I would authenticate the number back to the customer before allowing it to be used to avoid spam/malicious use.

Based on this:

[https://www.zdnet.com/article/at-t-comcast-successfully- test...](https://www.zdnet.com/article/at-t-comcast-successfully-test- shakenstir-protocol-for-fighting-robocalls/)

I'm guessing this is down a layer at the provider level. So in my case, voip.ms would verify the number I'm using as my caller ID is actually a number that comes back to me. Right now, I just tested by swapping my wife's cell number in, they do not validate this. Now I understand how people are spoofing numbers so easily.

Obvious approach is to voice call or text the number and require the confirmation code to be entered on the website. Just curious though if there are other requirements or if this is up to the provider.

</comment><comment><USER39> I don't think SHAKEN/STIR will stop robocalls, because the economics won't change. It's too easy for foreign robocalls to cycle numbers once one gets blocked. It will help with impersonation, but I don't believe it will significantly decrease robocall volume.

I think the telecommunications world will need to adopt whitelisting instead of blacklisting. I run a whitelist-based robocall blocking service called CallStop and a lot of customers have straight up given up using their landline, or their personal number with unknown numbers.

People who claim that whitelisting is a bad solution because it could block an emergency call don't realize that many people don't answer unknown calls anymore--and I don't think SHAKEN/STIR will change that.

<comment><USER40> Can you extend a bit on that, maybe I'm not understanding the problem right. Isn't having calls being authenticated the first step before you have whitelist/blacklist? Once every call can be definitively attached to a given source, then you can ban any foreign provider that let's these proliferate completely, no?

<comment><USER39> SHAKEN/STIR + Whitelisting is the best solution. SHAKEN/STIR by itself isn't going to change things too much I think. But it is a step in the right direction.

Whitelisting without SHAKEN/STIR is still extremely functional.

There are billions of unique American numbers possible, and with 250-500 average contacts per random dial, contact spoofing is not statistically significant.

<comment><USER26> Not when you can contact spoof banks, major drug store chains, AppleCare, etc.

<comment><USER39> Good point, if they're calling from a specific number. I see of lot of complaints about companies like FedEx though, where the calls come from random numbers.

</comment></comment></comment></comment></comment><comment><USER41> I swear to god the number of times I've hung up on people threatening visits from the FBI because I'm behind on my taxes (spoiler: i'm not) has been driving me literally insane. Maybe I can actually turn my ringer on my phone off of silent mode one day.

</comment><comment><USER42> Do robocallers spoof the number that gets displayed? I haven't personally seen that.

</comment><comment><USER43> If you get phonespam whisper at increasingly lower volumes, then out of the blue shout I HAVE ALREADY TOLD TO YOUR MANAGER TO BLACKLIST MY NUMBER WHAT IS YOUR SURNAME AND CUSTOMER SUPPORT ID

They usually hang up at 'blacklist'.

</comment><comment><USER44> I think this is a great idea on the one hand...

...But it will equal-and-oppositely create a market, perhaps a black market, for anonymous voice calls on the other... Perhaps these would be delivered by an open source Voice-over-IP program which uses an anonymizing P2P network as its backbone...

Also... will it make any difference for phone calls that originate outside of our country?

Now, those small observations aside, I think that hard authentication of the source of phone calls, is a great idea to help combat scammers and robocalls... I'd use this service myself, and I know other people that would be immensely benefitted from it...

</comment><comment><USER45> Sounds like a good first step to solve the problem of how the legacy telecoms systems were designed in a world of trusted peers federating. End result of course being spoofed caller ID spam.

Unless I'm missing something though, these measures don't do anything to address the gaping security hole in mobile networks around roaming interconnects. That seems to still be a pretty good way to do SMS and call interception, which are increasingly valuable as phones become the de-facto 2FA channel for access to banking, cryptocurrency services and more.

</comment><comment><USER46> I've got a FreePBX/Asterisk VoIP PBX and I've thought about running TeleCrapper2000 ([https://hackaday.com/2005/09/08/telecrapper-2000/](https://hackaday.com/2005/09/08/telecrapper-2000/)), but a better solution is to just put Google Voice in front of it and turn on "Screen Calls". It does a very effective (although not 100%) job of eliminating most robo/sales calls.

<comment><USER47> The audio delay on Google Voice is too horrible for an impatient person like myself. I'd love this feature baked into phones. Odd that it's not yet.

</comment></comment><comment><USER48> About time. How will SS7 get fixed though?

</comment><comment><USER49> Finally, although there are still more than a year to wait. Hope there won't be any extension to this deadline.

Before that, I'll keep allowing calls from my contacts only, and bear the miserable inconvenience that sometime my packages may take a month to arrive because of denials of calls from the delivery guy.

<comment><USER50> There is in fact an extension for small providers who say they need more time.

</comment></comment><comment><USER51> How do services like Twilio stay compliant with this regulation?

<comment><USER39> I'm guessing they talk with the carriers regularly about being complaint. I asked them about it recently and they said in a response ticket they were following along with progressions in authentication. There may be someone who works for Twilio on this thread that has more info though.

</comment></comment><comment><USER52> I answered my phone today, since maybe people are calling due to everything that's happening

Turns out they're still doing that robocall scam where they say you won a free cruise

</comment><comment><USER9> Google Voice impact?

<comment><USER53> Maybe a registry of parties trusted to spoof

<comment><USER54> What parties are trusted to spoof? Having a telecom industry group play favorites with who is and isn't allowed to spoof anyone's phone number sounds like it would be bad.

</comment></comment></comment><comment><USER55> Hold up...does this mean all voip calls need to be authenticated too? Why is no one talking about the privacy implications of this?

</comment><comment><USER56> For those who don't live in the US, this entertaining video by John Oliver might give some context:

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

<comment><USER57> Ironically, the video is only available in the US.

Had to hop onto my VPN to view.

Edit: Ok, at least not viewable in the UK!

<comment><USER58> I'm not in the US and I'm able to watch it. Maybe it's not available in your country, but it is available in at least one other country than US.

</comment></comment></comment><comment><USER59> Because of robo calls I forward all my calls to a disabled voicemail box. My phone hasn't rung in over 2 years

</comment><comment><USER60> Good. That'll solve a lot of problems. Spoofers are about the only thing that gets through my spam filters now.

</comment><comment><USER61> Is this now just a problem on mobile phones in the USA now that we have the no call list legislation?

<comment><USER25> _Is this now just a problem on mobile phones in the USA now that we have the no call list legislation?_

The Do Not Call list has been around for almost 30 years.

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

</comment></comment><comment><USER62> Wait, wasn't this already done? Seriously! We are doing this now. Why has it taken so long!

</comment><comment><USER63> What are the privacy implications of this requirement?

<comment><USER64> None. You are already in a weak non-repudiation environment with cell phones. This solution will reduce some spoofing, but I doubt it will eliminate it.

It will be interesting to see who will be running the CA for these connections.

</comment></comment><comment><USER65> Wait, caller-id was not authenticated all the time?

<comment><USER66> It's a widespread incorrect belief.

* [http://jdebp.uk./FGA/truths-about-telephones.html#CallerID](http://jdebp.uk./FGA/truths-about-telephones.html#CallerID)

</comment></comment><comment><USER67> Will this also prevent spoofed text messages?

<comment><USER68> I have never received a spoofed SMS message so I already thought this was impossible.

<comment><USER67> It's definitely a thing and prevent some SMS use cases due to this security hole. This new FCC doc only references tracing the original sender.

"The FCC has also called on the industry to "trace back" illegal spoofed calls and text messages to their original sources."

</comment></comment></comment><comment><USER69> Nice

</comment><comment><USER70> and all it took was a pandemic

<comment><USER54> is there any reason to believe this is anything other than the next step in a long, slow-moving process? SHAKEN/STIR has been being rolled out for a few years now, IIRC most major players said they were going to have it deployed by the end 2019 (see response column of table towards the bottom of [https://www.fcc.gov/call-authentication](https://www.fcc.gov/call- authentication)), now they're just setting a deadline of June 2021 to start authenticating calls.

</comment></comment><comment><USER71> Not soon enough.

</comment><comment><USER72> It is bad news for the US citizens indeed. Unauthenticated phone number is the last island of privacy in our modern world. Think about it: from some point all citizens will carry a geolocation tracking device that is directly linked with their ID. The internet access will also be bound to your ID and so on. There are better ways to fight spam that do not pose a treat to privacy -- think about email or Facebook. There were tons of spammers, but there are commercial spam filters that do well now.

I live in a country where cellphone carriers are legally forced to authenticate users. And this data is used against political opposition and journalists.

<comment><USER73> No. Per TFA: STIR/SHAKEN enables phone companies to verify that the caller ID information transmitted with a call matches the caller's phone number.

<comment><USER72> Well, I misunderstood the point. Thanks for the clarification</comment></comment></comment>


One Year Later: Update from Leka, Robot Launch 2014 Grand Winner - <AUTHOR> http://robohub.org/one-year-later-update-from-leka-robot-launch-2014-grand-winner/

<comment><USER2> Wonder who's going to win it this year!</comment>


A user is trying to steal from us and I don't mind - <AUTHOR> http://plusbryan.com/a-user-is-stealing-from-us-right-now-and-i-dont-mind <comment><USER2> If HN incorrectly hellbans someone... they piss someone off.

If a retailer incorrectly hellbans a customer, that is, they tell the customer that their card will be charged, and that the goods they ordered will arrive in the post, but without the intention of doing either of those things, owing to a genuine mistaken belief that the customer is engaging in credit card fraud, but lying nonetheless... are they leaving themselves open to legal action from the customer? From regulators? I'd expect the bad PR alone to be a worse hit for a retailer than a bulletin board.

<comment><USER3> Can you outline the law a company or individual would be breaking if you pretended to sell something to someone and didn't charge them for it without giving a solid reason?

Given you didn't save their credit card, issue a receipt stating payment was received in cash, or accused them of a crime what exactly is the crime being committed here?

Perhaps more hoax than fraud?

<comment><USER2> IANAL but breach of contract. You have made an offer through your website, the customer has accepted that order through your website, at which point by default a contract exists between you. You can wiggle round it a bit with your T+Cs, but if you are giving them every impression that a contract exists which you can fulfil then they are allowed to rely on a contract existing. If you've made no attempt to charge their card, that's your fault, not something you can blame on the customer.

If there were too many false positives I would also expect to attract attention from Trading Standards --- false advertising? --- and they might be satisfied that you're making honest mistakes, or they might insist that you overhaul your fraud detection procedures or your customer communications, but either way they will suck up some of your time.

(This is from a UK perspective.)

</comment></comment></comment><comment><USER4> Though it may be effective, from a moral standpoint I find hellbanning to be as evil as the name would imply. To a lot of people, finding out that you've been ostracized _and nobody told you_ would be extremely psychologically damaging. This applies more to discussion forums, of course, than online purchases.

<comment><USER5> Yeah, I had an account hellbanned here for over a year before someone finally told me. There's no way to find if someone replies to you on this forum so I rarely went back and checked if anyone replied to me, but it still bothered me that the admins would find it acceptable to let someone waste their time over an entire year without telling them their account is useless. Not to mention the additional 10-15 seconds of latency opening every page on the forum.

<comment><USER6> Find out if people replied to you at <https://news.ycombinator.com/threads?id=consz>

<comment><USER7> HN randomly takes about 10 seconds to load for me though I've never made an account here. In case my IP was slowbanned, can someone reply to this comment?

<comment><USER4> Sometimes HN is just slow. Last I heard, it's running in a custom server in a custom Lisp language on a single core of one server.

</comment></comment></comment></comment></comment><comment><USER8> So I moused over this weird little black dot. It changed shape with the words "Don't move" next to it.

1 second later it seems I'd given this blog the equivalent of a thumbs up.

wtf? Dear plusbryan. -one kudo. THEN -another kudo for having a stupid system. In fact, -two.

<comment><USER9> Same here.

I hover over links to see where they go, comics to see their title text, and vote-buttons to see where they're from. That shouldn't and does not indicate my approval of this article, and I can't reverse it.

<comment><AUTHOR> That's a good point - I'll mention this to dcurtis, who runs svbtle. Certainly don't want to sucker anyone into liking something they in fact do not!

<comment><USER10> It is deliberate on his part <http://dcurt.is/unkudo>

<comment><USER11> Interesting, I wonder how many of those 6342+ kudos were as a result of people testing what he was talking about.

> meaningless number

To nitpick, if it was really meaningless, it shouldn't be part of the page, atleast not under the title "kudos" or under the disguise of endorsements by X people. Well so it carries as much meaning as a Facebook like button.

Regardless, I would care more for the content of a page than the brand or endorsements it received.

<comment><USER12> Exactly. "A meaningless number, prominently displayed."

His joke's on us.

</comment></comment></comment></comment></comment></comment><comment><USER13> > _A user is trying to steal from us and I don't mind_

Of course, you mind. You hellban them for crissake.

Catchy title though :)

</comment><comment><USER13> There's a cleaner variation of this.

Once you see a user go through 3 cards, each failing the authorization, _fail_ all subsequent purchase attempts without passing them to the bank. If you feel like tar-pitting the guy, show "timed out" errors and tell to contact the support or ask to try again with another card. Legit customers _will_ contact the support and the frauds will continue supplying you with stolen credit card #s, which you, of course, will diligently log for the future reference.

<comment><USER14> This would trap me almost every time I try to buy tickets from RyanAir.

I don't know what's up with their CC processing, but it has never worked for me on the first try/first card.

<comment><USER15> Slightly off topic, but this keeps bugging me. How many cards do you have? Is it my circle and I, a New Zealand thing, or something else, but everyone I know has one card, 2 maximum. I once stumbled across someone with about 30 (when he brought them into an MRI scan room, despite having been warned a few times and me having taken them off him, but he'd have had none after doing that), but that's the only person I've knowingly me with more than 2. I should note that everyone here has a direct debit card too - EFTPOS.

<comment><USER14> Currently I have several cards due to having a life that's very internationally split, between the US/France/UK mostly, with bank accounts in each, plus (in the US at least) separated accounts for business/personal.

I have 3 US credit cards as well, one business and two personal -- the second is just a backup for if the first fails (and when I'm traveling, they fail frequently). It doesn't cost anything to have a new card (if you don't carry a balance), so it's useful to have a backup.

30 cards sounds like someone with a serious debt problem. Separate credit/debit cards are a really useful distinction -- in particular, I can maintain much higher security for my debit cards (and not use them online); a credit card purchase can be disputed without the money already being _gone from your account_. But they're certainly dangerous (given how people tend to rationalize spending money they don't have...), and _carrying a balance_ on a credit card almost certainly means you're doing something wrong.

They make it really easy to live beyond your means; I got burned by that a couple of years out of college, clawed my way back out of debt over a few years (fortunately with reliable income and low expenses!) and haven't made the same mistake again.

</comment></comment></comment></comment><comment><USER16> I'm wondering if there is anything legally wrong with falsely saying that a certain transaction went through when it actually didn't.

<comment><USER17> But would a thief sue them for this? Would be fun to see someone sue them for no disclosing declining payment from a stolen credit card!

<comment><USER18> Probably not, but as mooism2 mentions, what happens when it's a legitimate customer who gets wrongly banned?

<comment><USER17> That will be a little bit of inconvenience for them. But since they don't get shipment or get charged, they will most probably contact customer care and get themselves unblocked.

If they are not charged and then system tells that order is sent, that is not much harm. I know, not the best condition for a customer but acceptable to stop cc fraud!

</comment></comment></comment></comment><comment><USER19> It's an interesting idea, but what if it's an error on your part and not the user?

There's no real channel for reverting the hellban once issued since you've pretty much permanently assumed the user is malicious and can't be trusted.

A few cases I could think:

\- User loses card and cancels it, but finds it again and uses it without realising.

\- A single piece of information the user has provided is wrong, but the user repeatedly resubmits without realising. Eventually you hellban them, but they're actually a legitimate customer who made a mistake, but now you can never have them as a customer and might be feeding false positives to them and ignoring their calls for support after they fail to receive the product.

In the end, it doesn't seem like you're saving yourself (you mention Walmart as the one that usually suffers) and from my point of view you're shooting yourselves in the foot, as you could accidentally hellban a legitimate customer which could result in a bad reputation.

<comment><USER20> > and nothing stops a promising career in white collar crime in its tracks > quite like a decline in the Walmart checkout aisle with $5000 of merchandise > in the cart.

It is not Walmart that suffers, but the thief trying to use a stolen / fraudulent card _at_ Walmart that suffers.

OP mentions it is a automatic _and_ manual process of hellbanning. I am sure they will have the corner cases covered.

<comment><AUTHOR> That's correct - I'd suggest flagging for immediate attention based on activity bounds beyond the norm (3 declines from different cards for instance) and then hellbanning if appropriate. Obviously we'd never want a situation where a real user ended up hellbanned, so the final decision is left up to a human.

<comment><USER19> Ok that seems more realistic, the actual process is key, I assumed it would be automated with no human intervention.

</comment></comment></comment></comment><comment><USER21> The naysayers have probably never dealt with real, persistent credit card fraud. I have. I think this is a beautiful idea that will do a lot of good for us.

I run a B2B SaaS company that attracts its fair share of fraud. If we simply string these bad actors along instead of banning them outright I think we would see a decrease in fraud attempts.

Of course this would only be a manual thing. The vast majority of our customers come from sales channels and not through the web or search referrals. This will work great for us as we already have a manual account approval process. Instead of banning them, we'll hellban them.

</comment><comment><USER22> So you extend the offer. The user accepts the offer. The user believes they have shown consideration by paying for the item, and they expect you to fulfill the agreement that they believe has been created. Your messaging may even support this.

If you have anything less than 100% specificity with your fraud detection algorithm, don't you risk running into trouble because of violation of a contract (or something similar, IANAL)?

<comment><USER23> Only if they actually charge to the credit card.

If you never process the card and simply give them their 'digital content' or (in this case) mail a card to an address then you aren't violating anything. It'd be the equivalent of making a magnetic card reader out of cardboard and pretending to swipe it before handing someone a cup of lemonade.

Even if you never mail the card I don't see where you would have anything legally binding as you never processed the card in the first place. (IAANAL)

For one system I worked on we did this for legitimate purposes. It's a long story but it was around devices people would walk up to and use their card to buy stuff... if the machine was unable to process we would simply give them their stuff. The internet connection was crap and it failed about 20% of the transactions and we ---really--- did not want this thing to come back with an error 20% of the time, so it was just better to give them away for free. Eventually we fixed the internet issue but kept the code in there just in the off chance it happened again.

</comment></comment><comment><USER24> How do you know when a user is using stolen credit cards?

<comment><USER25> i'm assuming a couple chargebacks would need to get the ball rolling.

<comment><USER26> You never wait for the chargebacks. If you get chargebacks, they cost you a lot.

You try to detect/block immediately - if a thief wants to check 10 cards in 5 minutes, you want to block him in the middle of it. And you immediately revert/cancel any transactions that succeeded so that you don't get chargebacks.

</comment></comment></comment><comment><USER27> Devious. Underhanded. Evil.

I like it!

Upside is that it slows down the thief. Downside is that it will cause legitimate users to rain hellish social comments down on your head.

</comment><comment><USER28> You're really forbidden to do any false positive with that, or you are good for a PR nightmare. Moreover applying some kind of sanction without any of the traditional justice procedural safegards makes me slightly uneasy.

</comment><comment><USER29> Fun times. Do you track the cards that a specific individual uses? That way if you feel like turning that information over to the Lone Ranger they will have a method of tying all those incidents together.

</comment><comment><USER30> I love the sporting aspect of this trick. Well done!

</comment><comment><USER31> Totally unrelated: does anybody want a gift box? I've got several thousand.</comment>


Stop Capitalizing the Word Internet - <AUTHOR> http://www.newrepublic.com/article/122384/stop-capitalizing-word-internet

<comment><USER2> The first thing I did when reading this article was test to see if Word or Swiftkey would try to correct a lowercase "internet".

They didn't.

I have no idea what the author is going on about.</comment>


Army research advances autonomous systems - <AUTHOR> https://www.arl.army.mil/www/default.cfm?article=3498 <comment><USER2> I thought this post was about networking.</comment>


Where in the world is color e-paper? - <AUTHOR> https://goodereader.com/blog/electronic-readers/where-in-the-world-is-color-e-paper <comment><USER2> I've had a different impression of ClearInk.

From [https://www.clearinkdisplays.com/clearink-and-tianma- announc...](https://www.clearinkdisplays.com/clearink-and-tianma-announce- mou):

> CLEARink's ePaper 2.0 technology has been trial manufactured and tested and > the company will _soon ship sample kits to select customers_ to commence the > next phase of design.

> [...]

> Our partnership [...] will accelerate our product and process development > and allow us to _serve customers in various geographies_.

And from [https://youtu.be/TxdGdOtjMBc?t=463](https://youtu.be/TxdGdOtjMBc?t=463):

> If you're curious, you have to come and join us early 2019 and then we'll > show you the final product.

They do seem to focus on B2B, but it doesn't look like they will just "license their screentech" or it "might be a reality in a few years". My hopes would be that I'd be able to buy a 10 inch reflective display with color and 30+FPS this year. I don't need a full e-reader, just a HDMI plug.</comment>


Does anyone have a great idea for what to name a new datastore? - <AUTHOR> http://www.daemonology.net/blog/2010-10-22-naming-a-datastore.html

<comment><USER2> _Why am I writing a data store? Because my online backup service needs to store 200,000 key-value pairs for every $/month of revenue, and existing data stores aren't optimized very well for very large numbers of very small records._

Really? Every one of the dozens of open-source key/value stores is so far off from your requirements that they just don't work for you?

<comment><AUTHOR> Yes. The most common problem is being designed for large values. My situation of having a large number of very small values is unusual, so it's not surprising that existing code isn't optimized for this case.

</comment></comment><comment><USER3> I wrote a KV store for work (nothing special, not planning to release it) and call it Koko.

It's the Finnish word for "size" or "bulk" and does not have many Google hits (always an advantage).

Feel free to use it :)

</comment><comment><USER4> Perhaps something related to it's design goals, like "grains", url getgrains.com (ie. lots of tiny grains of sand on the beach)?

<comment><USER5> silo?

<comment><USER6> Win.

</comment></comment></comment><comment><USER7> > _Naming after a random household object: FridgeDB?_

Actually, I am pretty sure the name CouchDB was inspired by REST :)

<comment><AUTHOR> Aha! I had no idea, but that makes perfect sense.

</comment></comment><comment><USER8> Five minute brainstorm: (so most are awful)

The datatorium

Ferret (no reason, it just sounds right)

Niblets (because it stores small chunks)

Petadata / petapairs (because it works with many k/v pairs)

Basology ((data)base + ology)

Keyology (the -ology of keys)

Tupology (because a k/v pair is a tuple)

</comment><comment><USER9> If it is not too much to ask, what are your real constraints and requirements and what existing systems did you investigate?

Based on the tidbits you've supplied I would guess what you're really doing writing is a file system capable of handling small files well (i.e. something along the lines of ReiserFS).

<comment><AUTHOR> Tarsnap data is stored in S3; my problem is handling the metadata which allows the Tarsnap service to find user data on request. The two large tables have (key, value) lengths respectively of (41, 12) and (8, 16).

I need immediate durability; fast restart; high throughput bulk writes; reasonable throughput random reads; range requests; and (for financial reasons) I'd like to have a high disk:RAM ratio.

</comment></comment><comment><USER10> How about Newd? For "New Datastore," of course. And all your clients can say "I'm going newd" when they adopt it.

<comment><AUTHOR> I have to admit, this one made me laugh. But it doesn't feel quite appropriate as a name for a highly stable and durable data store.

</comment></comment><comment><USER11> Small chunks? Call it "WeeDB"

</comment><comment><USER12> +1 for the already mentioned in the article:

Sauron

Kobold

</comment><comment><USER13> "Shunya" - sanskrit word for zero/null/nothingness it also signifies existence(infinity/everything) is contained in nothingness. should work as a gud koan too :P

</comment><comment><USER14> How about calling it a "transaction-value-logging-data-store" and naming it TRVLDS? That ought to be good for something. :-)

</comment><comment><USER7>
        Kevlar (KV)
        Rithm  (Log)
        OhBaby (TarSnap ;)
        Cubby  (Hole)
        Pigeon (Hole)

</comment><comment><USER15> SandStorm

SandCastle

SandStore

Sandy

SnipStore

TinyOcean

YAYSP (Yet Another Yak Shaving Project)

</comment><comment><USER16> burnaby cabinet

sounds better than "vancouver cabinet" and is technically more accurate

smallKeys

even tho you're referring to small values, "smallKeys" sounds better than "smallValues" (tho misleading)

</comment><comment><USER17> No. But here's some mediocre ones:

Gidget

Kahuna

Hailstorm

Ark

</comment><comment><USER18> Web Scale

<comment><AUTHOR> I considered calling it "devnul", but I can't do sharding (I need range requests) so the joke wouldn't have worked anyway.

</comment></comment><comment><USER19> Attic

Iron Molehill

</comment><comment><USER20> Shelf

</comment><comment><USER21> Mandelbrot

</comment><comment><USER22> Hooks (like key hooks)

</comment><comment><USER23> Tar Pit

<comment><USER23> "The highly stable and durable data store."

And a cluster of Tar Pits = La Brea (which is actually a cluster of tar pits)

</comment></comment><comment><USER22> KeyMate

</comment><comment><USER24> DonKey

</comment><comment><USER25> YADS.</comment>


Wing Commander's Chris Roberts returns to gaming with ambitious MMO - <AUTHOR> http://arstechnica.com/gaming/2012/10/wing-commanders-chris-roberts-returns-to-gaming-with-ambitious-mmo/

<comment><USER2> So , Linux version?

The main thing that concerns me is the graphics, popular MMOs seem to have always had pretty low system requirements.

Keeping an MMO running and compelling must have some pretty high costs so you either need a lot of players (which high reqs might exclude) or a high monthly fee.

<comment><USER3> He didn't mention Linux while I was there, but I'd be surprised if it did come to Linux. PC gaming typically means Windows gaming. But, you knew that, I'm sure. :) I wouldn't expect any big titles to come to Linux until Valve validates that space.

What is your concern with the graphics? I don't know that I caught it in your sentence.

No monthly fee for this game. Oh, your third paragraph is the concern in your second? It seems he's doing a couple of things here.

First, he's appealing to a market by treating them as special[0]. This is a good idea as PC gamers tend to invest pretty heavily in their kit and are likely to support games that show off the capabilities of said kit. The games can be both good and pretty, but sometimes even just pretty will be enough.

Second, concentrating on PC allows him to not worry about being burdened by supporting consoles, which means he can push the tech even further. Which goes back to servicing the gamers mentioned in point 1.

[0] [http://4.bp.blogspot.com/-jnwqezP86Ww/Td_WTq9dxoI/AAAAAAAAAi...](http://4.bp.blogspot.com/-jnwqezP86Ww/Td_WTq9dxoI/AAAAAAAAAiI/GUzKdsxq4XQ/s1600/pcgamingmasterrace.jpg)

<comment><USER2> I wondered about Linux because it seems to be a common thing with crowdfunded games as it seems to be a fairly popular OS with people who like kickstarter and the like. He also mentioned that he liked the PC as an "open platform" which made me hopeful (can't get much more open than Linux), the last Chris Roberts game I remember playing ran under DOS so it's not like he has a legacy of Windows development.

I didn't realise it was no monthly fee, not sure how the economics of that would work. Running servers to host real-time fast paced space battles is going to require some significant umphf and a very good network.

While you are right that there's a demographic of PC gamers who enjoy building high end systems in my experience a lot of people who play MMOs like WoW tend to run them on low end laptops as well as old desktops. Part of the appeal is that you can get your less gaming inclined friend to start playing with you on whatever POS they have lying around. I'm pretty sure blizzard keeps WoWs graphics basic on purpose.

Perhaps this is a more targeted product for hard core PC gaming fans, however if they want to make the graphics a big selling point they will have to keep updating these as time goes on and video cards become more powerful.

That means they will have to either have very scalable graphical settings, or will rely on their fans upgrading their PCs to keep up with the game. I can imagine it would be pretty annoying to get into playing an MMO and then one day have a patch come out that doubles the triangle count and means you now get 5 fps.

<comment><USER3> This game is being built on CryEngine 3. AFAIK, while there is a Linux build of that engine, I don't think it's been realized in anything you can play.

I got the distinct impression from hearing him speak that this isn't so much of an MMO as it's a multiplayer game in a massive universe. He said that one of the reasons they're able to put such high fidelity models into the game is that you won't typically see many of them at once. He likened it to Battlefield 3 battles vs everyone in a galaxy converging on one spot.

This also ties into your analog to an MMO. It isn't, I gather.

All that said, I'm not him and I haven't had a hand in making it. I wouldn't mind a hand in making it...

<comment><USER2> Interesting, perhaps it is possible that it will work in a more P2P fashion with more isolated "instance" type servers for the combat and communal servers for trading etc. Similar to guildwars.

All of the twitch-reaction type MMOs I have tried have tended to be fraught with lag problems, the scaling issues if you have to run a single game world where sub 100ms response times are required and you have 10K+ people connected at any given time must be quite something.

</comment></comment></comment></comment></comment><comment><USER3> I was at his presentation. It sure is shiny. The ships look really cool and I'm a big fan of the way they seem to control. I really hope this takes off. Wing Commander sits in a special place in my heart.

<comment><USER4> You know, this comment immediately makes me think of this: [http://www.codeofhonor.com/blog/starcraft-orcs-in-space- go-d...](http://www.codeofhonor.com/blog/starcraft-orcs-in-space-go-down-in- flames)

Specifically, "As bad as Ion Storm was internally, there was a dark secret that eventually unraveled. It wasn't until years later, well after the 1996 E3 demo of Dominion Storm, and after StarCraft launched, that we discovered that the Dominion Storm demo was a fake."

So not having been there, I have to ask: did you have hands on the controls?

<comment><USER5> Disclaimer: I haven't seen either of these guys for 15 years. However, I was at Origin in the early 90s, followed by Digital Anvil. Not everything we did turned to gold, to put it mildly, but Chris and Erin didn't rig demos.

If they're doing that now, I'll be astonished. It wasn't in our DNA as a company -- either company -- and that ethic came from the top.

We were well accustomed to competing with the latest rigged demo from any of several companies that are either entirely forgotten now, or remembered with a snarky chuckle. Our business was basically to ship what other people were promising... eventually, anyway. :)

<comment><USER2> I loved the early 90s Origin games, they are certainly the ones I remember the most fondly. I spent _days_ in Ultima 7 just wandering around completely aimlessly talking to random NPCs and looting dungeons.

Were you there during the development of Ultima 8 and 9? Not to be rude, but if so _what the hell happened there_?

Was it simply an emphasis of technology over gameplay and story?

These reviews made me chuckle.

[http://spoonyexperiment.com/2011/02/01/ultima-7-the-black- ga...](http://spoonyexperiment.com/2011/02/01/ultima-7-the-black-gate-review/) <http://spoonyexperiment.com/2012/01/31/ultima-8-pagan/> <http://spoonyexperiment.com/2012/05/29/ultima-9-ascension/>

<comment><USER5> I left shortly before U6 came out, so couldn't speak firsthand about anything that happened afterward. A lot of nasty things have been written about the effects of the company's acquisition by Electronic Arts, and most of those things are true. The culture clash was massive.

Around the time U9 was being developed, Ultima Online was also becoming the Next Big Thing, and I imagine that splitting development resources between those two huge projects couldn't have done any good. One of them was bound to win more mindshare and attract more funding and in-house talent.

Ultima V was the very last one I played all the way through, personally, and I wouldn't be surprised if that's true for Richard as well.

</comment></comment></comment></comment></comment><comment><USER6> I can't help thinking of Richard Garriott's Tabula Rasa, which did not do well.

<http://en.wikipedia.org/wiki/Tabula_Rasa_%28video_game%29>

For the youngsters: they're both alums of Origin Systems, storied PC game developer and home of Wing Commander and Ultima.

<comment><USER7> First thing I thought of, too.

And your post reminded me that there are people out there who don't know the glory that is Lord British. That dost sadden me.

</comment></comment><comment><USER8> Wing Commander Privateer[1] was one of my favorites back in the day. A chance to do the same but in a MMO like environment would be awesome.

[1] <http://en.wikipedia.org/wiki/Wing_Commander:_Privateer>

</comment><comment><USER9> One does not simply build a sandbox. A sandbox evolves like an organism to those who inhabit it. It's taken EVE over 10 years to get to it's current level of polish. Good luck to him, but the article reads with too much overconfidence.

</comment><comment><USER10> Sweet! I can't wait for the Android and iPhone releases of this.. :)

</comment><comment><USER11> I can't say I agree with this at all:

 _Roberts writes on the game's newly launched website that he hopes this dynamic will create a tiered social structure where dedicated players can really distinguish themselves from casual players, and where different factions will be in conflict._

Anyone remember the titles you could earn in WoW PvP but could only be achieved by tiny percentages? Or Titans in Eve?

Stupid system, stupid idea, stupid to introduce it. Why reward tiny segments of active players for living unhealthily in your game?

<comment><USER12> >Why reward tiny segments of active players for living unhealthily

Spending the effort to gain high-tier rewards in a game and living healthy are _not_ mutually exclusive.

<comment><USER2> The thing is, you would either need to make those high-tier rewards accessible to everyone in which case they lose a lot of their shine. Or you need to design it so that only a very small % of players will be able to achieve them.

There are those who are willing to play an MMO for 16 hours a day, so if you make them rare enough these are the only people who will be able to achieve them.

I remember Star wars galaxies, I didn't play it much myself but I remember "play as a Jedi" being a big selling point and apparently this was in reality only possible if you were literally willing to devote your life to the game.

They changed it some years later so just about everyone could become a Jedi and there was much uproar from what I remember.

<comment><USER13> What BS. Why on Earth should games be sterilized down to ensure that all players receive an equal treatment? That's not how it works, not at all, because primarily: You can't control players, and players affect each other's experience.

But even past that, you seem to be saying that all MMO's should be designed for the lowest common denominator.

Why make guild raids when casual players can't get into top tier guilds?

Why make 40 man dungeon raids when casual players can't find groups larger than 5?

Why make the game have 80 levels when casual players, on average, will only reach 60 of them?

My real question is: Why punish avid gamers by condescendingly referring to their passion as unhealthy?

It seems to me that attempting to force every player into one paradigm is a great way to alienate everyone except players who that paradigm was designed for.

If you make a game that appeals to casual gamers -- do not be surprised when hardcore gamers skip it!

This is the beauty of the MMO: content for everyone and theoretically, the hardcore gamer's contribution to the game world will ripple out and affect other gamers, not only psychologically (I want to be that good) but materially, as they affect economies and other systems...

<comment><USER14> "Lowest common denominator"? Really?

After listening to this kind of argument from World of Warcraft players for ages, I have a serious problem with equating time investment with being more deserving of having fun. It's about taking pride in the ability to put up with arbitrary timesinks that serve the game in no way but to prolong it, and that rhetoric is ultimately justifying game design that is designed to waste the player's time as much as they will put up with.

Somehow Blizzard managed to brainwash people into rationalizing their sunk time, and now they really believe that having to spend hours not having fun before you can have fun is necessary to make a game rewarding, because there's no other element of the game that is rewarding to them anymore.

<comment><USER13> Your reply once again proves that you're incapable of understanding the players, and instead of attempting to understand, you're judging and insulting them and how they freely choose to spend their time.

Seriously just because you don't like something doesn't mean people who do are brainwashed. That's extremely pretentious and offensive and I really have nothing more to say to you.

</comment></comment></comment></comment></comment></comment><comment><USER4> I would be interested to see what the results of the crowdfunding are; I'd like it validated that such an MMO would be profitable.</comment>


Show HN: Host your own Go test coverage badges - <AUTHOR> https://github.com/esell/hoptocopter <comment><AUTHOR> OP here, this was done as part of my new year theme to start using more self hosted products (drone, gitea, etc) and hacked up in the airport while waiting for my flight so beware :)</comment>


On Misunderstanding Economics - <AUTHOR> http://stumblingandmumbling.typepad.com/stumbling_and_mumbling/2015/10/on-misunderstanding-economics.html <comment><USER2> A Country is a company metaphor is probably the most common source of misunderstandings. It's everywhere in political discussion. A company or a household is open system. A country is best modeled as a closed system with feedback loops.

Classic:

[https://hbr.org/1996/01/a-country-is-not-a- company](https://hbr.org/1996/01/a-country-is-not-a-company)

</comment><comment><USER3> I have a couple problem with economics evangelism. You never hear them talk about conditions for market failure. [https://en.wikipedia.org/wiki/Market_failure](https://en.wikipedia.org/wiki/Market_failure)

To the concept of Pareto optimal assumes resources are allocated reasonably in the first place.</comment>