Skip to content

Instantly share code, notes, and snippets.

View srcreigh's full-sized avatar

Shane Creighton-Young srcreigh

View GitHub Profile
@srcreigh
srcreigh / errors.rkt
Created September 4, 2021 02:24
Display multiple syntax errors in Racket
#lang racket/base
(require racket/list)
(provide report-all-errors
save-error-message)
;; Taken from Typed Racket codebase tc-util.rkt
(define-struct err (msg stx) #:prefab)
(define delayed-errors null)
@srcreigh
srcreigh / syntax-error.rkt
Created February 2, 2021 23:19
How to add static compilation errors to Racket
#lang racket/base
(require (for-syntax racket/base syntax/parse))
(define-syntax (error stx)
(syntax-parse stx
[(_ ...) (raise-syntax-error #f "This is an error." stx)]))
;; The following line will be highlighted in the IDE and say "This is an error."
;; in DrRacket or racket-xp-mode for emacs.
(error 'hi)
@srcreigh
srcreigh / who-needs-latex.txt
Created January 14, 2016 20:49
notes from my compiler construction course
January 14, 2016
Thursday
COMPILER CONSTRUCTION
1. TOKENS AND KINDS
===================
August 6, 2015
Thursday
THOUGHTS
What, if any, is the value in being wrong? First it must be established what
"wrong" is, in the first place. It is easy to be wrong about "external" things;
things outside of our own mind. "The rock will fall," one could say... and be
wrong when, after throwing it up, finds that it has gotten stuck in a tree. We
from xml.dom import minidom
import json
xmldoc = minidom.parse('changelogs.xml')
items = []
itemsxml = xmldoc.getElementsByTagName('string-array')
versions = itemsxml[0].getElementsByTagName('item')
dates = itemsxml[1].getElementsByTagName('item')
descs = itemsxml[2].getElementsByTagName('item')
public static final int ITEM_VIEW_TYPE_LARGE = 0;
public static final int ITEM_VIEW_TYPE_SMALL = 1;
@Override
public int getItemViewType(int position) {
if (isCategoryLarge(categories.get(position)) {
return ITEM_VIEW_TYPE_LARGE;
} else {
return ITEM_VIEW_TYPE_SMALL;
package com.hackthenorth.android.util;
import android.animation.Animator;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.view.View;
/**
* "Because, honestly, why isn't android.animation.ViewPropertyAnimator an Animator in
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview_background_shape" >
<item android:drawable="@drawable/card_background" />
<item>
<shape>
<padding
android:bottom="12dp"
android:left="12dp"
android:top="12dp"
<com.hackthenorth.android.ui.component.TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:textColor="@color/text_color_primary"
android:fontFamily="sans-serif"
android:textStyle="bold"
android:textSize="18sp"
Set<WeakReference<TextView>> toRemove = new HashSet<WeakReference<TextView>>();
for (WeakReference<TextView> weakRef : textviews) {
TextView textView = weakRef.get();
if (textView != null) {
// do stuff here
} else {