Buffers and windows: The mystery of ‘ssh’ and ‘while read’ in excessive detail – Vidar’s Blog
I was so confused the first time I accidentally had ssh swallow stdin I intended for a while loop. Holen gives a great explanation of exactly why it happens.
VidarHolen  cli  ssh  shell  linux 
5 weeks ago
Maybe Not - Rich Hickey - YouTube
On the advantages of decomplecting types from optionality.
clojure  programming  videos  talks  RichHickey  youtube  type-systems 
7 weeks ago
How to convert enum names to string in c - Stack Overflow
Use recursive macro expansion to associate data together, like enum identifiers, values, and name strings.

Also, there's a slightly less elegant but maybe easier to understand variant of the technique here: http://www.drdobbs.com/cpp/the-x-macro/228700289
c  programming  macros 
7 weeks ago
Pony - Pony
"Pony is an open-source, object-oriented, actor-model, capabilities-secure, high-performance programming language."
via:campbellr  programming  language  concurrency 
11 weeks ago
Özgür Baba - Dertli Dolap - YouTube
Old Turkish dude playing a saz/baglama/lute and singing outside a farmhouse for the cat and chickens.
music  youtube  videos  turkey 
12 weeks ago
How can the last command's wall time be put in the Bash prompt? - Stack Overflow
This is crude but so sweet. By zeroing SECONDS using the DEBUG trap and then displaying SECONDS in your prompt you can time how long commands take as well as how long a shell has been idling.

Note, though, that the DEBUG trap triggers on each simple command invocation, among other things, so when running `$ sleep 3 && echo hi` the echo command zeroes the timer, too. Also, it doesn't work with PROMPT_COMMAND.
bash  cli 
12 weeks ago
The BioDigital Human™ – xeolabs
History of the WebGL tech behind the impressive BioDigital Human visualization.
LindsayKay  anatomy  web  visualization  history  webgl  graphics 
12 weeks ago
""It's Just Matrix Multiplication": Notation for Weaving" by Lea Albaugh - YouTube
A little bit of linear algebra and a lot about weaving and "network drafting" in particular.
textiles  talks  youtube  StrangeLoop  LeaAlbaugh  linear-algebra  art  generative 
october 2018
Kill sticky headers
For some reason I though you couldn't use bookmarklets in chrome via keywords, but you *can* totally put a `javascript:` url in as a search engine. And of course Firefox lets you assign a keyword to any bookmark. Making one to delete sticky headers is amazing. It's a blunt approach, but the reward/effort ratio is great on most sites; webapps that use fixed elements for non-annoying purposes can require more finesse, of course.

It's so much better than my previous approach of trying to use Stylish rules.
AlisdairMcDiarmid  javascript  web  design 
october 2018
"The Hard Parts of Open Source" by Evan Czaplicki - YouTube
Problems with internet communication and some ideas for systems that nudge people into having more intentional discussions.
EvanCzaplicki  community  talks  videos  youtube  StrangeLoop 
october 2018
spawn() of Satan | tavianator.com
Pros/cons of fork()-style process spawning. Issues with posix_spawn(). Hope for a brighter future.
TavianBarnes  linux  unix  syscalls  programming 
october 2018
Embed me some HTML, Please - apenwarr
The C preprocessor's stringizing operator, "#", converts a macro's argument to a string constant, newlines and quotes and all.

#define qq(s) #s

