HNHacker News
TopNewBestAskShowJobs

samizdatum

376 karma · joined February 16, 2014

submissionscomments
samizdatum··on The Story Behind F.lux
I used it for well over a year, but I noticed I was always disabling it as soon as it turned on. Eventually, I realised that having an accurate, carefully-calibrated display was pointless if I was going to use f.lux.

I tentatively tried using melatonin tablets instead, and I've found it works really well for me. Set an alarm for about 30-40 minutes before you want to go to sleep, take the tablet (sublingually) when the alarm goes off, and you'll notice you start feeling sleepy right about when you need to fall asleep.

Obviously, this kind of exogenous melatonin intake can only crudely approximate the curves for plasma melatonin levels resulting from endogenous production in the presence of zero artificial light, but using f.lux only removes one source of blue light. Sure, you might feel sleepy staring at your screen, but blue light inhibits melatonin synthesis so strongly you could turn on your bedroom light and have your melatonin production bottom out. IIRC, you can significantly attenuate melatonin production with light levels of ~100 lx, which is comparable to a really dim room. Good luck getting ready for bed in complete darkness.

You also need to titrate your dosage to find the right levels. For me, 0.2-0.5mg is all I need to achieve the necessary sleepiness to motivate me to get to sleep. I can take more with no noticeable effects, but I know others who report headaches the morning after. Also note that the older you are, the less melatonin you need.

samizdatum··on Tricks That Make Virtual Reality Feel Real
You can wear glasses but it will reduce your field of view.
samizdatum··on Tricks That Make Virtual Reality Feel Real
Have you tried the consumer version of the Oculus Rift? It's significantly more comfortable than previous iterations, enough for hours of continuous use.

Oculus has placed a huge emphasis on comfort, because "presence"- the visceral feeling of being in a virtual space- is so fickle to achieve. While it's not exactly a binary, there-or-not-there kind of thing, presence is a gestalt that's really easy to get kicked out of, and Oculus found that discomfort was one of those things that would reliably inhibit a sense of presence.

They went to incredible lengths to improve the comfort of the device, going as far as designing new manufacturing processes to wrap the Rift in some bespoke fabrics, and designing the straps to eliminate the "ski goggle wobble", and distribute weight evenly across the head.

samizdatum··on Ask HN: Opinion about Searle's Chinese Room?
He does, on page 14.
samizdatum··on Ask HN: Developers, how many hours do you feel you are productive in a day?
Sometimes, at the tail end of a day, I'll be sitting in front of my computer, with a clear idea of exactly what I need to do and how to do it... and yet I'm just sort of sitting there stupidly, because my brain feels fried. It's the same sensation you get when you crank out one too many reps at the gym- you're sending all the right signals, the nerves are firing, but your muscles just don't work.

When I get this fried brain feeling, I've found that eating something sugar-rich, like a piece of chocolate, can attenuate this feeling- not completely, but enough to get me out of the paralysis and started, at least. I don't know how much is placebo, but hey, it works, so I'm not complaining, and there seems to be at least some studies supporting the existence of similar effects.

samizdatum··on Angular 2 versus React
Code written in language that allows imperative constructs != imperative code

I would say that React is far more friendly to a declarative style than Angular 1 at least. Immutable data, redux, and virtual dom all encourage this style, whereas the path of least resistance in Angular 1 is definitely imperative mutation of state. Anyway, if you're doing significant amounts of logic in your JSX/angular templates, you're Doing It Wrong.

samizdatum··on MVVM is Exceptionally OK
In WPF, you call OnPropertyChanged on the setter of a property, giving you two-way data binding. Great, now you can modify the model directly from the view. The problem is that modifying the models directly from the views makes it really difficult to reason about your dataflows. It's not unusual to have the same model bound to five or ten different views. Run your WPF application for a while, and- hang on- this view isn't showing the correct data. This kind of scenario is hellish to debug, because there's so many places that could have mutated the model.

In a large application using two-way binding, the application state is implicit in its execution. There's thousands of places that mutate the state, so many that if you tried to make a graph of the dataflows, you'd get spaghetti. Sure, the code is neat and simple, but you know you've got a problem when the dependency graph is so complex that you can write a cyclic binding and not even realise it.

