Time-lock encryption - <AUTHOR> http://www.gwern.net/Self-decrypting%20files?2 <comment><USER2> There are also real-world solutions. I spent some time brainstorming this a while back.

1) The safest solution, albeit somewhat expensive: launch a Voyager-like probe. It constantly generates private and public key pairs, broadcasting the public keys immediately and the private ones on a schedule. That way, you can pick a known timeframe for decryption. Launching more than one probe, for redundancy, is probably a good idea: you can encrypt with multiple keys.

2) Cheaper but less reliable solutions involve balloon-dropping transmitters that wake up and divulge decryption keys across a huge geographic area where it would be infeasible to find them. A variation is sinking modules very deep in the ocean that wake up and float to the surface.

<comment><USER3> If the probe is destroyed so is the the possibility of decryption. Same for the second option.

In fact the problem is not related to time, but to the processing time and it's hard for two reasons, the math has to be so incredible/good/error free that going the physics way is cheaper and by cheaper I mean the only way (there is nothing more expensive than that thing it does not exist). Now Assumptions related to physics, which part do you assume as "hardcoded", (gwern decided for the cache speed; I found the problem on specialized hardware for it, AMD builds cpu on spec (back to physics))speed of light, and the amount of energy it takes to perform a job, resistance of circuits near absolute zero and therefore the amount of energy required to perform the job given that you can suppose on non paralelizable tasks therefore scalar cpu and therefore given a minimum scheme of circuitry the amount of time on a perfect conditions. This works unless reality(trademark) goes into play; -how much time will it take to humanity to hit the perfect conditions? -which conditions or values do you consider appropriate to measure the time (for releasing the information given the conditions are met?)

What if you just hide (like for example by burring them in the sand on the sahara) 100 devices from which 10 are the original ones and the other ones are backups of the original and you need ten of them to decrypt? (scale times 10^x for paranoia level)

<comment><USER4> That's why you launch a few of them. Also, the odd's of the probe getting destroyed e.g by an impact are really low. They get lower once you leave earth orbit and really low when you hit interstellar space. And you can probably get to less impact stuff quicker if you go perpendicular to the plain of the ecliptic rather than out.

Your bigger issue is component failure.

So launch a enough to deal with component failure, wait long enough for them to be out of harms way, and then you have a time lock.

Sure it's expensive, but time locks with a known time to unlock or even a decent estimate are not really possible algorithmically.

<comment><USER3> Excellent, but the point is to make the most secure/cheap solution, he already has a mountain a he could build a room with gigantic 100mt of steel walls with a piece of paper with the pass on it recorded by 100 webcams on 100 diff connections, or send a 10000 probes. Math for building an idea to hack is so good because ideas and intelligence to build them are so expensive the other parts of the problem look more feasible to hack/fix/try

</comment></comment></comment></comment><comment><USER5> I like the parallelized hash chain construction idea; I've never seen that before.

One could improve a chunk of the chain by having checkpoints along the way. As the author mentioned, it would suck to be 2 years into mining a 35-year computation, only to make a mistake that you can't detect until the very end.

To add checkpoints, one could release both the original seed of the chain A, and a number of pairs of hashes (x0,y0) (x1,y1) ...

Let's say you wanted to do 1-month chains. Hash the seed A for a week, then take the current value x0 such that H(B)=x0. You know the value of B, since you've been computing the chain. Pick another random value y0, and continue the chain with H(B^y0). Write (x0,y0) in the output, and hash for another week. Do the same for (x1,y1) (x2,y2) and (x3,y3). Each chain then has a seed value and 4 pairs of 'checkpoints'.

When unlocking the crypto puzzle, these checkpoints can't be used to jump ahead in the computation, but they can tell you that you're on the right track.

I think that you could even use a secondary hash chain for the y_n values, so y_n+1=H(y_n). If you also derived y0 from A (e.g. y0=H(A^const) ), you would just need to publish the seed value A and each checkpoint hash x_n in order to have a fully checkpointed crypto puzzle.

<comment><USER6> One problem I can see with that is you have to be very careful that your hashes (x_i, y_i) don't make it more attractive to, say, solve the n-1th computation (similar to brute-forcing a password hash) than to do the first 1..n-1 computations properly.

<comment><USER5> Good point! Still, I think the best hash inversion I've seen is slightly under 1/2 the hash space (2/5ths?). Using a 512-bit hash like SHA3, even at an ungodly hash rate (1 TH/s), you still get approximately 2^141 seconds = 2^133 years maximum chain length before it becomes more efficient to invert the hash.

</comment></comment></comment><comment><USER7> If only there were a series of mirrors, each N light-years away, you could blast a one-time pad out to the mirror of your choice and then announce the date the reflection is expected to arrive.

<comment><USER8> Nice idea IF we had such mirrors. Afaik the farthest away is on the moon.[0] Also a one-time pad needs to be as large or larger than the data used to encrypt it.[1] So your plan cannot be used for the several gigabytes wikileaks insurance file. But perhaps you can "pad" the key used to encrypt it? Probably.

[0] [http://en.wikipedia.org/wiki/Lunar_Laser_Ranging_experiment](http://en.wikipedia.org/wiki/Lunar_Laser_Ranging_experiment) [1] [http://en.wikipedia.org/wiki/One- time_pad](http://en.wikipedia.org/wiki/One-time_pad)

</comment></comment><comment><USER9> I think I have a better scheme. Say you have a 10 bit keyspace or something, and then encrypt a very large number of times with random keys. You don't have to perform as much computation as your adversary. By the law of large numbers the probability to solve all of the puzzles in a much shorter then expected time is low. And it is much less parallellizable then just one encryption with a random key.

<comment><USER10> Interesting idea, I like the "as much certainty as you want" with the probability.

Why can't this be parallelized? Sure you have to work on one key at a time because they are sequential, but 1000 machines can be cracking that one key. Every key cracked would be distributed and the cluster would start in on the next.

It's a little more complicated, but I'm not seeing how it's really any less parallelizeable.

<comment><USER9> I think, but am not certain, that with such a small keyspace the IO cost would dominate if you tried to parallelize it. (Assuming each decryption attempt is rather quick).

<comment><USER11> I/O is inexpensive for even non-state level actors. I have 40,000 spindles on a research cluster that is hardly used for anything...

<comment><USER12> Yeah every body has $4 million in hard drives just sitting around. At 1TB each that is a 40 peta-byte array, that is still huge in this day an age.

</comment></comment></comment></comment></comment><comment><USER13> This is interesting in its own right, but the Assange use case doesn't really make sense to me. Wikileaks doesn't want the encryption to be broken after a certain amount of time, they want it broken based on the condition of assassination.

<comment><USER14> The primitive for this is a dead man's switch. I wonder what the cryptographic equivalent would be.

Some sort of computational network that will always make progress towards decrypting the data unless the soon to be dead man injects something using his private key that sets the network back preventing completion?

The network can't identify that the soon to be dead man is preventing progress?

Sounds like a fun research project. Maybe tie it to some coin mining network.

<comment><USER15> The problem with using a secure protocol is that you need to trust the parties to not just instantiate a second version of the protocol without you. If you can trust them to do that, you can just give them shares of the secret and trust them not to recombine the shares unless you die.

<comment><USER14> I think what you would do is make it computationally infeasible for them to create a separate network. The network exists independent of your individual secret and may be working towards the release of many soon to be dead men's secrets in a peer to peer fashion.

Sure they could avoid the dead man injecting something, but then they would get hit with the full workload. If you coupled this with an economic incentive like bitcoin mining you could get the miners to allow you to drastically increase the amount of work required and make it keep up with the state of the art in technology.

I couldn't say whether you can string enough primitives together to build something like this but it would be really cool if you could. Maybe I should go file a patent or something :-P

<comment><USER15> "I think what you would do is make it computationally infeasible for them to create a separate network."

If the goal of the network is to release my secret when I _fail to participate_ then there must be a way for the network to operate without my participation. What stops the parties from _ignoring_ the messages I send, thus recovering my secret by simply pretending I died?

<comment><USER14> I think that is one of the novel pieces of functionality that needs to be created. The soon to be dead man looks like any other miner to the network and submits what appears to be valid work, but he is secretly poisoning the work going to release his secret, and of course he has to be the only one capable of doing that. Maybe later on the network realizes the work it was doing was poisoned and rolls back the poison change and resumes processing. Every time a poison pill is introduced the network must do some amount of work to determine that that the pill must be discarded and that amount is tunable by the soon to be dead man.

"What stops the parties from ignoring the messages I send, thus recovering my secret by simply pretending I died?" They would have to control enough of the network and know who you are and how you are interfacing with the network to stop you. If the network has an incentive like bitcoin mining this could be infeasible for many adversaries.

Tampering is a problem with real dead man's switches as well such as a script that you have to ping or an associate.

I think big computational networks with incentives unlock some interesting doors. If you can assume that the computational majority of the network is playing ball you can ask it to do some interesting things if you have the right private key.

<comment><USER15> ""What stops the parties from ignoring the messages I send, thus recovering my secret by simply pretending I died?" They would have to control enough of the network and know who you are and how you are interfacing with the network to stop you."

OK, but if the assumption is that out of the _n_ parties in the network no more than _k_ parties are malicious, why not just use a _k+1_ out of _n_ secret sharing scheme? You broadcast a signed message once per month, and if the message does not arrive for some number of months the parties all broadcast their shares and recover the secret.

At best, the role of "proof of work" systems here is in combating sybil attacks, which is only relevant if you want to remove the requirement that I know the people I am issuing shares to. If that is truly advantageous, the system might look like this: first, I broadcast a public key for some non- malleable encryption scheme. Each party willing to participate will then use that key to encrypt a randomly generated ID string that they keep secret. Once I have received the IDs, I broadcast a random string, and each party will use their chosen ID and the random string as a "starting point" in a proof-of-work scheme. The output of the proof of work is then used as the seed to generate a keypair for a symmetric cipher (using an appropriate key derivation function). The parties encrypt the proof-of-work outputs and send the ciphertext to me; I check the proofs and generate the keys locally. Then I encrypt each party's share using the party's symmetric key and send the encrypted share. Then I proceed as before, sending a periodic message.

I suspect, though, that such a construction is overkill; also I have not really evaluated the security of it.

"I think big computational networks with incentives unlock some interesting doors"

Maybe so, but right now I see a solution in search of a problem.

"If you can assume that the computational majority"

Why should I need to assume _anything_ about the computational resources about the participants? We can have threshold secret sharing with unconditional security, and we only need to trust _one_ of the parties for the switch to be secure _regardless_ of the computing power of the rest of the parties.

<comment><USER14> "At best, the role of "proof of work" systems here is in combating sybil attacks, which is only relevant if you want to remove the requirement that I know the people I am issuing shares to."

That seems pretty fundamental to making the mechanism accessible. If are talking about switches as a service if there is a "fixed" pool of switches and an exploit is found that allows you to compromise each switch component you are out of luck because you didn't actually make materializing the secret difficult.

By requiring actual work to be done and allowing the difficulty of the work to be tuned based on the capacity of the network you make an adversary go up against the math instead of against the people.

<comment><USER15> "If are talking about switches as a service if there is a "fixed" pool of switches and an exploit is found that allows you to compromise each switch component you are out of luck because you didn't actually make materializing the secret difficult."

If an exploit is found that allows you to compromise each component, then the adversary can just have the components ignore your messages and open your secret. It makes no difference how the system is structured at that point.

"By requiring actual work to be done and allowing the difficulty of the work to be tuned based on the capacity of the network you make an adversary go up against the math instead of against the people."

By using a threshold secret sharing scheme, you ensure that the adversary cannot get the secret regardless of the their own computing resources. You also avoid wasting electricity for the sake of your switch. You also have the advantage of having a well-defined security model that can actually be analyzed formally.

The only reason you would ever want to burn through some CPU cycles is to thwart sybil attacks. Unlike Bitcoin, you do not need to keep doing proofs of work after that, because once the shares are distributed, there is nothing more to do. If the adversary increases his computing power after that, he gains nothing by it, because he will not be given any more shares. Hence the suggestion in my previous post: have the proof of work be coupled to the generation of a public key, and just have the public keys be generated when someone needs to set up a switch.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Prepare ordered sterile Petri dishes with nutritious solution. Expose some to bacteria, forming bacterial cultures, but not others. Ones and zeroes.

At first, they will be almost impossible to distinguish (you cannot hurry much your culture medical exams even if willing to spend a lot, right?) After a while, the cultures become obvious.

The timing is heavily dependant of the bacteria's life cycle, but I guess if you stricly control the number of individuals initially put into the dishes, and keep temperature and lighting optimal, you can predict the time-to- observability to around 40%?

</comment><comment><USER17> Not directly related to this article, but gwern.net seems to be coming up on the front page quite often. Is there an RSS feed for the site? I was unable to find one.

<comment><USER18> Gwern posts articles, but not in blog format. If you look on the sidebar for this page, for example, you'll see it was originally published in 2011, and just recently modified.

This is the closest thing to what you're looking for: [http://www.gwern.net/Changelog](http://www.gwern.net/Changelog)

<comment><USER17> Ha, close enough I suppose. Thank you!

</comment></comment></comment><comment><USER19> In reality the easiest solution for this would be to build yourself a time release cellphone or something. A simple time release power switch pulls, then the phone tweets the key to a strong encryption scheme. Build the phone into the walls of a cafe or something, maybe a bit of redundancy (multiple cafes) / and photosensors to detect discovery and disable/destruct the phone.

If you split the key redundantly between the phones, you should be fine.

<comment><USER8> And now you don't have to trust the math, but all kinds of things in the physical world. A photo sensor for example is disabled by darkness. Digging up the phone by night, anyone? Bad idea, IMHO.

<comment><USER20> IR LED for illumination, use the camera to detect movement where there should be none.

It would burn a ton of power though.

</comment></comment></comment><comment><USER21> Maybe there's still a way to use homomorphic encryption. gwern rightly suggests that it causes a big problem if the recipient must decrypt the result of an encrypted computation. However, what if the decrypted result of the computation is never known to the recipient and instead the recipient must use the still-encrypted result of the encrypted homomorphic computation?

It would work like this:

The secret sharer creates some random string called 'a' and some computable function 'f'. The secret sharer also creates an encryption function 'e', and a homomorphic equivalent to 'f', called 'F' so that the following commutes: e(f(x)) = F(e(x)). F acts on encrypted data and gives encrypted results, but is much slower than f.

The secret sharer can comparatively quickly compute e(f(x)), which he or she uses as a key to encrypt a message. However the recipient is only given the values e(x) and F and must use exponentially more computational time to go the more laborious route, computing F(e(x)).

<comment><USER11> That is effectively a proof of work scheme, which is what most time lock systems are based on. The fundamental problem is that people with more resources can decrypt faster than people with less resources, and you're generally wanting to share with someone who has less not more.

<comment><USER21> You make a good point, but that's also a shortcoming of all of the purely computational techniques. I think the most you can hope for is 'democratizing' the computational methods, i.e. making them non-parallelizable.

Taking gwern's idea, what if the homomorphic computation is just incrementing your input repeatedly inside of a loop? It seems like that might be hard to parallelize. Or at least, I don't know enough to assume otherwise.

</comment></comment></comment><comment><USER22> gwern, if you're reading, this section is misleading if not wrong ...:

"But that doesn't seem very true any more. Devices can differ dramatically now even in the same computers; to take the example of Bitcoin mining, my laptop's CPU can search for hashes at 4k/sec, or its GPU can search at 54m/second."

This is an example of parallelism and parallelism only.

<comment><USER23> Are you implying that GPUs execute each hash as slowly as a CPU and are better at hashing simply because they have more processing elements? I knew GPUs had a lot of small cores, but I was unaware that mine had 54000000 / 4000 = 13500 cores.

<comment><USER22> More or less, yes, that is my implication. Luckily, my sibling comment provides some extra information.

For the example of SHA-1 computation, you mention using FPGAs that finish in 400 clock cycles, which is at most an order of magnitude away from a naive CPU implementation of around 4000 clock cycles. I'm not as familiar with SHA-256.

</comment></comment></comment><comment><USER24> Under the third section "hashing" it says:

>For example, one could take a hash like bcrypt, give it a random input, and hash it for a month. Each hash depends on the previous hash, and there's no way to skip from the first hash to the trillionth hash. After a month, you use the final hash as the encryption key, and then release the encrypted file and the random input to all the world. The first person who wants to decrypt the file has no choice but to redo the trillion hashes in order to get the same encryption key you used.

Then it lists this downside:

>"This is pretty clever. If one has a thousand CPUs handy, one can store up 3 years' of computation-resistance in just a day. This satisfies a number of needs. But what about people who only have a normal computer? Fundamentally, this repeated hashing requires you to put in as much computation as you want your public to expend reproducing the computation, which is not enough. We want to force the public to expend more computation - potentially much more - than we put in. How can we do this?

>It's hard to see. At least, I haven't thought of anything clever"

I have! Rather than hash n as your seed, after finding n (which you will still release) hash (n+m) instead, where m is a random number in the range (for example) 0,100. Discard m, do not retain it after you've started the hashes. Release only n. Now, rather than starting at n, they still have to start at n, then when they find that m wasn't 0, they have to try all over again hashing n+1 a trillion times, then when they find it's not a good key, they have to try hashing n+2 a trillion times, and so on until they've bruteforced n+m as the correct initial seed for the start of the hash process. i.e. you make them bruteforce what m must have been.

if m is ten, someone would have to repeat your process up to ten times (an average of 5 times) before they found the seed.

Likewise if m is large, like 1,000,000 the force multiplier is 1,000,000x as much work as you had to do, in the worse case and 500,000 times as much work on average.

I've emailed the offer this suggestion.

<comment><USER25> This has the same drawbacks as using a small random key, which the article discusses later on:

\- They might find the key earlier or later in their search (it adds volatility to the amount of time required).

\- Searching for the right value of m is highly parallelizable.

<comment><USER24> interesting counter argument. but you can still use the "trillion hashes" as a limit to how parallelizaeble it is, and then use m to increase the average amount of work done, but which however can be done in parallel. You are right that this increases unpredictability. You can balance a trade-off between the figure of "trillion" hashes and the value of m, to strike a balance between how much work you have to do to compute it, and how predictable and non- parallelizable the work will be (by increasing m).

e.g. you can work for an hour and increase it by a factor of 10,000, but the ten-thousandfold work will be parallelizable and slightly unpredictable; or you can work for 1000 hours (41 days) and increase the work by a factor of just 100 in the worst case - but the increase will be parallelizable and the unlocker might get lucky.

so you can really balance how much work you're doing with the level of parallelizability/predictability of the reverse.

</comment></comment></comment><comment><USER26> Correct me if I am wrong, but this assumes that processor speed will not increase dramatically over the lock period, no?

Seems to me that if one was to be storing information over an extended period of time, say 20 years, as time goes on, it becomes more and more likely that the encryption can still be broken sooner than desired.

<comment><USER27> Rivest's puzzle (1999) [http://people.csail.mit.edu/rivest/lcs35-puzzle- description....](http://people.csail.mit.edu/rivest/lcs35-puzzle- description.txt) assumes that we're all using 10 GHz processors in 2012.

> _The value of t was chosen to take into consideration the growth in > computational power due to "Moore's Law". Based on the SEMATECH National > Technology Roadmap for Semiconductors (1997 edition), we can expect internal > chip speeds to increase by a factor of approximately 13 overall up to 2012, > when the clock rates reach about 10GHz. After that improvements seem more > difficult, but we estimate that another factor of five might be achievable > by 2034. Thus, the overall rate of computation should go through > approximately six doublings by 2034._

I asked about progress on this puzzle at stack exchange here [http://crypto.stackexchange.com/questions/5831/what-is- the-p...](http://crypto.stackexchange.com/questions/5831/what-is-the-progress- on-the-mit-lcs35-time-capsule-crypto-puzzle) and got some nice answers.

<comment><USER8> Disclaimer: I have no idea what factors are relevant for cryptographic functions.

In 1999 they had coppermine 1133 single-core @ 1.1ghz (~ 2 gflops), in 2012 we now had sandy bridge 3970 quad-core @ 3.4ghz (> 100 Gflops). So at least according to one measure the factor of increase is more like 50 than 13.

</comment></comment></comment><comment><USER28> Maybe it's just because is Monday but, besides of the Julian Assange's example and the time capsule, I can't think of another use case of a Time-lock crypto puzzle, anyone?

<comment><USER10> Court proceedings that would be sealed for 100 years. Secret material, say military records, that need to be secure in the present, but are important historically at some point. You could provide a declassification schedule this way.

You could do a delayed form of historical whistleblowing or confession, so that it doesn't cause you problems today, but history can know what really happened.

Perhaps providing the equivalent of a 'sealed envelope' to prove that something was known or happened on a given date, without having to be present or active to prove it.

It's fun to think of a puzzle, but presuming it was truly delivering on the safety promise, I can see quite a few uses. The real schemes though depend on a lot of varying factors, so in cases where the secrecy was critical, you can see why people wouldn't use it.

</comment></comment><comment><USER29> How secure is [http://en.wikipedia.org/wiki/Shamir's_Secret_Sharing](http://en.wikipedia.org/wiki/Shamir's_Secret_Sharing) ?

<comment><USER21> It's a really beautiful and easy to understand and genius algorithm, and it perfectly meets its design goals. It works very analogously to the following:

Pretend your secret is an integer. You want to distribute clues as to your secret integer to N of your friends such that any K of them can collude to figure it out, but K-1 of them can't figure out anything about it at all.

So you construct a (K-1)-degree polynomial of one variable, f(x). All of the coefficients of the terms of f(x) are random, except choose the y-intercept (i.e. the constant co-efficient) to be your secret. Then calculate and distribute the numbers f(1), f(2), ..., f(N) to your N friends.

K points on the 2D co-ordinate plane uniquely identify your single (K-1)-degree polynomial, which will have your specific secret y-intercept. However (K-1) points will pick out an entire family of potential (K-1)-degree polynomials. And, in fact, for every single possible secret you could have chosen, there's a (K-1)-degree polynomial that goes through (K-1) points and the possible secret value. So, (K-1) of your friends colluding really don't have any additional information at all about your secret.

Shamir's secret sharing works just like that, but done with integers modulo a prime. (And the prime has to be larger than your secret.)

</comment></comment><comment><USER30> This sounds like the ideal opportunity to have a map tattooed to our scalps like old fashioned pirates. Or to the back of some kid (like on Waterworld).

</comment><comment><USER31> Possible variant on this scheme to make it harder to estimate the amount of time required: Don't use a fixed number of hash iterations. Instead, use a bitcoin-ish scheme like: "the key to this file is given by hashing 'xxxx' until the hash's bottom 8 bits are 0"

<comment><USER32> The problem here is that the amount of work needed to generate the key is not known beforehand either.

I think a better approach (that would also not leak bits of the key) would be to say "hash until the hash of the hash is xxx". So basically you hash until you get xxx and then take the previous iteration's result as a key.

<comment><USER33> Given a sequence of N hashes, you could select any hash A as the initial hash, any hash B as the key, and the successor of B (C) as the key to the key.

After choosing B and C, choose an A whose distance to B and C is proportional to the amount of work you wish to require.

<comment><USER32> Your "given a sequence of N hashes" is a bit of a deus ex machina here :)

<comment><USER33> Create it using 50% of your lifetime. Or create one for your children.

</comment></comment></comment></comment></comment><comment><USER34> 1\. Generate a random number. 2\. s- or bcrypt it. 3\. Encrypt the data with the result of step 2. 4\. Give people most of the random number, minus N bits at the end. (And tell them how many bits they are missing.)

They will have to run s/bcrypt (N^2)/2 time to get your date. Am I missing anything?

<comment><USER5> The issue is that you can parallelize the "unlocking" operation. So, if one person is attempting to unlock, they solve in 10 years. If two people attempt, it's solved in 5 years. If the NSA puts all their computers on it, it takes 1 second.

The author is proposing methods that are forcibly sequential.

</comment></comment><comment><USER35> Schedule a google calendar event in the future.

Set up an email alert so it sends the key to an email.

This assumes google isn't going to discontinue its calendar service.

<comment><USER36> You're also trusting Google here, as your key must be accessible by google calendar's event in order to send.

<comment><USER35> So? To google it looks like a random character sequence. They don't know what it is. It can even be encrypted, if you're that paranoid.</comment></comment></comment>


Arm kills off its anti-RISC-V site after own staff revolt - <AUTHOR> https://www.theregister.co.uk/2018/07/10/arm_riscv_website/ <comment><USER3> I have been a big fan of the RISC-V efforts. Arm's attack is actually heartening in the sense that it confirms the perceived threat from RISC-V is real. This is a moment on the path that makes me realize real progress is being made for RISC-V.

The development of new technology seems to go so slow while it's happening; it's only in hindsight that it seems it's always and inevitably been this way. Still a long way from running OpenBSD on a 17" laptop with nothing but open source hardware inside, but it's a nice moment.

<comment><USER4> Sadly it is still very long way to open source laptop. Remember, processor or SoC contains not only RISC-V core, but also many peripherals. Some peripherals are easy to design (like UARTs and I2Cs), but gpu, pcie, ddr memory and networking aren't. The question is who will deliver these as open source implementations. IMHO these are not attractive problems to solve in academia, because they are already available as commercial closed source products and lacks novelty.

<comment><USER5> I think a bigger issue is patents.

Designing a decent CPUs without violating any patents is easy. Almost all CPUs today follow design patterns which were established back in the mid 80s and early 90s. All those original patents have now expired and you can sidestep around the newer ones.

Things like GPUs have evolved massively since the late 90s, gaining support for pixel shaders, vertex shaders, moving to unified core designs, gpu compute and establishing new threading models.

And all these things have bled back into the Graphics standards. It would be really hard to design a gpu implementing even a 10 year old standard like OpenGL ES 2.0 without violating any patents.

And it will be even worse with things like pci-e, ddr and networking controllers. You can't design around the patents without breaking compatibility because there are standards enforcing you to follow the patents.

<comment><USER6> An extremely basic (but power efficient) framebuffer would probably be enough. At least with that and some less encumbered output stack (maybe display port?) real and secure foundations could be made for truly verifiable voting assistance systems. It should produce a voter readable paper ballot that is the /actual/ poll and include a 'quick count estimate' for the next morning reports.

<comment><USER7> [https://github.com/RoaLogic/vga_lcd](https://github.com/RoaLogic/vga_lcd)

richard herveille created one 16 years ago which can do the job. it's silicon- proven: ICubeCorp put it into their IC3128.

</comment></comment></comment></comment></comment><comment><USER8> I remember when Microsoft seemed unassailable.

I remember Get The Facts.

I remember the arguments that "free" software must not be any good. That nobody stood behind it. That is was only free if your time was worth nothing. And on and on.

Now Microsoft's best days are behind it. Microsoft is openly embracing Linux. Who would have ever believed SQL Server would run on Linux. Or that Microsoft would create a Linux personality on Windows called "Windows Subsystem for Linux". Microsoft even admitted (sorry I don't have a link) that the reason for this embrace was to bring developers back.

Linux is now in everything that is not a desktop PC. From wristwatches to mainframes and everything in between.

To the point: This now seems to be happening with open source RISC hardware.

<comment><USER9> What I don't get is why didn't Microsoft open source at least some of their toolset even if they didn't make it free? I remember coding in the 90s. It was a nightmare. You were never sure if you hit a bug in the programming language, the operating system, or the database. All three were closed off. It was maddening.

<comment><USER10> Pretty much anything from the days of yore that was done stupidly by Microsoft can be laid at Ballmer's feet, either directly, or in-directly via the company culture he fostered.

He was the reason they missed out on open source, missed out on mobile, and missed out on a ton of other stuff as he counted his money while the market slipped ahead without them.

They're better now but I don't think they'll ever be the player they were in the 2000's (and that's probably a good thing for everyone).

<comment><USER11> "[Stomping] Developers! Developers! Developers! Developers! Developers!"

He wasn't entirely wrong, but even so, Nadella is a bazillion percent better as the CEO. ...Actually, make that a gazillion percent better.

</comment></comment></comment></comment><comment><USER12> When RISC-V was first coming out, the Berkeley folks published a position paper:

      Instruction Sets Should Be Free: The Case For RISC-V
      https://www2.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-146.html

ARM published a response:

      The Case for Licensed Instruction Sets
      http://www.linleygroup.com/mpr/article.php?id=11268

Unfortunately that argument is behind a pay wall. Perhaps it should have been titled _The Licensed Case for Licensed Instruction Sets_.

<comment><USER13> "To hear why ARM is great, you need to pay a fee first."

I can't help but laugh at how ARM is responding to RISC-V. They're giving the architecture great publicity. Has Softbank forgotten how to run its subsidiaries?

<comment><USER14> To be fair, the decision makers, i.e. asic architects,designers from top cop firms, most likely aren't having out at HN, it banking on public opinion here. ARM can bloody well do as it pleases with little impact on business

Where RISC-V does have a chance is in getting adopted by a company with a long term Outlook and huge shipments. Ideal customer is Samsung, who use arm in everything from DRAM/NAND to smartphones. If they can prove it commercially on one product line, maybe SD cards, they can shake it to others over there next decade.

</comment></comment></comment><comment><USER15> Heh heh. I paused partway through the article to look at web.archive.org to see exactly what ARM's website had said, and was going to post it here, and then I checked and saw that the article links to the archived version too. Props to the Internet Archive and to Chris Williams.

For reference: [http://web.archive.org/web/20180710130206/https://riscv- basi...](http://web.archive.org/web/20180710130206/https://riscv-basics.com/)

<comment><USER16> No one proved ARM was actually behind this. It could be a scam.

<comment><USER17> [https://www.arm.com/-/media/global/company/arm-risc-v- infogr...](https://www.arm.com/-/media/global/company/arm-risc-v- infographic.png)

Enough proof all by itself unless they claim _arm.com_ has been 'hacked' or abused through an insider job.

</comment></comment></comment><comment><USER18> It's too late. I call Streisand effect. At least I didn't know about RISC-V. Yesterday I binged on the specification. Thank you Arm for enlightening me.

</comment><comment><USER19> If ARM didn't attack RISC-V I would not even know about them. Going to read about them now.

<comment> jf- Same here. Looks like an interesting project, but looks like it's predecessors sadly came to nothing.

<comment><USER20> That's somewhat of a strange argument. The predecessors were highly successful and influential academic projects. The simply never had the idea/motivation to try to move that stuff into the real world.

All of this stuff also now profits from the change/slowdown in Moors law.

<comment> jf- Came to nothing in market terms, if you prefer.

<comment><USER20> That was never the goal or intention. Those were research products that did exactly what they were designed to do.

It has absolutely no relevance for RISC-V being successful or not.

</comment></comment></comment></comment></comment><comment><USER21> ARM holdings, is one of those stories which somebody in history of science, economics, telecommunications should write up. Amazing outcomes. I feel sad that industry went to an IPR model which says 'nobody except geniuses works in the UK, we send this to fab lines elsewhere' but as a model, it totally worked.

<comment><USER22> The physical fabs are a separate for good reasons. ARM's problem is that the capture such a small portion of the value. Companies like Nvidia, Qualcomm, AMD and Apple are also fabless, but they get a big chunk of the profits.

<comment><USER23> This also seems like it'd be RISC-V's problem too. ARM is, from what I understand, pretty cost-competitive - they're not a big fat high-profit behemoth ripe for disruption like say Intel. As it stands, I think the only companies that can save money with RISC-V are the ones with enough volume, staff, and specialised needs to take their chip design entirely inhouse without using the services of companies like SiFive and who also don't need compatibility with the existing software ecosystem.

</comment></comment></comment><comment><USER24> This just reeks of backtracking on behalf of Arm's management imho.

"Blame us, our hardworking staff (who are just like you) are not to blame."

It's a half-decent marketing strategy but it's not fooling me.

<comment><USER25> You think the CPU designers were involved in this? Fool.

<comment><USER26> If you continue to post uncivil comments to HN, we're going to have to ban you. Would you please re-read the rules and use this site as intended?

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment></comment></comment><comment><USER27> Wow, I was very critical of the UK government's decision to allow the sale of ARM, but perhaps the time was right.

</comment><comment><USER28> Good. That site was typical tone deaf marketing rubbish.

</comment><comment><USER29> The first casualty of RISC-V will not be ARM, it will be MIPS. MIPS CPUs are the current choice for low-cost embedded systems that run a Linux kernel, from home routers (where MIPS has nearly 100% penetration) to low-end set-top- boxes. I expect MIPS will be dropping their licensing costs even more to compete at RISC-V matures and becomes a better option.

<comment><USER30> > ... from home routers (where MIPS has nearly 100% penetration) to low-end > set-top-boxes.

I don't think that's true anymore for new installations. A lot of those home routers and set-top boxes are using Broadcom chips, and they switched from MIPS to ARM years ago.

<comment><USER29> Broadcom still ships new MIPS SOCs, like the BCM7231. Context: I work on set top boxes at Netflix.

</comment></comment></comment><comment><USER31> History doesn't repeat itself but it rhymes. Microsoft used similar tactics to derail its OSS competition. Look what happened.

</comment><comment><USER32> [https://www.arm-basics.com](https://www.arm-basics.com) was created in response.

</comment><comment><USER33> The mnemonics of RISC V are terribly thought out when compared to OpenSPARC or the legendary MC68000. Particullarly galling is the choice of dst, src rather than src, dst (although that could be solved by using UNIX® version of as(1)). Terribly thought out design internally. Not that ARM is much better, mind you.

<comment><USER34> If Intel has taught us anything about ISAs, it's that having a shitty one doesn't much hurt.

If ARM has taught us anything about ISAs, it's that _starting_ with a nice one doesn't mean it won't end up a mess. (There exist 32-bit ARM implementations with precisely zero opcodes in common.)

</comment></comment><comment><USER13> ARM did an incredible job in that puff piece legitimizing RISC-V.

</comment><comment><USER35> They should have just copied [http://www.adequacy.org/stories/2002.1.28.153048.268.html](http://www.adequacy.org/stories/2002.1.28.153048.268.html) and replaced 'Intel' with 'ARM' and 'AMD' with 'RISC-V'.

</comment><comment><USER36> non-AMP link [https://www.theregister.co.uk/2018/07/10/arm_riscv_website/](https://www.theregister.co.uk/2018/07/10/arm_riscv_website/)

<comment><USER37> I don't know much about AMP, so could you tell me why or when a non-AMP page is preferable. I read the wiki on it, but it didn't clarify my question. Thank you.

<comment><USER38> AMP doesn't render properly for us not on our phones.

<comment><USER39> It worked fine here, on Firefox desktop.

<comment><USER40> good for you, running javascript everywhere.

With adblocker, or uMatrix, or noScript, etc, you have to white-list each site. Trivial but annoying.

<comment><USER41> Why would you whitelist a rag^Wnews site like theregister.co.uk?

<comment><USER42> For a news site, it has a fairly low number of trackers, and it's in the EU so GDPR applies.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> To me, it looks like that site was not created by ARM, no one was able to prove ARM created it, and it could be just a scam to attack ARM's public image. That's bad journalism right there.

<comment><USER43> Fair point... except ARM were kind enough to leave the main infographic on their own website as of two minutes ago.

[https://www.arm.com/-/media/global/company/arm-risc-v- infogr...](https://www.arm.com/-/media/global/company/arm-risc-v- infographic.png)

Probably fair to assume it's sanctioned by ARM if it's on arm.com. Unless they play the "we were hacked" card.

<comment><USER15> Good find. Also, the article does say it talked to at least one person at ARM. It would require that either Chris Williams made stuff up and wasn't caught by anyone else at The Register (he is Editor-In-Chief, but I hope someone still checks his work), or the ARM spokesperson and anyone else Williams talked to was lying.

"Arm told us it had hoped its anti-RISC-V site would kickstart a discussion around architectures, rather than come off as a smear attack. In any case, on Tuesday, it took the site offline by killing its DNS.

"Our intention in creating a webpage to offer key considerations around commercial RISC-V based products was to inform a lively industry debate," an Arm spokesperson told The Register."

<comment><USER16> Honestly, for someone who doesn't know TheRegister, even that article looks like a scam to me.

The linked image stored on the ARM server from the comment above is a way stronger proof imho.

Edit : The picture could have still been hijacked from its initial purpose by a malicious actor. Maybe ARM didn't planned to use that picture the same way it was presented on the RISC related domain.

<comment> vertex-four This is the tech equivalent of "CNN is making things up wholesale" - <USER2> Register is a well-known, mostly reliable source of news. It might occasionally get things wrong/have biases/etc but they're not about to start making up sources.

<comment><USER16> Well, I don't trust CNN either so it's actually a good comparison.

It seems "well-known" sources of news are using their comfortable position to accept a lower quality of their journalism.

I'm not saying their are bad intended, but they took the choice of posting often (with possibly unverified information) rather than posting rigorously checked facts, and cross checked with different sources. I feel like I have to do myself their work of cross verifying everything they post...

<comment> vertex-four CNN doesn't make up sources. The Register doesn't either. The Register has a source at ARM who states that the website was theirs. What, exactly, are you suggesting happened?

<comment><USER16> I don't suggest anything, I'm only saying we trust way too much CNN and journalists in general who reinforce our initial believes.

<comment> vertex-four That statement could be made about _literally any_ article linked from Hacker News, in addition to anything on the rest of the internet - why did you decide to make it on this one?

<comment><USER16> Because I also commented on the HN thread about the offending website 24h earlier TheRegister's article made its way to the public.

Already on the previous thread, someone suggested to be careful about that website, as it couldn't be proved ARM did it.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Ask HN: Does anyone really use Facebook graph search? - <AUTHOR>

<comment><USER2> Certainly not. I barely use facebook at all.

It used to be a fun way to keep up with friends. Nowadays it's morphed into some hideous shadow of its former self.

Modern facebook is just a platform for my middle-aged aunts to post the chain letters and other bullshit that used to get thrown around in e-mails. That's it.

</comment><comment><USER3> It's good for job searching. I had a friend trying to move to Brazil to get a job as an architect and she used it to perform the following searches I recommended to connect with people there:

(1) Friends of friends who live in Brazil (2) Friends of friends who live in São Paulo (3) Friends of friends who live in Rio de Janeiro (4) People who live in Brazil the are Architects (5) People who live in Brazil that like Architecture etc.

With this she found a bunch of people she could reach out to that she has some degree of connection. At the end of the day, many people are likely to help someone that reaches out to them if there is a connection or common interest.

</comment><comment><USER4> I use it to find a list of friends in a given location like "Friends in California" or "Friends in Oracle" and use that list to contact them for help with our startup :) (I tend to lose track of the people on my friendlist, so it helps)

</comment><comment><USER5> Is it just me or there is some problem with the graph search. Everytime I try to type something long, the page get redirected to somewhere else making the feature unusable.

</comment><comment><USER6> Yes, I use it! Facebook has removed links to some basic views, such as "my videos." Graph search lets me get to those sorts of queries however I want! :)

</comment><comment><USER7> At least where I live no. I have never used it and none of my friends neither

</comment><comment><USER8> Just to stalk people...

</comment><comment><USER9> police, pedophiles, stalkers etc.</comment>


U.S. Companies Turn to German Vocational Training Model to Fill Jobs Gap - <AUTHOR> http://www.wsj.com/articles/u-s-companies-turn-to-german-training-model-to-fill-jobs-gap-1474911069 <comment><USER2> I grew up in the US and worked in Austria for a number of years in my twenties, I was always impressed with this part of their education and professional process, always wondered when American companies would get smart and follow suit.

Many jobs don't need a degree, they just need you to know how to do one thing really well. A short well focused training program would do that.

<comment><USER3> Yeah, but will the students stay? Or will they take their free training and go elsewhere?

<comment><USER2> Lets take an example like a auto body shop(i knew a guy in Austria that owned one and did training), although they could take the skills he had taught them elsewhere, he could also hire off of his competitors as well. Some could start their own thing, but not everyone is meant or wants to run a business.

</comment></comment></comment><comment><USER4> I posted an Ask HN related to this, would love to get some feedback on it:

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

Short version:

Does anyone do this in software for certain specialties (like application security, DevOps, etc.) either for people with no experience (or more likely) generalist dev experience? What Dan Luu termed "trainingball" and what Matasano (sort of?) used to do with its proverbial .NET programmers:

[https://danluu.com/programmer-moneyball/](https://danluu.com/programmer- moneyball/)

[https://news.ycombinator.com/item?id=7260087](https://news.ycombinator.com/item?id=7260087)</comment>


IBM passes Microsoft's market cap - <AUTHOR> http://money.canoe.ca/money/stocks/international/archives/2011/05/20110524-075940.html

<comment><USER2> This is a very bad point for Microsoft. They have a tremendous stable of researchers, tremendous market dominance, fairly solid software, and they seem to be unable to capitalize on that.

<comment><USER3> What do you mean unable to capitalize? They have a 32% profit margin (for comparison, Apple has 22%) and their dividends are considerably higher than the interest on your savings account.

Why should they care about their stock price? It's not like they're in dire need of a stock emission. They have a cool $20 billion in annual profit flowing in. Their employees won't mind that much either, since a low stock price means they get more shares and with a P/E ratio of under 10 they're likely to go up eventually.

<comment><USER4> _Why should they care about their stock price?_

Ultimately, they should care about the stock price because raising the stock price (or, more directly, the value of the company) is what we (the shareholders) pay them (the management) for.

"Here you go" say the shareholders (via the board) to the management. "Here's a freaking huge salary. Now go find ways to make my company bigger."

That doesn't mean they should care about day-to-day fluctuations in the share price, but certainly ensuring long-term growth in the share price is exactly what we're paying 'em to do.

(And I don't know why I used "we" all through there, because I'm not actually a MSFT shareholder.)

<comment><USER5> Microsoft pays dividends, at least.

<comment><USER4> True, but only 2.65%, which isn't enough to justify zero growth.

Actually I'm looking at the historical MSFT price right now, and it's interesting. Of course they had huge growth in the 90s, hitting twice its present value at the end of '99, before rapidly crashing back down to its present value by 2001. It's been flat ever since. In 2003 the company said "Screw it, we might as well pay dividends" and they've been putting out a slowly-increasing dividend ever since. Other than that, the lack of change over the last decade has been remarkable.

Interestingly, 2000 was also the year that Ballmer replaced Gates as CEO. Maybe what Microsoft really needs is a CEO with some vision.

<comment><USER6> 2000/2001 was also the years of the dot com bubble where every tech company tanked in some way. I think this has more to do with it than Ballmer's arrival (it was the time of the hugely successful and popular windows 2000 and XP, ballmer's damage if any would only be seen years later).

<comment><USER5> That was a lousy time to take over as CEO, true. However, the next decade has had plenty of opportunity - Google went from not much to a $500 billion company, and Apple went from dying to dominant. With a CEO who had a full vision, they could have added huge amounts of value to the company since then. Instead they've been coasting along and taking wrong turns.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Those once again predicting Microsoft's doom might keep in mind that Microsoft remains highly profitable and that 20 years ago pre-internet pundits were greatly exaggerating rumors of IBM's death in the wake of multibillion dollar losses.

</comment><comment><USER8> These types of articles are a serious problem. Stock prices reflect confidence in a company. The underlying "fundamentals" are only relevant insofar as they drive investors to buy and hold the stock. Negative articles about a company's business performance depress the stock by convincing investors that other investors will sell the stock.

But articles like this are a kind of gut-shot: They directly state that investors don't like the stock. This kind of thing can accelerate a stock's fall from grace, leading to more negative articles, more bearish sentiment, and the whole thing becomes a vicious cycle.

This is very different from an article being bearish about the company's management or products. You can hire new managers. You can fix broken product, buy new products, or develop new products. But you can't buy investor confidence (as Microsoft has proven with their dividends).

<comment><USER9> Apparently those dividends and the underlying "fundamentals" do buy something, because the company is still worth $200B.

<comment><USER8> I guess they do. How much of that stock do you own? I made the mistake of selling mine in the late nineties.

<comment><USER9> No position, and I don't like the stock, but my point is that the fundamentals do matter. MSFT remains a very large and profitable company, and it is at a stage where that influences valuation much more than sentiment does.

<comment><USER8> And my point is that the fundamentals matter insofar as they drive investor beliefs about other investors. I think what you are saying and what I am saying are compatible. As to whether their "fundamentals" will outweigh a decline in confidence brought about by this kind of negative press coverage... If I knew what would happen for sure, I could make a comfortable living as an investor.

</comment></comment></comment></comment></comment><comment><USER10> These are such lazy articles to write.

</comment><comment><USER11> _The move marks another unhappy milestone for Microsoft, which has failed to persuade investors that it can dominate the future of technology as it did in the past, and has seen its share price stagnate over the past decade._

I'm sure much of that has to do with not just failed products, but a lack of fortitude in sticking behind products, advertising them effectively (building the brand) and growing them into the "next big thing".

<comment><USER12> This guy also has something to do with it. Maybe.

<http://www.youtube.com/watch?v=lVMy0PFr8no>

<comment><USER11> Well, he's definitely the root cause I'd wager.

Perhaps not a bad CEO, but the wrong CEO for this company right now. He'd probably do better at a place like GE.

</comment></comment></comment><comment><USER3> Time to buy MSFT then.</comment>


Ask HN: What would be an interesting topic of Cryptocurrency to research about?  - <AUTHOR>

<comment><USER2> Open Transactions. There is a lack of coherent and complete instructions and documentation regarding building an OT server that is ready for business and understood by a large community of developers. I don't understand how OT can send and receive BTC without operating on the block chain or interface with bitcoind. And end to end tutorial on OT would allow you to research more than just cryptocurrency it would provide an education on a variety of types of crypto financial instruments and encryption in general. There are already some great talks/videos out there on OT, but from my perspective they are given from the view of someone who knows the tech like their own hands.

</comment><comment><USER3> [http://vitalik.ca/files/problems.pdf](http://vitalik.ca/files/problems.pdf)</comment>


Artificial leaf produces first drugs using sunlight - <AUTHOR> https://newatlas.com/science/artificial-leaf-first-drugs-sunlight/ <comment><USER2> > They're made of translucent materials that allow sunlight in and direct it > towards tiny microfluidic channels running through the material like veins. > A certain liquid is flowing through these channels, and the idea is that the > energy from the sunlight triggers a chemical reaction in that liquid, > turning it into something useful like a drug or fuel.

What a crap article, could this be more vague? 'A certain liquid'?

<comment><USER3> Reminds me of that Elizabeth Holmes quote

>"A chemistry is performed so that a chemical reaction occurs and generates a signal from the chemical interaction with the sample, which is translated into a result, which is then reviewed by certified laboratory personnel"

<comment><USER4> Sound like a perfect patent application, nice and broad, as all patents should be.

</comment></comment></comment><comment><USER5> Normal leaves can also produce drugs using sunlight.

<comment><USER6> True, but this way it avoids the GMO label. :)

I'm wondering about manufacturing costs, though.

<comment><USER7> > True, but this way it avoids the GMO label. :)

I think he's talking about marijuana leaves (THC) or tobacco leaves (nicotine), etc.

</comment></comment></comment><comment><USER8> Is the leaf structure in anyway necessary for the chemical reactions or is it just a nice, familiar form that makes the project seem more natural than some array of microfluidic chambers?

<comment><USER9> From the article and video, looks like the requirements are a thin tube and a block of translucent material to focus light onto the tube. And presumably the tube needs to be the right length, to give it enough sun time to react at a given flow speed.

I would guess that while the leaf shape in particular is not required, the loose space-filling curve is a good shape for the tube to get the most use out of the block. Could it perhaps be slightly more space-efficient with a rectangle and a heater-coil shape? Maybe, but I'd expect not by much, and I would expect other resource constraints (the reactants) to matter before you've filled all available sunny spots and need to maximize medicine-per- square-meter, if only because sunny rooftops are not exactly high-demand space.

<comment><USER8> I saw the leaves, read the article, then thought the leaf structure was a mere contrivance that wasn't necessary and perhaps made scaling manufacturing actually a bit harder/expensive than simpler geometries (neither chem nor manufacturing are domains I claim to understand, so someone more knowledgeable may have real insights).

</comment></comment></comment><comment><USER10> This feels a lot more like a vaporware joke than a real product. And even if real, the GMO is hands down a better idea. I'm tired of everyone thinking having a trash planet is somehow okay.

<comment><USER11> The chemistry in this synthetic leaf is much simpler and more controllable than in any GMO. It's not a replacement.

<comment><USER10> Maybe so, but what is the process of recycling one? Are we going to have landfills full of synthetic leaves in 20 years?

</comment></comment></comment><comment><USER12> I also grow traditional medicinal herbs in my farm.

I couldn't help but wonder if at the end of the day, it's really going come back to herbalism. After all, everything is 'organic'.

</comment><comment><USER11> I'd like to know more details on how this works, does anyone here have links to papers?

<comment><USER13> The paper is linked at the end of the article.

[https://onlinelibrary.wiley.com/doi/full/10.1002/anie.201908...](https://onlinelibrary.wiley.com/doi/full/10.1002/anie.201908553)

<comment><USER11> Oh, missed it thanks to mobile. Thank you.

</comment></comment></comment><comment><USER14> Reminds me of the lines from the song Big Yellow Taxi, "They took all the trees and put them in a tree museum and charged the people a dollar and a half to see them," and "They paved paradise and put up a parking lot."

I like that they're doing this. I wish our system wasn't at the same time burning so many leaves in the Amazon and all over that were helping us already.

<comment><USER15> On the otherhand, if us humans can make a replacement for trees which aren't susceptible to fire, which acts as as better carbon sink, and which more effectively produces useful stuff for us, then it isn't necessarily bad for us to replace trees with artificial ones.

<comment><USER16> Depends on your definition of "bad."

There are countless species of tree, shrub, grass, and moss in a typical forest. Also, fungi, bacteria, birds, reptiles, mammals, insects, arachnids. In the rivers, lakes and streams within a forest ecosystem there's countless fish, crustaceans, algae, plankton.

If we "replace" the trees, perhaps through fire, then we lose the biodiversity that comes with them. The biodiversity is a naturally balanced system with finely interweaved chemical processes that mutually support the whole. We lose the trees, we lose everything that comes with them and end up with desert.

A desert world covered in plastic "trees" is not the future I want for my children, and I am sure many would agree.

<comment><USER17> Right, the Never-Never of Australia has in the past offered license to a venture hoping to make much of that desert's temperature swings and day insolation, loping off the train and eventually (4mos.) faltering when the human maintainer looked best [they felt isolated and things broke.]

firstname.lastname@example.com nominates it (and The Sahara) to host Radiative Cooling (e.g. blown film er, tents or such) to buy us time to fix the full 20+ gigatons of carbon a year. It would lower risks to the photocatalytic and other green process chemical and pharma. efforts nearby. Indeed it's probably more attractive to make antimalarial drugs than to photoproduce ozone for use on catalysts to treat sewage (on N-doped MoO2 substrate, say.) Straps are necessary for the boot...good speed.</comment></comment></comment></comment>


Amon - Python-powered server monitoring, logging, error reporting with JSON API - <AUTHOR> http://thechangelog.com/post/17116309951/amon-python-powered-server-monitoring-logging-and-error <comment><USER2> At first I was really excited about this, I've spent the last couple days thinking about how I would architect a similar setup. Integration of monitoring, trending, and logging. Good graphing without rrdtool. Looks good. Digging deeper I see issues.

The free version is single server (monitors itself) and doesn't have alerting. Monitoring without alerting has its uses, but that's not what I'm looking for. Also, single server isn't what I want. There appears to be a planned payed version that supports multiple servers and alerting (check the page source for a link).

In a previous HN discussion of Amon (<http://news.ycombinator.com/item?id=3313991>) it was mentioned that the install script had errors. Looking at the install script was the first thing I did. It's kind of insane. It's the kind of thing it might be OK to do on your own servers, but asking others to run it is really dangerous.

The installer starts off by running "type dpkg &> /dev/null". If that exits cleanly is downloads a Debian version of the installer and executes it. If type doesn't exit cleanly it does the same check from rpm and runs the rpm version of the installer. dpkg is available in the standard Fedora repository. rpm is available in the standard Debian repositories. /etc/debian_version and /etc/redhat-release might be a better check.

The installer goes on to download binaries on MongoDB and install them in /usr/local/mongodb. It puts the mongo client in /usr/bin. Does "apt-get install mongodb" not work? It consistently does "tar -zxvf filename.tar.gz > /dev/null". tar -v is verbose, why direct verbose output to /dev/null? The init scripts _are_ the client and server, written in python. It works but that's odd, I want my executables in bin or sbin.

There seems to be a general lack of systems understanding, which is not what I want from a system monitoring tool.

If you are looking for server to accept and store application logs, check out logstash (<http://logstash.net/>). It will accept pretty much any non-binary input on any protocol, convert it to JSON, and output it to pretty much any storage system using any protocol. E.g., input AMPQ -> output Redis, or input syslog -> output MongoDB. In includes graphing and searching of your logs if you use the default output storage.

<comment><USER3> Thank you for the feedback.

For the Mongo installer - I really, really, really wanted to install it with one line of code, instead of writing 100 lines bash spaghetti, but that's not possible - it works on some distributions ( it works fine on Ubuntu 11.04+, but I always had problems with Ubuntu 10.10 and CentOS 5.5 ) and it doesn't work on others.

The problem with the logging are not application logs in general. I started working on that module, not because I didn't like the way I store my log entries, but because - I wanted flexibility on a program level. Every programming language out there has a diverse set of datastructures, but the logging modules are always limited to strings and levels. So you can't really "personalize" and "humanize" your log entries and also - you have one additional step - to convert the log entries to strings. And that depending on the language is between 1 and 4-5 lines of code. And these lines really add up.

I fixed the OS detection script, thanks for that

<comment><USER2> I really appreciate the hard work you have done, like I said, it is something I want, and I haven't put in the effort to do it. I know how annoying it is to log JSON, I made a tornado app the logged JSON through the logging module, and it was really annoying that the logging Formatter pickled objects into strings.

I'm not sure what the issue is with MongoDB. But if you aren't aware there is the EPEL (Extra Packages for Enterprise Linux) repository for RHEL and CentOS. It's a semi-official and safe repository run by the Fedora Project to add addition packages to EL. MongoDB is in there for EL5 (pretty old) and EL6. Also, easy_install is available for Red Hat and Debian in the 'python- setuptools' package.

I know it's common for people to install things form source on their own systems, but I feel that if you are doing something on someone else's system you need to extra careful. And that means ask permission before installing, use package management, and if you can't use package management suggest ways to resolve the dependencies (easy_install, pip, gem) without actually doing it. See the Homebrew install script as a good example (<https://gist.github.com/323731>). Another thing is following convention. The way you are using /usr/local is how /opt is supposed to be used. If you use /usr/local the files should be in /usr/local/{bin,etc,lib}. If want to create a package directory and have things like 'bin/' in it, use something like /opt/amon/{bin,etc,sbin,var}. <http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html>

Jordan Sissel, who created logstash, also created fpm (Effing Package Management) (<https://github.com/jordansissel/fpm>). It makes it easy to package things. It might help avoid bash script hell.

Create an rpm from the files in /tmp/install:

      fpm -s dir -t rpm --name amon --version 0.2.0 --depends mongodb --maintainer "Martin Rusev" -C /tmp/install etc/init.d/amon etc/init.d/amond opt/amon

Create a dep of tornado from pypi:

      fpm -s python -t dep tornado

<comment><USER3> Thanks for pointing out fpm. It looks really neat. Also with the Homebrew example, you made me realize that I don't need the bash installer at all ( It's extremely hard to maintain and extend, but that's the default convention - one line Unix installers have to be in bash script). Python and Ruby are perfect scripting languages, so the next installer will be in one of those languages with more options for the user.

</comment></comment></comment></comment><comment><USER4> Discussion from two months ago- <http://news.ycombinator.com/item?id=3313991>

</comment><comment><USER5> I wonder why they didn't use SNMP instead. It seems to be the standard for this type of thing.

<comment><USER6> I don't use SNMP neither do any other operations people I know. Its interface is complicated, hard to navigate and a pain to manage.

It's still used for network monitoring since that is what routers and switches talk but most people use something else for everything else.

I've see Ganglia, NRPE, Munin, custom servers and my personal favorite: bash scripts with graphite.

None of these quite match what Amon is trying to do but they all can get you an approximation of it. I'm personally going to have to look more at Amon. It might end up installed shortly.

</comment></comment><comment><USER7> Pretty cool! Does anyone here have any "real-world" experience with this?</comment>


DeepChess: End-To-End Deep Neural Network for Automatic Learning in Chess [pdf] - <AUTHOR> http://www.cs.tau.ac.il/~wolf/papers/deepchess.pdf <comment><USER2> This is an interesting idea, but the authors lose credibility by using Crafty as an opponent. Crafty isn't even among the top 30 current programs. Depending on which rating list you reference Crafty is 300 to 400 points worse than Stockfish.

>Crafty has successfully participated in numerous WCCCs, and is a direct descendant of Cray Blitz, the WCCC winner of 1983 and 1986.

That is some pretty weak sauce. "successfully participated"? Is that really worth mentioning? Also Crafty isn't exactly the direct descendant of Cray Blitz even though they were both written by the same person. And while Cray Blitz did win a World Championship some 30 years ago, it did so on the power of its hardware, not the strength of its software. It was running on a Cray supercomputer at a time when other programs were running on vastly inferior hardware. Rebel, who finished one point behind Cray Blitz, was running on a 6502.

Section 5.1, where they show diagrams on moves made by DeepChess is only meaningful if other programs miss the moves.

>This property has been associated with human grandmasters, and has always been considered an area in which computer chess programs were lacking.

But...

In the Aronian game Stockfish running in the browser (PNACL) finds the move Re5 in less than a second.

In the Alekhine game Stockfish finds the move d5 in about 2.5 seconds.

In the Seirawan game Stockfish finds the move c5 in about 1 second.

So while I find the idea interesting I'd like to see more intellectual honesty in this type of paper.

<comment><USER3> But..but.. Crafty still has an ELO of 3030, which is only about 300 pts below Stockfish. It would beat most human chess players (most grandmasters too), which is still quite an achievement, given that this neural net learned to play chess by itself (using no such human derived evaluation function). Cool right?

<comment><USER4> To put things into context, the best grandmasters in the world have a rating around 2800.

</comment></comment></comment><comment><USER4> I found this implementation using TensorFlow: [https://github.com/mr- press/DeepChess](https://github.com/mr-press/DeepChess)

</comment><comment><USER4> It is interesting that they removed they didn't allow positions that resulted from captures in the training dataset. I wonder why would that affect negatively the results. The explanation they give (opponent will likely capture back soon) does not sound enough to me. The tactics of the position should capture that. Is this because it is hard for the network to learn from positions with less material and tactical opportunities?</comment>


Are You Using The Right SQL Server Performance Metrics? - <AUTHOR> http://thomaslarock.com/2012/05/are-you-using-the-right-sql-server-performance-metrics/

<comment><USER2> Great article, these metrics are much better than those provided by the PerfMon. The "Signal waits" metric was new for me.

I'd really appreciate it, if people stop calling MS-SQL Server just SQL server. This way the title is a little misleading (to me), I was expecting a more generic article about obtaning SQL server metrics.

PS. I do realize that this name is more or less accepted among the Microsoft oriented DBAs.</comment>


Show HN: Charade, a Python Server for Composable NLP API - <AUTHOR> https://github.com/unicredit/charade <comment><AUTHOR> This a project we have been developing for a while. It is a server that allows to deploy APIs for many natural language processing tasks, while being able to mix technologies, and develop multiple different models for the same task.

A team using Charade can develop and evolve a suite of NLP capabilities - <USER2> NER, sentiment analysis and so on - while maintaining the possibility to customize them on particular datasets, and compose servers where only the relevant capabilities are deployed.

Charade is not itself a library for NLP tasks, although it provides some examples of models developed using various libraries. The teams using Charade will develop and customize their own models, using the provided ones can serve as example, or to provide some capabilities in a larger deployment.

We hope you will find it useful!</comment>


Building a Graphics Card For the Internet: A tour of the newest Imgix datacenter - <AUTHOR> https://imgix.exposure.co/building-a-graphics-card-for-the-internet <comment><USER3> What do you guys use the mac minis for?(I mean whats the compelling function, they must do something amazing to justify the cost and lack of features)

I also notice that you don't appear to have any physical isolation between the hot and cold aisles, is that just for the photos?

<comment><AUTHOR> Having OS X in our stack allows us to tackle a lot of use cases that come out of the prototypical design process. Format support, color profiles, color space conversion, typography, etc. are all mastered in OS X, but lacking in other operating systems. Apple has had the best imaging scientists in the world working for the last 30 years on getting these features right. We want to be able to leverage that expertise, whenever it makes sense, to produce the highest quality image. In this case, the consequence of that decision means racking Macs.

<comment><USER4> So, what does that all have that isn't covered by, say, ImageMagick, OpenCV, or whatever?

<comment><USER5> ImageMagick clearly grew up in environments with short lived processes - <USER2> command line, php, etc. Run it in a long lived process at your peril, and watch all your memory leak away. I also don't think it makes very good use of available GPUs at all.

</comment></comment></comment></comment><comment><USER6> Can I cross post some of the images from the blog post over to a community based on images of excellent cable management[0]?

Also, I have to say I really like the API(?) for manipulating images via url parameters, and even more, I really like that you used it on this blog post. When I went to pull the images from your site, I was able to get the full resolution versions of those images just by making some minor edits to the urls. This made making an album really easy[1].

[0] - [http://www.reddit.com/r/cableporn](http://www.reddit.com/r/cableporn)

[1] - [http://imgur.com/a/OFVqX](http://imgur.com/a/OFVqX)

<comment><USER7> Sure, as long as it references imgix. It would be nice if it linked back to the Exposure post too.

</comment></comment><comment><USER8> This is one of the most beautiful photostory layouts I've ever seen. But I couldn't focus on the text at all.

<comment><USER9> When you click a photo it loads the fragment url and gets added to the back history but when you hit back it doesn't close the photo takeover. That's pretty annoying but otherwise it works well.

</comment></comment><comment><USER10> You seem to have some missing content on your homepage: [https://imgix.exposure.co/](https://imgix.exposure.co/) Two white boxes on the right. I'm on Chrome 36 on OS X if it helps? It looks like the content is just plain missing. I disabled adblock but it didn't help.

The ascii art logo in your web site's source code is amusing!

I had no idea what the "Enjoyed" button at the bottom of the page was for. When I clicked it, the counter incremented. Is this some new stand alone like button that people are doing?

<comment><USER11> That's imgix's profile on exposure.co, not their website. Exposure is a separate product/company.

imgix website: [http://www.imgix.com/](http://www.imgix.com/)

</comment></comment><comment><USER12> Apropos. I'm reading this article, killing time waiting for my EC2 high compute spot instance to finish converting 33,000 TIFF images to PNG and resizing them.

</comment><comment><USER13> What's it like to administer a cluster of Mac Minis? Do any of the popular open-source orchestration tools work?

<comment><USER7> We mostly operate the OS X and Linux hosts using the same or similar tools; Ansible for automation, ssh / rsync / git for getting files onto hosts, and an automated network installer that fills the same niche as the one we use with Linux.

All of the core infrastructure is shared between OS X and Linux systems -- same DNS caches, NTP servers, etc. -- so there's no additional work there.

There are some things that are a little tougher to do on OS X. The userland utilities are different (and anything GPL is trapped on GPLv2 versions for all eternity, such as bash and rsync), and sometimes we have to work around that or build local packages.

Ansible doesn't really know about things like launchd processes or cron jobs, and OS X has nothing analogous to useradd, so we had to write some modules and implement branching in common playbooks to handle tasks in different ways on Linux and OS X.

Ultimately they run Unix, and once our environment is deployed onto a server you don't really notice the operational differences on a day to day basis.

</comment></comment><comment><USER14> Apple's operating system offers numerous advantages over other platforms when it comes to image processing.

what? like only support opengl 3.0?

</comment><comment><USER15> How does CoreImage etc. compare to Intel's Image Processing library (IPP)?

</comment><comment><USER16> who did your photography and how difficult was it to get permission to shoot inside the datacenter you colocate at?

the shots are excellently done.

<comment><USER7> Our datacenter provider was great about it, we got approval in a matter of hours. We never photograph anything that doesn't belong to imgix or provide details that would identify the building, so that makes the approval process much simpler.

The photography was all done by imgix's lead designer Miguel Cardona, and I helped out a bit by finding things for him to shoot. I think he did a great job -- it can be a real challenge to get visually interesting shots in a datacenter environment.</comment></comment>


CNN/Fortune: New ad outfit targets social-networking sites - <AUTHOR> http://money.cnn.com/2007/09/28/magazines/fortune/adnetwork.fortune/index.htm

<comment><USER2> The key quote here: "The profile information that's available on Facebook or any other social networking site doesn't mean your click through rate will be higher," says Andrew Chen, an entrepreneur-in-residence at Mohr Davidow Ventures. "It's really important to not confuse, 'I'm interested in cars or skiing,' versus 'I'm about to make a transaction.'"

<comment><USER3> No, but I'm betting that the CTRs will at least be higher than generic run-of- network remnant ads!

Disclosure: I'm working on an idea _very_ similar to this.</comment></comment>


Speeding up StackExchange - <AUTHOR> http://blog.stackexchange.com/post/459188139/speeding-up-stackexchange

<comment><USER2> I'm surprised they didn't come up with that solution on the first pass. I used to work for a web hosting company and I designed and wrote a similar 'dispatch' system for their private label customer portal that was used for resellers. Much better maintenance and performance.

<comment><USER3> That was my first thought too, seems like the simpler solution and the way I've built multi-site apps in the past.

It sounds like they are still using a different database per site, as opposed to one database and scoping data by an account_id. I wonder what the performance gain is over the complexity it adds.

I remember this is the same way that FogBugz was setup too and they ran into issue when they had so many small databases instead of one large one.</comment></comment>


Magnetically controlled swarms of micro-robots - <AUTHOR> http://www.sri.com/newsroom/video/micro-robots-for-smart-manufacturing micro-robot swarms, magnetically controlled manufacturing, etc. What's not to like.<p>Obligatory simpson's reference, I for one, welcome... <comment><AUTHOR> May do for the (small) assembly line, what 3-D printing is doing to part manufacturing</comment>


How Doom 2016 Renders a Frame - <AUTHOR> http://www.adriancourreges.com/blog/2016/09/09/doom-2016-graphics-study/ <comment><USER2> Seriously, I LOVED this new Doom. Best FPS I've played since Half-Life 2. So polished, and straight up FUN. Incredible level design, rewarding secrets for the min/max people, plenty of player upgrades for the role playing people, and copious amounts of straight insane combat for the action crowd. As far as I'm concerned, this game is perfect. Multiplayer is a different discussion.

<comment><USER3> Definitely a highlight of 2016. I haven't played a more unapologetically "gamey" video game in a long time. Case in point being the glory kills. Why does breaking off a demon's arm and beating it across the face give you health and/or ammo? Who cares! It looks great, it plays smoothly, and it's just _fun_.

I specifically remember an instance where Doomguy needs to shut down some power conduit. The doctor on the radio specifies that you only need to shut it down temporarily and that it can solve the world's energy crisis (by harvesting the energy of Hell). Without a moment's hesitation the Doom marine just destroys the power conduit.

You basically play a Rage Elemental.

<comment><USER4> I've only played the demo so far, but I like that the first thing we learn about Doomguy is that he has no patience for questgivers. When you pick up your armor in the second room, a comm screen comes on and says "Hello. I'm Dr. [whatever], the director of this facility, and I think that we can work together for our mutual benefit--" Then Doomguy rips the comm screen off its mount, throws it against a wall, and moves on.

I also like that, as you say, it doesn't matter why glory-killing demons buffs you, but some valiant writer _explained it anyway._ (The database entry for the armor says that it's shot through with channels that absorb and repurpose demonic energy, or something.) I really appreciate it when someone actually takes the time to justify game mechanics like that; it helps with the whole suspension-of-disbelief thing for me.

<comment><USER5> I haven't played the new Doom yet, but having recently watched the sequel to "Indie Game: The Movie", is the destruction of the comm screen related to the hate in the movie of current games starting out with so much hand-holding and obligatory tutorials that break the immersion and thwart the joy of discovery? If so, gotta love the commentary...

<comment><USER2> What's the sequel to Indie Game?

<comment><USER5> "Indie Game: Life After" [http://www.imdb.com/title/tt5998218/](http://www.imdb.com/title/tt5998218/) Currently on Netflix.

I liked this one a lot--it was much more reflective, and a lot of it was really an examination of how social media and gaming culture affect the creators both negatively and positively. For instance, rather than just touch on the soundbite part of Phil Fish flippantly saying "Japanese games just suck!" in a panel discussion, they pull back and show a much more thoughtful response from Jonathan Blow on the differences between versions of Zelda, and how now games feel obligated to hold your hands, remove discovery, keep you on the rails. Similarly, how criticism affected Edmund McMillen, creator of Super Meat Boy.

The best parts, though, are the more atmospheric elements: the workstations and tools, the thought processes behind game mechanics, and the deeper themes and commentary built into games.

The original "Indie Game" was much more of a linear storyline following the developers, and this one isn't like that.

<comment><USER2> Just got done watching this, it was painful. Embarrassing behavior by a lot of them, during that Zelda talk scene.Seriously around 15 minutes, of drawn out scenes, with Edmund ranting? Felt like all of the stuff left on the cutting room floor, slapped together to cash in on the success of the first one. Which I thoroughly enjoyed. To each their own I guess.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> It's a shame it's DRMed with Denuvo trash, and doesn't work in Wine because of that (of course they could release it for Linux and DRM-free to begin with, but it's probably too much to expect from today's Bethesda / id).

I'd rather wait for Shadow Warrior 2 (upcoming native DRM-free Linux release).

<comment><USER7> I guess you also don't watch cinavia protected movies, because it ruins the experience for you, and rather watch Sindel for the nth time?

<comment><USER8> Way to completely miss the point and put words into his mouth. He's just sad he can't run it in Wine, even if he legally owns it.

<comment><USER6> Luckily I don't own it, since it's unplayable for me anyway and I'm only buying DRM-free games. Just commenting on reports of those who tried to run it in Wine (expecting it to work because it's using Vulkan, and Wine already supports Windows Vulkan), and failed because of DRM.

</comment></comment></comment></comment><comment><USER9> The source list includes this nice presentation:

[http://advances.realtimerendering.com/s2016/Siggraph2016_idT...](http://advances.realtimerendering.com/s2016/Siggraph2016_idTech6.pdf)

It's cool how it's presented so openly, like a scientific project.

</comment><comment><USER10> "And then it does that up to 120 times per second."

I still get floored by our computing power sometimes.

<comment><USER11> Yet phones, which only need to draw text and flat bitmaps, are laggy and stall all the time.

<comment><USER12> As someone who's lived in both spaces(GameDev and Phone UI/UX engine development) there's certainly similarities but there's also some pretty stark differences.

For instance you're given no guarantees for execution time on a phone. That slice of time that Sony/MS takes for their overlay that's mandated to no less than x% of a frame? Doesn't exist on Android/iOS. The OS is welcome to wake up some background process(or another app on Android) and steal away one of your cores.

From a development side you just don't have the same resources to dedicate to performance on phone development that you get in gamedev. Combined with a culture that doesn't value performance as much(hello Java) that's why you see different results. Google/Apple is targeting the guy in his garage who wants to put out something in ~3 months. Rarely do you see the development times that games have and that is where the divergence happens.

<comment><USER13> Another difference (when it comes to games programming) is that Android phones in particular are incredibly varied, and the GPU drivers are often _really bad_ so moderately non-trivial code can easily crash the whole phone. The upshot is that you have to code very carefully to a small subset of OpenGL ES, which limits the clever stuff you can do do improve performance.

For example, trying to share your GL context across multiple threads is a good way to crash or hang your Android app, even though in principle it's supposed to work.

Windows hardware is also very varied, but it seems like desktop Direct3D drivers are relatively good compared to mobile GL drivers. (OpenGL drivers, unfortunately, are also really bad on desktop.)

</comment></comment></comment></comment><comment><USER14> If you use Nvidia Nsight you can see this exact same stuff happening every frame. Pretty nice tool to use if you ever wonder whats going on in your gpu every frame. We use it frequently for our simulation work.

<comment><USER15> What do you mean by 'actually'? The fact that you can use a tool to do it as well doesn't mean anything the article says is wrong.

<comment><USER14> I never said anything in the article was wrong. I liked the article. The 'actually' part was just a bad habit typo I hadn't noticed until right now so I fixed it ;-)

</comment></comment></comment><comment><USER16> I wonder if he was able to do this analysis with the original binary, or that he used the very recent (2 days ago) crack that removes the denuvo "anti- tamper" system.

<comment><USER17> This kind of thing is just done using a graphics debugger. It runs fine on the original binary: [http://i.imgur.com/GmeqKT5.png](http://i.imgur.com/GmeqKT5.png) [http://i.imgur.com/TXksZJj.png](http://i.imgur.com/TXksZJj.png)

</comment></comment><comment><USER18> Neat write-up. I had no idea screen space reflections were a thing.

<comment><USER19> Actually, this was sort of a thing already back in the 90s...

There is an alpha of Duke Nukem 3D (LameDuke) which had some screen space reflections. As I recall, the game crashed when you look up or down on the reflections, likely because of a pixel read beyond screen boundaries.

Discussion here: [https://forums.duke4.net/topic/1329-lameduke/](https://forums.duke4.net/topic/1329-lameduke/)

<comment><USER20> IIRC, and I don't know if it's the same with this alpha version, but I remember messing around in a level editor for the original Duke Nukem 3D, and mirrors were done simply by having an adjacent room with mirrored geometry :)

(and, I assume marking the wall between as a mirror so it knows to also render the dynamic objects mirrored--but I don't know for sure, I was quite young and didn't have a lot of success with this level editor because I didn't understand it fully)

</comment></comment></comment><comment><USER21> I'm a noob regarding 3D engines/hardware and have a question: Why haven't we moved engines to the 3D hardware?

Like, why can't we have a high-level engine running on the GPU itself, updated through drivers, and just feed it a monolithic file containing the game level's entire geometry, for example?

So that developers can say, here's the world, here's the textures, here is the models for monster A, monster B..and then just update each model's location and the camera position every frame?

<comment><USER22> We do upload everything, when it fits and makes sense. But with streaming and level of details - you dont waste hardware on invisible or barely visible stuff, so the visible stuff can get more details.Of course you can hit bandwidth limit or maintaining what's visible can use too much cpu, so it is a tradeoff. But usually opimum is not "just gpu".

Also postion is not enough, but that's details.

<comment><USER21> What I mean is, why don't GPUs _come with_ the equivalent of id Tech or Unreal Engine or CryEngine on the hardware?

Seems to me that if a certain tech is used across multiple games, couldn't it be factored out into the hardware itself?

<comment><USER22> GPU is bad at many tasks, has no direct access to disk, way less memory, you would have to build cpu in, and add interfaces to network, disk, sound, input devices. And why? The tech is already factored even between engines - libraries exist. The part of engine that benefit from being on GPU is uploaded there already just not in factory,but when you start a game, so it is customizable, so you can run new engine on old card.

</comment></comment></comment></comment><comment><USER23> The id tech5 engine for rage was already very impressive and ran extremely well on my mediocre machine, while still looking beautiful. Felt like my computer suddenly was twice as capable.

I wonder why the article mentions this: "Unlike most Windows games released these days, DOOM doesn't use Direct3D.".

Implementing Direct3d today seems a waste of development time to me and a useless self-restriction to a platform. Why would anyone do that? Is there a source that compares release titles of direct3d games vs opengl/vulkan on windows?

<comment><USER24> Most big time game dev targets consoles in addition to Windows. Each console has its own incompatible graphics API. When there is no business imperative to support PCs that don't run Windows, "useless self-restriction" is irrelevant.

From what I've heard, Direct3D (up to 11) and OpenGL work somewhat similarly, as will Vulkan and Direct3D 12. If a dev has already abstracted their engine to support a console (or two, or three), supporting another PC graphics API isn't that big of a deal, until driver bugs appear. Which they inevitably do; that's why new drivers appear suspiciously close to big game releases.

<comment><USER23> Yes, i somehow had the impression that ps4 used opengl, but they use some own cooked gl fork. So my point is more about pc games i guess, since opengl runs on all major oses. The only reason for d3d seems to be the xbox.

<comment><USER25> PS4's API has nothing to do with OpenGL. It has more in common with Vulkan and D3D12.

<comment><USER23> Indeed ps4s GNM seems to be more oriented to dx. So what? Consoles are a boring target anyways.

<comment><USER25> It doesn't have anything to do with DX either. It's a custom low-level API that's an evolution of the PS3's libGCM. As I said, it's closest counterparts on PC would be Vulkan or D3D12.

</comment></comment></comment></comment></comment></comment><comment><USER26> Is it worth playing online? I play solo (couch) but was wondering if it is any good to get PS online subscription for this.

</comment><comment><USER27> Doesn't this kind of breakdown make the explanation more complicated? Maybe it's my idiotic brain but I think of everything in terms of that one scene and can't extrapolate the Information to various scenarios.

<comment><USER28> I'm thinking the target audience is other game developers.

Most modern game engines have most of the features they talk about (the article really good about linking to sources), but those pieces are organized in a different manner so you end up with different restrictions, changes in performance, or scalability to different hardware / scenarios.

The novel thing here is how they put together the pieces, not the pieces themselves. Most cutting edge articles are about a specific technique, so it's really good to see how it all fits together in an article like this.

<comment><USER27> Yeah I think it's just my gaps in knowledge that make it hard to follow, thanks for the explanations :)

</comment></comment></comment><comment><USER29> Oh wow, I had no idea id had another hit on their hands. I just finished reading "Masters of Doom" and was craving some of the classic doom gaming experience that I had growing up.

</comment><comment><USER30> Anyone know of good examples of source code applying these sort of techniques together?

</comment><comment><USER31> And still some people says video games are not art.

<comment><USER32> Who says this?

<comment><USER33> Didn't you read? "Some people", the most pernicious of all groups.</comment></comment></comment>


People.ai (YC S16) Helps Businesses Manage Sales Teams with Behavioral Analytics - <AUTHOR> http://themacro.ycombinator.com/articles/2016/08/peopleai/ <comment><USER2> Hello all, CTO and co-founder here. Happy to answer any questions about the analytics, stack or anything else.

Cheers, KY

<comment><USER3> "Hence, we are coining a new term - People Analytics."

Not correct to say this--people analytics has been around since at least 2013 ([http://www.eremedia.com/tlnt/how-google-is-using-people- anal...](http://www.eremedia.com/tlnt/how-google-is-using-people-analytics-to- completely-reinvent-hr/))

Congrats on the YC funding! Just referred you guys to my colleagues in the sales department.

</comment></comment><comment><USER4> Hey hackers, I'm the founder of People.ai. Will stick around to answer any questions!

Cheers- rogik

<comment><USER5> What sort of sales environments have you find this works in, doesn't work in? Particularly interested in enterprise sales were you will typically have smaller pipeline but larger opportunity size.</comment></comment>