A Gray Beard Explores F# - <AUTHOR> http://graybeardprogrammer.com/?p=1 <comment><USER2> "The avoidance of side-effects is one of the key objectives of functional programming. Advocates of functional programming claim a number of benefits for the absence of side-effects including a greater ease of reading and reasoning about the code and an increased ability to execute parts of a computation in parallel."

You know I'm sympathetic to this line of thinking, but I wished he would have actually used this VM example to back up these statements.

Why is the version without mutable state better? That's not explained at all. I can think of some reasons why it would be worse -- e.g. more memory allocations. For this VM, its semantics are inherently serial, so the concurrency argument doesn't apply.

<comment><USER3> Well, the second version here is better for the following reasons:

\- 9 less lines of code.

\- Easier to see that it's correct. Partly because it's less lines, but partly because those lines are more meaningful and less bland. It would be hard to see a typo in the repetitive inner loop of the first version.

\- Two obvious independent pieces of code instead of one big piece of code. That means if you're reading it, you know how to go about understanding it; understand each piece in turn. Somewhat trivial when there are 25 lines, but serious if there are 200 lines.

\- Easier to test and debug. At a REPL, it's trivial to see what the stack is going to look like five hops into the functional version; you just apply the processing function five times. To do the same to the imperative version, you need to either write some debug logic into the middle of the function or set a breakpoint and hit 'continue' in your debugger while you count on your fingers.

Those reasons are typical consequences of writing your code as a collection of data and pure functions.

Also, the semantics are _not_ completely inherently serial for most possible stacks. The sequence of operations forms a tree of computation, and the branches of the tree could be computed in parallel. If you actually wanted to do that (say, if the operations took a long time individually) then the way you would go about it is to construct the tree explicitly up front, take this functional version, replace fold with a version of fold that knows how to fold over trees in parallel, and fold it over the tree. Ta-da -- it would just work.

<comment><USER4> Another reason the second may be better:

\- Wrap the stack program in a transaction and simply discard the results to roll back the transaction. In an imperative program it is error prone to roll back a complicated operation—the most innocent looking function might mutate external state.

<comment><USER5> Well technically F# has no purity handling, so it's just as possible for the most innocent-looking F# function to have side-effects as well.

<comment><USER4> Thanks for the warning. That sucks.

</comment></comment></comment></comment></comment><comment><USER6> I don't have much commentary except to say that that was a pleasure to read and I hope we can see more like this in the future.

<comment><USER7> Was there a particular part you found especially pleasurable? What made it more pleasurable for you to read than other writing?

<comment><USER6> Good question. The thing I most loved was the progressive refinement of the technique. I love seeing things transformed from rough to fine and seeing the rationale for each step.

</comment></comment></comment><comment><USER8> It's neat to see how much more expressive F# manages to be compared to C#. One of his examples (passing an operator as an argument to a function) would probably take dozens or hundreds of lines to express in C# because it's just not something that's built into the language.

<comment><USER9> Er, the C# equivalent of applyBinaryOp state (+) is just applyBinaryOp(state, (a, b) => a + b).

<comment><USER8> That's not an operator, that's a lambda. The end result is the same, but semantically it's very different. Passing around an operator means you don't need to know the types involved - you can have a function that operates on any two values and applies an operator to them. That's not something you can do with lambdas in C#.

<comment><USER3> No, there's no difference whatsoever. .NET has no concept of "operators" that are different from functions.

F# is statically typed, just like C#, and the only reason you can pass + in this case is because the type of the stack is Stack<int>, so the compiler can statically infer that "+" means "the + operator on ints." At every usage, + has to refer to a specific function, or it wouldn't compile. For example, if it was a Stack<object> that happened to contain ints, it wouldn't compile.