int main()
printf(qq(blah blah\n "quoted" stuff (and some parens)
with newlines));
return 0;
AveryPennarun  c  quoting 
september 2018
"Tackling Concurrency Bugs with TLA+" by Hillel Wayne - YouTube
It starts slow---I skipped most of the first 12 mintues---but he goes on to give some compelling examples from his work where TLA+ gave deep insights into his product's architecture.
HillelWayne  tla+  videos  youtube  talks  StrangeLoop 
september 2018
(PDF) Text comparison using data compression
Overview of techniques for text comparision using data compression. I looked this up after seeing this [tweet](https://twitter.com/ccshan/status/1039214903498866688), which contains this script:

separate=$(for f; do gzip -9 -c < "$f"; done | wc -c)
together=$(cat "$@" | gzip -9 -c | wc -c)
echo "$separate / $together = $((separate*100/together))%"

The technique in the script is referred to as "Compression Based Dissimilarity"in the paper, although they have the fraction flipped.
compression  text-processing  papers  JanPlatos  VaclavSnasel  MichalPrilepok  Chung-chiehShan 
september 2018
BUILD: Toolmaker's Clamp Thingy - YouTube
All of ThisOldTony's videos are wonderful, but this is one of his best.
ThisOldTony  videos  youtube  funny  machining 
september 2018
"The Biological Path Towards Strong AI" by Matt Taylor - YouTube
Numenta is trying to implement intelligence with better models of biological neurons.
talks  videos  youtube  MattTaylor  machine-learning  Numenta 
august 2018
A little bump in the wire that makes your Internet faster | apenwarr
"This approach just feels more magical, because you'll have a physical box that produces negative latency."

Fat flows fill big buffers and then thin flows get stuck behind them, so install a speed bump that keeps track of the different flows (Flow Queueing), puts the thin ones at the head of the line, and throttles the fat ones so the problem doesn't just move to upstream routers/buffers (Controlled Delay).
AveryPennarun  networking  queues  tcp  openwrt 
august 2018
Doing the Two-Step for Efficient Reversible Deletes | David R. MacIver
Thoughts on Knuth's Dancing Links paper and an alternative data structure for efficient undo when doing recursive depth first search and backtracking, such as for SAT solving.

I've never read Dancing Links but I had the impression it was way fancier than MacIver portrays it.
algorithms  DonaldKnuth  DavidMacIver  data_structures 
july 2018
Joe Duffy - Hello, Pulumi!
Duffy shares his motivations for creating Pulumi, a tool that lets you use, configure, and deploy to various clouds, using real languages.
cloud  architecture  JoeDuffy  deployment 
june 2018
Formally Specifying UIs • Hillel Wayne
Some ideas on visualizing state machines, particularly for UIs.
HillelWayne  ui  visualization 
june 2018
Announcing glom: Restructured Data for Python — Sedimental
Brings some declarative data processing to Python. Reminds me of miller's emit command.
python  library  MahmoudHashemi 
may 2018
tpope/vim-apathy: apathy.vim: Set the 'path' option for miscellaneous file types
Pope explains Vim's commands for finding included files and patterns in included files.

A couple commands seem particularly useful to referring to definitions:

- `[i` prints the first line containing the word under the cursor
- `[<c-i>` jumps to that line

I often use `*` and then search forward a few times to find a definition, and [<c-i> seems much nicer.
TimPope  github  vim 
may 2018
"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 
april 2018
Tools for making git visualizations.
git  graphics  javascript  visualization  tools 
march 2018
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 
february 2018
"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 
february 2018
Drawing better looking curves / Observable
Using a "curvature comb" to visualize the smoothness of a Bezier curve.
graphics  bezier  via:MikeBostock 
february 2018
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.
february 2018
Render markdown with javascript.
markdown  web 
february 2018
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
« earlier      
3blue1brown abstraction acm agile ai alankay alcohol algorithms alternative analytics anatomy android animation ansible api apl apple appliedscience apps architecture art ascii assembly audio automation averypennarun backup bash benchmark benkrasnow bitcoin book books boxing browser bryancantrill bsd build business c c++ camera canada cap career cgpgrey charting chat chriswellons chrome cli clojure cloud code-review coffee collaboration color comedy comic comics common-lisp community comparison compatibility compilers compression compsci concurrency config container containers cooking crime critique cryptography cs css culture cycling d3 danluu data_structures database databases dating davidchapman db debug debugging dedupe demo deployment depression design desktop development devops dinner distributed distro diversions django dns docker documentation drawing drm dtrace economics editor editors electronics emacs energy engineering environmentalism epistemology erlang error-handling estimating estimation ethics expect facebook failure feminism fighting filesystem filesystems fitness food foss functional funny games gaming gc gdb gdc gender generative genetics geometry gifs gifts git github gnu golang google gpg grantsanderson graph-theory graphics grep guide hadoop hardware haskell health hillelwayne hiring history hosting howto html http humor images init interview interviews iterators jamesdamore java javascript json juliaevans k keyboard language latex lauriepenny learning library linear-algebra linguistics linux lisp logging logic mac machine-learning maciej-ceglowski macros make management manufacturing markdown martinsustrik maryrosecook math meetings memory mercurial messaging metaprogramming microservices microsoft middleware midori migration mobile monitoring music mysql naming nathanieljsmith networking nginx nickycase nlp nosql ocaml oop openstack openwrt operating-systems ops optimization oracle os osx packaging painting papers parsing password patterns pdf performance perl philosophy photo-gallery photography pinboard plan9 podcast politics portability posix postgres postmortem powershell practices presentations probability procedural 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 strangeloop style sync sysadmin talks tcl tcp 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: