Skip to content

Instantly share code, notes, and snippets.

View josh-richardson's full-sized avatar
🏠
Working from home

Josh R josh-richardson

🏠
Working from home
View GitHub Profile
CompletableFuture[] sendRequestsToOthers(Stream<Box.PublicKey> addresses, Serializable request, String endpoint) {
return addresses.map(pKey -> {
URL recipientURL = networkNodes.urlForRecipient(pKey);
log.info("Propagating request to {} with URL {} {}", pKey, recipientURL.toString(), endpoint);
final CompletableFuture<Boolean> responseFuture = new CompletableFuture<>();
final byte[] payload = Serializer.serialize(CBOR, request);
httpClient
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDD4nijjgNZYot6YS1aEC/YzjeRp0k22UHrPg46XEDWZFUSR3qQrdmxDcjn5Zf0QUDNdxvAWfuifW6cSd5JP4OcEw/nLavONhNReXV6Pdm6tLdlLuOAwiags6bXRCimOyPnnwlT1silKNMg8tDl7XN8wkUiC0eXobzVT+KPaH2EBWgJMH4jiidCUnKL/I70fhNQEtPlr8uuVxL719TQ/7obOoj1jmuLPvIyOlIe6jLN+KNRqZHG26cOHedVa0WbEhRGS3cSTMRQQEV5NSF3A0FGIMMHDG5F6+OXUP/gBhmvUadozvqtQOFtbmaKGg2VoSkLijNvfWHd11wFxx8Nx0eRUgUFNL3SsJURh8CqoL5nfpq8dgjs4eTWbf5iQIiWsD/9D/8Bj7RQB4zJpBsVvk7JpvZcAG2czwyDVzTMeCnvlgtmkcKkazOohL8RYtko4dd83iCq2d0Qps0u/MN21aCeQ0wKIv6XXRAoNlXrj8PMkgKV4y2yWCWyzKsMz9VsYIkClrd3N32Zoxb7cF5D19sgLC/AiVxzTiM5POJDLa64uG+S1va1sVfWyrghPLXc85eYbk7wR+fATJIw2yN3bYsp9p2Q4yl5Z2B79qeU1OJK0FqCPIqfsUlLo0PtpNrJbxx+qX/ZGIA41/H+BIBVggZaqQxfavekCZ51rkXiV6zg4w== joshua@opus
pragma solidity 0.5.8;
import "@openzeppelin/contracts/math/SafeMath.sol";
contract Campaign {
using SafeMath for uint256;
enum State {
Fundraising,
Funded,
Failed,
function vote() external inState(State.Funded) {
if (now > successBy) {
state = State.Failed;
revert();
}
require(msg.sender != creator);
require(contributions[msg.sender] > 0);
require(votes[msg.sender] != currentStage);
votes[msg.sender] = currentStage;
pragma solidity 0.5.8;
import "@openzeppelin/contracts/math/SafeMath.sol";
contract Campaign {
using SafeMath for uint256;
enum State {
Fundraising,
Funded,
Failed,
joshua@alecto  /tmp/looking.WQtn  solc file.sol --bin
======= file.sol:OwnedToken =======
Binary:
608060405234801561001057600080fd5b506040516103f33803806103f38339818101604052602081101561003357600080fd5b810190808051906020019092919050505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060028190555050610317806100dc6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631a6952301461003b578063898855ed1461007f575b600080fd5b61007d6004803603602081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100ad565b005b6100ab6004803603602081101561009557600080fd5b8101908080359060200190929190505050610281565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffff
@josh-richardson
josh-richardson / twitter-add-button.js
Created March 12, 2020 17:41
Add a button to easily block your followers to twitter
let fetchToken = async () => {
let mainUrl = null;
for (let script of document.body.querySelectorAll("script[src]"))
if (/\/main\.[^\/]*\.js$/.test(script.src))
mainUrl = script.src;
if (!mainUrl)
return null;
let response = await fetch(mainUrl);
let mainSource = await response.text();
@josh-richardson
josh-richardson / tampermonkey_script.js
Last active May 9, 2020 00:32
Checks for available delivery slots on Amazon Primenow UK, without having to install a thousand modules, run docker & a headless Chrome instance. Just load up the user-script and leave a tab open. If an alarm sounds, there are delivery slots.
// ==UserScript==
// @name Amazon PrimeNow slot checker
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Check for delivery slots on Amazon Prime now. Do make sure that if you're using a browser that blocks autoplay by default, you whitelist the PrimeNow domain.
// @author Joshua Richardson
// @match https://primenow.amazon.co.uk/checkout/enter-checkout*
// @grant none
// ==/UserScript==
06-11 17:49:03.308 5384 5384 E WearAssistant: [SSClientProxyImpl] Error executing action.
06-11 17:49:03.308 5384 5384 E WearAssistant: com.google.android.apps.gsa.binaries.clockwork.i.a.b
06-11 17:49:03.308 5384 5384 E WearAssistant: at com.google.android.apps.gsa.binaries.clockwork.i.d.b(SourceFile:12)
06-11 17:49:03.308 5384 5384 E WearAssistant: at com.google.android.apps.gsa.binaries.clockwork.i.d.a(SourceFile:10)
06-11 17:49:03.308 5384 5384 E WearAssistant: at com.google.android.apps.gsa.binaries.clockwork.h.k.a(SourceFile:49)
06-11 17:49:03.308 5384 5384 E WearAssistant: at com.google.android.apps.gsa.binaries.clockwork.h.k.l(Unknown Source:8)
06-11 17:49:03.308 5384 5384 E WearAssistant: at com.google.android.apps.gsa.binaries.clockwork.assistant.b.d.a(SourceFile:12)
06-11 17:49:03.308 5384 5384 E WearAssistant: at com.google.android.apps.gsa.binaries.clockwork.assistant.view.w.a(Unknown Source:8)
06-11 17:49:03.308 5384 5384 E WearAssistant: at com.google.android.wearable.li
decode(bytearray.fromhex('f9068b0784f4610900837270e08080b90639608060405234801561001057600080fd5b506040516105d93803806105d983398101604052805160008054600160a060020a0319163317905501805161004c906001906020840190610053565b50506100ee565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061009457805160ff19168380011785556100c1565b828001600101855582156100c1579182015b828111156100c15782518255916020019190600101906100a6565b506100cd9291506100d1565b5090565b6100eb91905b808211156100cd57600081556001016100d7565b90565b6104dc806100fd6000396000f3006080604052600436106100565763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166341c0e1b5811461005b5780634ac0d66e14610072578063ef690cc0146100cb575b600080fd5b34801561006757600080fd5b50610070610155565b005b34801561007e57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100709436949293602493928401919081908401838280828437509497506101929650505050505050565b3480156100d757600080fd5b506100e0610382565b604080