{"id":17956382,"url":"https://github.com/o0101/blogfolio","last_synced_at":"2025-07-18T17:06:09.704Z","repository":{"id":71110057,"uuid":"235145330","full_name":"o0101/Blogfolio","owner":"o0101","description":":pencil2: Blogfolio of my creative work in open-source software engineering, 2017 to present. ","archived":false,"fork":false,"pushed_at":"2021-04-21T11:32:54.000Z","size":190,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-15T10:52:13.364Z","etag":null,"topics":["archiving","bepis","blog","bona-fides","browser","cryptography","github-stars","portfolio","rbi","selector-generalization","types","utilities"],"latest_commit_sha":null,"homepage":"https://c9fe.github.io/Blogfolio/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/o0101.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":"crislin2046","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-01-20T16:25:05.000Z","updated_at":"2021-04-21T11:32:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"ec2dce67-dff8-46de-9218-6f9a88b591b9","html_url":"https://github.com/o0101/Blogfolio","commit_stats":null,"previous_names":["o0101/blogfolio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/o0101/Blogfolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o0101%2FBlogfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o0101%2FBlogfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o0101%2FBlogfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o0101%2FBlogfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/o0101","download_url":"https://codeload.github.com/o0101/Blogfolio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/o0101%2FBlogfolio/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265798393,"owners_count":23829940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archiving","bepis","blog","bona-fides","browser","cryptography","github-stars","portfolio","rbi","selector-generalization","types","utilities"],"created_at":"2024-10-29T10:37:37.917Z","updated_at":"2025-07-18T17:06:09.682Z","avatar_url":"https://github.com/o0101.png","language":null,"readme":"# [THE BLOGFOLIO OF MY CREATIVE WORKS](https://github.com/crislin2046/portfolio/blob/master/README.md#creative-works)\n\nIn software I've made open-source creative works in 4 main areas: [cryptography](#cryptography), [web development](#web-development), [browser technology](#browser-technology) and [utilities](#utilities). \n\n## Stats\n\nIn total my open-source projects have:\n\n- been used by **more than 55000 people**\n- earned more than **4900 stars** on GitHub, and \n- been downloaded more than **65000 times** across DockerHub, NPM and GitHub releases.\n\n## Bona Fides\n\nBesides the projects below which are all my own work, here are some other links:\n\n- [Triplebyte Front-end certificate (top 10%)](https://triplebyte.com/tb/cris-stringfellow-daovgil/certificate/track/frontend)\n- [Triplebyte Generalist certificate (top 10%)](https://triplebyte.com/tb/cris-stringfellow-daovgil/certificate/track/generalist)\n- [Triplebyte DevOps certificate (top 10%)](https://triplebyte.com/tb/cris-stringfellow-daovgil/certificate/track/devops)\n- [Stackoverflow Developer Story](https://stackoverflow.com/users/story/10283964)\n- [Stackoverflow Profile (from '13)](https://stackoverflow.com/users/907415/Cris%20Stringfellow)\n- [Pluralsight Skills IQ](https://app.pluralsight.com/profile/cris-stringfellow-e)\n\n## That time I rendered a web browser in a web browser\n\nI created [ViewFinder](https://github.com/c9fe/ViewFinder) to make web scraping easier by delivering the interface without the need for downloads, nor browser extensions. This required turning a browser (actually a remote isolated browser running headless in the cloud) into a client-server app that had a web interface and a back-end. By the magic of [Chrome Remote Debugging Protocol](https://chromedevtools.github.io/devtools-protocol/) (or just **\"the protocol\"** to those in the know), I was able to achieve this lofty and seemingly impossible goal. The result is a shining testament to man/woman/humankind's ability to overcome...yada yada yada. It's actually pretty cool, [to play with](https://isolation.site) or to [try the free demo](https://demo.browsergap.dosyago.com), because it turns out that live streaming a browser, is actually a [product category](https://gcn.com/articles/2020/09/08/disa-cbii.aspx) in and off itself, deeply related to [cyber security](https://www.toptal.com/cyber-security) by being able to isolate threatening websites from your network and devices. So that time I rendered a web browser in a web browser, for fun, or...actually as part of another product, turned into something cool and useful in and of itself. So...[check it out](https://github.com/dosyago/OuterShell)?\n\n## [Browser Technology](https://github.com/cris691/portfolio/blob/master/README.md#browser-technology)\n\nMy browsing technology works (also known as browser controllers) center around enhancements to the way you normally might browse.\n\n### [:classical_building: 22120](https://github.com/c9fe/22120) \n\n#### [![version](https://img.shields.io/npm/v/archivist1.svg?label=\u0026color=0080FF)](https://github.com/dosyago/22120/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/archivist1) ![binary downloads](https://img.shields.io/github/downloads/dosyago/22120/total?label=binary%20downloads) [![GitHub stars](https://img.shields.io/github/stars/dosyago/22120.svg?style=social\u0026label=Star)](https://GitHub.com/dosyago/22120/stargazers/)\n\n**22120** (named for the Vatican library) is a browser controller that lets you self host an offline archive of the internet. The part of it you browsed, at least. Your browser never knows the difference.\n\n### [:camera: ViewFinder](https://github.com/c9fe/ViewFinder) \n\n#### [![docker pulls](https://img.shields.io/docker/pulls/dosyago/browsergapce)](https://hub.docker.com/r/dosyago/browsergapce) ![version](https://img.shields.io/npm/v/remoteview) [![npm downloads](https://img.shields.io/npm/dt/remoteview)](https://www.npmjs.com/package/remoteview) [![binary downloads](https://img.shields.io/github/downloads/cris691/ViewFinder/total?label=binary%20downloads)](https://github.com/cris691/ViewFinder/releases/latest)[![GitHub stars](https://img.shields.io/github/stars/c9fe/ViewFinder.svg?style=social\u0026label=Star)](https://GitHub.com/c9fe/ViewFinder/stargazers/)\n\n**ViewFinder** lets you live-stream the browser interactively. You can build on top of it to create augmented browsing experiences deliverable on any device without download.\n\n### [:mag: Selector-Generalization](https://www.npmjs.com/package/selector-generalization)\n\n#### [![version](https://img.shields.io/npm/v/selector-generalization.svg?label=\u0026color=0080FF)](https://github.com/crislin2046/selector-generalization/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/selector-generalization)\n\n**Selector-Generalization** is novel algorithm for data collection exposed as a package of JavaScript utils to generalize a set of CSS selectors to a single selector that matches them all. Useful for picking columns of data from a view and for mapping the structure of web apps to use as data sources or for automation.\n\n## [Web Development](https://github.com/crislin2046/portfolio/blob/master/README.md#web-development)\n\nMy web development works center around ergonomic \"frameworks\" to make coding the web easier. \n\n### [:dog2: Bepis](https://github.com/dosyago/bepis) \n\n#### [![version](https://img.shields.io/npm/v/bepis.svg?label=\u0026color=0080FF)](https://github.com/dosyago/bepis/releases/latest) ![npm downloads total](https://img.shields.io/npm/dt/bepis) [![GitHub stars](https://img.shields.io/github/stars/dosyago/bepis.svg?style=social\u0026label=Star)](https://GitHub.com/dosyago/bepis/stargazers/)\n\n**Bepis** (named en homage to the [meme](https://www.youtube.com/watch?v=zbqdh5duDuU)) is a silly but useful way to write markup in a kindof-sortof *shorthand* for HTML. It just makes quickly parsing and writing markup easier (when you're not trying to count your pesky **.** characters, at least). Drincc up!\n\n### [:bug: Dumbass](https://github.com/dosyago/dumbass)\n\n#### [![version](https://img.shields.io/npm/v/dumbass.svg?label=\u0026color=0080FF)](https://github.com/dosyago/dumbass/releases/latest) ![npm downloads total](https://img.shields.io/npm/dt/dumbass) [![GitHub stars](https://img.shields.io/github/stars/dosyago/dumbass.svg?style=social\u0026label=Star)](https://GitHub.com/dosyago/dumbass/stargazers/)\n\n**Dumbass** is a tool for stupid people. Aren't we all? Use it when you don't want to think hard about building UIs, and care not for opinions. \n\n## [Cryptography](https://github.com/crislin2046/portfolio/blob/master/README.md#cryptography)\n\nMy cryptography works are centered around novel takes on existing patterns and primitives and simple, magic-free designs, written in portable, readable code that isn't super-optimized in order to preserve legibility.\n\n### [:baby_chick: Floppsy](https://github.com/dosyago/floppsy)\n\n#### **[200MB/s, passes all SMHasher](https://github.com/rurban/smhasher/blob/master/doc/floppsyhash.txt)** [![version](https://img.shields.io/npm/v/floppsy.svg?label=\u0026color=0080FF)](https://github.com/dosyago/floppsy/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/floppsy)\n\n**Floppsy** is a hashing algorithm that passes SMHasher, meaning it stands alongside the best algorithms known. It's slower than most, clocking a modest 200Mb/s on an average workstation. Interstingly, I created it inspired by Egyptian fractions and continued fractions. It uses all floating point arithmetic, a hash-function first.\n\n### [:dancers: Discohash](https://github.com/cris691/discohash)\n\n#### **[2 - 5 GB/s, passes all SMHasher](https://github.com/rurban/smhasher/blob/master/doc/BEBB4185.txt)**  [![version](https://img.shields.io/npm/v/bebb4185.svg?label=\u0026color=0080FF)](https://github.com/cris691/discohash/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/bebb4185) [![GitHub stars](https://img.shields.io/github/stars/cris691/discohash.svg?style=social\u0026label=Star)](https://GitHub.com/cris691/discohash/stargazers/)\n\n**Discohash** (*also known as* **BEBB4185**) is a super-fast non-cryptographic hash that passes SMHasher, and runs at 2 - 5GB/s (depending on hardware) in this naive, portable implementation.\n\n### [:gem: Beamsplitter](https://github.com/cris691/beamsplitter)\n\n#### **[500 - 800MB/s, passes all SMHasher](https://github.com/rurban/smhasher/blob/master/doc/beamsplitter.txt)** [![version](https://img.shields.io/npm/v/beamsplitter.svg?label=\u0026color=0080FF)](https://github.com/cris691/beamsplitter/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/beamsplitter) [![GitHub stars](https://img.shields.io/github/stars/cris691/beamsplitter.svg?style=social\u0026label=Star)](https://GitHub.com/cris691/beamsplitter/stargazers/)\n\n**Beamsplitter** (named for the [optical device](https://www.edmundoptics.com.tw/c/laser-optics/754/?#Categories=Categories%3ANzYy0)) is a SMHasher-passing family of hash functions parameterized over the choice of a high-entropy random 10x64 S-box. It's not particularly fast, and at 500 - 800MB/s (depending on hardware) is faster than SHA1, SHA2 and SHA3.\n\n### [:alien: Xen](https://github.com/dosyago/xen) \n\n#### [![version](https://img.shields.io/npm/v/xen.svg?label=\u0026color=0080FF)](https://github.com/dosyago/xen/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/xen) \n\n**Xen** is a set of crypto tools made from mostly unknown primitives I invented. Its output passes Practrand and Dieharder, meaning it is statistically indistinguishable from randomness.\n\n### [:bento: Tarobox](https://github.com/dosyago/tarobox) \n\n#### [![version](https://img.shields.io/npm/v/tarobox.svg?label=\u0026color=0080FF)](https://github.com/dosyago/tarobox/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/tarobox) \n\n**Tarobox** (anagram of xor and `btoa`) is named based on its constituent parts. It's a Diehard-passing pseudo-random number generator built out of the simple, reusable components of: a base64 expansion function, and a wrap-and-xor compression function. It's simple, but performs really well statistically. It's not fast, however.\n\n## [Utilities](https://github.com/crislin2046/portfolio/blob/master/README.md#utilities)\n\nCollected, assorted, high-utility miscellania. \n\n### [:goggles: Grader.JS](https://github.com/c9fe/graderjs) \n\n#### ![npm downloads](https://img.shields.io/npm/dt/graderjs?label=npm%20downloads) ![version](https://img.shields.io/npm/v/graderjs?label=version)\n\n**Grader.JS**, or just **Grader**, is a tool to help you build accessible, cross-platform desktop app binaries in Node.JS, JavaScript, HTML and CSS, without the bloat of Electron, nor the headaches of Qt.\n\n### [:icecream: vanillatype](https://github.com/crislin2046/jtype-system) \n\n#### ![version](https://img.shields.io/npm/v/jtype-system?label=%22%22) ![npm downloads](https://img.shields.io/npm/dt/jtype-system)\n\nLightweight runtime types for vanilla JavaScript and Node.\n\n### [:page_facing_up: p2.](https://github.com/dosyago/p2.) \n\n#### [![GitHub stars](https://img.shields.io/github/stars/dosyago/p2..svg?style=social\u0026label=Star)](https://GitHub.com/dosyago/p2./stargazers/)\n\n**p2.** is a simple PDF to PNG server that also works for XSLX, DOCX, and other documents.\n\n### [:man: Sir\u003eDB](https://github.com/c9fe/sirdb) \n\n#### [![version](https://img.shields.io/npm/v/stubdb.svg?label=\u0026color=0080FF)](https://github.com/cris691/stubdb/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/sirdb) [![GitHub stars](https://img.shields.io/github/stars/c9fe/sirdb.svg?style=social\u0026label=Star)](https://GitHub.com/c9fe/sirdb/stargazers/)\n\n**Sir\u003eDB** is very simple database on the file system for when you're too small to fail. It's git-diff-able, organized into subdirectories, and all JSON.\n\n### [💾 servedata](https://github.com/c9fe/servedata) \n\n#### [![version](https://img.shields.io/npm/v/servedata.svg?label=\u0026color=0080FF)](https://github.com/cris691/servedata/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/servedata)  [![GitHub stars](https://img.shields.io/github/stars/cris691/servedata.svg?style=social\u0026label=Star)](https://GitHub.com/cris691/servedata/stargazers/)\n\n**servedata** is based on sirdb, and is very simple server for its database, incorporating payment, users, groups, permissions and authentication as well as standard landing page and sign in and profile interface.\n\n### [:keycap_ten: Abacus](https://github.com/crislin2046/bitmath) \n\n#### [![version](https://img.shields.io/npm/v/bitmath.svg?label=\u0026color=0080FF)](https://github.com/crislin2046/abacus/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/bitmath) \n\n**Abacus** is bit arithmetic package to add, subtract, multiply, euclidean divide bit arrays of any size.\n\n### [:wind_chime: Uint1Array](https://github.com/crislin2046/Uint1Array) \n\n#### [![version](https://img.shields.io/npm/v/uint1array.svg?label=\u0026color=0080FF)](https://github.com/crislin2046/Uint1Array/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/uint1array) \n\n**Uint1Array** is JavaScript's missing TypedArray. Bit-level view of any underlying ArrayBuffer.\n\n### [:small_airplane: environments](https://github.com/cris691/environments)\n\n#### [![version](https://img.shields.io/npm/v/environments.svg?label=\u0026color=0080FF)](https://github.com/cris691/environments/releases/latest) ![npm downloads](https://img.shields.io/npm/dt/environments) \n\nMy coding **environments** (some dotfiles, and configs) and useful tools. \n\n-----\n\n## Other Bona Fides\n\nI also record some [test results](TEST_RESULTS.md) I pick up along the way.\n","funding_links":["https://github.com/sponsors/crislin2046"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo0101%2Fblogfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fo0101%2Fblogfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fo0101%2Fblogfolio/lists"}