Skip to content

Instantly share code, notes, and snippets.

View saagarjha's full-sized avatar

Saagar Jha saagarjha

View GitHub Profile

Remove implicitly unwrapped optionals in function signatures

  • Proposal: SE-NNNN
  • Author: spromicky
  • Status: Awaiting review
  • Review manager: TBD

Introduction

Swift, in contrast with Objective-C, makes a distinction between values that may be nil and values that can never be nil through its use of Optionals. Due to the fact that Objective-C does not make this distinction, Objective-C functions that do not use the Nullability annotations are imported with parameters of the implicitly unwrapped optional type. Unfortunately, this allows users to write their own Swift code that looks like this:

@saagarjha
saagarjha / .conkyrc
Last active December 1, 2016 06:30
A (modified) Google Now-inspired .conkyrc
# If you haven't already, download Conky Google Now from http://satya164.deviantart.com/art/Conky-Google-Now-366545753 and unzip it to your home folder; then copy this .conkyrc over the one you just extracted
# Requires lm-sensors and inxi (and conky) to be installed:
# sudo apt-get install lm-sensors inxi
# Adapted from these:
# http://satya164.deviantart.com/art/Conky-Google-Now-366545753
# https://gist.github.com/anonymous/6666594
# Conky Google Now style #
@saagarjha
saagarjha / GmailLabelArchive.gs
Created October 20, 2016 02:04
Google Apps Script to archive old emails in a label
function shouldStop(startTime) {
return new Date().getTime() - startTime.getTime() > 300000; // 5 minutes
}
function archive() {
var days = 7; // How old a message must be to be archived
var startTime = new Date();
var date = new Date();
date.setDate(date.getDate() - days);
var label = GmailApp.getUserLabelByName("[LABEL NAME]");
@saagarjha
saagarjha / git-ps1-status
Last active April 1, 2017 17:23
A Git summary for your Bash PS1 prompt
#!/usr/local/bin/bash
# Make sure this runs on a modern bash with support for ;;& in case
shopt -s extglob
# Make sure we're in a git directory
if [ -d .git ] || git rev-parse --git-dir > /dev/null 2>&1; then
# Print a leading space to separate from the rest of the PS1
echo -n " "
# Check our status relative to upstream
@saagarjha
saagarjha / git-test-pr
Last active April 1, 2017 17:22
Try out Git pull requests locally
#!/bin/sh
if [ $# == 1 ]; then
git fetch origin pull/$1/head:pr-$1
git checkout pr-$1
elif [ $# == 2 ]; then
git fetch $1 pull/$2/head:pr-$2
git checkout pr-$2
else
echo "Usage: git test-pr [remote] pr#"
@saagarjha
saagarjha / xkcdSlackBot.gs
Last active April 11, 2018 06:31
Google Apps Script to post new xkcd comics to a Slack channel
function postUpdatedxkcdIfNecessary() {
var properties = PropertiesService.getUserProperties();
var latestComic = JSON.parse(UrlFetchApp.fetch("http://xkcd.com/info.0.json").getContentText());
if (latestComic["num"] > properties.getProperty("lastComic")) {
var title = latestComic["title"];
var imageURL = latestComic["img"];
var altText = latestComic["alt"];
var number = latestComic["num"];
@saagarjha
saagarjha / WBSAutoFillQuirks.plist
Last active April 17, 2019 18:02
List of password generation quirks that MobileSafari uses when generating passwords
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DomainsWithAssociatedCredentials</key>
<array>
<array>
<string>comcast.net</string>
<string>xfinity.com</string>
</array>
@saagarjha
saagarjha / SocketAddress.swift
Last active February 12, 2018 22:56
(Broken) Swifty wrapper around POSIX sockets
import Foundation
protocol SockAddr { }
extension sockaddr_in: SockAddr { }
extension sockaddr_in6: SockAddr { }
enum SocketAddress: CustomDebugStringConvertible {
case ipv4(sockaddr_in)
case ipv6(sockaddr_in6)
@saagarjha
saagarjha / screensaver.swift
Last active September 26, 2019 20:26
Simple script for manipulating the screensaver setting on macOS
import Foundation
let arguments = CommandLine.arguments
switch arguments.count {
case 1:
let moduleDict = CFPreferencesCopyAppValue("moduleDict" as CFString, "com.apple.screensaver" as CFString)
print(moduleDict?["moduleName"] as! String)
print(moduleDict?["path"] as! String)
case 3:
let moduleDict = (CFPreferencesCopyAppValue("moduleDict" as CFString, "com.apple.screensaver" as CFString) as? NSDictionary)?.mutableCopy() as? NSMutableDictionary
@saagarjha
saagarjha / cd.bash
Last active February 24, 2018 23:32
Bash function that provides a similar experience to zsh's cd history
cd() {
# Set the current directory to the 0th history item
cd_history[0]=$PWD
if [[ $1 == -h ]]; then
for i in ${!cd_history[@]}; do
echo $i: "${cd_history[$i]}"
done
return
elif [[ $1 =~ ^-[0-9]+ ]]; then
builtin cd "${cd_history[${1//-}]}" || # Remove the argument's dash