Skip to content

Instantly share code, notes, and snippets.

marcoarment / Sun.swift
Created Jan 17, 2021
Get sunrise, sunset, and the sun's position for a given time and location. Based on NOAA Solar Calculator.
View Sun.swift
// Sun.swift
// Created by Marco Arment on 1/17/21
// Solar-math functions are directly translated from the NOAA Solar Calculator:
// This is free and unencumbered software released into the public domain.
// Anyone is free to copy, modify, publish, use, compile, sell, or
// distribute this software, either in source code form or as a compiled
marcoarment / apns_jwt_token.php
Last active Aug 30, 2021
Generate ES256 JWT tokens for Apple Push Notification Service (APNS) in PHP
View apns_jwt_token.php
function base64url_encode($binary_data) { return strtr(rtrim(base64_encode($binary_data), '='), '+/', '-_'); }
function apns_jwt_token($team_id, $key_id, $private_key_pem_str)
if (! function_exists('openssl_get_md_methods') || ! in_array('sha256', openssl_get_md_methods())) throw new Exception('Requires openssl with sha256 support');
$private_key = openssl_pkey_get_private($private_key_pem_str);
if (! $private_key) throw new Exception('Cannot decode private key');
marcoarment / FCPrivateBatteryStatus.m
Created Jan 29, 2016
How to get raw battery info (mAh remaining, etc.) from iOS using private APIs. For internal testing only, NOT APP STORE DISTRIBUTION!
View FCPrivateBatteryStatus.m
#import <Foundation/Foundation.h>
#include <dlfcn.h>
NSDictionary *FCPrivateBatteryStatus()
static mach_port_t *s_kIOMasterPortDefault;
static kern_return_t (*s_IORegistryEntryCreateCFProperties)(mach_port_t entry, CFMutableDictionaryRef *properties, CFAllocatorRef allocator, UInt32 options);
static mach_port_t (*s_IOServiceGetMatchingService)(mach_port_t masterPort, CFDictionaryRef matching CF_RELEASES_ARGUMENT);
static CFMutableDictionaryRef (*s_IOServiceMatching)(const char *name);
marcoarment /
Created Feb 13, 2015
Encode a podcast with metadata using command-line LAME
# Encode a WAV to a finalized podcast MP3 with metadata, in the current directory
# Requires lame
# With Homebrew on Mac OS X: brew install lame
View gist:64ffc783d9e593ab62be
// ...
@property (nonatomic) NSMutableDictionary *downloadStateByURLString;
// ...
- (double)downloadProgressOfURLString:(NSString *)urlStr
return [self.downloadProgressByURLString[urlStr] doubleValue]; // SIGSEGV sometimes here
// Should I be doing this instead, or is ARC doing it for me and the problem lies elsewhere?
// NSNumber *progress = self.downloadProgressByURLString[urlStr];
View gist:dc89ccc29ae9d0a2c76f
//TODO get URL from parameters and authenticate it with an expiring hash/timestamp
$url = '';
// Forward these headers from original request
$requestHeaders = [];
if (isset($_SERVER['HTTP_USER_AGENT'])) $requestHeaders[] = 'User-Agent: ' . $_SERVER['HTTP_USER_AGENT'];
if (isset($_SERVER['HTTP_RANGE'])) $requestHeaders[] = 'Range: ' . $_SERVER['HTTP_RANGE'];
marcoarment / gist:1105553afba6b4900c10
Created Oct 21, 2014
Variable-height UITableView tableHeaderView with autolayout
View gist:1105553afba6b4900c10
// in a UITableViewController (or any other view controller with a UITableView)
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, size.width, 0)];
header.translatesAutoresizingMaskIntoConstraints = NO;
// [add subviews and their constraints to header]
NSLayoutConstraint *headerWidthConstraint = [NSLayoutConstraint
marcoarment / .htaccess
Created Jul 15, 2014
Old source (omitting chorus includes)
View .htaccess
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_URI} ^\.htpasswd
RewriteRule .* - [L]
RewriteRule ^(.*/)?\.svn/ - [F,L]
ErrorDocument 404 "Not Found"
php_flag register_globals Off
php_flag magic_quotes_gpc Off
marcoarment / ATPLogoView.m
Created Apr 29, 2014
Source for the Accidental Tech Podcast (ATP) T-Shirt
View ATPLogoView.m
// Source for the Accidental Tech Podcast (ATP) T-Shirt:
// By Marco Arment, April 28, 2014. MIT license.
@implementation ATPLogoView
- (void)drawRect:(CGRect)rectIgnored
NSString *fontName = @"MyriadPro-Semibold";
View ApplePushNotification.php
This is part of the Reprise framework, not yet released publicly.
Copyright 2013 Marco Arment. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.