If 1+x is 1, how much is 1-x? - <AUTHOR> https://gus-massa.blogspot.com/2015/04/if-1x-is-1-how-much-is-1-x.html <comment><USER2> Nice post.

When people wonder why floating point calculations sometimes don't perfectly match the expectations of a "correct" answer[1], inevitably people will often respond with the famous paper, _" What Every Computer Scientist Should Know About Floating-Point Arithmetic"_[2].

Unfortunately, the people who suggest that paper don't realize that it's a very technical treatise and not an appropriate introduction for the types of programmers who ask the question.

I've always thought a better answer was to have the programmer "construct" a toy floating point format (e.g. 8 bits instead of 32-bit-or 64-bits). The programmer would then notice that he has a finite representation of 256 possible "states" to represent -inf to 0 to +inf. The programmer would have to _pick_ a range and a precision to "squeeze" the Real Numbers into that representation of 8 bits.

Design choice 1: I'll have my 256 possible states represent -1billion to +1billion. Well, since you can't overlay 256 states/values across 2 billion _unique_ values, you will have huge "gaps" between numbers.

Design choice 2: I'll have my 256 possible states represent -10 to +10. With a smaller range, you can now increase the precision and represent fractional numbers with digits after the decimal point. But the range is very small. Also, you still have "gaps" where you can't represent most[3] fractional numbers.

The programmer would quickly notice that he'd run into some contradictions. No matter what he does, there will always be gaps. The lightbulb would then go on and then he'd immediately scale up the limitations inherent in 8bit floating point all the way to 64bit floating point and know exactly why 0.3333 * 3.0 does not exactly equal 1.0.

It had been on my vague "todo" list to write such a tutorial but your blog post already gets that "construction of floating point" idea nicely. The programmer can then explore more advanced topics of "normalization" and "bias" in designing a floating point format.

