Research & Projects
Contents

Things I made over the years...

Here is curated list of the things I made over the years and I personally hold the copyright to them†1. I made these projects in order for my research, tooling and mostly fun of it.

1
Which excludes any corporate project, contracted project, and any project that I used to be the managing or overseeing party of.

This list includes stable projects, projects under heavy development, abandoned/discontinued projects and some proprietary ones and so not all of them are accessible in the internet. If you wish to get one of these projects, contact me directly.

humane computation

2017 • DesignTalk

DesignTalk is a playground for implementing ideas of an illustration software. The idea is to play with possibilities of interface design and track how much it can improve the state of software's comfort. DesignTalk implements a a new approach of interface design where only the common tools are visual and they are all visible in the side of a selected object to minimize the interface and then every other task is given using an english like language by speaking it.

Orchestra

Since 1950's the syntax of regular languages are kept the same, while today we have much more computational capabilities, due to the syntax of regular expressions one cannot write a big pattern inside of it. Orchestra is a new visual language that makes it easy and safe to write scalable patterns, It both compiles to RegExp and can be compiled from RegExp which makes it easy to be used in any host language.

2016 • Orchestra Studio

Orchestra Studio is an IDE designed specially for Orchestra. It has an editor for Orchestra, Contains all the compilers used to compile and decompile Orchestra, Comes with a playground to write testing for the pattern, an offilne documentation that is integrated to the visual editor, and has extensions for other editors so that one can open a regexp from those editors in Orchestra and edit them.

2016 • Concerto Compiler

Concerto is an Orchestra Decompiler that compiles Regular Expressions written in the ECMAScript Specification to Orchestra Language. It comes bundled with the Orchestra Studio.

Computer Graphics

2018 • Non-Linear Shaders

A shading algorithm that extends the ideas and mathematics of Gouraoud Shading by giving it custom transition equations. In Gouraud Shaders colors move from one light source to the other by a linear transition, within this shader one can define custom paths and equations and therefore create much more interesting lightings.

2018 • Fun Shaders

I write GLSL shaders from time to time and this is a small gallery containing them. You may find them fun or dumb! it's notihng serious.

2018 • Quartz Compositions

I love macOS's Quartz technology and I use it to create creative visualizations and graphics test, it's also damn handy at connecting different graphics tools like GLSL, OpenCL, CoreImage. For what it's worth I use my graphics as personal screen savers and so there's a repository of these screen savers.

KaryScript

KaryScript is a programming language that compiles to JavaScript and tries to be a much more readable version of JavaScript. By bringing some of the grammars and ideas from different languages like pipes, ruby like structures, less punctuations, tables from markdown and etc. it makes the whole experience of programming much more readable.

2017 • KaryScript's Compiler

KaryScript's compiler is a JavaScript compiler bundeled to one file. It can be embedded to any kind of JavaScript runtime such as Web, Node and Rhino and compile KaryScript to ES6. It also comes with a command line interface that can act as a language server too.

2017 • KaryScript Monaco

An editor based on Microsoft's Monaco Editor that comes with Kary Pro Colors, KaryScript Monarch Definitions and Monaco Comment IV integrations which means it's a full featured editor for KaryScript that can be integrated to web pages.

2017 • KaryScript for Visual Studio Code

Adds language support of KaryScript to Visual Studio Code based on the API provided by the compiler server and KaryScript tmLanguage

Building Energy

2015 • HeatStudio v.1

HeatStudio is a suite of software for computing building's Heat Transfer Coefficient. It's being developed as a software for evaluating Iranian's Building Regulation (A.K.A Chapter 19) for Energy Efficiency. It has a set of tools for modeling a building, a computational engine to compute the heat transfer based on the model and a given algorithm by the Chapter 19 and a tool for investigating the results. We abandoned this software in favor of the version 2 which has a much broader set of features.

2016 • IDF for Visual Studio Code

A package that provides language support for all the IDF based energy file formats like IDF, OpenStudio, HeatStudio, Heat19, HSTB, etc.

Color Schemes

2016 • Kary Pro Colors Scheme

Pro Colors is a color scheme for code highlighting. It's designed to have a look that is pretty and feels like candy because most developer tools do not look like pretty, It's designed to have a homogenous color distribution and in such way that pretty colors are near each other. It's also designed to support as much as tokens as possible to have to most accurate coloring.

2016 • Kary Pro Colors for Visual Studio Code

Pro Colors for Visual Studio Code is a distribution of Pro Colors with Visual Studio Code's Workbench Themes supporting the color scheme. Since it's release to the Visual Studio Marketplace, Pro Colors has remained in the first page of the themes making it one of the most popular themes in Visual Studio Code.

2016 • themeX

themeX is a color scheme generator. It solves some of the major problems in composing cross-editor color schemes by defining a single file that contains tokens, color schemes, and let's the user define color variables. Using this method one can define multiple color schemes via one theme, for example a theme that has Light/Dark versions is easier to be made in themeX. themeX then compiles the theme for different editors making it easy to mailing a singular code-base.

Mathematics

2016 • Graph

A graph programming environment with a powerful graphing engine, powerful high-level API, mathematica notebook like interactive programming, code editor and plugin support.

2015 • numeraX

Working with mathematics in computers has shown me that most people have a hard time to change the notation of math to computer language. numeraX is an experiment to find out to which extent is it possible to develop a language like math.

2018 • Octobass

Octobass is a dependency execution framework for developers. It gets a dependency graph and then executes a function on each node by first evaluating the dependencies.

2018 • Workout

Workout is an experiment with the idea of dependent equations. Say A = x + 2 is a given equation, then it depends on x. Workout computes a dependency graph and then tries to compute as equations as possible.

2015 • Calculat

Calculate was a fork of NCalc for Kary Framework that added a lot to its foundation. It added case-insensitivity to the parser, a few new operators and change the bitwise operators to math operators. At the end it completely removed the storage and type-caster in favor of implementing big number to the NCalc.

2015 • Numerica

Numerica was an experiment to implement Arbitrary-Precision Numerical Types for .NET on top of the Kary Framework pretty much like the GNU MP infrastructure. It could store up to 2.8 billion digits and some basic mathematical functionalities like basic arithmetics were developed for it but the experiment didn't got the performance in mind and it was abandoned.

Code Quality

2014 • Kary Coding Standard

Kary Coding Standard is a coding style designed for readablity and beauty. It has a set of rules that eliminates many of the common readability problems and also incoporates the use of Kary Comments to visually orgnize the structure of the code.

2016 • Righteous

Righteous is a code formatter for CSS that implements the Kary Coding Standards. It reads the code into an AST and then completely rewrites it into KCS-proof style making it the easiest way to fully implemnet the standard.

2015 • Comment V for Visual Studio Code

Comment V is an extension for Visual Studio Code providing Kary Comments. It uses contex-aware generation of comment making it easy to just create a comment by pushing a button.

2015 • Comment 3

First edition of Kary Comment Generators that was designed for macOS with native technologies. It soon proved to be useful and the multi platform Comment IV was made.

2015 • Comment IV

Comment IV is a web app for generating Kary Comments, It supports every comment format and most of the supported languages.

Arendelle

Arendelle was an educational language targeting kids. It used a basic language and some simple navigational and painting instructions to create a world where kids could use programming to create 8-bit like arts and learn some basic programming concepts.

2014 • Arcade

Arcade was the first intepreter for Arendelle and supported up to version 1.16 of Arendelle. It was written in C# and could be embedded in .NET environments.

2015 • Swifty

Swifty was a Swift/Objective-C based interpreter for Arendelle that powered Arendelle for iOS and the also had a macOS command line shell. It supported Arendelle up to version 2XIV

2015 • Arcco

Arcco was a fork of Docco by Jeremy Ashkenas specially designed for Arendelle

2016 • Gerda

Garda is was the stand alone context-aware autosuggestion server for Arendelle. Gerda scanned the code without parsing it in a linear way and therefore it could provide suggestions by the speed of O(n)

2014 • Marker

Marker was Arendelle's web syntax highlighter. It could generate a colored HTML from given Arendelle codes on the fly in the speed of O(n). It only supported Arendelle till version 1.18

2015 • Grid Importer

A tool that loads the rendered Arendelle blueprints using the Arendelle Grid Files into SketchUp for 3d Printing.

2014 • Pabbie Language

Pabbie language was an experiment to create a language with Arendelle as it's engine that looked as Plain-English. Motivation was to bring Arendelle to the ones who didn't like it's short army-code like style.

2016 • Arendelle for Visual Studio Code

An extension to provide Arendelle language support for Visual Studio Code. This package provides syntax highlighting as well as context-aware intelliSense powered by the Gerda Core.

Text Editors

When I started learning to program, one of my obsessions was to create an independent text editor. I tried many times but never got the result I wanted. Maybe someday I actually make an editor that I love but till that day these are the attempts I had towards that goal

2012 • Nexear

Nexear was a cross-platform text editor. It supported multiple panels for editing (things like tabs), had a GUI interface as well as an internal commanding interface and could be controlled by only typing. The interface came with many tools like an internal calculator, formatters, editing options, Arendelle toolings and could import many formats like ePub, PDF, DOC, etc to plain text.

2012 • TexTHOR & TexTHOR II

TexTHOR was my first and TexTHOR II was my second attempts to create a terminal based text editor. TexTHOR used to have inline commands, so the lines who started with -- were command lines and one could interact with the editor inline that proved to be bad and the project got abandoned.

2013 • Chatper

Chapter was the my third attempt to create a command line text editor. It used a whole new way to manage the screen and had a lots of updated algorithms and used a lots of Kary Framework power goodies but at the end it was too buggy to fix and also got abandoned.

Markup & Layout

2016 • Pageman

Pageman is a basic HTML processor designed to be used alongside the Jekyll to develop this website but grown into a thing for itself. Pageman let's one use Markdown, HTML, Legend and any other language in one file as well as providing C-like comments.

2018 • Pageman for Print

A set of tools that makes it possible to use pageman as language for priting like TeX. It provides paging, and print layouts plus a watch mode server for live preview.

2016 • Pageman for Visual Studio Code

Language support package for Visual Studio Code

2016 • Legend

Legend is an extension to markdown that compiles to a very special HTML format optimized for side bar footnotes as in books. This website uses Legend for it's side notes.

2017 • Timpani

Timpani is a very small language like Markdown but with only a few of Markdown's tools, designed to be parsed in O(n) time for apps in React Native and similar other platforms where computation is expensive.

Security

2016 • Gateman Protocol

In days of Kary Foundation we wanted to test our alpha proprietary software with some organizations in secret ways. Gateman implemented a safe software key foundation for us which we could lock the software on specific user machines and be sure the alpha testing units won't get released to the public.

2016 • Gateman Client

Gateman Client was a client implemented in Cocoa, WPF, Qt for macOS, Windows and Linux that could generate the main Gateman Key needed to identify a single machine. Kary Foundation's Insiders Testing members could register their machines with the key generated by the Gateman Client.

Nearley

I use Nearley parser generator which is a fantastic generator, but it didn't have much of language support and so I made a few tools to make it usable in my workflow.

2017 • Nearley for Visual Studio Code

Syntax Highlighting Support for Nearley Parser Generator Language. Supported by other Kary extensions like Comment and Kary Pro Colors.

2017 • Nearley Playground for Mac

A very simple offline version of Nearley Playground for Mac using MacGap with an optimized view.

Frameworks

2018 • Cozy

Cozy is a web framework that is not a framework but rather a base project. It implements a Functional Reactive Programming structure with Storage, View and mid-level toolings on TypeScript. It creates a project in such way that only a TypeScript compiler be enough for compiling/bundling and minimizing the code.

2017 • Bassoon

Bassoon is a framework that implements an I/O infrastructure for apps in which makes it possible for them to share their data without a central server using an algorithm like IMAP on any given protocol (say a hard disk, FTP, Dropbox...)

2017 • Tambourine

Tambourine is a framework for writing musical theory software. Main goal is to have a library capable of computing musical theory so that one can write a Harmonizer Engine on top of it.

Textual Interfaces

2015 • Kary Framework

Kary Framework —originally targeting .NET— was a String Manipulation Framework. It had tools for visually aligning, lay-outing, manipulating, and styling strings. It also had tools for creating UIs with strings and also had Terminal Widgets for creating rich Text UIs.

2015 • Intactus

Intactus —Int in Latin— is a framework that extends the Kary Framework for creating Mathematical Notations and Charts is UTF-8 characters.

2015 • Note

Note is a demo app for Kary Framework that showcases some of its powers. Multi

2015 • Kary Series

Series is a game in which one has to find the formula of a series. It's made using Kary Framework and Monodraw to show the power of the textual interface creation.

2017 • Go Corelib

Go Corelib is a reimplementation of the original Kary Framework for the Go Language with some extra goodies and new capabilities

2017 • Clavinet

Clavinet is a command line argument parser with its own language rules. It reconstructs the array of args given by the os and uses its own parser to parse it. Given that it can give command line apps abilities like arrays.

Mental Health

2018 • Ungamify

Since gamification methods are being used to keep us release dopamine and stay within a website for a long time, This WebExtension tries to remove all gamification elements of a website like counters, notifications, related suggestions, commenting, like and any other method used to keep you stuck in a web page.

2018 • Self Stopper

For those of us with bad habits, Self Stopper is a WebExtension that blocks a given set of web addresses. So if you just keep returning to Twitter and find it a waste of your time you can simply block it to yourself!

Others

2017 • Kary Note for Phones

Note for Phone is was a re-implementation of Kary Note in Command line. In making of this phone app I developed the Bassoon and Timpani tools and started to make the app more than what it used to be. For now I'm making a new app for the web and for the Phone to become the dominant note app for me.

2017 • Pirate Browser

Pirate is a fork of Brave Browser that is just a little bit more pretty because I found the original browser unbearable.

2018 • KProj

KProj is an internal tool developed to estimate the cost of a project. It gets a table of tasks with given developer type, duration and phase. It then computes the phase times and and tries to compute the management cost based on the estimated time, and then computes the total development cost and time.

2018 • Ad Escaper

A simple YouTube ad blocker based on a flaw in the frontend of YouTube that I recently found.

2013 • Flip it Kary!

When trying to import text from a Persian PDF file you'll end up having all the text broken. Persian characters get mixed up with Arabic ones, the directions get messy and the places get mixed up. Flip it Kary! was a project that could import text from PDF and fix it to normal Persian.

2017 • Racket for Visual Studio Code

Language support for the Racket Language that has better colorization which is heavily supported by the Pro Colors and also having a context-aware auto-compilation support for Racket.

2017 • Telephone

A fork of Upterm Terminal with a few goodies like a much better auto-suggestion algorithm supporting T9 search and a light and fun theme.