Skip to content

Instantly share code, notes, and snippets.

View rodericj's full-sized avatar
🐔
chicken

Roderic Campbell rodericj

🐔
chicken
View GitHub Profile
{
"basics" : {
"name" : "Roderic Campbell",
"label" : "Mobile App Developer",
"picture" : "https://secure.gravatar.com/avatar/10a17830b9e9e8985bcf1675e765f81d?s=1000",
"email" : "[email protected]",
"phone" : "(585) 802-0632",
"summary" : "An iOS Software App Engineer with 13 years of experience on Apple developer platforms. With an early career in the US Defense and Intelligence industry, followed by a transition to the Silicon Valley Startup scene in 2007. Once the iOS SDKs were released, the future path was clear. For the last 7 years, the focus has been on helping companies of all sizes execute their vision from a mobile perspective. ",
"location" : {
"countryCode" : "US",
@rodericj
rodericj / fetchCrozesHermitage.py
Created January 18, 2021 04:06
Fetch GeoJson Region for Crozes Hermitage using Nominatim and Overpass using Python
from OSMPythonTools.nominatim import Nominatim
from OSMPythonTools.overpass import overpassQueryBuilder, Overpass
# Create a Nominatim Query Object
crozesNominatimQuery = Nominatim().query('Crozes Hermitage')
# Create a query from the Nominatim Query object
query = overpassQueryBuilder(area=crozesNominatimQuery.areaId(), elementType=['way', 'relation'], includeGeometry=True)
# Or this:
@rodericj
rodericj / url components.swift
Last active February 7, 2018 19:07 — forked from gregheo/url components.swift
Fake URL + url encoded query paramaters
import Foundation
let encodedString = "data=%7B%0D%0A%22coffee%22%3A%20%22coffee%22%2C%0D%0A%22beer%22%3A%20%22beer%22%2C%0D%0A%22has_bylaws%22%3A%20true%0D%0A%7D%0D%0A"
guard let c = URLComponents(string: "http://fakenews.com/?" + encodedString) else {
fatalError("could not generate url components! :(")
}
for item in c.queryItems ?? [] {
print("Got key \(item.name) with value \(item.value)")
# tax stuff
https://medium.com/@davissenseman/tax-simplification-take-three-211b7cd319f7
Under existing tax code, an individual who currently makes $200,000 would pay 35% tax on the amounts over $191,650, 33% tax on the amounts over $91,900, 25% tax on the amounts over $37,950, 15% tax on the amounts over $9325 and 10% tax on the first $9324 of earnings.
old 5 = (200000-191650) *.35 => 2,922.5
old 4 = (191650-91900) *.33 => 32,917.5
old 3 = (91900-37950)*.25=> 13,487.5
old 2 = (37950-9325)*.15 => 4,293.75
old 1 = 9324*.1=> 932.4
old tax = old 5 + old 4 + old 3 + old 2 + old 1 => 54,553.65
//: Playground - Track the ISS from a playground
import MapKit
import XCPlayground
class ISSFetcher: NSObject {
var completion: (Double, Double) -> Void
var timer: NSTimer?
init(inCompletion: (Double, Double) -> Void) {

Keybase proof

I hereby claim:

  • I am rodericj on github.
  • I am roderic (https://keybase.io/roderic) on keybase.
  • I have a public key ASC3r0UcJQFnYicR7LCsGo2RnNlqKgdsAOVXmUaEOre0zQo

To claim this, I am signing this object:

Printing description of dictionary:
{
browsable = 0;
"calculated_discovery_score" = "713.7758743754462";
caption = "Hey a border around a leaf";
"comments_count" = 0;
"created_at" = "2015-03-30T22:17:53.000Z";
"discovery_score" = "<null>";
"external_source_url" = "<null>";
href = "http://m.staging.rav.io/api/v1/images/360";
This file has been truncated, but you can view the full file.
{"per_page":200,"prospectiveTenants":[{"id":748131,"created":"2014-05-15 16:37:11","lastSynced":null,"thirdPartyPrimaryKey":null,"communityId":103693,"guestCardId":734964,"uuid":"9931369c-704f-4ee1-8c62-d682191c0b81","prospectId":0,"prospectCode":null,"firstName":"Josh","lastName":"Gamp","email":"[email protected]","phoneNumber":"(376) 476-8657","phoneNumberType":"Mobile","secondaryPhoneNumber":"","secondaryPhoneNumberType":"Mobile","street1":"123 Place St.","street2":"220","street3":null,"city":"Denver","state":"CO","zip":"80218","country":null,"fax":null,"employmentInfo":"","brokerDisclosureSignatureUrl":null,"smsOptResponse":"NONE","oneSiteCustomerId":null,"fullName":"Josh Gamp","agreedToBrokerTerms":false,"street":"123 Place St. 220","active":true,"synced":false,"updated":"2015-01-21 08:52:26","warnings":null,"brokerDisclosureSignatureDate":null,"isPrimary":true},{"id":751012,"created":"2014-05-20 15:45:21","lastSynced":null,"thirdPartyPrimaryKey":null,"communityId":103693,"guestCardId":737493,"uuid
diff --git a/Crashlytics.framework/Versions/A/Crashlytics b/Crashlytics.framework/Versions/A/Crashlytics
index df0fe47..42d9da7 100644
Binary files a/Crashlytics.framework/Versions/A/Crashlytics and b/Crashlytics.framework/Versions/A/Crashlytics differ
diff --git a/Crashlytics.framework/Versions/A/Resources/Info.plist b/Crashlytics.framework/Versions/A/Resources/Info.plist
index a10d5ef..ead462e 100644
--- a/Crashlytics.framework/Versions/A/Resources/Info.plist
+++ b/Crashlytics.framework/Versions/A/Resources/Info.plist
@@ -15,13 +15,13 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
/**
* Helper function to determine whether two cones are playing in the same cluster. Two TuneDevices
* are in the same cluster if one is a master and the other its slave or if both are slaves to the
* same master.
*
* @param other The other Cone that may or may not be in the cluster
* @return true if the two TuneDevices are in the same cluster. false otherwise.
*/
public boolean isInClusterWith(TuneDevice other){
switch(clusterRole){