Skip to content

Instantly share code, notes, and snippets.

View hboon's full-sized avatar
Hacking

Hwee-Boon Yar hboon

Hacking
View GitHub Profile
@hboon
hboon / markdown.css
Created October 5, 2015 08:32 — forked from imjasonh/markdown.css
Render Markdown as unrendered Markdown (see http://jsbin.com/huwosomawo)
* {
font-size: 12pt;
font-family: monospace;
font-weight: normal;
font-style: normal;
text-decoration: none;
color: black;
cursor: default;
}
@hboon
hboon / AVAsset+VideoOrientation.h
Created November 1, 2015 09:24 — forked from luca-bernardi/AVAsset+VideoOrientation.h
Find the video orientation of an AVAsset. (Useful if you need to send the video to a remote server)
//
// AVAsset+VideoOrientation.h
//
// Created by Luca Bernardi on 19/09/12.
// Copyright (c) 2012 Luca Bernardi. All rights reserved.
//
#import <AVFoundation/AVFoundation.h>
typedef enum {
LBVideoOrientationUp, //Device starts recording in Portrait
@hboon
hboon / gist:18cb1c14aae1a479bbad
Created January 19, 2016 04:06 — forked from eternalstorms/gist:4463450
Twitter Apple Accounts (media, pr, etc)
Steve Wozniak, Apple alumni and all-around amazing person - @stevewoz
Victor Agreda, Jr., TUAW - @superpixels
Mike T. Rose, TUAW - @miketrose
John Gruber, Daring Fireball - @gruber
Arnold Kim, MacRumors - @arnoldkim
Jason Snell, Macworld - @jsnell
Josh Lowensohn, CNET - @josh
Chris O'Brien, LA Times - @obrien
Mark Gurman, 9to5Mac - @markgurman
Matthew Panzarino, TNW - @panzer
@hboon
hboon / Apple Evangelists.txt
Created January 19, 2016 04:06 — forked from eternalstorms/Apple Evangelists.txt
Apple Evangelists (WWDC 2013)
UI- and App Frameworks Evangelist - Jake Behrens, [email protected], twitter: @Behrens
- What's new in Cocoa
- Accessibility in iOS
- Building User Interfaces for iOS 7
- Getting Started with UIKit Dynamics
- What's new in Cocoa Touch
- What's New With Multitasking
- Best Practices for Cocoa Animation
- Improving Power Efficiency with App Nap
- Introducing Text Kit
@hboon
hboon / custom.rb
Created November 2, 2016 06:25 — forked from gnestor/custom.rb
RubyMotion: Custom rake tasks for New Relic, Testflight (old), and Crittercism
def build_path
"build/iPhoneOS-7.0-Release/"
end
def ipa_name
"APP_FILE_NAME.ipa"
end
def dsym_name
"APP_FILE_NAME.app.dSYM"
@hboon
hboon / pbkdf2test.c
Created November 11, 2016 21:05 — forked from lukhnos/pbkdf2test.c
An example of using CommonCrypto's PBKDF2 function
// an example of using CommonCrypto's PBKDF2 function
//
// build with:
//
// clang -o pbkdf2test pbkdf2test.c
//
// test with:
//
// ./pbkdf2test <some plaintext password here>
@hboon
hboon / jsonp.js
Created July 14, 2017 07:42 — forked from gf3/jsonp.js
Simple JSONP in vanilla JS
/**
* loadJSONP( url, hollaback [, context] ) -> Null
* - url (String): URL to data resource.
* - hollaback (Function): Function to call when data is successfully loaded,
* it receives one argument: the data.
* - context (Object): Context to invoke the hollaback function in.
*
* Load external data through a JSONP interface.
*
* ### Examples
@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 / 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 / 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