Skip to content

Instantly share code, notes, and snippets.

View rabidaudio's full-sized avatar

Julien Dorothy rabidaudio

View GitHub Profile
@rabidaudio
rabidaudio / EasyArrayAdapter.java
Last active December 29, 2015 01:54
A helper class for Android ArrayAdapters
package audio.rabid.dev.utils;
import android.content.Context;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
@rabidaudio
rabidaudio / HyperlinkTextView.java
Created September 25, 2015 21:53
HyperlinkTextView.java
package audio.rabid.dev.utils;
import android.content.Context;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.method.MovementMethod;
import android.text.style.ClickableSpan;
import android.util.AttributeSet;
import android.view.View;
@rabidaudio
rabidaudio / gist:5d8dad6b020928b71f92
Last active December 10, 2015 22:27
Connecting to bluetooth serial tty
# get mac addresses for nearby devices
hcitool scan
# bind to a device
rfcomm bind 0 00:0D:18:00:00:01
# open tty
minicom -D /dev/rfcomm0
# press Ctrl-A Z A to turn line breaks on
# close when done:
rfcomm release /dev/rfcomm0
@rabidaudio
rabidaudio / json2csv.rb
Created December 18, 2015 22:10
Convert JSON file to CSV
require 'csv'
require 'json'
# parse some json into hash array
data = JSON.parse(File.read("in.json"))
# get all headers appearing anywhere in data
keys = []
data.each do |hash|
keys = keys.concat(hash.keys).uniq
@rabidaudio
rabidaudio / csvparse.rb
Created January 13, 2016 17:57
CSV rows to objects
reqire 'csv'
csv = CSV.parse(File.read('input.csv'))
headers = csv.shift
objects = csv.map { |row| Hash[headers.zip(row)] }
@rabidaudio
rabidaudio / KeyboardAvoidView.swift
Last active January 19, 2017 23:15
View for moving views out from under keyboard (Swift)
//
// KeyboardAvoidViewController.swift
//
// Created by Charles Julian Knight on 2/3/16.
// Copyright (c) 2017 Charles Julian Knight
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without restriction,
// including without limitation the rights to use, copy, modify, merge,
@rabidaudio
rabidaudio / MenuContainerView.swift
Created February 3, 2016 17:02
A view which draws left and right menus (Swift)
//
// MenuContainerView.swift
// menu-tab-test
//
// Created by @charlesjuliank on 2/2/16.
//
import UIKit
// This is a special view where you can set a mainView as well as left and right menu views.
//
// Observable+Promise.swift
//
// Created by Charles Julian Knight on 1/2/17.
// Copyright © 2017 Charles Julian Knight. All rights reserved.
//
import Foundation
import RxSwift
import PromiseKit
@rabidaudio
rabidaudio / Main.kt
Created April 15, 2017 05:46
Blocking coroutine behavior
package com.example
import kotlinx.coroutines.experimental.*
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
/**
* simulated blocking operation
*/
fun blockingFoo(x: Int): Int {
@rabidaudio
rabidaudio / Units.kt
Created July 12, 2017 02:12
Playing with unit analysis in kotlin
// see https://discuss.kotlinlang.org/t/units-of-measure/3454/7
// see http://javanut.net/2017/05/23/more-fun-with-generics-in-kotlin/
//class Bag<T> private constructor(val wrapped: List<T>): Collection<T> by wrapped {
//
// private class DefaultComparator<T>: Comparator<T> {
// override fun compare(o1: T, o2: T): Int = o1.toString().compareTo(o2.toString())
// }
//
// companion object {