"How Heritability Misleads about Race" by Ned Block
There is a difference between traits being heritable or "genetically determined". Heritability, as a statistical concept, is defined as the ratio of genetically caused variation to total variation, while genetic determination is an informal concept: a characteristic could be said to be genetically determined if it is coded in the genes and is bound to develop in a "normal" environment. Importantly, both direct (genetically determined) and indirect genetic effects can be included in heritability, depending on which indirect effects are known.

Indirect genetic effects arise since environment interactions change depending on certain genes, affecting how other genes are expressed. This can make traits heritable despite not being genetically determined. A substantial variation in a highly heritable trait between groups doesn't necessarily imply genetic differences for that trait.

For a listing of different types of indirect genetic effects see [Gene-environment correlation](https://en.wikipedia.org/wiki/Gene-environment_correlation).
genetics  iq  CharlesMurray  NedBlock  critique  TheBellCurve  via:MaciejCeglowski 
22 days ago
Tools for making git visualizations.
git  graphics  javascript  visualization  tools 
4 weeks ago
Upgrade your cargo cult for the win | Meaningness
On the necessity of cargo-cult and how to transcend it.

A combination of Picasso's “Learn the rules like a pro, so you can break them like an artist.”, and Daishi's "Do not seek to follow in the footsteps of the wise; seek what they sought."
epistemology  DavidChapman  science 
9 weeks ago
"Predictive Load-Balancing: Unfair but Faster & more Robust" by Steve Gury - YouTube
Gury presents a load-balancing algorithm that keeps p99 latency low despite

- servers with uneven latency
- thundering herds
- outliers
- large clusters that dilute the value of latency statistics


- using the stable but quickly-responding moving median of app server latency as the main utility function to rank servers
- cautiously waiting for a new server to respond to 2 requests before giving it more
- weighting latency with a moving average of error rate to avoid fast-but-wrong servers
- connecting to a small number of servers to keep stats relevant
- aging server stats out so servers that have recovered can be detected
- aging servers out of the connected set to avoid starving other servers in the cluster
- updating latency stats before requests come back to deal with sudden slowness
talks  videos  youtube  algorithms  networking  distributed  load_balancing  SteveGury  via:CindySridharan 
10 weeks ago
Drawing better looking curves / Observable
Using a "curvature comb" to visualize the smoothness of a Bezier curve.
graphics  bezier  via:MikeBostock 
10 weeks ago
Engineers can’t gauge their own interview performance. And that makes them harder to hire. – interviewing.io blog
An interesting point about interviews I've never heard of before:

> There’s a very statistically significant relationship (p < 0.0008) between whether people think they did well and whether they’d want to work with the interviewer. ...it means that in every interview cycle, some portion of interviewees are losing interest in joining your company just because they didn’t think they did well, despite the fact that they actually did.
10 weeks ago
Render markdown with javascript.
markdown  web 
10 weeks ago
Extended Date/Time Format (EDTF) 1.0 Submission
A scheme for representing dates with varying levels of uncertainty. Also a draft extension to ISO 8601.

For example:

uncertain: possibly the year 1984, but not definitely
"approximately" the year 1984
some unspecified year in the 1990s.
time  iso8601  standards  reference 
december 2017
Uncle Bob is Ruining Software • Hillel Wayne
Someone being an effective programmer doesn't necessarily make them an authority on best practices.
programming  epistemology 
december 2017
OxidationPlan - Mercurial
Mercurial is getting rewritten in Rust (or parts, at least)
mercurial  rust  rewrite  c  performance  via:campbellr 
december 2017
A Patreon alternative where you pay in advance, allowing for drastically reduced transaction fees.
december 2017
Using an expression in substitute command | Vim Tips Wiki | FANDOM powered by Wikia
Also, another sweet trick is to replace matches with values from a list, using an existing block of text as an impromptu template:

let vals = ['a', 'bunch', 'of', 'words']
let i = 0
g/^/s/X/\=vals[i]/ | let i = i+1

Note that :g "sees" the `|` (unlike :sub and many other commands), so the assignment happens after each substitution.

For greater convenience and at the cost of indirection, you can define a function, say `Inc`, that increments a global variable (`i` in this case) but returns the old value:

let vals = ['a', 'bunch', 'of', 'words']
let i = 1
vim  text-processing 
october 2017
Developing ethical, social, and cognitive competence – Vividness
David Chapman summarizes Robert Kegan's compelling model of ethical, social, and cognitive competence through child -> young adult -> communal society -> systematic society -> fluid/meta-systematic society.
ethics  psychology  society  philosophy  DavidChapman  RobertKegan  via:ScottAlexander 
october 2017
"Stop Rate Limiting! Capacity Management Done Right" by Jon Moore - YouTube
How to apply backpressure to clients using an Additive Increase/Multiplicative Decrease scheme (like with TCP) based on the number of concurrent connections. Rate-limiting sucks because if the service isn't healthy connections build up on the proxies and the service stays overloaded. Backpressure needs to be propagated throughout the request path.

In the demo, multiple proxies to an app server start with a low limit for concurrent connections that slowly increases as OKs are returned by the app server. When the app server applies backpressure to a proxy it decreases the limit by 25% and rejects connections until the number of concurrent ones is under the limit. The sum of the concurrency limits for the proxies ends up hovering around the actual capacity of the app server, without any extra communication between the proxies or app server, and without any hardcoded limits on the proxies. Also, when the service is at full capacity the number of concurrent connections at the proxies can be predicted by Little's Law, NumConcurrent = ArrivalRate * Latency (on average), if the capacity (NumConcurrent) of the service is known.

It seems like app servers could also use AIMD to choose when to apply backpressure, decreasing the concurrency limit when average latency or something crosses some threshold.
videos  queues  scale  youtube  talks  distributed  StrangeLoop  JonMoore 
october 2017
The Mathematics of Crime and Terrorism - Numberphile - YouTube
Fry talks about how to model events that are mostly Poisson-distributed but also show clustering behaviour, like a burglar targeting a favourite neighbourhood or earthquakes and aftershocks, by adding exponentially-decaying "kicks" (Hawkes process).
math  probability  videos  HannahFry  youtube 
september 2017
Home | FLEEN
John Greene's generative art. Mosaics, shapes, etc.
programming  java  generative  art  geometry  graphics 
september 2017
Grandfathered In | Geoff Greer
"A useful way to recognize status quo bias is to ask, 'What things wouldn’t be allowed if they were introduced today?'"

Related is the concept of path dependence. From wikipedia:

Path dependence explains how the set of decisions one faces for any given circumstance is limited by the decisions one has made in the past, even though past circumstances may no longer be relevant.
september 2017
Up and Down the Ladder of Abstraction
On using visualizations to jump between levels of abstraction to gain an intuitive understanding of a system.
visualization  abstraction  BretVictor 
september 2017
Scalability! But at what COST? | USENIX

We offer a new metric for big data platforms, COST, or the Configuration that Outperforms a Single Thread. The COST of a given platform for a given problem is the hardware configuration required before the platform outperforms a competent single-threaded implementation. COST weighs a system’s scalability against the overheads introduced by the system, and indicates the actual performance gains of the system, without rewarding systems that bring substantial but parallelizable overheads.

We survey measurements of data-parallel systems recently reported in SOSP and OSDI, and find that many systems have either a surprisingly large COST, often hundreds of cores, or simply underperform one thread for all of their reported configurations.
databases  graph-theory  programming  performance  benchmark  research  distributed 
september 2017
How I Make Explorable Explanations
I particularly liked the part about story-telling using "buts" instead of "thens".
teaching  learning 
september 2017
Noise Functions and Map Generation | Red Blob Games
Fun, approachable, and practical introduction to noise generation. Focuses on using an inverted Fourier transform to create noise containing a spectrum of weighted frequencies.
noise  programming  algorithms  random  games 
september 2017
Circle Division Solution - YouTube
An explanation of a neat circle puzzle involving combinatorics, graphs, Euler's characteristic formula and pascal's triangle.
math  geometry  graph-theory  youtube  videos  puzzles  GrantSanderson  3Blue1Brown 
september 2017
Essence of linear algebra preview - YouTube
Geometric intuitions for linear algebra concepts. Top notch explanations and animations.
videos  youtube  linear-algebra  learning  GrantSanderson  3Blue1Brown 
september 2017
Filip Dujardin Photography
Fantastic yet plausible architectural composites.
art  architecture  photography  photo-gallery 
september 2017
How bad is the Windows command line really?
I knew Batch was bad from how painful it's been anytime I've touched it, but apparently it's even worse than I thought.
windows  shell 
september 2017
A libc/POSIX layer for Windows written in Native API.
windows  portability  programming  c  libc  posix 
august 2017
Shortcat - Keyboard productivity app for Mac OS X
Control the pointer using the keyboard and the Accessibility API.
keyboard  osx  tools 
august 2017
The rEFInd Boot Manager: Methods of Booting Linux
rEFInd's docs are quite good for understanding UEFI and the boot process.
uefi  linux  booting  learning 
august 2017
Keynote by Damian Conway - "Three Little Words" - YouTube
Damian Conway embarks on a path of madness and writes a Perl5-parsing regex so he can define new keywords in pure Perl so he can implement the `class`, `has`, and `method` keywords a la Moose/Perl6 for his Declarative Inside-Out Syntax ("Dios") module for Perl 5.12+.

He also presents a number of other sweet toys and tools at the end, especially Test::Expr, and Data::Dx.
videos  youtube  perl  programming  regex  parsing  oop  talks 
august 2017
Suzanne Sadedin's answer to What do scientists think about the biological claims made in the anti-diversity document written by a Google employee in August 2017? - Quora
Detailed response to James Damore's memo by an evolutionary biologist. The best response I've seen.

"That doesn’t support the claim that gender-liberal societies allow men and women to express innate differences more freely. If that interpretation were correct, women and men should diverge in gender-liberal societies independent of egalitarianism. Instead, men change personality in more egalitarian societies regardless of gender issues; women don’t. How can we explain that? Maybe personality differences are mediated by power. It makes sense that relatively powerless individuals should be more agreeable and socially alert, less assertive, and more fearful/neurotic — that’s simply rational."

"True, gender gaps don’t always imply sexism. But sexism always implies sexism. We don’t need to infer the existence of sexism from the gender gap in software engineering, we can see it in the countless expressions of misogyny we hear from software engineers."

"Whether the binding values are adaptive depends on your situation; claiming that “neither side is 100% correct and both viewpoints are necessary for a functioning society” is vacuous. In evolutionary timescales, there are scenarios when one side is useful, and scenarios when the other is, which is presumably why our neurological architecture predisposes us to both. But in general, Google has done magnificently well without resorting to the binding values — and let’s hope it continues to, because an authoritarian, fanatical and puritanical Google that dehumanizes outsiders would be very, very bad news."
gender  google  society  JamesDamore 
august 2017
On That Google Memo About Sex Differences | Psychology Today
David Schmitt, whose [Sex Differences in Big Five
Personality Traits Across 55 Cultures](http://www.bradley.edu/dotAsset/165918.pdf) paper was cited in James Damore's memo, estimates the magnitude of effects various sex differences could have on the gender gap and endorses both affirmative action and discussion about sex differences.
gender  google  JamesDamore 
august 2017
A Brief History of Women in Computing | Faruk Ateş
Faruk argues that the following factors have kept women out of software development: sexist advertising, aptitude and personality tests, workplace environments, and pop culture portrayals of nerds. He also says such factors could compound to fully explain the gender gap.

He uses the point that India has near gender parity in compsci to argue biology has no bearing on the gender gap and that it's purely cultural. Seeing the gender balance of other fields in India would be a good test of a point Scott Alexander's brought up in [Contra Grant on Exaggerated Differences](http://slatestarcodex.com/2017/08/07/contra-grant-on-exaggerated-differences), that gender differences become more pronounced in more progressive and gender-equal countries.
gender  society  JamesDamore  FarukAtes 
august 2017
Contra Grant On Exaggerated Differences | Slate Star Codex
Scott makes a good case for women's greater interest in working with people over things being a factor in the gender gap in STEM and presents a model that possibly explains why the gender gap that disappeared in other previously male-dominated fields remains in tech.

Also, an observation that seems so obvious but that I've never thought of:

"[A]ny domain with more men than women will see more potential perpetrators concentrating their harassment concentrated on fewer potential victims, which will result in each woman being more harassed."
google  gender  society  ScottAlexander 
august 2017
Preventing server overload: limit requests being processed (evanjones.ca)
Interesting point: if a queue is being used, dropping requests from the head results in lower overall latency than dropping the tail.
scaling  programming  queues 
july 2017
The Evolution of Trust
Beautiful little game showing the implications of the prisoner's dilemma on trust.
games  learning  society 
july 2017
--force considered harmful; understanding git's --force-with-lease - Atlassian Developers
From the manpage:

--force-with-lease alone, without specifying the details, will protect all remote refs that are going to be updated by requiring their current value to be the same as the remote-tracking branch we have for them.
july 2017
Chromium Notes: Ninja, a new build system
How slow Chrome build times on Linux motivated Evan Martin to write Ninja.
build  programming  tools 
july 2017
The curse of too many dimensions | Smash Company
"The common theme of these problems is that when the dimensionality increases, the volume of the space increases so fast that the available data become sparse."
july 2017
fzf 0.16.10
"You might have noticed the performance regression between 0.13.5 and 0.15.9 in the above figure. That's because of the new search algorithm introduced in 0.15.0. The new algorithm, a variant of Smith-Waterman algorithm, requires more computation, but it is guaranteed to find the matching substring with the best score."

Sequence alignment algorithms, commonly used in bioinformatics, are relevant for fuzzy search.
search  algorithms 
july 2017
« earlier      
3blue1brown abstraction acm agile ai alankay alcohol algorithms analytics anatomy android animation ansible api apl apple apps architecture art assembly audio automation averypennarun backup bash benchmark bitcoin book books boxing browser bsd build business c c++ camera canada cap career cgpgrey charting chat chriswellons chrome cli clojure code-review coffee collaboration color comedy comic comics common-lisp comparison compatibility compilers compression compsci concurrency container containers cooking crime critique cryptography cs css culture cycling d3 danluu database databases dating davidchapman debug debugging dedupe depression design desktop development devops dinner distributed distro diversions django dns docker documentation drm dtrace economics editor editors electronics emacs energy engineering environmentalism epistemology erlang error-handling estimating estimation ethics expect failure feminism fighting filesystem filesystems fitness food foss functional funny games gaming gc gdb gender generative genetics geometry gifs gifts git github gnu golang google gpg grantsanderson graph-theory graphics grep guide hadoop hardware haskell health hiring history hosting howto html http humor images init interview interviews iterators jamesdamore java javascript json k keyboard language latex lauriepenny learning library linear-algebra linguistics linux lisp logging logic mac machine-learning maciej-ceglowski macros make management manufacturing markdown maryrosecook math meetings memory mercurial messaging metaprogramming microservices microsoft middleware midori migration mobile monitoring music mysql naming networking nginx nlp nosql ocaml oop openstack operating-systems ops optimization oracle os osx packaging painting parsing password patterns pdf performance perl philosophy photo-gallery photography pinboard plan9 podcast politics portability posix postgres postmortem powershell practices presentations probability productivity products profiling programming prolog prose psychology puzzle puzzles python queues quotes random react recipes refactoring reference regex reliability religion remote replication research rest review reviews rewrite richhickey robots roguelike ruby running rust scaling scanning science scifi scottalexander screen scrum search security seo sex shell signals slides smb soa society software solaris sorting sports sql squats ssh standards statistics stock story style sync sysadmin talks tcl tdd teaching teamwork terminal testing text-processing themorningpaper time timeseries tmux tools toys troubleshooting tutorial type-systems typography ui unclebob unix ux vcs versioning via:akerboom via:boingboing via:campbellr via:drmaciver via:jwz via:onethingwell via:popular via:reddit via:scottalexander via:starslatecodex via:torboto video videos vim vimeo virtualenv visualization web webgl weightlifting wheel window-manager windows women writing wwii x11 xml yossikreinin youtube

Copy this bookmark: