Haskell's Type Classes: We Can Do Better - <AUTHOR> http://degoes.net/articles/principled-typeclasses/ <comment><USER2> An alternative approach is under development [1] for OCaml : modular implicits [2]. This is a mix of ideas from SML/OCaml modules, Scala implicits and Haskell type classes.

More than one alternative module implementation may be provided for a module signature, and the actual implementation to be used is chosen on the implicit modules available in the current context. This results into an error if the implicit module cannot be chosen without ambiguity.

[1] [https://github.com/ocamllabs/ocaml-modular- implicits](https://github.com/ocamllabs/ocaml-modular-implicits)

[2] [http://www.lpw25.net/ml2014.pdf](http://www.lpw25.net/ml2014.pdf)

<comment><USER3> (very similar systems are already implemented in Agda and Coq)

</comment></comment><comment><USER4> The requirement to be globally unambiguous is the #1 wart of type classes. Rather than enforcing it with the compiler it would be better to make that restriction unnecessary. It should be possible to define a type class instance local to a module. Locally unambiguous yes, globally unambiguous no.

<comment><USER3> That's not good. We can put an instance into a runtime box, pass it to another module, and now there are potentially two different instances to choose from in the other module. We'd have to ban moving around instances in runtime data if we are to preserve class coherence, which is unsatisfactory.

<comment><USER4> > and now there are potentially two different instances to choose from in the > other module [...] to preserve _class coherence_

I know the standard arguments for class coherence (Set etc.), but I haven't found any of them convincing. Relying on two values coming from two different places to be the same indicates that the design of the code is wrong. It's like writing a function f x y but you must only ever call it with identical arguments x=y. The right thing to do then is to give f only one argument to begin with.

<comment><USER3> I consider coherence seriously mainly because Edward Kmett supports it, and he has immense experience regarding the relative merits of coherent vs. incoherent classes in practical development. One core Kmett argument that I subscribe to is that 95% percent of the time there is no newtype noise needed, and in that case coherence is very nice, since one doesn't have to think about class hierarchies (which can get very complex, with many alternate instance derivations) as far as the code typechecks.

But aside of that, I'm not all that convinced of the importance of coherence in a dependent setting either! My intuition is that types should encode all the properties that we'd like to be able to __use __in instances. In other words, even if we don 't get coherence, we can use types to constrain the implementation of instances as much as we like.

Highly ambiguous instance resolution (like a bunch of Monoid Int instances lying around) is a bit of a pain though, and there could be some "using instance" feature/syntax that locally throws out all instances except one.

Additionally, as of now there are no large production code bases that use Coq style type classes in a proper dependent language. There are very few sizable applications in dependent languages to begin with. So we don't know a lot about the practical caveats of that design, while there is a lot of experience and know-how about Haskell-style classes, which is one reason why we should at least consider salvaging coherence in future languages.

Generally, I think that type classes are a rather ugly and haphazard construction compared to the succinct elegance of the type theories of core languages; still, eventually type classes worm their way into languages (Agda, Coq) because people really like them and like to use them, so a language designer should consider them. I wish there was an elegant/general formal treatment that captures the essential features, in any case.

</comment></comment></comment></comment><comment><USER5> Has anyone here shipped anything production worthy with dependently typed languages? I'm serious. There are like 10 PhDs in France working on a certified compiler toolchain for C and that's it. Meanwhile Go and JavaScript are taking over the world and they're anything but dependently typed. Maybe there's a reason for that? Maybe the reason is that after a certain point the validation overhead of advanced type systems is just not worth it.

Yes, I know the article isn't about dependent types per se but many of the features he wants get pretty close to dependent types since that is pretty much the state of the art when it comes to advanced type systems with lawful abstractions and whatnot.

<comment><USER6> Dependently type languages are wonderful in theory and a royal pain in the butt in practice. It's a great example of "devil in the details" kind of thing.

For example, let's say you define a type of list of size n. Great. You can only assign list of the same size and you can only append an element of the type "n" to a type "n-1" or the compiler will complain. Now you can even prove that your program is formally correct. What's not to like?

And then, reality knocks at your door.

How do you instantiate such a type? It needs to be instantiated right away with n elements or your program won't compile. But these elements are coming from the runtime, say, a database. How the hell does this work?

Dependently typed languages that go just a step beyond prototypes quickly realize how crippling this approach is and they will give you all kinds of escape hatches to weaken the type system just so you can use the darn thing. But it's futile, because at the end of the day, a program is a living thing that relies on side effects and external inputs, and sophisticated systems are just not designed to cope with human fuzziness.

The reason why dependently typed systems never became popular is not because the world hasn't realized yet how awesome they are: it's because they just aren't a good fit to solve real problems.

<comment><USER7> Your "I-can't-work-with-this-unsized-list-because-I-need-to-pass-it-to- something-that-takes-a-sized-list" problem seems like something that one might _think_ would be a problem if one understood advanced types on a conceptual or theoretical level but not how to use them in real-world code. It's actually pretty easy to deal with cases like this... At the end of the day, you just end up having to code for both the case where the list matches the size requirements of the code you want to call and the case where it doesn't. For example, you could pass the unsized list to a function which performs validation of its actual runtime size, returning, e.g., an `Option[List[Int] @@ MinSize[_5]]` (if I may use Scala-speak). You'd then have to handle both the case where the `Option` is a `Some` and the case where it's a `None`. Ultimately, it ends up being extremely similar to checked exceptions: you are simply forced to write code to handle all cases, rather than writing code that allows some of them to blow up at runtime (while telling yourself "that case could never happen in the real world" or "that's an edge case, we'll just ignore it").

<comment><USER6> > At the end of the day, you just end up having to code for both the case > where the list matches the size requirements of the code you want to call > and the case where it doesn't.

I don't follow. If your list is not the right size, your program doesn't compile, period.

If it does, you're not using a dependently typed language.

Am I missing something?

<comment><USER8> It depends on the language. For instance in Scala you can simulate collections of fixed size as in [https://github.com/milessabin/shapeless/blob/master/core/src...](https://github.com/milessabin/shapeless/blob/master/core/src/main/scala/shapeless/sized.scala)

Then, at runtime, you can cast an unsized list to a sized list giving - say - a function List[A] => Option[Sized[List[A], N5]] that will fail if the list is not of size 5. From then on you can go on letting the compiler keep track of lengths.

Of course, this does not work at all if you have no clue what size your input will have

<comment><USER7> I believe that you don't need to know what size your _input_ will have. Rather, you need to know what size _the thing you will be calling_ will need, right?

</comment></comment></comment></comment></comment></comment><comment><USER9> Note the weakness of the Java solution. Since its interfaces offer no support for virtual contructors (hence the design pattern), you have to instanciate a factory before you can get an empty value.

<comment><USER10> Possible now with Java 8 default methods.

</comment></comment><comment><USER11> It's interesting to contrast this with the attitude in the D community (or at least Andrei and Walter), which has also come to the conclusion that typeclasses are a bad idea–but because they're _too_ strongly typed rather than not strongly typed enough, and the solution is to throw them out in favor of dynamic "typing" at the type level through ad-hoc templates.

My two cents is that this is just like every other static vs. dynamic typing debate, and it's a deep tradeoff. I've been pretty pleased with typeclasses as an easy-to-use sweet spot between complexity/mental overhead and safety. But I'm certainly willing to believe we can do better, of course.

</comment><comment><USER12> There are a number of good points here, but I am surprised by the fact that John wants a global coherence check, since in our conversations he has always insisted on the primacy of _local reasoning_.

</comment><comment><USER13> I think the article mixes up "type" and "newtype". "newtype Email = String" doesn't make sense.

<comment><USER14> "type" wouldn't work in this context, as it is literally just an alias, so the compiler cannot use to determine what instance to use. In contrast, newtype actually creates a new type, that acts as a wrapper around the old type. I believe what the author meant to say was "newtype Email = Email String".

</comment></comment><comment><USER3> This post engages in plenty of armchair speculation, and is overall horribly vague, or just nonsense ("addOneTwo works on any type that's provably isomorphic to Integer"). It's more like a plea for all things that seem intuitively nice and good, mashed together without any deep consideration for whether they can be realized consistently. Type classes are still an open research topic, especially when combined with dependent types. From the top of my head:

Class coherence is the property that any two instances of the same types are equal. It's a strong guarantee that boosts the robustness and usability of type classes significantly. Scala doesn't have it, instead it has a arcane set of rules that determine the resolution of implicits in the face of ambiguity, and it's a huge pain for more complicated use cases.

Named instances are incompatible with coherence. We could just put one named instance into a runtime object, and voila, it's indistinguishable from any other instance. We could remedy this by indexing the type of an instance with a label, which isn't better than choosing instances with newtype wrappers.

Similarly, local instances and explicit instance application imply incoherence.

Also, laws for classes are an already existing feature in Idris, Agda and Coq. The problem is that laws for anything are by far best realized via dependent types, and dependent types have a nontrivial interaction with classes that is an open problem. With dependent types, checking whether two instance heads are different could be just undecidable, depending on what constructs one allows there.

It's a possibility to neuter the language fragment that goes into instance heads, so that propositional equality becomes decidable over it - in a way Haskell already does this, by disallowing type families in instances. But in a dependent language it could be rather awkward that a fair amount of useful types cannot be made instances.

Alternatively, one could require proofs from the __programmer __in each instance that the instance head is propositionally different from all other instance heads in scope. But this would also require much thought, and I haven 't given it yet.

Also, if our classes are actually coherent, we would like to have an internal proof of this property (as opposed to in current Haskell where we just sort of know that this is the case), but I have no idea how to do this best. Maybe the instance resolution procedure could be modeled internally in a strong enough language, and coherence could be given as a theorem, and there could be some syntactic sugar for code with classes.

Or we could have both coherent and incoherent classes, each explicitly marked as such. Or we could have coherent classes by __proving __that a certain class is necessarily coherent, independently from any instance resolution procedure. There are many such classes, but not nearly all that we frequently use, and some classes are coherent but we can 't prove it in currently implemented type theories because the proof relies on parametricity (Functor is such a class).

<comment><USER15> Thanks for the informative post. Could you please clarify a couple of things for me?

> Named instances are incompatible with coherence. We could > just put one > named instance into a runtime object

Could you give an example of what you mean in, e.g., Haskell (assuming some fictional facility for named instances existed)?

> With dependent types, checking whether two instance heads > are different

What are instance heads?

<comment><USER3> > instance heads

Instance heads are the types in the instance declaration that the compiler dispatches on, for example in `instance Show Int` the head is `Int`.

> named instances

You can see an example for named instances in Idris (very Haskell-like syntax) here ([http://idris.readthedocs.org/en/latest/tutorial/classes.html...](http://idris.readthedocs.org/en/latest/tutorial/classes.html#named- instances)). We could put named instances into runtime objects (example in Haskell: `data ShowInstance a = Show a => Instance` which does exactly this), thereby forgetting the name, which could cause ambiguities down the line. But even without instances in runtime boxes, different instances for the same type necessitate that there are some rules for instance resolution that a programmer has to consider. For example, if we have two monoid instances for `Int`, one with addition and one with multiplication, we somehow need to make sure that the monoid operations mean what we want them to mean, so that we don't get unexpectedly addition instead of multiplication.

</comment></comment></comment><comment><USER16> There's some template Haskell magic that generates QuickCheck properties for the typeclass laws for your instances for you. That's taking care of some of the article's worries.

<comment><USER17> No need for TH, actually. Write a function which takes a `proxy a` and returns e.g. a Tasty `TestTree`: `testMyClassLaws :: proxy a -> TestTree`. Then in your test module, add something like `testGroup "MyClassLaws for MyType" $ testMyClassLaws (Proxy :: Proxy MyType)` somewhere in your list of tests.

</comment></comment><comment><USER18> John de Goes mentions at the start of his article how Scala implements type classes without an extra language construct. But he doesn't show what his example would look like in Scala. So I wrote that out for my own amusement.

You can find the gist here. [https://gist.github.com/joost-de- vries/949fbea6345fec1ac4ef](https://gist.github.com/joost-de- vries/949fbea6345fec1ac4ef)</comment>


Why You Should Always Comment Your Code - <AUTHOR> http://www.codeconquest.com/why-you-should-always-comment-your-code/

<comment><USER2> That's an extremely bad example - why would cat _ever_ fall through to dog? At least come up with a situation where fall through makes sense.

Generally, IMO, it's a much better idea to use meaningful constants and method names.

So the code becomes:

        switch(action) {
          case CHECK_AND_FOO:
            check();

          case FOO:
            foo();
            break;

          default:
            llama();
        }

Now, Joe would not only know not to add in a break, but also _why_ \- all without adding a single comment.</comment>


Hands-on with the Pebble watch: A handy device with a lot of potential - <AUTHOR> http://arstechnica.com/gadgets/2013/04/hands-on-with-the-pebble-watch-a-handy-device-with-a-lot-of-potential/

<comment><USER2> Perhaps. I have one (I backed it on the first day) and I use it occasionally. Right now (at least with iOS) it's highly limited and is causing a huge battery drain making it impractical to use every day.

However, the guys running the Pebble venture are making some very serious mistakes. As with any Kickstarter venture, backers expect some (and maybe lots) of issues and startup problems. But they've made the fatal error of not communication their progress (with manufacturing as well as software) with the "rabid" early adopters.

These are going to be the folks most vociferous in their complaint and will still be around when (or if) the Pebble becomes a commercial product.

The popularity of any future consumer version will depend on good word of mouth and even better social media and tech media press and I for one are not going to be on this bandwagon.

I do hope they get their act together as I think the Pebble is a useful device for any connected person in the 21st century.</comment>


Speech Analysis of Martin Luther King's "I Have a Dream Speech" - <AUTHOR> http://clarify.io/try-it-now/?id=88005fd4febc4c57b5431949b3a7c90f

<comment><USER2>
        > Oh no!  This media file
        > isn't available anymore.

Hmm.

<comment><AUTHOR> Weird. I still see it. :(

<comment><USER2> You may have the right cookies. And if you submitted it, it might be there because of that. But I've just tried again and get the same error.</comment></comment></comment>


Two years in jail for reporting news without a license - <AUTHOR> http://www.bangkokpost.com/news/general/1239074/two-years-in-jail-proposed-for-reporting-news-without-licence <comment><AUTHOR> Possibly of interest to HN due to all the recent discussions about fake news. So here's a way to squash it, as well as any other news governments don't like.

Also of possible interest to HN because "reporting news" inclues apps that are used to report news. Presumably the platform hosting the app as well as the app developer (?, not sure) are at risk.

</comment><comment><USER2> I wonder what the price to pay is for commenting on the news under such nonsense?</comment>


CSS 3D Solar System - <AUTHOR> http://codepen.io/juliangarnier/full/idhuG

<comment><USER2> This seems like a cool thing, it just makes me keep realizing how absolutely awful 3D in CSS and WebGL is.

It seems like every time there's a demo like this that someone makes, it performs terribly, has weird clipping problems, aliasing issues, confusing controls, and is unresponsive. I usually end up accidentally selecting half the page instead of manipulating whatever control I'm trying to use, or some other thing. I can't recall ever being satisfied with any 3D anything on the web, which is very frustrating.

Again, that's not a comment on the quality of this cool solar system thing, but just a random rant.</comment>


What did you learn about human nature from your startup(s)? - <AUTHOR>

Web startups tend to also be psychology and/or sociology experiments.  What did you learn from your startup(s)? <comment><USER2> I am in the middle of a start up. Low on funds. I have developed a strong disdain for people who want to come in at the last hour and act like their contribution was equal to those who had bled and suffered to get things started from the dust.</comment>


64 Core Threadripper 3990X CPU Review - <AUTHOR> https://www.anandtech.com/show/15483/amd-threadripper-3990x-review/3 <comment><USER2> The article presents the situation as if limiting the number of threads by the operating system is not a conscious choice by Microsoft but a natural law that cannot be avoided.

Microsoft deliberately does these limitations in order to force people to pay more for its sofware. It's a shame, really.

<comment><USER3> Supporting only 64 processors in a group on a 64bit operating system seems like a reasonable and sane technical solution. It means you can use a single 64bit variable as a bitmask for various processor related functions in a process.

I would bet that many other bits of software also have this limitation because they too thought that using a 64bit value for a processor mask would be sufficient.

<comment><USER4> A 6-bit variable would be enough to hold 64 values.

<comment><USER5> That doesn't allow you to use it as a bit mask, which is what OP was saying.

<comment><USER6> Another way to express this is that a 64-bit value can express every combination of processors, so if you want to say something like "this process should run on these 12 specific processors" you can do so in a single 64-bit value.

</comment></comment></comment></comment></comment><comment><USER7> I'm curious, to anyone working on Windows kernel development, at what point does a feature/scheduler improvement become so good that people decide "nah, this is way too cool to put in Windows Home Edition, let's feature-gate it to the enterprise version instead!"?

<comment><USER8> I guess it depends on their segmentation strategy. If you have not read it already there is a great article by Joel Spolsky on this topic: [https://www.joelonsoftware.com/2004/12/15/camels-and- rubber-...](https://www.joelonsoftware.com/2004/12/15/camels-and-rubber- duckies/)

In this case it seems pretty justified to include this feature in the enterprise edition only.

<comment><USER9> Great. How do I, a sole proprietor, buy this "enterprise edition?"

<comment><USER10> Sign up for a Microsoft small business account. Via that, you get a MSDN (or whatever they call it these days) subscription. Then you can download any version of the OS and get a license key from the same webpage to activate it.

<comment><USER11> Any chance you have a link to this offering? Not seeing MSDN being listed as included with anything buyable.

<comment><USER10> Apologies, it seems the program was discontinued in 2018. Lookup details on Microsoft's BizSpark program for more info.

This program replaced it, but I have zero info besides knowing it replaced BizSpark so might not be comparable:

[https://startups.microsoft.com/en-us/](https://startups.microsoft.com/en-us/)

</comment></comment></comment></comment></comment></comment><comment><USER12> Wish they'd review on Linux. Windows does not seem like the target audience given all the limitations.

<comment><USER13> I've played with the AMD Daytona Rome Server (two EPYC sockets, 2*64 = 128 cores, 256 threads), with RHEL, and it rocks. However it's quite hard to find workloads that keep all 256 threads busy at once. Most builds aren't nearly parallel enough, most programs can't find work for 256 threads. So as a personal machine 128 or 256 threads aren't really worth it unless money is no object. Likely the best current use for these is as servers for running large numbers of virtual machines or containers.

<comment><USER14> I am craving one of these for my superoptimizer. The level of task parallelism I have is north of 100M independent jobs; my last run took a single-core machine 20 days. It's pretty rare to have a workload like this but as more machines ship with >16 cores, I think more developers will look at the order- of-magnitude improvements of parallelizing their tasks where possible.

<comment> 0-_-0 Could you run it on the GPU then? Or does it have a lot of branches?

<comment><USER14> It uses an SMT solver (can use Z3, Yices or Boolector) all of which are very complex and branchy. So no GPGPU - maybe some specialist in SAT solving or SMT could build that one day, but that person would not be me.

</comment></comment></comment></comment></comment><comment><USER15> Not sure who needs to hear this, but another _huge_ Windows 10 limitation: no support for nested virtualization on amd processors. This means Ryzen users can't benefit from a bunch of security improvements and also things like the new Windows 10X emulator can't work.

Kind of off topic, but it's the kind of nasty surprise I wouldn't want to get after deciding to buy, so hope this helps someone.

[https://windowsserver.uservoice.com/forums/295047-general- fe...](https://windowsserver.uservoice.com/forums/295047-general- feedback/suggestions/31734808-nested-virtualization-for-amd-epyc-and-ryzen)

<comment><USER16> Is this an limitation on the processor or on Windows itself? Since virtualization is not part of x86 but rather vendor specific, is the AMD implementation difficult?

<comment><USER15> It appears to be a Windows limitation - I'm not an expert, but my understanding is that AMD supports all the same extensions for it (under AMD rather than Intel branding) and it appears the Windows team is (finally) working on it. I understand that other hypervisors do support nested virt on AMD.

To be fair to the Windows team, AMD in the data center / pro desktops wasn't really viable for a very long time, so its understandable that it wasn't prioritized.

</comment></comment></comment><comment><USER17> The last benchmark is interesting:

> 1080p60 HEVC at 3500 bitrate with "Fast" preset - 319 fps

Ok, why were these parameters chosen? What's the application? I recommend everyone to look at 1080p60 video footage encoded with h265 with the "fast" encoder preset at 3500 bitrate. Calling it terrible would be a compliment. Unless you encode really slow and visual easy motion, which brings up the question why you would need 60 fps in the first place. Even at the "medium" preset with 1080p60 you should - regardless of application - be at least in the 5000+ range with your bitrate. And even that comes with a lot of trade offs, because that's just where live streaming starts.

<comment><USER18> I believe most of these benchmarks were set at a time when you simply couldn't run x265 on "slow" on any reasonable CPU if you ever wanted it to complete. But yes, I'd really like CPU benchmarkers to move to higher-quality presets for video encoding, because they do tend to have different kinds of performance curves.

Fun fact: There's no point in running x265 on the fastest presets unless you absolutely need to have HEVC; x264 on slow is faster _and_ gives better quality per bit. See the second graph on [https://blogs.gnome.org/rbultje/2015/09/28/vp9-encodingdecod...](https://blogs.gnome.org/rbultje/2015/09/28/vp9-encodingdecoding- performance-vs-hevch-264/) (a few years old, the situation is likely to look similar but not identical).

<comment><USER19> >(a few years old, the situation is likely to look similar but not identical).

x265 has made massive improvement over the years, 2015 x265 wasn't even considered good; despite all of its hype, or another way to think about it is how well x264 managed to squeeze every last bit of detail possible.

<comment><USER18> IIRC, I redid this graph in early 2019 (using Tears of Steel), and it looked pretty similar.

</comment></comment></comment></comment><comment><USER20> Unsure how to tag people like dang, but is it possible to change the link or the title? The link is for page 3 of the review, which is a broader discussion about multi-threading on Windows.

</comment><comment><USER21> 64 threads ought to be enough for anyone.

If I am investing USD 4000 on a CPU, I'd probably go for the EPYC part for 500 more and twice the memory bandwidth. It'd be interesting to run these benchmarks under perf to see how many L3 cache misses happen and how much they cost in cycles.

<comment><USER22> the Epyc also allows you to use more RAM... seems the Threadripper tops out at 256GB due to the memory type ([https://www.youtube.com/watch?v=1LaKH5etJoE](https://www.youtube.com/watch?v=1LaKH5etJoE)) but Epyc would allow 2TB...

<comment><USER23> There were rumors about TRX80 and WRX80 chipsets that raised the 256GB RAM limit to 2TB for Threadripper CPUs. Alas, they never went past the rumors stage.

<comment><USER24> They don't exist [0] and the chipset wouldn't really influence memory support since you have the IMC in the CPU.

[0] [https://www.anandtech.com/show/15359/trx80-and-wrx80-dont- ex...](https://www.anandtech.com/show/15359/trx80-and-wrx80-dont-exist- neither-does-the-intel-lga1159-socket)

</comment></comment></comment></comment><comment><USER25> [https://news.ycombinator.com/item?id=22266386](https://news.ycombinator.com/item?id=22266386)

</comment><comment><USER26> Reading this makes me mad that Python still hasn't sorted its business out with GIL.

<comment><USER14> Don't know why the downvotes; this limitation of Python is really hard to fathom. IIRC they had a project to remove it and it went into the weeds somehow (I think it made performance worse?)

<comment><USER27> Because e.g. nodejs has a GIL, too, and apparently no one thinks this is a problem.

For web applications one usually has a software chain like web server <-> wsgi server <-> dozens of python instances.

Standalone processes just implement threading, which also is fairly easy (as far as theading itself can be easy).

Scientific libraries like scipy can use parallel processes automatically in the background (using things like BLAS), as long as the data is modelled correctly.

<comment><USER26> I just gonna repost what I've written before about this before:

The current state of threading and parallel processing in Python is a joke. While they are still clinging to the GIL and single-core performance, the rest of the world is moving to 32 core (consumer) CPUs.

Python's performance, in general, is a crappy[1] and is beaten even by PHP these days. All the people that suggest relying on multiprocessing probably haven't done anything that's CPU and Memory intensive because if you have a code that operates on a "world-state" each new process will have to copy that from a parent. If the state takes ~10GB each process will multiply that.

Others keep suggesting Cython. Well, guess what? If I am required to use another programming language to use threads, I might as well go with Go/Rust/Java instead and save the trouble of dabbling with two languages.

So where does that leave (pure-)Python? It can only be used in I/O bound applications where the performance of the VM itself doesn't matter. So it's basically only used by web/desktop applications that CRUD the databases.

It's really amazing that the machine learning community has managed to hack around that with C-based libraries like SciPy and NumPy. However, my suggestion would be to drop GIL and copy the whatever model has been working for Go/Java/C#. If you can't drop GIL because some esoteric features depend on that, then drop them as well.

[1] [https://benchmarksgame- team.pages.debian.net/benchmarksgame/...](https://benchmarksgame- team.pages.debian.net/benchmarksgame/fastest/python.html)

<comment><USER28> Every single project which has tried to drop the GIL has failed in some way. It's not some "esoteric features", it's fundamentally a hard problem that implicates the entirety of the python object model, python C api, scoping, imports, and GC.

I think multi-interpreting is the way to go, but that still would require a framework for ensuring safe memory access.

Speaking of Go, I always thought it would be neat to write a python implementation in Go, but leverage Go's GC, and implement the 'go' keyword/function for easy parallelism. But you still have the problem of scoping and memory safety. Or similar idea but with Rust. Something tells me that isn't a trivial undertaking, especially if you want all the libraries, which is 75% the point of python.

</comment></comment></comment></comment></comment><comment><USER29> The easy solution is to run Linux.

<comment><USER30> Or FreeBSD. There have been some huge improvements to scalability of network, filesystems, and memory management recently.

<comment><USER31> Any details on that? We're spinning up a 48 core epyc soon on 12.1. The last "beefy" server we did was a 32 core intel on 11.x, and I'll be happy if these changes are in 12.1.

<comment><USER32> You want 13-current. A lot of the NUMA work that has been done is pretty invasive, and not suitable for backporting because it changes KBIs

<comment><USER30> Definitely. Some of the network changes (epoch(9), kind of like RCU) went into 12, IIRC, but you mostly want 13-CURRENT.

</comment></comment></comment></comment></comment><comment><USER33> Honestly. Windows is just a waste on that architecture as it stands. Run Linux as base OS and give 8 cores to the Windows VM should you have use for it.

</comment><comment><USER34> 288MB Cache. I wonder if we'll ever be given some control about how and what computations are cached. It seems like a lot of memory to leave to simple heuristics.

<comment><USER35> It's 32MB L3 per die and 512KB L2 per core, they sum them for marketing effect. Effectively one core can access "only" 32.5MB.

<comment><USER35> Errata: as on one die there are two CCXs, one core can access 16.5MB

</comment></comment></comment><comment><USER36> Now imagine a Beowulf cluster of these.

</comment><comment><USER37> This article is more about Windows 10 limitations than 3990K. Good read though.

</comment><comment><USER38> What is the latest on just turning of SMT/Hyperthreading? Then you don't run into the greater than 64 threads issue with this CPU? I remember there being a reason to turn it off unrelated to performance, but I do not remember if there was more than one reason [0].

[0] [https://marc.info/?l=openbsd- tech&m=153504937925732&w=2](https://marc.info/?l=openbsd- tech&m=153504937925732&w=2)

<comment><USER39> Or save $1990 and just buy the 3970X

<comment><USER40> The 3970X has half the threads because it has half the cores, not because SMT is disabled.

You may want to avoid the issue by giving up 10% if your performances, less so by giving up 50%.

<comment><USER41> 3970X also has much higher clock rates though! Might be a net win for some workloads.

<comment><USER38> Yes, but if you care about 64 threads without the possible side-channel issues that SMT currently/theoretically has, then you are back to the 3990X.

For what it is worth, I have an AMD Ryzen 2700X Eight-Core Processor that I got in 2018, and I keep SMT off. I do some light gaming with it, and I am happy. I did not notice a big drop in performance, but I did not truly measure the difference.

</comment></comment></comment></comment></comment><comment><USER42> Meanwhile, AMD's Navi doesnt have stable drivers...

</comment><comment><USER43> The article is more about a bug in Windows and it's scheduler than actual benchmarks.

<comment><USER44> To be fair, scheduler misfeatures are a whole lot more interesting than benchmarks that scale in expected ways.</comment></comment>


Show HN: Akiva – A simple NLP, question-answering artificial intelligence - <AUTHOR> https://github.com/thebigdb/akiva

<comment><USER2> It's a very MVP simple implementation that works well for most cases. Kudos.

That said, looking at the code, I'm not sure why you call it an AI when it is very rule-based so the code itself is not able to have any "intelligent" behavior when the input falls out of the predefined rules.

More importantly, as you seem to be the creator of the underlying BigDb project, is there any actual data in it past the precise examples given in your README?

[http://thebigdb.com/recent](http://thebigdb.com/recent) The only recent examples visible are about the weight and dimensions of the iPhone 5 vs Galaxy S4 vs Nexus 5, as in your NLP examples.

[http://thebigdb.com/random](http://thebigdb.com/random) Gives the same results, I expect random takes the whole DB as the sample set.

[http://thebigdb.com/search?q=everest](http://thebigdb.com/search?q=everest) No result found.

<comment><AUTHOR> Everything you said is very much correct. On the "AI" title, I know there is a long debate about what constitutes an AI and what doesn't, and I'm sure you're also aware of it, so I won't go there :)

There is no data in TheBigDB yet indeed, I've just (re)launched it as I'm releasing Akiva: you can take them as both proof-of-concept of each other, if that makes sense.

Obviously, the dataset in TheBigDB will grow with time, and the skills of Akiva will also.

Thanks for your questions :)

<comment><USER3> have you considered integrating with freebase or perhaps populating theBigDB from freebase?

[http://www.freebase.com/](http://www.freebase.com/)

<comment><AUTHOR> I'm not sure what's the licensing of what's in Freebase but I'll look into it, thanks!

<comment><USER4> It's under CC-BY ([http://creativecommons.org/licenses/by/2.5/](http://creativecommons.org/licenses/by/2.5/)) so it should be no problem as long as you give attribution.

</comment></comment></comment></comment></comment><comment><USER5> I think it is strange how the author of a cool tool like this seems to feel the need to justify their tool's existence in a world where new web-framework X is announced every day.

<comment><AUTHOR> haha, thank you :) Strange indeed...

</comment></comment><comment><USER6> Why don't you use an existing ontology/knowledge graph instead of building your own with thebigdb?

For example: [http://www.freebase.com/](http://www.freebase.com/)

<comment><AUTHOR> Because I believe the knowledge graph of Freebase is way heavier than what's needed, and unless you know exactly the type of what you're looking for, it would make a software like Akiva way more complicated to build, imho. (or I missed something)

<comment><USER7> Your project sounds _awesome_ , the NLP part seems to be working nicely, but I'm afraid it depends on the quality of the data source, which right now is empty (I only saw some facts about a few smartphones). I remember your announcement for TheBigDB [1], and thought it had some fundamental structural limitations as a fact database too.

Since ontology is a very very hard problem, and collecting a lot of facts even more so, I think you should look more carefully into using a structured DB like Freebase that has already figured it out.

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

</comment></comment></comment><comment><USER8> I like the idea, but unfortunately I only got results with the example questions. For instance:

> akiva ask "What's the weight of an iPhone 5s ?" 112 grams

is fine, but:

> akiva ask "What's the weight of an iPhone 5 ?" Sorry, Akiva can't answer > that question for now.

Or > akiva ask "What's the weight of a Nokia Lumia 920 ?" Sorry, Akiva can't answer that question for now.

<comment><USER9> Same here... I tried really different kinds of questions and couldn't get an answer.

      $ akiva ask "Is the empire states building higher than the eiffel tower ?"
      Sorry, Akiva can't answer that question for now.
      $ akiva ask "How far is the Earth from Mars?"
      Sorry, Akiva can't answer that question for now.
      $ akiva ask "How old was Bob Marley when he died?"
      Sorry, Akiva can't answer that question for now.
      $ akiva ask "What kind of music did Janis Joplin play?"
      Sorry, Akiva can't answer that question for now.
      $ akiva ask "What kind of questions can akiva answer?"
      Sorry, Akiva can't answer that question for now.

<comment><AUTHOR> See [https://news.ycombinator.com/item?id=7090514](https://news.ycombinator.com/item?id=7090514)

<comment><USER9> Thanks! I should have researched a little bit more before commenting.

</comment></comment></comment></comment><comment><USER10> I wish there would be a cleaner V2 version of megahal out there. I loved that thing but the last time I've implemented it into eggdrop (which is hopelessly outdated too) I was sweating blood and never wanted to touch it again ;)

</comment><comment><USER11> Very nice. I wonder, do you plan to couple this with any kind of speech recognition at any point, so we could have some kind of custom siri ?

<comment><AUTHOR> I do! I'm not sure how to do it "the right way" for now, but if I release some mobile or desktop app based on it, I'll make sure to work on that, thanks for the question!

</comment></comment><comment><USER12> This looks amazing, and I agree, you need to bootstrap theBigDB with more facts. Sources like freebase and perhaps DBPedia would help.

It would also be cool to layer on temporal facts too, like "What is the price of APPL today?" or "Is JT on tour?"

My initial statement was "Is Kevin Spacey in Austin Powers?" \- No results.

</comment><comment><USER13> As best I can tell this is more like an English-looking CFG with a simple attribute grammar. And the rules can be updated at runtime.

</comment><comment><USER14> this is interesting, but none of the questions i've asked seem to get answered, even after wording them well and picking easy questions..like 20 questions in a row</comment>


Google YOLO clickjacking (2018) - <AUTHOR> https://blog.innerht.ml/google-yolo/ <comment><USER2> > Update. Shortly after thie article was published, Google silently prevented > my domain from using the API

That will certainly make the problem go away Google ;)

<comment><USER3> Security reports at google are the same as any user interaction: they blow you off until you prove your point on Hacker News

</comment></comment><comment><USER4> Discussed at the time: [https://news.ycombinator.com/item?id=17044518](https://news.ycombinator.com/item?id=17044518)

</comment><comment><USER5> Hey HN! I really enjoy this type of App Security, anyone know any blogs devoted to this? Or any other places to learn more tricks like this?

<comment><USER6> Aside from Filedescriptor's work, here are some of my favourite blogs in the web application security space (not an exhaustive list):

\- [https://blog.orange.tw/](https://blog.orange.tw/)

\- [https://ngailong.wordpress.com/](https://ngailong.wordpress.com/)

\- [https://whitton.io/](https://whitton.io/)

\- [https://sakurity.com/blog](https://sakurity.com/blog)

\- [https://homakov.blogspot.com/](https://homakov.blogspot.com/)

\- [https://buer.haus/](https://buer.haus/)

\- [https://philippeharewood.com/](https://philippeharewood.com/)

\- [https://portswigger.net/research](https://portswigger.net/research)

\- [https://gerbenjavado.com/](https://gerbenjavado.com/)

\- [https://medium.com/@intideceukelaire](https://medium.com/@intideceukelaire)

\- [https://samcurry.net/](https://samcurry.net/)

\- [https://stephensclafani.com/](https://stephensclafani.com/)

\- [https://www.josipfranjkovic.com/](https://www.josipfranjkovic.com/)

\- [https://www.arneswinnen.net/](https://www.arneswinnen.net/)

\- [https://blog.assetnote.io/](https://blog.assetnote.io/)

\- [https://firstname.lastname@example.com](https://firstname.lastname@example.com)

\- [https://cablej.io/](https://cablej.io/)

\- [https://jonbottarini.com/](https://jonbottarini.com/)

\- [https://www.corben.io/](https://www.corben.io/)

There is also this massive list of write-ups that might be of interest to you: [https://github.com/ngalongc/bug-bounty- reference](https://github.com/ngalongc/bug-bounty-reference).

Shameless plug: I write about web application security at [https://edoverflow.com/](https://edoverflow.com/).

<comment><USER7> You may want to edit your comment so the links are not inside a code block (and thus clickable). Thanks.

<comment><USER6> Updated accordingly. :)

</comment></comment></comment></comment><comment><USER8> Obviously related to the Facebook comment jacking post from yesterday: [https://news.ycombinator.com/item?id=22176180](https://news.ycombinator.com/item?id=22176180)

</comment><comment><USER9> I feel like the cookie button is shady AF

<comment><USER10> This is definitely a grey hat blog post.</comment></comment>


Dart enters top 20 on the TIOBE index - <AUTHOR> http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html <comment><USER2> Interesting, since Dart wasn't really on my radar. Does anyone know if it can be embedded easily in other things? EG: If I'm building a server side Go app, could I embed the Dart Virtual Machine in it to run some code? (say I want to allow runtime execution of untrusted code from a client.)

Started digging in on the dart website, but since Browsers are such a difficult, complicated thing, I'm not sure the VM meant for browsers will be appropriate for my application (e.g.: many assumptions are made during runtime might be a problem if there is no webpage.)

<comment><USER3> Dart has a standalone VM very much like node.js. You can embed the VM with the embedder API, or build a native extension to the VM (the API might be the same actually, I've never used it). Another approach would be to use sockets to communicate between your Go process and Dart process. This would work well in a Docker setup.

</comment></comment><comment><USER2> Wow, Swift comes in at #19. Pretty spectacular for a language that's only a few months old.</comment>


HiddenWasp Malware Stings Targeted Linux Systems - <AUTHOR> https://www.intezer.com/blog-hiddenwasp-malware-targeting-linux-systems/ <comment><USER2> I work on an email startup in private beta.

While developing our antivirus system, I was surprised to find that most email providers do not block ZIP attachments containing SH shell script files, nor ZIP attachments containing extension-less files with the executable bit set, nor ZIP attachments containing symlink traversal paths, nor any attachments which start with the shebang "#!" shell script signature, nor any which start with ELF or MACH O signatures.

In addition, for a recent sample of 15,000 attachments, we found 700 viruses, of which less than 50% were detected by the top 30 engines on VirusTotal. In particular, ClamAV, which is used by most Linux systems, had a less than 1% success rate. Ironically, most email providers know to block EXE attachments, even in ZIP attachments, but now its Linux and Mac users that are being left behind.

<comment><USER3> Is it really that strange? Windows email clients tend to run code in attachments just by clicking them (or, in some cases, just viewing them). So the risk factor in letting these emails in is quite large.

That's not as common with other platforms. Even the common GUI platforms on Linux would require the user to manually save the file and explicitly marking the file as executable. Nobody would conflate user friendliness with the ease of running untrusted code.

Defaults does make a difference. Even as these users are "left behind" in email filtering, we're seeing limited effects of malware with the more popular Linux platforms such as Android and the various desktops.

<comment><USER4> > _Even the common GUI platforms on Linux would require the user to manually > save the file and explicitly marking the file as executable._

If someone can find a way to drop a text file in my "~/.config/autostart" dir, next time I log in my Gnome desktop will happily execute the command present in the "Exec" line and it doesn't require the execute bit.

I think something similar could be done using "~/.local/share/applications", overriding an installed application next time that application is launched, but it probably would show two icons; the autostart at the moment is more stealth.

<comment><USER5> I think the point is -- do to that you would have to have the email client do it.

While once it is out side the control of the email client -- as the quote suggest, it's up to the user -- not the email client to do the dirty work.

The notion is that on windows, even a all knowing user who knew the email contained a virus after viewing it would be helpless as the email client already did the steps required to make the virus active. Where as on Linux, the user would still need to be the facilitator -- not the email client blindly destroying your system.

As a example. You can email me virus all day long, and it is not likely I will get infected because of how my email client handles files and attachments. If I were to switch to a windows based system using a windows client then all bets are off.

tl;dr your exception would mean the bad thing we are talking about already happened. If they could get your email client to write to that file they probably already had enough control to do whatever you are suggesting they put in autostart.

<comment><USER4> > _The notion is that on windows, even a all knowing user who knew the email > contained a virus after viewing it would be helpless as the email client > already did the steps required to make the virus active. Where as on Linux, > the user would still need to be the facilitator -- not the email client > blindly destroying your system._

OK, I see your point, normal usage against exploits, and usually security goes against convenience.

I don't know if I'm overly paranoid, but in this specific case I've started long time ago to keep my autostart dir read only. At the same time I've dirs in my command path that are writable by my user (but those need the execute bit tho)...

<comment><USER2> Keeping your autostart directory read-only is a great idea.

After that, a ZIP symlink traversal could still drop a script in your command path directories that are writable by your user. The execute bit is not a hurdle, unzip utilities will typically preserve the execute bit on Unix systems.

ZIP directory traversals are as old as the hills, yet they are still a thing: [https://snyk.io/research/zip-slip- vulnerability](https://snyk.io/research/zip-slip-vulnerability).

ZIP symlink traversals are even more powerful, yet they are hardly spoken of.

Ideally, you want your email provider to be blocking ZIP attachments with symlink traversals or execute bits (but I am not aware of any which do).

</comment></comment></comment></comment></comment></comment><comment><USER6> Antivirus is always a "closing the barn door after the horse has left"... it's completely reactionary/inadequate as it almost always relies on other people reporting a problem, so it's always behind and a Tragedy of the Commons in that very little of actual malware is ever reported. HIDS isn't much better. NIDS is slightly more useful as it's independent of the endpoint, but can also be evaded to a degree. Both HIDS/NIDS aren't great on their own because they're really the last lines of defense to tell you you're pwned.

In previous life, I inherited a bunch of Win2k database servers that were running on unfiltered public IPs (yuck!).. and several of them had undetectable, stealth rootkit malware that wasn't economically-feasible to remove (Microsoft and Winternals were in the loop).. and because they "couldn't be reimagined," network rules were used to disconnect it from bot operations. Yuck. Don't put unsecured or fragile anything on public IPs because odds are they will be pwnes with variants of malware no AV has ever seen, and it will be a persistent threat (APT) that won't be evident until later.

The best defenses include, but aren't limited to:

\- Never run untrusted code.

\- Never allow untrusted write and execute.

\- Don't do email / browser operations with admin credentials. Do it in a VM maybe or a separate machine as a normal, unprivileged user is best.

\- Least privilege, all the things.

\- Verify cryptographic signatures enforcing chain-/web-of-trust of source/binaries/packages.

\- Holistic defense-in-depth.

\- Minimalism/minimal attack surfaces.

\- Don't run fragile, unconfigured OSes on unfiltered public IP's. (Please.)

</comment><comment><USER7> Can anyone summarize what the attack vector is? Fake repositories? Bad maintainers? Fake tutorials?

<comment><USER2> A shell script with an SH extension, possibly (my guess) delivered as an email attachment.

The article does not provide details, but does list a few steps to the exploit, the first being Linux users (as opposed to Linux servers) with poor antivirus.

For example, ZIP email attachments can contain extension-less files with the executable bit set. This would be one easy way of getting the initial payload bootstrapped.

</comment></comment><comment><USER8> Well that is scary. What anti virus / security tools do others on here run. On Linux I run nothing. I'm concerned that this might not be okay any more.

<comment><USER9> > The malware is still active and has a zero-detection rate in all major anti- > virus systems.

Anti virus wouldn't really help in this case. I should also point out that it appears that HiddenWasp is targeting systems that are already compromised in some form.

The "achilles heel" of these sorts of CnC attacks tends to be, and is apparently so in this case, that they do need to phone home.

In this case, the IP addresses are known, and blackholing them with your firewall (try something like ufw [1], if you don't have one), or your hosts file, is enough. Using something like pi-hole you can also deploy these protections for every device on your network.

There are quite a few hosts lists maintained out in the wild [0], and tools like fail2ban to protect against brute-force attacks.

But, as usual, by far and away the safest way to protect your system is to not run untrusted code. You probably have a package manager, going outside it tends to be less safe.

[0] For example: [https://github.com/mitchellkrogza/Ultimate.Hosts.Blacklist](https://github.com/mitchellkrogza/Ultimate.Hosts.Blacklist)

[1] [https://wiki.archlinux.org/index.php/Uncomplicated_Firewall#...](https://wiki.archlinux.org/index.php/Uncomplicated_Firewall#Black_listing_IP_addresses)

<comment><USER10> Even using the official repos doesn't guarantee you to be safe. The project developer might have had their development machine hacked and/or their source repository hacked and malicious code inserted. So when Arch / Ubuntu / etc package maintainers pull the latest source, unless they're doing very thorough diffs of each source file, they could easily miss the injected malicious code and subsequently repackage that for the distro. What has actually happened before.

Also if your Linux / UNIX machine has an addressable WAN IP then you have all the usual risks of involved with hosting services on the public internet. A few years ago there was a spate of compromised web servers with the malware running as Apache modules.

So there aren't really any guarantees when running Linux.

</comment></comment></comment><comment><USER11> The article says to examine 'ld.so' files, but I don't remember the interpreter being named 'ld.so' in remotely recent history.

Perhaps it's a Debianism, but it's been '/lib/ld-linux.so.$ver' for ages:

      $ readelf -p .rodata /lib/ld-linux.so.2  | grep '/etc/ld\.so\.preload'
        [  2d9c]  /etc/ld.so.preload

<comment><USER12> I don't think the article says this?

> The malware will attempt to find the dynamic linker binary within these > paths. The dynamic linker filename is usually prefixed with ld-<version > number>.

<comment><USER11> 'In addition, in order to check if your system is infected, you can search for "ld.so" files — if any of the files do not contain the string '/etc/ld.so.preload', your system may be compromised.'

<comment><USER12> I think they're assuming that readers will excuse them for a bit of sloppiness for brevity's sake.

</comment></comment></comment></comment><comment><USER13> Confused by:

VER=`echo $(uname -a)`

Versus just:

VER=$(uname -a)

or

VER=`uname -a`

<comment><USER12> People writing rootkits are not necessarily experts in shell scripting :)

<comment><USER14> Look no further than the chain of xors that amount to ... ^ 0x22. These people really don't know much.

ISTM, the only interesting thing is the "user-mode rootkit" mentioned in the beginning. Anything installed after that is moot and completely irrelevant. If anyone gets root on your machine, it's already game over.

However, if your attack vector is getting me to execute a random .sh from you, then I'll roll my eyes and get on with life.

<comment><USER2> If your email firewall allows random .sh attachments, then you are vulnerable to at least two attacks:

1\. Someone targets you specifically, knowing you are a software developer, by impersonating a trusted third-party contact and sending you a ZIP attachment with the contents of an open source project you are known to work on. ZIP attachments preserve the executable bit, and you wouldn't see any .sh extension because it would be an extension-less shell script. It would probably just look like a binary you are used to clicking.

2\. Someone impersonates a trusted third-party contact, sending you a ZIP attachment with a symlink traversal to overwrite your .bashrc as soon as you unzip the attachment with a double-click, or as soon as unpatched middleware unzips it for you.

</comment></comment></comment></comment><comment><USER15> Why would you bother with four constant XORs in a row with no intervening operations.

<comment><USER16> There is subtraction between second and third xor.

But xor 1-2 can be combined, so does xor 3-4.

<comment><USER12> Presumably they were talking about this: [https://github.com/jgamblin/Mirai- Source-Code/blob/master/mi...](https://github.com/jgamblin/Mirai-Source- Code/blob/master/mirai/bot/scanner.c#L975)</comment></comment></comment>


The average person's reading speed is slower than commonly thought - <AUTHOR> https://digest.bps.org.uk/2019/06/13/most-comprehensive-review-to-date-suggests-the-average-persons-reading-speed-is-slower-than-commonly-thought/ <comment><AUTHOR> The original article is available at: [https://psyarxiv.com/xynwg/](https://psyarxiv.com/xynwg/) (note that it's a preprint, and hasn't yet been subjected to peer review)

Abstract:

> Based on the analysis of 190 studies (17,887 participants), we estimate that > the average silent reading rate for adults in English is 238 word per minute > (wpm) for non-fiction and 260 wpm for fiction. The difference can be > predicted by the length of the words, with longer words in non-fiction than > in fiction. The estimates are lower than the numbers often cited in > scientific and popular writings. The reasons for the overestimates are > reviewed. Reading rates are lower for children, old adults, and readers with > English as second language. The reading rates are in line with maximum > listening speed and do not require the assumption of reading-specific > language processing. The average oral reading rate (based on 77 studies and > 5,965 participants) is 183 wpm. Within each group/task there are reliable > individual differences, which are not yet fully understood. For silent > reading of English fiction most adults fall in the range of 175 to 300 wpm; > for fiction the range is 200 to 320 wpm. Reading rates in other languages > can be predicted reasonably well be taking into account the number of words > these languages require to convey the same message as in English.

<comment><USER2> I think words per minutes seems like a highly problematic metric, for a variety of statistical logics reasons.

Instead, I think we should try to measure multi-word expressions (MWEs) per second, and consider special characters (including spaces!) as words.

Why? Well, to start with, due to us already knowing about the Auerbach-Estoup- Yule-Zipf-Pareto-Mandelbrot-Simon-Price Law(s) only holding for multi-word expressions, not for phonemes, words, characters or syllables. Can't dig up the papers on that right now, tho.

(Personally however, I suspect that MWEs per second ain't the be all, end all, of reading speed, either. It ignores concepts like Paronomasia & Polysemy, as well as even more obscure things, like Polyphonemes. I just so far lack sufficient knowing of any possibly plausible hyperparameterizations which'd generally let one compile some metric for further complexity reductions.)

I'd elaborate on /how/ that (partially) answers the "why", but I lack the time to do so at the moment.

</comment></comment><comment><USER3> "You should take just under two-and-a-half minutes to finish reading this blog post."

Does that include the time taken up by dismissing the "subscribe!" pop-up, and figuring out where you were when you got distracted by that?

<comment><USER4> Didn't see that at all (I'm a user of the NoScript browser extension that allows JS only from explicitly whitelisted sites).

I went through the content in about 30 seconds. What I remember:

1\. "People read at closer to 240 wpm rather than 300 as was previously thought."

2\. This was from a meta-study gathered over various studies spanning the twentieth century, in various languages based on the Roman alphabet.

3\. There appears to be some variation in reading speed dependent on language.

<comment><USER5> I was just under two minutes and I'd have added the following by memory:

\- Spanish readers are faster than English

\- A key reason for the discrepancy between previously measured reading speeds and the new results is recreational vs test-style assessment. Basically it sounds like people read faster when they are being assessed on their reading.

\- It should take about 2 minutes and 30 seconds to finish reading the article.

And then doing a 30 second skim a second time I would have added the following:

\- Reading speed depends on if the text is long or short. Shorter text can be much slower.

\- Reading speed declines with age.

A third skim and I'd add:

\- this is important for assessors, who shouldn't expect everyone to read at 300wpm.

Looking back and comparing my notes across the three reads I actually remember recognizing each one of those points the first time through, but I didn't reliably remember them all after each run. I almost think this might have more to do with the way that memory works than the way reading works.

</comment></comment></comment><comment><USER6> I _can_ read blazingly fast. I used to read sometimes two books in a day, and I destroyed the fiction section in the library of every school I went to.

But now I mostly read non-fiction, and in light of the fact that I remember maybe 8% in detail of the thousands of books I've read, I like to take things very slowly. I'll read a paragraph, stop, think about what I just read, and sometimes read it again just to help things stick.

I break up long articles into multiple sessions, and after each session I try to recall in detail what I just read, and try to form insights and draw connections which help to cement the data into my brain.

If I'm skimming for information, sure, I'll just churn over the text as fast as possible-- But these days I'm reading for knowledge's sake and not escapism. And even when I read fiction, I like to exercise my visual memory and try to imagine every last detail while I read at a leisurely pace.

I see nothing wrong with this approach and thusly I think WPM outside of a desk job is meaningless and not some number corresponding to intelligence that we should be trying to maximize.

<comment><USER7> > _And even when I read fiction, I like to exercise my visual memory and try > to imagine every last detail while I read at a leisurely pace._

You just made me realize that people can and do read fiction without visualizing the majority of things that happen in a story. That suddenly explains so much as to how some people read fiction so quickly.

<comment><USER6> I used to visualize basic whisps of the scenes, what each character looked and sounded like, I guess I've always liked to visualize while reading... in fact I can still very lucidly recall tons of visualizations from more than a decade and a half ago as if they were scenes in a movie, a real testament to the storytelling ability of those authors.

But now I try to spend more time than before. I try to really soak in every paragraph. Whereas in school I took pride in being the most prolific reader around, there isn't much room in my adult life for such competitive, external motivations. Now the stimulation I receive from art and literature stems from my appreciation of the artist's prowess.

</comment></comment></comment><comment><USER8> I read quickly and have the same retention rate (or better) than most people I've interacted with.

I don't do any of the tricky stuff that 'speed readers' do.

The only thing I'm aware is different is I don't hear the words in my head when I read as I'm often 'reading' a chunk of 3-4 words at once.

I thought this was completely normal til I spoke to an ex about it when she commented I demolished books.

<comment><USER9> I often hear people boasting about their "speed reading" skills and then I ask them what sort of books they read, turns out speed reading and having "good retention rate" is easy if you're reading crap. I could also speed read Clive Cussler, Stephen King, and JK Rowling.

I love Philosophy and classic literature and I've yet to meet anyone that's managed to speed read Proust's "In Search of Lost Time", and then tell give me a detailed description of the plot, themes, artistic merit, and so on. Similarly with books like Ulysses. There's no possible way to speed read that book because it's so rich with allusions, references to religion, art, mythology, and philosophy. If you tried to "speed read" it, you would be missing half the point of reading it in the first place.

Reading great books isn't about numbers, you don't get rewarded for how many classics you read in a year. Reading great books is about slowly absorbing all the riches inside, something that just cannot happen if you're rushing. I've read The Brothers Karamazov and The Magic Mountain 4 or 5 times and each time I learn something new and gain a deeper understanding of psychology and life. I find it more rewarding to read and re-read the classics slowly, writing notes, using a critical guide (or book of companion essays), than smashing through as many crappy novels or modern popular non-fiction books (The Power of Now of any of Malcom Gladwells books are typical fodder for todays readers).

<comment><USER10> This is legitimately the most pretentious HN comment I've ever read, and that's a very high bar.

I too dismiss things that people enjoy as "crap" because I have such a gigantic brain from reading philosophy and looking down everyone else, and belittle them for believing that they read and understand fast in the wrong type of book.

<comment><USER9> I actually read and enjoy Stephen King and JK Rowling, but I don't tell myself it's fine art and I'm super "smart" for speed reading it. I don't try and speed read anything because I don't think it's useful or meaningful.

I'm trying to rally against the crowd you always find in any thread on speed- reading who love to talk about how great they are for reading 10 books a day and gaining nothing from it.

</comment></comment></comment></comment><comment><USER11> I never took a speed reading class, but I do know how to recognize when a author -- of any book -- starts blathering on or tries to motivate. I can read whole pages in an instant in those circumstances.

<comment><USER12> In fiction when an author has an entire page of technobabble I just subconsciously skip the entire thing and only go back to read if the rest doesn't make sense.

<comment><USER13> There worst scifi books are the post famous price ones.

The author has a contract, all competition has been eternally removed from his mindset. He made it. Finally he can, drone on and on about some obscure infodump he found.

Or even worser, show it to those upper class snobs & critic, who claimed that writing good characters and prose is as far out of the league for sciFi, as if it where burried at a rainbows end.

</comment></comment></comment><comment><USER14> I have always been a slow reader. My younger siblings would often finish books or articles a lot faster than me. Turns out, I'm a more careful reader than them - I would spot spelling mistakes in text where they would miss them. They'd also misinterpret texts due to speed, where I wouldn't. Not sure what's better, but I do personally prefer the slow and considered approach to reading.

</comment><comment><USER15> Reading speed is highly correlated with the difficulty of the material. And even this factor varies from person to person because of different backgrounds and interests. For me reading speed and a quiz on the material afterwards are useless indicators of someone's overall speed. Every person should read as fast or as slow to full grasp the material.

</comment><comment><USER16> Kind of a tangent, but I've had fun experimenting with Rapid Serial Visual Presentation (RSVP), a technique where words are displayed one-at-a-time at the same location and you don't move your eyes.

With a little practice I got to the point where the reading material was entering my brain _faster_ than I can normally think.

Apologies for the link, wikipedia article on RSVP is garbage (rare, but it happens.)

[https://www.smithsonianmag.com/smart-news/these-apps- could-t...](https://www.smithsonianmag.com/smart-news/these-apps-could-triple- your-reading-speed-180949945/)

</comment><comment><USER17> > _Although the number of studies involving non-English languages was too > small to draw any firm conclusions, there seemed to be a hint of differences > between languages. For example, reading rate in the five Spanish studies was > considerably faster than the average, at 278 wpm, while the average rate for > the 144 English-only studies was 236 wpm._

It really doesn't make sense to compare wpm across languages.

</comment><comment><USER18> My issue is concentration. Once an article looses my interest I find it very difficult to keep reading without skipping chunks. Do others find it easy to read things that they aren't interested in but have to read for work etc.? As someone who used to have to read a lot of academic papers for my PhD I found my mind wandering a lot and often impossible to make it through some content.

<comment><USER19> I think everyone experiences this to some degree, especially when reading technical stuff, you kinda take in what you are interested in/ think will be useful and skim over the rest.

</comment></comment><comment><USER20> I wonder if reading rates have simply been declining in recent years because of phones, computers, TV, etc.

<comment><USER21> Alternatively, they could be increasing it. Computers have been exposing people to a lot more text in the modern technological era than they would've seen prior to it.

<comment><USER19> yes but how many people read whole articles rather than short bursts of text like comments, tweets, statuses, emails etc...

</comment></comment></comment><comment><USER19> I kinda read slowly but once i've read something i'll remember the important parts for a long time. When i read, my mind converts the words into a sort of movie, maybe this process isn't conducive to speed reading.

</comment><comment><USER22> article: normal was thought to be 300wpm, meta analysis of new study says it's 238wpm, also speed varies between languages.

Never got tested for reading speed in school like the article says some schools do. That's good for me as I would have failed the 300wpm mark.

Tried speed reading software in high school and college, my normal speed is around 150-200wpm. Even with faster skimming sessions it never got over 450wpm and reverts back to my normal range when not using software. Learned to be okay with it as it seems my comprehension / memory were optimal at my normal range.

</comment><comment><USER23> It's not a race.

</comment><comment><USER24> Most people read VERY slowly, because they were taught to do so (at school)!

That's something that makes me angry, because reading fast is a HUGE advantage in every setting (even taking into account the speed variability, depending on the topic).

I'm a very fast reader. To give you an example, I can (easily) read the Hobbit and the Lord of the Rings in english during during the weekend (2 days), and english is not my first language. In comparison, my brother, who has a LOT in common with me (including education level, and going to the same school as a child), reads pretty slowly and would never be able to do that. My dad and others members of the family are also very fast. BUT, we all learnt by ourselves: basically, we -somehow- managed to NOT learn the WRONG way that the teachers were teaching us (mostly: by "talking in our head when reading"). My mom told me that as soon as I started reading I was very fast.

To me, french lessons (middle-school, early 80s) were _torture_ because of that: the teacher assumed that we read slowly, and we would spend hours while a student was reading out loud; myself I was already 3 chapters later (because I was reading silent during his/her loud reading, I simply COULD NOT read that slow!). When we were assigned a new book (usually a couple hundred of pages), I read it in an hour. But the teacher did NOT understand that there were such huge differences between students. It was painful! In the end, my conclusion is that (because of stupidity) reading fast was de facto discouraged. :-((

I forgot to mention that I'm NOT talking about skimming (reading in diagonal with a severe -and acceptable- loss of understanding), when I skim I'm up to 10 times faster. I'm talking reading with almost total comprehension (barring remembering unimportant details like "the color of the cape of Frodo when he left the Shire", or whatnot).

Of course, it must be said that reading speed is a _meaningless_ concept by itself.

Your speed will (obviously) vary A LOT depending on the _context_: are your studying? Trying to memorize? Reading for leisure? Reading in a foreign language? Tired? What is the text's complexity/level? What is your education level? Etc.

Average speed does NOT exist without context. And most articles on the subject fail to put that context into account, it's even worse in the comments...

=> Of course, this article (and the study) detail the importance of that context.

So, every time I read an article about "reading speed", I know that it's going to be painful in the comments, because people who comment -almost- NEVER take the context into account.

BTW, one of the most infuriating things EVER is that in comments, you ALWAYS have a few people with an elitist attitude who raise the "but you are not appreciating the text if you read too fast", they fail to understand that I don't read poetry like a technical book like a children book, etc. Then you have the "you CANNOT understand if you read fast" crowd, because they don't know what is possible, they assume that their speed is "normal", when it's NOT, they cannot understand that they have been taught to read slowly...

Yep, that topic is one of my pet peeves ^^

<comment><USER25> Assuming the LotR audio book is 45 hours you must be reading twice as fast to finish it in two long days at the weekend. Sure, I could read it that fast - meaning that mechanically I could probably decode the text as if the tape was double speed - but it would be a miserable experience because I would have no time to contemplate what was going on, to visualize events, to think back to previous passages, and so forth. It would be like watching a movie at double speed - we can all do it, and legitimately say we "watched" the movie, but it wouldn't give most of us pleasure.

<comment><USER26> I think this is exactly the point of people having different reading speeds, though. What is uncomfortably fast for one person is normal speed for someone else, including considering all of the implications of each sentence they're reading. I don't know that I could read the LoTR in two days, but I do know that the pace of audio books is painfully slow for me. My natural speed would be substantially faster than the audio book and I wouldn't be racing through at an unpleasant pace.

And I believe what the parent was trying to say was that we've been conditioned to believe that a certain speed is normal, when perhaps most of us are capable of reading (and fully comprehending) at a much higher speed, though I don't know enough to have an opinion on that.

<comment><USER25> As an independent data point, consider the pace that someone might tell you a story that they know by heart (ie, which they aren't reading from text). Perhaps a storyteller or a actors monologue. In my experience that speed would be much the same speed as if they were reading the book to you, or reading it to themselves. That suggests to me that there is a natural speed to fully absorb a narrative.

Non fiction may be different. Most times I read that to absorb the content rather then for pleasure, and often it doesn't require deep introspection during the process. It is limited only by the physical process and the intellectual decoding speed. In those cases I read very fast. I typically am continually and quickly scrolling a newspaper story on my phone, reading at least twice as fast as fiction.

<comment><USER26> Yeah I can definitely see that. I may just be weird. A lot of people in the comments here are talking about not subvocalizing to read faster, and I have never really worked on doing that, but according to the couple possibly unreliable reading speed tests I've taken, I read really fast, despite subvocalizing. So perhaps as long as I subvocalize, I can fully absorb the narrative? I also know that I can read slightly faster when I try not to subvocalize, but I'm not very good at it and I would never try to read a novel that way because I feel like THAT would destroy the narrative, at least for me.</comment></comment></comment></comment></comment>


RescueTime (YC 08) Data: Are Men more Productive than Women?  - <AUTHOR> http://blog.rescuetime.com/2010/05/04/startling-data-are-men-32-more-productive-than-women/ <comment><USER3> Lies damn lies and statistics.

1) Does it surprise anyone that they have 5x as many men as women as users? I wonder if you broke down by occupation what percentage of their users are software developers and engineers compared to others?

2) It's not a random sample. While they say _"The data for this report was compiled from 8,000 randomly selected men and women"_ , it is not of all people, it is of their users. Those are two vastly different things.

3) "All this adds up to huge differences in the amount of knowledge work men get done compared to women. Our data shows women only work 76% of the time that men do. Interestingly, the National Committee on Pay Equity found that women earn 77% of what their male counter parts do." is one of the dumbest comments I have ever seen in my life.

THEIR TOOL DOESN'T CATCH ALL WORK. I stopped using it because it is utterly useless if you step away from the computer and are productive in that time. They are saying "Our data shows women only work 76% of the time that men do. [in front of computers]" Dropping out the in front of computers part is huge. Is the President of the United States a knowledge worker? Because he doesn't have a computer on his desk and therefore would be 0% as productive as someone doing data entry according to this methodology.

For that matter, me sitting in front of my computer all day with Eclipse open (no matter how much I actually commit) is more productive than my dad, a CEO, who spends a lot of his time with a pad of paper out talking to people. Hmmmmmm.

I understand that this tool has its place, but to say something so outrageously false really casts the company as a whole in a bad light. Blogging this was poor judgement. At best it is just some dumb people who don't understand data, at worst it is offensive.

<comment><AUTHOR> I think you should re-read the post. The phrase "on his/her/their computers" is repeated 4 times in the (fairly short) post. I think it's pretty clear that this doesn't apply when comparing a pad/paper CEO and an engineer. And we very purposefully didn't draw any conclusions (though we did admittedly ask leading questions to fuel the conversation!).

We say a few times in the comments that this could well be a reflection of the types of jobs that the 4000 women have compared to the 4000 men-- they may have more social jobs or more "afk" jobs. It'd be an interesting followup to grab 1000 female engineers and 1000 man engineers to see if the differences hold up. I don't know if it will, but what if it did? Would it be so horrible if women were less suited for multitasking and knowledge work? Because they sure as heck are better at a lot of other things. They're, on average, smarter than men. They have better reflexes. Check out "Is there anything good about men" - great essay: <http://denisdutton.com/baumeister.htm>

If they WERE less suited for it, it would be interesting to see how much culture and education influenced their suitability. i.e. Does the difference fade away if you correct for educational differences, etc.

At the end of the day, it's just an interesting chunk of from a single web service that has a very strong bias towards geeky users.

<comment><USER3> At the end of the day, you flung up some crap on your company's offical blog that is both horribly misinformed from a statistical perspective and about the subject you are posting on.

Is that professional? Is that good for your company? If I were an investor I'd be PISSED. If I hadn't canned my account to your site about 6 weeks after I made it (cool tool by the way, just missed too much of my work since I don't spend all day on my computer), I'd be canceling it today. And I sure as hell won't ever be trying it again. And I'll specifically be recommending against it.

At my startup we had a discussion about using data from our users to draw attention the way you are trying to here (and Mint.com has very successfully done in the past as just one example). The problem is you have to recognize where the mine fields are.

Replace every single place you used the word "women" and replace it with "black people" and see if it is offensive to you yet.

<comment><AUTHOR> I'm sorry that you're angry.

For what it's worth, we worked pretty hard to make this as statistically solid as we could with the dataset that we had. The subject we're posting on is "How 4,000 men differ from 4,000 women in RescueTime". While the data might lead to some interesting questions, I don't think anyone would assume that this is necessarily a reflection of a broader population (any more than Mint's data was).

I think your "black people" example is interesting. If we were comparing designers to developers, would you be so incensed? Yours is literally the first actually angry response all day. Is it possible that you're overreacting?

In terms of business effect, signups today have been abnormally high and cancellations have been slightly to the low side.

It was meant to be provocative, but so far this hasn't ended up being a mine field. Again, sorry that we've upset you.

<comment><USER4> I have to agree that the post wasn't written very sensitively.

Here are the following red flag passages, for me, at least:

"From what I can tell, the 23rd chromosome has a pretty amazing impact on the way people use computers." -Drawing a conclusion from data you admit has large sampling issues.

"Women spend more time socializing and shopping" \- You did not mention any comparative "frivolous" activities that men might take part in more than women; say, gaming.

"Evidently, there's a reason they are called "man" hours." - Using a limited data set to large conclusions about female working habits in all contexts

Generally, the whole thing was both hyperbolic and quite inflammatory.

<comment><USER5> The only part I cringed on was the "man hours" line. Just does not work in text.

</comment></comment></comment></comment></comment></comment><comment><USER6> Given that people choose to install this because they think they have a problem, I'd be curious how much selection bias there is in their sample set.

<comment><USER7> Yes, it seems quite plausible that RescueTime is best known among technology types, who tend to be male.

<comment><AUTHOR> I can tell you that's not the case for THIS particular data set. There was data from 4,000 men and 4,000 women, randomly selected.

But yeah, we do have a 5 to 1 male to female ratio and a geekier than average audience.

<comment><USER8> Sampling from biased populations does not remove bias.

<comment><AUTHOR> He said that our population tended to be male, I agreed and said that we selected an equal # of men/women. I'm not a statistics god, but doesn't that account for that particular bias? There are certainly others-- we'd be the last people to say that this represents a perfect cross-section of society.

Given that we selected 4,000 man and 4,000 women (randomly), how does the preponderance of men in our broader dataset effect this particular analysis?

Sorry if I'm being obtuse-- I didn't do the actual analysis and I'm really pretty rusty on my stats.

<comment><USER3> My god, you are the one who wrote this and you don't understand why your sample is so biased? No wonder it is so horrible.

How many teachers are in your sample? How many nurses? (extremely few - <USER2> would the tool capture that?)

Or more insiduously compare the number of engineers to the number of people in marketing. Both are "knowledge workers", but they have a very different gender breakdown. And they also have a very different day. Someone in engineering is on their computer all day, someone in marketing or sales probably not. If you are making sales calls all day instead of looking at an IDE, you can be vastly more _productive_ than an engineer staring at a blank screen, but that doesn't show up in RescueTime at all. It's one thing one you are on a team and can account for that, it is another when you make a generalization about the population.

All of your data can be explained with other rational besides "men are more productive than women". Your company approaches the world from the view of engineers to begin with, and then slaps that bias on top of a faulty set of data. You should be careful with this or you are going to have NOW breathing down your neck (I guess all press is good press, but do you really want to make your product piss of women to that extent?).

<comment><USER9> Read what he wrote not what you think he wrote.

He said picking an even sample of male and female removes the male/female bias, but only that bias.

Edit: Granted, that's not strictly sufficient because the human population is not 50:50 M/F, but that's a side issue.

<comment><USER10> I think you are missing krschultz's point. There is probably an interaction effect between occupation and gender. Sampling equally from each gender doesn't necessarily remove gender bias.

<comment><USER9> I think your both (+the people that up voted you) are confusing occupation bias with gender bias.

AKA, if the gender bias was caused by an occupation bias fixing the gender bias does not fix the occupation bias.

<comment><USER10> No offense, but you are repeating exactly what I said. It's likely that gender and occupation are not independent variables.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> Do you have an embedded economist? I'm volunteering but if you really want to get a ton of PR out of this you might try some famous empirical micro guys (this article would make a great Freakonomics chapter) . Cold calling with "I have unique data" won't offend anyone.

</comment><comment><USER12> Why shopping and facebook? Both of those seem to favor women over men (in time spent, not in % who have accounts)... What about hacker news, prog.reddit, github, LtU, Lostpedia, porn, news.google.com, etc? Factor those in, and the numbers might come out quite different.

What about programming projects that I happen to be reading/forking/coding which are unrelated to work? From my anecdotal experience (mostly in software development), women focus significantly better than men on the work-related tasks.

<comment><USER13> From the article: "Men have their distractions, too. They spend about 15% more of their time reading the news than women."

It would have been useful if the article indicated how much time is actually spent on news sites, rather than simply the relative differences.

<comment><AUTHOR> To add to your response: we didn't put it in the post, but the stats on the "reference" category (where things like dictionaries and code resources live) were pretty close (7.41% for women, 7.15% for me).

</comment></comment></comment><comment><USER14> _Our data shows women only work 76% of the time that men do. Interestingly, the National Committee on Pay Equity found that women earn 77% of what their male counter parts do._ </quote>

<comment><USER15> I've always been interested in these kind of data. Are women earning only 77% of their male counterparts because

a) They are primarily employed in occupations that pay less

b) They take maternity leave and/or extended vacations/time off (taking care of children etc.)

or

c) Women are just paid less for the same work?

<comment><USER3> A is the primary reason. B is true, but it is not so much that women take time off and are therefore paid less, it is that women take time off and miss out on a few rounds of promotions and get behind a bit. You only take 5 years out of a 40 year career, but you might take out two of the total promotions and that adds up to a lot.

C happens but rarely in the US is it that a woman makes 77% of a man for exactly the same occupation, the difference might be 5-10% but not 23%.

<comment><AUTHOR> That's a good point. I recall reading a study that men who take time off to be stay-at-home dads have a similar pay/promotion hit (not QUITE as much, but pretty close).

</comment></comment></comment></comment><comment><USER16> Some people might misinterpret this but it is very interesting data. I think it is more fun than being damning. I put it in the same category as the studies that say what a mother and work at home mom do are worth 130k+.

I personally love RescueTime and subscribe, it has helped me immensely in managing my own time better. So while some may get angry, I find the data useful and the service even more so. I think they were just trying to draw some traffic and get some more customers to help.

The only people I have shown that don't like RescueTime are the ones that seem to figure out how little work they actually do once they start using it. It surely opens your eyes to your non productive time on the computer.

</comment><comment><USER17> 3 observations:

\- Brilliant execution of two 37Signals principles/generally smart start-up strategies (advertise like a chef (give away your information), and pick a fight)

\- If this product doesn't "scratch an itch" / solve a real problem (people wasting time on computers) I don't know what does

\- RescueTime is awesome

</comment><comment><USER18> This is a doozy. I think this really deserves much, much more research.

<comment><USER19> "Theory of gravity", "Theory of relativity", everything in between.

Research complete.

</comment></comment><comment><USER20> A big thing missing is the context of the work. Perhaps not spending time at the computer and "socializing", distributing information, is actually more productive, or even a bullet point on the person's job description. I think a more accurate description for this blog post is "Men spend their time working on computers more than women".

<comment><AUTHOR> Yaw... To be perfectly forthright there was some discussion around accurate titles versus titles that are clickworthy. Obviously, it's a hard discussion that happens at every blog and newspaper in the country that cares about traffic.

We tried to qualify the heck out of the data (while still being provocative) in the body of the post... And even more in the comments of the post. I hope we did a good enough job!

<comment><USER20> From some of the heated discussions on this thread, i think you guys were successful at doing that. =)

</comment></comment></comment><comment><USER21> Please could you publish the raw anonymised data, or at least give us estimates of the variation? Without that, the data are meaningless.

</comment><comment><USER22> What would be useful, not that I have looked into this to much to know that it isn't possible. Would be to group the time spent on HN with the time spent on anything linked from HN.

It's hard to know how much time I spend on HN/HN articles.

Great tool though, RescueTime and DropBox are the two ycombinator companies which I could instantly see a use for in my everyday work.

</comment><comment><USER23> I'm pretty sure all of this has a logical explanation to it, most likely involving the time women spend giving birth by the stove in the kitchen.

<comment><USER24> If there is a significant trend here, it would be better to explore it than to try to suppress exploration with dismissive witticisms.

</comment></comment><comment><USER25> more time working does not necessarily amount to more productivity.

</comment><comment><USER26> More data less commentary please.

</comment><comment><USER27> So men are generally (slightly) more productive at computer-related tasks, based on time working vs procrastination time.

But computers are communication devices (in most cases), and women are generally more productive communicators. So they limited time they spent working on computers is probably more valuable.</comment>


Music Discovery Service ExFM Pulls the Plug - <AUTHOR> http://allthingsd.com/20131220/music-discovery-service-exfm-pulls-the-plug/

<comment><USER2> Any chance they can make it open source (BSD) please?</comment>


Why did the software engineering community become so toxic? - <AUTHOR> https://medium.com/@BenSassiAladin/why-did-the-software-engineering-community-become-so-toxic-c47bed17e163 <comment><USER2> I feel like this isn't so much a thing and just a reflection of what the writer happened to be paying attention to.

I don't see anyone bragging about IQ tests and I don't think Zuckerberg was ever some iconic type developer whose choices reflect on all developers. These are weird things to me.

I attend free conferences where people take their time to share their knowledge and work, the web is full of those people trying to help each other.

Personally I think things are good and better than when I took my first shot at being a developer in the mid 90s when the social outcast type coding guy felt very real and very unfriendly.

<comment><USER3> I think this is a "yes and no" situation. The software engineering community is full of helpful people who want to share their work and generally be kind to others. It is also full of arrogant assholes who can't fathom nuance in solutions, the importance of social niceties, or the possibility of being wrong sometimes. If you only go to conferences and friendlier forums for discussion, you'll mostly only see the former. If you work around enough startups, high-profile CS programs, or even just spend much time on stack overflow, you will _definitely_ see the latter. This is doubly true if you happen to be female.

To me there are two issues with the latter group: the first is that they tend to be more vocal and more memorable, which skews overall perceptions. The second is that the community _tolerates_ these people and even celebrates them way more than it should.

<comment><USER4> The arrogant assholes weren't given any power or respect _outside_ of tech, though, unless they are rich, nobody who isn't on the mailing list or depends on their software cares. I've never seen any developer become the life of the party because "he might start the next big thing".

I feel like this article just throws cliches together that have little basis in reality, because it's as hip to call the "nerds" out for being assholes because "now they have power" as it was to call them nerds 20 years ago.

Imho these "thought leader self marketing" articles don't provide much value. They regurgitate common talking points and the biggest difference is the image choice.

</comment></comment></comment><comment><USER5> The people who write code do not comprise a community. The behavior the author cites does not represent anything more than some extreme generalizations. In 35 years programming I have not known more than a handful of assholes matching the author's descriptions.</comment>


OAuth have never been easier 80+ providers for Koa and Express wow - <AUTHOR> https://grant-oauth.herokuapp.com

<comment><AUTHOR> such flow, so grant, ideal for shibe [https://github.com/simov/grant](https://github.com/simov/grant)</comment>


Severe Earthquake Warning For California In September 2010 - <AUTHOR> http://www.theweathernetwork.com/your_weather/details/1001/2741293/1/upload/

<comment><USER2> Interesting headline, but I can't read this because the site uses Flash to display the article content. Why don't they use HTML?

<comment><AUTHOR> Seriously? It's a humorous video I thought I'd share with you. Good for you for not supporting Flash but like religion, it's your choice. I think it's probably best viewed on in IE6 for Linux!

</comment></comment><comment><USER3> Is this a joke? LOL the video is wacky. I doubt it's commissioned by the weathernetwork. How did it get featured there?

<comment><AUTHOR> Unbelievably my friend sent this link to me because he was "clicking around" the weather network. I didn't think anybody did that anymore.</comment></comment>