Skip to content

Instantly share code, notes, and snippets.

View gopatrik's full-sized avatar

Patrik Göthe gopatrik

  • Gothenburg, Sweden
View GitHub Profile
@kieber-emmons
kieber-emmons / ParallelRadixSort.metal
Last active February 6, 2024 10:24
This gist is for an article I wrote on Medium (https://medium.com/p/4f4590cfd5d3).
//
// ParallelRadixSort.metal
//
// Created by Matthew Kieber-Emmons on 08/29/22.
// Copyright © 2022 Matthew Kieber-Emmons. All rights reserved.
// This work is for educational purposes only and cannot be used without consent.
//
#include <metal_stdlib>
using namespace metal;
@zaru
zaru / get_menubar_items.swift
Last active February 9, 2024 19:49
$ swiftc -o get_window_title get_window_title.swift && get_window_title 9999
import Foundation
import AppKit
func main() -> Int {
let argv = ProcessInfo.processInfo.arguments
let pid = Int32(argv[1])!
print(pid)
let appRef = AXUIElementCreateApplication(pid)
var menubar: CFTypeRef?
AXUIElementCopyAttributeValue(appRef, kAXMenuBarAttribute as CFString, &menubar)
@ibrahimyilmaz7
ibrahimyilmaz7 / Xcode 11 Duplicate Line or Selection.md
Last active February 22, 2022 09:07
Xcode 11 - Duplicate Selection
  1. Open directory in Finder with Cmd + Shift + G
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/
  1. Open IDETextKeyBindingSet.plist with a text editor.

  2. Add this in:

@yiwenl
yiwenl / bezier.glsl
Last active January 28, 2025 04:10
Bezier curve in GLSL
// bezier curve with 2 control points
// A is the starting point, B, C are the control points, D is the destination
// t from 0 ~ 1
vec3 bezier(vec3 A, vec3 B, vec3 C, vec3 D, float t) {
vec3 E = mix(A, B, t);
vec3 F = mix(B, C, t);
vec3 G = mix(C, D, t);
vec3 H = mix(E, F, t);
vec3 I = mix(F, G, t);
@petercv
petercv / PresentationLink.swift
Last active December 7, 2019 04:52
Fixed plus improved PresentationLink
@pteasima
pteasima / OnScroll.swift
Last active December 16, 2020 17:35
SwiftUI onScroll
import SwiftUI
import Combine
struct OnScroll: ViewModifier {
@Binding var offset: CGFloat
//we can have a version with a closure instead of the binding, but that triggers an infinite loop if content depends on the same Store
// var onOffset: (CGFloat) -> ()
func body(content: Content) -> some View {
return VStack {
@martinpi
martinpi / AutocompleteView.swift
Created November 5, 2018 13:41
An autocomplete popup for text entry. Ported to Swift from this example: https://github.com/danjonweb/NCRAutocompleteTextView
//
// AutocompleteView.swift
//
// Originally created by Daniel Weber on 9/28/14.
// Copyright (c) 2014 Null Creature. All rights reserved.
// Ported to Swift by Martin Pichlmair 2018
//
import Cocoa
@dmn001
dmn001 / apple tv screensavers download command.txt
Last active December 9, 2023 00:50
apple tv screensavers
cat urls.csv | sed 's/\([^,]*\),\(.*mov\)\r/wget "\1" -O "\2"/' | sh
the location and time of day are prepended to the filename.
@camdenfullmer
camdenfullmer / CMFWallpaper.m
Last active February 18, 2024 03:05
Set the wallpaper (lock and/or home screen) on iOS using Apple's private API. Please be aware that including this code in an App Store submission will result in a rejection. This has only been tested on iOS 9.2.
@implementation CMFWallpaper
+ (void)setImage:(UIImage *)image {
NSAssert([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized, @"access to photos is needed to set the wallpaper");
NSString *path;
#if TARGET_OS_SIMULATOR
path = @"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibrary.framework";
#else
path = @"/System/Library/PrivateFrameworks/PhotoLibrary.framework";
@patriciogonzalezvivo
patriciogonzalezvivo / GLSL-Noise.md
Last active May 9, 2025 20:46
GLSL Noise Algorithms

Please consider using http://lygia.xyz instead of copy/pasting this functions. It expand suport for voronoi, voronoise, fbm, noise, worley, noise, derivatives and much more, through simple file dependencies. Take a look to https://github.com/patriciogonzalezvivo/lygia/tree/main/generative

Generic 1,2,3 Noise

float rand(float n){return fract(sin(n) * 43758.5453123);}

float noise(float p){
	float fl = floor(p);
  float fc = fract(p);