Category Theory for Programmers (2014) [pdf] - <AUTHOR> https://github.com/hmemcpy/milewski-ctfp-pdf/ <comment><USER2> Can someone please explain to me the excitement for category theory in this forum?

I've gone through the first 10 chapters + exercises of this book, and truth be told the content is interesting but the ROI is low for programming (FWIW I started this book as part of a study group in a large unicorn co, and after approximately one month I was the only person left grinding through the exercises, hoping for some payoff).

It's cool that I know what a functor is, I guess, but where others tout CT as unlocking a higher level view of programming, all I see are little curiosities (when you do X you are really doing Y, isn't that cool!?).

I've heard it said that CT's true power comes as a "refactorer" for what would otherwise be complicated proofs. I.E. we discovered a new tool to make proofs that already existed more elegant. That's cool that it has a use! Does this somehow extend to programming?

I don't mean to sound like a grouch, but I'm genuinely baffled by the level of excitement around this topic.

If you're looking to scratch a math itch, ML has plenty of opportunities to hobby some math while advancing your career and marketability.

For programming in general, there are tens of topics I would pick before reaching for this, with major immediate payoff to our occupation as programmers.

Finally, after going through 10 chapters I skipped to the end to see if there was some culminating breakthrough that we were striving towards... and I found more definitions stacked upon other definitions. I suppose memorizing all these definitions is supposed to give me a different mental model about programming. Is that right?

I'll quote here the first line of the Analects, "Isn't it a pleasure to study and practice what you have learned?". This is what I look for in studying any topic: something that gives me joy to put into use. In the best cases it gives me a feeling of a super power - something that was previously impossible or extremely difficult is now elegant and clear. Can CT offer that in any way to programming?

-Sincerly, Guy that doesn't get it, but wants to

<comment><USER3> I think I've got the category bug. I very much was intrigued by Milewski's course and found that it made things happening in Haskell make more sense to me. There are a couple of things that really excited me.

Conal Elliott's compiling to categories. Categories make a great intermediate representation for DSLs. They are very easy to manipulate/optimize in a simple algebraic manner without issues related to named variables. This proposal showed how a plugin could take ordinary programs written in more user friendly syntax and compile it to the category IR. You can overload ordinary programs to automatically differentiable programs and more. [http://conal.net/papers/compiling-to- categories/](http://conal.net/papers/compiling-to-categories/)