[1] [http://stackoverflow.com/questions/588004/is-floating- point-...](http://stackoverflow.com/questions/588004/is-floating-point-math- broken)

[2] [http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.ht...](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)

[3][http://math.stackexchange.com/questions/474415/intuitive- exp...](http://math.stackexchange.com/questions/474415/intuitive-explanation- for-how-could-there-be-more-irrational-numbers-than-rati)

<comment><USER3> Here is a nice challenge: Just like we have arbitrary precision integers (allocating more memory as needed) and arbitrary precision "fractional numbers", design a library providing arbitrary precision "computable numbers".

<comment><USER4> > design a library providing arbitrary precision "computable numbers"

I believe they call those "programming languages"

<comment><USER5> Naive question:

Programs written in programming languages aren't guaranteed to terminate. Computable numbers, however, are all real numbers that can be represented to arbitrary precision by a computation that terminates. Wouldn't that mean we don't need a fully fledged programming language to have the capability to represent all computable numbers?

Somewhere in there is the idea we just need a program that determines whether an arbitrary program terminates or not...

<comment><USER6> I can't tell how much of this is a joke, but, yes, it turns out you can't write such a programming language for exactly the reason you allude to: you can't tell whether a given number is computable in finite time, as you don't know whether your program will terminate.

</comment></comment></comment></comment></comment><comment><USER7> This is an excellent explanation - clear, concise, easy to work through, and enlightening.

Thank you.

I think I've sent a collection of suggested corrections via the web site, I include just the technical one here:

You wrote:

        Another example -|2|0011 represents the number
        X = - 2^2 1.0011_{2}
          = -  4 (1 + 0 + 0 1/2 1 1/8 1/4 + 1/16 + 1)
          = -  4 * 19/16
          = - 19/4
          = 4.75

This is missing a minus sign at the very end.

<comment><AUTHOR> Thanks, fixed.

I'll probably fix all the other errors/typos you send in the mail, but it will take a few minutes.

<comment><USER7> Cool - and again, lovely post, nicely done.

</comment></comment></comment><comment><USER8> One of the reasons I would be happier if there were more emphasis in real math/geometry algorithms on "range" processing, i.e. treating each "number" as a scaled "range" instead and figuring out how to combine these ranges in every step to get some stable solution. Most often I see programmers just bashing analytic formulas like they were computing something precisely and then being surprised that results are way off. Imagine computing curve intersections by a combination of analytical and iterative method and then figuring out if such an intersection is unique or if it is some existing endpoint...

<comment><USER9> Interval arithmetic [1] has been around since the 1950's, I believe, but for some reason it never caught on.

In a nutshell, interval arithmetic is about storing each imprecise number as a lower bound and upper bound. On each calculation, the lower bound is rounded down and the upper bound is rounded up. The existing libraries are well developed, and the performance hit is often surprisingly close to 2.

[1] [http://en.m.wikipedia.org/wiki/Interval_arithmetic](http://en.m.wikipedia.org/wiki/Interval_arithmetic)

<comment><USER10> That's because intervals tend to just keep growing. Without some function to make the interval smaller or otherwise keep it bounded, cumulative interval arithmetic tends to be useless.

Using the rounding mode to calculate once with rounding down, once with standard rounding, and once to rounding up will give a much better indication of whether or not an algorithm is sensitive to roundoff error.

</comment></comment></comment><comment><USER11> This is about floating point arithmetic in computers.

<comment><USER12> This is specifically about IEEE 754.

Arbitray-precision floating point arithmetic like e.g. GMP offers doesn't suffer these issues.

<comment><USER10> MPFR is sensitive in exactly the same way. Just because you can arbitrarily increase the precision of results with that library doesn't mean that it isn't still sensitive to roundoff error.

<comment><USER12> Yes, you are right.

However, it's possible using MPFR in a way without suffering this issues. One could increase precision every time there would be rounding.

<comment><USER13> The problem is that the second you multiply by pi or e, which is fairly common, your required precision for a perfect result becomes infinite.

Even if you don't, your required precision blows up very quickly, and your performance drops.

<comment><USER12> In finite precision arithmetic "multiplying by pi or e" makes _no sense_. And all arithmetic is finite precision. You could multiply by an approximation, and accordingly adjust the precision to avoid rounding.

In more general context, you could choose e as the base of your number system and then multiplying by e is a trivial shift. Then, however, multiplying by 2 would make arithmetically no sense. The natural question that arises is whether it's possible to represent all computable numbers non-lossy in one system. The answer is yes.

Besides that, I think you should re-evaluate your decision-making for votes.

<comment><USER13> > In finite precision arithmetic "multiplying by pi or e" makes no sense. And > all arithmetic is finite precision.

Yes. that's kind of my point: Either you have a finite precision cutoff and lose accuracy, or the memory used for your arbitrary precision representation blows up to incredibly large values (transcendentals will do this to you quickly), or a combination of the two.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> That's the very interesting border between numbers as abstractions of quantities and numbers as element of a set (N, Z, R, C etc. The question of 0 is particularly puzzling to me.

<comment><USER15> Most numerical sets you're likely to run into (including N, Z, R, and C) are groups under addition, which (among other things) means `x + a = a ⇔ x = 0`

<comment><USER16> N is not a group under addition (lacks inverses).

</comment></comment></comment><comment><USER17> StackOverflow user tmyklebu provided an efficient algorithm to solve a more general floating-point equation, C1 + x = C2, using only computations in the very floating-point system that the equation is written in:

[http://stackoverflow.com/a/24223668/139746](http://stackoverflow.com/a/24223668/139746)

</comment><comment><USER18> >>Mathematically, if we had infinite precision

Or just fixed precision? For example the calculation is intuitive for `int`s.

</comment><comment><USER19> Mathematica gives 1.

        Int[1]:= 1 - x /. Solve[1 + x == 1, x]
        Out[1]= {1}

</comment><comment><USER20> One.

</comment><comment><USER21> If 1+x is 1, then logically, 1-x should also be 1. Period.

If this is not the case, then you have a crappy hardware or software math implementation that doesn't follow logic. Duh.

<comment><USER7> I'd be amazed if the hardware you're using and the software you're running doesn't have the "feature" that for some value of x, 1+x=1 and yet 1-x != 1. If you read the article you might understand why.

If you don't understand why, perhaps you could come back and ask specific questions.

For the concrete and practical minded who don't want to bother with understanding the theoretical arguments, here's some python:

        #!/usr/bin/python

        a = 1.
        x = 1.

        while a+x!=1.:
            x = x/2

        print 'x =', x
        print 'a+x =', '%.18f' % (a+x)
        print 'a-x =', '%.18f' % (a-x)

Output:

        x = 1.11022302463e-16
        a+x = 1.000000000000000000
        a-x = 0.999999999999999889

<comment><USER19> No, no! If your program can't get things that even kids can do done, you are writing rubbish.

<comment><USER7> I see you posted this on Facebook:

        There was a post on hacker news about floating numbers.
        It said "if 1+x is 1", then "1-x is not."  There is a
        long explanation of how this is true.  They are very
        proud of this outcome. They believe this wired outcome
        is "perfect logical". I just want to say "F**k you!"
        If your program can't handle those even kids can do,
        you are writing rubbish. F**k you!

It's not a case of being proud of it, it's an unavoidable consequence of using a small number of bits (32, 64, 128, 65536, all these numbers are small) to try to represent a very large range of numbers. In other words, it's an unavoidable consequence of using floating point.

The point is that floating point numbers are not mathematics, and they don't obey all the mathematical laws you've been taught. They're an excellent model, provided you stay away from the edges. But if you do go close to the edges, the inaccuracies of the model get exposed. To understand the difference is of real value.

Let's use mathematical reasoning to show why it's true.

Using 64 bit (say) numbers to represent a range larger than 0 to 2^64-1 we must choose either that the numbers we can represent are equally spaced, or not.

If we choose them to be equally spaced then we either cannot represent 0, or we cannot represent 1. To see this, suppose we can represent both 0 and 1. The numbers being equally spaced means that we can then represent 2, 3, 4, and so on up to 2^64-1. Now we have nothing left to go beyond, and thus we are not representing a range larger than 0 to 2^64-1. So if the representable numbers are equally spaced, then we cannot represent both 0 and 1, which seems sub- optimal.

If we choose them not to be equally spaced then there will be consecutive representable numbers r0<r1<r2, such that mathematically r1-r0 is not equal to r2-r1. Now set:

        d0 = r1-r0 so that r0 + d0 = r1
        d1 = r2-r1 so that r1 + d1 = r2

Suppose that d0 < d1, and let h = (d0+d1)/2\. Hence (d0/2)<h<(d1/2).

Note that d0, d1, and h might not be representable.

Now r0 and r1 are consecutive representable numbers. The number h is more than half the gap between r0 to r1, so we would want r1-h to round down to r0. But the number h is _less_ than half the gap from r1 to r2, so we would want r1+h to round to r1.

Therefore:

        r1 - h = r0
        r1 + h = r1

Thus it is unavoidable that if the representable numbers are not equally spaced then we can find a and x such that:

        a + x == a
        a - x != a

The above argument still goes through even if d0>d1, or if we want things to round down, or if we want things to round up, and we leave it as an exercise for the interested reader to check the details in those cases.

Now you have three choices:

* Reject this, because it contradicts your belief that floating point numbers must behave in the same way as real, mathematical numbers;

* Demonstrate a logical flaw in the argument; or

* Accept the conclusion, even though it contradicts your belief that floating point number behave in the same way as real, mathematical numbers, and accept that floating point numbers are just a model of mathematical numbers.

<comment><USER19> Thank you. I hope one day I will not complain about this because I find a better approach.</comment></comment></comment></comment></comment>


If Turing hadn't committed suicide, what would have changed in computer science? - <AUTHOR>

<comment><USER2> (NB: It's actually not conclusive that he committed suicide.)

We have have a lot of great minds who are still alive and who are still doing some of the more impressive research in Computer Science -- and they are universally (essentially) ignored. It's sad to say, but I'm not convinced Alan Turing would have met a much better fate.</comment>


A DIY Computer Science Education - <AUTHOR> https://bradfieldcs.com/diy/ <comment><USER2> I've submitted this on HN before hoping receive guidance along similar lines but it never grew to become a discussion (ceiling of 3 points).

Reposting my comment from my previous submission, would really appreciate feedback on this post from fellow experienced programmers!

This guide does a good job answering the question: "what should I learn to learn computer science?"

Author gives more emphasis to subjects that he has observed self taught programmers to be self admittedly lacking in. The coursework outlined resembles that of a top cs program, without making it look as elaborate as a curriculum sheet.

What does HN think of the above? Also would anyone recommend alternative learning material that is more sustainable to follow than a dry static book?</comment>


The Quietest Place on Earth - Orfield Labs - <AUTHOR> http://audiojunkies.com/blog/902/the-quietest-place-on-earth-orfield-labs <comment><USER2> "Above all was the sense of hearing acute. I heard all things in the heaven and in the earth. I heard many things in hell." "The Tell-Tale Heart", Edgar Allen Poe

"He said they have an ongoing bet for a case of beer regarding the chamber. If someone can last 45 minutes in there by themselves with the lights off, then they get a case of beer. If I remember correctly no one has been able to make it past a half-hour yet.

Basically with such a lack of sound the body and mind start freaking out. Imagine your heart beat being the loudest thing in the room. He can go into much more detail than I, but I found that extremely interesting."

See also: <http://en.wikipedia.org/wiki/Isolation_tank></comment>


Ask HN: How do you consume new comments on an HN post? - <AUTHOR> So it's early in the afternoon and I see an interesting post on HN. After looking at the link, I head to the comments section to see what people are discussing. There's lots of good stuff in there as usual, so I end up reading ~40 or so comments.<p>Later in the evening, I see that the post is up to 80 comments. How come there isn't an easy way to read the new comments? I have to look at all the comments I already read and figure out what's new based on kinda guessing at timestamps and stuff. Surely I can't be the only one that finds this experience cumbersome? <comment><USER2> I use this user script to show how many new comments there are, highlight new comments and auto-collapse threads without new comments since the last visit to a story: [https://github.com/insin/greasemonkey/blob/master/hncommentt...](https://github.com/insin/greasemonkey/blob/master/hncommenttrees.user.js)

A live version of the same functionality is also implemented in my read-only Firebase API client: [http://insin.github.io/react- hn](http://insin.github.io/react-hn)

</comment><comment><USER3> Searching for 'minutes ago' or 'hours ago' can help.

In the past, I have used a Chrome extension that would indicate which comments were new.

Because of this thread, I looked for installed extensions and see that I was thinking of Hacker News Enhancement Suite. (It shows a line going down to the left of comments newer than what you last saw.) [https://chrome.google.com/webstore/detail/hacker-news- enhanc...](https://chrome.google.com/webstore/detail/hacker-news- enhancement-s/bappiabcodbpphnojdiaddhnilfnjmpm?hl=en)

</comment><comment><USER4> I am probably a statisical outlier for how I interact with the site. I often do not bother to look for "newest" coments.

I use notifyhn, so: If I posted the article in question, most of the time, I will get emails notifying me of "top level" comments but not replies to them. If I commented in the discussion, most of the time, I get emails telling me oif new replies. I typically am interested in reading all of those new replies.

If I neither posted it nor commented in it, well, not all new comments are equally valuable. Stuff that floats to the top is more likely to add value. Stuff towards the bottom is often inane and does not merit more than a cursory sampling to see if the overall discussion down there is worth delving into.

I also check the new comments page a lot. If I see something intriguing there, I will click "parent" and follow it up. That has a pretty good track record.

If it is an excellent topic with an excellent discussion, assuming I have the time, I am fine with starting at the top and reading through the whole thing, even though it means rereading some stuff, in order to see comments in context.

If I really just want to see new stuff in a discussion I read portions of previoiusly, I check the time stamps. It isn't that hard if it is less than a day old. After that, time stamps get less useful.

</comment><comment><USER5> >Surely I can't be the only one that finds this experience cumbersome?

No, not just you. I consider myself a newbie on the board and often have to look at the "time" the comment was posted to see it is new.

FWIW, Here is what is on my Wishlist/what I hope the future holds for HN.. Eh, the audacity of me but here we go;

1) Just like how a new person is shown in a "green color", maybe new comments can be given a color also so once a user reads it under their profile it can change to the regular color. That way, it is easier to know what is new on a thread.

2)Every user based on rank should be assigned a color. To change a color in addition to karma points. This particular idea of rank I got from myfico forum as I contribute over there and it makes things very competitive although it is a different kind of board. Their version of "karma" is kudos. Here is an example of people with different titles and colors - [http://ficoforums.myfico.com/t5/Credit- Cards/bd-p/creditcard](http://ficoforums.myfico.com/t5/Credit- Cards/bd-p/creditcard) FWIW, I am user Yes-Its-Me on that board.

</comment><comment><USER6> There are a number of rough spots to the UX here. I tend to assume that pg didn't care enough to add it and the current staff either don't have the time or the inclination.

Although being able to sort a thread by latest comments shouldn't be impossible in an application written in the Language of the Gods, but it might be more difficult than anyone working on the site thinks it's worth. I understand their reticence towards new features but not all added complexity is a sign of feature creep. They are (at some point) adding at least a mobile friendly layout and thread folding so maybe resorting or indicating new comments might be in the pipeline too. If not, just adding proper timestamps to the comments somewhere (even just as data attributes) would make it easier for people to do it themselves through scripting.

Also, since the staff doesn't particularly like meta discussion this thread is probably going to be sunk by the moderators pretty quickly.

<comment><USER7> _Also, since the staff doesn 't particularly like meta discussion this thread is probably going to be sunk by the moderators pretty quickly._

It's not meta if it's the topic of the post. If it's a problem, Dan will stop by and tell us. I think usually it's user flags that sink such threads rather than moderators.

 _If not, just adding proper timestamps to the comments somewhere (even just as data attributes) would make it easier for people to do it themselves through scripting._

The comment and article id's are assigned sequentially, and should already work for ordering and time comparisons. I think this is what the various browser extensions are using for this purpose.

</comment></comment><comment><USER7> The "hckr news" extension handles this well: [http://hckrnews.com/about.html#extensions](http://hckrnews.com/about.html#extensions)

It highlights new comments on the [http://news.ycombinator.com](http://news.ycombinator.com) pages, and shows the number of unread comments on the alternate [http://hckrnews.com](http://hckrnews.com) front page. It's available for Safari and Chrome. The Chrome extension works fine for Opera (and likely other Chromium based browsers).

<comment><AUTHOR> Aww damn, I'm a die hard Firefox user!

</comment></comment><comment><USER8> Never start by saying "So".</comment>


Human blood cells can be directly reprogrammed into neural stem cells - <AUTHOR> https://www.dkfz.de/en/presse/pressemitteilungen/2018/dkfz-pm-18-71-Human-blood-cells-can-be-directly-reprogrammed-into-neural-stem-cells.php <comment><USER2> I was directed to ask these questions here. Perhaps someone can help.

>They can be modified and multiplied indefinitely in the culture dish

What conditions exist within a culture that allow stem cells (or other cells) to replicate without regard for the Hayflick limit? I was totally unaware that we had extended it (not defeated it) in any life more complex than a worm. And on the topic of the Hayflick limit…

>What is special about the reprogrammed cells of the Heidelberg researchers is that they are a homogeneous cell type that resembles a stage of neural stem cells that occurs during the embryonic development of the nervous system.

Are they saying that the stem cells can be reprogrammed into cells that more greatly _resemble_ younger human cells, or that they're actually being made _into_ scientifically-defined _younger_ cells? How is that even possible? I was under the impression that all cloned cells retained their telomerase length. As such, any clone (or cloned tissue) made from them isn't going to be any more "youthful" than the original. If the case is that an entirely cloned organism is made, it will only a life expectancy as long as the original has LEFT to live–since the telomere isn't restored to its original length.

I guess they wouldn't call it a "regenerative" therapy if they hadn't fixed the telomere length problem in the cloned cells, but… if they _have_ , isn't that sort of the single biggest fucking deal in human history? Isn't this the first time that human cells have been genuinely restored to youth, and could therefore be reapplied into a person to extend his life? And, thereafter, be the gateway into figuring out how to simply restore the DNA of cells in the body without excision and replacement?

Thanks for any answers!

<comment><USER3> Many types of human-cells don't abide by the classic Hayflick limit, including HeLa cells, cancer cells, and gametes.

This brings up the point: if the cells can indeed divide indefinitely, which even stem cells cannot, then aren't these effectively cancer cells / made cancerified? Perhaps this was done on purpose independently to make the cell culture easier to work with, but that should have been mentioned.

<comment><USER4> They might share some properties with cancer cells, but probably not all the key characteristics.

For example, one key feature of a cancer cell is that it ignores signals that would causes normal cells to stop growing or apoptose (die).

</comment></comment></comment><comment><USER5> This is very uplifting news! This makes me feel very hopeful about the future, too.

I personally have 2 rare autoimmune neurological diseases that affect my peripheral nervous system. One of them is very rare, and there is only case reports and cohorts of it, at best, in the medical literature.

There will likely never be an FDA-approved treatment for what I have, and this is why precision medicine needs to exist formally, with proper regulation via government. Unfortunately, the United States government has not been adapting, in a progressive way, to the changing times, with respect to emerging technologies, in general.

This sounds strange, but the lack of a reforming/progressive government is the greatest threat to my well being with rare neurological diseases and being disabled.

I hope that therapies and cures can come sooner than later for everyone. I also hope these therapies are not prohibitively expensive or inaccessible.

</comment><comment><USER6> It looks like this builds on the 2007 and 2012 publications.

> Scientists from the German Cancer Research Center (DKFZ) and the stem cell > institute HI-STEM* in Heidelberg have succeeded for the first time in > directly reprogramming human blood cells into a previously unknown type of > neural stem cell. These induced stem cells are similar to those that occur > during the early embryonic development of the central nervous system. They > can be modified and multiplied indefinitely in the culture dish and can > represent an important basis for the development of regenerative therapies.

</comment><comment><USER7> When can I inject this and fix my stroke? Hurry please. :)

<comment><USER8> I'd caution against randomly re-wiring chunks of your CNS. There's probably a very good reason why we don't naturally do that.

<comment> zupa-hu I'd caution against randomly flying across cities. There's probably a very good reason why we don't naturally do that.

Just pointing out that this is a weak argument.

<comment><USER9> Many people were injured or killed trying to invent flying machines until we finally got it right.

<comment><USER10> Many many people have already died of brains issues. On the order of 5% of everyone who has lived ever. Esp in the last 2 centuries which from some counts is more than ever lived before.

Your simile would be apt if people not getting to the other side of the city were dying or having greatly decreased quality of life (alzheimers, stroke).

</comment></comment></comment></comment></comment><comment><USER11> I thought blood cells shed their nucleus?

<comment><USER12> Red blood cells do. Leukocytes are nucleated.

</comment></comment><comment><USER13> What happens to the telomeres?

<comment><USER14> I wouldn't worry too much, neurons don't divide indefinitely.

</comment></comment><comment><USER15> Is this something that occurs naturally? As in, are there normal pathways by which cells change their types in beneficial ways?

<comment><USER16> An analogous manifestation can be triggered by drilling holes in the kneecap allowing blood to move into damaged cartilage (say, below a kneecap). In the new environment, some of the red blood cells apparently transform into cartilagenous cells and repair the cartilage. Some doctors in sports physiology were doing this decades ago. No significant pressure can be put on the knee for 3-6 months but the solution was well worth it to the individual with whom I spoke.

So it seems that it is likely a natural/normal method of repair although it may be very slow w/o some prompting (drilling the holes, in this example).

A newer technique that sounds very similar but more general is P.R.P. (Platelet Rich Plasma) therapy:

New Yorker: "The Blood Injections That Might Transform Orthopedics"(2013)

[https://www.newyorker.com/tech/annals-of-technology/the- bloo...](https://www.newyorker.com/tech/annals-of-technology/the-blood- injections-that-might-transform-orthopedics)

</comment></comment><comment><USER17> This has been around for quite some time. 2007 publication by Yamanaka, and then 2012 by Weissman/Wernig et all.

</comment><comment><USER18> Would this be an argument against umbilical cord banks ?</comment>


Ask HN: Why don't employees negotiate work week hours as often as salary? - <AUTHOR>

Why is it so rare and/or a bad idea for employers? <comment><USER2> It's because it makes you sound like a clock watcher.

There's also the hours vs productivity issue. Managers STILL would rather you were less productive but in the office for more hours. Even though it makes no sense.

With a salary it's often implied that you'll be there until the job is done and 9-5 is a minimum. So to negotiate hours is like saying "can I do less work for the same money?"

I always find myself happier in a job where I can negotiate my hourly rate and my weeks work can fluctuate.

I fought really hard at my last contract to get a 35 hour week over 4 days. It lasted a while and then they said they needed me to be there 5 days - still 35 hours though. They gained nothing except to distrupt my work/life balance.

It really gets me how some people come in super early but then spend their day actively avoiding work.

In my shorter working week I fixed more issues, took more calls, worked through every job role in the department, built a productivity system to actually prove what we were achieving and presented 2 ideas to save the company £200k every year (they're implementing them now)

Yet those that punch the clock and rack up the hours are preferred!

</comment><comment><USER3> Because of external costs, like healthcare, and training, one employee working 40 hours has a lot more utility than 2 working 20. This is especially true with the large differences nn productivity from person to person, especially in software.

This is also why people crunch, and demand over time. Productivity goes down, but each individual hour worked is still better than getting some fool off the street.

<comment><USER4> I'd be surprised if the same economies still apply when choosing between one employee working 90 hours a week or two working 45 though, assuming we're not talking about people with the acumen and incentives of startup founders or law-firm partners.

</comment></comment><comment><USER5> Zambuni's comment is definitely true, although I don't think it accounts for the incredible uniformity of the 40-hour work week. (For instance, if employees properly valued healthcare as compensation, then the 20-hour employees would rationally accept less than half the pay of a 40-hour employee.)

There are other contributing "signaling" effects which are postulated, e.g. if you tell a future employer you only want to work 20 hours they take this as a sign that you are lazy or not committed. These signaling effects result in an inefficient market (i.e. a non-optimal work schedule is negotiated) and have been used to justify government intervention. It seems surprising that signally effects could be this large, but people also argue that most college educations are essentially zero value-added and serve only signaling functions as well. I've been influence a lot by economist Robin Hanson in this direction, and you can find to read from him.

Lots of disagreement among academics, though, so take it with a grain of salt.

</comment><comment><USER6> I just show up and leave when I want. Being the average human I only think about things that impact me. Rather short sighted and selfish I know. But I have never thought about why people do not negotiate work hours because I assumed everyone did because it is what I negotiate hours when I decide to sign on somewhere.

I think that it rather obvious that people are comfortable with accepting the status quo. 9-5 is the standard workday. Because it is the "standard" people do not question it.

Going back to the original question, it is not a bad idea to negotiate work week hours.

I always negotiate work week hours. If a job requires that I show up at a certain time, I don't take the job. The job needs me. I do not need the job. As long as I ship, they should not care when I show up or don't show up.

It is an antiquated belief system that dictates work hours.

<comment><USER7> I see what you're saying, but if your work is entirely dependent on others working with you and vice versa, then I don't think that mentality works. If what you're doing depends on Bob's work, and Bob's work depends on what you're doing, then the best solution is to have you and Bob work together at the same time. The easiest way for that to happen is for both you and Bob to have a schedule with a _little_ bit of flex in it, that overlaps for a significant portion of each other's schedule.

</comment></comment><comment><USER8> It really depends on the field you are in. I work in an environment where clients on both coasts require consistent hours and unfortunately the managers can only help our clients to a certain extent before they actually need someone with tech know how. Someday I'd like to cut a day of my work week out but for the time being I enjoy a consistent mon-fri 8-5 with occasional overtime. It helps that I work in a pretty chill work environment with friendly people.

</comment><comment><USER9> I did.

Sliding my working hours by two hours (now starting at 7 io 9)allowed me to save 200euros/m on train tickets.

Way easier to agree on that with the bosse than to discuss a 200e/m additional raise :).

Best deal I ever made imho.

(I live 1h from work)

</comment><comment><USER10> Local laws can enforce hours/day for example. It can be a legal issue to the company if it does not follow the rules. In these cases, hours are not really negotiable.

</comment><comment><USER11> A prescript to the following: If this bothers you, then GOOD! My advice is to recognize and avoid such organizations when you can. Save yourself potentially years of agony. Nonetheless, you'll run into it a lot -- even if it's when you're encountering it with a third party with whom you interact.

Also, there are times when teamwork does require concurrent attendance. But... that's not what I'm talking about, below.

\--

Appearance.

Many of us are familiar with the advantages "attractive" people accrue in various situations (including employment, not infrequently -- speaking generally).

Well, appearance matters also in matters of attendance. (And dress, and a few other things, for that matter.)

If you aren't in your chair during the "prescribed" hours, your boss may feel it makes them look bad. And, they may be right. Whether "timely attendance" improves your actual performance may be secondary to this concern, from the organization's perspective.

(Many here might argue it's actually counter-productive to their performance. But... that's not primary to the organization. Yep, that's right -- it's not primary to the organization.)

Plus, they may well think that "if we do it for one person, we'll have to do it for all people".

Ever notice how organizations are very circumspect about what they pay their employees? (I mean, particularly, _within_ the organization. And yes, the question is largely rhetorical.)

Well, it's similar with hours. Only, other employees can "see" the "allowances" made to you. The organization is afraid they'll start asking for -- or insisting upon -- the same.

At which point, you need a significantly different organizational model -- one that can handle flex hours and/or offsite workers and all that.

They're not going to tackle that, just for your. And many managements won't tackle it until they're dragged into it, kicking and screaming. (Business management, for the most part, is a very _conservative_ activity and mindset.)

P.S. Personally, I've watched many employees talk away literally hours of their workdays -- chitchat with coworkers, on the cell phone, etc. And I've cleaned up a lot of their messes.

But, they were in their chairs on time, and they "tried". And they towed the line -- whatever line -- their managers espoused. And that was often, ultimately, more valued and rewarded than high, but non-standard, performance.

P.P.S. I guess one might think or argue that when hours are formally negotiated, the provides some explanation and shelter for the boss.

However, many organizations don't provide middle management with the authority to negotiate hours. And... I recall from my own experience more than one memo coming down from senior management that stated the likes of: "No more virtual work plans"; "Acceptable starting hour range changed from [this range] to [smaller range]"; etc.

It may be "easier" to pay you more (or less) -- generally non-public or non- publicized information -- than to let you be consistently absent when others are expected to be present.

Appearance.</comment>


Better than free - <AUTHOR> http://www.kk.org/thetechnium/archives/2008/01/better_than_fre.php <comment><USER2> So to maximize success, maybe providing the most number of these qualities as possible is the next killer app. For example: a realtime, customizable, certified widget, that comes in a box, and is installable on your iPhone where you can show your friends, and call for support if you need it, as well as tip the creators if you like it.

</comment><comment><USER3> I didn't believe his bit about ryanair so I had to go check it out myself. Ryanair.com A one way flight Dublin to Rome costs 0.01 EUR plus 22.74 EUR for taxes/fees

<comment><USER4> Just don't get on the one to Naples, or they'll hand you some trash to take when you go back:-)

</comment></comment><comment><USER5> I really enjoyed that one. I'd be grateful if you'd could suggest some important "classics" readings about this issue: free as the new paradigm.

<comment><AUTHOR> Not many "classics" on a "new paradigm" :)

Chris Anderson is writing a book called "Free". You should read his blog, made for another good book "The Long Tail" <http://thelongtail.com/>

Lawrence Lessig and the whole creative commons movement have good thoughts. Here is a free book of his: <http://www.free-culture.cc/freecontent/>

and here is an amazon link, but i think there is a way to buy it while supporting the cause... [http://www.amazon.com/Free-Culture-Nature-Future- Creativity/...](http://www.amazon.com/Free-Culture-Nature-Future- Creativity/dp/B000BNPG46/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1202059070&sr=8-1)

<comment><USER5> Thanks for the references. I read parts of Lawrence Lessig's books in the past. Very clever stuff indeed. And from now on, I'll definitely keep up with Chris Anderson's blog. Those are stimulating readings.

Thanks again!</comment></comment></comment>


The Intel Optane SSD DC P4800X (375GB) Review: Testing 3D XPoint Performance - <AUTHOR> http://www.anandtech.com/show/11209/intel-optane-ssd-dc-p4800x-review-a-deep-dive-into-3d-xpoint-enterprise-performance <comment><USER2> Aerospike CTO here. We did a lot of testing with this drive, and the interesting bit is that performance doesn't degrade under write pressure. With a NAND drive, when you push writes high ( usually needed in front-edge / microservice apps ), the read latencies take a real hit, and often get into millisecond-average at the device. Optane simply doesn't behave that way.

All of that means you have to code to it differently. It isn't DRAM, it's not Flash. We've done the work to integrate and test at Aerospike ( semi-plug sorry ), so the system works.

The XPoint tech gets really interesting later in the year, when three things happen: the higher density drives show up, Dell ships their high-NVMe chassis, and more clouds support it.

Regarding cloud - IBM's BlueMix has announced Optane, and the other providers have a wide variety of plans. I can't comment more.

Finally, Intel has been clear about putting this kind of tech on the memory bus, and that really opens the doors to some interesting choices, some data structure changes. That requires new coding, we're on it.

Here's an interesting ComputerWorld article about our experience with Optane: [http://www.computerworld.com/article/3188338/data- storage/wh...](http://www.computerworld.com/article/3188338/data-storage/what- aerospike-learned-from-testing-intels-superfast-optane-ssds.html)

<comment><USER3> > All of that means you have to code to it differently.

> That requires new coding, we're on it.

Can you give a rough example to guide my thinking? I understand OSes are considering ways that this has both traditional disk and RAM properties, and are sorting out storage subsystems of drivers, but I assume you're talking about something closer to user-level structures and algorithms?

<comment><USER2> Yes, I think there are clear user-level approaches you can ( and must ) take.

There are some interesting talks out there about NAND, how it works, and how to optimize - I saw something here on HN a few days ago about writing your own time-series database, which got a variety of the facts wrong but was an example of how to choose data structures that are NAND-reasonable. You can look up some of my YouTube talks and slideshare, for example - I've been talking this for a while.

At a high level, NAND has more IOPs than god, because they don't seek. An old enterprise spindle littlerally does 200 to 250 seeks per second. And Flash can read from 500,000 different random locations per second. That's so far apart that different user level approaches are called for.

In terms of XPoint, let me give you one detail. What does a "commit" look like in XPoint? What do the different kinds of memory barriers look like? What's the best way to validate this kind of persistence on restart, which you don't have to do with DRAM? Does that change your "malloc" free list structure, because you need to validate? Is it a good idea to chop up all the space available, so you can validate different parts independently, or does that mean you end up with the multi-record transaction problem? These are the kinds of things we consider in database design on new hardware ( obligatory: we are hiring ).

</comment></comment></comment><comment><USER4> Impressive.

On a semi-related note, the fact that cloud providers offer managed Postgres databases is great, but things like this keep pushing me to think about bare metal in colo. A $20,000 server/backup combo with a couple of these will give me 5x the performance of a server that costs me $70k/year on AWS _before provisioned IOPS_. That's a huge gap to play with for taking care of your own maintenance costs.

<comment><USER5> It has always been the case that owned metal is much cheaper than cloud. Cloud wins for things like very small machines (you can't buy 20% of a metal box); temporary deployments; and startups where the investors don't want to be on the hook for big $$ capex that they end up needing to shift on eBay post flame-out. Also where you just don't have the ability to run hardware (increasingly the case) and where for whatever reason the cost to deploy and run metal would add up to more than your $70k delta (easy if it needs one more person on staff).

Also remember that funky storage card may have a firmware bug that costs you hundreds of hours to track down and get resolved. That time could have been burned by Jeff Bezos' guys instead..

<comment><USER6> I never understood this. Just rent a dedicated box or ten. There's no capex, it's way cheaper to have 3-5 times the capability you will need just sitting there instead of renting stuff from Amazon with all the I/O unpredictability, complexity, w/e. People talk as if colo and cloud is the only solution -- and I am like, rent dedicated is the only solution. I do not readily know how huge your site needs to be for colo to worth it but Examiner was ~75th on Quantcast and we ran it on a dozen dedicated boxes and colo would'v been ridiculously more expensive.

<comment><USER7> With public cloud, you're paying for the control plane. Period.

Yes the raw compute cost is much higher (and the performance often less) than bare metal, but software development is really, _really_ expensive. With the public cloud you get the result of literally millions of programmer-hours "for free". To many that's worth it (at least at first, below a certain scale).

This is also one reason why Kubernetes is really exciting, BTW. It's a control plane that you don't have to rent.

<comment><USER6> I really badly do not understand what EC2 gives you that a dedicated box doesn't. Yes, if you use all the other services, then there's a value but then again for example SQS is a particularly shitty queue.

<comment><USER8> It's not ec2, it's the ecosystem.

DDOS, multi-path, multi-az, dr, snapshots, hardware redundancy, elasticity, freedom from datacenter contracts, fiber contracts, driving to rack stuff, jammed fingers, staff costs, firmware bugs, bad hardware batches, cdn, compliance costs. I have more but I'll stop there.

It doesn't make sense at very small or large scales but it captures a hell of a lot of the middle.

<comment><USER6> Most of what you described is colo and not dedicated boxes...

<comment><USER9> And honestly, even colo doesn't take that much time unless you're scaling up like crazy. Once we racked our machines, we almost never had to touch them. You can get a LOT of resources in a single box for $10k/server these days.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Some people like to claim that old storage technologies go away. But in reality old storage technologies live on along side of new... all that happens is that we end up having more tiers to deal with.

Drum magnetic memory has been replace but we still have spinning rust, tape, optical, DRAM, SRAM, SSD...

<comment><USER2> There are only 3 forms of bit storage, historically.

1) Poking holes in things ( tape, DVD, etc ) 2) Magnets ( core memory, drum memory, tape, disks ) 3) Circuits ( DRAM, NAND, etc )

Examples of all three of these still exist.

What's interesting about XPoint is it is literally a fourth form that has never been commercially available: melting a substance and cooling it quickly or slowly, forming either a crystal or amorphic solid, which then has different properties. We don't know what the substance is, but it's cool that we now have this 4th thing.

<comment><USER11> There are only 3 forms that really survive to this day. There are a couple of notable obsolete ones:

4) Delay lines. I would definitely not categorize these as circuits. The bits are stored as pressure waves in motion.

5) Electrostatic charge. Talking about the Williams tube. The bits are stored as residual charge on a phosphor surface.

<comment><USER12> ... and magnetic bubble memory, which is a very odd hybrid somewhere between tape and delay lines.

Also, phase-change optical (as in rewritable CDs/DVDs).

Also also, printing stuff out at high bit-density with good ECC, and scanning it back in again.

Also also also, chemically encoded bits (as in the DNA-based storage that was demonstrated recently).

There are more, not in common use or very scalable (e.g., mechanical switches).

<comment><USER11> I think it's a bit conspicuous how you mention good ECC for printing stuff out, since good ECC is a staple of many forms of storage (especially hard drives, optical drives, tape) and we don't mention e.g. "storing bits on spinning rust with good ECC and reading it back in again".

I think the problem with paper is thot it's not really part of the computer any more. You need a human to take the paper out of the printer, store it, and put it back in the scanner. At least with tape and optical, we have robots to do that for us.

<comment><USER12> I hadn't thought of that. Your average "crappy thumb drive" probably has more ECC than you'd need on a physical piece of paper. You're right.

<comment><USER10> Although when crappy thumb drives fail the whole thing tends to be unreadable or doesn't even show up as a USB device.

Generally no amount of ECC will help the default failure mode of these.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> I'm the technical lead for the Storage Performance Development Kit ([http://spdk.io](http://spdk.io)). I have one of these in my development system and we're hoping to post benchmarks fairly soon. SPDK further reduces the latency at QD 1 by several microseconds. It's an impressive device!

<comment><USER14> Any word on real world endurance?

There's some speculation these devices are massively overprovisioned due to the er... cells (or equivalent) wearing out much faster than early hype/info/etc.

So, it'd be interesting to get a real world idea if these things are likely to explode badly ;) 6 months after purchase or not (etc). :)

</comment></comment><comment><USER15> Jeebus, that's one performant drive. [http://www.anandtech.com/show/11209/intel-optane-ssd- dc-p480...](http://www.anandtech.com/show/11209/intel-optane-ssd- dc-p4800x-review-a-deep-dive-into-3d-xpoint-enterprise-performance/4) \-- I can't believe those numbers. The QD1 numbers are impressive to say the least.

</comment><comment><USER16> The random access performance is IMPRESSIVE! It is going to bring a storm in DB landscape, since now we probably don't need to force to use data structure that tailored to perform with sequential writes, but all the other data structures as well? Very exciting indeed!

</comment><comment><USER17> At $5 per gb, I would instead buy RAM.

Edit: why the downvotes? I'm currently doing image processing and using a ram drive with ~200GBs.

<comment><USER18> The reason you would use this over RAM is persistence, it doesn't need to stay powered to keep the data.

If all you need is a massive amount of temporary storage for some algorithm, you'll still need RAM, but if you want a stupidly fast backing store for a huge amount of source and then output data, this is pretty incredible.

<comment><USER19> When your computation fits in RAM, what's the point of a lower latency backing store that does fewer gbps per dollar?

</comment></comment></comment><comment><USER20> Another nice review of the same part: [https://www.pcper.com/reviews/Storage/Intel-Optane-SSD- DC-P4...](https://www.pcper.com/reviews/Storage/Intel-Optane-SSD- DC-P4800X-375GB-Review-Enterprise-3D-XPoint)

</comment><comment><AUTHOR> Better than NAND performance if ever so slightly for a first generation memory product but I still feel like it would not able to scale to DRAM speeds. The search for a universal memory goes on...

<comment><USER21> They're not advertising it as universal memory or a DRAM replacement though, so I'm not sure why you would make that comparison. They're advertising it as sitting between RAM and an SSD on the storage hierarchy, and it seems to mostly deliver on that promise.

<comment><USER22> One of the proposed uses for 3D XPoint has been replacing system memory, owing to its extremely low latency (which it has already delivered), high throughput, where it's early, and supposed almost unimaginable reliability/rewrites. In DIMM form it wouldn't have the overhead of a storage controller, could hypothetically be very parallel, etc.

It's extremely early in the technology, and I imagine we will get there. The first SSDs were terrible compared to SSDs now, and 3D XPoint as a technology is extremely scalable and refinable.

<comment><USER19> > extremely low latency (which it has already delivered)

Are we looking at the same numbers? "probably under 10 microseconds" is pretty terrible compared to DRAM.

<comment><USER22> 3D XPoint has extremely low latency (e.g. 7 usec), and has already been demonstrated as such. Putting it through a PCI slot and a storage controller is not the same. The discussion is about running it as DIMM memory through a normal memory controller.

<comment><USER19> So you remove the storage controller and PCIe bus and you go from 10us to 7us. 7us is still a hundred times slower than DRAM, is it not?

<comment><USER23> You're ignoring a lot of context being created by the parent comment. While the latencies may never directly compete with DRAM, planned densities are already more than favourable. Having a 2TB chunk of persistent memory mapped into your address space with single-thread performance exceeding 100,000 random reads/sec with extremely consistent latency is a game-changer in for example database applications.

<comment><USER19> What context am I missing? While Analemma_ was talking about using it to augment DRAM, like you are, endorphone was very specifically talking about _replacing_ DRAM in that comment. And that comment claims that it already has good enough latency for the job.

<comment><USER22> It's turtles all the way down, and I think this is needlessly splitting hairs.

L1->L2->L3->(L4->)DRAM->Storage

3D XPoint is being considered as the DIMM-module, byte-addressed "memory" before storage. Saying that it "augments" DRAM is almost meaningless because we already have multiple levels of DRAM.

<comment><USER24> If I am not mistaken, we have only one level of _D_ RAM. Caches are SRAM. (Also, DRAM on DIMM is not byte-addressable)

<comment><USER25> The PS2, Xbox 360, Wii, and some intel chips with iris provide on-die DRAM caches.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> Which are the use cases for an SSD like that? Would I see improvements if I were to load my db on it or is it for working with bigger files?

<comment><USER27> These are going to be absolute beasts for databases.

Databases are best on drives that have reduced latencies. Data access is random and keeps jumping around the drive for joins. Your SELECT statements are going to speed up in proportion to latency improvements.

</comment></comment><comment><USER28> I am rather hoping this make large capacity DRAM some price drop.

<comment><USER29> I'll settle for NAND pricing to drop. There's a bit of large-scale NAND shortage right now. Companies are bearing the brunt of the shortage right now, but they'll past it on to consumers if it continues much longer.</comment></comment>


Blogger beware: Postings can lead to lawsuits - <AUTHOR> http://www.latimes.com/news/nationworld/nation/la-na-blogger-suits-20100823,0,5604043.story

<comment><USER2> Lots of things can lead to lawsuits. Especially in a climate where reason and live-and-let-live have been replaced by litigation. It wasn't always like that, but then again we didn't always have this many lawyers.

I have received on average at least one threat of a lawsuit per _month_ since roughly 1998, which is when we started getting a little larger online. As a rule these threats come from the United States, and equally predictable once I outline the legal situation to them they change their tone and become polite and reasonable individuals.

I think that for bloggers the same holds, simply add an international component to your situation and the cost of 'because I can' legislation goes up so much that you might end up resolving things amicably instead of through the courts.

I also have a rule that anybody that does not want to be reasonable _has_ to sue me, that is, they actually have to follow through on their threat. To date that hasn't happened.

So most of this is all bark and very little bite, but I'm sure that it is possible to be sued for blogging or operating any other web property, it just hasn't happened to me yet. If you go out of your way to slander or libel someone then of course you're just as culpable as you would be 'in real life', after all the web is an extension of real life.

Just like lots of other activities can get you sued. Just be a bit more careful when you criticize someone in print than you would be if you spoke out loud, that should take care of most of it. 'It is my opinion' goes a long way towards solving most of this.

<comment><USER3> "I also have a rule that anybody that does not want to be reasonable has to sue me"

That might work with the average Joe or the guy in his basement, but a public figure might, knowing that he vastly out powers you in terms of law expertise, follow through. So too a company. That is, if they actually have any basis for it. You can not be sued for opinions, but you need to make it clear that they are opinions, and you can not be sued for saying the truth. If you blatantly defame someone however, again the average Joe might not want to go through the hassle as he would have to pay lawyers, but some other person would have no reason to hesitate. So if you defame someone, just offer them to amend it, if however they are making threats without any base at all, then yeah sure stick with your rule.

<comment><USER2> > That is, if they actually have any basis for it.

That's the key though.

And in the very large majority of the cases it seems that threatening to sue are a modern day equivalent of baring your teeth. And just like in the animal kingdom, most of the time, showing that you have teeth too, and presumably bigger ones will cause the other party to back down.

Of course you have to weigh your position carefully, but even corporations have backed down when faced with the prospect of someone that would not be scared by this. And in those cases where _I_ threatened to sue and the other party did not back down I followed through each and every time, haven't lost a single case to date.

It all depends on what is at stake and how much of it is simply kneejerk responses. A very large portion of all this is just bluster and threat display, most of the times there are reasonable people underneath the angry facade, and if they realize that their facade has been punctured quite often the reasonable person emerges.

Those times where I sued the business interests warranted the investment in legal fees and the damages recovered in turn covered those fees. If that would not have been the case I would have let it slide, otherwise you're just throwing good money after bad.

</comment></comment></comment><comment><USER4> I think it's not the worst idea in the world to hold people accountable for what they say. On the other hand, the legal system in most of these cases seems to serve not for the better purpose. It basically ruins people's lives and makes them spend their money to defend themselves in courts over accusations that may not pass the common sense check. Not good for economy.

<comment><USER5> It would be an interesting experiment if a blogger adds a small disclaimer: "This is a work of fiction &| gossip" to his "libelous, slanderous" "claims"... Or put every adjective in "quotes" with "some say" at the beginning. This would confuse the lawsuits even further.

<comment><USER4> Adding "may or may not" to every sentence would also be a good idea.

<comment><USER6> Most public figures already do something like this when speaking or writing. "Allegedly", is pretty much becoming a salt term for every verb and is well on its way to joining the "most used words in english" right after "the" and "a".

</comment></comment></comment></comment><comment><USER7> I've always been a bit amazed at how many people think that writing something on the internet is safe, even if they know that writing the same thing in a magazine, or printing it up on flyers and handing them out on the street, would get them in trouble for libel.</comment>


The Apple Strategy Tax - <AUTHOR> http://arstechnica.com/staff/fatbits/2011/03/the-apple-strategy-tax.ars <comment><USER2> The way the OP is presented is a little confusing, comparing Microsoft and it's internal applications having a 'strategy tax' versus Apple and their internal and 3rd party applications. I do agree with the closing argument, it definitely could have been presented in a less confusing way.

Apple is in every right to charge whatever they want, but that doesn't mean they should. I would hope that everyone that is affected by the policy change will jump ship and show Apple that they are important to the iOS ecosystem. Maybe even causing Apple to change their policy to be more developer friendly. It is crazy to me that Apple lauds their iOS app ecosystem as a reason to buy iOS devices but then punishes the developers that make those apps.

<comment><USER3> I didn't find the article to be confusing.

As it explains, Apple is the arbiter of every application that appears on the App Store, both internally or externally developed, creating a situation in which 3rd party developers are loosely similar to internal teams at Microsoft.

Microsoft never tried to be gatekeeper of what could or couldn't be published on Windows, thus it could only control the fate of its internal apps, whereas Apple can control both internal and external apps equally, thus the loosely parallel situation even though in Apple's case their strategy tax can be used to kneecap external developers just as much as internal ones.

<comment><USER4> That was one of the connections I was trying to make, though I agree it's not spelled out as well as it could be. The other is that Microsoft's decision to expand into so many different markets parallels Apple's decision to do the same. When you're a platform owner and you also want to build businesses on that platform, the "success" scenario for your businesses can end up looking like a failure scenario for your platform, and vice versa.

For example, it's some person's job at Apple to make the iBooks store the most successful ebook store, but it's another person's job to make the iOS platform the most attractive, popular platform. My point in the final paragraph was that the only way for Apple to reconcile this tension may be to decide that the complete domination of Apple's businesses built on the iOS platform actually would make iOS the most attractive, possible platform. Ergo, the "What's good for Apple is good for America" reference. But when Apple's businesses have so many practical and now financial advantages versus competitors, how sure can Apple really be that its iOS content businesses would be winning based on their merits and not because of their "unfair" advantages? (That is, assuming the platform isn't stunted even sooner by customers abandoning it as their favorite non-Apple businesses decide they can't or won't agree to Apple's latest round of policy changes.)

<comment><USER5> In my view, Webkit is the canary in the coal mine for the strategy tax. The most viable competition for iOS native apps is HTML5/Javascript applications.

If I ever feel like the webkit team isn't pushing into new technologies as aggressively as possible, I get nervous. For example, it would probably be in Apple's best interest for Mobile Safari not to support offline storage. It would force developers who need offline features into creating native apps instead.

In this way, I think the Google Chrome team is giving us a good yardstick for measuring Apple's willingness to compete.

<comment><USER6> Apple was pushing HTML5 as much as anyone else if not more. To claim that it was only ever because of Google is unfair at best.

<comment><USER7> I think people forget that the original intention of the IPhone was to run web apps. Once the clamoring for native app development became too big the beast known as the app store was born.

<comment><USER8> I think you're confusing Apple's public stances with their actual intentions. Did Apple plan to release the SDK originally? We don't know. Do you?

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> One effect is to encourage competitors to use non-iOS platforms, including webapps on iOS, or android. The consumer downside is if these are not also available for iOS.

However, if Apple quickly copies those features, or buys the company (as it often does), then its customers aren't harmed. And, in fact, Apple's apps are often leading anyway.

I think the place for a real downside is for apps that would be better or more quickly developed on the iOS platform, or would be more attractive to developers there (because more profitable or more users). These apps would appear more slowly for other platforms, if at all. Because native iOS apps are faster than webapps, and because iOS customers seem willing to pay more than Android users, this downside seems realistic - and invisible.

</comment><comment><USER10> Until more official news about the fee is released, I'm done reading these articles. The speculation and thinking-four-steps-ahead chess moves are not convincing.

</comment><comment><USER11> I can't really reconcile the hope in this argument that apple could enable/allow more constructive and innovative business models to flourish... with the(at this point) unconvincing menace it's being to itself and others. I don't see the subscription move as trying to directly favor Apple's stores: they _don't_do_subscriptions_.

I honestly can see this move as being more 'in bed' with old media than a type of not-invented-here syndrome. In the iMovie intro yesterday the CEO of Apple said they're trying to do the platform right with an app they like developing, but also raises the bar to a place other developers should shoot for. I'm not saying to take that as parallel to 'the brand of capitalism we foster is naturally better', but who knows if there couldn't be an upside(once things get clarified) that's natural for the market and doesn't smack of greed.

</comment><comment><USER12> Did anyone else think of Twitter while reading this article? Specifically re providing a platform and then competing on that platform.</comment>


Show HN: Memory Chimp – How good is your working memory? - <AUTHOR> http://awendt.github.io/memory-chimp

<comment><USER2>
      Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.

I feel like this happens on the majority of the demos on the HN frontpage too. I just tried searching for what percentage of users disable cookies, and it seems like ~10% is a common figure. (Though I got numbers as low a ~1%, and a lot of confusion about third-party cookies.) I know this isn't technically a cookie, but I think most of the major browser vendors lump it under the same preference.

Anyways, hackers and demo writers: degrade gracefully. On first brush with your random website, I might not want to let you track me. (I don't know what you're using this for.) Show me value. Or at least tell me why you need this.

<comment><AUTHOR> Thank you for reporting this, I've create an issue: [https://github.com/awendt/memory- chimp/issues/1](https://github.com/awendt/memory-chimp/issues/1). To explain why I do this: There's one write to localStorage, to persist your personal best across sessions.

In my defense, I did read the guidelines before posting this and it explicitly said:

> HN users are comfortable with work that's at an early stage.

This is my first "Show HN." I'll put "graceful degradation" on my list for next time :)

<comment><AUTHOR> This is now fixed.

</comment></comment></comment><comment><USER3> Remembering a pattern seems easier than remembering the actual order. Maybe it's because of years of using pattern unlock on my phone.

Very cool. Is there any theoretical basis to it? Some research? Does the ability to solve this test correlate with other qualities?

<comment><AUTHOR> See [http://www.youtube.com/watch?v=zsXP8qeFF6A](http://www.youtube.com/watch?v=zsXP8qeFF6A) for a video that made me build this.

Google for "ayumu chimp" for a number of articles on the subject.

<comment><USER4> "it's really very very difficult"

Um... no. Cool concept, but I find it hard to see how someone could find this hard though. I also don't see how this is a sign of "intelligence"

Just imagine the line the points draw, and when you have to split it into one directional patterns you can easily remember..

Ps. Can we get a version where it's just 9 circles?

<comment><USER5> I can't see any mention of this in the post or on the page where it claims this is an indicator for intelligence.

now, since we're on the topic, we probably need to discuss whether or not this could be an indicator for intelligence.

I don't know how much research has gone into seeing whether or not there's a link between intelligence and working memory, but according to wikipedia [1], memory is one of the things that encompasses intelligence, so there might be a link.

1 [http://en.wikipedia.org/wiki/Intelligence](http://en.wikipedia.org/wiki/Intelligence)

<comment><AUTHOR> The very first lines in the video refers to intelligence:

> The scientists […] have devised intelligence tests for chimps. One test is > for what's called working memory.

</comment></comment></comment></comment></comment><comment><AUTHOR> I could use some help over at [https://github.com/awendt/memory- chimp](https://github.com/awendt/memory-chimp)

I'd like to use a fixed-width layout like 2048 has but cannot get it to work. The code is in a feature branch, [https://github.com/awendt/memory- chimp/tree/fixed-width](https://github.com/awendt/memory-chimp/tree/fixed- width). I'm having trouble that the viewport is scrolling horizontally and I don't know why.

I was hoping to get rid of the zooming bug using a fixed-width layout together with the meta tag "viewport". That new layout could also be a chance to suggest users to try it on touch devices.

<comment><USER6> Just forked, I have some other ideas also.

</comment></comment><comment><USER7> Are there any proven methods for improving working memory?

I forget so much of what I hear day to day, and think I could be far more effective in most regards if I could remember (something from the news, what a certain client said about X, or name of the cool company I read about etc.).

I've read several books about memory techniques, and can use the techniques actively to remember a number or a list. That is cool, however I really want to improve my working memory without needing to actively try to remember everything.

<comment><USER8> From what I've roughly read, all behavioral interventions (such as n-back training) on working memory and its correlates or antecedents are basically disappointments, whether the effect size is too boring or the effects are not generalizable.

</comment></comment><comment><USER9> I did this the first time no problem. I didn't memorize the order itself, but instead memorized sequential pairs (1-2, 3-4, etc...). I think memorizing each one individually would have been more difficult.

Working memory is a fascinating concept. I've played with techniques like the Memory palace and found them to be wildly effective. Attaching a meaning to any piece of information seems to make it much easier to remember.

<comment><AUTHOR> Y'all need to help me with the next levels I have planned: The numbers will only appear for a limited time...

From [http://www.livescience.com/7444-chimps-numbers- humans.html](http://www.livescience.com/7444-chimps-numbers-humans.html):

> However, they discovered the three young chimps could remember many numerals > with a glance, with virtually no change in performance even when the numbers > were flashed for just 210 milliseconds

<comment><USER9> I think it would be a lot more difficult if the numbers actually moved. Our brains are very spatially oriented, making remembering positions or lines (as sillysaurus3 pointed out) much easier.

Would help out myself, but I'm on vacation and it's late here.

</comment></comment></comment><comment><USER10> 1910 on the first try. 2614 on the second. Can't get past 2741.

Here is a trick. It is very easy to rememeber up to 6 spots, but over that becomes hard. Split the numbers into groups and remember the patterns for each one and where the transition to the next group happens.

<comment><AUTHOR> OP and author here. Over time, you'll get better. A lot.

8 spots is okay for me now, used to be next to impossible at first.

<comment><USER11> Have you found this to increase your working memory in other contexts as well?

<comment><AUTHOR> Unfortunately, no :-/

<comment><USER12> dammit human brain too flexible

</comment></comment></comment></comment></comment><comment><USER13> Got some high scores initially from drawing the pattern with my mouse and letting the pattern "burn in" to my brain.

<comment><AUTHOR> BTW, points are awarded for the time you take from the first to the last spot.

Thus, using a mouse costs you points. Better play it on a touch device.

<comment><USER14> So memorization time isn't taken into account?

<comment><AUTHOR> No, it's not. Should I start the clock right when the new level is displayed instead?

</comment></comment></comment></comment><comment><USER15> Hangs on iPad+Chrome after a few levels (the background/banana shows up but no numbers), but otherwise a fun game.

<comment><AUTHOR> Yes, I've seen this sporadically. Problem is: The algorithm keeps a list of empty rectangles to draw the next circle in and sometimes the list is empty before all circles are drawn.

I'll try to catch that and probably just attempt a redraw...

Issue: [https://github.com/awendt/memory- chimp/issues/3](https://github.com/awendt/memory-chimp/issues/3)

</comment></comment><comment><USER16> [http://cl.ly/Xa4f/Image%202014-09-17%20at%203.39.34%20pm.png](http://cl.ly/Xa4f/Image%202014-09-17%20at%203.39.34%20pm.png)

I used my phone camera to help on last step. :)

</comment><comment><USER17> Very cool. But one thing: please prevent zooming. Sometimes after tapping a circle I accidently tap it twice, the site zooms in and I instantly miss the next one :)

<comment><AUTHOR> Darn, I've heard that before. But it never happened to me so I forgot all about it.

Can you send a pull request or give me any pointers how to prevent it?

<comment><USER18> Just add <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> to the <head>. Cool game!

<comment><AUTHOR> Thanks. However, I'm having layout troubles with that. See [https://news.ycombinator.com/item?id=8329031](https://news.ycombinator.com/item?id=8329031) for details.

</comment></comment></comment></comment><comment><USER19> It just says "Congratulations, you won!" after 9 numbers; why not more levels?

Also, is the time needed to remember the numbers measured or not?

<comment><AUTHOR> I saw this game in an exhibition about monkeys, and it stopped at 9 numbers. The limit is arbitrary and could be increased. But at some point, the algorithm drawing the numbers may run out of screen estate.

You can take any time you need to remember the numbers, it does not matter. However, I'm planning to add more levels that only show the numbers briefly.

<comment><USER19> > _I 'm planning to add more levels that only show the numbers briefly_

I think it would be better (and simpler) to just decrease the potential score according to the time the player takes to look at the numbers (time of first click minus time the level was first displayed).

Also, I played several games and ended with a different score each time; if time doesn't matter, what does the score come from?

<comment><AUTHOR> The score depends on how fast you can get from 1 to x. A stopwatch is started when you tap 1 and stopped when you tap the last number.

If you improve in each level and remain a constant rate, you get more points in higher levels. Suppose you take 1 second to finish each level, your points in all levels will be: 320, 500, 720, 980, 1280, 1620.

See [https://github.com/awendt/memory- chimp/blob/master/game.js#L...](https://github.com/awendt/memory- chimp/blob/master/game.js#L27)

<comment><USER19> Ok; I wanted to try again and click super-fast, but the game stopped between levels 8 and 9 with the error "Uncaught TypeError: Cannot read property 'width' of undefined" in board.js, line 48

I'm on Chrome 39.0.2150.5 dev-m on Windows Vista on a 1280x800 laptop.

</comment></comment></comment></comment></comment><comment><USER20> Nice game. I finished the game. Had some trouble with the last level. What I memorized was what my hand movements (mouse) needed to do.

<comment><USER21> Thats exactly how I did it except I visualised a line joining them together in order and then "ran" the line.

</comment></comment><comment><USER22> I memorised by memorising the movement my hands need to do. Nice game!

</comment><comment><USER23> Nice game, André! Would you mind if I to port this to Android?

<comment><USER24> I would also like that. I would pay.

</comment></comment><comment><USER25> i'd like to regularly & longitudinally evaluate my own cognitive performance.

can anyone recommend an app which does this?

<comment><USER26> [http://www.cambridgebrainsciences.com/](http://www.cambridgebrainsciences.com/)

</comment></comment><comment><USER27> seems like a clone of the lumosity game, which features a chip in space playing for poker chips using memory recall

</comment><comment><USER28> Good Game.!

Waiting for more levels..</comment>


GroupOn Has a Drinking Problem - <AUTHOR> http://blogs.forbes.com/brendancoffey/2011/03/16/groupon-has-a-drinking-problem/

<comment><USER2> tl;dr version: Its illegal in MA to discount booze 'cuz that cuts into the tax revenues. Groupon changed their coupons to specifically say they don't count toward booze.</comment>


Big Hex Machine - <AUTHOR> https://bighexmachine.github.io <comment><USER2> During my engineering studies days, I studied the book "Computer System Architecture (3rd ed.)" written by M. Morris Mano. This book was phenomenal in my life because it taught me exactly where the hardware meets the software. This book helped me to understand exactly how the hardware fetches, decodes and executes the software on a physical electronic circuit. In fact, I liked this book so much that I implemented the theoretical machine described in the book (called Mano Machine by many) on a Xilinx XC9572 PC84 CPLD Trainer kit.

See [https://github.com/susam/mano-cpu](https://github.com/susam/mano-cpu) for the VHDL source code that implements the Mano Machine. The file report.pdf contains a description of the work which is mostly a gist of the portions of the book relevant to my implementation of the machine and some additional description of my implementation. I did not make any assembler or compiler for it, so I had to push DIP switches on the kit to load instructions on a RAM (implemented on another kit) to program the CPU and test it.

I recommend this book to anybody who wants to understand the basics of how a CPU is implemented in its hardware form.

<comment><USER3> This one looks like it's from the 90s, are there any books out there that cover more recent developments? Out of order pipelines and the like seem pretty complicated to execute on

EDIT: It seems like the third edition is from 2008

</comment></comment><comment><USER4> So giant computers are a thing again? :-) Of the three so far this year I like the giant 6502[1] for "wow", the giant 80/20 thing[2] for presentation, and this one gets honorable mention for an simplified construction.

[1] [http://monster6502.com/](http://monster6502.com/)

[2] [http://www.megaprocessor.com/](http://www.megaprocessor.com/)

</comment><comment><USER5> If this sort of thing interests you, there is a book along a similar vein titled "The Elements of Computing Systems: NAND to Tetris".

It has you build a virtual computer from the logic gates up -- with each chapter moving up a layer of abstraction.

</comment><comment><USER6> Fun fact: the simplified ISA and language for this machine were designed by David May[1], who was the architect of the highly-parallel Transputer[2] in the 1980s.

The Hex machine inherits a few features from the Transputer, including the PFIX and NFIX instructions - a rather unique way of loading arbitrary-length registers using only instructions that have a fixed 4-bit operand.

[1] [https://en.wikipedia.org/wiki/David_May_(computer_scientist)](https://en.wikipedia.org/wiki/David_May_\(computer_scientist\))

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

</comment><comment><USER7> Interesting level of modularity; it's almost exactly the same granularity as FPGAs. The "logic unit" in [https://bighexmachine.github.io/hexModuleSpec/](https://bighexmachine.github.io/hexModuleSpec/) reminds me of a LUT element.

The two-phase clock looks interesting as well.

</comment><comment><USER8> Are all of those ethernet cables? I can't say I know much about wiring, but that seems like a bit overkill.

<comment><USER9> Looks like they are. Actually a good idea IMO assuming they are just using them as robust 8 bit interconnects and not actually Ethernet.

<comment><USER10> They are, and the interconnects are 4 bit. These were used by first year undergraduates for years before the Big Hex Machine was built, so sturdy Ethernet cables were cheaper and more reliable than many other options.

<comment><USER11> Yup, we used 4 wires for data and 4 for power - there's a 12V supply which is spread around and downregulated to 5V on each board. We picked ethernet because it's extremely cheap, hard-wearing, widely available and has enough wires to play with.

</comment></comment></comment></comment><comment><USER12> Little known fact: the Big Hex Machine comes complete with Nyan Cat.

[https://bighexmachine.github.io/nyan.html](https://bighexmachine.github.io/nyan.html)

</comment><comment><USER13> There is a noticeable lack of any logical operations - I suppose this doesn't have an ALU, but an AU. It sounds like a possible exercise for the students to implement a compiler that can handle the other operators in C; it is Turing- complete after all. ;-)

<comment><USER14> It has got load, store, add, sub, branch, in and out. That is the brainf __* instruction set. I didn 't look at the memory architecture, so the implementation might not be straight forward. At low buswidth and size constrained, handcrafted assembler is more efficient, though.

</comment></comment><comment><USER15> Pretty cool</comment>