Skip to content

Instantly share code, notes, and snippets.

View stevedonovan's full-sized avatar

Steve J Donovan stevedonovan

View GitHub Profile
@stevedonovan
stevedonovan / CMakeLists.txt
Last active August 3, 2016 16:08
An extension module for Lily provding extra string functions.
include_directories("../src/")
add_library(xstr SHARED lily_xstr.c)
set_target_properties(
xstr
PROPERTIES
PREFIX ""
COMPILE_FLAGS "-fPIC -g"
)
@stevedonovan
stevedonovan / html.lua
Created September 5, 2011 09:40
Orbit-style Htmlification using LuaExpatUtils
--[[
See http://steved-imaginaryreal.blogspot.com/2011/09/htmlification-with-lua.html
Example usage:
-- test2.lua
require 'html'
html {
body { title 'Test' },
h2 'title',
p 'first para',
@stevedonovan
stevedonovan / foo.c
Created May 25, 2012 10:07
A Lua script to embed Lua code in a C module.
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#ifdef WIN32
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif
static const char * lua_code = \
@stevedonovan
stevedonovan / runner-article.md
Last active December 15, 2017 10:34
Temporary staging area for article

Cargo Manages Crates

Cargo is an important feature of the Rust ecosystem, using a central repository of versioned packages and ensuring reproducible builds. It has learned important lessons from more ad-hoc solutions like Go's 'go get' and is miles ahead from what is available for C++; it is like Maven, except TOML is easier to write and read than XML.

So suggesting that it is not ideal for some situations may come across as being perverse. I've seen people

@stevedonovan
stevedonovan / closures.md
Last active May 19, 2018 10:53
Rust Closures Article

Why Rust Closures are (Somewhat) Hard

The Easy Case: Lua

Since hard is always relative to something else, I'd like to start with a dynamic language. Functions in Lua are essentially anonymous and can capture variables from their environment (pretty much like with JavaScript, which Lua resembles in several important ways):

@stevedonovan
stevedonovan / common-rust-traits.md
Created July 1, 2018 12:38
The Common Rust Traits

What is a Trait?

In Rust, types containing data - structs, enums and any other 'aggregate' types like tuples and arrays - are dumb. They may have methods but that is just a convenience; they are just functions. Types have no relationship with each other.

Traits are the abstract mechanism for adding functionality to types and establishing relationships between them.

@stevedonovan
stevedonovan / el.lua
Created October 2, 2021 15:38
el is a Lua expression evaluator with shell-friendly shortcuts, like ^string and print[[]
#!/usr/bin/lua
-- Flatten ALL those tidy tables and add environment lookup
local tables = {math,io,os,string,bit32}
setmetatable(_G,{
__index = function(t,key)
for _,m in ipairs(tables) do
local v = m[key]
if v ~= nil then return v end
end
return os.getenv(key)
@stevedonovan
stevedonovan / ChartExample.java
Last active January 13, 2022 09:36
Android Example using AChartEngine to plot JSON data
package com.example.testchart;
import java.util.*;
import java.io.*;
import java.text.DateFormat;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.*;
@stevedonovan
stevedonovan / csvdta.go
Created December 2, 2011 08:06
A Go package which reads structure data from CSV data using reflection
package csvdata
// csvdata complements the csv package by allowing you to map a custom structure to
// the columns of data in a CSV file. The struct needs to be annotated so that each
// field can match a column in the data
//
// type Person struct {
// FirstName string `field:"First Name"`
// Second_Name string
// Age int
// }
@stevedonovan
stevedonovan / install.lua
Created September 28, 2013 13:37
A simple Lua install script for Lua modules, extensions and scripts. Tested on Windows and Linux.
#!/usr/bin/env lua
--[[ -- installing LDoc
function install()
-- requires('pl','Penlight')
-- install_script 'ldoc'
end
--]]
-- --[[