Hacker News new | comments | show | ask | jobs | submit | best comments login

Just skimming through the Solidity docs, I see a lot of unwise decisions there aside from the weird visibility defaults.

All state is mutable by default (this includes struct fields, array elements, and locals). Functions can mutate state by default. Both are overridable by explicit specifiers, much like C++ "const", but you have to remember to do so. Even then, the current implementation doesn't enforce this for functions.

Integers are fixed-size and wrap around, so it's possible to have overflow and underflow bugs. Granted, with 256 bits of precision by default that's harder to do than usual... but still pretty easy if you e.g. do arithmetic on two inputs.

Operators have different semantics depending on whether the operands are literals or not. For example, 1/2 is 0.5, but x/y for x==1 and y==2 is 0. Precision of the operation is also determined in this manner - literals are arbitrary-precision, other values are constrained by their types.

Copy is by reference or by value depending on where the operands are stored. This is implicit - the operation looks exactly the same in code, so unless you look at declarations, you don't know what it actually does. Because mutability is pervasive, this can can have far-reaching effects.

Map data type doesn't throw on non-existing keys, it just returns the default value.

The language has suffixes for literals to denote various units (e.g. "10 seconds" or "1000 ether"). This is purely syntactic sugar, however, and is not reflected in the type system in any way, so "10 second + 1000 ether" is valid code.

Statements allow, but do not require, braces around bodies. This means that dangling "else" is potentially an issue, as is anything else from the same class of bugs (such as the infamous Apple "goto fail" bug).

Functions can be called recursively with no special effort, but the stack size is rather limited, and it looks like there are no tail calls. So there's the whole class of bugs where recursion depth is defined by contract inputs.

Order of evaluation is not defined for expressions. This in a language that has value-returning mutating operators like ++!

Scoping rules are inherited from JS, meaning that you can declare variables inside blocks, but their scope is always the enclosing function. This is more of an annoyance than a real problem, because they don't have closures, which is where JS makes it very easy to shoot yourself in the foot with this approach to scoping.

Five years ago, I had my own immune system rebooted to (so far) eliminate my Stage IV melanoma cancer in a trial at the National Institutes of Health. At that time, without further treatment, I probably had six to twelve months to live.

In essence, the tumor infiltrating lymphocytes (TIL) adoptive cell therapy was as follows:

1. The doctors removed a melanoma tumor that was growing in my neck.

2. In the lab, white blood T cells (T lymphocytes) that were attempting to attack the cancerous tissue in my tumor were isolated into at least five different petri dishes. The white blood cells' growth was stimulated using IL-2.

3. Those samples that grew the most and attacked the cancerous tissue (2 of the samples, in my case) were then expanded to a total of 130 billion lymphocytes in the lab.

4. I returned to NIH for a week of immune system preparation, specifically the almost complete suppression of my own active immune system using harsh chemotherapy. This was to allow my body to accept the new lab-grown immune system.

5. Once my immune system was sufficiently suppressed, I received all 130 billions of the lab-grown lymphocytes. The immune system was then stimulated by having five large doses of IL-2 every eight hours over a two day period. (Note: This was hellish.)

6. After a week or so, my immune system had recovered and I was released from the NIH Clinical Center to return home. I was given an anti-biotic to take for 4 to 6 months to reduce the possibility of contracting a specific pneumonia (PCP).

7. I returned to NIH monthly for scans monthly for the first three months. After month one, my tumors had shrunk 33%. After month two, 66%. After month three, they were almost complete gone. My immune systems had essentially been immunized against some of the mutations contained in my cancerous melanoma cells.

8. I was declared NED (no evidence of disease after 15 months) and a complete responder to the treatment after 21 months.

Now, almost five years post-treatment, I have had CT scans and brain MRIs every six months with still no signs of melanoma. My doctors have told me that I'm likely cured.

Immunotherapy works. I chose this trial because the I liked the fact that my own immune system was being boosted to fight my cancer.

Further info: https://en.wikipedia.org/wiki/Tumor-infiltrating_lymphocytes

My doctor is Dr. Steven Rosenberg of the National Cancer Institute.

Disclaimer: I am a neurologist

The enthusiastic replies on this thread are understandable, but disappointing to see: we all need to be less credulous regarding the lay science press, and especially the lay medical press.