(You could use .NET's "dynamic" type to make it dynamically resolve which function at runtime, but you could use it equally well in the C# example with a lambda.)

<comment><USER10> > .NET has no concept of "operators" that are different from functions

That doesn't sound right. I'm pretty sure that arithmetic "+" is not a function. Citation needed.

<comment><USER5> There might be some optimizations on top of that, but overloadable operators in C# do get compiled to a function call (a static method call, if you want to be pedantic): [http://stackoverflow.com/questions/6587107/c-sharp- operator-...](http://stackoverflow.com/questions/6587107/c-sharp-operator- overload-for)

See VMAtm's comment's bytecode, showing that "[Decimal] + [Decimal]" compiles to:

        IL_0011: call    valuetype [mscorlib]System.Decimal [mscorlib]System.Decimal::op_Addition(valuetype [mscorlib]System.Decimal,
                                                                                valuetype [mscorlib]System.Decimal)

Non-overloadable operators (short-circuiting operators (|| and &&), ternaries and its ilk, field access and (of course) the assignment operator) are probably compiled straight to bytecode, but they're pretty special and (especially in a strict language) need special runtime support anyway[0].

To sum up: mquander is completely right, the CLR does not know anything about operators, language compilers will take whatever operator they have at a high level and compile them to method calls (usually). For more details, see <http://www.amazon.com/dp/0735627045/>

[0] other runtimes make different choices, Python encodes most of its operators into bytecode for instance: <http://docs.python.org/library/dis.html#opcode-BINARY_POWER>

<comment><USER10> Interesting. However, operators and functions present very differently when writing c# code.

It's easy to put a lambda or a named function in a variable, pass it to a function, etc. However, if you want to do that to an operator such as "+", the first thing to do is to wrap it in a lambda - e.g.

      // invalid
      // Func<int, int, int> plus = + ;

      // works in a wrapper fn
      Func<int, int, int> plusFn = (a, b) => a + b;

Related, if you have a function which is generic for some type T, you can call functions of type Func<T> on the values in it, but you can't use operators like + - c# just isn't generic on operators, though it can be on functions.

      public T ApplySomeFunc<T>(Func<T, T> func, T value)
      {
        // this works
        return func(value);

        // this does not
        //return value + value;
      }

I know that the language has no way to specify that the type T has a "+" operator so that's not going to work; but this catches people out regularly, when they try and fail to make math functions that are generic over all numeric types. However, you can do something similar with the "dynamic" type, at the cost or run-time-dispatch.

<comment><USER5> > Interesting. However, operators and functions present very differently when > writing c# code.

Aye, but that's more of a limitation of C#'s syntax

> However, if you want to do that to an operator such as "+", the first thing > to do is to wrap it in a lambda - e.g.

That's pretty much what a section (the parens around the operators) does in F# or Haskell.

> I know that the language has no way to specify that the type T has a "+" > operator so that's not going to work

Well it's not so much that "operators and functions present very differently when writing C# code" but that "methods and functions present very differently when writing C# code" and that operators are (static) methods more than functions in C#.

Also that C# has no numeric tower[0] so there's indeed no way to say a type is a generic number (whether that number's an int, a double or a decimal). If there was a root `Number` type you could write something along the lines of:

        public T AddNumbers<T> where T:Number(T value)
        {
            // works because all numbers have a `+`
            return value + value;
        }

which is exactly what you write in Haskell:

        addNumbers :: (Num a) => a -> a -> a
        addNumbers a b = a + b

[0] Haskell has a pretty complete/complex one, starting from Num[1] which implements only a few basic operations: (+), (-), (*), negation and conversion from integer.

[1] [http://hackage.haskell.org/packages/archive/base/latest/doc/...](http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#t:Num)</comment></comment></comment></comment></comment></comment></comment></comment>


On Wall Street, So Much Cash, So Little Time - <AUTHOR> http://www.nytimes.com/2010/06/24/business/24private.html?hp <comment><USER2> now you know where all the liquidity the Fed pumped into the economy went. aren't you glad you're paying for more fun and games?

<comment><USER3> how so?

<comment><USER2> there's no way there'd be such bidding up of prices for things if the Fed wasn't keeping everybody from facing up to the very real losses on the books of so many institutions.

Yes, many of the buyers raised money raised money a few years ago, but those buyers compete with the banks flooded with cash that they aren't lending out.

We haven't made those with losses face them. We've just stuffed their pockets full of money and sent them back out to do more foolish things.</comment></comment></comment>


100 Websites That Shaped the Internet as We Know It - <AUTHOR> https://gizmodo.com/100-websites-that-shaped-the-internet-as-we-know-it-1829634771 <comment><USER2> It's interesting to see that StackOverflow still has almost similar layout. Not saying that the layout doesn't work, but it's pretty good to see websites not following trends and changing up the whole UI/UX. Kind of hate to see websites walking into 'modern' trap.

</comment><comment><USER3> Missing the Million Dollar Homepage, and Zombo.com.

<comment><USER4> You can do anything at zombo.com. The only limit is yourself.</comment></comment>


Apple iOS Background Tasks - <AUTHOR> https://developer.apple.com/documentation/backgroundtasks <comment><USER2> Background tasks are partly to blame for a device's performance degradation over time - see Windows and Android devices. I have more apps than anyone on my iPhone and the performance is still great. I can just imagine if all the stupid games I download were trying to run background tasks as well. I hope Apple lets us control what apps have permission to do this. Also I hope 'low power mode' auto-disables background tasks. Developers are going to take advantage of this in a way that often will not benefit the user.

<comment><USER3> Frankly, looking at all my apps, the only use-case I have for background tasks is Google Photos, who I want to automatically upload my recent photos to the cloud. A very distant second would be communication apps running some kind of reconciliation once or twice a day, in case some notifications were missed.

I have no desires for any of my other apps to execute any tasks in the background.

<comment><USER4> IMO, any app that needs to download file sin background needs this. Audible and Pocket Casts for me personally because there are times when I want to download files for offline use and I have to keep the app open till the download is not complete.

<comment><USER5> On Apple's platforms you can get this with a background NSURLSession. It lets you express concepts like "Download this URL at a convenient time, preferably when the device is plugged in and connected to Wifi" or "Start downloading this now, but keep going even after this app is closed."

It's definitely more work to figure out than regular foreground URL fetching, though.

[https://developer.apple.com/documentation/foundation/url_loa...](https://developer.apple.com/documentation/foundation/url_loading_system/downloading_files_in_the_background?language=objc)

</comment></comment></comment></comment><comment><USER6> If Spotify doesn't finally use this to download songs without requiring me to open the app then I'm going to riot

<comment><USER7> I stopped using Spotify exactly because quality of their apps is just not acceptable.

<comment><USER8> On iOS? This feature is new in iOS 13, so there was no way Spotify could have offered this capability before, right? Of course, there is no such limitation for Apple's apps.

<comment><USER7> I'm not complaining about this feature, I'm talking about overall feeling of their priorities. It took them ages to have an Apple Watch up with folks like VOX had it no time. Their priorities are unclear, highly voted feature take ages to appear in the apps, the apps itself look like compromise and attempt to save on developers and reuse as much of web version as possible. It just doesn't feel like a carefully designed experience. I'm not saying Apple Music is perfect or anybody else, I just choose the less annoying thing for myself.

<comment><USER9> They made a site to explain this: [https://timetoplayfair.com/timeline/](https://timetoplayfair.com/timeline/).

</comment></comment></comment></comment></comment><comment><AUTHOR> "A request to launch your app in the background to execute a processing task that can take minutes to complete."

Compared to the previous limit of 15 seconds, it's a pretty substantial change.

It seems you need to request it appropriate permissions though, so it's probably going to work similarly to how Background Fetch worked. If your app is used very seldom, your script might be running less frequent then you request.

<comment><USER10> So the limit is increased to 1 minute? Is it possible to run a continuous task in the background (like foreground task in Android)?

<comment><USER11> It is possible, but not by default. Your app must request additional permissions for indefinite background execution. It's quite difficult to get your app approved with said permission.

<comment><USER12> What permission is that?

<comment><USER13> Looks like it's related to the stated use case of the app [https://stackoverflow.com/a/11044108](https://stackoverflow.com/a/11044108)

</comment></comment></comment></comment></comment><comment><USER14> As a user I'm going to turn this off as soon as possible. The background app refresh feature is widely misused by app developers for tracking purposes, and it destroys battery life. I see no drawback when apps can't do things in the background. Maybe you'll now have to wait a few extra seconds for your mail app to download your latest mail or for your weather app to fetch the latest weather. It's really no big deal.

Of course this is my particular personal preference. YMMV.

<comment><USER15> Some apps depend on location information and that can change when the app isn't running (think alert system or apps that track stuff). But even for these, I don't see why they can't wake up and go back to sleep after 5 seconds, and leave all the heavy lifting to a server in the cloud that can send a notification if anything more serious is necessary.

<comment><USER16> Those apps can use geofencing API for these purposes.

<comment><USER15> Not if the phone needs to update while it's location hasn't changed.

</comment></comment></comment></comment><comment><USER17> As a developer I can't believe this wasn't a thing already. As a user, I'm scared of it being abused / misused. And I trust myself more as a user than the average guy as a developer!

</comment><comment><USER18> Hopefully this allows real alarm clock type apps that you don't have to have in the foreground. But reading the description I'm not sure that's the purpose.

</comment><comment><USER19> I haven't been an IOS developer in year but there used to be (in the IOS7 days) a way to run some limited tasks in the background, especially to handle push notifications IIRC. Sounds like this is an improvement - but isn't this years and years overdue? I assume this is trivial on Android.

<comment><USER20> And I'm also sure it's abused to heck on Android.

<comment><USER21> Oreo added limits on background execution and they're going to further tighten the screws later. it doesn't even matter actually as the way OEMs implement killing apps to save battery if all unique(for eg huge rams aren't even used on xiaomi devices as the task scheduler will kill any apps above the limit of 6)

</comment></comment></comment><comment><USER22> Oh, will this finally fix youtube uploading on mobile?

<comment><USER23> Apps are able to upload and download in background with iOS 12 by telling iOS to upload or download it for you and wake up the app once the upload is done(failed or succeeded). It even retries on connection fails, etc. It's called Background Transfer Services

</comment></comment><comment><USER24> Couldn't you do this with silent push notifications that you could use to make the app download new content?

<comment><USER25> That kind of work is more on the order of seconds - not minutes. And it obviously requires a service-side component (push notifications) while this doesn't.

</comment></comment><comment><USER26> Does anyone know if we can use GPU (metal) with this new API. It wasn't possible before.

<comment><USER27> Not sure, but they give examples of training machine learning models in the background when connected to power, so it's quite likely.

</comment></comment><comment><USER28> I wonder if this is the mechanism used by the new Shortcuts time triggers.

</comment><comment><USER29> This could be handy for things like cronios([https://routinehub.co/shortcut/1267](https://routinehub.co/shortcut/1267)) which really spiffs up Shortcuts.

<comment><USER30> No need, that's now baked into the Shortucts app itself.

<comment><USER7> I'm really keen on getting my hands on it. I have a shortcut that downloads videos from youtube and puts them into a folder. If I to be able to have a shortcut that does in in background while my phone is charging, that would be amazing.

</comment></comment></comment><comment><USER31> Can anyone from Apple chime in about the vetting process which results in Apple releasing features 5-8 years behind similar offerings, when it isn't the first?

<comment><USER32> Not from Apple, just a happy customer.

I'm actually thankful that Apple forces developers to respect my battery life. Battery life on Android has been a shit-show for years because any app can burn your battery down by constantly downloading who knows what in the background (probably ads).

<comment><USER3> That was the single biggest difference I observed when I switched from Android to Apple 4 years ago. I no longer had periodic episodes where my phone would burn through 80% of my battery in 30 minutes, while getting lava hot. Not sure if Android has figured background tasks in the last 4 years, but the inconvenience of not having background tasks was greatly outweighed by having predictable battery life and performance.</comment></comment></comment>


Stretching Spokes - <AUTHOR> https://githubengineering.com/stretching-spokes/ <comment><USER2> Very cool, also very cool it speaks git. Kinda like they made a specialized distributed closed source database.</comment>


Aphantasia - <AUTHOR> https://en.wikipedia.org/wiki/Aphantasia <comment><USER2> This, as a passing interest in HN and other sources started recently, I think, by a former big shot at Pixar who wrote (or was written about) having a blind mind's eye. Personally this article turned my world slightly upside down since I can't visualise. Instead I conceptualise ideas in total "darkness", without any visual imagery of any kind. I never thought twice about it and assumed everyone use the term "visualise" to describe what I'm experiencing. Because of the story posted, I learned after 43 years of existence in this body, that many people use the term visualise because they "visualise" imagery. I kinda felt cheated out of a really cool trait I suddenly never possessed (although it does now explain a lot of things I think might be related).

<comment><USER3> > (although it does now explain a lot of things I think might be related).

If you'd like to share, I'm curious.

<comment><USER2> This is just a collection of things I've read that might or might not be related, mixed with my intuition of what might or might not be related:

* Absolute rubbish sense of direction. I get lost on a straight road with a GPS. I can't look at a map and visualise a route - i need to properly understand it or know it from repetition (a lot of).

* maybe a plus, maybe not even related - i can visualise sounds and music. I can play back a song or compose a tune in my head. I can "speak" in any accent in my head perfectly - it doesn't translate if I try it out loud but that is just bad speech skills. I also do some music production so this helps though I admit replicating the sound I hear is often very hard.

* No attachment to past events. I can't "visualise" past arguments or bad events, so I'm left with a concept of them which very quickly fades away as it's just "words". Bygones are really bygones. This one I read somewhere as related. Not sure it is, but I do relate.

* I can't draw to save my life, but I can at least copy something if it's simple and right in front of me. Always at awe at people who can draw out of their head (and I'm a son of an artist).

* I remember events from a very early age (earliest memory is from 3 years old approx). But again, I remember specific actions i've done, and can recall the scene, but not visually. Just the idea/concept of it.

* Just generally feeling like I missed out on something that is really cool. And more than that, missed out on the fact I'm missing out for 43 years.

* I rarely remember dreams, but when I do it's a treat because in my dreams I do "see" the dream. I'm always excited when I wake up remembering a dream. It doesn't last though, I forget it soon enough, but that initial moment I know I "saw" something is really nice.

* All those exercises of seeing a photo and then having to recall it - I find those really hard. I can only recall what I memorised verbally (One shoe, two combs on a table etc) - but can't recall the image itself visually.

<comment><USER4> This is fascinating. What about visualizing geometrical objects and doing design ? I would assume that architecture or mechanical design would be something you would have a hard time.

<comment><USER2> Nothing. Not even simple shapes. Only in concept form. Ideas, not images

</comment></comment></comment></comment></comment><comment><USER5> Imagine a man is walking down the street of a town. He finds the shop he was meaning to buy something in and enters it.

Now, were you imagining this scene from a particular viewpoint? Did the man turn to the left or to the right? Was he wearing any particular clothes? Were they any particular color? Was the front of the store of any particular material? And could you still see the man in the store even though he might be, from your mind's eye's point of view, be behind a wall?

<comment><USER6> I like this as an attempt to operationalize mental imagery, which is very difficult to pin down.

> Now, were you imagining this scene from a particular viewpoint?

Yes, from above.

> Did the man turn to the left or to the right?

Yes, to the left.

> Was he wearing any particular clothes? Were they any particular color? Was > the front of the store of any particular material?

No, no, and no.

> And could you still see the man in the store even though he might be, from > your mind's eye's point of view, be behind a wall?

My mental imagery ended as he entered the store. But if it had continued, I think it would have switched to a vantage point inside the store.

</comment></comment><comment><USER7> Either it's Baader-Meinhof effect at work or this came from [1][2].

I can't imagine what it's like to not be able to picture things but now I wonder if I'm really picturing things at all or if I'm just imagining them.

[1] [https://www.reddit.com/r/tifu/comments/c4i94n/tifu_by_explai...](https://www.reddit.com/r/tifu/comments/c4i94n/tifu_by_explaining_my_synesthesia_to_my_boyfriend/)

[2] [https://www.reddit.com/r/tifu/comments/c4lzwm/tifu_by_readin...](https://www.reddit.com/r/tifu/comments/c4lzwm/tifu_by_reading_a_reddit_post_and_learning_that_i/)

<comment><USER8> Somewhat related to my comment - I'm sure that, as with most things in the human experience, there's a wide spectrum.

What's the difference between imagining something and seeing a picture? That's kind of rhetorical, and kind of not. The article that this page links to from 2005 says:

"Asked to imagine a familiar item or recall a recent event, most people can call to mind an image that is less vivid than the original but has a visual 'feel'. This expresses our capacity to experience visual mental imagery."

Which is still super vague as to what people do when they "call to mind" something, or what a visual feel is...

<comment><USER9> > Which is still super vague as to what people do when they "call to mind" > something, or what a visual feel is...

I think it's pretty easy to explain relatively unambiguously though.

When you're looking at an object, let's say an orange, you are experiencing a unique, particular sensation which usually only happens when you're looking at an orange. Being able to visualize things is to be able to create the same sensation wilfully even when you're not looking at an orange (albeit of perhaps a lesser intensity).

<comment><USER10> Most people who suffer from this could be shown a 3d modeling or CAD tool. I would explain it as having access to this when you close your eyes, except its hazy and comes in and out of focus.

It can also be used to conjure a short movie like sequence or animation as well. I most frequently use it to plan routes in my mind whether its in the car or how I'm going to move through a particular space it helps orient you and improves reaction speed and can be tied to muscle memory. It takes some focus and is rarely used simultaneously with other activities. It's more like a planning or focusing activity for brief bursts before you take action.

Its actually quite like those slow motion 360 sequences in the matrix. I think that's probably why that film technique gained such traction, as its a slowed down version of what our brains do when we use our visual memory to navigate our movement.

</comment></comment></comment></comment><comment><USER11> Something I don't see people mention much is a sense of dynamic resolution to mental imagery. I took the quiz posted here and it felt completely meaningless to me. If you want me to visualize a scene, there aren't really details until I give it details. If I'm told to imagine a wooden door with no other instructions it's like I'm seeing the door in a passing glance or out of the corner of my eye. If you ask me if it's "clear and vivid", I can make it that way to any arbitrary degree needed. Looking closer and seeing that the wood is old and somewhat warped, feel the cracks in the wood, look closer and see the brass on the handle has discolored slightly from use, etc etc. But it feels pointless to do. Certainly it's at least as detailed as a real life image, if I think about it, but it's definitely not like, crowding out my actual vision with it's sheer lucidity, which some of the answers seem to suggest.

<comment><USER12> I'm the same way, details in my visualization only appear where my attention is directed.

<comment><USER13> It seems to me that is how my eyesight works, too, so it's unsurprising that's how my mind's "eyesight" works as well!

</comment></comment></comment><comment><USER8> Maybe someone has better resources, but I found it interesting that the paper linked within about the particular patient MX, says, ...mental imagery is ubiquitous..., but I can't find an example of what people consider mental imagery.

Is what I consider mental imagery the same as someone else? I dunno.

FWIW, for me, mental imagery seems to take the form of a very brief flash when I'm thinking of a simple object, like a rock, for example. But I assume it extends into less concrete things like when I'm daydreaming, where there is no distinct clear image, it's more of an inner monologue of themes/intent with a few flashes of imagery here and there.

</comment><comment><USER14> I have this (unable to have any kind of mental imagery at all, and discovered that it was not normal via the Facebook article by Blake Ross years ago) and unscientifically correlate this condition as part of my lack of ability to remember certain things and recall events with storytelling ability.

I also sometimes have problems remembering names and eventually forget faces as well if I'm out of contact with someone for a long time.

Anyone else with aphantasia relate to this, or are my issues unrelated?

My wife, who describes herself as having very vivid mental imagery and says she has involuntary photographic memory at times (as in she does not know what triggers a memory to be completely photographic), has superb memory, and I personally believe it's what enables her to quickly learn so many languages.

So as a result (I know, based on sample size one), I'm led to personally believe that my memory-related issues may have some correspondence to aphantasia.

<comment><USER15> > discovered that it was not normal

Ah this was so surprising to me as well. It was mind blowing suddenly realizing how powerful other people's visual imagination is.

Allow me to contribute to the sample size:

I probably have aphantasia. It requires a lot of effort to imagine simple, basic visual details when thinking of something. I am terrible at describing faces of people I see every day, let alone strangers.

But when I do see someone I know, I usually recognize them instantly, even if their face changed a bit (facial hair change, long time no see etc).

I also am great with names. Once I get to know someone, I'll probably remember their name for a very long time (decades). I can remember the full name of most of my friends from 15 years ago. But other than that, my memory is really bad.

I do have one odd thing that I've always wondered. Most women's faces look like the same to me. In movies, I have a hard time knowing which women they are talking about (and it takes some time to associate a name to a face). Yet, I have no such problem with men.

Possibly related, I am attracted to men, which could explain why I can easily differentiate each men, but most women look the same for me.

Anyone with similar experiences?

<comment><USER16> I have aphantasia, I'm terrible with names but like you am excellent with faces.

I think the three are totally unrelated.

</comment></comment></comment><comment><USER17> The linked Vividness of Visual Imagery Questionnaire (VVIQ) wikipage only provides a hard-to-read Youtube video or software download as sources. Here's a link to the 16-question quiz from aphantasia.com (JS required): [https://aphantasia.com/quiz/](https://aphantasia.com/quiz/)

I'll add a YMMV, as aphantasia.com adds the following caveats: "...it can be hard to classify the vividness of a mental image on a scale from 1-5 when you have nothing to use as a reference point. It is difficult to rank your vividness of mental imagery when you can't know how strongly other people visualize. The test asks you to compare the vision in your head with how you know it looks in real life in order to reconcile this somewhat: is the scenario you are being asked to visualize equally vivid to its real world counterpart, a little less vivid, or not vivid at all/non-existent?

Further, any test that relies on self-reporting will always be subject to some bias due to the fact that you are more likely to subconsciously (or consciously) choose answers that will give you the result that you want. "

</comment><comment><USER18> OP, out of interest, did you come across this due to a TIL on Reddit earlier?

</comment><comment><USER19> Great video about it [https://youtu.be/ewsGmhAjjjI](https://youtu.be/ewsGmhAjjjI)

</comment><comment><USER20> I don't doubt the experience, but the fact strikes me as impossible.

Everything you "see" around you, that your eyes are not pointed directly at, right at this moment, is 100% visualized, in full perspective and living color.

So, unless you have extreme tunnel vision (which does exist, but they can't drive, or read at any speed), you have excellent visualization capacity.

I am forced to conclude that you have, instead, very strong suppression of non-sensory-driven visualization.

</comment><comment><USER21> Reading the text by Blake Ross [0], I wonder: how on earth does he buy furniture, if he cannot visualize how the couch will look in his living room?

[0] [https://www.facebook.com/notes/blake-ross/aphantasia-how- it-...](https://www.facebook.com/notes/blake-ross/aphantasia-how-it-feels-to- be-blind-in-your-mind/10156834777480504/)

<comment><USER22> I also "have" (feels weird) aphantasia. Well, it's kinda hard, but I actually do look at a fair bit of antique furniture, and do a little wood working and repair, and I focus on materials, measurements and condition. Then when in place I can move things around and get a feel for a layout. A couch I would go by measurement largely, I know what's too big for my living room. For colors I try to use a color wheel or look for other peoples pictures online like "oak pub table with blue walls" etc.

</comment></comment><comment><USER23> A related subject to this is auditory "visualization" and I wonder if that could be a way to study it some more:

1\. Get a group of test subjects who can all read music as a baseline

2\. Get them to self-assess on how well they can "hear" imagined notes.

3\. Give them a pitch test to see how well their "internally heard" note matches a pitch?

The hypothesis being that those with perfect pitch have a really great internal "ear".

</comment><comment><USER23> A little slow, but this video is fantastic for describing the feeling of aphantasia and it's sort of doubly fascinating that the incredibly talented artist who made it suffers from it (as I'm the flip side, great at visualizing and horrid at creation)

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

</comment><comment><USER24> 3y ago:

\- [https://www.facebook.com/notes/blake-ross/aphantasia-how- it-...](https://www.facebook.com/notes/blake-ross/aphantasia-how-it-feels-to- be-blind-in-your-mind/10156834777480504)

\- HN: [https://news.ycombinator.com/item?id=11554894](https://news.ycombinator.com/item?id=11554894)

</comment><comment><USER25> All of the articles I have seen seem to focus on being able to recall imagery. Is there a similar difference in ability of recalling other senses? I can visualize in my head to some degree and I can recall sounds to some degree, but I don't think I can "smell in my head" for example.

</comment><comment><USER26> I wrote an article on this a while back [https://medium.com/@danielwhyte/wireframes-are-a-non- inclusi...](https://medium.com/@danielwhyte/wireframes-are-a-non-inclusive- tool-why-i-avoid-using-them-19a4a5835705)

</comment><comment><USER27> I first learned other people could imagine/visualize when I had trouble following meditation instructions online a few years back.

As neat as it sounds to visualize and see things in my head, it doesn't seem necessary for anything.

</comment><comment><USER28> Many interesting comments on a recent previous article:

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

</comment><comment><USER29> I imagine it's hard to objectively measure this. You also have to trust the interviewee.

</comment><comment><USER7> I wonder whether this condition relates at all to the theory of mind and/or empathy.

</comment><comment><USER30> There is a finite number of souls.</comment>


Apple cutting prices on USB-C, Thunderbolt 3 accessories until end of the year - <AUTHOR> http://www.imore.com/apple-usb-c-thunderbolt-3-price-cut <comment><USER2> So Apple has set aside #courage and #magic for a moment to consider connectivity and compatibility?

Well, it's something, though it could certainly have happened a bit earlier in the design process.</comment>


Emergent Chip Vastly Accelerates Deep Neural Networks - <AUTHOR> http://www.nextplatform.com/2015/12/08/emergent-chip-vastly-accelerates-deep-neural-networks/ <comment><AUTHOR> Here's the paper - [http://arxiv.org/pdf/1510.00149.pdf](http://arxiv.org/pdf/1510.00149.pdf)

The compressed network achieves a decent speedup and energy saving on current hardware too (desktop/mobile) without significant loss of accuracy

<comment><USER2> Is this the correct paper? It seems to cover the (impressive!) speedups from compression and encoding, but nothing about the EIE chip mentioned.

<comment><AUTHOR> Yep it only covers the compression/pruning. Here is a talk by the author, covering the chip too -[http://web.stanford.edu/class/ee380/Abstracts/160106.html](http://web.stanford.edu/class/ee380/Abstracts/160106.html)

</comment></comment></comment><comment><USER3> Summary: The chip's impressive speed gains are because it uses on-chip SRAM instead of off-chip DRAM.

The chip is able to fit much more into SRAM because the chip uses network compression, pruning, quantization, Huffman encoding, etc.

<comment><USER4> Also, the on-board RAM is SRAM rather than DRAM.

<comment><USER5> Where does it say that? On-board SRAM would be very strange, as it's incredibly expensive and not at all performant compared to DRAM.

<comment><USER2> From the paper's abstract: _This allows fitting the model into on-chip SRAM cache rather than off-chip DRAM memory_

<comment><USER5> Exactly, that says "on-chip SRAM" not "on-board SRAM". Very different things, and my point stands.

<comment><USER2> Pretty sure from the context the OP was saying on board the chip.

</comment></comment></comment></comment></comment></comment><comment><USER6> Is the embedded case really that interesting? Almost by definition, the embedded device will be receiving a tiny fraction of the data in the world that it may be concerned about. It seems unlikely to me that an embedded, power-constrained device is going to "deep learn" anything all that useful that wouldn't be better learned in something with more data and power available. But I do mean this as a question, if anybody's got a really cool use case in hand. (Please something more specific than text that boils down to "something something sensor network internet of things local conditions something".)

<comment><USER7> This isn't for training, is it? It's for using the results of training immediately (inferring something), without the need for a network round trip (as far as I understand it).

So, you might still send the request to the network to continue training the model, but by the time you do, your answer has already computed on the local machine for local consumption.

<comment><USER6> Thank you, everybody, that has helped me understand. Obvious in hindsight but isn't that the way of these things.

</comment></comment></comment><comment><USER8> Those interested in optimal neural network compression might consider the paper "Bitwise Neural Networks" by Kim and Smaragdis [http://paris.cs.illinois.edu/pubs/minje- icmlw2015.pdf](http://paris.cs.illinois.edu/pubs/minje-icmlw2015.pdf) which enables much better compression than simple quantization and pruning.

<comment><USER9> How do you mean "much better compression"? Won't replacing 32bit multiplies by bitwise operations save 32x the memory[1]? Han et al. show not only 35-49x improvement, but on much more difficult benchmarks (MNIST vs Alexnet/VGG).

Combining these two techniques would be really cool and if the bitwise network can work with larger, more complex networks like VGG would be a massive game- changer, allowing these nets to fit on almost any device.

[1] [http://minjekim.com/demo_bnn.html](http://minjekim.com/demo_bnn.html)

</comment></comment><comment><USER10> In the past, specialized architectures tended to lose out to the performance gains of generic x86 chips. I'm thinking RISC vs. CISC, or Sun's attempt at a custom Java-optimized processor.

Is that no longer the case? ARM architectures seem to be beating x86 for low power, mobile devices. GPUs are being used for many easily parallelizable workloads.

Is an overall slow down in Moore's law making chips designed for specific tasks (like Deep Neural Nets), attractive again?

<comment><USER11> I'm not sure CISC beat RISC, except for complicating the instruction set enough to keep costs high for competitors.

Underneath, Intel processors translate x86 to simpler RISC like microcode. They could make a more efficient chip without this translation component, and probably holds them back a bit in low power stuff.

<comment><USER12> It's more like x86 beat everything, which is also saying that externally CISC/RISC didn't matter so much. I like the section on RISC here: [http://danluu.com/butler-lampson-1999/](http://danluu.com/butler- lampson-1999/) Specifically part of the last paragraph: "It's possible to nitpick RISC being a no by saying that modern processors translate x86 ops into RISC micro-ops internally, but if you listened to talk at the time, people thought that having a external RISC ISA would be so much lower overhead that RISC would win, which has clearly not happened. Moreover, modern chips also do micro-op fusion in order to fuse operations into decidedly un-RISC-y operations."

</comment></comment></comment><comment><USER13> Mark my words, in the next couple of years we'll see custom silicon that massively improves performance per watt for DNNs by using fixed point, quantization, and saturation arithmetic. The gain in performance per watt will be at least an order of magnitude. This will make DNNs worthwhile in a lot more classification problems where currently they are simply too slow.

<comment><USER8> Mark my words, DNNs are not really the most efficient structure for predicting model due to the "distributed" representation that makes them good predictors, but also makes them hard to train and resource-consuming to apply. In few years DNNs will be replaced by more efficient models.

<comment><USER13> You do realize you came up with this text using a deep biological neural network, right?

<comment><USER8> Sure, but they aren't necessary the most efficient model possible

<comment><USER13> Seems pretty efficient to me, at least per watt.

</comment></comment></comment></comment></comment><comment><USER14> This will be a game changer a few years down the line! Can't wait to see the commercial SW stack complimenting this.

</comment><comment><USER15> These guys need to work on their dataviz. Could have made some of the tables into graphs, really.</comment>


Web, Mobile and IoT distributed database requirements - <AUTHOR> http://blog.couchbase.com/web-mobile-and-iot-distributed-database-requirements

<comment><AUTHOR> I think it's safe to say both mobile and IoT network access is anything but reliable. Not sure if is another solution besides an embedded database with automatic sync.</comment>


SB-1 Defiant could be Army's next Black Hawk replacement and test pilots love it - <AUTHOR> https://taskandpurpose.com/military-tech/army-black-hawk-replacement-sb1-defiant-test-pilots <comment><USER2> I'll predict Bell wins this and the FARA contract. Conservative solutions will win, but strange to be calling a tilt rotor conservative.</comment>


What counts as a step? - <AUTHOR>

Hello all! Learning Big O Notation now, and was wondering –– what counts as a step?
For example, in pseudocode:
function a(x):
  return x + x
How many steps are there? 2? Or 1? Basically, what counts as a 'step' in a programming language –– is it just any statement or are there certain exceptions.
Or maybe I'm just complicating the issue?
Thanks! <comment><USER2> It really depends, to be honest. Donald Knuth uses a fictional assembly language in his Art of Computer Programming because he believes that any abstraction provides a place for bad analysis to hide under the covers. For instance, in your example, you use an addition operator whose implementation is undefined. It might be implemented as a string of increments and run in linear time. It might use a scheme of bit shifts and run in some logarithmic time. It might be implemented to run as a look-up table in constant time. The point is that you don't know what the processor's actually going to do, and this is what Knuth was getting at.

However, in nearly every analysis I've done, mathematical operations are assumed to run in constant time because it can cloud the overall picture of an algorithm's complexity with an implementation detail. Unless you're specifically working on the implementation of those operations, you're probably safe to assume that as well.

<comment><AUTHOR> I always thought that mathematical operations run in constant time ... how can they not?

<comment><USER2> Look at the algorithm you use for adding two integers by hand, for example. You add the ones digits together and possibly have to carry one over. You then add the tens digits and possibly carry over. You repeat as long as the numbers "share" digit places.

This isn't constant time because the number of individual digit additions and carries changes based upon the length of the inputs. In fact, this particular algorithm is linear in the number of digits.

You could also implement linear addition as a series of increments, as I said above. Translate "a + b" into code looking something like

      for(int i = 0; i < b; i++){
        a += 1;
      }

This obviously runs in linear time, and is how we teach addition at first. It's not an unreasonable thing to assume at first, especially since your professors will almost certainly tell you to assume that, but there can be hidden complexity under the covers. You just don't need to care about it in most cases.

</comment></comment></comment><comment><USER3> In your example, that is O(1). A computer can add two numbers in constant time. How could that be two steps? It is obviously only one operation.

In general, you can count steps as whatever you like. For instance, you could say it takes O(n) CPU operations or O(n^2) file seeks. But then people use the word "time" as a proxy for those. You'll hear "constant time" or "order-n time".

<comment><AUTHOR> So basically every computation counts as a step?

But how about control structures? Like in Python:

"for i in range(4)", how many steps are there?</comment></comment>


Crazy or Brilliant? Commuting from Las Vegas to San Francisco to Save Rent - <AUTHOR> http://www.citylab.com/commute/2015/10/crazy-or-brilliant-commuting-from-las-vegas-to-san-francisco-to-save-rent/410620/ <comment><USER2> By their standards, I qualify as a super commuter. I drive 35 minutes to the train and spend 55 minutes on the train (with a three minute walk after that) to get from my house in a secluded mountain town to the OC (Orange County, CA). I think it is around 70 miles one way. Where I live is beautiful, quiet, and similar to where someone from the city might vacation. I'm paid well; even so, I have no notion of how people afford to live down in the OC itself. My mortgage is half to a third of some of my coworkers rent.</comment>


Secrets of Looking Good on the Dance Floor - <AUTHOR> http://www.spiegel.de/international/zeitgeist/0,1518,673238,00.html <comment><USER3> I've spent thousands on dance instruction from hip-hop to salsa to ballroom.

In my opinion, if you have confidence on the dance floor -that will make you look pretty good because confidence is attractive. It takes courage to dance in public, especially freestyle.

When you have possess skill in tandem with confidence to put yourself out there, that is what makes awesome dancers. For hip-hop, that means hitting the _off_ beats. Skill + Confidence.

Many of the best dancers I know have that combination. Dancing. It's not about looks. It's not solely moves. It's about being with the moment. It's about owning the floor.

        When you take dancing lessons, you learn steps and
        you learn steps and you learn steps. It can go on
        for a long time. And then one day, you just learn
        to dance, and it is so different.

        - Bill Austin

<comment><USER4> Right, but how do you measure "confidence" or "owning the floor"?

<comment><USER3> Subjective peer ratings. Plus if you were to go to any given club, you can usually tell who has it, on the dance floor.

Not everything can be measured. There is a reason why there are no accurate algorithms to detect the beat (most rely on tapping a keyboard or pad) - it's complex and simple at the same time.

<comment><USER5> I think that the article implies that subjective confidence levels may be tied to objective testosterone levels, which seems completely reasonable to me.

</comment></comment></comment></comment><comment><USER6> I've danced recreationally for about 18 years, also occasionally teaching, performing, or competing, but I found nothing familiar in this article. I imagine it might also be discouraging for many people to be informed by someone portrayed as a scientific authority that dancing ability is determined at birth.

To keep it topical for HN, there is one thing I would say qualifies as a dance hack, although it sounds like a cliche, which is good posture. It should maintained not just while dancing but from the moment one enters the room. Although it's emphasized mainly in ballroom dance, it applies to any form. It works because we read it subliminally as a high status behavior, and faking it won't occur to the people who could most benefit by it.

<comment><USER3> Eighteen years. Wow. You are basically a professional dancer. Professional dancers should be able to 1) be able to perform or compete at a high level 2) teach and 3) dance socially.

One thing I left out in my earlier comments is the people who have been dancing for a long time can inadvertently intimidate newbies - <USER2> for ballroom - because at the dance club they see these really experienced dancers glide across the floor - and they think - how can I dance with these people who are so good and/or dance on the same floor. The nicer dancers will ask newbies to dance because they remember when they were starting out, in simultaneous awe and intimidation.

Another dance hack, especially for Latin dancing, is understanding the structure of the music so that you can predict changes in the music with good probability.

For example, in Salsa music, listen for a change in the music, count 8 measures and anticipate a break, and if there is no break, count another 8 (16 total) and anticipate the break. Sometimes it gets to 24 before there is a break and followers love it when you can predict these breaks (dance to the music).

It is actually a lot, lot harder to do this when you are social dancing and trying to protect your follower (crowded dance floor) - but it is doable.

The other part is tempo changes - vary the speed of your moves to the tempo and feel of the music. Slow things down, speed things up.

</comment></comment><comment><USER7> It's important to note (the article does, but it's worth emphasizing) that the correlation for coordinated dance moves is not with present testosterone levels, it's with pre-natal testosterone exposure. The first is measured with blood tests, the second with finger lengths. Present testosterone levels correlate strongly with height, muscle definition, and beard thickness. Prenatal testosterone levels correlate with "male-typical" personality traits (increased visuospatial abilities, impaired empathy and language skills), taste bud insensitivity, autism incidence, homosexuality incidence, and decreased autoacoustic emissions.

In short, the best dancers aren't necessarily jocks, they're geeks and homosexuals.

Honestly, I'd like to see this same study performed with self-identifying homosexuals screened out from the sample pool, as they tend to have much higher 4d:2d finger-length ratios and could drastically affect the results. I'd bet money that the correlation still persists, but the social dynamics are so obviously different between straight and gay men at a dance club that it's worth controlling for.

<comment><USER8> _Honestly, I'd like to see this same study performed with self-identifying homosexuals screened out from the sample pool, as they tend to have much higher 4d:2d finger-length ratios and could drastically affect the results._

Not to mention, gay guys, in general, are dramatically better dancers than straight guys. (Stereotypes aren't always accurate, but, honestly, anybody want to argue about this one?)

<comment><USER3> The few times I've been out to a gay dance club I've noticed that the vibe is really fun - most of the guys there are dancing without inhibition, even if they aren't great dancers (compare to the hetero club dance floor).

</comment></comment></comment><comment><USER9> The article doesn't cite a paper, so I can't check these criticisms out in detail, but:

\- If the people rating the dancers were watching silhouettes, then they were evaluating the attractiveness of the dancers' body-shapes, too.

\- If Lovatt is "entering uncharted territory", that might mean nobody is checking his work.

\- I can't find any publications on Google Scholar authored by this guy for "Peter Lovatt", "Peter Lovatt Dance", or "Lovatt Dance". Bad sign.

Take this article with a grain of salt, it has several markers of pseudoscience.

<comment><USER10> You can still see people's body shapes in a silhouette.

<comment><USER9> Exactly. I'm suggesting that there's a rather-important-yet-unaddressed confounding variable in the analysis.

<comment><USER10> Oh I see, I misunderstood the whole situation! I agree, your issue is pertinent.

</comment></comment></comment></comment><comment><USER11> They should have filmed their subjects over the span of sobriety to high levels of intoxication. The results would be interesting since confidence should go up, but coordination should, at some point, drop off.

</comment><comment><USER3> The secret of learning how to partner dance:

[http://www.unlikelysalsero.com/2007/08/magic-of-time-last- on...](http://www.unlikelysalsero.com/2007/08/magic-of-time-last-one- standing.html)

</comment><comment><USER12> _Those men who made big moves but who were less coordinated came across as dominant alpha males -- and were unlikely to win women's hearts._

...

 _He wasn't even able to read until he was 23_

This should be in the WTF subreddit.

</comment><comment><USER13> This reminded me of the last time I saw this guy in the popular press when he said he found that dancing like Travolta from Saturday Night Fever was really attractive to women.

[http://timesofindia.indiatimes.com/Lifestyle/Dance_like_Trav...](http://timesofindia.indiatimes.com/Lifestyle/Dance_like_Travolta_to_win_her_heart/articleshow/3587171.cms)

</comment><comment><USER14> In general evolution theory inspires me, but I have to admit it ruined dancing for me. After all, it seems like the perfect way to demonstrate physical and mental fitness (mental fitness with the coordination skills). Realizing that completely took the joy out of it for me.

<comment><USER15> Why did that ruin it for you? Things need not be pointless in order to be fun...

<comment><USER14> I can't do it just for the sake of dancing anymore. I know what I would really be doing, and I resent playing the game.

</comment></comment></comment><comment><USER16> _If one is to believe psychologist Peter Lovatt, three factors influence how confidently an individual moves on the dance floor -- and how attractive the other gender finds the performance. Those factors are age, gender and genes._

Age, Gender and Genes? That really narrows it down, now doesn't it. Reading on, testosterone is what influences how big your dancing movements are, which makes sense.

<comment><USER17> _Prenatal exposure to testosterone_, which is not exactly an obvious correlation.

</comment></comment><comment><USER18> Do NOT bite your lower lip!

<comment><USER10> Why not?

</comment></comment><comment><USER19> I think it is more like programming. The more you program, the better you find what works and what doesn't, the better your programming becomes.

</comment><comment><USER4> Except causation != correlation?</comment>


Ask HN: How to ask your employer to let you own your personal projects - <AUTHOR> I have been working on a personal project for awhile now, and think that I could potentially monetize it in the nearish future.
However, the product could (arguably) be considered a competitive product with something my employer offers, and I since I signed a non-compete with my employer I fear that there could be legal retaliation against me if I were to try and do anything with my project.
My project only "competes" in an abstract sense, and a part of me feels like if I were to disclose my project, I'd be told I couldn't monetize it, but also couldn't keep working on it for fun.
Has anyone here ever had any similar situations?  What did they do? <comment><USER2> Depends greatly on what state you are in, and the potential level of competition that you pose. If you just happen to be in the same industry, and are in California, you're probably fine. If you're in a different state maybe not so much.

Here's a thread to checkout: [https://news.ycombinator.com/item?id=2208056](https://news.ycombinator.com/item?id=2208056)

<comment><AUTHOR> I am in New York, though the company is primarily based in California (I work in a satellite office). Not sure how the jurisdiction applies.

</comment></comment><comment><USER3> Before signing, I _always_ outline all of my side businesses in the "list of prior inventions" section of the contract. I've never had an issue with this, but with your business being competitive, that would likely pose an issue. I would delete this post and discuss with a lawyer.

</comment><comment><USER4> You might want to consider deleting this thread and reposting on a throwaway, so any future legal issues don't have a paper trail on HN that is linked fairly directly to your full name.

</comment><comment><USER5> If it has the potential to make you money go ask a lawyer.......

Prob easily put it in a loved ones name to skirt your non-compete.

Make sure you get a lawyer that specializes in non-compete agreements and not a slip and fall lawyer!

Prob cost you a few $100. Worth it if you could make thousands or millions......</comment>


Apple design guru Jony Ive promoted - <AUTHOR> http://www.bbc.co.uk/news/technology-32879802

<comment><USER2> I suspect that this has more to do with hiding his compensation than anything else. They want to keep his compensation private to prevent competitors from trying to poach him. (It makes it harder if they don't have that information.) The SEC requires companies list the compensation of their top 5 executives. By naming him Chief of Design it is easier for them to keep his pay private.

</comment><comment><USER3> _Is_ this a promotion?

<comment><USER4> I think it's more likely that he's preparing to take a step back, and by introducing new designers at Apple (Marc Newson, for example.) they're slowly preparing the public (and investors especially) for the idea of Apple without Ive.

<comment><USER5> or possibly been in charge of hardware and software UI/UX was just too much work for one person when you include the admin overhead.

I'm not a huge fan of Apple or it's stuff but I respect the amount of work that goes into what they do on the design side.

</comment></comment></comment><comment><USER6> Impressive to see 5,000 design and utility patents to his name!

<comment><USER7> I think really highly of Ive but I'm sure a lot of those are "spend 5 minutes giving feedback, get your name on the patent" kind of situations.

<comment><USER8> I have to agree. Even say 30 years of solid work would be over 150 patents a year. With 365 days in a year that is a patent every 2 1/2 days. I'd call bull on that being anything but feedback/sign your name. Kind of points to the patent issues we face.</comment></comment></comment>


Aaron Swartz's Bubble City - <AUTHOR> http://blogoscoped.com/archive/2007-11-27-n76.html

<comment><AUTHOR> _"... Today's enemy? Newsflip, one of the crummy little online news aggregator sites, which was threatening to write him out of the history books by dumping the technology he'd single-handedly invented, news notation analysis (NNA), and going with some upstart competitor that didn't even bother to have an acronym for a name. Sure, Newsflip was a tiny site in the scheme of things, but if it switched it would set a dangerous precedent ..."_

First chapter wasn't a bad read. Sarah sounds a bit too much like JT in Snowcrash on a hoverboard. But it was this paragraph that really peaked my interest. Substitute:

\- NotABug for Newsflip

\- NNA for reddit in lisp

\- Wayne for Aaron

Art imitating life?</comment>


The New Space Race: One Man's Mission to Build a Galactic Internet - <AUTHOR> http://www.businessweek.com/articles/2015-01-22/global-internet-greg-wyler-may-beat-elon-musk-google-facebook <comment><USER2> I think one of the main advantages of the space internet is it will further take over the control of internet access. Regional rulers have to face a harder time on controlling internet. This will be a huge power to hold. And I guess it may reshape the world economically and politically. Any other thoughts regarding this?

<comment><USER3> The only way that affordable internet access is possible in any country is with explicit and complicit action from the government. You can't get everyone online if the government is run by a group of people who actively don't want it to happen. For example, if a government wants to stop its citizens accessing the web all they need to is make the necessary equipment illegal. When the price of being found with a satellite modem is 30 years in prison _most_ people are going to forego internet access.

The sad thing is there are governments that not only have that sort of power but willingly use it.

<comment><USER4> Making something illegal is not all that needs to be done. The government would still need a detection and enforcement mechanism.

<comment><USER5> why was this down voted ?

ps. I ask sincerely trying to understand the reasons when I see grayed out text that seem (to me) quite a reasonable comment.

edit: typos

</comment></comment></comment></comment><comment><USER6> I guess he was the first to come up with this radial heatsink design?

[http://www.google.com/patents/US20040200601](http://www.google.com/patents/US20040200601)

Stock Intel coolers do look like this today and have for a while.

I used to spend a lot of time thinking about heatsinks. It is all tower and heatpipe models today, though, e.g.

[http://www.anandtech.com/show/6830/cpu-air-cooler-roundup- si...](http://www.anandtech.com/show/6830/cpu-air-cooler-roundup-six-coolers- from-noctua-silverstone-and-cooler-master/6)

Originally popularized by the Scythe Ninja back in gosh, what, 2004 or so? It was a super effective design, main refinements over time have been more and more "slices" and direct contact heatpipes. Nobody afaik has beaten efficiency of the tower heatpipe design to date.

<comment><USER7> looks like junk patent, filed 4 years AFTER Thermaltake Golden orb

[http://www.frostytech.com/articleview.cfm?articleID=256](http://www.frostytech.com/articleview.cfm?articleID=256)

<comment><USER8> did you read the patent? it says: "Priority date Aug 30, 1999" and the first sentence of the description is: "[0001] This application is a continuation of application Ser. No. 09/386,103, filed on Aug. 30, 1999."

which is: [https://www.google.com/patents/US6851467](https://www.google.com/patents/US6851467) and was indeed filed on Aug 30 1999.

Which is almost a year before the Thermaltake Golden Orb.

Besides, he actually has his name on a number of patents: [https://www.google.com/search?safe=off&hl=en&tbm=pts&q=ininv...](https://www.google.com/search?safe=off&hl=en&tbm=pts&q=ininventor%3A%22Gregory+T+Wyler%22&oq=ininventor%3A%22Gregory+T+Wyler%22)

</comment></comment></comment><comment><USER9> 150ms is an incredible number, and the volume of satellites required will also increase bandwidth. This seems like a good situation to be in all around. I hope he succeeds at this work.

<comment><USER10> I'm having a hard time translating 150ms into something I understand right now which is Mbps. Can someone enlighten me?

<comment><USER11> Well, simply put, there's more to a good user experience than having some high Mbps. For example, if your latency is high then loading a web page with fifty small pictures will take longer than one really big picture.

On your phone, when chatting with someone, the connection will be really choppy.

Think of it as having a car that can go really fast in a straight line, but it takes a _really_ long time to make any left or right turns.

<comment><USER12> > For example, if your latency is high then loading a web page with fifty > small pictures will take longer than one really big picture.

This is true currently, but check out this http/2 demo with a tile of images loaded with different latencies:

[https://http2.golang.org/gophertiles](https://http2.golang.org/gophertiles)

If you have a http/2 enabled browser, then it shows how even with high latency, the browsing doesn't suffer nearly as much.

</comment></comment></comment></comment><comment><USER13> Looks like they use Ka band [ [http://en.wikipedia.org/wiki/O3b_%28satellite%29](http://en.wikipedia.org/wiki/O3b_%28satellite%29) ]. Wonder what were the factors of not choosing the Ku band. As far as I know Ku band is more cost effective and less susceptible to rain fade and such.

<comment><USER14> Much faster data rates I suspect - you can spend some of that on forward error correction to compensate for rain fade.

</comment></comment><comment><USER15> Rooting for him, though SpaceX has the core competency and capital to get this off the ground much faster. (no pun intended)

<comment><USER16> some comparison between the two

[http://forum.nasaspaceflight.com/index.php?topic=36590.0](http://forum.nasaspaceflight.com/index.php?topic=36590.0)

</comment></comment><comment><USER16> will this number of satellites really have enough bandwidth to serve 3 billion people? And how will the satellites 750 miles from earth be upgraded in the future as bandwidth demand increases?

</comment><comment><USER17> It's true that I live under a rock, but how have I never heard of this guy?</comment>


What happens when you register a domain? - <AUTHOR> https://blog.cloudflare.com/using-cloudflare-registrar/ <comment> cf-fan While I would love to transfer my 9 domains to cloudflare , here's my concern: transferring domains involves temporarily disabling whois guard, making my info public. It remains one of those wierd problems that no one bothers solving. I was hoping cloudflare included a transfer system which did not require disabling whois guard.

<comment><USER2> Not to mention that Cloudflare will immidately issue an SSL certificate the moment you move the domain. I was quite surprised by that and although I understand the business reasons getting info from CT logs that someone issued a cert for my domain along with 100s of random domains (SAN) was not a pleasant experience.

</comment></comment><comment><USER3> > When you register a domain, you become the owner

So what happened to the daily stormer? How can something you own be taken away?</comment>


Ask HN: As the first developer, how to prepare for new ones - <AUTHOR> I am the first software developer hire for my company and just graduated college - they have been using contracts before. I am trying to produce the best product as fast as possible but my code to be honest is trash. Not DRY, no testing. But I have been reading a lot on having a great infrastructure and how to do code reviews. The bosses have talked about hiring more devs but still, I am worried how to "managed/work" with them. Any tips from your own experience? <comment><USER2> I think every coder does their own lane. One front end, one back end, one Android, one infra, one UI/UX, and so on.

The second hire in a lane is usually a manager-tester-QA, whose primary role is communicating with the other lanes. Communication is awfully distracting and time consuming, but often a bottleneck as well.

Also most code starts off a bit hacky. That's the way it should be. It gets refactored once it's confirmed that the feature is needed.

<comment><AUTHOR> > Also most code starts off a bit hacky. That's the way it should be. It gets > refactored once it's confirmed that the feature is needed.

I def think this is good, sometimes I just worry after hearing horror stories of dev teams literally doing a year of refactoring code for bad implementation in the beginning or problems with scalability in the future which leads to delays. But I guess that is just the natural progression of a product and needs to be faced then and not now. Also that means when we do face that issue, we passed the first obstacle - our product/feature is wanted by the user

</comment></comment><comment><USER3> Don't wait until the new engineers are hired. By then it could be too late. Get involved in hiring and help your employer hire one or more good senior engineers who want to improve the quality of the code base and of the team.</comment>


AF Has Reported a Shortage of Fresh Water - <AUTHOR> https://www.navalhistory.org/2010/06/03/navy-codebreakers-%E2%80%93-paving-the-way-for-midway <comment><USER2> (An account of how USA codebreakers verified that Midway was the next target of the Japanese navy in WW2.)</comment>


Jisei: The Japanese Death Poem (2013) - <AUTHOR> https://www.japanpowered.com/japan-culture/jisei-the-japanse-death-poem <comment><USER2> > No More Games. No More Bombs. No More Walking. No More Fun. No More > Swimming. 67. That is 17 years past 50. 17 more than I needed or wanted. > Boring. I am always bitchy. No Fun – for anybody. 67. You are getting > Greedy. Act your old age. Relax – This won't hurt.

\--Dr. Hunter S. Thompson

</comment><comment><USER3> There is much that appeals in this last creative act.

</comment><comment><USER4> "Hurry up, please. It's time."

William S. Burroughs, _Western Lands_ , 1987

He lived another decade, however.

</comment><comment><USER5> I've written several of these of late. They just come out angry. Maybe at the last minute there will be some beauty. But considering who is around me to read them it's almost a waste of said beauty. The anger is more apt.

<comment><USER6> You need to deal with this because life is too short to waste it in anger. "Enjoy yourself it's later than you think"

<comment><USER7> Counterpoint to the mandatory optimism: [https://harpers.org/blog/2008/01/brecht-to-those-who- follow-...](https://harpers.org/blog/2008/01/brecht-to-those-who-follow-in- our-wake/)

<comment><USER6> Brecht was however, fundamentally an optimist. Consider "in praise of communism".

You could have pointed to woodcuts by Masreel if you really wanted to lower the mood. More depressing art of the working poor I cannot think of, Doré aside.

<comment><USER7> W.H. Auden possessed great sanity: "As I went out one evening ..."

</comment></comment></comment></comment></comment><comment><USER8> When morbid thoughts come

The "Country Death Song" by the

Violent Femmes beckons

[https://youtu.be/FWZf_RBcB_Y](https://youtu.be/FWZf_RBcB_Y)</comment>


São Paulo's first fail conf, "ffffuuuu Conf" on Nov 20th  - <AUTHOR> http://ffffuuuu.me/

<comment><USER2> If you like ffffuuuuuu, there's an all-you-can-eat buffet at <http://www.reddit.com/r/fffffffuuuuuuuuuuuu>

<comment><USER3> And if you don't want to type it out, just remember "7f12u" and hit up <http://www.reddit.com/r/7f12u> and click the link on the right.

<comment><USER4> or <http://f7u12.com></comment></comment></comment>


A study finds that bosses can be useful but also sneaky - <AUTHOR> https://www.economist.com/business/2019/10/13/the-usefulness-of-managers <comment><USER2> Sure, but a good manager is the one who's sneaky on your behalf. Telling stakeholders a longer timeline than necessary, boosting your accomplishments so you get a raise, taking the bullet from execs, those are all kinda sneaky but I sure as hell respected the managers who did that for stuff for me.

The manager you don't want throws you under the bus, over promises and demands crunch, takes the credit for your work. Equally sneaky, but selfish.

<comment><USER3> > Telling stakeholders a longer timeline than necessary

I understand what you mean, but this only creates a escalation problem. Everybody has to lie to get anything done. So, it is impossible to know if the decisions taken in the company are reasonable or not.

I guess that this behavior makes sense if everybody up the ladder are themselves lying.

> taking the bullet from execs

I guess that this is part of the same type of company. Where execs punish mistakes, like if mistakes were not part of your job. I have seen such companies driven by fear and the irony of it is that everybody is unhappy and mistakes are repeated again and again as the goal is just o hide them not to learn from it.

> The manager you don't want throws you under the bus, over promises and > demands crunch, takes the credit for your work. Equally sneaky, but selfish.

I guess that this is the manager that ends being promoted to be an exec and creates a new cycle of unreason, pain and lack of productivity.

<comment><USER2> Most companies are not that perfect unicorn. I worked at a Berkshire Hathaway company and was constantly going to war with upper management over bullshit. My direct manager was a saint, and while the company was doing well, I can't deny it seemed everyone hated it there. I'm happy at a much smaller company.

</comment></comment></comment><comment><USER4> People often talk about the extemes. Managers or no managers.

Why can't we have something in-between?

Like, instead of a manager, we have a team assistant. Someone who does burocracy and orga, but hasn't any power and the power is exercied in some way by all of the team members.

This would remove the "if all do it no one does it" problem and still prevent single people decisions.

<comment><USER5> At Slalom _build[1], we have People Managers and Team Leads.

Your people manager stays with you as you transition from project to project. They never have more than six direct reports. They are the person that handles all the bureaucracy for you and helping you through the org.

Your team lead is sometimes a people manager but probably not yours. They change based on the project you are on and are responsible for it's success. Their focus is on delivery not your career.

I'm interested in seeing where this goes as it breaks the responsibility up without breaking the career progression. There isn't a "technical path" ... yet.

[1] [https://www.slalombuild.com/](https://www.slalombuild.com/)

<comment><USER6> This is the organization of the company I work at. Overall I've learned through experience that this decoupled structure is nice in theory and it's useful to have as an option, but it should actually be avoided in practice if at all possible. A developer can end up in a situation where their boss (people manager) really doesn't know about or understand their day-to-day work at all, and then their team lead may be vying for authority over the team with a project manager and product owner, all of whom report in different organizations and have different motivations and incentives.

</comment></comment></comment><comment><USER7> I've recently landed in a managerial role. If there's one thing I've learned is that your primary role is to shelter the people under you from all the shit that's coming from above (like that famous comic of the birds on a pole pooping on the ones at the bottom.)

If your boss asks to deliver an _unreasonable request_ by tomorrow, your job is not to make sure it's delivered on time, your job is to say "No."

Might seem obvious but very few managers I've worked under learned that lesson, that's the reason managers are seen as being useless. A good manager promotes a healthy workplace.

I haven't kept up with it, but I used to read [https://randsinrepose.com](https://randsinrepose.com) — some interesting insight from a software engineering manager.

</comment><comment><USER8> [https://outline.com/XRV6AW](https://outline.com/XRV6AW)

</comment><comment><USER9> "... when it is difficult to measure what managers do, it can be tricky to design incentives to reward them."

Why would it be difficult to measure what managers do? Measure the total output of their team. That's it.

<comment><USER10> It's difficult because almost every word in your answer is a minefield that cannot be handled simply:

measure: how does one truly measure anything related to a team or individual? Just as lines of code is a bad measure of a developer, even very quantifiable things like sales numbers don't tell the whole story. A salesperson who hooks clients on promises that can't be kept is not doing a good job, no matter how it might look in one quarter. Goodhart's law exists for a reason.

total: a team that appears to be high performing but depends on the output of a small portion of that team, or that is high performing despite several team members, is not a success. People who carry a team often leave for better compensation or challenge. People who appear to have high output themselves at the expense of others should be removed from the team. People who are ineffective on a particular team should find a new environment where they can achieve more success.

output: Not all teams exist to produce specific output. An IT department might replace 50 broken keyboards across the company in a quarter, but it would be foolish to ask "what can we do to get that number to 75?"

their team: A manager usually exists both to help direct reports do a better job, but also to provide timely and pertinent information to other teams, and many organizations have teams that primarily serve "internal customers". An operations team could be given a goal of "zero new bugs or outages" and freeze all new deployments to achieve it. But the development teams would obviously be upset, and the entire company would likely suffer.

<comment><USER11> the output of a team is knowable. It doesn't matter if that output is the result of only a portion of the team, if the manager is enabling that small portion then that's what success looks like.

</comment></comment></comment><comment><USER12> Calling this a study of managers is quite a stretch... it's an arbitrarily designed game theory problem in which some people are labeled "managers" and others "workers" with no real relationship to those titles in the real world.

But yeah, managers can be useful and/or sneaky. They can also be sleepy, hungry, boring, sociopathic and all of the other things humans can be.

<comment><USER13> Agreed. I'm all for experimental economics, but let's not exaggerate the generalizability of a result. Better to see it as a particular form of theory that needs to be backed up empirically in more real world contexts.

</comment></comment><comment><USER14> This is how you devalue science

</comment><comment><USER15> Most companies could chop an entire layer of middle management, perhaps many layers, and get an instant boost in productivity and happiness. I wonder if there's any mechanism for workers and senior management to make this happen and share the rewards.

<comment><USER16> I've said this before, but a manager's work is split into thirds:

1/3 is in service of the team. Some of this is bureaucratic (approving expense reports, hiring/firing/promoting), and some of this is being a team facilitator. In meetings, watching that everyone is talking and that one person isn't dominating. Helping with conflict management. Pulling together people from three teams for a meeting and leading it.

Again, that's about 1/3 of the job. Half of this could be done by team members, but these are skills that require knowing tech but aren't tech.

1/3 is getting senior management what they need. Does the project need another developer? What is the high level status of the team? Is there technical debt that needs prioritizing that requires more than what the individual team can commit to? These are things that can be done by developers, but it's going to look a lot like what the manager does, and someone is going to be pulled off of more and more development work to do these.

And the last third is to the rest of the management team. These are the work to make the department run that people don't notice.

I worked at a place that had a very lean management:worker ratio, and instead developers ended up doing a lot of the management work, effectively becoming managers without the pay bump or recognition.

<comment><USER17> I like the way you've broken this down, and I realize you're just giving examples, but your first third (service of the team) doesn't include any long- term development of employees. (Probably just because your purpose here isn't to make an exhaustive list, but it got me thinking about this.)

I mention this because I think one thing that separates mediocre managers from really good ones is that the good ones understand each employee's strengths and weaknesses and try to help them chart a course for success. That means finding their place on the team and it also means growth. It's to everyone's benefit if, 6 months or a year from now, that employee is a better employee. A manager is in a unique position to coach and mentor, and to create the conditions for growth and encourage it. A self-starter employee will do some of this on their own, but they usually need the manager to participate too by doing stuff like recognizing realistic opportunities for an employee to take on more responsibility and taking a chance by trusting them with it. A lot of managers don't seem to even attempt to do any of this or aren't even aware that it's a thing, and then their team languishes and stagnates and they wonder why they aren't getting anything out of their people.

<comment><USER16> Certainly, long term development of employees is part of that third, and a significant one at that. But much of growth is subtle - it's about looking at projects and going, "Person A can get it done quickly but Person B would grow and appreciate the task, and Person C feels a bit of ownership over a part of it, and will grab due to an assertive personality if I let them sort it out themselves. So I'm going to have to massage a few egos here.) That doesn't take a lot of time but it is definitely emotional labor.

Emotional labor can be hard to quantify, and so outside of 1:1s and ad-hoc goal setting meetings and reviews, it's both important and hard to quantify in terms of time. Further, it's another task that can be a peer task - that is, it's something that technical leads can do for their teams and management can reassign the rest.

The original comment was talking about taking out most of management, so it's probably something they wouldn't consider as a key management priority that couldn't be done by developers.</comment></comment></comment></comment>


Inside Dropbox's Quest to Bury the Hard Drive - <AUTHOR> http://www.wired.com/business/2013/09/dropbox-2/ <comment><USER2> I'm looking forward to this revolution.</comment>


Whom should self-driving cars protect in an accident? - <AUTHOR> https://www.economist.com/science-and-technology/2018/10/27/whom-should-self-driving-cars-protect-in-an-accident <comment><USER2> Basically, a survey of different cultures' responses to the trolley problem.

And this doesn't even touch on the question of passengers vs bystanders.</comment>


ICalendar – Quirks From the Trenches - <AUTHOR> http://sveder.com/blog/icalendar-quirks-from-the-trenches/

<comment><AUTHOR> I'm the author and I'd really love some feedback on the blog. Also if you have any questions feel free to ask.</comment>


Fake Glassdoor Posts? - <AUTHOR> Hi hackernews. I'm cofounder of a moderately successful startup and I'm posting anonymously to ask for advice on something. I believe my company has been targeted by a competitor who has played dirty before (different story) and they're posting fake negative glassdoor reviews on our glassdoor profile.
Why do I believe they're fake? Over the last 7 years of the company we had a total of 20 reviews with an average of 4.5. We're not a huge company - 250 people at our peak. In the last 9 months we've seen a spike of negative glassdoor activity (about a post every week and a half). The posts are generic (bad comp, bad management etc.). One post says it was from a senior software engineer who had been with the company for 5+ years who was fired. We haven't ever employed anyone who met that description let alone fired them. Our new glassdoor rating average is about 2.5 now and I'm afraid it's going to hurt our ability to recruit.
Our internal employee feedback surveys score high. From what I can tell people like working for us which also makes this feel strange.
I've reached out to glassdoor a number of times and they refuse to do anything about it. We've sent them a legal nastygram which they just ignored. I know they do nothing to verify the authenticity of these posts/posters.
What can we do to turn it around? has anyone dealt with anything like this before? <comment><USER2> Something to keep in mind is that people looking for jobs really do not care about GD rankings at this point. I know that you want the best candidate but you can probably land really good candidates b/c the market is so flooded with strong engineers that are out of work. KeyValues highlights this in one of their newsletters but essentially the ball is completely in your court.

</comment><comment><USER3> If it's any consolation, I don't put any value in Glassdoor for this reason. They have not dealt with fake reviews, both good and bad ones.

Why do you think it is this that is hurting your ability to recruit? What other reasons might there be?

<comment><USER2> +1 to this, I only use GD for the interview questions. Furthermore, most people who search for jobs only start deep diving into companies after the offer has been extended. If you're interviewing them, then you've already passed the candidate's initial due diligence.</comment></comment>


Barbara Liskov describes how she helped lay the foundation for today's languages - <AUTHOR> http://web.mit.edu/newsoffice/2009/liskov-event.html

<comment><USER2> Best part of this article:

"I don't work that many hours a day." "I always went home at night, and didn't work in the evening," she said. "I always found that downtime to be really useful."</comment>


Ask HN: How do you organize all your coding resources? - <AUTHOR> Looking for a online organizer that will host all my resources inside categories with labels. I have a lot of useful reference sites and want to organize each per type of code. What do you recommend? I currently use Github and Dropbox. <comment><USER2> You should definitely check out Papaly. One of the resource lists I'm currently following [https://papaly.com/Postmodum37/aTVOt/Programming](https://papaly.com/Postmodum37/aTVOt/Programming)

<comment><USER3> +1 Followed the list myself, thanks!

</comment></comment><comment><USER4> Trello is a good management system</comment>


Ask HN: Twitter Lists to Follow? - <AUTHOR>

What twitter lists do you recommend following? <comment><USER2> Check out <http://listorious.com> (a site I made) for a directory of Twitter lists.

</comment><comment><USER3> <http://tweepml.org/Scoble-s-User-List/></comment>


Russian hackers are infiltrating companies via the office printer - <AUTHOR> https://www.technologyreview.com/f/614062/russian-hackers-fancy-bear-strontium-infiltrate-iot-networks-microsoft-report/ <comment><USER2> >Microsoft announced on Monday

Actual blog:

[https://msrc-blog.microsoft.com/2019/08/05/corporate-iot- a-p...](https://msrc-blog.microsoft.com/2019/08/05/corporate-iot-a-path-to- intrusion/)</comment>


Xcom: Enemy Unknown iOS app is priced at premium - <AUTHOR> http://www.bbc.co.uk/news/technology-22978494 <comment><USER2> It's a sad indictment of the iOS software ecoysystem that selling a huge, multi-million dollar game at a price designed to recoup the development costs is seen as a `premium'.</comment>


Aug. 7, 1991: Ladies and Gentlemen, the World Wide Web - <AUTHOR> http://www.wired.com/thisdayintech/2012/08/aug-7-1991-ladies-and-gentlemen-the-world-wide-web/

<comment><AUTHOR> But the actual thread they mention appears to be August 6: [https://groups.google.com/forum/#!msg/alt.hypertext/eCTkkOoW...](https://groups.google.com/forum/#!msg/alt.hypertext/eCTkkOoWTAY/urNMgHnS2gYJ)</comment>