Skip to content

Instantly share code, notes, and snippets.

@bamboo
bamboo / core.clj
Created June 12, 2015 15:17
system-composition in clojure
(ns composition.core
(:require [com.stuartsierra.dependency :as dep]))
#_(defprotocol Component ; an interesting thought
(dependencies [component])
(constructor [component configuration]))
(defn using [dependencies constructor]
{::dependencies dependencies
::constructor constructor})
@bamboo
bamboo / styles.less
Created November 13, 2014 09:55
My atom stylesheet (goes well with atom-soda-dark and monokai-soda)
.workspace {
font-size: 15pt;
text-rendering: optimizeLegibility;
}
.tree-view {
font-size: 14pt;
}
.editor {
#! /bin/bash
# adapted from http://stackoverflow.com/questions/4060212/in-linux-how-do-i-run-a-shell-script-when-a-file-or-directory-changes/20381373#20381373
DIRECTORY_TO_OBSERVE="src"
BUILD_SCRIPT=./gradlew
function block_for_change {
inotifywait -r \
-e modify,move,create,delete \
--exclude ".*/build/.*" \
@bamboo
bamboo / MyColorSchemes.cs
Last active January 4, 2016 10:18
API based way of extending Livity color schemes. Save this file to a Editor/ folder inside your project and after refreshing the new color schemes should be available in the command palette and preferences dialog. Change and refresh to your liking. (It should be simpler I know, please bear with me!!! :))
using Livity.Collections;
using Livity.Composition;
using Livity.Text.Logic;
using Livity.Text.UI.Engine;
using Livity.Text.UI.Engine.Internal;
using UnityEngine;
namespace Livity.Mine
{
[Export(typeof(IColorSchemeProvider))]
@bamboo
bamboo / AssemblyAttributeTriggerSpike.boo
Last active December 26, 2015 01:29
Using assembly attributes to trigger code transformations
namespace Spikes
import Boo.Lang.PatternMatching
import Boo.Lang.Compiler
import Boo.Lang.Compiler.Ast
import Boo.Lang.Compiler.MetaProgramming
class EnableResponsePatternAttribute(AbstractAstAttribute):
override def Apply(node as Node):
node.Accept(ResponseTransformer())
@bamboo
bamboo / WindowStateIsLostWhenViewIsMaximized.cs
Last active December 23, 2015 09:29
Unity EditorWindow loses state if Scene view is maximized.
using UnityEditor;
public class WindowStateIsLostWhenViewIsMaximized : EditorWindow {
[MenuItem("Window/Bugs/Window State Is Lost When View Is Maximized")]
static void Open() {
EditorWindow.GetWindow<WindowStateIsLostWhenViewIsMaximized>();
}
string _state;
@bamboo
bamboo / CustomKeyboardModeProvider.boo
Last active December 22, 2015 13:49
Custom Livity keyboard mode provider.
import Livity.Collections
import Livity.Composition
import Livity.Text.Data
import Livity.Text.UI.Commands
import Livity.Text.UI.Editor
import UnityEngine
[Export(IKeyboardModeProvider)]
class CustomKeyboardModeProvider(IKeyboardModeProvider):
Name:
@bamboo
bamboo / GenericAttribute.boo
Last active December 22, 2015 06:38
HACK: Declaring generic UnityScript types
import Boo.Lang.Compiler
import Boo.Lang.Compiler.Ast
import Boo.Lang.PatternMatching
class GenericAttribute(AbstractAstAttribute):
_parameters as ArrayLiteralExpression
def constructor(parameters as ArrayLiteralExpression):
_parameters = parameters
@bamboo
bamboo / ReactiveServiceStack.cs
Last active May 11, 2019 16:00
Using ServiceStack* together with Reactive Extensions** to reduce the latency before the client can start processing the elements of an array response. The service sends elements to the client as soon as they become available through the magic of AsyncServiceBase, IStreamWriter, IObservable<T>.ToEnumerable() and careful use of WriteLine() and Fl…
using System;
using System.Collections.Generic;
using System.Disposables;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using Funq;
using ServiceStack.Common.Web;
using ServiceStack.Service;
@bamboo
bamboo / ObservableServiceClient.cs
Last active December 14, 2015 09:28
naive ServiceStack => ReactiveExtensions mapping
public class ObservableServiceClient : IObservableServiceClient
{
private readonly string _baseUri;
public ObservableServiceClient(string baseUri)
{
_baseUri = baseUri;
}
public IObservable<TResponse> ObserveMany<TResponse>(IReturn<IEnumerable<TResponse>> request)