Technology

Our technology approach uses lifecycles and stream techniques extensively. We write software beneath the framework or higher language level. This utilizes core technologies such as the C language, operating system APIs, and crypto libraries. We work directly work open protocols such as MIME, HTML, HTTP (web), SMTP/LMTP (email), and OpenGL (desktop/mobile), while providing a few of our own conventions such as TempLang, Oset, and Caneka.

We have created our own memory manager, type system, and file persistence/database layers. Though they are very elementary at this time, they provide ample flexibility and performance optimization potential as we scale.

Pre-Production Ready Systems

TempLang

This web framework is how we have bootstrapped development of Email2Site, see more at templang.org.

The languages is a Domain Specific Langauge for selectors which wires up most of a front-ends behaviour and element population. Similar to how shorthand was an abbreviated langauge for note-taking during speaches, this DSL is an abreviated version of the common tasks in front end development.

Originally created for BubbleView, this langauge has found a home on the web. It brings event routing and element creation together quickly and completely.

BasicTypes

This is our type system which includes the things common in higher-level languages such as string handling, tables, arrays, spans, and some basic input-output operations such as data stores and passports.

Below is an image of the structure of the Table object which provides sequential, logarithmic and constant access to data from the same place.

See unit test progress.

MemCtx

Our memory management approach is slab-based instead of reference-counting or mark-sweep. We allocate slabs of memory in blocks of about 4k-12k. The slabs are filled with all the items of a single work task. When the task is done the whole slab is released. This saves a lot of complexity and increases predictability at the expense of holding more memory during each task.

We approach memory performance by breaking up tasks into smaller workloads rather than tracking complex relationships for each small memory allocation.

OSet

Parsing serialized formats such as CSV, XML and JSON can be a rather expensive process. This expense is both for the computer to process and for developers to manage. The Oset format (short for offset) is based on indicating the length of each value. This has the advantage of avoiding all escaping problems because each segment of content is not considered by the parser.

alpha!s/6=Apples;
bravo!s/7=Bananas;
charlie!s/44=Carrots are amazing especially with broccoli;
count!n64/4=1207;
*line breaks for display purposes only

The above example contains a dataset with four keys.

The format is loosely inspired by the way the PDF format contains fixed offset binary data embedded inside the human semi-readable Obj tags.

CycleServ

This network server is used to compose our HTTP website serving and SMTP/LMTP email ingestion servers.

The system is lifecycle based to allow it to flexibly perform segments of conversations such as handshakes and response codes. It leverages epoll in linux to perform non-blocking input-output patterns. This is done by specifying whether each interaction has an expectation of reading or writing at any given time.

It uses a custom handler convention for important headers or protocols. This particularly important for headers such as Content-Length or Cookie which indicate other actions or behaviours in the interaction.

Below is a diagram of the components of CycleServ.

See unit test progress.

IoAccess

Authentication using crypto signatures is used for each file access or login credential based interaction. We have built a wrapper into our access of essential services that manage permissions across our ecosystems.

Systems in Development

BubbleView

This desktop/mobile user-interface engine draws elements on the screen in a similar way to how web browsers have displayed the results of HTML and other media formats. The system handles keyboard and mouse events in accordance with what it has drawn on the screen using OpenGL and our in-house iterator and data-structure libraries. The targets for this runtime are Windows, macOs, Linux, iOS, and Android.

DayWalker

This is a font and text input handler that is operating system agnostic. Intended for cross-platform development on desktop, mobile, and embeded systems such as ATM's, automotive, and robotics industrues. Day walker gets it's name from the idea that it can walk in the dark and the light of any conventional computer ecosystem.

Caneka

This is our in-house language preprocessor that accelerates our development with the C language by integrating our type system created by BasicTypes and MemCtx.

More information is available at caneka.org

Technology by type

A lot of the system has a significant amount of crossover. BasicTypes is used in everything but the web user-interactivity products.