⊃ Endaga

I worked for about six months at Endaga, building low cost cellular infrastructure. Endaga built cell phone tower hardware – entrepreneurs could buy our equipment and use our cloud services to become the “Verizon” of their area. They could buy SIM cards and sell service to people in their community. Our system allowed operators to set their own prices for calls and SMS and, (eventually) data – we provided something 2.5G-ish, with really slow GPRS-based data. This paper (pdf) provides a lot of detail about the network and its operation.

more ⪧

⊃ quandry

I’m messing with scikit-image and trying to solve jigsaw puzzles.

The current pipeline (but see the code on github for a more up-to-date picture):

more ⪧

⊃ clojurescript

I’m going through the cljs quickstart as I wait for the lispcast Om video to come out.. need javac 1.8 (aka JDK 8) and the ClojureScript JAR in the root of the project this is a lein-less tutorial, presumably there are other projects that provide that templating cljs uses the Google Closure Library to provide namespaces, dependency maps and other features a clojure build script sits in the top level

more ⪧

⊃ week 37 reading, 2015

Holodomor: a man-made famine in Ukraine that killed 2-7M people in 1932 and 33 unbelievable, I’d never heard of this.. it seems largely accepted that Soviet Union policies intentionally created famine, possibly to suppress Ukranian nationalism the food supply was mismanaged in various ways, and the farm output in those years was lower because the First Five Year Plan mandated the growing of sugar beets and cotton, rather than the sowing of grain.

more ⪧

⊃ think bayes

from Downey’s Think Bayes book:

more ⪧

⊃ hashicorp

Just about every day I find myself using vagrant, a tool for managing VMs, and now I’ve discovered a lot of other great-looking new tools also made by hashicorp: terraform is like ansible but for cloud infrastructure – so with just a config file and the CLI, you can stand up an AWS instance, for example. vault manages the access of various secrets. I’ve always had static, locally-stored dotfiles with pw protection, but this can handle dynamic secrets, leases, audits..

more ⪧

⊃ vi

I just read through vimtutor and found some things I’d like to start using: change <motion> with c, instead of, say, dwi replace mode: single chars with r or R to just start clobbering text “find under cursor” with * still getting used to s instead of xi N to go backwards through search results Some other notes: find and replace within a selection: select a block visually type : to start entering a command s/red/green/g to change all reds to greens this was a bit confusing as non-visual mode selection is the same command but with a percent sign :/ find/replace a word under the cursor as per this article type * ciw (change inner word) <esc> then n (next occurrence) and .

more ⪧

⊃ clojure

going through the LispCast Clojure Tutorial videos.. methods like contains? that end in ? return a boolean by convention the dotimes [e n] form will execute some block n times, maintaining a counter in e sets are collections that look like #{:milk :egg :flour} – duplicate keys cannot be included multi-arity functions often follows this pattern: (defn add-ingredient ([ingredient] (add-ingredient ingredient 1)) ([ingredient amount] ; ... )) if/elif/else statements can be constructed with cond.

more ⪧

⊃ vmstat

I typically use top to look at system performance and per-process metrics, but vmstat gives an alternative look:

more ⪧

⊃ what happens when..

..you run a program from the shell? background, from IITK: the shell wraps the kernel, and the kernel determines what other processes can run and it also mediates access to the hardware any such hardware access / general io must be made through system calls the shell: when focused, the kernel echoes keystrokes to the screen when Enter is pressed, the line is passed to the shell, and the shell will attempt to interpret this input as a command the shell figures out you want to run /bin/ls (or whatever) and it makes a system call to start /bin/ls as a child process (forking) and give it access to the screen and keyboard through the kernel this forking results in a copy of the environment from the parent process to the child then the shell sleeps, waiting for that command to finish..

more ⪧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23