Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ekwoka/ekwoka
Profile Readme Repo
https://github.com/ekwoka/ekwoka
Last synced: 27 days ago
JSON representation
Profile Readme Repo
- Host: GitHub
- URL: https://github.com/ekwoka/ekwoka
- Owner: ekwoka
- Created: 2022-10-01T11:11:00.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-28T16:50:53.000Z (about 1 year ago)
- Last Synced: 2024-05-02T01:12:38.605Z (8 months ago)
- Size: 28.3 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Hi, I'm Eric Kwoka
[](https://thekwoka.net)
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
### [@types/alpinejs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/alpinejs)
[](https://www.npmjs.com/package/@types/alpinejs)
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 Filename Export](https://github.com/ekwoka/eslint-plugin-filename-export)
[](https://www.npmjs.com/package/eslint-plugin-filename-export)
ESLint plugin that enforces that filenames match to the name of an exported value.
### [Preact Heroicons](https://github.com/ekwoka/preact-heroicons)
[](https://www.npmjs.com/package/preact-heroicons)
[](https://bundlephobia.com/package/preact-heroicons)Simple companion package to @tailwindlabs/heroicons with all of the icons as properly typed Preact components!
## Some Fun Utilities
### [Weak LRU Cache](https://github.com/ekwoka/weak-lru-cache)
[](https://www.npmjs.com/package/@ekwoka/weak-lru-cache)
[](https://bundlephobia.com/package/@ekwoka/weak-lru-cache)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.
### [Rust-TS](https://github.com/ekwoka/rust-ts)
[](https://www.npmjs.com/package/@ekwoka/rust-ts)
[](https://bundlephobia.com/package/@ekwoka/rust-ts)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](https://github.com/ekwoka/advent-of-code/blob/main/2023/09/index.ts).
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!
### [Refactors Proxy Merging for ~15% performance improvements and ~75% less memory](https://github.com/alpinejs/alpine/pull/3722)
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](https://streak-stats.demolab.com/?user=ekwoka&theme=onedark)
![Eric's GitHub Stats](https://github-readme-stats.vercel.app/api?username=ekwoka&show_icons=true&theme=onedark)
![Eric's Top Languages](https://github-readme-stats.vercel.app/api/top-langs?username=ekwoka&show_icons=true&theme=onedark&langs_count=4&layout=compact)