Giter Club home page Giter Club logo

sandhands's Introduction

I'm Lily

Areas I've explored

Teaching

Learning to teach enables me to share my knowledge, and help me consolidate my understanding of code. If you would like to learn JavaScript, feel free to check out Your First RPG, a course I'm currently working on.

Software Development

I'm really passionate about expanding my capabilities as a programmer, and Javascript has been a great tool for that. I am constantly developing open source software in hopes that it can both accelerate the development process for myself and others.

Game Design

It's hard to not hum along to the old zelda soundtracks. I feel like gaming has become so industrialized we forget to treat it as an art form. I enjoyed reading "Power-Up: How Japanese Video Games Gave the World an Extra Life" and learning about how Japanese people revolutionized gaming.

I also redid the website for the amazing open source game engine melonJS

Web Development

I love seeing the many layers of modern software design, and exploring the cutting edge. I've worked with a lot of tools, but Solid.js and Astro to me are simply unmatched for convienent development and lightning fast web pages.

Security

I enjoy making things safe, so I study cyber security to better understand the security aspects of back-end & front-end development, as well as potential security risks in cloud-based environments like AWS and Lambda.

Artificial Intelligence

I love making art. I also have an Instagram where you can find AI artwork and more.

I have done extensive work with multiple forms of Artificial Intelligence. I have become very good at using the following AI:

  • ChatGPT (this ai can have conversations with you and help you figure out how to do things)
  • Midjourney (this ai can convert text into images)

I would be open to prompt engineering roles, but only if I felt passionately about the project.

Support

If you'd like to support me financially consider subscribing to my Patreon

If you'd like to help the earth, click here

What can we do?

sandhands's People

Contributors

charliedua avatar dependabot[bot] avatar l1lith avatar talha-t avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

talha-t

sandhands's Issues

Typescript Definitions

This library would be very cool for APIs that need parameter check, with Typescript. I am planning to implement this soon.

Support Binary Serialization

By piggybacking onto the API suggested here we could easily define a methodology for converting data into Binary. We could also take advantage of the type information in the format to create significant size reductions. For example we could account for custom string character sets (like only ASCII or a-z or lowercase etc) in order to represent the data in less bits. By doing this we could create a BSON like encoding that largely doesn't need any type information at all, and it can be optimized at compile time so we can create lightning fast binary serializers.

We could take a format here

[{_: Number, {min: 0, max: 16}]

Here we know at compile time we can represent this number using only 4 bits (2^4=16). The only dynamic part here would be the array length itself.

Before our encoder maybe it was in JSON which requires either a ton of Unicode (very wasteful) or BSON (pretty slow and can't optimize based on the data structure to my knowledge), or using a custom serializer which is generally very time consuming and error-prone.

Support compiling to raw JS

We could create our own file extension for formats, then when the user imports that file they get a file containing a bunch of "hand-optimized" functions for data sanitation.

How do our type checks become hand-optimized?

Well lowerString.sand.js

{_: String, lowercase: true}

becomes

export function sanitize(data) {
      if (typeof data != 'string') throw new Error("Data is not a string")
}
// ... and more methods (we could actually split them into multiple files at build time for tree-shaking possibly but this is an implementation details)

This could have a massive performance payoff as it prevents us from needing to parse and recursively traverse the format at run-time. Instead we can let the formats define their own source code using some kind of API standard. It also can save significant amounts of time for formats which have a lot of possible options.

{
    symbol: String,
    validate: ['typeof data != "string"', 'Expected a string'],
    options: {
        lowercase: ['data !== data.toLowerCase())', 'String must be lowercase']
    }
 }
 // Note the "array of strings" syntax makes it easy for us to compile our functions differentially

One downside is this wouldn't have good support for contexts, but arguably that's a good thing in most cases, but it could still be limiting for specific use cases, and push people towards doing global stuff. We might benefit users by making the compilation step completely optional for end-users.

Edit: We should also support nested formats which means using import order to re-assemble the format structures

Support ClojureScript

Upon further it seems like ClojureScript's macro features might be the best target for optimizing Sandhand's performance. I'm going to focus on targeting ClojureScript over rust for now.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.