Another thing I think is really interesting is calculating programs. It is possible in the right formalism to write down a specification of a program in a simple small form, and use algebraic manipulation to derive an executable form of the program. It feels like doing an integral or something. Check out these books on that topic. [https://themattchan.com/docs/algprog.pdf](https://themattchan.com/docs/algprog.pdf) [http://www4.di.uminho.pt/~jno/ps/pdbc.pdf](http://www4.di.uminho.pt/~jno/ps/pdbc.pdf)

<comment><USER4> Great example!

Here's a video where Conal demonstrates interpreting a Haskell program (actual Haskell, not a DSL) into a) an image of a graph-like structure (visualizing the algorithm), b) Verilog (for compiling to hardware), and c) GLSL (for being rendered by a GPU in the browser).

[https://youtu.be/vzLK_xE9Zy8](https://youtu.be/vzLK_xE9Zy8)

</comment></comment></comment><comment><USER5> Watched that guy's lectures and conference talks. While it's quite interesting and educative - I still don't get the "for programmers" part of it. I don't quite get how I would jump from understanding categories, morphisms, monoids etc. to building actually better systems. There are zero practical examples in his talks. Is it because i'm not using functional languages or what am I missing here?

<comment><USER6> I watched the first part of his lectures on category theory. Keep in mind I'm the furthest thing from a mathematician you can find.

The feeling I'm getting when learning category theory is that if there was a formal theory for how to design programs. Category theory is it. Application is therefore not straightforward... You have to get really creative and think really hard to see the insights that category theory has to offer.

The notion of a isomorphism and a functor and lifting was directly applicable to programming after I learned about it. Here's what happened:

In postgresql there are specific library functions for dealing with specific types of json structures in the postgresql library. If your json blob doesn't fit the structured type parameter that the library function accepts you have to do some very awkward joins to convert the json into the right format which can cause massive slow downs.

I use the notion of two isomorphic objects and the opposing functors between them to convert the json into a string functor. Then I did string manipulations to convert the serialized json into a different form of serialized json then re-lifted the serialized json back into the json functor. The converted json type fit the parameter of a library json function and thus the result was a query that executed 10x faster then the other implimentation.

If I didn't know category theory the code would look absolutely crazy. I cast json to a string, replace a bunch of characters in the string then cast it back to json. The notion that a string can contain another type as a functor and the notion that string manipulations operations on serialized json have an isomorphic equivalent in "json space" was what allowed me to creatively come up with this optimization.

Note that the json equivalent morphisms I needed do not actually exist in the postgresql implimentation but because of the isomorphism that exists between stringified json and actual json I can build the json morphisms I need by composing two opposing functors and a string manipulation operation.

The thing about this though is that it's debatable whether or not you would actually need such "creativity" in a language that wasn't as terrible as SQL.

<comment><USER3> Check out Program Design by Calculation and The Algebra of Programming. Category theory and related formalisms do have a strong case to being a formal theory for designing/calculating programs

[http://www4.di.uminho.pt/~jno/ps/pdbc.pdf](http://www4.di.uminho.pt/~jno/ps/pdbc.pdf) [https://themattchan.com/docs/algprog.pdf](https://themattchan.com/docs/algprog.pdf)

<comment><USER6> Super interested in this and thanks for posting. Your first link is dead though. Do you have an alternative?

<comment><USER7> [http://web.archive.org/web/20190519200157/http://www4.di.umi...](http://web.archive.org/web/20190519200157/http://www4.di.uminho.pt/~jno/ps/pdbc.pdf)

<comment><USER3> Yes, thanks for this. It appears that maybe the entire university's website has changed location? So maybe a more official link will come back up soon

</comment></comment></comment></comment></comment></comment><comment><USER8> The clearest and most concise treatment I've come across on how Category Theory is used is Tai-Danae Bradley's "What is Applied Category Theory": [https://arxiv.org/abs/1809.05923](https://arxiv.org/abs/1809.05923) (It's a 50 page PDF)

Unfortunately the examples aren't within CS, but at least for me personally, seeing it _clearly_ applied in any context was the most important thing. It may be a good pre-req for looking at (or conjuring up your own) more detailed applications within CS specifically.

Also, if you like that, Tai-Danae Bradley has more writing at: [https://www.math3ma.com/](https://www.math3ma.com/)

<comment><USER9> I'm familiar with the applications here, and I've never found them compelling. They amount to taking things we already understand perfectly well (chemical reactions, written in terms of differential equations or visualized in terms of graphs) and draping huge amounts of formalism around them. The "theorems" they then prove do not provide any new insight -- they're only called theorems because the excess formalism makes completely trivial things hard to see!

For example, the main theorem of one of Baez's very long papers is:

> There is a symmetric monoidal functor from the category Petri to the > category Dynam.

When you plug in the hundred relevant definitions, you find that this is literally just the statement that you can specify a chemical reaction network in terms of differential equations, or pictorially in terms of graphs where the edges represent reactions, which is a standard thing taught in ordinary chemistry classes. The language of categories is not achieving anything here but obfuscation.

Category theory is only good when there's a very rich preexisting mathematical structure, so that introducing it simplifies things. That usually isn't true in science.

<comment><USER8> I think you may be missing something here.

> The "theorems" they then prove do not provide any new insight

Knowing that you can model reaction networks using categorical concepts may not provide new insights IF you have no deep familiarity with those concepts—but if you do, then knowing there is a "symmetric monoidal functor from the category Petri to the category Dynam" is a richly useful piece of information. It's probably more accurate to say that the amount of new insight conferred is proportional to your familiarity with the categorical concepts.

And yes, it's true the concepts are 'just' being translated into a new language—but if this new language is extremely general, applicable to a wide range of domains, then:

1) You can build a set of skills and knowledge related to concepts in this general language, which become automatically applicable to a wide range of domains (when their concepts are imported into the language).

2) It's possible to build 'machinery' (i.e. theorems or software) which deals with / operates on (representations of) concepts from this very general language—so once again, if you can translate some concept from domain X into e.g a symmetric monoidal category, now your general machinery can operate on things from domain X (which it was built with no awareness of).

Additionally, at least in Bradley's paper, the point wasn't to prove new things about e.g. reaction networks; instead it was to illustrate a method. To be more specific she is showing how "functorial semantics" can be applied in this context, using Petri nets as the syntax and dynamical systems as the semantics. From there the categorical classification of these objects gives us guarantees on their behavior under composition (the utility of which I assume is clear).

I'm not sure in the context of reaction networks whether modeling the system with compositionality guarantees and a clean mapping between graph representation and differential equations gives scientists something new or not—but the illustration of this method is done clearly, and the generality of the method is enormous.

And maybe I'm also missing something. I'm not a mathematician, but that's how the situation looks to me.

<comment><USER9> > Knowing that you can model reaction networks using categorical concepts may > not provide new insights IF you have no deep familiarity with those > concepts—but if you do, then knowing there is a "symmetric monoidal functor > from the category Petri to the category Dynam" is a richly useful piece of > information.

Look, I completely agree with the general point. I love new ways of thinking about things. But blindly applying extremely complicated tools to domains where their power isn't helpful is not good.

What is happening here is like taking a 2-line program that adds together two numbers and dressing it up into thousands of lines of OOP, until you have AdditionObjectFactoryGetterSetter objects being created by AdditionObjectFactoryGetterSetterFactory objects. Then you can bring in powerful OOP tools, but the _only_ things they help you with are understanding the excess complication you added in. Maybe the sheer scale of that structure is beautiful to someone, but we're discussing whether scientists should bother learning it.

> I'm not sure in the context of reaction networks whether modeling the system > with compositionality guarantees and a clean mapping between graph > representation and differential equations gives scientists something new or > not

And I'm telling you, it really doesn't! There simply is not a rich enough formal structure present in chemical reaction networks for category theory to yield anything useful, like it did in parts of pure math. Adding a complicated structure on top of something simple does nobody any good. All of the "guarantees on compositionality" were not useful, in the sense that they _went without saying_ in freshman-level courses, or worse, were problems solely _created_ by the introduction of category theory.

> the illustration of this method is done clearly, and the generality of the > method is enormous.

The fact that the technique is extremely general does not improve things. If a technique makes science harder to do, you can't make it up on volume.

<comment><USER7> > What is happening here is like taking a 2-line program that adds together > two numbers and dressing it up into thousands of lines of OOP, until you > have AdditionObjectFactoryGetterSetter objects being created by > AdditionObjectFactoryGetterSetterFactory objects. Then you can bring in > powerful OOP tools, but the only things they help you with are understanding > the excess complication you added in. Maybe the sheer scale of that > structure is beautiful to someone, but we're discussing whether scientists > should bother learning it.

In my opinion, this severely misrepresents what's happening. Your example is simply adding extrinsic, incidental complexity and this is not what the categorical treatment of this is doing, in my opinion. The additional complexity introduced by the CT machinery is not a lot and most of the complexity is intrinsic to the problem.

<comment><USER7> Argh, I wrote this in an editor and accidentally posted only a partial response. I cannot edit anymore so I'm responding with the full comment:

> What is happening here is like taking a 2-line program that adds together > two numbers and dressing it up into thousands of lines of OOP, until you > have AdditionObjectFactoryGetterSetter objects being created by > AdditionObjectFactoryGetterSetterFactory objects. Then you can bring in > powerful OOP tools, but the only things they help you with are understanding > the excess complication you added in. Maybe the sheer scale of that > structure is beautiful to someone, but we're discussing whether scientists > should bother learning it.

In my opinion, this severely misrepresents what's happening. Your example is simply adding extrinsic, incidental complexity and this is not what the categorical treatment of this is doing, in my opinion. The additional complexity introduced by the CT machinery is not a lot and most of the complexity is intrinsic to the problem.

What this does is to add rigor to something that you (or a chemist) may understand intuitively. To a person with a working, intuitive knowledge about a subject, that may seem a bit pointless, but it is nevertheless useful since an intuitive understanding might overlook reasoning holes or edge cases. Building upon this result may yield further useful insights.

Granted, this really may not be useful to a working chemist. The cost/benefit ratio of a chemist doing chemistry is more favourable than investing a lot of time in CT, hoping for a large breakthrough.

</comment></comment></comment></comment></comment></comment><comment><USER10> I liked "An Invitation to Applied Category Theory", pdf is available here: [1]

It is written in a more terse, mathematical language, but it is very clear and friendly for non-mathematicians. The authors provide interesting examples of applicability. Hardcover is quite expensive, but the quality is great [2].

[1] [http://math.mit.edu/~dspivak/teaching/sp18/7Sketches.pdf](http://math.mit.edu/~dspivak/teaching/sp18/7Sketches.pdf)

[2] [https://www.amazon.com/gp/aw/d/1108482295](https://www.amazon.com/gp/aw/d/1108482295)

<comment><USER11> I've quite literally spent the last month trying to read, digest, and apply the above to a record layer I'm writing for FoundationDB. Dr. Spivak's work has been absolutely beyond helpful and insightful. There's no way I'd even be able to approach the subject with his efforts.

I'd also recommend these as they're associated with the 7 Sketches and help fill in some blanks:

Functorial Data Migration - [https://arxiv.org/pdf/1009.1166.pdf](https://arxiv.org/pdf/1009.1166.pdf)

Category Theory as a Unifying Database Formalism - [https://arxiv.org/pdf/1009.1166.pdf](https://arxiv.org/pdf/1009.1166.pdf)

Database Queries and Constraints via Lifting Problems - [http://math.mit.edu/~dspivak/informatics/LiftingProblems.pdf](http://math.mit.edu/~dspivak/informatics/LiftingProblems.pdf)

Additionally, there's also [https://www.categoricaldata.net/](https://www.categoricaldata.net/) which helps provide more actualized implementation details of "FQL" (Functional Query Language) which he mentions in his papers.

For anyone else looking to get started with Category Theory, I'd also highly recommend choosing a functional library (i.e. something with Applicative, Functor, Category, Monad, Semigroup, Semgroupoid, Comonad, etc) in whatever language you're most familiar with and then _re-implement_ the functions to learn what it's doing (and what properties each class of item must conform to). In Elixir, I've been using Witchcraft... github.com/witchcrafters/witchcraft

For me, it has helped a great deal by forcing me to think about things like associativity, identity, and composition which I normally... didn't really do. It lends some nice patterns and naming conventions, even if you don't adhere to them perfectly. After a month of category theory, and only a crude/rudimentary understanding of it, has been enormously beneficial. My refactor of my FDB record layer after category theory has less code, works more correctly, and has more features. It's crazy...

Category theory gets 10/10 from me.

P.S. You'll probably, at some point, want to learn a little Haskell to help elucidate things in a "pure" context. It also helps as most every functional library is modeled after Haskell's standard library (? I'm still new, heh). To get started, this will save you time, as it seems most things in the Haskell world now-a-days be using this to setup/manage applications: [https://docs.haskellstack.org/en/stable/README/](https://docs.haskellstack.org/en/stable/README/)

<comment><USER12> Since you sound like you're from the category theory community you may already know this, but my database library Opaleye is directly based on David Spivak's ideas.

[https://hackage.haskell.org/package/opaleye](https://hackage.haskell.org/package/opaleye)

<comment><USER11> I'm totally new to the community! So I have no idea about almost anything I didn't link to or isn't linked here, ha.

That is a freakin' awesome link, thank you so much! Though, it'll probably mean yet another rewrite of my record layer :) (at learning is fun)

<comment><USER12> Feel free to email me if you have any questions around Haskell/category theory/databases. My email address is linked in the Opaleye README.

(BTW I meant "sounds like you're from the _Haskell_ community" ... thinko)

</comment></comment></comment></comment></comment><comment><USER13> A thread from 2017: [https://news.ycombinator.com/item?id=14026360](https://news.ycombinator.com/item?id=14026360)

A bit more: [https://news.ycombinator.com/item?id=15372856](https://news.ycombinator.com/item?id=15372856)

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

</comment><comment><USER14> Also released today, "Notes on Category Theory with examples from basic mathematics" by Paolo Perrone. (preprint state). arXiv:1912.10642v1

<comment><USER15> Nice find!

Abstract:

> These notes were originally developed as lecture notes for a category theory > course. They should be well-suited to anyone that wants to learn category > theory from scratch and has a scientific mind. There is no need to know > advanced mathematics, nor any of the disciplines where category theory is > traditionally applied, such as algebraic geometry or theoretical computer > science. The only knowledge that is assumed from the reader is linear > algebra. All concepts are explained by giving concrete examples from > different, non-specialized areas of mathematics (such as basic group theory, > graph theory, and probability). Not every example is helpful for every > reader, but hopefully every reader can find at least one helpful example per > concept. The reader is encouraged to read all the examples, this way they > may even learn something new about a different field.

> Particular emphasis is given to the Yoneda lemma and its significance, with > both intuitive explanations, detailed proofs, and specific examples. Another > common theme in these notes is the relationship between categories and > directed multigraphs, which is treated in detail. From the applied point of > view, this shows why categorical thinking can help whenever some process is > taking place on a graph. Form the pure math point of view, this can be seen > as the 1-dimensional first step into the theory of simplicial sets. Finally, > monads and comonads are treated on an equal footing, differently to most > literature in which comonads are often overlooked as "just the dual to > monads". Theorems, interpretations and concrete examples are given for > monads as well as for comonads.

pdf: [https://arxiv.org/pdf/1912.10642](https://arxiv.org/pdf/1912.10642)

</comment></comment><comment><USER16> Is there any point in learning category theory without first learning the things that it generalizes? I didn't see any value in learning about geometric algebra until I had learned enough about complex analysis to appreciate what it would mean to connect it with vector calculus.

<comment><USER17> I think category theory generalizes pretty much everything, so that may be tough.

<comment><USER16> The only thing that can generalize everything is something with no structure of its own.

</comment></comment></comment><comment><USER18> Started reading this and was disappointed to find the same disingenuous claims about strong static type systems.

I say disingenuous because the people that espouse these beliefs seem to have a minimum modicum of intelligence and do or would certainly (after a moment of reflection) certainly realize their fallacy:

> The only serious argument I hear against strong static type check- ing is > that it might eliminate some programs that are semantically cor- rect. In > practice, this happens extremely rarely and, in any case, every language > provides some kind of a backdoor to bypass the type sys- tem when that's > really necessary.

This is patently false. Port a correct dynamically typed program to Haskell and it will certainly fail until you satisfy the type checker through no small _extraneous_ effort. And this is not a theoretical matter; it is an enormous cost to the programmer that is not there in weaker or non- typed systems.

It is a certainty that type systems ask for far more than is needed to produce correctness. Anyone who tries to dodge this obvious and fundamental truth is operating off of a religious not rational commitment to defending their type system. Note that I am not saying the type system doesn't _give you something back_ but it certainly comes with a _inherent_ cost over alternatives.

> Another argument I hear a lot is that dealing with types imposes too much > burden on the programmer. I could sympathize with this sen- timent after > having to write a few declarations of iterators in C++ my- self, except that > there is a technology called type inference that lets the compiler deduce > most of the types

This is the most heinous and sad lie. Type inference changes nothing. The types are there even if you don't have to type them in and they are significantly constraining your set of accepted programs.

I've heard this response before from seemingly smart static typers. I just can't believe a smart person would not see the obvious emptiness of this claim. There is no way anyone would think that _having to type characters_ is the exclusive cost of static typing that inference suddenly whisks away.

I want to buy into the strong static typist's promise of utopia but I have yet to meet a static typist enthusiast that doesn't parlay in these lies, wittingly or unwittingly.

Because of this I have a serious suspicion that there is nothing else to stand on and that strong static typing is simply a case of the Emperor's New Clothes. Prove me wrong.

<comment><USER12> > > The only serious argument I hear against strong static type check- ing is > that it might eliminate some programs that are semantically cor- rect. In > practice, this happens extremely rarely and, in any case, every language > provides some kind of a backdoor to bypass the type sys- tem when that's > really necessary.

> This is patently false. Port a correct dynamically typed program to Haskell > and it will certainly fail until you satisfy the type checker through no > small extraneous effort. And this is not a theoretical matter; it is an > enormous cost to the programmer that is not there in weaker or non- typed > systems.

It seems like this disagreement should be easy to resolve. You are saying that it's hard to satisfy the type checker when porting a dynamically-typed program; OP says this happens very rarely. Therefore you can easily disprove OP's claim by providing some examples that happen commonly in practice. Provide them, please!

> There is no way anyone would think that having to type characters is the > exclusive cost of static typing that inference suddenly whisks away.

OP is not claiming that the benefit of type inference is that it automatically "types characters".

> I have yet to meet a static typist enthusiast that doesn't parlay in these > lies

I don't think it's necessary to bring a moral dimension into this discussion. Let's keep it technical please.

<comment><USER18> > It seems like this disagreement should be easy to resolve. You are saying > that it's hard to satisfy the type checker when porting a dynamically-typed > program; OP says this happens very rarely. Therefore you can easily disprove > OP's claim by providing some examples that happen commonly in practice. > Provide them, please!

Great, let's stay in a weakly typed language -- and give the smallest of examples. This is so easy to come by it should be obvious that extrapolating this up to real business systems greatly magnifies cost. Here's weakly typed Java:

       Function<String, Integer> countChars = str -> str.length();

That's a function that counts characters in a string. It compiles. Now let's drop the types:

       Function countChars = str -> str.length();

That is a correct definition of the same function but it doesn't compile. The compiler needs information to carry out its proof.

This extrapolates to infinite more examples and the cost in building actual business systems is profound.

Now carry this to a strongly typed system.

The general claim is that type inference will allow the second form to somehow magically pass the compiler.

Not true.

The type inference _requires_ `length` to be formally declared before the compiler can pass the program. I.e., the compiler must be told about the types _somewhere_.

In a dynamically typed language I can late bind `length`; ie the compiler doesn't need to be "told" something that I, the programmer, have got fully covered by my own measures.

But the compiler doesn't know this. I've already done _my_ proof of correctness (as I should). But because the compiler does not have context, I have to tell it something that has no innate value to me and what I'm delivering -- it only has value to the closed-room of the compiler. This is hostile to productivity and serves only my early commitment to having a type prover guard my every move.

</comment></comment></comment><comment><USER3> People who like this may also be interested in the awesome applied category theory list [https://github.com/statebox/awesome-applied- ct](https://github.com/statebox/awesome-applied-ct)

<comment><USER3> And Conal Elliott's Compiling to Categories, which I've seen discussed here before [http://conal.net/papers/compiling-to- categories/](http://conal.net/papers/compiling-to-categories/)

</comment></comment><comment><AUTHOR> or:

[https://bartoszmilewski.com/2014/10/28/category-theory- for-p...](https://bartoszmilewski.com/2014/10/28/category-theory-for- programmers-the-preface/)

or 20-video lecture series:

[https://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI...](https://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_)

<comment><USER19> Highly recommend the lecture series. He makes it accessible and fun

<comment><USER20> Seriously, second this. It was extremely helpful. I had both the background in programming and abstract algebra but it wasn't until this course that I was really on the path to understand what was going on with category theory.

</comment></comment></comment><comment><USER21> Worth it just for the illustrations, but this book is excellent, especially if you already know Haskell.

</comment><comment><USER22> The book itself is constantly updated by the author and community, people add particular language flavors. Scala flavor[1] (along with the original Haskell one) is already part of the book, OCaml flavor[2] is being worked on and mostly finished.

[1] [https://github.com/hmemcpy/milewski-ctfp- pdf/releases/tag/v1...](https://github.com/hmemcpy/milewski-ctfp- pdf/releases/tag/v1.3.0)

[2] [https://github.com/hmemcpy/milewski-ctfp- pdf/pull/201](https://github.com/hmemcpy/milewski-ctfp-pdf/pull/201)

</comment><comment><USER23> Question to all CS majors, that invested in learning Category Theory:

Did you have any concrete take aways from learning it?

( I have a math background, and struggle to find something concrete. Maybe I am just blind. )

<comment><USER24> I believe my real analysis class made me a significantly better programmer and thinker in general, but I don't use anything specific from it (not yet, anyway).

<comment><USER25> Genuinely curious how real analysis made you a better programmer...? I've taken it and loved it, but my interest was more due to physics/engineering applications. I can't see a connection to programming.

<comment><USER26> I suspect it could be that real analysis truly makes you challenge your assumptions and forces you to build a habit of thinking through corner cases.

Other maths courses do this as well, but real analysis is particularly vivid for some people because of all the fun counter-examples you get to see in a well-taught course, such as a function that is everywhere continuous but nowhere differentiable.

This habit of thinking through corner cases is something I miss from a lot of (junior) programmers.

</comment></comment></comment></comment><comment><USER27> I very much like: "Sets for Mathematics", which I currently read and which finally clicks with me. I always found expositions of category theory tiring in that it bombarded me with trivialities and examples that were kind of obvious. Instead, "Sets for Mathematics" describes one particular and probably the most familiar and important category, the category of sets, and I very much like this fresh look at sets.

</comment><comment><USER28> Here's a really great introduction to CT for the non-mathematically inclined:

Lawvere and Schanuel. "Conceptual mathematics: a first introduction to categories." Cambridge University Press, 2009.

The authors are two of the "founders" of the subject, so don't be fooled by the elementary appearance of this book.

</comment><comment><USER29> There's a lecture series he did if anyone's interested: [https://www.youtube.com/watch?v=I8LbkfSSR58](https://www.youtube.com/watch?v=I8LbkfSSR58)

I must say that there is a slight Tommy Wiseau energy about the guy, but that's no bad thing :-)

</comment><comment><USER30> I wish some subjects of mathematics could be summarized in a TLDR fashion. It would make it much more interesting as an introduction.

I remember that we used to write very small sheets of formulas and other memos to condense a class into a much shorter thing.

Simple.wikipedia.org seems to somewhat be that.

I have always liked math, but I can see why people don't like math or get interested in math. The literature is exhaustive, unnecessary long, and just too arcane.

I will always be frustrated with the image of mathematics and how laymen often say "math is not for me", but sometimes I can understand why.

</comment><comment><USER31> Also by the same author: Applied Category Theory 2020

[https://johncarlosbaez.wordpress.com/2019/12/23/applied- cate...](https://johncarlosbaez.wordpress.com/2019/12/23/applied-category- theory-2020-adjoint-school/)</comment>


Nutritional status, brain network organization, and general intelligence - <AUTHOR> http://www.sciencedirect.com/science/article/pii/S1053811917306900 <comment><USER2> I'm too dumb to understand this presumably due to poor nutrition. Can someone explain?

</comment><comment><USER3> From everything I've put together, canola oil is the way to go. Highest omega3/6 ratio and same amount of monounsaturated fats as olive oil.

<comment><USER4> I disagree completely. Canola is easily oxidizable.

</comment></comment><comment><USER5> Why bother paywalling me Elsevier, you know I'm going to get what I want for free. You're my bitch.</comment>


Craig Federighi's message to young aspirants pursuing Software Development - <AUTHOR> https://imgur.com/Crm5PkG <comment><USER2> \+ Keep in mind that one of the oldest project management lessons we know, the Tower of Babel, is the one we keep repeating:

\- Find the principles and patterns behind the constructions that support the building,

\- Don't take it too seriously when the constructions collapse for the the same old daft reasons.

</comment><comment><USER3> I don't know who this guy is, but it's hard to imagine more generic, unhelpful advice.

</comment><comment><USER4> An image, of a tweet, to basically hallmark card level advice...

<comment><USER5> It's an e-mail in Apple Mail, not a tweet. Agreed on the Hallmark card-level advise.

</comment></comment><comment><AUTHOR> Via: [https://www.reddit.com/r/apple/comments/dnbmyr/craig_federig...](https://www.reddit.com/r/apple/comments/dnbmyr/craig_federighis_message_to_young_aspirants/)

</comment><comment><USER6> paulo coelho adaptation. this is actually a good advice. take it. helps you hit the ground really hard. wake up to reality after. hopefully.

</comment><comment><USER7> facepalm. Useless space-filler "advice".

> go broad AND deep

i mean.. how? You can either go broad and become a generalist, or you can go deep and become a specialist, you can't do both, no one can. And it's a deception to give this kind of "advice". He's setting up people for failure. Very cruel.

> Follow your heart.

Such a stupid cliché to say. Right, forget the brain, forget the logic, be emotional!

</comment><comment><USER8> Great advice

<comment><USER9> It doesn't seem like especially insightful advice to me. Most of these are slogans you can find printed on a coffee mug or throw pillow at Target. And "follow your heart" vs analytical decision-making in the end is usually catastrophically terrible advice.

<comment><USER10> Unkept in check, "follow your heart" as a commanding principle is for sure a straight road to much sadness. The heart (emotion) is there to guide us, not lead us, because the heart has no brain of its own. Don't mistake the language of your body (mere feedback) for the direction of your will (forward in time, a decision of personal growth).

</comment></comment></comment><comment><USER11> My advice to Craig Federighi - start by abolishing the annual tax that is the Apple Developer Program fee.

There's more, but let's start with that.

<comment><USER12> That tax is one of things keeping app quality high, and they have to pay people to screen your apps. They can offer an educational scholarship.

<comment><USER11> I think the opposite is happening.

The tax ensures that any app developer has costs to recover. It thus drives them to do so in ways that reduce quality. At the same time it pushes away the hobbyists who may have decided to develop non-monetized versions of an app at higher quality.

(look at kids apps as example)

<comment><USER13> The tools are free with a free developer account. If you distribute an app as open source on Github anyone can download and build the app to use for themselves. There is also a fee waiver program for non-profits, educational institutions, and government entities.

As far as programmer hobbyists, one has to buy a computer, disk drives, pay for internet access, food, coffee, etc. Most hobbies and passions have non- trivial associated costs.</comment></comment></comment></comment>


Outbreak – playable simulations of a disease outbreak - <AUTHOR> https://meltingasphalt.com/interactive/outbreak/ <comment><USER3> Remember pandemic2 flash game?

It was almost impossible to kill all humans without starting the infection from Madagascar. If you started from somewhere else Madagascar always had time to close the borders.

Lo and behold: Madagascar is one of the few countries without infections in Global Cases tracker. [https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.h...](https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6)

<comment><USER4> We're also getting another classic part of any Pandemic play through cruise ships forever circling the ocean looking for a place to dock.

[https://www.cnn.com/travel/article/cruise-transatlantic- coro...](https://www.cnn.com/travel/article/cruise-transatlantic-coronavirus- gbr-intl/index.html)

<comment><USER5> My favourite cruise ship fiasco this week has been the newly imposed rule in New Zealand - they can't dock, go away. So hours before the ban was imposed one docked and dumped all it's passengers in the capital. [https://i.stuff.co.nz/national/health/coronavirus/120298962/...](https://i.stuff.co.nz/national/health/coronavirus/120298962/coronavirus- cruise-ship-with-with-suspected-infection-misses-wellington)

<comment><USER6> I got some stern comments that "laws should _never_ apply retroactively" for saying this, but I still believe: all those border closings should apply immediately from the second they're announced, and all quarantine requirements for returning passengers should apply retroactively, from a day or two before they were announced.

Because the story is the same all over the world. A country announces it'll close the borders in 2 days. A day after the announcement, every citizen of that country that was in COVID-19 hotspot returns to their homeland. In some cases avoiding quarantine.

<comment><USER7> Kind of related problem... A major city becomes an outbreak hot spot. The city enacts strict quarantine recommendations but they are not enforced by law and domestic travel is still permitted. People then flee the hot spot city and rapidly spread disease to other areas. This was a mistake Italy made that the US is repeating in places like NY, San Francisco, etc.

</comment></comment></comment></comment></comment><comment><USER8> Bullfrog's classic game "Theme Hospital" had really great emergent vomit cascades.

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

<comment><USER9> Two Point Hospital does fantastically as a spiritual successor to Theme Hospital. [https://www.youtube.com/watch?v=jmlaOYMU8qA](https://www.youtube.com/watch?v=jmlaOYMU8qA)

<comment><USER8> Cool, thank you! I'll check in and check it out. (Installing it now!) Does it have a "Bloaty Head" treatment? ;)

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

I played a LOT of Theme Hospital when working on The Sims 1, and aspired to make the Sims editing tools as easy to use and "clicky" as Theme Hospital was. That and some of Peter Molyneux's older games like Dungeon Keeper, with architectural editing and a lot of independent characters running around at the same time, had a lot of influence on The Sims.

</comment></comment></comment><comment><USER10> I am not a huge fan of this (or the WaPo) simulator, since I they seem to have chosen their models for the nice look (regular grid, bouncing balls) instead of for their accuracy.

While you can give people a rough idea of how different containment efforts will work, the models are so far removed from reality that I don't think that it really helps very much. Especially the WaPos'comparison' between different containment measures is IMHO borderline negligent without putting huge caveats in front of them.

<comment><USER11> Given how much normal people know about these issues (nothing whatsoever, or even less than nothing, somehow) I think the shortcomings of their model, vs. full physical simulation, is of no importance. It's a fantastic intuition- builder.

</comment></comment><comment><USER12> If we're talking about disease-based games, I highly recommend Pathologic 2. Nothing realistic there in terms of modeling disease spread or cure mechanics, it's a very artistic and somewhat abstract game, but it conveys certain social realities of being in a contagion zone really well. Among other things, it show the importance of not collectively freaking out.

<comment><USER13> I second this recommendation. I'm currently playing through Pathologic 2 for the first time. Playing through the game in the wider context of a pandemic makes for a very powerful experience.

</comment></comment><comment><USER14> How can I model the type of interaction between people. For example :is school a stronger vector of propagation than workplace ?

I ask because everybody in my country talks about what to stop (restaurants, culture,...) but never explain why working is considered less of a problem... (I have my little idea but well, ain't sure)

<comment><USER15> Tell a child to stop touching things and see how many things they touch, where they put their fingers, how many times they pick their nose etc and then you'll know.

It'll only take a few minutes.

<comment><USER7> My friend was in an airport recently. A mother dutifully used hand sanitizer on her 3 year old's hands. Within one minute the child had put their hands on every surface within a meter: arm rests, seat cushions, under the seat where the boogers and gum are, the floor, etc.

</comment></comment></comment><comment><USER16> You should totally add this to [https://coronavirustechhandbook.com/](https://coronavirustechhandbook.com/)

</comment><comment><USER17> Super fun: In the full model { 5%, 3%, 5, 3, 0.25, 5, 14 } led to a walking sprawl of disease in a healthy population that lasted a long time, turning down the incubation days by 2 made it slower. The rate of new infections eventually eventually tapered off because the virus encountered its own sprawl like a growing structure in Go. Seems like a STD.

</comment><comment><USER18> We had a small demo to simulate pandemic outbreak at malls. The simulation was mostly for demonstration purposes to illustrate how distancing impacts spread, and potentially some ways to help mitigate it.

[http://socialdistance.ai/](http://socialdistance.ai/)

<comment><USER19> Much less visual than yours though, I also made a tool to highlight the exponential effect of social distancing.

Exponential growth is often counter-intuitive and lot of people don't seem to get it.

[https://www.spreadsim.com/](https://www.spreadsim.com/)

<comment><USER20> This is cool but your hospital beds figure needs to be reduced dramatically because I believe you have taken the number of total hospital beds, not intensive care beds for the critically ill. In my country, the number of total beds is about 48 times the number of intensive care beds.

</comment></comment></comment><comment><USER21> This is missing a couple things:

1) Cells should have random demographics such as male/female and age, and a virus could respond differently to them

2) The virus should have some capability for mutation as it spreads. (probability of changing variables from the initial configuration by some percent)

</comment><comment><USER22> Great work. Is the code available to look at? I see its a Creative Commons license but I cant find a link to a code repo.

</comment><comment><USER23> This stuff drives me crazy. I know the author of this (and of the linked Washington Post article) are trying to help people gain clarity, but it worries me that it only serves to accelerate fear and panic.

These articles are making it sound as if the exponential part of the curve will just continue on forever until it consumes the whole population. The (self-admittedly) overly simplified simulations aren't helping either.

Front this article >

 _And here 's the kicker: even if we manage to "flatten the curve" enough to meaningfully space out the case load, we're still positioned to lose millions and millions of lives._

From the WaPo article >

 _This so-called exponential curve has experts worried. If the number of cases were to continue to double every three days, there would be about a hundred million cases in the United States by May._

 _Still, without any measures to slow it down, covid-19 will continue to spread exponentially for months. To understand why, it is instructive to simulate the spread of a fake disease through a population._

It will continue to spread exponentially for months!? Millions & millions of cases & or deaths? These are really sloppy and dangerous ideas to put in peoples head. They are just plain wrong, and not how pandemics play out in reality.

Here is what the CDC says about how pandemics spread (Under the 'COVID-19 Now a Pandemic' heading) [https://www.cdc.gov/coronavirus/2019-ncov/cases- updates/summ...](https://www.cdc.gov/coronavirus/2019-ncov/cases- updates/summary.html?CDC_AA_refVal=https%3A%2F%2Fwww.cdc.gov%2Fcoronavirus%2F2019-ncov%2Fsummary.html)

 _Pandemics of respiratory disease follow a certain progression outlined in a "Pandemic Intervals Framework." Pandemics begin with an investigation phase, followed by recognition, initiation, and acceleration phases. The peak of illnesses occurs at the end of the acceleration phase, which is followed by a deceleration phase, during which there is a decrease in illnesses. Different countries can be in different phases of the pandemic at any point in time and different parts of the same country can also be in different phases of a pandemic._

 _Different parts of the country are seeing different levels of COVID-19 activity. The United States nationally is currently in the initiation phases, but states where community spread is occurring are in the acceleration phase. The duration and severity of each phase can vary depending on the characteristics of the virus and the public health response._

So no, it will NOT continue exponentially for months. Especially given the amount of isolation/ quarantine measures and canceling of large events taking place. I think it is reasonable to expect these measures will help us progress through to the deceleration phase faster.

Further-more, there is more and more evidence coming out suggesting the in China where it started, they have already entered the deceleration phase. This should be encouraging news for us in USA where it is just beginning.

[https://www.aljazeera.com/programmes/newsfeed/2020/03/big- dr...](https://www.aljazeera.com/programmes/newsfeed/2020/03/big-drop-china- coronavirus-infections-200316110905999.html)

<comment><USER24> The CDC link is interesting stuff I haven't read before, but where does it say the acceleration phase stops before it reaches a significant percentage of the population? China contained and stopped the virus, it didn't just naturally decelerate.

<comment><USER23> Yeah, that CDC page is one of the best resources I've seen. Explains everyone great detail.

I didn't mean to make it sound like it happens naturally. I imagine it probably only happens through human intervention. It just says _" The duration and severity of each phase can vary depending on the characteristics of the virus and the public health response._

So, as we are entering the early stages, the public health response in the US right now is massive. Unlike anything most of us have seen in our lifetime. Except for the west coast, NYC, and a few others, the spread so far is still very low. Knowing that, and now seeing China enter deceleration, gives me hope we will minimize the duration and severity of the outbreak.

But on the other hand, I am more worried about the economic fallout. The aggressive response with isolation & canceling events, may be necessary, but it will cause many businesses to fail and many folks to lose their jobs.

<comment><USER25> There is nothing more important than human life.

<comment><USER26> That is certainly true, but the economy is connected to human life, in obvious (food to eat, medical insurance) and non-obvious ways (e.g. job loss linked to suicide [https://www.theguardian.com/society/2015/feb/11/unemployment...](https://www.theguardian.com/society/2015/feb/11/unemployment- causes-45000-suicides-a-year-worldwide-finds-study) )

So just stopping economic activity also has health downsides.

</comment></comment></comment></comment></comment><comment><USER27> Very cool. Shouldn't the input transmission rate also be fixed for the last "test" ? It says to try to flatten the curve to reduce the % dead, but being able to control the transmission rate is cheating.

</comment><comment><USER8> One of the first downloadable objects for The Sims 1 was a pet guinea pig, which literally had a downloadable computer virus.

If you neglected to feed and care for your guinea pig properly, it would bite you and give you a deadly contagious virus, which you could spread to other Sims by not following proper hygiene and getting enough rest, and even die from.

Kids who downloaded the binary Sims object from the internet and installed in their game were horrified that their beloved Sims dropped dead unexpectedly, but they learned a useful lesson.

Now deadly infectious guinea pigs are a tradition continued in later versions of The Sims!

The Sims Pie Menus

[https://medium.com/@donhopkins/the-sims-pie- menus-49ca02a74d...](https://medium.com/@donhopkins/the-sims-pie- menus-49ca02a74da3#d06b)

>Viruses

>You can download this guinea pig object, and if you don't care for it it will make this secret hidden virus object that gives you a cold, and has with it the animations and sounds of coughing and going (cough cough).

>Every once in a while it will just interrupt what you do and cough, and it will be bad for your health. And if you don't get enough sleep, you have to get sleep to get rid of it. This little program is literally a virus that runs and lives in your household and in your characters, and your characters can spread them to the neighbors, and they'll bring them home to their families.

>Programmable Plug-In Objects

>Anyway, there's quite a lot of interesting potential for what new plug-ins additions can do because of this programming languages.

>SimAntics Visual Programming Language

>There's a built-in visual programming language called SimAntics, that is a control flow decision tree type of language. So the "Come and See" object, we'll look at that.

[https://www.youtube.com/watch?v=-exdu4ETscs&t=12m23s](https://www.youtube.com/watch?v=-exdu4ETscs&t=12m23s)

Something Is Killing the Sims, and It's No Accident. By John Markoff, April 27, 2000.

[https://www.nytimes.com/2000/04/27/technology/something- is-k...](https://www.nytimes.com/2000/04/27/technology/something-is-killing- the-sims-and-it-s-no-accident.html)

Lethal guinea pig kills virtual people

[http://news.bbc.co.uk/2/hi/sci/tech/746700.stm](http://news.bbc.co.uk/2/hi/sci/tech/746700.stm)

The Sims 1: Guinea Pig Disease

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

The Sims / Illness / Guinea Pig Disease

[https://sims.fandom.com/wiki/Illness](https://sims.fandom.com/wiki/Illness)

How to Get and Treat Guinea Pig Disease

[https://sims-online.com/how-to-get-treat-guinea-pig-disease/](https://sims- online.com/how-to-get-treat-guinea-pig-disease/)

The Sims 4 My First Pet: SimGuruGraham Talks "Guinea Pig" Disease

[https://simsvip.com/2018/03/07/the-sims-4-my-first-pet- simgu...](https://simsvip.com/2018/03/07/the-sims-4-my-first-pet- simgurugraham-talks-guinea-pig-disease/)

<comment><USER28> A powerful boss in _World of Warcraft_ could afflict the player with a plague called "Corrupted Blood", which rapidly drained your HP and could spread to nearby allies. The negative status effect was supposed to apply only in its zone of origin, but due to the way it was implemented, a player accidentally spread it outside its containment zone by dismissing and then re-summoning a pet with the effect, allowing it to spread. All hell broke loose on Azeroth, as entire cities would be contaminated with Corrupted Blood, and were subsequently abandoned or avoided by the remaining healthy players. Some players with healer-class characters would heal their allies and random strangers until the affliction passed. Others deliberately spread the affliction as a form of griefing. It was bananas, and epidemiologists used it as a model for possible human behavior in a real-life plague.

See: [https://en.wikipedia.org/wiki/Corrupted_Blood_incident](https://en.wikipedia.org/wiki/Corrupted_Blood_incident)

</comment></comment><comment><USER29> Heh I published something very similar this morning. Looks like everyone has the same idea

[https://reactfordataviz.com/articles/corona- simulation/](https://reactfordataviz.com/articles/corona-simulation/)

<comment><USER30> Interesting simulation but very slow at showing any effect. After 3500+ iterations (several minutes) there were still only 5 deaths in the first simulator (without distancing), all in the first iterations. I suggest to find a way to make it clear when it's done or speed it up to get to the point in one minute max.

<comment><USER29> That's weird, I get many deaths in just a few iterations. What were you running on? You seem to have found a bug.

Here's a video of when I run these: [https://twitter.com/Swizec/status/1239599601537015808](https://twitter.com/Swizec/status/1239599601537015808)

<comment><USER31> Parent is probably referring to the "Covid19 with distancing" simulation.

Some feedback: these are very simplistic simulations and obviously not aiming for accuracy but please consider changing the default 20% "reinfectability" parameter.

All evidence and medical knowledge indicates that reports of reinfection are either:

\- issues with testing (false positives/negatives)

\- extremely rare

[https://www.snopes.com/fact- check/covid-19-reinfection/](https://www.snopes.com/fact- check/covid-19-reinfection/)

<comment><USER32> It's scary enough without reinfection. Seems unlikely.

> the 30,000-letter genetic code of the virus changes by one letter every 15 > days [from link]

But could be like the common cold and flu, with new strains each year - <USER2> more contagious and deadly. Even then, we could still have new vaccines each year, and better treatment methods.

</comment></comment></comment></comment></comment><comment><USER33> I want to be able to tailor survival rate according to availability of hospital support - it seems like an obvious thing to include.

e.g. say that there are X hospital beds, and an X% survival rate for critical patients if they can get a bed.

</comment><comment><USER34> Anybody know an open source version of something like Plague Inc: Evolved ? I sure as hell am not playing computer games now. I'm going to get my crisis preparedness up properly and try to help my community. But it would be an interesting thing to have for the quarantine phase...

<comment><USER35> I'm a fan of Plague Inc on iOS and have unlocked all the pathogens...what's the difference between Plague Inc and Plague Inc Evolved?

Is the latter worth buying and playing?

Also: if there's a design doc out there for Plague Inc or a similar game, I'd love to see it.

<comment><USER34> Cool. I covered all the pathogens too, though I think I had quite a few genes left to unlock.

I've never played the original Plague Inc, so I can't tell you the difference from experience, but according to Wikipedia ([https://en.wikipedia.org/wiki/Plague_Inc:_Evolved](https://en.wikipedia.org/wiki/Plague_Inc:_Evolved) , isn't it amazing that it has its own Wikipedia page?):

 _The core game of Plague Inc: Evolved is the same as Plague Inc. - the player controls a plague which has infected patient zero. The player must infect and kill the whole world population by evolving the plague and adapting to various environments. However, there is a time pressure to complete the game before humans, the opponent, develop a cure for the plague. [...] It also includes all of the expansion packs from the original Plague Inc. game_

Great game concept, though still with some untapped potential in my opinion. I keep getting inspired to replay it by the news right now, but we really have much, much more urgent things to attend to. Prepare, and help out, but stay safe!</comment></comment></comment>


A parser for sqlite create table statements - <AUTHOR> https://github.com/marcobambini/sqlite-createtable-parser <comment><USER2> Seems cool. Have you talked with the developers of SQLite to add your code to SQLite? (Difference in license may be an issue though.)

<comment><USER3> SQLite license is "public domain", which is unusual (weird) for a large project.

IIRC, that's ok in the US, but some other countries don't accept that.

[https://www.sqlite.org/copyright.html](https://www.sqlite.org/copyright.html)

<comment><USER2> Yeah, I remember that the creator and lead developer of SQLite once said that he wished he had chosen a proper license just because a lot of corporates raised issues due to the license.

(It was a weird issue that I had not come across before and that's why the licensing thing stuck in my mind).

I guess he found a way to fix it:

> The SQLite source code is in the public domain, and is free for use by > anyone and for any purpose. No license is required. However, some users > desire a license so that they can have warranty of title, or just because > their company lawyers say they need one. A perpetual license and warranty of > title for the core SQLite source code is available for this purpose.

Source: [https://www.sqlite.com/prosupport.html](https://www.sqlite.com/prosupport.html)</comment></comment></comment>


Miner's "Body Ritual Among the Nacirema" (1956) - <AUTHOR> https://msu.edu/~jdowell/miner.html <comment><USER2> Reminds me of the trend a few years ago to describe American current events using language and tropes normally reserved for coverage of foreign countries. Here's an example from Slate, I seem to remember other sites doing it too.

[http://www.slate.com/blogs/the_world_/2013/09/30/potential_g...](http://www.slate.com/blogs/the_world_/2013/09/30/potential_government_shutdown_how_would_the_u_s_media_report_on_it_if_it.html)

</comment><comment><USER2> _Incarcerated in such a body, man 's only hope is to avert these characteristics through the use of ritual and ceremony. Every household has one or more shrines devoted to this purpose. The more powerful individuals in the society have several shrines in their houses and, in fact, the opulence of a house is often referred to in terms of the number of such ritual centers it possesses. Most houses are of wattle and daub construction, but the shrine rooms of the more wealthy are walled with stone. Poorer families imitate the rich by applying pottery plaques to their shrine walls._

This is fantastic stuff

</comment><comment><USER3> A huge responsibility has weighed on me for 35 years because of this article.

I love playing with words and will requently reverse interesting ones in conversation. It's annoying, I know.

When we were in college my then-girlfriend was assigned this essay without being told it was American backwards. She told me about it, but I didn't see it written. The word "Nassirema", as I heard it, wasn't interesting backwards so I didn't say anything.

She was given a test in a psyche course at UCI and she treated the essay as if it were actual anthropological research. She had no reason to believe otherwise. When she didn't get the joke the professor downgraded her. She asked why and the answer was, well, you're just supposed to know this osmotically. She successfully challenged the downgrade but complained to me afterward that I never bothered to reverse it while we chatted.

I still feel like an idiot almost 4 decades later.

<comment><USER4> > _She asked why and the answer was, well, you're just supposed to know this > osmotically._

Well. I think you're supposed to be sharp enough to figure it out on your own. It's not exactly subtle.

<comment><USER5> I actually missed it till I read the comments section. I'm not sure it's as obvious as you think. It's like the man-in-gorilla-suit-during-basketball effect. If you're not looking for satire, you don't see it.

</comment></comment></comment><comment><USER6> Related:

[https://www.huffingtonpost.com/neely-steinberg/dating- advice...](https://www.huffingtonpost.com/neely-steinberg/dating- advice_b_2479820.html)

Edit: Also, if you think this whole thing is merely humor. It's not: [https://en.wikipedia.org/wiki/Nacirema](https://en.wikipedia.org/wiki/Nacirema)

<comment><USER7> Let's just say that "dating" is a ritual practiced only by the Nacirema. Other peoples go about the matter in entirely different ways. Here's an essay by the irrepressible Dima Vorobiev on Quora about dating in Russia: [https://www.quora.com/What-was-dating-like-in-the-Soviet- Uni...](https://www.quora.com/What-was-dating-like-in-the-Soviet-Union)

"We didn't even have a word for it."

<comment><USER8> This seems to be more about the 40s-50s. From what my dad/stepdad told me, dating was extremely easy in USSR in late 70's and 80's, supposedly much more so than in US today (I wasn't there so I only have their word to go on). The 'official' culture may have repressed the concept of sex but it didn't stop most men from seeing several women at the same time.

Also, there wasn't a distinct word for dating, but there was a word for it, the word is/was 'meeting'. It was just the context that defined the meaning.

</comment></comment></comment><comment><USER9> We were asked to read this once at the beginning of a class in graduate school. One student got hot under the collar and said, "I know all about North American peoples and there's no tribe like this in North America." I said that there was...in fact, I was very familiar with it...

</comment><comment><USER10> I had to read this in middle school (ages ago) and it has really stuck with me. Whenever I read about some "strange" practice of another culture, I think of this study and it quickly rearranges my perspective.

<comment><USER11> I also experienced this in 6th grade social studies, and it stuck with me beyond almost anything else. There are probably three things I can recall directly from that class, and two are about the (first) Gulf War since it was coincident.

This is pure Baader-Meinhof as well, since I was thinking about it on Friday and trying to remember the details before looking it up. I got the medicine cabinet and beauty ritual, but had forgotten the rest.

</comment></comment><comment><USER12> See also David Macaulay's 'Motel of the Mysteries:

[https://wearethemutants.com/2017/12/06/david-macauleys- motel...](https://wearethemutants.com/2017/12/06/david-macauleys-motel-of-the- mysteries-1979/)

An extract:

[http://sultanaeducation.org/wp- content/uploads/2014/06/Motel...](http://sultanaeducation.org/wp- content/uploads/2014/06/Motel-of-the-Mysteries-Macaulay.pdf)

</comment><comment><USER13> Placebo effect is real people. The Nacirema may be onto something.

<comment><USER14> I thought the placebo effect was just that: an effect. I didn't realize that it manifested itself into flesh (real people).

</comment></comment><comment><USER15> i think i read this for three different classes as an undergrad

</comment><comment><USER16> Golly, I haven't heard this one since junior high history class, in 1967.

</comment><comment><USER17> An anthropology classic!

</comment><comment><USER18> 235 years after the Persian Letters!</comment>


Engineer found guilty of trying to sell military chips to China - <AUTHOR> https://www.zdnet.com/article/engineer-found-guilty-of-trying-to-sell-military-chips-to-china/ <comment><USER3> > This defendant schemed to export to China semiconductors with military and > civilian uses, then he lied about it to federal authorities and failed to > report income generated by the scheme on his tax returns

Funny how it always comes back to taxes, I wonder if that is how they were caught. I'm also curious how he was contacted by that Chinese company. Did he just get an email one day asking for chips in exchange for money?

<comment><USER4> Even Al Capone went in for tax evasion. If you are going to do crime, just report and pay taxes on the income you get from it as "other", the IRS doesn't talk to the police for anything other than tax evasion.

<comment><USER5> > the IRS doesn't talk to the police for anything other than tax evasion.

Source?

<comment><USER6> I don't know whether the IRS proactively _shares_ information with law enforcement, though I wouldn't be surprised, but I do know with absolute certainty that the IRS regularly works with law enforcement on many issues that don't necessarily relate to tax evasion. Money laundering being chief among them.

There's a bi-weekly process called "314(a) Information Sharing" that's run by the Treasury Department under the USA PATRIOT Act. It requires financial institutions to pass all kinds of information on to the agencies in the Department - IRS, Secret Service, Customs, ATF, Homeland Security, etc. - <USER2> are looking into various matters. All of those agencies are under the same umbrella and they absolutely work together.

A good friend of mine is also a forensic accountant/investigator for the US Attorney's Office so I know the IRS works closely with the DOJ though I'm not familiar with how that process works in practice.

<comment><USER7> In our recent ACAMS chapter event, the IRS person seemed very eager to be pro- active ( and in AML world the general push is towards greater surveillance anyway ). I don't know how common this attitude is, but I never hear anyone really challenging it either.

</comment></comment></comment></comment></comment><comment><USER8> Pretty flagrant violation of export laws. With all the good behavior reductions, he has a decent shot of getting his sentence halved to 105 years.

<comment><USER9> Despite the nature of his crimes, my understanding is that if you're not a permanent resident, you're not eligible for minimum security.

</comment></comment><comment><USER10> This sounds like another whale sushi sentence.

[https://www.popehat.com/2013/02/05/crime-whale-sushi- sentenc...](https://www.popehat.com/2013/02/05/crime-whale-sushi-sentence- eleventy-million-years/)

</comment><comment><USER11> "An unnamed US firm which manufactured semiconductor chips and Monolithic Microwave Integrated Circuits (MMICs)". Does anyone have a concrete idea of what of tech we are talking about here? That you some how can get a sample of and also 219 years in prison for if you resell it to a Chinese company?

<comment><USER12> I do not know, but my first guess would be some sort of communications chip with embedded (possibly custom) military grade encryption/decryption used for voice communications in the field. The sort of thing where if you have the code of the day, you can listen to all the foreign military's voice communications in real time.

</comment></comment><comment><USER13> How widespread is industrial espionage between countries? Are people past a certain age considered more at-risk for a quick payout? If a 64 year old can do this, anyone can do this.

</comment><comment><USER14> isn't this is one of the plot points in the departed?

<comment><AUTHOR> yes! wow i forgot that. blast from the past.</comment></comment>


Matrix' answer to Moxie: On privacy versus freedom - <AUTHOR> https://matrix.org/blog/2020/01/02/on-privacy-versus-freedom/ <comment><USER2> Duplicate of [https://news.ycombinator.com/item?id=21936929](https://news.ycombinator.com/item?id=21936929)

<comment><USER3> Comments moved thither.</comment></comment>


Did You Really Agree to That? The Evolution of Facebook's Privacy Policy - <AUTHOR> http://techscience.org/a/2015081102/ <comment><USER2> I don't know if either of these contribute to an understanding of Facebook's view of privacy, but I recently came across two pages which surprised me in some way.

The first[1] is a user's search history, which allows a user to see what terms they entered into the search box, going back apparently to nearly the beginning of the website (I think I saw records back to 2005).

The second[2] is a list of advertising topics or preferences. These, I believe, are generated automatically from pages you have "Liked" in the past. For instance, I found a listing for an obscure city in Japan that had the same name as a radio station I had subscribed to.

In both cases I guess it's some form of "benevolence" for them to freely admit they had this data and to allow you to edit it. At the same time, the second page in particular struck me as disturbing because there are at least 3 different settings which already ask that my interests and preferences not be used for advertising purposes. I had specifically set those options against targeting. Yet, here they are, gathering that information anyways.

[1][https://www.facebook.com/me/allactivity](https://www.facebook.com/me/allactivity)

[2][https://www.facebook.com/ads/preferences/edit/](https://www.facebook.com/ads/preferences/edit/)

<comment><USER2> [1] should be [https://www.facebook.com/me/allactivity?log_filter=search](https://www.facebook.com/me/allactivity?log_filter=search) \- I noticed only after I missed the edit cutoff.

<comment><USER3> [https://www.facebook.com/profile.php?sk=allactivity&log_filt...](https://www.facebook.com/profile.php?sk=allactivity&log_filter=search)

</comment></comment></comment><comment><USER4> I think changing a privacy policy without destroying data received under an older policy is illegal in the Netherlands. As it should.

The largest supermarket chain (AH) here implemented a new loyalty program with personalized promotions last year, for which they needed changes in their privacy policy. They had to delete all their customer data and start completely new - re-registration of customers, giving out new passes and everything.

<comment><USER5> But will that be enforced? I doubt it will.

<comment><USER6> NL is interesting that way, we have a privacy watchdog that actually has teeth and that will go after the big guys first. Starting 1/1/2016 there is mandatory reporting requirement in case of any data leaks involving private information of customers for instance. The CBP is doing its job just fine, if only the rest of the government would be that up-to-date with its policies.

</comment></comment></comment><comment><USER7> The "genius" of Zuckerberg is simple.

Back in 2005, while the rest of us were building an idealistic Internet full of democratic freedoms and such, Zuckerberg's breakthrough was realising that when the unwashed masses finally quit TV and get online, you need to be ready to feed them a high frequency mix of narcism, LOLs, peer-pressure and distraction and you'd have them hooked.

Once hooked, you can do _anything_ you want with their privacy. Anything. Sure minorities may complain about point 8.7 in the T&C but the majority just want that "Agree to Terms" dialog to get out of their face so they can get back to their habit.

<comment><USER8> > the majority just want that "Agree to Terms" dialog to get out of their face

"Dumb fucks" -Zuckerberg

( [http://www.businessinsider.com/well-these-new-zuckerberg- ims...](http://www.businessinsider.com/well-these-new-zuckerberg-ims-wont- help-facebooks-privacy-problems-2010-5) )

</comment></comment><comment><USER9> Recently, Facebook started showing a white overlay banner that says "Get updates from ____ on Facebook. Log in or sign up for Facebook today." which forces people to sign up or log in to facebook in order to access pages. As you scroll down the page, the banner covers the entire window, preventing you from seeing the contents of the page altogether.

Many organizations and groups use Facebook pages to share information with the general public. Some only have Facebook pages.

Well I don't have Facebook, because it was habit forming and otherwise excruciating. Quitting has been one of the best things that has happened to me. But I still visit band pages and organization pages from time to time in order to get basic information about events, etc.

So I find this coercive tactic of forcing me to sign up for Facebook in order to access content meant for me to see to be divisive, insidious and overall obnoxious.

<comment><USER10> Can you click hide element to show what's underneath?

<comment><USER11> You can write a bookmarklet to get rid of it. Or in Firefox: right-click, press q, and then delete the overlay with the delete key.

</comment></comment></comment><comment><USER12> Worth checking out Aral Balkan's RSA video 'Free is a lie'

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

<comment><USER8> [https://projectbullrun.org/surveillance/2015/video-2015.html...](https://projectbullrun.org/surveillance/2015/video-2015.html#balkan)

I recommend Balkan's more recent version of that talk, "You Are The Product". In particular, he has a much more in-depth analysis of the business model and startup culture ("digital imperialism").

(the talks by DJB and Appelbaum on that page are also very good)

edit:

look at all the downvotes. Does it make the cognitive dissonance go away?

<comment><USER13> > look at all the downvotes. Does it make the cognitive dissonance go away?

There are some folks on here who don't like hearing this kind of stuff but can't (or can't be bothered to) articulate why.

Is the idea that your comment is off topic?

</comment></comment></comment><comment><USER14> Can someone explain why people put so much weight into written Privacy Policies?

This isn't a comment about privacy itself—which I am totally "on board" with—and the documents obviously have some importance or use, but to read just so much into the minutiae of them, collecting them centrally or even refuse to trial a service because they simply copy-pasted from another service that had some awkward wording seems a little bizarre to me.

This, however, might be just might be my British mindset (ie. no written consititution!) versus a US one..

</comment><comment><USER15> hence the name of this dark pattern : [http://darkpatterns.org/privacy- zuckering/](http://darkpatterns.org/privacy-zuckering/)</comment>


Is the US Government Open Yet? - <AUTHOR> http://istheusgovernmentopenyet.com/

<comment><USER2> I would drop: 1\. "made with love..." 2\. "The U.S. Government is still..."

It should just say No in big ass letters.

<comment><AUTHOR> But then, how will people know how awesome, brilliant and ORIGINAL I am!?</comment></comment>


Ask HN: Good place to find design gigs? - <AUTHOR>

I was wondering, since there are a few designers on HN and people posting design gigs, what's a good place to find design gigs?<p>I myself am a designer and have found HN a great resource for clients/partners(if you'd like to see my badass work, shoot me an email at email@example.com) <comment><USER2> 99designs.com</comment>


Why I use Make - <AUTHOR> http://www.broadcastingadam.com/2015/05/why-i-use-make

<comment><USER2> If you're not using whatever build system was just invented three days ago, you're obviously not a real developer /s

</comment><comment><USER3> make is portable efficient versatile and simple. unlike imake, cmake, scons, waf, automake, autoconf, ... ad NAUSEAM.</comment>


To Find Meteorites, Listen to the Legends of Australian Aborigines - <AUTHOR> http://www.smithsonianmag.com/science-nature/find-meteorites-listen-legends-australian-aborigines-180952941/

<comment><USER2> > _He said that his people wouldn't camp within two miles of the depressions, > get closer than half a mile or collect the water that filled some. A fire > devil would fill them with iron should they dare._

I don't know enough bout meteorite, but is it possible that the water nearby is contained by the meteorite and is toxic? (Or at least that is was toxic for a time after the meteorite fall, and nobody dare to retry later.)

<comment><USER3> It isn't explained in the article and was also curious what happens to people when they drink the water.</comment></comment>