AMD has put an SSD on a graphics card - <AUTHOR> http://www.techradar.com/news/computing-components/graphics-cards/amd-has-just-put-an-ssd-on-a-graphics-card-1325400 <comment><USER3> Professional GIS user here. Most of my high resolution terrain models are well within the capacity of even a modest GPU to load into WebGL and run on a browser without breaking a sweat. Terrain models are static by nature and don't require a lot of horsepower once they are loaded.

The struggle comes in reading the data from storage, where several minutes can be spent loading in a single high resolution raster for analysis/display. When I built my own PC this year, I splurged on an M.2 SSD for the OS and my main data store. Best decision I ever made for my workflow - huge 3D scenes that formerly took minutes to load on a spinning platter now pop up in seconds.

This thing would probably be the bees knees for what I do. Shame it starts at $10k (and that it's AMD so no CUDA, so no way to justify it at work for "data science" :-/).

<comment><USER4> Any idea why Nvidia dominates in "serious" GPGPU applications? I remember people mocking them for refusing to adopt OpenCL, and when they finally caved their implementation performed far worse than AMDs. How did they win people over? Did they give out a bunch of free GPUs to universities or something?

<comment><USER5> CUDA mainly. It's fast (faster than OpenCL) and NVIDIA is really good with their software. CuDNN for deep neural networks is almost an industry standard. Nvidia understands software and markets better, while AMD sits on their butts for too long. Granted AMD always come out with a good open source solution that is always just a bit worse and very late. NVIDIA tries to create markets while AMD mess up and end up becoming followers. Shame really.

Edit: this is a good step though. AMD should be pushing the envelope and hopefully with Zen, they can actually realize some of the gains of HSA (which they tried to pioneer but it wasn't so useful since Bulldozer isn't that good)

<comment><USER6> CUDA is not [unqualified] "faster than OpenCL". NVIDIA does design software better than AMD, without a doubt. I think it's likely that NVIDIA decided to push CUDA and lag OCL support if their customers balked at having to port between the two. It's not that hard to port IMO, they're extremely similar.

<comment><USER7> OpenCL IMO is an ugly API born of the equivalently ugly CUDA driver API because Steve Jobs got butthurt at Jensen Huang for announcing a deal with Apple prematurely. Downvote all you like, but as John Oliver would say "That's just a fact." I witnessed it secondhand from within NVIDIA.

In contrast, OpenCL _could_ have been a wonderful vendor-independent solution for mobile, but both Apple and Google conspired independently to make that impossible (ironic in Apple's case because of OpenCL's origin story and idiotic in the case of Google and its dreadful Renderscript, a glorified reinvention of Ian Buck's Ph.D. thesis work, Brook).

Fortunately, AMD appears to have figured out OpenCL has no desktop traction and they have embarked on building a CUDA compiler for AMD GPUs called R.O.C (Radeon Open Compute). They have also shown dramatically improved performance at targeted deep learning benchmarks. It's early, but so is the deep learning boom.

The wildcard for me is what Intel will decide to do next.

The big win IMO is vendor-unlocking all the OSS CUDA code out there.

[https://github.com/RadeonOpenCompute](https://github.com/RadeonOpenCompute) [https://techaltar.com/amd-rx-480-gpu-review/2/](https://techaltar.com/amd- rx-480-gpu-review/2/)

<comment><USER6> Jobs might've been butthurt and it might've made better incentive but nobody likes to sole-source critical technology elements.

<comment><USER7> It would have been _fantastic_ if Intel had stopped beating the linpack horse a lot sooner and built a viable competitor to GPUs by now. Not this timeline though alas... Maybe 2020?

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I'm having trouble seeing the value add here. From the Anandtech article [1] they are using 2x512GB Samsung 950 Pro SSDs which use PCIE v3 x4 with M.2 connectors and a PCIE switch. The drives presumably are using NVME.

The demo claims that without the SSDs they were rendering raw 8k video @17 fps and using the SSDs improved rendering to > 90fps. How can this be such a significant improvement over accessing the same SSDs connected directly to a motherboard? The graphics card would have a PCIE 3.0 x16 connection...plenty of bandwidth and very low latency.

Maybe I'm missing something?

[1] - [http://www.anandtech.com/show/10518/amd-announces-radeon- pro...](http://www.anandtech.com/show/10518/amd-announces-radeon-pro-ssg- polaris-with-m2-ssds-onboard)

<comment><USER9> The writer had some of the same thoughts, and found this:

"The performance differential was actually more than I expected; reading a file from the SSG SSD array was over 4GB/sec, while reading that same file from the system SSD was only averaging under 900MB/sec, which is lower than what we know 950 Pro can do in sequential reads. After putting some thought into it, I think AMD has hit upon the fact that most M.2 slots on motherboards are routed through the system chipset rather than being directly attached to the CPU. This not only adds another hop of latency, but it means crossing the relatively narrow DMI 3.0 (~PCIe 3.0 x4) link that is shared with everything else attached to the chipset."

<comment><USER8> Thanks, I missed this. I noticed that the PCIE 3.0 x1 bandwidth is just above what AMD reported in their throughput test - 985 MB/s...I wonder if AMD used a system with the SSD connected to a M.2 slot on the motherboard with just a PCIE 3.0 x1 link.

I should clarify that I do think this onboard SSD concept could be really compelling for certain use cases, such as needing to store several hundred gigs of data which needs to be randomly accessed.

<comment><USER10> I wonder if this would be useful to companies like Pixar and Weta Digital - <USER2> imagine a big speedup in frame rendering time or a reduction in number of build machines required would be worth lots of cash.

</comment></comment></comment></comment><comment><USER11> Surprisingly, this makes a lot of sense, and I'm glad that it uses an M.2 port. Thus, technically, you should be able to swap out the SSD for any screaming fast model you want.

<comment><USER12> I can't find anything that supports your claim that it uses an M.2 port. But even if it does, sadly the SSD will most likely be soldered directly on the PCB like it is in most tablets and phones.

It would have been really cool to have been able to swap it out as needed, but I don't think that will be doable :(

<comment><USER13> Anandtech say it has two M.2 x4 ports:

[http://www.anandtech.com/show/10518/amd-announces-radeon- pro...](http://www.anandtech.com/show/10518/amd-announces-radeon-pro-ssg- polaris-with-m2-ssds-onboard)

And on the back you can see the standard tiered screw holes for fitting different M.2 card lengths:

[https://twitter.com/FudzillaNews/status/757774661081899008](https://twitter.com/FudzillaNews/status/757774661081899008)

</comment></comment></comment><comment><USER14> I used to do research on gene sequencing on a GPU. For small sets it was quite fast (it's arguably a O(n^4) algorithm, though really a O(n^2m^2)) but once you couldn't fit the data set on the GPU it was dead slow.

This would solve that problem nicely.

<comment><USER6> Well, maybe. It would certainly improve. But you probaly still won't get anywhere near the GDDR5(etc) speeds from those memory accesses. Depending on the memory access pattern it might end up dropping down significantly. But you might still end up considering it "dead slow."

<comment><USER5> I think the main advantage is the GPU doesn't have to go through the CPU to get data.

i.e. the transaction goes from this: GPU -> CPU -> HDD -> GPU

to this: GPU -> HDD -> GPU

<comment><USER6> Sure, that part was clear. But the difference between "quite fast" for _this application_ and "dead slow" might be that hundreds of GB/s with GDDRx/HBM is so much faster than anything else. Even the M.2 SSD onboard is probably only ~5GB/s. So if the walk pattern is something that is predictable enough by the GPU (usually pretty linear, but some memory features have 2d/3d locality), then you could crunch those numbers as fast as the SSD could deliver them. Now it becomes a question of how much computation/kernel time can you spend on a chunk of data?

</comment></comment></comment></comment><comment><USER15> 3 predictions:

1\. GPU driven command buffer workloads will become more significant (now that literally all your textures can exist in VRAM, it's worth going the extra mile to elide a GPU-CPU round trip).

2\. Voxel based techniques (which were generally memory intensive) open up again. That's modeling destructible environments, atmospheric effects, transparent materials, etc in a more accurate and performant way.

3\. Entire scene graphs can live on the GPU which opens up a lot of design space for new volume hierarchies and data structures.

</comment><comment><USER16> Here is a video that shows the GPU in action: [https://amp.twimg.com/v/b080f46d-e408-4348-864e-7cc12e40d1ac](https://amp.twimg.com/v/b080f46d-e408-4348-864e-7cc12e40d1ac)

</comment><comment><USER17> How long would an SSD last under a graphics card workload?

<comment><USER18> It comes with a 10-year warranty, so it might not even matter. But back in 2014, 240GB drives were approaching a petabyte of continuous writes before failing. [https://techreport.com/review/27909/the-ssd-endurance- experi...](https://techreport.com/review/27909/the-ssd-endurance-experiment- theyre-all-dead) With a couple more years of manufacturing and wear-leveling improvements, and more space for the algorithms to play with, it could be a lot more now.

<comment><USER19> On the contrary, SSD lifespans have actually decreased. Smaller transistors considerably reduce lifespan, and the advent of storing 2 (MLC) and 3 (TLC) bits per cell has hastened the trend.

3D-NAND uses different physics, but as of now hasn't yet matched legacy NAND's endurance (lifespan)

<comment><USER20> > 3D-NAND uses different physics, but as of now hasn't yet matched legacy > NAND's endurance (lifespan)

What makes you say that?

<comment><USER19> Facts make me say that.

3D-NAND uses charge-trap flash while planar NAND uses floating-gate- transistors based flash.

Working in a NAND company also makes me say that.

<comment><USER20> By "legacy" do you mean particularly old flash, or planar floating-gate flash in general? Because samsung apparently claims that they can do 3D _TLC_ with better reliability and density than 10nm planar _MLC_.

</comment></comment></comment></comment></comment></comment><comment><USER21> So, what you're telling me is that I can now build a complete computer into my computer as graphics card?

<comment><USER6> Depending on your perspective, your computer has contained several "computers" for many generations. Storage, network, display, and other adapters often have something like a CPU onboard capable of executing software instructions.

</comment></comment><comment><USER22> [http://www.anandtech.com/show/10518/amd-announces-radeon- pro...](http://www.anandtech.com/show/10518/amd-announces-radeon-pro-ssg- polaris-with-m2-ssds-onboard)

</comment><comment><USER23> This 8K video demo is stupid.

Lets assume a relatively modest 8bit per component RGB, a 7680x4320 frame is 132MB, at 24fps is 3.2GB/s.

So in 1TB you can store 312 seconds aka 5 mins of video.

You're going to have to top this up to play any more than 5 mins, which means writing to the SSD at 3.2 GB/s whilst you read from it. I do not believe even any NVMe SSDs are full duplex, so that's 6.4GB/sec, which the SSDs cannot provide.

You can DMA to GPU memory at 10GB/sec, so the SSDs are of no benefit for video.

No-one stores 8K data uncompressed anyway, so the CPU will need to read and decompress the data.

Perhaps it's useful for faulting in megatextures for 3D scenes though.

<comment><USER24> It shows the bandwith bottleneck nicely.

</comment></comment><comment><USER19> Sounds like an excellent setup for machine learning / big-data workloads.

People have already moved data-base computation to the GPU, providing low- latency NVM access to such a set-up would really accelerate things.

</comment><comment><USER25> This might be useful for consumer cards as well: a tiny (0.25-2x VRAM) compiled shader or texture cache could possibly help with the framerate dips (microstutters).

I know that PCIe bandwidth is not really an issue and SSD latency is significantly higher than RAM (but with NVMe pushing below 3 µs it makes you wonder how low a custom interface could go..)

</comment><comment><USER26> > The graphics card has already been demonstrated rendering a raw 8K video – > the initial demo showed this running at 17 frames per second, and switching > to the SSG, that was boosted to over 90 frames per second.

I doubt that the same GPU was used. If it is, we're in trouble (or have unoptimized software). I thought that someone would have already solved the "let's stream data in and out and not interrupt whatever the GPU is doing" problem, but meanwhile many people are fretting over what PCIe version (thus, attained speeds) they can use.

<comment><USER6> Indeed modern GPUs do copies over the bus while executing shaders/kernels. But once you saturate the bus, you are limited in how much shader execution you can accomplish as a result. If this scene required more textures than fit in memory, it would benefit from having a local DDR-accessible cache instead of having to grab it over PCIe.

<comment><USER26> I agree, but...

A GPU's 16 lanes of PCIe 3.0 provide almost 16 GB/s of bandwidth. An M.2 SSD (used in this card) is at best 4 GB/s (PCIe 3.0 x4 lanes). This card has two M.2 slots.

Even at those speeds, accessing data from system RAM is faster. (depends on specifics, but system RAM is easily 40+ GB/s) How does increasing data bandwidth 50% increase performance by 4? Are inefficiencies (and latencies) really eating up all that?

</comment></comment></comment><comment><USER19> What if the next PSP or XBox used this architecture? Games could really fly!

</comment><comment><USER27> Instead of fixing bus that's too slow for SSD (really too slow?) they're made that hack with duct tape. And it surely has proprietary API and direct addressing (no filesystem) like in 50s.

Then they'll integrate ethernet into video card for high speed traders (also can be marketed as lower latency for gaming). But why not to integrate whole PC into it? With gaming console-style OS on it.

<comment><USER28> That is certainly a lot of leaps you're taking there. There's no evidence to suggest any of those things you've implied.

</comment></comment><comment><USER29> Does it only bug me that with the addition of cold storage on the card, GPUs scream of poor design?

If I was rewriting the same-ish REST helper on every micro-service of a project, I would immediately think of refactoring and yet GPUs now have CPU/RAM/Disk.

Is the future GPU-only or are we in dire need of a better way to use existing PC components from GPUs?

<comment><USER30> I don't understand. What does hardware design have to do with refactoring, usually a software term? The addition of the SSD is motivated by basic physics, which creates the need for computational units and storage units to be close together. (The alternative would be a non-von Neumann model without this compute-storage distinction, but that's not so easy.)

</comment></comment><comment><USER31> With UHD and higher monitors coming down the pipeline, something like this could be a game changer for even gaming graphics... right now, the GTX 1080 can't consistently hit 60fps in newer games at 4K. Something like this could improve this a bit. Even the technique in adding say 64-128GB of secondary storage soldered onto the graphics board could be significant.

<comment><USER32> nah, storage is not a problem with gaming these days!

Wait for the Vega cards with 8GB of HBM2 — that will kick ass.</comment></comment>


Go: The Good, the Bad and the Ugly - <AUTHOR> https://bluxte.net/musings/2018/04/10/go-good-bad-ugly/ <comment><USER2> I don't think it's fair to say they ignored advances in modern programming languages. There are opinionated reasons for the omission of generics and they do make sense in the overall architecture of the language. At the end of the day it's about trade offs and ultimately my opinion is that, having written a lot of both C# and Go, I can see the pros and cons of feature sets. Its about choice of tool for the solution in mind. I'm happy with that.

<comment><USER3> Absolutely! The "advances" were design decisions that go chose not to use. The people who designed golang are not newbies. They didn't ignore anything, nor were they ignorant of other languages. They had good reasons for choosing to go another way that makes sense for their language.

The end result is, in my humble opinion, a very stable language that is very high performance, and is highly maintainable. It's not perfect. It's not great for every use. Java does some things better. C does some things better, etc... It just fills a niche that was unfilled in an opinionated manor.

<comment><USER4> I think one thing that people get caught up in with Go as well is... well it's stupid easy to learn and work with.

I work for a giant enterprise company and the range of programming talent that we have is incredible. I know some people that couldn't code there way out of fizbuzz. Unfortunately, getting these folks onboard to learn the functional abstractions doesn't always sell (especially to the biz folks).

One of Go's biggest strengths is that anyone can pick up the language and be somewhat productive in it after a week.

My 2 cents in the bottomless well of programming language opinions.

<comment><USER5> > One of Go's biggest strengths is that anyone can pick up the language and be > somewhat productive in it after a week.

And then what? They find themselves duplicating the same code again and again because Go doesn't provide good abstractions to reuse code. Or that they write a ton of code to do what could be achieved in a few lines in a reasonable language.

You learn the language in a week because there is not a lot to learn. Shell scripting is simple to learn as well, but nobody is building anything beyond short scripts using it.

An ideal language should allow the user to be a productive after a short time, but should have have enough power for advanced users as well.

One of the things I hate the most about Go is that source code generation is considered an acceptable solution to many problems. Perhaps I should go back to C — the preprocessor can be used to generate code as well as anything. In fact, the predecessor to C++ was a preprocessor used to generate C code that simulated C++ like behaviour.

<comment><USER6> >They find themselves duplicating the same code again and again because Go doesn't provide good abstractions to reuse code. Or that they write a ton of code to do what could be achieved in a few lines in a reasonable language.

This.

>You learn the language in a week because there is not a lot to learn.

Exactly. For example, Brainfuck is even simpler and easier than go. It also produces even worse, unmaintainable, horrible code.

</comment></comment></comment></comment></comment><comment><USER7> Opinions on programming languages are like arseholes in that everyone has one. So I'm far less interested in hearing people intellectualise over what they perceive to be good or bad qualities of a particular language (otherwise known as arguing personal opinion as irrefutable fact) and far more interested in seeing what what cool projects people can make. After all, many of us managed to write some pretty awesome stuff in BASIC back in the 70s and 80s so there's really no excuse these days given the tooling and hardware we now have available.

<comment><USER8> So the fact that Go provides no solid dependency management solution is "personal opinion"?

If everyone followed this approach, we would never have ended up with amazing languages like Rust. Why try to improve C++ if you can build cool stuff with it, right?

<comment><USER9> What do you mean by "no solid dependency management"? Do you mean out of the box? This used to be true, but with glide and dep ([https://github.com/golang/dep](https://github.com/golang/dep)) it seems to. It is not npm or bundler - but progressing.

<comment><USER3> Yes, go decided to wait to let the various competing systems duke it out in much the same way that node.js left it out for a while.

I use git as my dependency management. I pull a specific version of a golang dependency and put it into my private git repository. Then i don't have to worry about someone's github getting hacked, repositories getting deleted, etc...

Those problems have all happened with npm and github in the node ecosystem. Go solves these problems by allowing you to decide on how to manage your dependencies.

<comment><USER10> This is no longer true. The core team proposed vgo a few weeks ago, after the majority of the community solidified around godep.

</comment></comment></comment></comment></comment><comment><USER11> > The standard JSON encoder/decoder doesn't allow providing a naming strategy > to automate the conversion

This is dangerous. You should be tagging all your fields even if the name matches exactly because, especially if inconsistently applied, someone might not realize that they are changing public schema with a refactor. If tags are completely missing in your codebase, you have to research every single type to determine if it gets serialized to JSON somewhere (good luck).

Avoiding magic is a feature.

<comment><USER12> Speaking of magic, json tags are weird stringy magic only used at runtime via reflection.

If I have a struct with the tag `josn:"foo"` instead of "json", I won't get an error, it'll just silently blow up.

If I add a new field, I have to manually add the tag too.

You know what's both less magic and less fragile? The rust equivalent.

In rust, I write '#[serde(rename_all = "camelCase")]' above a struct. If I typo, it won't compile. If I add new members to the struct, they'll work without me having to remember some boilerplate.

If I have one that needs an exception, I can put '#[serde(rename = "foo")]' above just that one. It also won't compile if I typo.

This is the alternative to what go has; compile-time safety, language-features that let a library provide such naming strategies, etc. It's less magic since it doesn't rely on these weird conventionally named tag things that are only sorta part of the language.

I suspect what the author meant by naming strategy was something like that. Your argument that the author is adverse to being explicit is a strawman; the author appears to be asking for a struct-wide way to be explicit.

<comment><USER13> > Speaking of magic, json tags are weird stringy magic only used at runtime > via reflection.

Annotations are used at run-time via reflections. JSON marshaling is a common use for annotations.

> If I have a struct with the tag `josn:"foo"` instead of "json", I won't get > an error, it'll just silently blow up.

well it won't blow up, it won't function as intended - much like a logical error. A linter, like the one that comes with VSCode will catch this error for you.

Annotations don't need to conform to any format and are not compile time errors. I am unsure how this could change while maintaining the Go1 guarantee. Perhaps this could be an area of improvement going forward - having typed annotations.

> If I add a new field, I have to manually add the tag too.

It will work in go too. If you want it to deviate from the naming of your struct field, you would need to describe the map. It's like complaining that when you add a field to your database, you need to add it to your code too. Sure it's not as powerful as Rust, but that's the point.

> In rust, I write '#[serde(rename_all = "camelCase")]' above a struct. If I > typo, it won't compile. If I add new members to the struct, they'll work > without me having to remember some boilerplate.

That's handy, but incompatible with Go 1. It is worth noting that Go and Rust are different. Rust is more focused on power, while Go has more of a focus on simplicity.

<comment><USER14> > Go has more of a focus on simplicity.

But specifically on simplicity of implementation. Which often means pushing the complexity onto the developer.

This line from the article is a pretty good summary of Go in general:

> It looks to me a like a big flaw in the language design to make its > implementation easier.

<comment><USER13> > But specifically on simplicity of implementation

I'd suggest a simple language requires a simpler implementation.

> It wasn't enough to just add features to existing programming languages, > because sometimes you can get more in the long run by taking things away. > They wanted to start from scratch and rethink everything. ... [But they did > not want] to deviate too much from what developers already knew because they > wanted to avoid alienating Go's target audience.[1]

Sometimes for simple problems a simple tool is the best fit.

[1][https://arstechnica.com/information-technology/2009/11/go- ne...](https://arstechnica.com/information-technology/2009/11/go-new-open- source-programming-language-from-google/) (via wiki)

</comment></comment></comment></comment></comment><comment><USER15> Buffering channels doesn't avoid deadlocks. As I understand it: buffering is a performance feature; if your code isn't correct without buffered channels, it isn't correct.

<comment><USER16> Not true. Buffered channels are able to express semantics impossible to express with unbuffered channels. E.g. a counting semaphore. The most common buffered channel buffer size is one, and the code would not be correct with either zero, or more than one. Using buffered channels in Go for their semantics instead of their performance is a very common idiom in Go. Much more common than adding buffering to channels as an optimization.

<comment><USER17> Fair enough. But it is important for people to realize that buffered channels aren't "async" channels; they're async until they fill up, at which point they resume blocking until there is a slot available. If you have some sort of channel network setup that is deadlocking with unbuffered channels and you "fix" it by adding some buffering in, unless you've got a very solid analysis as to why that buffering is correct, you haven't fixed it, you've just delayed the problem until load is higher.

It's in many ways academic anyhow. Most of the tricks I've seen for buffered channels are better done some other way, and in practice I almost always use unbuffered channels. Most of the time that someone thinks they want a buffered channel because of performance issues, they're actually exactly wrong and backwards... if there is some sort of mismatch between the speed of the consumers and producers you generally _want_ the coupling introduced by unbuffered channels, even if it is counterintuitive.

<comment><USER16> Yes, buffered channels should almost never be used for performance reasons.

Buffered channels should be used for their semantics, but in general unbuffered channels are preferred to buffered channels if possible because buffered channels cause combinatorial explosion of state, and are hard to reason about accurately.

</comment></comment></comment></comment><comment><USER18> > Up to recently there wasn't really an alternative in the space that Go > occupies, which is developing efficient native executables without incurring > the pain of C or C++.

That's just plain not true. There are so many languages that compile to machine code. So, so many.

<comment><USER19> Can you list some of these ?

<comment><AUTHOR> Additionally, OCaml, SML, Free Pascal, Delphi, Oberon, Oberon-2, Oberon-07, Active Oberon, Component Pascal, Basic, Common Lisp, Scheme, Java (yes all commercial JDKs do support it and on Android 5+), Clipper, Modula-2, Modula-2+, Modula-3, Dart 2.0, Swift, MLton.

It just happened that with widespread adoption of C and C++, many devs lost sight of alternatives.

<comment><USER20> You are ignoring Ada. In fact most problems with the Go languages are solved in Ada(tasks vs goroutines and channels, generics vs interface {}, synchronized data structures, variants type vs runtime plumbing to create unions...).

<comment><AUTHOR> No I am not, remark the _Additionally_ at the beginning of the setence and eesmith's comment already mentioning Ada with the same time as mine.

Ada is one of my favourite languages.

</comment></comment></comment></comment></comment><comment><USER21> I agree with this article to a surprising degree.

Generally i find that people complain about other things that i don't care about but this article was spot on when it comes to my believes.

</comment><comment><USER22> I thought this was a superlative article, that mentions many gotchas that I haven't seen collected into one place in this way.

I strongly recommend it.

</comment><comment><USER23> One of the changes no one seems to be talking about is in leadership. Rob, Robert, and Ken would agree on a feature going into Go before it did. Now Russ Cox is in sole control of the leadership. This is happening at a point when work such as Go 2 and vgo are happening.

<comment><USER24> > Now Russ Cox is in sole control of the leadership.

What makes you think that? As far as I can see, Rob, Ian, Brad, Andrew and many others are still in the decision loop.

</comment></comment><comment><USER25> From the horses mouth (Rob Pike) on why they chose to do what they did in Go.

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

</comment><comment><USER26> Just another guy speaking subjectively of something he barely know.

<comment><USER3> "barely know" isn't the case here. The guy seems to have a solid understanding. I certainly don't agree with his opinion on golang, and golang is still a fantastic choice for many of my uses.

<comment><USER27> Yep. I don't agree with his opinion, but he probably doesn't agree with mine about Rust: I'd rather gouge my eyes out than use that shit for anything other than a C/C++ replacement.</comment></comment></comment>


Broken Browsers Part One: The Back Button - <AUTHOR> http://blog.dreamhost.com/2009/05/13/broken-browsers-part-one/

<comment><USER2> A lot of problems are actually really simple if you "just" do caching properly. But, you know what? In general, _caching is really hard to do properly._ I think the problems with the back button stem from ambiguity in what back actually means. Does it revert a form transaction? Does it restore the cached value of the previous page? Does it go back to the previous URL, updating the content? Since the web uses a stateless protocol, it's unclear to what extent the cache is still valid.

(Also: Does anybody else find articles with large, semi-relevant images between nearly every paragraph to be incredibly irritating?)

<comment><USER3> I think the description provided in the article is pretty unambiguous. Perhaps other people might want different behaviours but what was described is the article is exactly what I want.

I don't care if the cache is valid. I don't care if the webmaster thinks the page needs to be updated every 10 seconds. All I want is the previous page exactly as it was when I last viewed it. It's my browser and it should do what I want. If the webmaster is relying on browser behaviour to ensure I don't resubmit a form then frankly they are asking for trouble.

<comment><USER4> Agreed.

And I think his observation on back vs. browser tabs is very insightful. When browsing links, as on HN, I always open a new link in a new tab. And I think the reason is exactly what he says: I don't trust the back button to get me back to the right place quickly. Killing a tab _does_ do that, and so I use tabs.

</comment></comment></comment><comment><USER5> The web browser has very little to do with this problem; it is merely doing what the website has told it to do (or not to do).

I run a small forum where clicking back and forth between forms without losing what you've typed is a very important feature. It works _exactly_ the way this author wants in _all_ browsers because the headers are set correctly.

Similarly, I also work on a big web application where clicking the back button and getting stale information is bad. Again, the website sets the proper headers and the information is refreshed (if appropriate) or left alone (if appropriate).

This is not a browser issue. The differences are likely caused by how different browsers implement (or don't implement) the standard.

<comment><USER6> Exactly.

A lot of so called "browser problems" are actually website problems.

And who's the genius that decided accepting malformed html was a good idea? If the first browsers gave an error (with line numbers and explanations) instead of trying to render incorrect html people would just go back and fix it.

<comment><USER7> I've taught a lot of people the basics of HTML. Always started the same: open a text file, type in "Hello World", save as .html, open in browser, see Hello World. Woohoo, instant rush, this stuff isn't so complex after all. Don't want to see this:

        Error at line 1, DOCTYPE expected

<comment><USER8> Your argument is that you've started teaching a lot of people HTML by showing them something that has nothing to do with HTML, clap clap clap clap clap clap clap...

<comment><USER7> Ease of adoption has a lot to do with HTML.

</comment></comment></comment></comment></comment><comment><USER9> Yeah, this has annoyed me for a long time. I believe Opera comes closest to this ideal. Actually, it might even meet all of the criteria already. It's a shame I can't use it.

Edit: I think the only _complete_ answer going forward is to treat it like suspending a machine. An open web page today is a running application with state. It would have to be frozen when you go to another page (so that it doesn't do stuff while you're gone), and resumed when you click the back button.

<comment><USER10> In some ways, it _would_ be suspending a machine: if a textbox were really a <canvas> controlled by Javascript, you'd have to suspend the Javascript VM state in order to still have the text upon going back.

<comment><USER9> Yes, exactly, assuming you're using a JS VM. But I'm saying you'd have to preserve the JS state anyway, because anything on the page could depend on it.

<comment><USER11> Not just JS state, either. What if I have a flash movie running? When you middle-click a link on a YouTube video, the video keeps playing. You probably don't want pages in your history to be downloading data, playing video, etc. Ideally, you'd probably want it to start playing right where you _left_ it when you click back.

What about if the thing in my history is a 1gb video file, and I type "gmail.com" in the address bar. I have Firefox set to remember my state between sessions, and I rarely close my gmail tab. So, that video file might stay in my back-button history for months. Is it reasonable to expect it to freeze the video player's state and keep hold of that forever, every time the browser starts up? That'd probably suck.

So, the author's suggestion isn't _quite_ perfect. It's close, but misses some important edge cases, and misses the point of why this is very hard to do right.

</comment></comment></comment></comment><comment><USER12> The author seems to be completely ignoring the fact that sometimes navigation SHOULD be one-way only.

If the link or button you've clicked on makes a change on the server that affects that page, it might not make sense to display the old page when you hit Back.

For example, you were on the edit page of a list of messages you want to send to another user on the site. You finished making changes and clicked "Send". Now you're on a page with a message saying, "Messages Sent!". What do you expect when you click the Back button?

1\. The edit page with the list of "pending" messages that have actually already been sent? 2\. The edit page with an empty list of messages or the original messages but now with a "sent" status?

I'd argue that the second option is far less confusing for a user, but that's not what you've suggested should happen.

And what happens if you click Send again? In the first case, you could send the same messages again, or maybe the server will reply with, "I don't know what you're talking about - those messages are already sent". There's no way for a user to know!

Caching is all good and well, but sometimes you really don't want a page to be cached. That's why there are headers for caching...

</comment><comment><USER13> As I hadn't ever really noticed this problem, I decided to see what would happen if I hit the back button in firefox after disabling my wireless adapter. After reading the article, I was quite surprised that it went back to HN perfectly. I also tested it with a longer back/forward history. In one attempt, I was able to back/forward through seven pages(that's all that I had been to in that tab at the time) without having internet access. Is there some subset of web sites for which this wouldn't work properly, as the author seems to be saying? Is the subset of scenarios in which the back button works only a small portion of typical scenarios?

<comment><USER14> I think if Firefox knows you're online, it will hit the server (sending e.g., If-Modified-Since), but if you go offline, it can tell and puts itself in offline mode, where it browses from the cache only. You can do the same experiment just by doing File - Work Offline.

<comment><USER13> Ah. Of course. I didn't consider that possibility. Now I've tried back/forward while connected to the internet and looking at Network Usage in Activity Monitor. I noticed that most of the times when I hit back/forward, there was no network traffic. I expect most of the traffic I did notice was either due to cache refreshes or due to other apps(probably mostly Thunderbird) I have running.

</comment></comment></comment><comment><USER15> Great, now my browser can use even _more_ memory! I suppose that could be mitigated if there was an option for the number of pages to hold open for the back button this way for each tab and window.

<comment><USER16> Yup - if I want to come back here, I'll use a new tab. If I don't, click through, and it's gone forever (not just 'hidden' in memory on my noticeably a slower machine).

What's that - I need to go back? My fault, I deal with it, I'm not paying someone $1000 to fix my stuff-ups.

</comment></comment><comment><USER17> This article singles out Safari on the iPhone, saying that it supports "tabs". Ironically, iPhone Safari's "tabs" behave exactly like this broken back button behavior -- I've noticed that often when I switch back to an old tab on my iphone, the page is often refetched (losing my position and any form content) because it was unloaded while I was browsing on another tab.

<comment><USER18> That's because iPhone has only 256 MB of RAM and no virtual memory.

<comment><USER18> Sorry, only 128 MB of RAM.

</comment></comment></comment><comment><USER19> I agree with what they've said and I wasn't going to comment but.. I clicked back to come back to Hacker News and it was _instant_. Like, not even 100ms to do a modification check or anything. Bam. It's there. Perhaps this is a Safari 4 beta thing?

<comment><USER20> No, Firefox is just the same. It's really a web server thing - there is such thing as 'caching', although OP seems to want to override such directives for all pages and have them all cached.

</comment></comment><comment><USER21> My main gripe with 'back' in Safari is the keyboard shortcuts. I can press the back button to go to the previous page, I cab press it with command to open it in a new tab, I can press backspace to go to the previous page, then why can't I press command backspace to open the previous page in a new tab?!

<comment><USER22> and on Macs, it costs $20 for drivers to use the back button on mice without vendor software.

</comment></comment><comment><USER23> I kinda dislike when people talk about things as they know something about it, while they know squat.

And get rid of the pictures, it's annoying.

<comment><USER18> Users don't need to know anything about how things really work to complain about usability problem. This is actually one of the most useful feedback developers can get.

</comment></comment><comment><USER24> _> I'd even say the reason tabbed browsing is so popular nowadays is actually because back and forward are broken!_

Oh, come on now. The reason tabbed browsing is so popular, is because you can work on several apps and websites at the same time.

Please make your points without making stuff up. It's annoying.

<comment><USER25> > The reason tabbed browsing is so popular, is because you can work on several > apps and websites at the same time.

Close, but not quite... Before tabs, you could still have multiple pages open, but they each took up a window. Tabs are simply a streamlining of the multi- window process. (And Chrome actually makes efforts to blur this distinction.)

</comment></comment><comment> brown9-2 This author has a really strange concept of what the "back button" should do - probably very different than what most developers (this crowd?) would think.

</comment><comment><USER26> I tried to hack Firefox to make this work correctly, with only limited success. Does anyone have the answer?

</comment><comment><USER27> "Let me demonstrate how the back and forward buttons should work. You can do this at home.

Click this link.

That should have opened in a new window (or tab) for you. And if you're back here now, you've switched windows or tabs, correct?"

Fail. It opened a new window with a page I had _never visited before_.

Of all the interpretations of the back button, I'm pretty sure that's not one of them.

<comment><USER28> I think you missed the point.

He said "click here (insert random link)" then knowing that we would all ctrl- tab back to the original article he was showing how backing up SHOULD work. I.E., bringing you to right where you were previously and doing it fast, without reloading the page.</comment></comment>


Let's Encrypt: Delivering SSL/TLS Everywhere - <AUTHOR> https://letsencrypt.org/

<comment><USER2> Comments moved to [https://news.ycombinator.com/item?id=8624160](https://news.ycombinator.com/item?id=8624160).

</comment><comment><USER3> Main discussion:

[https://news.ycombinator.com/item?id=8624160](https://news.ycombinator.com/item?id=8624160)

<comment><USER2> We tried to bury the current post as a dupe earlier but a typo got in the way. Done now, and threads merged.</comment></comment>


How the Affordable Care Act Drove Down Personal Bankruptcy - <AUTHOR> http://www.consumerreports.org/personal-bankruptcy/how-the-aca-drove-down-personal-bankruptcy/ <comment><USER2> This is an interesting story, but correlation is not causation. The article even admits this, stating "The truth is that it's not that easy to determine how many bankruptcies are caused by medical debt. Examining the paperwork doesn't always offer insight because debtors often juggle their indebtedness, for example, using a credit card to pay an outstanding medical bill while leaving other debts unpaid."

The bankruptcy code itself changed tremendously in 2005: [http://www.nolo.com/legal-encyclopedia/new-bankruptcy-law- ch...](http://www.nolo.com/legal-encyclopedia/new-bankruptcy-law- chapter-7-13-30040.html)

The housing market bubble mostly likely had a tremendous effect on bankruptcies as well: [https://en.wikipedia.org/wiki/United_States_housing_bubble](https://en.wikipedia.org/wiki/United_States_housing_bubble)

<comment><USER3> It has long been established that medical bills are the leading cause of bankruptcy and a significant cost burden, this is not new information.

[http://www.cnbc.com/id/100840148](http://www.cnbc.com/id/100840148)

[http://www.npr.org/sections/health- shots/2016/03/08/46889248...](http://www.npr.org/sections/health- shots/2016/03/08/468892489/medical-bills-still-take-a-big-toll-even-with- insurance)

If you're slightly interested in this topic, 2 milliseconds on Google will reveal a wealth of information.

<comment><USER4> It's also well known that study considered any bankruptcy with the slightest smidgen of medical debt to be a medical bankruptcy. Edit: or expenses. Over $1000 in expenses over 2 years and you're in that category.

</comment></comment></comment><comment><USER5> Amazing what you can infer if you look at a small enough window of time.

[http://www.tradingeconomics.com/united- states/bankruptcies](http://www.tradingeconomics.com/united- states/bankruptcies) (hit the "max" button)

Pretty clearly shows that the ACA came at the trailing end of the huge spike in bankruptcies from the real estate bubble bursting.

Correlation does not imply causation, however much one wants to sell a particular story. I expect better from consumer reports.

<comment><USER6> You've linked corporate bankruptcies there. Trends in personal bankruptcy do appear to be similar though.

[http://www.bankruptcyaction.com/USbankstats.htm](http://www.bankruptcyaction.com/USbankstats.htm)

</comment></comment><comment><USER7> I'm not sure I care for this topic on HN, but I believe one of the biggest problems in healthcare is the 'collaboration' among the hospitals and insurance companies on billing through the National Uniform Billing Committee[0], which ultimately results in people not knowing how much stuff costs (i.e. how much is an MRI). Without this knowledge, people can't make proper decisions because it's completely opaque.

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

</comment><comment><USER8> Or bankruptcies started coming back down again after the 2008 crash. Note that their graph/data start in 2009 - if you include years before that, this "result" no longer makes any sense.

</comment><comment> ruby-99 This seems like an interesting side effect, that I'm not sure policy makers had anticipated.

<comment><USER6> No, reducing medical bankruptcy was an explicit goal of expanding access to insurance.

Here's text from the legislation:

 _Half of all personal bankruptcies are caused in part by medical expenses. By significantly increasing health insurance coverage, the requirement, together with the other provisions of this Act, will improve financial security for families._

<comment><USER9> Which is just another hidden cost of not having universal healthcare -- when a hospital can't recover $250,000 in cancer treatment costs due to a bankrupty, they have to make it up somewhere else, so we end up paying $17 for a 10 cent ibuprofen pill in the hospital.

<comment><USER10> I doubt hospitals have cost accounting systems sophisticated enough for them to have any idea what the cancer treatment costs, just as Verizon doesn't know how much it costs for you to talk on the phone for fifteen minutes. Just because they billed $250,000 doesn't mean that's what it cost or even that they ever expected to actually receive $250,000.

Besides, apparently the goal of universal healthcare was to allow everybody to still receive the "$250,000" cancer treatment that they were getting before universal healthcare. This suggests that both with and without universal healthcare, the cancer treatment was being provided, so not having universal healthcare did not actually create another cost.

This isn't trivial nitpicking: the ACA was sold as something that would reduce costs. This was mostly false. The real aim of the ACA was to raid the pockets of more people. Before, there was a "$250,000 cancer treatment" and the insured paid for it with a "$17 ibuprofen." The true objective of the ACA was to keep the "$250,000 cancer treatment" but instead pay for it by raiding the pockets of young, healthy people who previously did not have insurance.

It turns out that raiding the pockets of young, healthy people is not so politically popular. They didn't have insurance for a reason--it's expensive! Their unemployment and student debt is already high, and they already have to pay for old people through Social Security and Medicare tax. Yet the ACA wanted to use those young people, who would pay premiums, use little health care, and thus help pay for more "$250,000 cancer treatments".

Now this political dishonesty is blowing back, as the insurance markets are under strain because the young healthies still aren't getting insurance to help pay for the cancer treatments that others get.

<comment><USER11> I don't think your raiding pockets of kids goes with reality. Why then did ACA let kids stay on parents insurance to 26 even if married? Millions of kids got free insurance by hopping on their parents plan. Millions of kids got better medical treatment for no money out of their pocket.

ACA isn't perfect but it's way better than we had before.

</comment></comment></comment></comment></comment><comment><USER12> Does everyone here understand that the ACA much promoted "twenty-seven million people now have insurance" is a complete farce? The number keeps expanding, of course, and it is a tragedy of almost unimaginable proportions.

OK, with great claims one must offer solid evidence. No problem, I accept this responsibility. Thankfully this is a rather easy task.

The great majority of these 27 million people are on what's known as Medicaid.

Is Medicaid health insurance?

No, it is not. Medicaid is a loan.

What?

Medicaid is a loan from the government. It is, if one wishes to interpret it this way, no different from taking out a home equity line of credit.

In other words, you must repay what you spent.

Yes, care you receive under Medicaid must --BY LAW-- be repaid. And, when your lender is the government the realities of dealing with the worst possible kind of loan shark --one with overwhelming power-- can and do easily surface.

Medicaid enrollment as of 2016 reached over 70 million people. Here's the requisite chart:

[https://www.statista.com/statistics/245347/total-medicaid- en...](https://www.statista.com/statistics/245347/total-medicaid-enrollment- since-1966/)

Every single one of these people has, effectively, entered into a promissory note with the government. They DO NOT have health insurance, they have a loan.

And here's where it gets ugly: The State, again, by law, is obligated to seek repayment for services offered and can --and does-- attach your property in the process of doing so.

Medicaid is a program that has convinced people they have medical insurance when, in reality, they have a loan. And this loan can and does cost them their estate as the State automatically becomes the first lien holder once you are on Medicaid.

Please don't take my word for it. Here it is from the horse's mouth:

[https://www.medicaid.gov/medicaid/eligibility/estate- recover...](https://www.medicaid.gov/medicaid/eligibility/estate- recovery/index.html)

Here's another source with a revelation that should terrify anyone:

"if the property is sold while the Medicaid beneficiary is living, not only will the beneficiary cease to be eligible for Medicaid due to the cash from the sale, but the beneficiary would have to satisfy the lien by paying back the state for its coverage of care to date"

They should have added "refinanced" to that statement.

[http://www.elderlawanswers.com/medicaids-power-to-recoup- ben...](http://www.elderlawanswers.com/medicaids-power-to-recoup-benefits- paid-estate-recovery-and-liens-12018)

Medi-Cal has similar provisions:

[http://www.dhcs.ca.gov/services/Pages/TPLRD_ER_cont.aspx](http://www.dhcs.ca.gov/services/Pages/TPLRD_ER_cont.aspx)

Another reputable source:

[http://www.nolo.com/legal-encyclopedia/how-medicaid- recovers...](http://www.nolo.com/legal-encyclopedia/how-medicaid-recovers-the- cost-long-term-care-from-your-estate-after-you-die.html)

You might have to pay your parent's Medicaid bill:

[https://www.agingcare.com/articles/medicaid-repayment-of- nur...](https://www.agingcare.com/articles/medicaid-repayment-of-nursing-home- estate-recovery-150497.htm)

More detail from HHS:

[https://aspe.hhs.gov/basic-report/medicaid-estate- recovery](https://aspe.hhs.gov/basic-report/medicaid-estate-recovery)

[https://aspe.hhs.gov/basic-report/medicaid-liens](https://aspe.hhs.gov/basic- report/medicaid-liens)

To be clear, estate recovery was not imposed by ACA. No, this has existed since the very start of the program.

What ACA has done is to systematically shove tens of millions of people into Medicaid for, dare I say, political gain. Nothing less than putting lipstick on a pig.

ACA membership numbers look good to the uninformed because tens of millions of people have been hoisted onto Medicaid. If left unchecked these numbers could easily reach into the hundred million plus range.

This is a tragedy. None of these people fully understand that they do not, in fact, have health insurance at all. They are signing on to a loan, with the loan shark being the government.

Think about this for a moment: This is probably the largest grab of personal property from any government anywhere in the world in the history of humanity. And all of this property is being grabbed from the poor and lower middle class.

Soon one hundred million of our citizens will owe the government everything they possess in order to repay their medical bills.

This is theft sold as medical insurance. When you have real insurance of any kind the insurance company doesn't come after your estate to recover their costs. When you have real insurance the insurance company doesn't take a chunk out of the sale of your home while you are alive and, at the same time, kick you out of your insurance policy.

Medicaid is NOT insurance, it's a dystopian reality nobody is talking about.

I think this is absolutely revolting.

Why aren't the idiots burning down business districts during their "demonstrations" up in arms about this shit? Right, it requires critical thinking skills.

EDIT: I failed to add something very important here, which is what my position is on how this should work. I apologize for not making that clear.

Medicaid Estate Recovery should NOT be a part of the program.

It should NOT exist.

We should provide medical care to the needy without ANY recovery requirements whatsoever.

If someone needs a million dollars in medical care they should receive it.

They should not have to worry about being on the hook to repay it in any way.

That is what a decent and compassionate society does and how it behaves, not by sinking it's hooks into people who have no choice but to sign on the dotted line.

If this estate recovery business were done by a private insurance company they would be destroyed by both public opinion and brought-up on fraud charges. We should demand better from our government. We should demand that estate recovery be completely removed from Medicaid.

Hope that clarifies my position.

<comment><USER13> > Medicaid is a loan.

Um, ... no. Or, at least not in my case.

Our son was diagnosed with cancer at the age of three. Medicaid served as secondary insurance, and thankfully so, as the bills from the first month exceeded $300,000. This went on for nine months.

It's now been eight years since he passed, with no mention from any agency about recovery.

Besides, it seems you left a few things out of your diatribe. From the medicaid.gov link:

        > For individuals age 55 or older, ... recovery of payments
        > from the individual's estate for [specifically enumerated things,
        > which does not appear to include doctor visits].

Also:

        > States may not recover from the estate of a deceased Medicaid
        > enrollee who is survived by a spouse, child under age 21, or
        > blind or disabled child of any age. States are also required to
        > establish procedures for waiving estate recovery when recovery
        > would cause an undue hardship.

So, at best a fear-mongering half-truth. Maybe we can agree Medicaid is for people with no money. The government seems to have a procedure that attempts to collect money from an estate, in certain circumstances, _after a patient dies_ , if there really was money available.

<comment><USER14> The OP may be over the top and on the fear-mongering side of things, but there are some very difficult situations monetarily especially for elderly recipients. While there is some policy to not completely bankrupt surviving spouses, the reality of a long term care spouse utilizing medicaid is that the surviving spouse must reduce assets to below $2500 with few exceptions or shelters. That policy will almost guarantee that the surviving spouse if not a homeowner, will be strongly below the poverty line for the rest of their life. The primary cause of that scenario is the huge gap between enough money to be retired(50k-150k), and the amount of money required to be retired without assistance(350k-500k). Full time skilled care like a retirement home, can easily cost $7k a month on the low end, with averages around 28months.

The OP may be able to make a more widely accepted argument, by more empathetically communicating that medicaid is at best emergency support for crisis, and not a vehicle for long term or widespread medical care. He is correct that using Medicaid as a primary vehicle for ACA coverage expansion ensures a very large group of people will have huge negative motivations to exit poverty, even more so than were previously. I would guess that the OP has first hand experience with Medicaid policy completely eliminating a family member's entire life's monetary worth, which is a hard pill to swallow when someone has paid into Medicaid for decades.

[http://www.longtermcarelink.net/eldercare/nursing_home.htm](http://www.longtermcarelink.net/eldercare/nursing_home.htm) [https://www.ahcancal.org/ncal/facts/Pages/State- Data.aspx](https://www.ahcancal.org/ncal/facts/Pages/State-Data.aspx)

edit: typo medicaid

<comment><USER12> In the US it is extremely easy to rack-up hundreds of thousands of dollars in medical bills. A single operation can cost $200K. Be ill for an extended period of time and the idea of millions of dollars in medical care isn't out of the realm of the possible.

And so, imagine selling the family home to try to pay medical bills or provide more favorable circumstances only to get a knock on the door by the Medicaid estate recovery folks who have first dibs on the proceeds of the sale.

Not only that, the sale also means the patient is now kicked off Medicaid because they have money.

I'll repeat it because the shift in perspective is important:

If a private insurance company had exactly the same clauses in their policies people would be up in arms, they would be brought up on charges and some of their management would land in jail. Yet we are willing to accept this from our government? And enroll people by the tens of millions?

This should not be. We should provide care to the needy without any such preconditions. Our government should not sink hooks into them at all.

Readers seem to be confusing passion for fear mongering. This is real and, as far as I am concerned, it is seriously immoral. We should not be in the business of doing this to our own citizens. This isn't health insurance. Not sure what it is, but I know what it is not.

This is the point that is being missed in my exposure of this issue: This is an abomination. The US should not have a program fraudulently presented as insurance that takes people's property at all. Even if the net effect was that this only affected ten people, it would be wrong.

We should take care of those who need care and not set hooks into them or their estate.</comment></comment></comment></comment>


A novel use for unpaired left shoes - <AUTHOR> http://mindyourdecisions.com/blog/2010/08/09/the-game-theory-of-perfect-complements/

<comment><USER2> Wow, what a terrible article.

 _Can you think of a use for an unpaired left shoe?_

Sure, if the matching right shoes are also available. That's the whole point of the anecdote, which is so absurd as to most certainly be an Urban Legend.

 _My friend's father ordered a huge shipment of sneakers from a U.S. company with the stipulation that all the left-footed shoes be packaged separately from all the right-footed shoes. The left-footed shoes were to be shipped to Bombay, and 60 days later the right-footed shoes were to be shipped to Calcutta._

Step 1: I buy X thousand shoes for a price of Y$/pair, and probably pay a little over the regular market price, because I want special handling, and double postage.

 _The shipment sent to Bombay went unclaimed, so after 30 days it was auctioned off_

Step 2: I fail to claim the shoes when they arrive. I now am out the money I paid for the shoes, and have no shoes.

 _Because no one could think of a use for a huge shipment of left-footed sneakers, no one bid against my friend's father and he picked up these shoes for next to nothing._

Step 3: I now pay for these shoes _again_.

Step 4: Profit!

Naturally, I can try to get out of paying for the shoes in step 1, but then our story would simply be one of fraud.

 _The strategy is ingenious, and it reminds me that a savvy businessperson is someone that can see value where others see none._

Quite the opposite, really.

<comment><USER3> You missed it.

The profit comes from the fact that the money paid in step 3 is less than what would have been paid in import duties had he collected the shoes in step 2. And then, having successfully imported shoes at below the cost that other entrepreneurs were capable of getting, he was able to resell those shoes at below market rates and still have a higher profit margin.

If he paid more for special handling, that would have been covered. If the shipments were big enough, then postage is based on some combination of weight and volume. This is unchanged.

<comment><USER2> We're still back to "fraud", then, which is not a particularly creative (or viable) strategy in my book.

<comment><USER4> OK, where's the "fraud", or are you just harrumphing at having missed the point of the article?

<comment><USER5> Failing to pay the correct import taxes. Consider someone who reports importing used furniture vs antiques.

<comment><USER6> 'Gaming the system' or 'fraud', doesn't matter what you call it. This is what causes the vicious cycle, you avoid paying the taxes, the taxes increase to compensate, repeat.

<comment><USER7> If they want the tax revenue to be more consistent, perhaps they should write the tax laws more carefully.

And high import tariffs are much more likely to be protectionist than to be legitimate revenue sources - raising the tax rates wouldn't be a sensible response for a protection tariff.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> This isn't "seeing value". It's cheating the system by bending the rules.

Ford does this today with the Transit: they install a cheap back seat in Europe, ship the cars to the States, and convert them back to cargo in a garage next to the docks, all to save on import duties. That even creates some jobs in order to game the system, and the tax Ford is getting around is stupid to begin with, but no one in their right mind can call this productivity or value.

</comment><comment><USER9> Amputees might appreciate unpaired shoes.

<comment><USER10> Can't say that I've ever seen an amputee with a peg let. But many of them would wear the other shoe on their prosthesis.

</comment></comment><comment><USER11> The left shoes were only valuable as an instrument for fraud. I'd argue that really isn't value at all, because fraud is theft, not profit. In fact, the left shoes (and the right ones) likely became a liability to the friend's father as he'd have probably been blacklisted from ordering from that supplier again.

<comment><USER12> Why should the supplier care? If I'm reading it right, he paid the supplier, but got out of paying the full customs fees.

<comment><USER11> OK, maybe I misread it. The way I read it, he got out of paying for the shoes by not collecting them - even as I write that down it doesn't make sense! - You're right.

</comment></comment></comment><comment><USER13> The article repeats an old canard about how Americans no longer manufacture things. In fact, American manufacturing has expanded a great deal since the 1950s and is doing very well. However, because of productivity improvements, manufacturing jobs have declined significantly even as manufacturing has expanded.

</comment><comment><USER14> Ok, so essentially all of us agree this is creepy fraud... But it seems like an interesting exercise. Monitron already posited value to amputees.. Can anyone else think of actually valuable uses?

<comment><USER7> I don't see anything even resembling fraud here. What do you believe constitutes fraud?

<comment><USER14> Sorry, my reading was that he ordered something he didn't pay for. Looks like the alternative (and presumably correct) interpretation is that he ordered something that he did pay for, and used a clever trick to avoid taxes. Still, I'm more interested in the spirit of the question the blog title made us all think we were getting an answer to!

<comment><USER7> Oh. Well in that case: container for loose change; planter for seedlings; eco- friendly building material; jello mold; ant farm; combination pencil case/eraser; cheese grater.</comment></comment></comment></comment>


Product Management For Hackers (My Startup Weekend slides) - <AUTHOR> http://www.thefailingpoint.com/2009/08/gettingstarted/product-management-for-hackers/

<comment><USER2> I wish there was a way I could get a video of this instead of just the slides. I get the feeling there was a lot more information put out that would be very interested to hear.

<comment><AUTHOR> I will hunt down the video if there is any and let you know.</comment></comment>


The Unsustainability Pattern - <AUTHOR> http://www.upbeat.it/2015/04/09/the-unsustainability-pattern/

<comment><USER2> So the author is claiming that it costs money to provide a service? No way.

Heroku is changing its pricing plans in an attempt to improve their business? No way.</comment>


5 Things that will Kill your Startup [in 2008] - <AUTHOR> http://startupearth.com/2007/11/22/5-things-that-will-kill-your-startup-in-2008/

<comment><USER2> re: Web 2.0 being out of style, perhaps some of the trendy things like gradients, etc. may have fallen out of fashion, but, IMO, simple interfaces will never fall out of fashion.

For the last ten years, I've programmed user interfaces for folks with high school educations to run complex chemical plants and refineries, and I've seen that an easy-to-understand interface has at least as much importance as the algorithms that underly the interface.

</comment><comment><USER3> "but you can learn from the backlash seen from YouTube and Facebook users who felt cheated when the sites built a loyal userbase, got bought out and suddenly the user experience drops in favour of advertising revenue."

I think ads are lame. Power users block them with AdBlock Plus, anyway, so if you cater to savvy users you'll get shit clickthrough rates and annoy everyone else.

Are people making $40-100k a year really too cheap to pay $9/month for something they use everyday?

<comment><USER4> yes, they are too cheap, especially when they can find something else for free. People nowadays think that they're always entitled to digital things for free for some reason.

<comment><USER5> People think they are entitled to continuity. They despise bad faith such as bait-and-switch. Therefore, start as you mean to go on.

</comment></comment></comment><comment><USER6> It seems to me that the 'emerging monopolies' wouldn't kill your startup, but be a good thing, as getting bought seems to be a worthwhile goal.

</comment><comment><USER7> Nice article. Found it refreshing and forwarding looking, without trying to be too futuristic.

</comment><comment><USER8> Don't use the dollar?

I'm not sure what he's getting at. Use a payment service and quote in whatever currency the use prefers. It's not like you have to do your own currency exchange or anything -- all that stuff can easily be handled.

Also the "there won't be a Web 3.0. Web 3.0 is a Web 2.0 meme" seems a little flip. The 2.0/3.0/4.0/etc meme is from software versioning, not Web 2.0. So I imagine whatever comes along big on the web next people will naturally call Web 3.0 -- for the same reason the next big wr will probably be called WWIII. That's just the way numbers work. Of course, "Web 3.0" may never catch on, but that's a different story.</comment>


Scientists at MIT create mathematical model to predict alloy characteristics - <AUTHOR> http://www.innovationnewsdaily.com/1546-mathematical-shortcut-create-new-metals.html

<comment><USER2> At the risk of being a downer, this isn't that interesting from a computer science perspective. What happened here is that standard computational methods were applied to test a novel theory of stability for nanocrystalline metals[1]. While this is cool and all for metallurgists[2], even by materials science standards the computation is old (we're pretty slow to pick up on this whole computer thing).

There's some (in my opinion) more interesting work going on at MIT[3] in ceramics, where machine learning is being used to predict new material properties. Unfortunately, the group hasn't gotten published in Science or Nature yet, so I don't have much to link to. However, ceramics both are more variable than metals and less well known (one of my professors liked to call it the 'Wild West' of materials), so the big results are likely to be more exciting when they do arrive.

\--

[1] All common metals are formed of arrays of tiny crystals, however the metals described here have much smaller crystals than usual (nanometers instead of microns). This strengthens the metals as the movement of crystal defects is the main source of weakness in metals. Defects can easily move within a single crystal, but not so much between them, so reducing the size of crystals significantly hampers defect movement and thus strengthens the metal. Unfortunately, crystals don't like being this small and so preventing them from growing is a serious concern and the focus of this research.

[2] The new theory is actually pretty exciting, and seem to expose significant flaws in the old theory. I don't understand it well enough to say much more though.

[3] <http://ceder.mit.edu/>

</comment><comment><USER3> That sounds big. I still remember the horrors from my two mandatory terms of material science.

"The school of 'ALCHMI' argues this is what gives the alloy property X, while the school 'HOCUS'says, its the sudden drop off at xx deg in the Iron-carbon phase diagram ...."

Maybe it wasn't that bad, but it never felt like a precise science to me, at least compared to the other subjects you take as Mechi, like Math, Dynamics or Controls.

The abstract (Thank you montecarl) only talks about "nanostructured metals" though. I wonder if this scales.

<comment><USER2> In defense of MatSE, you only took the course for non-majors (I assume). I assure you that it gets a lot more legit after that, much in the same way MechE gets more interesting once you move past statics.

To answer your question though, the model doesn't scale, but that's because the problem doesn't scale. We're talking about a bulk sample of metal made up of crystals that are, according to the old theory, too small to be stable. Once the crystals become larger, the old theory adequately describes their stability.

</comment></comment><comment><USER4> Link to abstract: <http://www.sciencemag.org/content/337/6097/951.abstract></comment>


A Clone of Chips Challenge in Haskell - <AUTHOR> https://github.com/egonSchiele/chips

<comment><AUTHOR> Hi HN! Author here. I made this game because I wanted to see what it was like to make video games with Haskell. It turned out to be a pretty good fit. If you are interested, here's an explanation of the code: [http://vimeo.com/109663514](http://vimeo.com/109663514)

You might also be interested in this framework if you want to make games of your own: [https://github.com/egonSchiele/actionkid](https://github.com/egonSchiele/actionkid)

<comment><USER2> This is extremely well done, thanks for taking the time to make a screencast.

</comment></comment><comment><USER3> I'm learning Haskell and I find this project very helpful and educating. There's one thing I'm wondering about, and that's the lack of (unit) tests. I'm coming from the Java world and I'm used to write unit and integration tests for most of the code I write. But I have noticed that in Haskell projects this is not so common.

Why is that? Is it a cultural thing, or is Haskell's strict type system and immutability so helpful that unit tests are not so necessary comparing to for instance Java?

<comment><USER4> You may have just looked at some poor projects. In fact, Haskell has a two really great testing frameworks:

HUnit, directly based on JUnit: [http://hackage.haskell.org/package/HUnit](http://hackage.haskell.org/package/HUnit)

Quickcheck, which uses randomized testing: [http://hackage.haskell.org/package/QuickCheck](http://hackage.haskell.org/package/QuickCheck)

HUnit will be very familiar to you, Quickcheck is definitely more interesting. You specify some invariants and the heuristic algorithm tries to come up with random inputs to break your function. It's potentially less accurate as good unit tests, but it's also a ton less work.

I can just say something like "This function takes an array of integers as input, and I expect an output array of the same size, where all numbers are even, and there are no duplicates" (in math-y form, of course), and quickcheck will try however man random inputs I specify to try to find a case that breaks that invariant.

Consider a well known Haskell library, attoparsec. It has extensive tests and benchmarks: [https://github.com/bos/attoparsec](https://github.com/bos/attoparsec)

That being said, there are those in the Haskell community who take Haskell's referential transparency and equational reasoning to a whole new level and don't write tests, but instead write _proofs_.

For an example, see the popular Pipes library: [https://github.com/Gabriel439/Haskell-Pipes- Library/blob/mas...](https://github.com/Gabriel439/Haskell-Pipes- Library/blob/master/laws.md)

<comment><USER5> In addition to the libraries mentioned above, there's also some very good testing _frameworks_ (which can run test suites composed of HUnit and Quickcheck tests), such as HSpec and tasty (and various extensions such as tasty-golden for golden tests and tasty-quickcheck for quickcheck tests). I've used these in various projects of mine; as with other languages, sometimes TDD is the right approach, sometimes you write a few tests afterwards to make sure everything works, and sometimes you can get away with no testing at all.

That said, I do feel that the type of testing I do in Haskell is often quite different from other languages. Due to the strict type system, some types of errors can be eliminated at compile time, and thus do not need to be tested for. Of course, as the parent pointed out, some people take this to a (very awesome) extreme, but even in a less rigorous form the static guarantees can eliminate many things that I would write unit tests for in other languages.

Finally, you may also be interested in SmallCheck, an alternative to QuickCheck. From its documentation:

> The big difference [between SmallCheck and QuickCheck] is that instead of > using a sample of randomly generated values, SmallCheck tests properties for > all the finitely many values up to some depth, progressively increasing the > depth used. For data values, depth means depth of construction. For > functional values, it is a measure combining the depth to which arguments > may be evaluated and the depth of possible results.

This means that SmallCheck will often find small and interesting counterexamples to the properties you wish to affirm. (As an aside, note that writing property-based tests is a skill, just like writing good unit tests.)

tl;dr: Testing can sometimes be less necessary, but is certainly not unnecessary, and there are some very high quality and well-documented libraries for testing in Haskell.

</comment></comment></comment><comment><USER6> Honestly, is functional programming really better for this type of game? I find the structure and nature of the game more fitting to an object oriented approach. IMO Chips, blocks, player character all tend to be better described as mutable objects, because that's what they actually are from the users perspective....

<comment><USER7> In addition to the other fine replies: As a game gets bigger and more complicated, you'll often find that the direct mutable OO approach becomes an antipattern at scale.

Do you have anything that you want to do, but discover halfway through for some reason it's not legal? Good luck undoing what was half done. Of course you might think the simple answer is "don't do that", but as the game gets bigger and responsibilities get spread out between all the objects it becomes increasingly easy for some action to become possible that requires a lot of checking, and if things are just willy-nilly mutating themselves the odds of you encountering this sort of problem skyrocket. And that's just one example... games by their nature resist the sort of decomposition that most "real" software can have done on it, because as soon as you tell a designer that X can't talk to Y, by golly they'll start thinking about how awesome it would be if X _was_ talking to Y. You don't get a pretty tree of relationships with occasional crosstalk, you get a nasty snarl of communication patterns, irreducibly.

Many games end up functional under the hood anyhow, with a clearly-defined loop:

        1. Ask all the objects in the world what they "want" to do.
        2. Validate and resolve conflicts.
        3. Render the new world state.

One of OO's big problems in general is lack of control over the profound, often-overpowerful effects of mutation, and used in an undisciplined manner, games often turn into a worst-case-scenario for OO. And most of using them in a "disciplined" manner turns out to be using "FP" techniques to keep the complexity under control.

Of course nothing stops you from doing that in OO, with discipline and care unenforced by the compiler. But what it does mean is that suddenly the "mismatch" that you're referring to disappears, and one starts wondering whether perhaps FP is the better match for games and OO the accident of history.

<comment><USER8> I might also point out that OO and FP are not strictly at odds. You can use object libraries in FP languages to encapsulate the state and logic but avoid the mutation of the state.

So if the two issues are orthogonal then you're both right. :-)

<comment><USER6> Good point. So if I use OO while maintaining immutability then am I doing functional programming, OO or both?

<comment><USER7> At the risk of going really philosophical, in the end words are just words, and your program is what it is. Given the vast, vast, _vast_ space of possible programs it should come as no surprise that little tiny English words are hardly up to the task of completely rigidly classifying them. _Especially_ programs, which are quite literally the most perverse mathematical constructs known to man, courtesy of the Church-Turing thesis.

</comment></comment></comment></comment></comment><comment><USER9> Aha! A bug! [http://i.imgur.com/2vNiRzn.gif](http://i.imgur.com/2vNiRzn.gif) (you can walk on ice if you have skates, but you can't collide with walls without being "repelled")

Also, I completely forgot about this wonderful game. Thanks for the trip on memory lane.

<comment><AUTHOR> Ouch! I'll have to fix that. In the meantime you can skip to the next level by pressing 'n'.

<comment><USER9> oh, there's no need to skip the level. you can escape the bump by pressing forward+left/right

</comment></comment></comment><comment><USER10> Chips was one of the first applications I ever used as a kid. It was Windows 3.1, and I distinctly remember knowing how to start `windows` from the DOS prompt.

</comment><comment><USER11> I gotta say that, after not having used it in about 4 years, I love looking at Haskell again.

One question: could CurrentTile.hs be DRYed up? [https://github.com/egonSchiele/chips/blob/master/src/Chips/C...](https://github.com/egonSchiele/chips/blob/master/src/Chips/CurrentTile.hs)

This repeating pattern seems ripe for DRYing:

        checkCurTile (Chip _) = do
          liftIO $ playSound (soundDir ++ "collect_chip.wav") False
          tileAt Current .= (Empty def)
        checkCurTile (Gate _) = do
          liftIO $ playSound (soundDir ++ "door.wav") False
          tileAt Current .= (Empty def)
        checkCurTile (KeyYellow _) = do
          yellowKeyCount += 1
          tileAt Current .= (Empty def)
        checkCurTile (KeyBlue _) = do
          blueKeyCount += 1
          tileAt Current .= (Empty def)
        [...]

<comment><USER12> Sorry for bad formatting and not compile checking the code, but this is an improvement imo:

        checkCurTile b = do
          case b of
           Chip -> liftIO $ playSound (soundDir ++ "collect_chip.wav") False
           Gate -> liftIO $ playSound (soundDir ++ "door.wav") False
           (KeyYellow _) -> yellowKeyCount += 1
           (KeyBlue _) -> blueKeyCount += 1
          tileAt Current .= (Empty def)</comment></comment>


PG and Silicon Valley vs. Ryan and the rest of the world POLL - <AUTHOR>

No more opinions. lets do numbers.Name one startup in the valley and its direct competitor outside the valley. Then pcik which is doing better. <comment><USER2> Let's do it this way, here's the top 5 web products I use:

1) Firefox 2) Gmail 3) WordPress 4) Craigslist 5) Delicious

I can't even fathom anything remotely touching those products made by a company that's outside of California. Or this state. Or this country. Silicon Valley wins.

Hell, I'll do 5 more:

6) Ebay 7) Twitter 8) Facebook 9) Upcoming.org 10) Flickr

</comment><comment><AUTHOR> 1.Twitter (inside valley) vs Jaiku (outside valley). Jaiku is the winner so far. 1.google docs (in) vs Zoho (out). google is a winner so far although i use Zoho</comment>


What's the difference between an advocate of open space office and an idiot? - <AUTHOR> http://geekingspree.com/mess/whats-the-difference-between-an-advocate-of-open-space-office-and-an-idiot-40

<comment><USER2> That's twice I've hit the flag button this week, I think that's a new record.

The debate isn't new, and this blog post doesn't say anything that hundreds/thousands of other blog posts haven't already discussed. HN itself has had its regular round-table on open-plan offices for eons now. The only difference here is that this blog post descends into ad hominem right in the subject line.

I've worked in a terrible open plan space, I've also worked in a remarkably productive one. I've seen some of the horrible ways it can fail, I've also seem some of the ways it can be great.

The debate is worth having, but not if it's "everyone who doesn't agree with me is a blithering idiot".

<comment><USER3> but have you ever worked in a terrible private office set up?

<comment><USER2> Yes. It was depressing, and having to get up off your ass to discuss even the slightest triviality was annoying to no end.

I like my current open setup. I'm not a fan of _all_ open setups, but there are advantages above and beyond the oft-quoted one of cost. There are also tools that seek to replicate the advantages of being physically next to the person you need to communicate with, but in my experience they are pale facsimiles of the real thing.

Screen sharing, video conferencing, IM, shared whiteboarding (this last one is by far the worst, not a single product I've ever seen in this space has been anything but terrible). None of these are "good enough" replicas of sitting next to someone.

When I worked in a private office setup even just wrangling people for scheduled meetings was a pain in the ass. So even actually trying to talk to some people face to face was terrible - the culture developed a tolerance for lateness. Someone's in the zone and making code sing, they can be 90 seconds late to the meeting. Then everyone starts being 90 seconds late. Then 2 minutes. Then 3... Before you know it the first 10 minutes of every scheduled meeting was a complete writeoff.

But that's a cultural problem that can be fixed - as are nearly all problems with open plan.

I'm not an open-plan zealot, I've seen how it can fail terribly. I've also seen how it can be great for my productivity and the productivity of my team. I object to being called an idiot because I've had good experiences with open plan spaces, and the author has not.

</comment></comment></comment><comment><USER3> My only guess would be cost. Any idea how much are the savings of open space office vs. private office?

<comment><USER4> There's cost, and there's availability. You will literally have a very hard time finding offices-based real estate in the silicon valley for any reasonable size organization. Landlords don't build it.

Let's say offices take 150 sqft per employee, and open plans take 75 sqft per employee. At $8 per sqft, this is an additional $600 per employee. Money out is easy to measure. Productivity and disruption (as well as serendipity) is close to impossible to measure accurately.</comment></comment>


Quora now transparently logs you in if your Google account is connected - <AUTHOR> https://www.quora.com/search?q=hacker%20news&share=1 <comment><USER2> How is that even allowed/possible?

Quora is the one site I actively choose never to log in to.

</comment><comment><USER3> Quora is full of old and some dangerous answers.

For example if you search for dying contacts the top answer states that is is safe to do with food coloring which it is absolutely not. Do not ever die contacts yourself!

The place reminds of me expert exchange just without any of the windows server questions...

At least on stack exchange old or bad answers get pushed down by high up votes of other answers even if they are not marked as the correct answer.

</comment><comment><USER4> Calling that transparency is selfish to the business wants; the only context in which that word could be used without qualifying and asterisks. User transparency is choice - even the choice to do something that's a little less than optimal from the business perspective. Don't abuse language more than it already is, everywhere else. "Everybody does it" to redefine words doesn't make it right.

<comment><AUTHOR> Just to be clear, it's not a term Quora or Google are using to give it a positive spin. I added it to convey the idea of "without the user being aware". English isn't my first language, so maybe it wasn't the best word choice.

</comment></comment><comment> m-p-3 Looks like I'll put Quora in its own Firefox container then.

[https://addons.mozilla.org/firefox/addon/multi-account- conta...](https://addons.mozilla.org/firefox/addon/multi-account-containers/)

</comment><comment><USER5> On signup through gamil, quora doesn't ask for a confirmation while stackoverflow do.

</comment><comment><USER6> Seems like a good idea... The whole idea of having to log into a computer, then into _every single website_ just seems stupid.

SSO for the whole internet would be _sweet_. I don't care at this point if it's run by one company - federated login systems have failed to work for two decades, it's time to give up.

<comment><USER7> Good idea to automatically give your email, name, photo and other details to _every_ site your visit, really? Of course the login should be a voluntary action by the user.

Btw luckily what reported doesn't work for me, the site ask to login. It should not be even possibile, at least without exploting a bug/vulnerability.

<comment><AUTHOR> Hmm, maybe it's an A/B test.

> It should not be even possibile, at least without exploting a > bug/vulnerability.

This is actually very much possible. I just learned that it's implemented using Google One Tap for Web. [1] That's the web version of One Tap, which lets Android app developers add single-click login using a Google account.

Apparently one of the features of the SDK is automatic sign-in [2], without any user interaction, which Quora seems to be using. In contrast, LinkedIn and Medium also use the same SDK but only suggest logging in with Google in a pop- up. [3]

Edit:

There's a way to turn it off. Disable "Google Account sign-in prompts" setting in Google account permissions [4].

[1]: [https://developers.google.com/identity/one- tap/web](https://developers.google.com/identity/one-tap/web)

[2]: [https://developers.google.com/identity/one- tap/web/guides/au...](https://developers.google.com/identity/one- tap/web/guides/automatic-sign-in-sign-out#sign-in-users-automatically)

[3]: [https://i.imgur.com/ntmxSe2.png](https://i.imgur.com/ntmxSe2.png)

[4]: [https://myaccount.google.com/permissions?pli=1](https://myaccount.google.com/permissions?pli=1)</comment></comment></comment>


Ask HN: What expenses do banks incur by accepting ACH transfers? - <AUTHOR> I can see that my bank charges $25 to accept 10 ACH transfers per month.
Stripe charges between $5 and $25 (maximum) per ACH transaction [1].
I'm curious, what costs do banks have to process a transaction, and what would determine their price?
This example is facetious, but Venmo is free and they deduct directly from my bank account too.
Is it just the costs of keeping their servers running, or it is some transactional expense, or liability, etc.?
[1] https://support.stripe.com/questions/pricing-of-payment-methods-in-the-us <comment><USER2> See: [https://www.nacha.org/system/files/resources/Network- Admin-F...](https://www.nacha.org/system/files/resources/Network-Admin- Fees-2018.pdf)

Essentially $0.000185 per transaction ($18.50 per 100,000 transactions) + the cost of maintaining their own infrastructure.</comment>


WebTask: run code with an HTTP call. No provisioning - <AUTHOR> http://webtask.io/

<comment><USER2> This is awesome. The sandboxing architecture (clusters, ELB, controllers, Docker, etc) is surprisingly similar to the one I implemented for [http://repl.it](http://repl.it) It's made simpler since I have network access disabled on the docker containers, but check it out, it can run Node as well as host other languages: [http://repl.it/languages/nodejs](http://repl.it/languages/nodejs)

</comment><comment><USER3> Very cool. Far easier to use than AWS Lambda.

Not clear from the homepage. Is this a paid service? Open-source project?

<comment><USER4> We are experimenting with the concept before productizing. Part of it is open source if you want to play on your own box: [https://github.com/auth0/webtask- runner](https://github.com/auth0/webtask-runner)

</comment></comment><comment><USER5> Wow. It's amazing watching the industry converge on this sort of thing. We architected similar designs during the six month pre-planning period at my current startup.

</comment><comment><USER6> Pretty cool. Reminds me of webscript.io</comment>


Google AdSense Leak (2014) - <AUTHOR> http://pastebin.com/qh6Tta3h <comment><USER2> I might be missing something here. The business model of AdSense is pretty straight forward. Google makes money on AdSense via margin on inventory sold at a CPM rate, or arbitraging those impressions into a higher eCPM by shouldering some risk and selling it on a click basis.

That doesn't even get into the value of the data collected from having publishers tag a significant portion of the internet for you.

Is the accusation that they needed to juice short term revenue numbers by ending publisher relationships that were printing money for them? Because that seems incredibly dumb even for a publicly traded company that is focused on short term profits.

Shooting themselves in the foot several years out I could potentially see happening, but firing the most significant revenue drivers of one of your flagship products seems like it would cause things to crater the very next quarter, not several years out.

I also find it odd that the demand side of Google's products wouldn't raise hell for so many inventory sources being cut off if the cut were in fact that substantial. AdSense directly fuels the GDN and that is something Google has been pushing very hard to grow for years.

Many things here don't add up, but please do correct me if I'm missing something obvious in this. I've only managed tens of millions in spend on the buy side over my career and just made pocket change on AdSense on an ancient crappy side project I launched almost a decade ago, so I'm clearly not as familiar with the inner workings of their sell side as I am the buy side beyond comically horrible experiences with AdSense reps trying to sell me on adding it to the site of a company I worked at.

</comment><comment><USER3> This is fake, the author can't name a single person or give a specific example. When called out on this by multiple google employees, he posted a followup, which has gems like this:

 _Because I do. I have communications. I have documents, I have files, I have lists, and I have names. I have all of it. Like I said from the beginning, I have carefully waited and carefully planned everything out. I do everything with reason and purpose. I have to be exceptionally careful in every way. So you ask why haven't I released it? The answer, if I release everything I have now, it will give Google too many possible avenues to discover my identity._

He's talking out of his ass.

[http://pastebin.com/DXTu8Mcm](http://pastebin.com/DXTu8Mcm)</comment>


Elon Musk Smoking Joe Rogan's Weed Somehow Ended Up Costing Taxpayers $5M - <AUTHOR> https://gizmodo.com/elon-musk-smoking-joe-rogans-weed-somehow-ended-up-cost-1839116211 <comment><USER2> There is no limit to the money that can be wasted on policing, prosecuting, investigating, etc, anything that has to do with marijuana.

It is amazing that even incredibly educated intelligent people still freak out over something like marijuana all the while turning a blind eye to alcohol consumption and pharmaceutical abuse. Statistics would probably suggest that there are people working for/at NASA that abuse alcohol and prescription medications and escape any scrutiny.

</comment><comment><USER3> Not sure how it's Elon Musk's fault. Seems like the Nasa administrator, Jim Bridenstine's issue with marijuana.

Interestingly enough, after seeing the evidence, Jim reversed his beliefs on climate change and it being caused by humans (he didn't believe in it before). Hopefully, he can reverse his position on marijuana too.

</comment><comment><USER4> The media has published a disproportionate amount of hate content on Elon Musk ever since it was revealed Musk was a donor to the republican party in 2016.

<comment><USER5> Elon donated to everyone: [https://www.opensecrets.org/donor- lookup/results?name=elon+m...](https://www.opensecrets.org/donor- lookup/results?name=elon+musk&order=desc&sort=D)

</comment></comment><comment><USER6> Yes, this is how the government works...</comment>


Tell us how you successfully hacked some (non-computer) system to your advantage - <AUTHOR> <comment><AUTHOR> There's a question on YCombinator's application, "Please tell us about the time you most successfully hacked some (non-computer) system to your advantage."

Idea: I think it would be a great idea to take all of the past answers of this question, audit them to make sure they are legally and publicly acceptable, then get permission from the people or person making the submission to make their answer to this question public, then publish all of those answers on a web page where users could see them/compare them/vote on them, much like HN...

I think this could become a great resource for

a) Systems Theory Generalists

b) People who want to understand systems better

c) People who want to understand how some systems can be and are gamed;

d) (Non Computer) Systems Engineers/Systems Security Experts

e) Generally creative people who are interested in observing how other generally creatively people think and approach problems.

Comments?

</comment><comment><USER2> Advantage play in gambling situations where the odds are not clearly defined.

For instance, at my son's school they regularly have raffles where you can put a ticket in a bag to enter a raffle for one of various items. You can see how many tickets are in the bag and know what the odds of winning are.

I always walk away from that with at least one if not two prizes by picking things that are desirable (to me) that have few tickets in them.

I used to think my sister-in-law was impervious to the laws of probability because she plays video slots at the casino. Then she noticed there was a promotion where you could put losing scratch tickets into a pot at the casino and she saw how many entries there were, realized it was a winning bet, and she and my mother in law bought $200 of scratch tickets, of which they won about $100.

They won a trip to Las Vegas which was worth upwards of $1200 so it was a good deal.

I win at the racetrack by using the "odds to win" to find mispriced place and show bets. Basically you sometimes find that the payout for a horse to show is more than 1/3 of the payout to win but you have three chances to win, so sometimes it is a "can't lose" situation.

</comment><comment><USER3> You can steal gas from a car by putting a hose in the gas tank. I'm pretty sure everyone knows this "hack" so maybe you should clarify your question.

<comment><AUTHOR> Clarification: The hack or hacks must be ethically acceptable...</comment></comment>


Will Google take on Xbox Live? - <AUTHOR> http://www.redherring.com/Article.aspx?a=21420 <comment><USER2> Ah, there's nothing like rampant speculation following an acquisition. Always fun stuff.

I must say that this is a far reach even as far as reckless speculation goes. The acquisition of AdScape more likely ties in with Google's business as an advertising facilitator. Google is on top of the Internet advertising market and it's time to look into online gaming as new ground.

Google launching an XBox Live competitor? Not as likely... but I'll keep my eyes open.</comment>