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
@josh-richardson
josh-richardson / Web3RequestLogger.js
Created November 16, 2020 13:03
Horrible hack to intercept Web3js requests in node. Probably extremely fragile.
function Web3RequestLogger(httpProvider) {
let handler = {
get(target, propKey, receiver) {
const origMethod = Reflect.get(target, propKey, receiver);
if (propKey === "send") {
return function (...args) {
console.log(`Sent JSONRPC Request: ${JSON.stringify(args[0])}`);
let responseCallback = function(err, result) {
console.log(`Received JSONRPC Response: ${JSON.stringify(result)}`)
args[1](err, result)
@josh-richardson
josh-richardson / userscript.js
Last active December 18, 2020 12:56
Auto-expand GitLab breadcrumb
// ==UserScript==
// @name Auto-expand GitLab breadcrumb
// @version 0.1
// @description GitLab's breadcrumb always collapses even when it doesn't need to, this fixes that, but it may be fragile...
// @author You
// @match https://gitlab.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
decode(bytearray.fromhex('f9068b0784f4610900837270e08080b90639608060405234801561001057600080fd5b506040516105d93803806105d983398101604052805160008054600160a060020a0319163317905501805161004c906001906020840190610053565b50506100ee565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061009457805160ff19168380011785556100c1565b828001600101855582156100c1579182015b828111156100c15782518255916020019190600101906100a6565b506100cd9291506100d1565b5090565b6100eb91905b808211156100cd57600081556001016100d7565b90565b6104dc806100fd6000396000f3006080604052600436106100565763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166341c0e1b5811461005b5780634ac0d66e14610072578063ef690cc0146100cb575b600080fd5b34801561006757600080fd5b50610070610155565b005b34801561007e57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100709436949293602493928401919081908401838280828437509497506101929650505050505050565b3480156100d757600080fd5b506100e0610382565b604080
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
@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==
@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();
joshua@alecto  /tmp/looking.WQtn  solc file.sol --bin
======= file.sol:OwnedToken =======
Binary:
608060405234801561001057600080fd5b506040516103f33803806103f38339818101604052602081101561003357600080fd5b810190808051906020019092919050505033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060028190555050610317806100dc6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631a6952301461003b578063898855ed1461007f575b600080fd5b61007d6004803603602081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100ad565b005b6100ab6004803603602081101561009557600080fd5b8101908080359060200190929190505050610281565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffff
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,