This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// How to use this? | |
// * Navigate to the first page of your "Digital Content -> Books" section. | |
// * Figure out where your kindle is in the list and update `deviceIndex` below. | |
// * Open up a dev console and paste all of this in. | |
// * Type `downloadAll(0);` into the dev console and hit enter. | |
// * Repeat the above step for each page of books. | |
// | |
// This is tested in latest Firefox, and will probably break the second Amazon | |
// changes anything on the pages used. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct Sanitizer<I: Iterator> { | |
iter: PeekMoreIterator<I>, | |
needle: Vec<I::Item>, | |
} | |
impl<I: Iterator> Sanitizer<I> | |
where | |
I::Item: PartialEq, | |
{ | |
fn new(haystack: I, needle: Vec<I::Item>) -> Self { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun main() { | |
var allUnder = 0 | |
var anyOver = 0 | |
repeat(500_000) { | |
val boxes = (0 until 100).toList().shuffled() | |
if (allUnderFifty(boxes)) { | |
allUnder++ | |
} else { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sensor: | |
- platform: template | |
sensors: | |
front_door_status: | |
value_template: >- | |
{%- if is_state("sensor.front_door_lock_type", "19") -%} | |
{%- if is_state("sensor.front_door_lock_level", "1") -%} | |
Matt | |
{%- elif is_state("sensor.front_door_lock_level", "2") -%} | |
Mark |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun main() { | |
val nonBlockingTime = measureTime { runBlocking { nonBlocking() } } | |
println(nonBlockingTime) | |
val pool = Executors.newFixedThreadPool(1000) | |
val blockingTime = measureTime { blocking(pool) } | |
println(blockingTime) | |
} | |
suspend fun nonBlocking(total: Int = 1000) = coroutineScope { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This is mostly here for my reference. If someone on the internet finds this, I hope it's | |
# helpful, but don't trust it! I'm pretty new at this, which is why I have to keep exhaustive | |
# notes like this. The corollary then, is that if you're a pro at this, and notice something | |
# dumb I'm doing, please let me know. | |
# | |
# The idea here is to end up with an ecrypted BTRFS filesystem running Snapper in a way that | |
# makes rollbacks super easy. I tried to keep things simple, so the swap is a file, not a | |
# partition (that would have to be encryped separately). The subvolume layout is totally flat, | |
# to make rollbacks a simple matter of moving the volumes around. When this is all done, a | |
# simple ls of either .snapshots directory will show you your live filesystem right alongside |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* A very simple, non-blocking semaphore. | |
*/ | |
class Semaphore(capacity: Int) { | |
private val channel = Channel<Boolean>(capacity) | |
suspend fun acquire() { | |
channel.send(true) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let opening = ['{', '[', '(']; | |
let closing = ['}', ']', ')']; | |
let all = opening.concat(closing) | |
function validate(s) { | |
if (s.length == 0) return true; | |
// ignore unknown chars at the head | |
while (all.indexOf(s.charAt(0)) == -1) { | |
s = s.slice(1); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'unirest' | |
# Set these by going to etron.audiusa.com/web/aucwp/login once by hand and figuring them out | |
EMAIL = "[email protected]" | |
PASSWORD = "password" | |
ACCOUNT = 9999 | |
PIN = 9999 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'open-uri' | |
require 'time' | |
require 'json' | |
class Runner | |
def initialize | |
@base = "http://192.168.0.10/DCIM/100OLYMP" |
NewerOlder