I would love nothing more than to have this kind of therapy be a reality for my patients. However, I am deeply skeptical of this report.

Why? Because

- hyperbaric oxygen therapy has a big industry of quackery behind it[1][2]

- oxygen is a standard part of medical care and can just as easily be harmful as helpful

- because there is just no way in hell that oxygen is going to reverse cell death.

- this is in newsweek, and not a peer-reviewed journal.

And if there was no cell death, then the recovery is almost inevitable.

Some posters are skeptical because 15 minutes is impossible.

On the contrary: the key point is the temperature. The article says the water was 4 degrees C. That is cold enough that you can recover fully. In fact, the most amazing recovery is also one of the best-documented: with a 66-minute submersion in Utah that was followed by complete recovery[3] (this is a far more interesting article than the original post - it was in 1988, and utilized extracorporeal rewarming). This observation was used to pursue hypothermia in other causes of anoxic injury, which is clinically used today. I'm sure the 66-minute case also got oxygen during the recovery, but to say that it was due to oxygen (which is standard of care) rather than the temperature is silly.

Sorry to be a wet blanket, but this article is just clickbait junk.

1. https://www.fda.gov/ForConsumers/ConsumerUpdates/ucm364687.h...

2. https://www.quackwatch.org/01QuackeryRelatedTopics/HBOT/hm01...

3. http://www.nytimes.com/1988/07/26/science/the-doctor-s-world...

iTerm2 author here.

I'll spend some time looking into iTerm2's latency. I'm sure there are some low-hanging fruit here. But there have also been a handful of complaints that latency was too low—when you hit return at the shell prompt, the next frame drawn should include the next shell prompt, not the cursor on the next line before the new shell prompt has been read. So it's tricky to get right, especially considering how slow macOS's text drawing is.

If I could draw a whole frame in a reasonable amount of time, this problem would be much easier! But I can't. Using Core Text, it can easily take over 150ms to draw a single frame for a 4k display on a 2015 macbook pro. The deprecated core graphics API is significantly faster, but it does a not-so-great job at anything but ASCII text, doesn't support ligatures, etc.

Using layers helps on some machines and hurts on others. You also lose the ability to blur the contents behind the window, which is very popular. It also introduces a lot of bugs—layers on macOS are not as fully baked as they are on iOS. So this doesn't seem like a productive avenue.

How is Terminal.app as fast as it is? I don't know for sure. I do know that they ditched NSScrollView. They glued some NSScrollers onto a custom NSView subclass and (presumably) copy-pasted a bunch of scrolling inertia logic into their own code. AFAICT that's the main difference between Terminal and iTerm2, but it's just not feasible for a third-party developer to do.

The 'Hire' product just launched today actually came from an acquisition, it was not developed internally by Google at all.

It was developed by Bebop, a company Google acquired last year for $380 Million that was founded by Diane Greene (Founder of VMWare). When Google decided to bring Diane Greene on full time to run Google Cloud, they had to purchase her company in order to facilitate that. Bebop originally had aspirations to shake up the enterprise software space by building a suite of applications, and the 'Hire' app was the first one they produced. Bebop employees have been working on it since then and had a long beta period before the launch today. As noted in the TechCrunch article, the 'Hired' platform also runs the Google for Jobs website that launched earlier this year.



Please be aware that you can press Y before sharing a link to make it a permalink. The link you shared points to master branch, which will change over time, so the line number you pointed to will have something else.

Based on the time of your post, I suspect you meant to link to:


One additional cause of new Chrome installs taking over from Firefox: bundleware. Chrome is foisted upon users as install-by-default bundleware when users install or update lots of different apps, especially free antivirus apps on Windows. Just clicking "Continue" when your free antivirus on Windows updates will cause Chrome to be installed and set as the default browser. Here's an image of Avast tricking you into installing Chrome: http://imgur.com/hNZLbmL

I've had to fix this for three family members previously as they were using a free antivirus and couldn't figure out why their browser looked different and didn't have an ad-blocker now.

Damn, you're right. And if people use smart contracts to do things that are technically allowed, but have unexpected downsides, we should have a review system in place where impartial third parties review the contract language. Two people should be assigned to speak for and against the unexpected behavior, and then maybe a panel of 12 regular citizens could render the actual verdict.

