Skip to content

Instantly share code, notes, and snippets.

View hboon's full-sized avatar

Hwee-Boon Yar hboon

View GitHub Profile
@hboon
hboon / gist:21ae39d77b8ded461cb4cbce1656370a
Last active September 16, 2019 02:33
List of lint checks that would be good for TokenScript files
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
@hboon
hboon / gist:45dbd21537a5564b975420527e9eed7f
Created June 19, 2019 12:25 — forked from steipete/ios-xcode-device-support.sh
Using iOS 13 devices with Xcode 10.2 (instead of Xcode 11)
// The trick is to link the DeviceSupport folder from the beta to the stable version.
// sudo needed if you run the Mac App Store version. Always download the dmg instead... you'll thank me later :)
// Xcode 10.2 to Xcode 11 Beta
sudo ln -s /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/13.0 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
// Then restart Xcode and reconnect your devices. You will need to do that for every beta of future iOS versions
@hboon
hboon / WebCacheCleaner.swift
Created June 18, 2019 07:11 — forked from insidegui/WebCacheCleaner.swift
Clear WKWebView's cookies and website data storage, very useful during development.
import Foundation
import WebKit
final class WebCacheCleaner {
class func clean() {
HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)
print("[WebCacheCleaner] All cookies deleted")
WKWebsiteDataStore.default().fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
@hboon
hboon / testFunctionCallEncoding.js
Created January 31, 2019 03:40
Test Solidity/EVM input encoding
let abi = {
"name" : "balanceOf",
"stateMutability" : "view",
"outputs" : [
],
"inputs" : [
{
"name" : "expiry",
"type" : "uint256"
},
@hboon
hboon / jscore.md
Created July 16, 2018 05:03 — forked from mheiber/jscore.md
Using JavaScriptCore in a Production iOS app

JavaScriptCore is a built-in iOS library that enables you to use JavaScript in apps alongside Objective-C and Swift. It lets developers read JavaScript from a string, execute it from Objective-C or Swift, and share data structures and functions across languages. We JavaScriptCore to share code between Web and iOS.

Sharing code helped us produce a high-quality, consistent experience across devices while iterating rapidly.

This post is about why we chose to use JavaScriptCore and what we learned. The biggest challenges to using JavaScriptCore in a production app were performance optimization for older devices and getting the build process right. Luckily, these problems have simple solutions that just weren't documented.

Why did we use JavaScriptCore?

A killer feature of one of our apps is search that is optimized for finding guests by name. Our goals included:

@hboon
hboon / wip.md
Created February 8, 2018 03:30
An example of wip.md

6 Feb

Location: Home Notes: Productive with 0 pomodoros

11:04 PM - 11:07 PM Plan 11:10 PM Mimic

::Mimic

@hboon
hboon / 20180206.md
Created February 8, 2018 03:25
An example of an archived wip.md

6 Feb

Location: Home Notes: Productive with 2 pomodoros

11:04 PM - 11:07 PM Plan 11:10 PM - 11:21 PM Mimic 11:21 PM - 12:03 AM Sales 02:19 PM - 03:32 PM Mimic 04:36 PM - 04:47 PM Mimic

@hboon
hboon / iap.rb
Created February 5, 2018 15:17 — forked from amirrajan/iap.rb
# coding: utf-8
class IAPScene < SKScene
include ScreenSizes
attr_accessor :root
def button_size
device_screen_width.fdiv(buttons_per_row + 2)
end
@hboon
hboon / nsurlsession_get_plus_basic_auth.rb
Created January 28, 2018 05:34
GET with NSURLSession + Basic Auth in RubyMotion
def session_with_basic_auth
return @session_with_basic_auth if @session_with_basic_auth
configuration = NSURLSessionConfiguration.defaultSessionConfiguration.tap do |conf|
any_username_will_do = 'xxx'
userPasswordString = "#{any_username_will_do}: #{api_key}"
userPasswordData = userPasswordString.dataUsingEncoding(NSUTF8StringEncoding)
base64EncodedCredential = userPasswordData.base64EncodedStringWithOptions(0)
authString = "Basic #{base64EncodedCredential}"
#TODO test error handling when authorization is invalid, or when URL is wrong
conf.HTTPAdditionalHeaders = {'Accept'=>'application/json',
@hboon
hboon / nsurlsession_post.rb
Created January 28, 2018 05:32
POST with NSURLSession in RubyMotion
def session
return @session if @session
configuration = NSURLSessionConfiguration.defaultSessionConfiguration.tap do |conf|
conf.HTTPAdditionalHeaders = {'Accept'=>'application/json',
'Accept-Language'=>'en',
'User-Agent'=> user_agent}
end
@session = NSURLSession.sessionWithConfiguration(configuration)
@session
end