Skip to content

Instantly share code, notes, and snippets.

View doriansmiley's full-sized avatar

Dorian Smiley doriansmiley

View GitHub Profile
@doriansmiley
doriansmiley / hospital_stats.py
Created November 10, 2025 04:13
Foundry Lightweight Transform: SQLFrame (DuckDB) demo for service-level patient analytics This gist shows a minimal, anonymized Foundry lightweight transform that reads two tabular datasets (staff, patients), builds SQLFrame DataFrames on a DuckDB session, computes service-level aggregates, and writes results back to a Foundry output.
from transforms.api import LightweightOutput
from sqlframe.duckdb import DuckDBSession
from sqlframe.duckdb import functions as F
from transforms.api import LightweightInput, transform, Output, Input
@transform.using(
staff=Input("ri.foundry.xxx"),
patients=Input("ri.foundry.xxxx"),
staff_stats=Output("ri.foundry.xxx),
@doriansmiley
doriansmiley / print0-100.js
Last active March 24, 2021 22:23
Print 0-100 no numbers
const one = true >> false;
const zero = false >> true;
const ten = parseInt(one.toString() + zero.toString());
let stop = ten * ten;
const printInRecursion = (index) => {
if (index > stop) {
return
}
console.log(index++);
@doriansmiley
doriansmiley / server.js
Created January 24, 2021 23:26
SSR with Puppeteer and Shadow DOM
// eslint-disable-next-line @typescript-eslint/no-var-requires
const express = require('express');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const path = require('path');
const app = express();
// eslint-disable-next-line @typescript-eslint/no-var-requires
const cors = require('cors');
const port = process.argv[2] || 3000;
// eslint-disable-next-line @typescript-eslint/no-var-requires
const ssr = require('./ssr/ssr');
@doriansmiley
doriansmiley / Output
Last active January 7, 2021 21:16
Clone Javascript Objects
{
_a: "x",
_b: "z",
a: "x",
b: "z",
log: log() {
console.log(`hellow world, I am and isntance of vo2 and my values are a: ${this.a} b: ${this.b}`);
}
}
"hellow world, I am and isntance of vo2 and my values are a: x b: z"
@doriansmiley
doriansmiley / collection.json
Created December 28, 2020 05:20
Angular Schematic for Generating TypeScript Packages
{
"$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
"schematics": {
"create": {
"description": "Creates a stub TypeScript project.",
"factory": "./create/index#create",
"schema": "./create/schema.json"
}
}
}
@doriansmiley
doriansmiley / builder-pattern.js
Created October 19, 2020 04:51
Builder Patter in Action
/*
* Below is an example of using a builder pattern to distill a declerative function to add/remove event listeners
*/
function callback (event) {
console.log(event);
}
function addEventListeners1 () {
this.element.addEventListener('click', callback);
}
import React, { useEffect, useRef } from 'react';
import logo from './logo.svg';
import './App.css';
import * as Button from 'lotusjs-components/lib/view/functional/Button';
import * as AbstractComponent from 'lotusjs-components/lib/view/functional/AbstractComponent';
import * as ComponentRegistry from 'lotusjs-components/lib/context/functional/ComponentRegistry';
function App() {
const template = document.createElement('div');
template.innerHTML = '<template id="app">\n' +
import {ButtonComponent, createComponent as createButtonComponent} from './Button';
import {mixin} from './AbstractComponent';
// export interfaces
export interface SuperButton extends ButtonComponent {
onMouseOverLabel: (event: Event) => void;
};
export const createComponent = (): SuperButton => {
const clone = mixin<SuperButton>(createButtonComponent(), {
export const mixin = <T>(target, sub, params = null): T => {
// IMPORTANT: mixin is designed to function like Object.assign, just respects accessors
// grab enumerable properties of the target object
const keys = Object.keys(sub);
keys.forEach((prop) => {
const methodDef = Object.getOwnPropertyDescriptor(sub, prop);
// check if this property uses accessor methods (Object.assign can't do this!)
if (methodDef && (methodDef.get || methodDef.set)) {
// yep
addProperty(target, prop, Object.getOwnPropertyDescriptor(sub, prop).get,
import {AbstractComponent} from './AbstractComponent';
import {SkinPart} from './SkinPart';
import {ComponentEvent} from '../control/events/ComponentEvent';
/**
* Created by dsmiley on 7/26/17.
*/
export class Button extends AbstractComponent {
public buttonSkinPart: HTMLElement;