Skip to content

Instantly share code, notes, and snippets.

View ashleydavis's full-sized avatar

Ashley Davis ashleydavis

View GitHub Profile
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
/// <summary>
/// A simple free camera to be added to a Unity game object.
///
/// Keys:
@ashleydavis
ashleydavis / grademark-first-example.md
Last active November 20, 2025 03:56
This notebook exported from Data-Forge Notebook is an example trading strategy that demonstrates the grademark API for backtesting financial trading strategies.

Grademark mean reversion example

This notebook demonstrate backtesting of very simple mean reversion trading strategy.

It uses the Grademark JavaScript API for backtesting.

For a version of this code runnable on Node.js - please see the Grademark first example repo.

To keep up with what I'm doing checkout my blog or YouTube channel.

@ashleydavis
ashleydavis / readme.md
Last active June 9, 2025 00:23
Script for tools setup on Ubuntu Linux.

Development Tools Manager

A comprehensive shell script for managing development tools on Ubuntu 24. Install, update, list, and uninstall your essential development tools with a single command. Now supports 16 tools including JSON processing capabilities, HTTP clients, Microsoft enterprise tools, and remote access solutions.

Features

  • 🚀 One-command installation for all your development tools
  • 📋 Status overview showing installed/missing tools and versions
  • 🔄 Individual tool management - install, update, or remove specific tools
  • 🧹 Clean uninstallation with proper cleanup of repositories and keys
@ashleydavis
ashleydavis / graph.ts
Last active October 10, 2024 04:28
Searchs backwards iteratively through a graph from the head nodes to find the set of last common ancestors that all paths pass through and that are reachable from the head nodes.
//
// Search backwards iteratively through a graph from the head nodes to find the set of last common
// ancestors that all paths pass through and that are reachable from the head nodes.
//
export function findLastCommonAncestor(blockGraph: BlockGraph, blocks: string[]): IBlockNode[] {
if (blocks.length === 0) {
return [];
}
//
@ashleydavis
ashleydavis / event-source.ts
Created January 15, 2019 06:12
C# style events in JavaScript
// https://stackoverflow.com/a/15964759/25868
export type BasicEventHandler = () => void;
export type SenderEventHandler<SenderT> = (sender: SenderT) => void;
//
// Simulate C# style events in JS.
//
export interface IEventSource<HandlerType extends Function> {
//
@ashleydavis
ashleydavis / typescript-compiler.ts
Created April 30, 2020 08:36
An example of using the TypeScript compiler from TypeScript
import * as path from "path";
import { IDiagnostic } from "./language-code-generator";
import { readJsonFile } from "../common/file";
//
// Result of compiling TypeScript code.
//
export interface ICompilationResult {
code?: string;
diagnostics: IDiagnostic[];
@ashleydavis
ashleydavis / parsing log data.md
Last active November 6, 2019 10:48
An example of parsing log data for later transformation, analysis and visualization with Data-Forge

This markdown was exported from Data-Forge Notebook

Example of parsing log files so you have structured data to use with Data-Forge

First define some test data:

@ashleydavis
ashleydavis / Node.js require hook.js
Last active September 22, 2019 09:16
This snippet of code sets up a hook to intercept calls to require in Node.js. Put this code at the entry point of your app. It's a great debugging tool for Node.js and it even works under Electron!
//
// Original code here.
//
// https://stackoverflow.com/a/41674522/25868
//
const m = require('module');
const originalLoader = m._load;
m._load = function(request, parent, isMain) {
[
{
"ORDERNUMBER": 10107,
"QUANTITYORDERED": 30,
"PRICEEACH": 95.7,
"ORDERLINENUMBER": 2,
"SALES": 2871,
"ORDERDATE": "2/24/2003 0:00",
"STATUS": "Shipped",
"QTR_ID": 1,
@ashleydavis
ashleydavis / example-vega-lite-chart-with-second-series-on-the-right.vl.json
Created August 11, 2017 01:33
Example vega-lite chart with two time series and multiple layers - the second Y axis is moved to the right hand side of the chart.
{
"$schema": "https://vega.github.io/schema/vega-lite/v2.json",
"data": {
"url": "https://vega.github.io/vega-lite/data/seattle-weather.csv"
},
"layer": [
{
"mark": "line",
"encoding": {
"x": {