Redux borrows a lot from functional techniques to tackle these kinds of problems. The big one is that you can't mutate the state, because it's immutable. Instead, you write reducing functions that take an application state and an action, and return a completely new application state based on that action (which might sound wasteful until you learn about functional data structures).

This buys you a lot of things. You can hang on to your old application states instead of throwing them away, and then, very easily, set up a slider that lets you "time travel" in your application. You can grab a list of actions, and feed them to a hundred instances of your application, all with different initial states, and inspect how the state changed at each action- really useful for testing or debugging. You can completely change your code, and have the application update in real time with all the state intact, but now running your new code- this really speeds up development. You can catch errors, and then automatically send a complete snapshot of the application state (complete with where the focus was, the text the user was typing, the clicks they used to get to that particular screen, etc.) and then play it back, allowing you to perfectly reproduce the error.

These things are all extremely difficult when the state of your application (and how it changes over time) is implicit and scattered over hundreds of views. It's trivial when the state of your application is completely described by an initial state, a series of actions, and a single reducing function.

Regarding the "intermediate information" you alluded to: this is generally solved by using something like reselect, which allows you to define transformations on the state that can be fed to views. For example, you could write a function that returns a list of items in the state that match a search query in the state, but not have the resulting list itself live in the state. This means you still have one source of truth, and the immutability of the state ensures you don't lose any of the benefits I listed above.

samizdatum··on The Unreasonable Effectiveness of Recurrent Neural Networks
That Markov Chain model operates on 4-grams by default. The RNN featured in the article generates output character-by-character, which is significantly more impressive. Here's a sample from the Markov Chain model operating on 4-grams:

  Ther deat is more; for in thers that undiscorns the unwortune, 
  the pangs against a life, the law's we know no trave, the hear, 
  thers thus pause. 
The only reason why it seems like the model can occasionally spell, and create anglo-sounding neologisms, is because it operates on 4-grams.

Here's some character-by-character output from the same Markov Chain model.

  T,omotsuo ait   pw,, l f,s teo efoat t hoy tha fm nwo   
     bs rs a h enwcbr lwntikh  wqmaohaaer ah es aer 
  mkazeoltl.etnhhifcmfeifnmeeoddssmusoat irca   
  do'ltyuntos sih i etsoatbrbdl
samizdatum··on The Dining Cryptographers Problem (1988) [pdf]
Because Alice already knows the NSA didn't pay, the game effectively reduces to a two-participant model. Obviously, playing this game with only one other participant would provide no anonymity at all. n-1 colluders can deanonymize any DC network with group size n.

Another fundamental problem with DC networks is that a single malicious participant can completely disrupt communication, and the inherent anonymity of the protocol means detecting malicious actors is very difficult. Chaum introduces the idea of "trap rounds" that can be used to slowly exclude bad actors, but in actual use, trap rounds are rather inelegant and impractical.

Herbivore http://www.cs.cornell.edu/people/egs/papers/herbivore-tr.pdf is an implementation of DC networks that circumvents some of these problems by sorting participants into randomized groups of ~k participants, where k is a network-wide anonymity set constant. It avoids collusion by disallowing participants to choose which k-sized bucket they end up in, and limits Sybil attacks by requiring proof-of-work to join the network.

samizdatum··on A visual proof that neural nets can compute any function
The biologically-inspired nature of neural nets was a steady, mesmerizing flame for machine learning research. A chance to work on an extremely simple, provably universal system that had embarrassingly obvious rhetorical implications for profound-sounding problems like the computability of consciousness, or the computational complexity of the human brain, proved too seductive for the legions of research-moths that flocked to bask in that alluring flame.

The initial flurry of research activity slowed to a background simmer, however. As a steady march of implementation problems was knocked down, it became clear that the limitations of neural nets were inherent to neural nets themselves, rather than any particular implementation detail. For example, the Lagrangians calculated by SVMs are provably convex, in contrast to the lack of a convexity guarantee for neural nets, which happily gradient descent into local minima. There were workarounds, of course, with regularization techniques, stochastic descent, etc. providing some measure of relief, but a migration of research interest away from neural nets seemed increasingly promising, and today, the migration seems largely complete.

