Skip to content

Instantly share code, notes, and snippets.

View hboon's full-sized avatar

Hwee-Boon Yar hboon

View GitHub Profile
@hboon
hboon / pr.fish
Created August 31, 2023 11:12
Fish shell function to search for a commit on (tmux) screen, generate a branch name and run `gco -b <new-branch> <hash>`
View pr.fish
#Use this to do `gco -b <branch> <commit>`
function pr
set --local hash (gcommit)
#echo "in our pr: $hash"
set --local msg (git show -s --format=%B $hash | head -1)
#echo "in our pr: $msg"
set --local branch (string lower $msg | string replace -a -r "[ /#]" "-" | string replace -a -r "[\(\)\.\[\]'`\":]" "")
#echo "in our pr: $branch"
echo "Running: git checkout -b $branch $hash"
git checkout -b $branch $hash
@hboon
hboon / openurls.rb
Created July 11, 2023 00:22
Opens URLs embedded in STDIN (so it's useful in vim by selecting text and running it)
View openurls.rb
#!/usr/bin/env ruby
#Opens URLs embedded in STDIN (so it's useful in vim by selecting text and running it)
require 'uri'
input = $stdin.read.split("\n")
urls = input.map do |line|
URI.extract(line, ['http', 'https'])
@hboon
hboon / errors.swift
Last active March 20, 2023 02:21
Implementing types that conform to LocalizedError in Swift
View errors.swift
//Proper way to implement error types. Implement `errorDescription`, not `localizedDescription` and the global handler `getErrorMessage(error: Error)` is easy to implement, not need a stupid switch case
//Key is implement `errorDescription` instead of `localizedDescription` and must not implement `localizedDescription` at all
import Foundation
struct E1: LocalizedError {
var errorDescription: String? {
return "E1's errorDescription"
}
}
@hboon
hboon / boilerplate.swift
Created December 28, 2022 03:49 — forked from chriseidhof/boilerplate.swift
QuickMacApp
View boilerplate.swift
// Run any SwiftUI view as a Mac app.
import Cocoa
import SwiftUI
NSApplication.shared.run {
VStack {
Text("Hello, World")
.padding()
.background(Capsule().fill(Color.blue))
@hboon
hboon / GuardURLProtocol.swift
Created October 14, 2022 07:32 — forked from brunophilipe/GuardURLProtocol.swift
GuardURLProtocol class to monitor all connections initiated by app
View GuardURLProtocol.swift
//
// GuardURLProtocol.swift
// URLProtocol
//
// Created by Bruno Philipe on 16/2/17.
// Copyright © 2017 Bruno Philipe. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
View gist:1ddbe81ae2ea8f9bf2f920184f7208b4
#!/bin/sh
if git rev-parse --verify HEAD >/dev/null 2>&1; then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
exec 1>&2
@hboon
hboon / code.markdown
Last active April 11, 2020 05:47
self when initialising property with function, inheriting from NSObject
View code.markdown

Found a bug in my code because of something very subtle:

class C: NSObject {
	var foo: String = {
		NSLog("non-lazy self: \(self)")
		return ""
	}()
	lazy var bar: String = {
 NSLog("lazy self: \(self)")
@hboon
hboon / code.swift
Created April 11, 2020 05:41
self when initialising property with function, inheriting from NSObject
View code.swift
Found a bug in my code because of something very subtle:
```
class C: NSObject {
var foo: String = {
NSLog("non-lazy self: \(self)")
return ""
}()
lazy var bar: String = {
NSLog("lazy self: \(self)")
@hboon
hboon / gist:ba1e0b7e316fcddf4354c27349f0c0b4
Created September 16, 2019 03:27
List of checks against web site and web services
View gist:ba1e0b7e316fcddf4354c27349f0c0b4
* TokenScript repo is up
* Main homepage is up
* Verify sig API is up and working
* Check express of trust API is up and working
* Any other API is up
* Any other important site is up
@hboon
hboon / gist:21ae39d77b8ded461cb4cbce1656370a
Last active September 16, 2019 02:33
List of lint checks that would be good for TokenScript files
View gist:21ae39d77b8ded461cb4cbce1656370a
1. Check that in `/token/origins/<ethereum contract="holdingContract">` the string `holdingContract` refers to an existing contract defined in `/token/contract`
ref: https://github.com/AlphaWallet/alpha-wallet-ios/issues/1440