Skip to content

ekwoka/ekwoka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

Hi, I'm Eric Kwoka

I'm a United States Marine turned Full Stack Engineer!

I'm passionate about solving big problems with little pieces, and contibuting to the ever evolving tech ecosystem.

Some of my packages

The types for the AlpineJS UI reactivity system. I maintain the primary types package as well as the types packages for each of the core plugins.

ESLint plugin that enforces that filenames match to the name of an exported value.

Simple companion package to @tailwindlabs/heroicons with all of the icons as properly typed Preact components!

Some Fun Utilities

A quick and simple implementation of a Weak referenced Least Recently Used Cache, for when you want smart caching in an application that may have a lot of the cached data in use.

A fun exploration of implementing some useful Rust Structs in TypeScript. The main practical use of this library is for Rust-style Iterators (exported as RustIterator) to provide improved streaming computation of values. These were used quite extensively in my 2023 Advent of Code solutions, for the fun of trying to stream solutions from the input, with minimal storage of intermediary values.

This also includes the Monad Structs for Option and Result to improve handling of errors and null values for safety. Getting Monads to work in typescript to work well with some more advanced methods is tricky.

Some Notable Contributions

I am a primary contributor to AlpineJS (not officially associated with the project, but I help out and make a lot of PRs). Some have been pretty nice!

The old way that the Alpine context proxies were merged recreated a lot of the same shaped data for every merge, which happened quite often (every time an expression was evaluated, which is all the time). Not only did this use a lot more memory creating and destroying the same object again and again, doing that takes more processes. This refactors the merge to reuse the same proxy handlers for all merges, as well as simplified the handling of reflections to use more native behaviors that could be offloaded to the runtime.

On top of that, this fixed issues where the merged proxy was difficult to analyze when debugging by properly implementing a toJSON method. Oh, and it short circuited some lookups that would happen often to improve performance (this was for the fairly unknown and uncommon unscopables symbol that was an issue for Alpine's implementation decisions that could really burn a lot of time doing nothing). Pretty significant tackling of performance issues.

Obligatory Stats

Eric's Streak Stats Eric's GitHub Stats Eric's Top Languages

About

Profile Readme Repo

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published