samizdatum··on Sony announces Project Morpheus, a virtual reality headset coming to PS4
Currently, headphones are pretty much required hardware for VR, because the positions of the speakers relative to the ears are fixed. Achieving realistic binaural audio with external speakers isn't currently feasible because of the need to compensate for reflections and interference, let alone maintaining positionally invariant virtualized audio sources through head rotations and translations.

I'm not sure how the "60 virtual speakers" would work (it sounds like marketing terminology), but currently, the state-of-the-art in immersive in-game audio involves constructing an acoustically realistic head model, and harnessing the raytracing abilities of game engines and graphics cards to apply a material-based frequency attenuation curve at each bounce.

samizdatum··on Angular 2.0
The philosopher David Lewis had a lot of critics, and they would often cite the fact that they couldn't possibly see how modal realism could be true, to which Lewis would reply, "I don't know how to refute an incredulous stare."

Arguments from personal incredulity don't engage substantively with what they ostensibly claim to refute because they import a variable- the argument-maker's conception of what seems plausible- that really should do no work in a logical analysis.

The arguments adumbrated in the parent comment seem to have similar failure modes, adorned as they are with premises such as "to me, [the directive] is a foreign object I don't recognize," and "I can't even tell what that means." Someone who has never programmed before could look at some vanilla javascript and plead perplexity, but obviously this isn't an indictment of javascript itself. To really make the point, the parent comment would have to show that the learning curve is disproportionately arduous for the payoff at the summit, but reiterations of personal unfamiliarity were offered instead.

Jeswin gives no evidence of having made a reasonable attempt to understand Angular ("directives, scopes?"), but more crucially, displays little understanding of the benefits of Angular. DI is criticised as "a solution looking for a problem" in the context of javascript, as if dependency injection were a bandaid for not being a dynamic language. DI enables testability, and not even mentioning this advantage, let alone not providing a cogent argument for why the learning curve of DI doesn't justify the gains in testability, is to refuse to participate in the discussion entirely. Directives are similarly dismissed as "foreign objects," which they might be to some, but they're hugely powerful foreign objects that allow arbitrary behaviour to be written declaratively. Not knowing the benefits of Angular obviously contributes greatly to a reluctance to learn it, and perhaps a subsequent rationalisation of this reluctance as being provoked by something intrinsic to the framework.

Fittingly, after expressing bewilderment regarding Angular scoping, Jeswin goes on to divide the world into two camps, declaring membership in "the one which makes me productive with the languages, specs, and standards I already know", which is about the closest thing to a natural language scoping bug I've come across.

samizdatum··on Why Do Decent People Accept Bitcoins?
I Need A Drink

I'm not sure if there's a specific term for the technique of rewriting a passage of prose to argue for the negation of said passage- I guess it's a distilled reductio ad absurdum, one that's been fractionated away to retain the spirit of the already rather palatable, crowd-pleasing reductio form, discarding the rigour in the name of intensifying the flavours and improving the mouthfeel.

The lack of rigour doesn't mean this class of analyses are wrong- it's just easier for logical errors to remain undetected, fermenting behind the devastating impression that the author's arguments can be used to prove anything, and thus prove nothing. It's hard to track these errors, flowing as they do through the unvalved, convoluted network of criss-crossing ambiguities and imprecision that is natural language and the degrees of freedom it affords when parsing a text.

The distilled reductio relies on a gestalt dissonance between superficial similarities in tone and structure, and the inverted conclusion of the two passages, while never attempting to refute the arguments themselves. Of course, for the purposes of logical analysis, tone merely helps arguments go down better, and is irrelevant to the arguments themselves. The only thing that's really retained, then, is the structure of the arguments, and once you are allowed to swap out premises at will, the infinite malleability of natural language will allow you to transform any argument to fit the structure, like liquid conforms to the shape of a glass.

We could instead engage directly with the arguments, claiming, for example, that Bitcoin is very much in the nascent stages, and aims to solve fundamental problems in the financial industry. Of course the current financial industry is better at a lot of things, we'd say. It's aged, matured, had an enormous superstructure of fixes and optimizations and safeguards built over decades and decades. It's equivalent to arguing grain alcohol is a better tech than battery-powered cars will ever be, while ignoring the enormous entrenched infrastructural advantages afforded to ethanol. And then we'd argue that comparing Bitcoin and the entire financial industry misses the point- you should be discussing decentralised vs centralised currencies.

