Python Projects
-
Comber
Comber is a parser combinator library for creating text parsers in plain Python with a BNF flavor.
from comber import C, rs, inf key = rs(r'[_a-zA-Z][_a-zA-Z0-9]*')@('key') number = rs(r'[0-9]+')@('number', int) package = key[1, inf, ','] import_statement = C+ 'import' + package value = key | number function_call = key + '(' + value**',' + ')' assignment = C+ 'let' + key + '=' + (function_call | value) grammar = (import_statement | assignment | function_call)[0, inf]
-
Restsh
Restsh is a shell-like command interpreter for working with RESTful (or REST-esque) remote services.
REST Shell Use the "help" command to get help, and "exit" to exit the shell. $ import outlook $ help outlook.setAuthentication outlook.setAuthentication is a function Replace the authentication data for this service. It takes 1 arguments: auth: string $ outlook.setAuthentication(auth: "eyJ0eXAiOiJKV1Q....") Service[outlook] $ let messages = outlook.getMessages(mboxId: "me@example.com") $ size(of: messages) 6 $ let getSender = \item. item.Sender.EmailAddress.Name $ let senders = map(arr: messages, fn: getSender) $ senders [ "Steven", "Molly", "Mark", "Target", "Louise", "Campaign for Better Times" ] $ exit
Web Projects
-
Widgy
Widgy is a simply HTML widget kit and framework that is built on modern browser features. Applications can be written in plain HTML and JavaScript without additional dependencies.
<html> <head> <script type="module"> import * as widgy from './widgy/widgy.js' class App extends widgy.Application{ constructor(){ super() this.addProperty('editableSelectValue', null) } } widgy.start(App) </script> </head> <body> <span>Editable select with inline options</span> <select selected="@<editableSelectValue" editable="true"> <option>foo</option> <option>bar</option> </select> <span>{editableSelectValue}</span> </body> </html>
-
Recipe Box
A website for storing personal recipe collections made with Widgy, an Azure Functioni App, and Azure Blob storage.
whoami
-
I'm a former founder and life-long software developer. I've got a fascination with how people interact with computers, especially us programmers. The programs we write are influenced by the languages, libraries, and APIs we have at our disposal — finding the right ones can be the difference between a well thought-out, testable system and a labyrinth of duct tape and cardboard.
-
Find Me Elsewhere