I've recently been amazed, if not mind-blown, by how a very simple, "one-line" SAT solver on Interaction Nets can outperform brute-force by orders of magnitude by exploiting "superposed booleans" and optimal evaluation of λ-expressions. In this brief note, I'll provide some background for you to understand how this works, and then I'll present a simple code you can run in your own computer to observe and replicate this effect. Note this is a new observation, so I know little about how this algorithm behaves asymptotically, but I find it quite
//#include <dlfcn.h> | |
#include <inttypes.h> | |
#include <math.h> | |
#include <pthread.h> | |
#include <stdatomic.h> | |
#include <stdint.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> |
// Place your key bindings in this file to override the defaults | |
[ | |
{ | |
"key": "space", | |
"command": "dance.openMenu", | |
"args": { | |
"input": "leader" | |
}, | |
"when": "!inputFocus || editorTextFocus && dance.mode == 'normal'" | |
}, |
(def ■ '■) | |
(def ▲ '▲) | |
(def ● '●) | |
(first [● ■ ▲]) ; ● | |
(second [● ■ ▲]) ; ■ | |
(nth [● ■ ▲] 2) ; ▲ | |
(rest [● ■ ▲]) ; (■ ▲) | |
(last [● ■ ▲]) ; ▲ | |
(butlast [● ■ ▲]) ; (● ■) |
Red [ | |
Description: "Pre-load to mimic range/bounds syntax" | |
Date: 22-May-2020 | |
Author: @toomasv | |
] | |
context [ | |
default-start: func [stop step][ | |
case [ | |
any [percent? stop percent? :step][1%] | |
any [pair? stop pair? :step][1x1] |
I was at Amazon for about six and a half years, and now I've been at Google for that long. One thing that struck me immediately about the two companies -- an impression that has been reinforced almost daily -- is that Amazon does everything wrong, and Google does everything right. Sure, it's a sweeping generalization, but a surprisingly accurate one. It's pretty crazy. There are probably a hundred or even two hundred different ways you can compare the two companies, and Google is superior in all but three of them, if I recall correctly. I actually did a spreadsheet at one point but Legal wouldn't let me show it to anyone, even though recruiting loved it.
I mean, just to give you a very brief taste: Amazon's recruiting process is fundamentally flawed by having teams hire for themselves, so their hiring bar is incredibly inconsistent across teams, despite various efforts they've made to level it out. And their operations are a mess; they don't really have SREs and they make engineers pretty much do everything,
= Time & Versioning in Graphs
== Time as Attributes
- Long (Seconds or Milliseconds since Epoch)
- String ISO-XXX -> comparable
- Simple String yyyy-mm-dd
Issues:
If you use git on the command-line, you'll eventually find yourself wanting aliases for your most commonly-used commands. It's incredibly useful to be able to explore your repos with only a few keystrokes that eventually get hardcoded into muscle memory.
Some people don't add aliases because they don't want to have to adjust to not having them on a remote server. Personally, I find that having aliases doesn't mean I that forget the underlying commands, and aliases provide such a massive improvement to my workflow that it would be crazy not to have them.
The simplest way to add an alias for a specific git command is to use a standard bash alias.
# .bashrc
Sometimes you want to have a subdirectory on the master
branch be the root directory of a repository’s gh-pages
branch. This is useful for things like sites developed with Yeoman, or if you have a Jekyll site contained in the master
branch alongside the rest of your code.
For the sake of this example, let’s pretend the subfolder containing your site is named dist
.
Remove the dist
directory from the project’s .gitignore
file (it’s ignored by default by Yeoman).