Show HN: BackuPHP – Automatic cloud backup of all files on your webserver - <AUTHOR> https://backuphp.com/ <comment><USER2> So honestly, the name... my immediate thought is "does it not back up my Dell?" I presume this isn't actually supposed to suggest it's for backing up Hewlett-Packard PCs, but that's my first go-to thought, and why as a potential customer, I might not even click through the link.

What does "HP" stand for in this context?

<comment><AUTHOR> HP means HomePage in this context and also is a pun for backuPHP as the tool is written in PHP.

But I really do appreciate that feedback! Maybe different capitalization will help here? So always referring to it as BackuPHP ?

<comment><USER2> BackuPHP is definitely much more clear than BackupHP, as PHP instantly relates to "something for my website" in my mind.

I feel "home page" is a dated term that a lot of people wouldn't think of, particularly as an acronym, the last time I saw a blue underlined link titled "Home Page" may have been the late nineties. I think the term has been supplanted by having a "website", and that website having just a "home".

Some other side notes: ourselfs -> ourselves, safed -> saved, hundret time -> hundred times. Probably a couple more little grammar issues in the FAQ. The "see how it works" button doesn't work for me, but it's probably because I have Tracking Protection enabled on Firefox and the Privacy Badger extension.

Hope this helps!

<comment><AUTHOR> Thanks for your help here! Yeah that button opens a inline vimeo player..PrivacyBadgers seems to block that.</comment></comment></comment></comment>


Death Note: L, Anonymity and Eluding Entropy (2017) - <AUTHOR> https://www.gwern.net/Death-Note-Anonymity <comment><USER3> I would frame things a little differently. Light makes a lot of mistakes because the Death note is incredibly powerful and there would be almost no reasonable way for L to catch Light without Light making obvious mistakes (and would also make for a boring story). Undoubtedly, the biggest mistake Light makes is revealing the existence of the Death Note, and all the rules therein, which not only gives L (almost) all the information he needs, but also traps him from any subsequent activity.

Without knowing the rules of the Death Note, I don't think L could have done anything (besides outright abducting/murdering Light) to stop Light, even if he is 100% sure Light is "responsible".

That said, I feel like a much simpler solution than what's proposed at the end of the essay is:

1\. Gather up the names you want to write over the course of a week. 2\. Wait another week, then write it at a specific point of time of the week. 3\. Keep to that schedule.

The names need to be as public and as well known as possible such that it would be impossible to trace the flow of information. (Remember, the goal is fear, not specificity.) Keeping to that schedule means you will never leak more information thereafter.

<comment><USER4> I agree with this completely; Light makes up for what I would say is an inferior deductive ability by using a supernatural item with rules that defy ordinary logic and reason (L catches on early that such a tool must exist with his TV announcement stunt, but he can't possibly know the ruleset of such an item).

The only way Near and Mello end up overcoming this advantage is by: (1) Mello obtaining a Death Note of his own, allowing him to ascertain the real ruleset, and (2) Near not being directly involved in Light's life the way L was, and there not leaking any extra information about himself until the finale. That last bit is especially critical considering L was taken out precisely because he was physically present and therefore had his real name observed by Shinigami eyes.

I think the most under-utilized ability of the Death Note in the series is the ability to specify manner of death. Light uses this on occasion, but he could've have made many criminal deaths seem accidental or suicidal in addition to staggering their occurrences in time in order to throw L off from the very beginning.

<comment><USER3> >I think the most under-utilized ability of the Death Note in the series is the ability to specify manner of death.

Absolutely. This ability is so significant that it completely overshadows the ability to kill people. If anything, the deaths should be treated as an unfortunate byproduct of being able to control people for 23 days in a row.

<comment><USER5> There were limits to this ability though. All behaviour had to be in character.

<comment><USER3> Agreed, but there is still so much you can do. You can make dictators liberalize their countries. You can make billionaires donate away their wealth. And so on.

</comment></comment></comment></comment></comment><comment><USER6> This is somewhat related to a thought experiment of mine.

Suppose you had a means of transmitting information back in time - a one-node network that effectively could email to itself with a timestamp (in the past) being the message's "recipient."

Suppose such a thing existed in the world today. Assume the individuals in possession of such a thing were very intelligent, very careful and very guarded about its use.

Could you still detect that such a thing existed by observing real-world events - stock market changes, tech innovations, amazing coincidences and the like? What evidence would you look for?

<comment><USER7> If you possessed such a device then errors in your "predictions" would be indicative of another party using a similar device. As such, I assume multiple parties would soon discover each other, engage in an incomprehensibly complex time-battle, and there would suddenly ( _instantaneously_ in all patched timelines) be only one such party.

Furthermore, I imagine it would be very easy for such a party to accidently blunder into a situation where they lose control of the time-messaging device, erasing all evidence of its own existence and leaving the timeline perturbation-free until such "time" as reverse time travel is rediscovered.

<comment><USER8> As a fan of time travel movies, I'd watch this.

<comment><USER9> You may like the anime Steins;Gate then. The plot is based on the idea of sending a small amount of information back in time and changing the sender's present, and then finds that another organization has been using this and is trying to control the world with the power.

</comment></comment></comment></comment><comment><USER10> Very interesting article, my only real contention is on the point made in Mistake 4:

> You can see it was a gamble by considering if Light had been outside Kanto; > since he would not see it live, he would not have reacted, and all L would > learn is that his suspect was in that other 2/3 of the population, for a > gain of only ~0.3 bits.

My understanding of L's plan (based on what he said in the broadcast) was that he intended to do several live broadcasts, one in each region, until he was caught. Lind L. Taylor was a death row criminal being offered a deal to survive, and would've gone along with doing several broadcasts. Additionally, even if they didn't do it live and simply recorded it there's no way that Light would've known it wasn't live and he would've acted in the same manner (and since Lind was in L's custody, L would've known if he died even if Light didn't).

At the time Death Note was written, mass internet communication wasn't as prevalent and so you wouldn't expect people to find out about events like the broadcast for at least a few hours (long enough to do broadcasts in each region). L probably hoped that Kira was in a less populated city since it would cut down on more bits of entropy (and I'd argue it would've been a better idea to start broadcasting to smaller cities first -- since it's more likely an event like this in a big city would be quickly broadcast to the rest of Japan).

<comment><USER11> From a pure efficiency point of view, if you are bisecting like this it is best to divide in halves, which gives you 1 bit of information each time regardless of the outcome.

Of course, this assumes you can continue to apply the same method many times, which probably doesn't apply to this case, as you can only fool Light with a similar method a limited number of times (possibly once only). In that case you probably want to do it more fine-grained than 1/3 so that you get more bits of information once you get to the first (and therefore last) successful attempt.

</comment></comment><comment><USER3> As a fun mental exercise, I've been wondering if the Death note could've been used to solve difficult computational problems. As far as I know, the following abides by Death Note rules, in particular we know that the Death Note is able to "manipulate" luck. Assume Bob Robert is an amateur mathematician, so this is something he would reasonably do and guess.

"Bob Robert. Writes down a number X>=82,589,933 where 2^X-1 is a prime number as his guess of the next largest known prime number, and it is indeed correct. Then dies of a heart attack."

<comment><USER12> If I remember correctly, it has to be something that the person was actually capable of, otherwise the person just dies.

<comment><USER3> The person is capable of writing down X, it's a handful of digits. Moreover it is not unreasonable for an amateur mathematician to do so.

The fact that they entirely lucky that the series of digits indeed satisfies the mathematical condition we want is incidental but I believe abides by Death Note rules.

<comment><USER13> I think "capable" also takes into account knowledge they have.

It's been a while since I watched Death Note, but isn't this brought up as a reason why Kira can't do, "writes down L's real name, then dies of a heart attack."?

It would be theoretically possible for someone to be lucky enough to guess L's real name, but apparently the note has a bullcrap detector or something where it eventually just says, "no, they wouldn't _really_ know to do that."

<comment><USER3> Well we know the reason why Light says he can't do that is that "the person wouldn't know the name". But you're right in actuality that would allow for "person guesses the name, and is correct". And I think that _is_ a loophole.

Let me put this another way. I think the following would be considered a valid Death Note command.

"Person flips a coin 100 times in a row, and gets heads every time".

Now how is that different from

"Person runs an RNG digit generator 100 times in a row, and gets 9s every time".

Then

"Person runs an RNG digit generator 100 times in a row, the 100 digit number is exactly divisible by 123456".

Then

"Person runs an RNG digit generator 100 times in a row, 2^x-1 of that number is prime".

And if this is all iffy, let me propose an alternative. Let's assume (I'm not 100% sure of this) that we can _verify_ large prime within 23 days. Heck, build a data center to do this if we have to.

"Person runs RNG to generate x such that 2^x-1 is prime. Uses machine and verifies that it is indeed prime. Dies of joy."

You can similarly use this to crack hashes, etc.

<comment><USER14> The Death Note doesn't give the target any magic abilities, that the previously didn't have.

> "Person flips a coin 100 times in a row, and gets heads every time".

I'm pretty sure this would be interpreted as "The person has to flip coins until they have a 100 streak of only heads". This will obviously take a really long time, and the person might be driven insane before that. Similar things go for your other examples.

In a comment further up you wrote:

> in particular we know that the Death Note is able to "manipulate" luck

I don't recall that specifically. Even then, I would guess that this has it's bounds. I also have the feeling (not backed up by lore, but I think it would fit in the world), that bigger manipulations would take more energy from the respective shinigami, so while a shinigami might be able to manipulate luck enough to make someone win the lottery, finding prime numbers would be too draining.

<comment><USER3> >I'm pretty sure this would be interpreted as "The person has to flip coins until they have a 100 streak of only heads".

I disagree. For example, Light has people die of getting run over a by truck. But the Death note does not interpret this is as "person repeatedly crosses the street until they get run over by a truck". Instead, events are (reasonably) manipulated such that a truck runs them over. Similarly, the coins would be manipulated to have 100 heads in a row.

>I also have the feeling (not backed up by lore, but I think it would fit in the world), that bigger manipulations would take more energy from the respective shinigami, so while a shinigami might be able to manipulate luck enough to make someone win the lottery, finding prime numbers would be too draining.

I wouldn't be surprised if this is true, but hey, what's a couple of Shinigami to save us some compute!

<comment><USER13> My impression is that the Death Note would only manipulate luck to a certain degree -- ie, if the odds of even occurring are greater than 1/x, just make it happen. That would allow you to get hit by a truck crossing the street, but not allow you to win a coin flip 100 times (7.8886091e-31 odds). You'd probably have to experiment to figure out what the threshold was.

That being said... let's assume you're right. If the death note can manipulate odds to an arbitrary degree, you're thinking _way_ too small right now. It would be much more efficient to write:

"X opens a laptop text editor, closes their eyes, and hits keys randomly. They open their eyes and discover they have accidentally written an algorithm for quickly factoring large numbers. They copy and paste this algorithm into an encrypted email to email@example.com, then die by jumping in front of a bus."

If X dies of a heart attack, you know your instructions didn't take and there's no algorithm for quickly factoring large numbers -- the problem was impossible. But then you can start modifying your query for, "an easy strategy for keeping cubits stable", or whatever you want to follow up with.

If I have a fast-track to get at almost any (possible) invention I can think of, I'm not going to waste my time factoring large numbers!

<comment><USER3> >If the death note can manipulate odds to an arbitrary degree, you're thinking way too small right now.

Right, what I feel might be the case is that the targeted output needs to at least be verifiable (hence see my second proposal). An argument could be made that unless the person has a way of verifying their action, there is no way to ensure that the desired outcome is achieved, so the instruction is invalid. (Separately, at least in your written example, it is possible for the person to be mistaken about the validity of their method!)

On the other hands, actions that are (machine) verifiable fall right within the scope of the Death Note (insofar as the verification instruments are also reliable, and verification happens within 23 days). I emphasize machine verifiable because the Death Note has various rules concerning other people, which I won't wade into. If "X starts his car and his car engine explodes" is valid, then so should "X keys a random string of inputs into a machine, machine returns True, then X dies."

So no we've limited the scope of DN-solvable problems to 23-day machine- verifiable problems. Now we just need to know what set of problems are 23-day machine-verifiable...

<comment><USER13> > it is possible for the person to be mistaken about the validity of their > method

That's a good point.

> are 23-day machine-verifiable

Here's a followup question. Can a person be part of the machine?

For example, I might rephrase my earlier entry to be:

"X closes their eyes and types random keys, such that they form an algorithm for quickly factoring large primes. They email that algorithm to email@example.com and receive a confirmation that their algorithm is sound. At which point, they become so excited that they run into the street and are hit by a bus and killed."

My worry with that is that if there is some kind of force behind the death note, it might decide to just manipulate _me_ instead of the person writing the algorithm. I don't want an evil genie scenario where I just accidentally write "yes, it works", instead of "no, it doesn't."

By extension, if we have a 23-day machine-verifiable problem, am I allowed to specify that the machine is not glitching or producing errors? In some cases, that might be more likely than finding the correct answer. Shinagami picking the most likely scenario that technically fits the criteria might be an effective way for them to reduce some abuse of the system.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> > Worse, the deaths are non-random in other ways—they tend to occur at > particular times! Graphed, daily patterns jump out.

I actually ran this kind of analysis on my use of Hacker News a couple of months back. It turns out that the patterns mentioned only really work if you have something that resembles a normal sleep schedule, which I clearly do not:

      12 AM  *********
      1 AM   ***********
      2 AM   *********
      3 AM   *******
      4 AM   *****
      5 AM   ****
      6 AM   ***
      7 AM   **
      8 AM   ****
      9 AM   *****
      10 AM  *********
      11 AM  ***********
      12 PM  ***********
      1 PM   ****************
      2 PM   *************
      3 PM   ***************
      4 PM   ************
      5 PM   **************
      6 PM   ***********
      7 PM   *******
      8 PM   **********
      9 PM   *********
      10 PM  ********
      11 PM  *******

(Each * corresponds to 25 comments; to my knowledge the vast majority of comments were made from PST)

<comment><USER16> As in the OP, it's pretty obvious when you are sleeping.

<comment><USER15> Sure, but would you believe that I'm now sleeping ~10 PM-7 AM? I'm not convinced there's enough information there to narrow down my location to anything smaller than a hemisphere.

</comment></comment></comment><comment><USER17> The ability to kill anyone one chose would be a far more terrifying weapon if used to instill fear. If someone used to this ability to kill individuals who didn't fit their agenda but kept anonymity about their goals, whatever changed they wished would only happen fairly slowly and haphazardly - those replacing the dead wouldn't have that much chance to produce different policies.

Also, even a bunch of seemingly random deaths with implications would likely produce terrifying fits of paranoia and retribution in the populace - <USER2> humans can't not-see patterns in the thing they focus on, so a death-weapon would change the world this way - not sure if that what your psychopath wanted.

If an actor could kill "anyone nominated to head party X" then things would get ugly but even more, "do these things and you're immune" notes could certainly get people moving, especially if these were seemingly benevolent. "Random company heads die 'till CO2 production declines X amount" for example.

<comment><USER18> The Death Note could control what the victim did before their death. So Global Warming Kira could definitely have those random company heads die next to a piece of paper with "the deaths will continue until CO2 declines" written on it.

<comment><USER19> Then you could write, "Before their death, the CEO of Gas Inc. will invent nuclear fusion, spread it to every market, and then live a long and happy life."

<comment><USER20> There are rules that would prevent that (they can only do things within their means, 1 month time limit).

What could work is an investment in such technologies, public announcements and then disappearing, maybe falling off a yacht or such a thing.

<comment><USER21> "Scientist X, working on Fusion, discovers method that advances research by decades, then dies of happiness and a caffeine overdose"

</comment></comment></comment></comment></comment><comment><USER22> Characters in fiction regularly behave sub-optimally even if they're set up as geniuses, for the most mundane meta reason: It's a work of entertainment, and the plot wouldn't get interesting otherwise! We should always be very aware that any fiction, even ones that attempt speculative simulations, is always shackled by the need to keep being entertaining and interesting -- there are craptons of concepts and possibilities that _can_ occur or _will_ become deeply relevant to humanity but hardly ever gets explored in fiction because they're boring to read or write about.

<comment><USER23> I really enjoyed Harry Potter and the Methods of rationality. I understand not everyone would like such an intelligent main character though.

</comment></comment><comment><USER24> One thing the author seemingly didn't address - the overlap in entropy between the different mistakes. For example, Mistake 2 in timing leaked 6 bits, but those same 6 bits got leaked as a part of Mistake 4 in using confidential police information. Mistake 4 on its own is possibly the worst, but if you consider what L already knows, it's only 5 incremental bits lost.

Despite that, loved the article.

<comment><USER25> The two mistakes corroborated each other and the second was only possible to observe based on the refining characteristic intrinsic to the earlier mistake. Additionally the second wouldn't have necessarily invalidated the first six bits, though it would strengthen refinement along a different path.

</comment></comment><comment><USER26> This was well cited with a lot of fun media references. The author makes a few interesting points on rationale for randomization, calling known unknowns and confounding factors as something one could plan for and avoid.

Anybody know of other writers that do research and writing in this style? I quite enjoyed it.

<comment><USER27> Gwern Branwen has a large body of work on a broad range of topics. You could go to the top of his web page [https://www.gwern.net/](https://www.gwern.net/) , pick a topic that interests you, and start reading.

<comment><USER28> I admire his site, but for some reason, I found his content very hard to digest. I can read if someone links to any particular article, but browsing through the index is very overwhelming to me.

I don't know if it's just the sheer amount of content that feels intimidating or anything else (like reading long paragraphs of sans-serif fonts on screen).

</comment></comment></comment><comment><USER29> This website really impressed me - a lot of interesting stuff to read, for sure.

<comment><USER30> Agree wholeheartedly. It's rare to find a website today that is so abjectly different than the rest of the web.

<comment><USER31> Abject =~ despicable

<comment><USER32> I find 'abject' an amusing adjective to apply. It makes one imagine the author writhing on the ground in despair after loading a standard website, and despondent - _o tempora! o mores!_ \- resolving to be different.

(Not entirely wrong, as it happens.)

</comment></comment></comment></comment><comment><USER33> If it's true that privacy is dead, how come Satoshi is still unknown?

<comment><USER34> He/they may be known to some. [https://medium.com/cryptomuse/how-the-nsa- caught-satoshi-nak...](https://medium.com/cryptomuse/how-the-nsa-caught- satoshi-nakamoto-868affcef595)

<comment><USER35> Stylometry only works too an extent with helping to identify what's what. I could just stylometry to show that this document was written by a professional screenwriter, but it writing style isn't unique enough to identify one person out of billions. Gwern has an excellent post about this.

<comment><USER36> I remember a really impressive demo where someone found all the alt accounts of a HN user using stylometry: [https://news.ycombinator.com/item?id=17944484](https://news.ycombinator.com/item?id=17944484) The account didn't have that many comments on it (maybe ~1000 karma)

He also claims to have used the same algorithm for identifying company insiders for trades (see parent comment in that thread for context).

I don't think he was bullshitting even though his tool isn't public because he has a different NLP project that works reasonably well ([https://hnprofile.com/](https://hnprofile.com/) which can find users based on their interests).

</comment></comment></comment></comment><comment><USER37> This is up there for one of the most thorough proofs that God (if she exists, for most meanings of exists) cannot interact with the universe in ways that contravene statistical mechanics.

</comment><comment><USER38> Someone on HN linked to a list of the best anime - and I can't find it now, because I foolishly thought I would remember the name of the website.

Anyone know what I am talking about? The "winning entry" was, I think some kind of pretty abstract anime story. If Death Note was on the list at all (the list may have been compiled before Death Note was aired), it was not on the top of the list. The list was written by a single author and it had extensive long-form style commentary.

<comment><USER39> I think you're a few bits short of specifying a website here

</comment></comment><comment><USER40> Death Note is great...

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

Death Note is based on the "keep your enemies close" that turns up a lot in Japanese Culture. For instance, more than once in Sailor Moon the bad guys wind up embedded with the good guys, and the same thing happens in Tales of Symphonia. Thus it is almost necessary for the plot for Light to move in with L.

</comment><comment> La-ang Light's mistakes are part of the plot, not an error in it. He eventually loses as the Shinigami predicts that he will be the one writing his name on his Death Note. L also sacrifices himself knowing that he should close down on Kira and Near eventually puts an end to it. Yet my issue was with Light killing using the bag of chips with the TV inside, what kinda TV could fit there and render visible information with low light in a dark surveilled room?

<comment><USER41> Ah but if he hadn't done that we wouldn't have gotten the classic "I'll take a chip.... AND I'LL EAT IT!" line which really couldn't be more critical to Death Note.

On a more serious note I don't think this is trying to say the show is wrong for having these mistakes just that the character could have done better and thinking about how is fun and allows you to examine just how much information leaks from seemingly benign sources.

</comment></comment><comment><USER42> This might be the nerdiest article I've seen.

Also a great illustration why CoinJoin is not a complete transaction privacy solution for Bitcoin.</comment>


Notifications for when new imagery is added to Google Maps and Earth - <AUTHOR> http://Followyourworld.appspot.com

<comment><AUTHOR> Would be best if they would also say how the registration of the imagery changes/improves with each update. That would let others who base their geodata on Google imagery propagate the update.</comment>


Tim Bray doesn't know operator precedence rules - <AUTHOR> http://www.tbray.org/ongoing/When/201x/2010/06/29/No-Defaults <comment><USER2> Good man. This is the sort of irrelevant detail beloved of pedants. It does not make you a better programmer to know this sort of thing.

You probably should know your language's idioms, but this sort of detail is not useful. I'd rather see a few extraneous parens around things that the compiler can happily remove. This sort of attitude is why my Perl code tends to be readable. There are all sorts of shortcuts and simplifications if you know the edge cases of the language, but I'd rather have clarity than cleverness.

e.g. my Perl coding style: [http://blog.jgc.org/2010/01/more-fun-with-toys- ikea-lillabo-...](http://blog.jgc.org/2010/01/more-fun-with-toys-ikea-lillabo- train.html)

<comment><USER3> That's a beautiful piece of code, and really interesting too. It's a great example of how to document what the code is intended to be doing rather than documenting what it's actually doing (eg: "add one to i"). I would maintain your code any day.

<comment><USER2> Thanks. If I expect a piece of code to survive any length of time I try to document it well because I tend to forget how/why I decided to do things. In that piece of code, I knew that I'd forget the trig. part quite quickly so I figured an ASCII diagram was needed.

If you enjoyed that piece of code you might also enjoy the C code linked here: [http://blog.jgc.org/2008/02/tonight-im-going-to-write- myself...](http://blog.jgc.org/2008/02/tonight-im-going-to-write-myself- aston.html)

Perhaps there should be a 'beautiful code' blog as a sort of counterpart to the Daily WTF. I could reuse the domain usethesource.com.

Update: An there it is UseTheSource (<http://news.usethesource.com/news>). Submit examples of beautiful or interesting code.

<comment><USER4> Awesome! I hate seeing people say "Make good comments, not like X". I have given up on asking "what would be a good comment" because no one seems to be able to point to a good example. This will be much helpful :).

</comment></comment></comment></comment><comment><USER5> I mostly do this, especially for mathematical expressions, but in some cases languages have developed idioms where the common and readable style is to leave out some parens. It's dumb to do it just as some kind language-lawyering way to save chars, and it does raise the amount of background knowledge about the language you need, but putting parens _everywhere_ can really break readability as well.

For example, this is idiomatic and readable C (ignoring whether it's a good idea to write this specific string-copy loop these days):

      while (*dst++ = *src++);

whereas this is line noise that you have to decode:

      while ((*(dst++)) = (*(src++)));

The first form does require you to know that ++ binds tighter than the dereferencing operator, so the increment is incrementing the pointer, not the value it points to. But it's easier to scan, and used enough that people who code in C presumably can just glance at it. It makes a nice syntax pun due to the interaction of the order of operators and the postincrement, too. You can read it as: deref dst, then increment dst, which gives the nice intuition that the deref happens, and then the increment happens. The parenthesized version is more confusing on that point, and you'd probably just want to rewrite it into a more verbose loop with 3 separate body statements, if you were going to go that route.

Heck, even Java does this regularly. Method-call dot-chaining is idiomatic in Java, even though it relies on an evaluation rule to work properly:

      foo.bar().baz().qux()

Not idiomatic:

      ((foo.bar()).baz()).qux()

For the same two reasons basically. The fully parenthesized version is too noisy, and the unparenthesized version has a nice syntax-pun interpretation: it's a "chain" of results going down the list of methods.

<comment><USER6> I'd just like to point out that in your string example, you gain nothing by keeping that string copy short. The compiler doesn't see lines, all it sees are tokens, and what you've written there is fine for a compiler to read, but difficult for a human.

Instead of adding parentheses, try writing it like this:

      while(*dst)
      {
        *dst = *src;
        dst++;
        src++;
      }

It's instantly more readably, it's very obvious what's going on, and you've lost no performance. There's also no parentheses to add.

<comment><USER5> I actually find that style considerably less readable, though admittedly I'm quite familiar with C code. It's just less common for one (not the idiomatic way of writing code in the language), but it also emphasizes this tedious loop-iteration-at-a-time interpretation, while the original is easy to read as a sort of Matlab-style single vector operation, once you're used to it ("copy all the srcs to all the dsts").

Plus, once you start piling on a bunch of such code-explosions, you end up with functions that are much harder to scan, because what could've been an easy to scan 8-line function is pedantically written out as this super- explicit 30-line thing.

</comment></comment></comment><comment><USER7> I'm 100% with Tim here, I've never felt the need to memorise the order of precendence for operators - as long as I've got my parens I'm happy. Luckily I seem to work with others who feel the same way. If we did have someone insistent on pushing the boundaries of readability I'd spend about a minute looking up the precedence rules then another few weeks framing the perpetrator for some real-life infraction as a form of punishment (depending on the particulars this could range from petty theft all the way through to light to medium treason)

<comment><USER8> Item #2 of The Zen of Python is my favourite:

        Explicit is better than implicit.

</comment></comment><comment><USER9> I would draw the line at additive, multiplicative operators generally, but I would also include &&, || and comparisons in C-derived languages (contra Tim). Knowing the extra three precedence levels is a cheap investment that covers such a wide range of commonly used languages - C, Java, C++, C#, bash's let/for/etc.

I don't think it's necessary to have to parenthesize:

        u*t + a*t*t / 2.0

Working with Pascal (Delphi) quite a bit as I do, I also find this idiom - required in Pascal with its limited number of levels - tedious:

        if (a > b) and (b < c) then // ...

The trouble is that you begin writing this:

        if a > b then

but updating it to add in the new conditional means you have to go back and forth over the expression inserting parentheses. I think C and related languages at the expression level make this better by making comparison operators have a higher precedence to boolean operators.

Bitwise operators, of course, have an entirely different precedence level and if you're using C, it's easy to get caught out:

        if (flags & MASK == FLAG1 | FLAG2) // cue much confusion

<comment><USER10> I fully agree, but replace "much confusion" with "compiler warning".

<comment><USER9> The only compiler I use that will warn for it is gcc, and even then you need to use -Wall.

</comment></comment></comment><comment><USER11> _A related case: I have never bothered to learn, nor will I, what the default modifiers for Java's variables and methods are. Thus, every one of those things gets one of private or public or protected in front of it. There are way better things to load up the finite cupboard-space in my mind with._

Oh, no, man, that's not good! "Default" visibility (package-private, i.e. visible within the same package, but not outside of it) is there for a reason, and that reason is that it's _not the same as public, private, or protected_!

There's literally no way to specify a package-private variable without leaving the modifier off, though some people (including myself) like to write

      /*package-private*/

as the visibility, just to be explicit.

Aside from that nitpick, I agree with you, though, when in doubt, be explicit, it will save you a lot of trouble in the long run.

</comment><comment><USER12> "I have never bothered to learn, nor will I, what the default modifiers for Java's variables and methods are"

That means that he doesn't understand "package" level access. There is no "package" keyword (well, there is, but it means something else). To get package-private access you have to leave it unspecified, so that means he can't use this feature. Or grok it when he comes across it.

The lack of a keyword for this is a shortcoming in Java, IMHO. But even if you don't use it often, you should have an inkling of how it works.

[http://stackoverflow.com/questions/403583/what-is-the-use- of...](http://stackoverflow.com/questions/403583/what-is-the-use-of-package- level-protection-in-java)

<comment><USER13> It rarely ever seems to be useful, though?

<comment><USER14> I've used it for unit-testing -- gives the test class a little more access.

<comment><USER15> Exactly. To elaborate a bit for those who never used it in that way: you want to separate your unit tests from your app code. But you still want to give your tests access to non-public methods in order to test them independently. The solution is to put app code and tests in different folders, but in the same packages, and make everything you want to test package-scoped.

</comment></comment></comment></comment><comment><USER16> The problem is that Bray's reasoning could apply just as well to any aspect of a language that can be worked around, and leads to meaningless bloat in every case. Other examples:

"We shouldn't have to learn the standard library. Always implement functions you want yourself, and comment what each line of code does."

"We shouldn't have to learn about variable scopes. Just put all your variables at the top of the file."

Knowing the basics of operator precedence _should_ be expected. If you don't know it, you don't really know the language. Bray even drops his own thesis when his code sample assumes that the dot operator and function application operator have higher precedence than logical-and.

There is definitely such a thing as expecting _too much_ familiarity with operator precedence, but it's illogical to say that you shouldn't need to know _anything_. These are the syntax rules of the language, people!

<comment><USER17> > Knowing the basics of operator precedence should be expected. If you don't > know it, you don't really know the language.

What are "the basics of operator precedence" for C++?

Yes, I'm serious. I don't think that there's any agreement on that. At best, there are a bunch of answers with significant overlap, and each non-trivial organization has at least two answers.

That's why every non-trivial organization produces software which uses multiple definitions with blurs between them for interfaces and common code. And bugs.

C++ has almost 30 precedence levels and yet folks think that lisp is unnatural.

<comment><USER16> It's simply deceptive to use the words "C++" and "basic" in the same sentence.

<comment><USER17> Deceptive? Who is being deceived and about what?

Regardless, C++ seems to show that "Knowing the basics of operator precedence should be expected." is unreasonable, at least wrt C++.

Note that C++ isn't all that complex wrt precedence, so the real problem is with the claim. Humans can do about 10 levels of precedence. Since demonstrating precedence knowledge is not the point of a programming language....

</comment></comment></comment></comment><comment><USER18> Then Smalltalk is perfect for him, with no concept of operator precedence!

Kidding aside, this is smart. Defaults are things we shouldn't have to learn. I use parens for anything they didn't drill into my head in grade school (but in the aforementioned Smalltalk that doesn't work).

<comment><USER19> Smalltalk, and Forth and Lisp too!

The simple parsing in these languages means that none of them supports normal mathematical notation. But it also has benefits when it comes to extending their syntax and building DSLs.

</comment></comment><comment><USER20> Writing code that way I can understand. But it's kind of useful to be able to read other peoples code and know what it does.

Also, "1 + 2 * 3" is quite obviously 6 and not 9 in languages with operator precedence, I really don't think you need to write "1 + (2 * 3)".

Everything in moderation.

EDIT: hahaha, well I feel stupid. I'm leaving the incorrect answer there because it's too funny not to :)

<comment><USER21> it's neither 6 nor 9 there, actually :) it's 7.

<comment><USER20> You clearly don't understand the advanced kind of maths I'm doing there ;)

<comment><USER22> Haskell to the rescue!

        ghci> let f = let 2*3=5 in 1+2*3
        ghci> f
        6

<comment><USER23> brilliant!

</comment></comment></comment></comment></comment><comment><USER24> I don't remember all the rules, but I do remember that comparisons come before logical operations. It just doens't make sense to let a < b && c mean a < (b && c).

Perhaps an IDE/editor feature that removed unnecessary parenthesis could clean up code and you'd learn the precedence as you go.

<comment><USER25> IntelliJ IDEA has intentions to "add clarifying parentheses" and "remove unnecessary parentheses".

<http://www.jetbrains.com/idea/documentation/intentions.jsp>

<comment><USER24> That's an interesting list. A lot of automatic code simplifications that I want :)

</comment></comment></comment><comment><USER26> The clearest statement of this I have seen is from the O'Reilly book _Practical C Programming_ : "* and / come before + and -. Use parentheses for everything else."

My general rule, on the rare occasions that I actually write code, is the same as for other writing - write to be easily understood by potential readers. You should take a little time and thought to make it easier for someone to follow your work.

</comment><comment><USER27> Has been advocated before, notably in the Practice of Programming:

"Parentheses specify grouping and can be used to make the intent clear even when they are not required. (...) Seasoned program- mers might omit them, because the relational operators (< <= == ! = >= >) have higher precedence than the logical operators (&& and ||). When mixing unrelated operators, though, it's a good idea to parenthesix. C and its friends present pernicious precedence problems, and it's easy to make a mistake."

<comment><USER28> Amusingly, I sent a note to the authors of TPOP when it came out claiming that I had found a precedence error in some of the code in the book, between && and ==.

But I had gotten it wrong.

</comment></comment><comment><USER29> How about the .-operator

      while ((calls.moveToNext)() && (count < howMany)) {

or

      while ((calls.moveToNext()) && (count < howMany)) {

<comment><USER9> Java does not, as yet, have a kind of method or closure reference type, so this ambiguity doesn't exist - the parentheses on the method call are not an operator like in C++.

</comment></comment><comment><USER30> Completely in agreement on this. I was a lone voice in a company where using as few brackets as possible was a badge of honour.

<comment><USER31> In a Lisp shop that would be a good thing. (I.e. getting by with less code.)

</comment></comment><comment><USER32> This is an example of a good general principle for communication: don't express your ideas in a way that a reader cannot understand without referencing an external source of knowledge if it is a reasonably trivial task to embed that knowledge into your content in the first place.

</comment><comment><USER33> other things not worth filling your mind up with:

1\. type promotion rules

2\. method resolution order

3\. APIs for simple functions, just write your own--much more explicit.

4\. order of evaluation in "for (init; cond; inc)" loops and other nuances of syntax/semantics.

</comment><comment><USER28> I agree with him that it's good to include those extra parens in code you _write_. But if you're reading or debugging code you didn't write, it's important to know them. If you just assume the code means what it appears to mean, you'll skip right over even shallow bugs.

I haven't read any of Tim's code, so I don't know how readable it is. But I found that spending a lot of time reading other people's code dramatically improved the readability of my own code. I venture to guess that his code is a little opaque in places without meaning to be, as a result of his not spending much time reading other people's code.

<comment><USER34> > I found that spending a lot of time reading other people's code dramatically > improved the readability of my own code.

This I wholeheartedly agree with. I spent the first five years of my career porting large hairy codebases from PCs to embedded devices, without the original programmers available, and that has given me a drastically different code style to a lot of people.

> I venture to guess that his code is a little opaque in places without > meaning to be, as a result of his not spending much time reading other > people's code.

Here you lose me. I went out of my way to avoid memorizing the operator precedence rules too well, so that when I saw a complex one-line expression I'd have to stop and pay attention. A lot of the time the subtle bugs creep in because the naked expressions flow in a way that looks seductively correct, and so with an easy knowledge of precedence it's easy to make the same mistake as the original author.

As Bjarne S once said about casting in C++, I want it to look ugly in the code because it's an ugly idea. I want my code-reading to stumble when I hit those long unparenthesized expressions, to make sure I pay attention.

</comment></comment><comment><USER35> Neither do I, for the exact same reason as Tim. Why bother relying on precedence rules when your code is clearer if you use parenthesis? Even if you know the precedence rules, there's no guarantee someone maintaining your code will.

</comment><comment><USER36> Regarding Java field modifier, its too bad the default is none of public/private/protected.

In all other aspects, thumbs up to the post.

</comment><comment><USER37> There are a lot of things you don't need to _know_ in order to use a language fairly effectively: you can always look up syntax & things like operator precedence. While that is a good strategy when you need to switch languages frequently, it also means you'll never be an expert in language X. Which, for plenty of programmers, is a _good thing_.

</comment><comment><USER38> It's readability vs. clutter - I think most programmers would allow multiplication over addition without parens. It's logical to allow && over || since that's basically the same thing as * over +.

The one that always gets me is x == y&1, which is evaluated as (x==y) & 1.

</comment><comment><USER39> I know the rules for C (which are the worst of them) and yet I still use parens all over the place. It's less brain burden to read, and if I want to copy and paste it to javascript which has fewer precedence levels, it doesn't break.

</comment><comment><USER40> He has a point, especially cause the rules can change.

<http://www.jsoftware.com/help/primer/order_of_eval.htm>

</comment><comment><USER41> Same here, but I find that questions on precedence often pop up during the interview process and the interviewer wants to know details and he is not satisfied with the parens.

<comment><USER31> Yes, that's a bad interview question. I guess they do not care about you knowing the precedences, but just use it as an easily tested proxy for your general knowledge of the language.

I had interviewers ask about compiler flags. That was even more dreadful. I said I knew Haskell, not that I knew GHC. (In the end, I could answer the question, but they felt so wrong.)

</comment></comment><comment><USER42> For the record, _while (calls.moveToNext() && (count < howMany)) {_ will not compile as written in Java without the interior parentheses.

</comment><comment><USER43> For similar reasons I use almost no abbreviations (in variable/method/class names).

</comment><comment><USER44> SO I guess they did not ask him that question at the Google Interview :-)

</comment><comment><USER45> And this is one of the reasons why explicit is better than implicit.

</comment><comment><USER46> Ridiculous, and miss out on boolean algebra and cool optimization [http://sigpipe.macromates.com/2009/07/27/simplifying- boolean...](http://sigpipe.macromates.com/2009/07/27/simplifying-boolean- expressions/)</comment>


Amazon delivery drivers reveal claims of disturbing work conditions - <AUTHOR> https://www.businessinsider.com/amazon-delivery-drivers-reveal-claims-of-disturbing-work-conditions-2018-8 <comment><AUTHOR> > _" The culture is predatory," said Ku Irvin, who started working as a driver > for DeliverOL, in Aurora, Colorado, in November 2016. "It's a revolving > door. A lot of promises are made that are not kept."_

Amazon, like Walmart, is innovating in terms of applying metrics to their labor force. But at least some of these metrics turn out to be inhumane, such as the infamous tracking of bathroom break timing, or unethical to the point of illegal, such as making it effectively required to work of the clock to finish your tasks -- i.e. wage theft.</comment>


Is It Possible to Predict Pageviews 15 Minutes Into the Future? - <AUTHOR> http://www.betabeat.com/2012/01/26/is-it-possible-to-predict-pageviews-15-minutes-into-the-future-1-7-m-for-visual-revenue-says-yes/

<comment><USER2> Having worked for both a content farm and a news organization, I'm not sure what is so revolutionary about this. The content farm I used to work for was making semi-automated publishing decisions based on future popularity of the content over a year ago...it was only a matter of time before news organizations got into that game.

If they're going to try to put actual numbers on the pageviews, that might be new and interesting, but it doesn't seem like it would be more useful than relative rankings. It matters that Story B is going to get more pageviews than Story A or Story C, but it doesn't really matter by how much if the goal is simply to draw traffic in the most efficient way.

If the goal is to change the future, than actual numbers become more useful. If Story B is only ahead of Story A by a small margin, and News Org has an interest in pushing Story A but not Story B, giving Story A top billing could swing the balance...

</comment><comment><USER3> _Max Headroom: 20 Minutes into the Future_

[http://en.wikipedia.org/wiki/Max_Headroom:_20_Minutes_into_t...](http://en.wikipedia.org/wiki/Max_Headroom:_20_Minutes_into_the_Future)

</comment><comment><USER4> I'm personally interested in finding out what these people will be leveraging in order to emulate a prediction? Simple statistics of past page views, site page rank/number of back links, social media analytics, or a combination of these things?

Or is there some secret sauce I'm missing?

</comment><comment><USER5> Turning linkbait into a science!</comment>


Why programmers should play Go - <AUTHOR> http://railspikes.com/2008/7/14/why-programmers-should-play-go

<comment><USER2> There's an interesting trend in the computer go community away from rule-based AI, and towards a more stochastic approach. This means that where the leading developers were all 1 dan or better (very talented amateurs, by the metric of the article), it's become possible for talented programmers with a relatively limited understanding of the game to make major contributions.

Go is a complicated game, and the human response to that is to create rules of thumb and build a strong intuitive understandings of different positions. It's arguably less elegant to analyze a position by running hundreds of thousands of playouts, but it's finally a problem that resembles real computer science (though most academic papers are still of the "we tried this, and it did okay" form). It's a pretty exciting time to be involved, and I'd suggest that anyone with even a passing curiosity check it out.

<comment><USER3> Yes chess isn't really interesting out of an AI-perspective since a supercomputer can beat a human with brute force + heuristics. In Go you'd need something more like real AI.

<comment><USER4> Chess could be interesting from an AI perspective if you limited the amount of brute force searching allowed. Computer chess and human chess are, by and large, completely different games.

I'm not sure I agree with this article about patterns in chess. The real masters think strategically as well as tactically, and use the structure of the pawns and pieces, combined with intuition, to guide their moves.

Ultimately, I suspect that go and chess fire up similar regions of the human brain.

<comment><USER5> They did MRI on Z.Polgar while she was playing. What they found out was chess thinking happens in a small region of the brain. The region is the same humans use when trying to recognize faces. Training modifies that machinery to recognize chess board positions too.

<comment><USER4> Huh, that surprises me. I would have expected a chess master to use more of her brain than I do (not that I know how my own brain would look all wired up, but I have trouble believing that I don't think much more narrowly about the game - kind of how people who actually understand math approach factoring a set of equations differently from people who need a set of rules they can follow closely).

<comment><USER6> Perhaps they only looked at what parts of their brain experienced chess players used more?

</comment></comment></comment></comment></comment></comment><comment><USER7> I generally advise people to play games that involve some randomness, like poker, gin, or backgammon, before moving on to games without. The reason being that almost all of life involves decision making in situations with some random factor, and humans are ill-equipped by biology for this. Most decisions that don't involve some unknown are relatively easy.

Go might be better for programming specifically (since randomness isn't a factor) but programming is a subset of life.

<comment><USER8> > Most decisions that don't involve some unknown are relatively easy.

Apparently you don't play go.

I play games for entertainment, not to mimic reality. Games with chance as a significant component aren't necessarily more entertaining than games requiring significant skill.

<comment><USER7> I would say the general population disagrees with you, which is why are games of chance a multi-billion dollar industry and only a few people can make a good living playing chess.

<comment><USER8> Well, other skill based "games" include the majority (or all?) of professional sports. If there were chance introduced at key points in the game (like drawing cards or flipping coins) I don't think anyone would watch baseball, football, or soccer.

Also, board games involving skill (e.g. chess and go) have stood the test of time over many chance games.

<comment><USER7> Chance is a huge element in sports. Otherwise nobody would watch them.

You're separating luck and skill as if games can't have both, and in the process entirely missing my point.

<comment><USER8> Clearly there is a spectrum, I'm not missing your point. In this spectrum though, chess/go/sport are at one end and gambling is at the other. Poker is in the middle.

<comment><USER7> Sport is probably closer to the middle than you think, especially where a team is involved. If you don't think an athlete can get unlucky, ask anyone on the Falcons. One teammate does something stupid and your team is out of contention for years.

Teams are generally businesses too, and just like most other businesses have a huge random element.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> If anyone wants to play me, I'm Alex3917 on KGS. I'm still a beginner though, only 12kyu.

<http://www.gokgs.com/>

Also, if you want a good introduction to the game, check out this K5 article:

<http://www.kuro5hin.org/story/2002/7/11/62356/9269>

<comment><USER10> That was the article that got me into Go in 2002. I list in and some other recommended Go resources here: <http://www.davidsj.com/post.php?id=A72_0_1_0_C>

<comment> dan-kruchinin thanks! Great collection of links.

</comment></comment></comment><comment><USER11> The post gives a reasonable overview of why programmers may benefit from playing Go, but there is a whole lot more that could be said. Though I've not yet mastered either pursuit, I'll struggle to put some of my thoughts into words:

Go is particularly suited as an exercise for the programmer's mind because both activities share some quite specific and fundamental cognitive skills, which people generally don't have unless they train.

The overwhelming complexity of Go demands a specific and subtle mindset, which is very much applicable to programming; relaxed yet focused, careful but creative.

Both practise mentally modelling, analysing, and manipulating a complex, evolving system, requiring frequent decisions which may have far reaching and unpredictable effects, which must balance immediate needs and possible outcomes.

Go trains a holistic way of thinking, which is unusual to the average reductionist mind, requiring an integrative understanding of a system as composed of interrelating parts, and as a whole.

<comment><AUTHOR> Good thoughts - I too have a lot to learn with both Go and programming, and I know there's a lot more going on (with each) than in my original post.

</comment></comment><comment><USER12> This article is irritatingly full of stretches.

Go proverbs? Are there not chess proverbs? Similar can be said about managing companies and reading Sun Tsu's Art of War. You can extend the Art of War to interpersonal relationships. You can find meaning in every sentence in Harry Potter, if you felt like it.

And Go can make you smarter? Go, like chess, involves short term and long term memory manipulation, risk analysis, pattern recognition, psychology, and executive planning, which further involves deception and short-term and long- term planning. While Go has more possible configurations than Chess, the feeble human mind will not be using some drastically different skillset to deal with it. That is to say, I doubt children who play Chess are worse off than those who play Go. Ergo, it's not Go: it's just the training of relevant skills, which is a byproduct of learning the game.

Pardon my bluntness, but this reads like those articles that try to make something more mystical than it really is.

<comment><AUTHOR> I think that most of what I said about Go could also apply to chess. I just have less experience with chess than with Go.

</comment></comment><comment><USER13> I first heard of Go when the film Pi came out: <http://en.wikipedia.org/wiki/%CE%A0_>(film)#The_game_of_Go

It has conjured up visions of crazy hackers ever since.

<comment><USER13> Bug in the URL parser?

</comment></comment><comment><USER14> go is much more interesting than chess. chess is a battle to the death, in go you can have entire games without a single capture, and win by a point or two.

<comment><USER15> Do you think that the fact that _you can have entire games without a single capture, and win by a point or two_ makes it a more interesting game, or are those two unrelated thoughts?

<comment><USER16> It's probably a side effect of being a more interesting game, whatever that means to be more interesting, at least.

</comment></comment></comment><comment><USER17> Anywhere to play GO in Flash or SVG against a computer in different levels?

The only one I found is Yahoo Games but that one sucks and it doesn't have single player.

<comment><USER6> Why do you want to play against a computer?

Did SVG became Turing complete?</comment></comment>


Ask HN: Who is hiring thread but for employment seekers - <AUTHOR>

Has a monthly job seeker thread been tried before? I think it would be a good idea. People looking for employment could just write a little about themselves, their skills, where they are located, if they would relocate, if they are interested in full-time/part-time/internship positions, links to github, linkedin profiles, personal websites/projects and contact information.<p>Thoughts? <comment><USER2> Yes, the job seeker thread should be coming tomorrow (I think it normally comes on the 1st of the month). There are "who is hiring/looking for work" boards for both freelancers and full-time position.

I'm also looking forward to it, since I get to make my first looking for work post!

<comment><AUTHOR> Ah, I didn't know the freelance thread could also be used for seeking job positions.

I think it would be better if it were separated into two different threads, freelancers that are needed/freelancers that are looking for work, and those that are seeking full-time/part-time/internship employment positions. Perhaps my wording didn't properly convey that.

</comment></comment><comment><USER3> I'm looking for Jr Rails Developer position in Boston, MA. Interested in learning and applying Angular and Ember next... Email me at my username at gmail dot com.

</comment><comment><USER4> I would like this too, there is a freelancing thread every month but some people are looking for actual employment not freelancing gigs.

</comment><comment><USER5> As someone who is hiring, I'd love to see this.</comment>


The Unfixable Bug - <AUTHOR> http://www.ilikebigbits.com/blog/2016/11/22/the-unfixable-bug <comment><USER2> Bad title; everything can be fixed but the fix implemented may not be ones favorite solution. The fix here is having a color blind setting that skews those two colors when enabled.</comment>


Ask HN: What gadgets/apps do you use to stay healthy? - <AUTHOR> The only tech thing I currently use for health is a 7 minute workout app. I'm curious, what are some latest consumer devices and apps that can help to track/support/improve health and how did they help you in your particular case. <comment> 52-6F-62 I don't use any regularly, unless you want to count an internet browser. It's not overly complicated for a relatively healthy person to maintain their health. If you have complications, then reminders and tracking would definitely be helpful.

For me I'll look up a workout, or parts of workouts and ignorantly put them together (well not that ignorantly). Up every morning at 6:30, head to the gym (there's one in my building) or go for a run outside -- workout for an hour at least

There are web-based calorie counters I've used to get a snapshot of my current state, then I continue to look away. The very odd time I'll weigh myself, but I don't own a scale.

Once in a while I'll look at Apple's native health app for the step counter. The office I work in is a little more traditional, so there can be monstrously little movement in my day if I didn't work out religiously. It's good to get a glimpse at a figure once in a while.</comment>


Ask HN: Getting involved in scientific research computing - <AUTHOR>

A few days ago, a coworker of mine was talking about how his daughter is getting involved in making hardware that can emulate the human brain. That sounded like a really fun project, and it got me thinking a bit about my current career path, which I'd say is a standard large corporate developer. I basically build "text boxes over data." The money is good, especially as I am the sole provider for my family, and the environment is tolerable, but it  does get boring at time. Lending my software development skills to scientific research sounds both fun, and something thats aligns with my desire to build software for the advancement of humanity (lofty goal).<p>Does anyone have an experience or advice on get involved in this type of work? I would probably just be on a part time basis for now, but things could change in the future. <comment><USER2> I used to sysadmin for a place doing high performance computing. They were working on a different problem domain than neurology, but still required loads of computational power.

The tech they used:

* GPGPU programming (CUDA, etc)

* Fortran (old code base dated back to the 80s)

* C/C++

* Matlab

* MPI & OpenMP

There was a little bit python but mostly from the newer grad students.

Scientific Linux ([https://www.scientificlinux.org/](https://www.scientificlinux.org/)) provides a pretty good base OS though not everyone uses it. Some places use RHEL or CentOS instead. For the GPGPU things the developers used Ubuntu because at the time it was the easiest way to get CUDA running. I have no idea if that's changed.

</comment><comment><USER3> I've gone down this path. If you are a decent engineer, go speak with academics at your local university. I spent a lot of time with the bio/comp- bio folks, and they can always use collaborators.</comment>


JavaScript is Not a Joke - <AUTHOR> https://www.alexkras.com/javascript-is-not-a-joke/ <comment><USER2> > But they are very easy to create and there is true value in developers' > productivity.

What makes you think that there aren't environments where it's even easier to create stuff in ? Your stopwatch app is 192 lines of code. Here's an equivalent QML app that fits in less than 100: [https://paste.ofcode.org/ZWxapD4sWP7Q3SBDu6FXBW](https://paste.ofcode.org/ZWxapD4sWP7Q3SBDu6FXBW) in a single, simpler file.

</comment><comment><USER3> "JavaScript is not a joke" says the author, while he abuses all of the worst aspects of the language and its tooling.</comment>


Is there a way to identify the profile of anonymous visitors in a website? - <AUTHOR> Like their gender, spending potential, their interested category, favourite purchase time etc <comment><USER2> If they have short, steerable, pointy ears, they might be cats, but it is not a sure method...;)</comment>


Show HN: Pictorious is a game that lets you show off how awesome you can be - <AUTHOR> http://www.pictorious.com/

<comment><AUTHOR> Hey guys - Just wanted to share what we've been working on and get feedback from the HN community.

Pictorious is a fun, new game that inspires people to take awesome photos and challenge their friends to do the same. We're still very much in learning and iterating mode so welcome any and all feedback on this project.

We place a heavy emphasis on sleek design, performance and, of course, fun. We built the app using Objective-C, Node.js and MongoDB. We've also built out a REST API for our partners to pull in photos and other relevant data.

Coming soon: create your own challenges, better photo browsing and deeper game mechanics.

<comment><USER2> Albert: i like some of the subtleties in the app like picture flip and smart scrolling. I think you guys can find a better way to display the comment/share buttons that improves the UI and keeps the focus on the image.

In general, I like that this isn't just another photo-sharing app - its a fun game that everyone can play and will result in people taking great pictures.

I participated in #Nice Kicks challenge :)

</comment></comment><comment><USER3> So you're the one who took Pictorious.com

I'd been looking to pick that up myself!

Good luck with your project, it looks great--abliet a bit blog like.

</comment><comment><USER4> Beautiful design and fun app, looks great, congrats!

</comment><comment><USER5> Beautiful design

</comment><comment><USER6> Nice concept!

</comment><comment><USER7> awesome app and fun challenges!</comment>


Saudi Aramco, World's Most Profitable Company, Will Make First Public Offering - happy-go-lucky https://www.npr.org/2019/11/03/775878235/saudi-aramco-worlds-most-profitable-company-will-make-first-public-offering <comment><AUTHOR> ... on the Saudi stock exchange.</comment>