Skip to content

Instantly share code, notes, and snippets.


Paul Blundell blundell

View GitHub Profile
View gist:902d7283489a5eb2edda7823d4a38b05
class HellowWorldRepository {
interface Listener {
void onSomethingDone(String result);
public void doSomething(Listener listener) {
new Thread(new Runnable(){ // this is the worst way to do threading, google "android threading"
public void run() {
// do some stuff
blundell / mailchimp.iframe
Last active Feb 9, 2019
Clean Mailchimp sign up form
View mailchimp.iframe
<!-- Begin Mailchimp Signup Form -->
<style type="text/css">
#mc_embed_signup { border: none; text-align: center; width: 100%; } /* Signup form container */
.mc-field-group { display: inline-block; } /* positions input field horizontally */
#mce-EMAIL { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 1em; ; border:none; border-bottom: 2px solid #000; color: #343434; background-color: transparent; padding: .7em 30em .7em 1em; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; display: inline-block; margin: 0; } /* Input Styles */
.clear { display: inline-block; } /* positions button horizontally in line with input */
blundell / interleave Java
Created Nov 14, 2018
Interleave two streams of the same type in Java 8
View interleave Java
Stream<String> a = Stream.of("one", "three", "five");
Stream<String> b = Stream.of("two", "four", "six");
Stream<String> out = interleave(a, b);
public static <T> Stream<T> interleave(Stream<T> streamA, Stream<T> streamB) {
return zip(streamA, streamB, (o1, o2) -> Stream.of(o1, o2)).flatMap(s -> s);
blundell /
Created Apr 17, 2017
An AndroidThings button you can use to run something in a 1 liner call
Runnable somethingIWannaDo = new Runnable() {
public void run() {
Log.d("EZ", "I got ran");
// In Android Activity onCreate:
RunnableButton.create("BCM21", somethingIWannaDo).onCreateInjectInto(this);
blundell /
Last active Nov 19, 2020
Uninstall all apps on an Android Device that have the intent-filter category IOT_LAUNCHER
spin() {
printf "\b${sp:sc++:1}"
((sc==${#sp})) && sc=0
endspin() {
printf "\r"
blundell /
Created Jun 20, 2015
Creates a builder for the SpotifyApi allowing easier client creation & hiding retrofit implementation. Idea from:
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
final class SpotifyApiBuilder {
private Executor executeExecutor;
private Executor callbackExecutor;
blundell / UniqueActivityLifecycleCallbacks
Created May 23, 2015
Android ActivityLifecycleCallbacks that will only call back for a specific activity (not all activities)
View UniqueActivityLifecycleCallbacks
import android.os.Bundle;
import java.util.Locale;
public class UniqueActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
private final String activityName;
private final Application.ActivityLifecycleCallbacks lifecycleCallbacks;
blundell / parsing
Created Mar 30, 2015
Android Json Parsing of a YouTube response
View parsing
private Vector<ContentValues> parseJson(String jsonStr) {
Vector<ContentValues> cVVector = new Vector<ContentValues>();
try {
JSONObject json = new JSONObject(jsonStr);
JSONObject data = json.getJSONObject("data");
JSONArray items = data.getJSONArray("items");
for (int i = 0; i < items.length(); i++) {
// Get the JSON object representing the day
JSONObject videoDetails = items.getJSONObject(i);
blundell /
Created Jan 4, 2015
An ImageView which supports a centered foreground drawable. - Based on Jake Wharton's ForegroundImageView
* <p/>
* Then modified to :
* not scale the foreground to the ImageView size
* draw the foreground centered
public class ForegroundImageView extends ImageView {
private Drawable foreground;
blundell / AndroidManifest.xml
Last active Aug 29, 2015
assertActivityRequiresPermission() Why doesn't this test pass?
View AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=""
android:permission="" />