That's probably a more meaningful (albeit less entertaining) way of arguing against the OP. Of course, if you disagree with me, you could rewrite this comment, changing the content completely while carefully retaining all the supererogatory references to alcohol and drinking, and it would seem superficially comparable, especially if the post began with an anchoring catchphrase like "Why Do Decent People Accept Dollars", or "I Need A Drink."

samizdatum··on There Are Whales Alive Today Who Were Born Before Moby Dick Was Written
The long lifespan of whales could actually shed some light on human evolution.

Whales, along with many other mammalian species (including humans) exhibit a perplexing divergence of somatic and reproductive senescence. Female whales hit menopause long before their lives are over, in some cases spending the majority of their lives in a non-reproductive state, which prima facie seems rather maladaptive.

A number of hypotheses have been proposed to explain what seems like widespread evolutionary selection for menopause, and none of them are completely satisfactory. The "grandmother hypothesis", for example, posits that experienced grandmothers assist in the care of their grandchildren, increasing their odds of survival.

Certain species of whales, including Orcinus orca, the killer whale, exhibit early-life menopause, and form stable matrilineal groups, making them ideal candidates for testing the grandmother hypothesis. Interestingly, studies on killer whales observe no significant correlation between living grandmothers and grandoffspring survival rates, though there are plenty of unaddressed confounding factors.

Humans are the only species where the grandmother hypothesis is supported by data, but the dearth of corresponding data in whales suggests the dramatic disparity in our somatic-reproductive senescence might be more strongly selected for by factors we are not yet aware of.

samizdatum··on I No Longer Need StackOverflow
I no longer need the Internet.

My hamster chewed through a CAT cable last week; it took me three days to notice, so complete was my Zen immersion in creating a period-accurate replica of the first Galilean telescope, using only Haskell lenses.

When it finally dawned on me I had attained a sophistication that transcended the internet, I felt the inessentials fall away from my craft in an instant, and I was left in an affectless state of pure, actualized creation.

Now, don't get me wrong, I'm not saying the Internet isn't a great tool- I remember when I, too, used the Internet on a regular basis, daily even, and perhaps even relied on it. If you have no idea about anything whatsoever, it can be a fantastic resource. But when I want to know something, I don't look up the documentation, or download the source code. I am the source code, the documentation, the alpha build, the omega build. The Seraphic gatekeeper of the NANDs. The bit stops here.

So I ask you- are you ready to unplug? Because I already did.

samizdatum··on The Road to Virtual Reality
While it's incidentally true that "you don't just casually fire up a VR experience", it glosses over the more salient fact that you don't have casual VR experiences, full stop. VR is, definitionally, an immersive, exclusionary activity that places you in a virtual world and prevents you from interacting with your surroundings. Criticizing an activity like that for not being casual enough to "fire up" is like speculating air travel won't catch on because airplane doors are too narrow.
samizdatum··on The Road to Virtual Reality
Unfortunately, the teams at Valve and Oculus seemed unaware that solving the problems you cited would require "re-engineering the human body", and naively set about solving these problems with more conventional engineering methodologies. Miraculously, they've succeeded in eliminating simulator sickness, taking advantage of the near-zero pixel switching time of OLED displays, as well as accurate, low-latency, 6DOF head tracking.

Current state-of-the-art VR tech is a huge advancement from late 90s VR tech, here's a few examples that run contrary to your curious assertion that the only significant VR tech advance of the last decade was the transition from CRT to LED displays:

-The usual inexorable orders-of-magnitude march toward greater processing power

-Commodification of smartphone hardware, which happens to be ideal for VR

-The ability to correct for distortion and chromatic aberration in software, rather than with bulky and complex optics

-Advancements in "sensor fusion", where multiple, complementary tracking sensor technologies are used in tandem, to compensate for deficiencies in any single tracking tech

-Low persistence technology that eliminates notoriously sim-sickness-inducing pixel smearing

You've clearly done your reading on this, but the VR landscape really has changed more in the last few months than the five years pre-Oculus.

← PreviousPage 2 of 2