Skip to content

Instantly share code, notes, and snippets.

View snej's full-sized avatar

Jens Alfke snej

View GitHub Profile
@snej
snej / missing_includes.rb
Created October 2, 2023 16:19
Script to find missing std #includes in C++ headers
#! /usr/bin/env ruby
#
# missing_includes.rb
# By Jens Alfke <jens@couchbase.com>
# Version 2.0 -- 2 Oct 2023
# Copyright 2021-Present Couchbase, Inc.
#
# This script scans C++ header files looking for usage of common standard library classes, like
# `std::vector`, without including their corresponding headers, like `<vector>`. It similarly looks
# for standard C functions like `strlen` that are used without including their header (`<cstring>`.)
@snej
snej / tails.cc
Last active May 8, 2021 18:27
Tails! A tiny Forth core written as a hack for May Forth 2021, using some of Wasm3's secret optimization sauce.
// Tails has grown a bit and moved out into its own repository: https://github.com/snej/tails/
// Please visit it there!
//
// If you want to see the tiny original version from May Forth 2021, it's still here;
// click the "Revisions" button above, or go to:
// https://gist.github.com/snej/9ba59d90689843b22dc5be2730ef0d49/2d55f844b7622aa117b9275bbc9d189613f7ff7f
@snej
snej / threadSafeFuture.nim
Last active November 12, 2020 14:38
Thread-safe Futures for Nim
# threadSafeFuture.nim
# Jens Alfke, 30 June 2020
import asyncdispatch, deques, locks, sugar, threadpool
## Utilities for mixing async/await with threads.
##
## ``threadSafe()`` takes a Future and returns a new Future that can be completed on any thread.
## The original Future's callback will still be invoked on its original thread, and ``await``
## works normally.
@snej
snej / Async.hh
Created August 28, 2018 22:26
C++ implementation of C# / JavaScript style async calls
//
// Async.hh
//
// Copyright © 2018 Couchbase. All rights reserved.
//
#pragma once
#include "RefCounted.hh"
#include <functional>
@snej
snej / keybase.md
Created July 8, 2016 04:46
Stuff to prove my identity on Keybase.io

Keybase proof

I hereby claim:

  • I am snej on github.
  • I am snej (https://keybase.io/snej) on keybase.
  • I have a public key ASA32IteNIxEuZRwRwerBGrd-RL2UMiz4nxBpK5Kqu6TjQo

To claim this, I am signing this object:

@snej
snej / bitcodesize.rb
Created March 1, 2016 21:52
Simple tool that scans an iOS library and checks the size of the bitcode segment for each included object file. It logs a warning for files with no bitcode or whose bitcode is less than 1Kbyte; or with the -v flag it logs the sizes of all bitcode segments.
#! /usr/bin/env ruby
# By Jens Alfke. Do What Thou Wilt shall be the whole of the license.
def listBitcode(path, arch, verbose =false)
result = []
filename = nil
section = nil
output = `otool -l -arch #{arch} "#{path}"`
@snej
snej / QRCode.m
Created September 21, 2015 16:48
Shows how to generate a QRCode on iOS or Mac OS X
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
typedef UIImage QRImage;
#else
#import <AppKit/AppKit.h>
typedef NSImage QRImage;
#endif
+ (QRImage*) QRCodeImageWithData: (NSData*)data size: (CGFloat)size {
@snej
snej / QRCodeScanner.m
Created September 21, 2015 16:45
Snippet showing how to capture QR codes from the device camera on iOS or Mac OS X
- (BOOL) startCapture: (NSError**)outError {
if (!_session) {
_session = [[AVCaptureSession alloc] init];
AVCaptureDevice* video = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo];
if (!video)
return [self failWithMessage: @"No video camera available" error: outError];
AVCaptureDeviceInput* input = [AVCaptureDeviceInput deviceInputWithDevice: video
error: outError];
if (!input)
return [self failWithMessage: @"Couldn't acquire input device" error: outError];
@snej
snej / geo_bug.sql
Last active August 29, 2015 14:06
Demonstrates a possible rtree regression in sqlite 3.8.5
-- This demonstrates what seems to be a regression in the SQLite version (3.8.5) in OS X 10.10 DP7.
-- The final 'select' statement at the end of the file returns zero rows, not three.
-- The query works fine in OS X 10.9.4 (SQLite 3.7.13) and in earlier versions of 10.10 up to DP6.
-- If I alter the bboxes table to be a regular (non-rtree) table, the bug goes away.
--
-- Run this like so:
-- sqlite3 -init geo_bug.sql
CREATE TABLE maps (
view_id INTEGER NOT NULL,
@snej
snej / Issue280Logs
Created March 18, 2014 17:19
Logs from both clients, for Couchbase Lite issue #280
Device A: (Has existing data)
12:41:03.289| Logging mode 2 enabled in domains: {ChangeTracker, Sync, SyncVerbose}
12:41:03.346‖ Sync: CBL_Puller[http://approvalstest.filmworkers.com:4984/shotbotdb/] STARTING ...
12:41:03.349‖ Sync: CBL_Puller[http://approvalstest.filmworkers.com:4984/shotbotdb/]: Reachability state = <approvalstest.filmworkers.com>:unreachable (00), suspended=0
2014-03-17 12:41:03.348 ShotBOT[55788:a0b] Application windows are expected to have a root view controller at the end of application launch
12:41:03.350‖ Sync: CBL_Pusher[http://approvalstest.filmworkers.com:4984/shotbotdb/] STARTING ...
12:41:03.351‖ Sync: CBL_Pusher[http://approvalstest.filmworkers.com:4984/shotbotdb/]: Reachability state = <approvalstest.filmworkers.com>:reachable (20002), suspended=0
12:41:03.351‖ Sync: CBL_Pusher[http://approvalstest.filmworkers.com:4984/shotbotdb/]: Going online
12:41:03.351‖ Sync: CBL_Pusher[http://approvalstest.filmworkers.com:4984/shotbotdb/] Progress: set active = 1