1192
Liberapay
A Patreon alternative where you pay in advance, allowing for drastically reduced transaction fees.
crowdfunding 
6 days ago
Twiddler 3 by Tek Gear
Single-hand chording keyboard.
products  keyboard 
12 days ago
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
s/X/\=vals[Inc(1)]/
vim  text-processing 
9 weeks ago
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 
10 weeks ago
"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 
10 weeks ago
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 
10 weeks ago
Home | FLEEN
John Greene's generative art. Mosaics, shapes, etc.
programming  java  generative  art  geometry  graphics 
10 weeks ago
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.
GeoffGreer 
11 weeks ago
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 
11 weeks ago
Scalability! But at what COST? | USENIX
Abstract:

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 
11 weeks ago
How I Make Explorable Explanations
I particularly liked the part about story-telling using "buts" instead of "thens".
teaching  learning 
11 weeks ago
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 
12 weeks ago
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 
12 weeks ago
Essence of linear algebra preview - YouTube
Geometric intuitions for linear algebra concepts. Top notch explanations and animations.
videos  youtube  linear-algebra  learning  GrantSanderson  3Blue1Brown 
12 weeks ago
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
midipix
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.
git 
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."
math 
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
Radical Book Club: the Decentralized Left | Status 451
Long review of books on political activism.

Some quotes:

My take on Lefty swarming outrage, for example, is that the tactic is swarming outrage, but the strategy is operant conditioning. If there’s a Halloween party where white people wore sombreros or something, people get uncomfortable before the Lefties even react, not necessarily because they agree with the Lefty opinion but because they’re anticipating the unpleasant Lefty reaction.

--

One mistake people make is falling in love with a particular tactic (streetfighting, for example). Smucker says: among tactics, message, and movement, be least attached to tactics. Tactics don’t define you. The movement is what matters.

--

The term “affinity group” term comes from Leftist anarchists in Spain, who organized their guerrillas in units based on small groups of close friends who knew each other very well.
...
What Morea realized: on top of their other benefits, affinity groups (which he likened to “a street gang with an analysis”) could be useful for avoiding conspiracy charges — not just because they’re hard to break into, but because there are so many conspiracies that they’re impossible to untangle.

--

This got a lot of media coverage (which they’d planned out, of course). Their approach, hugely influential, was called “prefigurative direct action.” What does “prefigurative” mean? It means your protest action foresees the world you plan to win. For example, trees growing instead of a nuclear plant. An earlier example of prefigurative direct action: black people sitting at a segregated lunch counter. The act puts people who witnesses it into an integrated future.

--

But not all of the protestors were roleplaying protestors, or cops. No: some were tasked with roleplaying average people watching the protest on TV, and giving feedback on how each option looked. Which made the protestors realize that to normies, violence wouldn’t play so hot.

--

So if you’ve ever wondered why Occupy had those endless discussions: that’s why. It’s not just anarchism. It’s Quakerism. Yeah: much of the modern radical Left is essentially made up of secular Quakers who run decision-making like Quaker meetings. By “secular Quakers,” I don’t mean literal Quakers — I mean they’re basically running Quaker meetings without knowing it! This blew my dang mind.

--

After Ferguson October, Ferguson Action, Black Lives Matter, and other national networks coordinated with each other in conference calls for weeks. When the grand jury announced officer Darren Wilson was not being indicted for shooting Michael Brown, they were ready. They’d been ready. When the grand jury’s verdict was announced in late November, plans were already in place and awaiting the go signal.

Result: within 48 hours of the verdict, there were protests in 170 cities. THAT IS WHAT EFFECTIVE ORGANIZATION CAN DO.

--

If the only people you talk to are your active allies, and you make your whole subculture increasingly self-referential and geared toward active allies, YOU’RE DOING IT WRONG. If you treat everybody in every other category — passive allies and neutrals included — as if they’re all active opponents and you’re the righteous few, YOU’RE DOING IT WRONG. Per Joshua Kahn Russell, “Both of these approaches virtually guarantee failure. Movements win not by overpowering their active opponents but by shifting the support out from under them.”
politics  management  via:JuliaGalef 
july 2017
Survey of Rounding Implementations in Go · Matt Jibson
Rounding floats is hard. Also, Go 1.10 will include math.Round.
golang  programming  floating-point 
july 2017
Solving the Romeo and Juliet Problem - 250bpm
Until now forging alliances through marriage always seemed silly to me, but the ability to align incentives across groups isn't to be scoffed at.
cryptocurrency 
july 2017
Myers Diff Algorithm - Code & Interactive Visualization
Analysis of Myers' diff algorithm, with visualizations.
algorithms  compsci  programming 
june 2017
The Atomic Bomb Considered As Hungarian High School Science Fair Project | Slate Star Codex
An incredible number of 20th century geniuses were Ashkenazi Jews, who are particularly predisposed to genetic disorders correlated with increased IQ.
science  genetics  ScottAlexander 
june 2017
The End Of Object Inheritance & The Beginning Of A New Modularity - YouTube
An analysis of why composition produces better designs than inheritance.

Compared to inheritance, composition:
- reduces the complexity of relationships (bidirectional to unidirectional)
- exposes structure, since types are more explicit and unidirectional relationships form obvious layers
- exposes/limits violations of abstraction (Make illegal behavioural interactions impossible.)

Also:

- Make small methods and objects, minimizing relationships and favouring unidirectional relationships.
- Write interfaces to be natural from the perspective of the implementing module, not the client's. Stateless adapters to massage data into pleasing shapes for other modules are cheap.
youtube  oop  videos  programming  design  via:Glyph 
june 2017
Big Data with Golang Instead of MapReduce
Using Go to process a moderately large volume of data on a single beefy machine, instead of provisioning a Spark or Hadoop cluster.
golang  analytics  hadoop  comparison 
may 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 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 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 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 kafka 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 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 richhickey robots ruby running rust scaling 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 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 zeromq

Copy this bookmark:



description:


tags: