I’m currently working on the following, all of which I’ll post about as things progress.
- Drawing package for points, lines, circles, discs, anti-aliasing etc.
- Server for multiple static sites on a single port with zero-config https.
- Function server for Go functions, like AWS Lambda or Azure Functions.
- Microsite/content/article/blog server - multiple sites on a single port.
Further details follow. For general details on what I do, see my About Me page.
Drawing package for points, lines, circles, discs, anti-aliasing etc
This is a simple Go package for drawing on a 2D surface. It includes primitives and PNG export, and will also support sprites and related higher-level constructs.
- Create surface, clear surface, with transparency
- Plot point, horizontal line, and vertical line
- Non-aliased line with fast integer routines
- Anti-aliased line and plot
- Rectangle outline, filled rectangle
- Circle outline, filled circle
- Polygon outline, antialiased polygon outline
- Pre-calculated color gradient, weighted color on a scale
- Write as a PNG stream
- Some predefined colors and some functionality shows timings
More details are available in the drawing package repository.
Server for multiple static sites on a single port with zero-config https
Written in Go, this is a very simple yet very powerful web server.
- No installation needed - single file to deply.
- No configuration needed - a simple list of your website locations is enough.
- All your sites on a single port on a single server for easy management.
- Run on port 443 and HTTPS is automatic, including fetching, caching and renewing.
A function server for running Go functions
A little like AWS Lambda or Azure Functions, this is a self-hosted function server.
- Drop the server onto a virtual machine or container. This is the only machine you’ll need for your entire infrastructure if you scale vertically. Given Go’s frugality and performance, a single average server should be up to the whole job for most people.
- Deploy standalone Go Scopes in source form. The server will auomatically build them into a form it can use. A scope might be Billing, News etc and can contain multiple functions.
- Exposed functions within each scope are made available by the server at endpoints like /fn/News/GetLatestNews.
- Any number of scopes with any number of functions combine to create a whole infrastructure.
- Function CPU time tracking is under way for stats purposes.
- Any Go packages in the server’s Go cache are available for use in scope functions.
- Support for functions in other languages and for service discovery is incoming. Also, support for network deploy of scripts is under consideration; currently you need to drop a scope’s Go source files into a server folder manually or via CI/CD.
- This is not yet open source as it is in a state of extreme flux.
Small Sites - a server for multiple content sites (like this one)
- Extremely simple to create content for, using Markdown content (other file types are supported) in a folder structure that defines your site’s structure.
- Very fast rendering alongside a great cacheing system means high throughput without needing a proxy or other server in front.
- A single binary file distributable gives the easiest deployment around.
- Any number of sites served simultaneously on the same port and automatically routed via the host header.
- More information on Small Sites is available here.