Skip to content

Instantly share code, notes, and snippets.


Paul Blundell blundell

View GitHub Profile
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 /
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"
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 / VideoView Buffering Spinner
Created Jan 21, 2014
Adding a progress spinner to a video view for before it starts or whilst it is buffering.
View VideoView Buffering Spinner
<FrameLayout xmlns:android=""
android:layout_gravity="center" />
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 /
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 / anti-hungarian-checkstyle
Created Jan 25, 2014
Anti-Hungarian CheckStyle check
View anti-hungarian-checkstyle
public class AntiHungarianCheck extends Check {
private static final String CATCH_MSG = "Hungarian notation belongs in the 90's. " +
"Don't prefix member variables with 'm'. " +
"Use your IDE's shiny colors. Culprit was: ";
private final HungarianNotationMemberDetector detector = new HungarianNotationMemberDetector();
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 / Gradle handle repos
Created Jan 20, 2014
Handle the declaration of all source code repositories in your base build file, and you don't have to worry about declaring them in any child modules. The code below would go at the top of your build.gradle, in your 'base' or 'top' build.gradle file. You don't have to add anything to child modules. You will get full repository source retrieval.
View Gradle handle repos
subprojects {
buildscript {
repositories {
maven {
url ""
maven {
url ""
blundell / Crazy Array Init
Last active Dec 31, 2015
1 line annon inner class array initialisation because I want to be able to add & remove but I'm too lazy to extend BaseAdapter.
View Crazy Array Init
public class NavDrawerArrayAdapter extends ArrayAdapter<String> {
public NavDrawerArrayAdapter(final Context context) {
super(context, android.R.layout.simple_list_item_activated_1,,
new ArrayList<String>() {{