Here's the root error I believe: https://github.com/paritytech/parity/blob/master/js/src/cont...

The initWallet function should have been marked internal, but was instead not marked. Unmarked functions default to public in Solidity, so anyone can call that function and reinitialize the wallet to be under their control

For everybody wondering: PSP stands for Platform Security Processor, a secure enclave in the processor and AMD's version of the Intel Management Engine.

Quoting from Libreboot:

As such, it has the ability to hide its own program code, scratch RAM, and any data it may have taken and stored from the lesser-privileged x86 system RAM (kernel encryption keys, login data, browsing history, keystrokes, who knows!). To make matters worse, the PSP theoretically has access to the entire system memory space (AMD either will not or cannot deny this, and it would seem to be required to allow the DRM “features” to work as intended), which means that it has at minimum MMIO-based access to the network controllers and any other PCI/PCIe peripherals installed on the system.

Why would an unmarked function get the broadest possible scope in a language designed for contracts? I'm always surprised by the decisions made around Ethereum, and just how much value people have poured into it.

The "newsfeed" pattern is one of the worst ideas humanity has ever had. Never has it been so easy to manipulate public opinion at will. 10 years ago there was a such thing as standards in journalism. Now anypoliticalblog.com's headline has been promoted to the equal status of an actual news organisation by means of the implicit legitimacy of appearing in a news feed. This insanity has reached a crescendo with the official endorsement of sites like breitbart.com by the White House, and I don't think there's any going back.

It's a psychological hack, and the promoters of this technology know it.

This issue is a conundrum. Most drugs don't fall off a cliff of efficacy when they reach their expiration date.

There are drugs such as tetracyclines that should never be used past their expiration dates because they degrade into toxic compounds. Certain classes of drugs such as anti-arrhythmics or drugs like warfarin are dosing critical to the point where I would not want them if they were out of date.

I worked in pharmaceuticals in a medically underserved community for a couple of years. At that time when drug samples expired, sales representatives had to return them to their companies for destruction. One doctor in the area made sure that all the drug reps knew he would accept short dated (but not outdated, which would have been against policy for reps) samples for a free clinic he ran. Everyone I knew participated when they had short dated samples. While reps could not distribute outdated samples, doctors had much more latitude in how they dealt with them. It was one of those rare and wonderful situations that was good for patients, created good will for reps and was all completely within regulations.

I should say this was some years ago and regulations may have changed since then.

Literally nobody here takes 3 hour lunch breaks. A lot of offices have 2 hours, yeah, but this is becoming less and less common regardless. Small shops do close for 3 hours in the middle of the day, but they are open till about 9pm which is a lot more useful than being open in the middle of the day. It also should be noted that there are actually 5 meals in a spaniard's day. There's a mid-morning and late-afternoon snack, which is the actual reason for the "late" lunch and dinners.

Also, all changing the timezone would do is give us useless light early in the morning and less light in the evening to go out and play sports, hang out in the park etc. People would still eat at the same time regardless. It gets dark at 6pm in the winter and 10pm in the summer. It's not exactly crazy.

I've posted this before [0], but it's still apropos regarding the foolishness that is Ethereum.

[Ethereum] only makes sense if all of the following obtain:

(a) the code is 100% bug-free (b/c accidents cannot be rewound)

(b) all code-writers are 100% honest (their code does what they say)

(c) all contract participants are 100% perfect code readers (so as to not enter into fraudulent contracts)

(Strictly speaking, only one of (b) and (c) needs to be true).

None of these conditions will ever obtain.

[0] https://news.ycombinator.com/item?id=14471465

He sounds twice exceptional -- gifted, but with some sort of learning disability or handicap of some sort.

Twice exceptional people often appear to be "average" but find an "average" or normal life enormously frustrating. Because of having some sort of handicap, it can take a lot to get them going. Once they get going, they often outperform others. Life is vastly better for them when they can create their own niche because they simply do not fit in to normal societal expectations very well, try though they might.

No insult intended. I fit that profile, as do both my sons.

So, perhaps a good summary is if you are bright, but having trouble finding your niche, then starting your own company is a means to create your own niche. This is exactly what I have always told my oldest son. From an early age, it was clear to me he would not make a good employee. But that doesn't mean he won't eventually be successful. He just needs to grow his own.

My company makes recruiting software and it we knew it was only a matter of time (a couple of years ago... now its obvious) before Google would enter the recruiting industry.

Particularly because the major players other than LinkedIn basically rely entirely on Google. All Indeed, Monster, CareerBuilder do is buy Google Ads and then essentially resells the marketing. This is similar to the situation TripAdvisor is in but generally worse.

The current job boards / job aggregators (the companies above) are terribly unimaginative, generally not helpful and often price gouge companies (if you wondering the what the difference is between aggregator and job board... there really isn't much but one pulls the jobs aka crawls the web for them).

Now the boards/aggregators are trying to become more service based and offer higher value offerings for long term strategic reasons. Indeed is rolling out "Indeed Prime" and I believe Career Builder is offering something similar as well.

So as creepy as it is that Google is in the recruiting space I am optimistic that will finally provide some spark of innovation that is much needed in a very high touch industry devoid of it.

"Don't write PHP, write Hack instead" is probably a better title for this post.

The author could have chosen to write about PHP best practices that are ignored in the ecosystem at large, but instead chose to evangelize HHVM features.

For anyone who currently writes PHP like it's 2009 and wants to learn a better way (without dropping PHP entirely):




If anyone prefers to drop PHP entirely, that's fine too, but that's not the only good answer and pretending that all PHP is bad (like many of the comments on this thread already do) is very disingenuous.

20 years ago, all the engines (AltaVista, Lycos) did exactly that. And then they all became "portal" like. And then a brand new engine with just a search box (so refreshing so clean) came along and swiped them over....

I am a neurosurgeon, and am also skeptical. Here are some thoughts after looking at the actual paper in Med Gas Research.

First, after looking at the MRI, I see more evidence of cerebral edema than of infarction. The MRI sequence that would show the actual infarction, DWI is presented, but as a 3d volume(which I have never seen done before with DWI) and does not show the thalami where most of the FLAIR hyperintensity is.

Second, Unlike what the article would have you think, there is not massive cortical infarction. In fact the cortex looks not too bad. The main lesions appear to be bilateral thalamic edema. Note that thalamic dysfunction can present with severe neurological deficits often mimicking massive cortical dysfunction.

Third, measuring volumes in an MRI that is not taken at 1mm slices can be problematic. Thus where the authors talk about volume differences may just be slice variations between scans.

Fourth, I would have expected something this groundbreaking to be in NEJM, JAMA, BMJ, Lancet, Stroke, or Neurology. Medical Gas Research is a very obscure journal.

Fifth, Paul Harch is way outside the medical mainstream. During the Terry Schiavo case in Florida he was one of the people arguing that she was not in a permanent persistent vegetative state. It seems like he pushes hyperbaric oxygen to treat a host of brain disorders such as cerebral palsy, autism, stroke, traumatic brain injury. There is very little actual scientific studies backing up these assertions.

So overall, I am very skeptical about this article. In addition, usually when groundbreaking science is presented by the press, you often have an expert in the field who was not involved with the study, talk about methodology, background, and implications. This article did not do so, making it all the more suspect. I think, ultimately this is another Newsweek poorly researched click bait article.

One of the reasons why the Renault Kwid is $4000 is because, well, it uses cheap materials, and with that comes a very bad safety rating. This is enabled by India's nearly non-existent car safety regulations. Everything has a "price".

This is so !@%!@ cool.

Check out the A/B test of a technician with / without the software referenced in the article:


Then here's a video that gives a sense of the software's interface:


Very workflow oriented with nice communication and lookup features.

This is the kind of small optimization stuff that is going to be revolutionary to driving macro productivity.


I heard the "if you don't like it, leave line" from people all the time in America. Even with the pettiest of political disagreements, people say it.

So then I went to Japan and haven't received or heard of anyone receiving similar vitriol aside from the OP.

A foreign coworker (same race and nationality as me) endlessly complains about racism, discrimination, and being stared at here. I've experienced none of it.

I'm not here to dismiss the author's claims, but most of the weeaboo to Japan hater crowd I've found is people who lived very cushy lives with close family bonds, and when they put that aside in a somewhat "cold" culture, they take offense to everything. As a cold, unsocial person myself, Japan is incredibly welcoming in that I feel like I can finally be left alone without being isolated. I hated having people randomly start conversations with me in America. I disliked the "not my job" attitude of Americans. I very strongly disliked how confrontational and easily angered Americans were (especially how people complained about restaurant services and the minorest of things, while here, it's practically unseen).

And then there's the people complaining about being a "foreigner forever." Honestly, how many asians in America get asked,"so, where are you from?" whenever they meet someone? I've seen it countless times. It's just a matter of being on the other end of it now.

And then he leads into "I can't believe they don't restrict speech and porn the way we do in my culture." In all honesty, fuck off. This is no better than someone being disgusted by western media showing bare female hair. The standards are subjective.

From my experience, the reasons why people switched to Chrome have been because it renders pages much smoother and everything generally looks better. These were the original reasons that they moved over to Firefox from IE as well. I personally helped a number of relatives and friends make these switches.

Late last year, after many years on Chrome, I gave Firefox another serious look and I have switched back. Firefox has improved tremendously and I would prefer to give my support to Mozilla from a philosophical standpoint (the Chrome team does a lot of good work with regards to pushing forward the features of the web and its security but at the end of the day, Chrome is still a strategic piece of Google's business machine and not a philanthropic effort)

While I have my reasons for using Firefox, I don't see a compelling reason for most users already happy with Chrome to switch back. The average web user that I know doesn't really understand where web browsers come from and isn't very interested in learning about it. They just care whether the browser runs better or worse for the tasks that they do. (Except many still hate IE and will not even try Edge because the logo looks similar enough - that's a branding issue that Microsoft has)

What irritates me now are more and more sites that only work with Chrome (where they literally throw up a page that blocks access and says go download Chrome). These are sites that are not Google properties so I'm not blaming Google for this bad behavior, but again, I would like to support the diverse browser landscape that has existed to this point. I guess my main complaint to Google is to please stop popping up dialogs about Chrome across all of your properties. The browser I'm using works perfectly fine thank you, and you should be supporting the open web with your products anyway.

A great application for this is in randomizing playlists. My friends, who are also CS grads and should know better, have often complained that their MP3 players, CD carousels, etc play the same music too often claiming that the random is broken, when a song repeating in a short period of time or other songs never playing is what you would expect from a truly random selection. Using this algorithm, you'd be sure to hear all of your songs. I'm guessing most music services already do something like this.

This whole crypto currency thing has an incredible bug bounty program.

In case you don't feel like clicking, this doesn't concern Android apps, but OAuth apps that want access to your Google account.

I'm buying this just for it not being a monthly subscription.

How pointless.

The whole point of Bitcoin was to have uncensorable, decentralized asset that can be used to exchange value without any trust etc.

That is the only reason we endure this utterly shitty and inefficient blockchain thing, and we exchange money for this otherwise pointless online points.

I have no problem with ETH as cryptocurrency / smart contract platform. But this whole Enterprise Ethereum Alliance is just one big BS. Etherum community is trying to pump ETH value by associating with brand names, and corporations are trying to pump their stock value by presenting themselves as innovative. BS - empty words and marketing gimmicks. Just read through that page.

Just watch Blockchain vs. Bullshit: https://www.youtube.com/watch?v=SMEOKDVXlUo

There's a probability model called the Pólya urn where you imagine an urns containing numbered balls (colored balls in a typical example, but to draw the comparison with dice we can say they're numbered 1-6), and every time you draw a ball of a certain color, you put back more balls according to some rule. A few probability distributions can be expressed in terms of a Pólya urn, see https://en.wikipedia.org/wiki/P%C3%B3lya_urn_model.

A fair 6-sided die would be an equal number of balls numbered 1-6 and a rule that you simply return the ball you drew. You can get a gambler's fallacy distribution by, say, adding one of every ball that you didn't draw. I read the code as a Pólya urn starting with 1 ball 1-N and doing that on each draw plus reducing the number of balls of the drawn number to 1.

Also related, in 2d space, is the idea of randomly covering the plane in points but getting a spread-out distribution, since uniformity will result in clusters. (If you're moving a small window in any direction and you haven't seen a point in a while, you're "due" to see another one, and vice versa if you just saw a point.) Mike Bostock did a very nice visualization of that here: https://bost.ocks.org/mike/algorithms/


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact