Skip to content

Instantly share code, notes, and snippets.


Christopher Currie christophercurrie

View GitHub Profile
View calc.cpp
Copyright (c) 2001-2010 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at
// A Calculator example demonstrating generation of AST
christophercurrie /
Created Jan 10, 2012 — forked from colinmollenhour/
gitolite update hooks to reject CRLF line endings and require formatted commit messages
# see
# The "post-receive" script is run after receive-pack has accepted a pack
# and the repository has been updated. It is passed arguments in through
# stdin in the form
# <oldrev> <newrev> <refname>
# For example:
# aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.junit.Before;
import org.junit.Test;
View gist:3841860
public ServletContainer getJerseyContainer(DropwizardResourceConfig resourceConfig,
MyServiceConfig serviceConfig) {
// I like having a root module, but you can use as many as you like
final Injector injector = Guice.createInjector(new MyServiceModule(serviceConfig));
return new GuiceContainer(injector) {
public ResourceConfig getDefaultResourceConfig(Map<String,Object> props, WebConfig webConfig) {
christophercurrie / Install-WIF-OnAzure.ps1
Created Oct 8, 2012
Installing Windows Identity Foundation on Windows Azure (within a startup task)
View Install-WIF-OnAzure.ps1
$currentDir = (Get-Location -PSProvider FileSystem).ProviderPath
function SearchInstall($SearchVersion, $PathKey)
$installObjects = ls -path $PathKey;
$found = $FALSE;
foreach($installEntry in $installObjects)
$entryProperty = Get-ItemProperty -LiteralPath registry::$installEntry
View gist:4569300
<%def name="outer(x)">
<%def name="inner(y)">
values ${x} and ${y}
<%self:outer x="1">
<%self:inner y="${x + 1}" />
christophercurrie /
Created Apr 13, 2013
Configuring CloudBees Jenkins for SBT publishing

I want to use the CloudBees Jenkins service to build nightly snapshots of an SBT-based scala project and publish them to the Sonatype OSS Maven Repository. SBT has [two ways][credentials] of providing publishing credentials to the build; one has the credentials inline in an .sbt file (unencrypted, natch), and the other does allow for a hard-coded path to an external properties file (still, sadly, unencrypted).

CloudBees has a [mechanism][buildfiles] for providing configuration files to build agents, but I don't want to hard code the path to this location in my build.sbt, nor can I

christophercurrie / AsyncDownloadQueue.cs
Last active Dec 18, 2015
Various attempts at implementing an asynchronous download processor.
View AsyncDownloadQueue.cs
internal class BoundedAsyncDownload1
private const int MaxRequests = 4;
private void HandleResponse(WebResponse response)
{ }
private void CreateRequest(ConcurrentQueue<WebRequest> queue)
WebRequest request;
View BitmapDecoder bug
Known issue: Stream opened for Uri is not closed until finalized unless BitmapCacheOption.OnLoad set
Both overloads of this method contain a bug, where a stream is opened for the Uri, which is not closed until the bitmap decoder is finalized, unless BitmapCacheOption.OnLoad is set. Since there is no Dispose() method, there is no way to force closing the stream, except for removing all references to the BitmapDecoder, and forcing finalization using GC.Collect().
The workaround is to use the overload that takes a Stream, and dispose of the stream after you are done with the Decoder.
christophercurrie /
Created Jul 13, 2013
Example demonstrating complexities of JsonUnwrapped
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
class JAddress {