{"exhaustive":{"nbHits":true,"typo":true},"exhaustiveNbHits":true,"exhaustiveTypo":true,"hits":[{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"pimdehaan"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"CuspAI raises $30M to create a GenAI-driven search engine for new materials"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"https://techcrunch.com/2024/06/18/cuspai-raises-30m-to-create-a-gen-ai-driven-search-engine-for-new-materials/"}},"_tags":["story","author_pimdehaan","story_40722126"],"author":"pimdehaan","created_at":"2024-06-18T20:54:52Z","created_at_i":1718744092,"num_comments":0,"objectID":"40722126","points":2,"story_id":40722126,"title":"CuspAI raises $30M to create a GenAI-driven search engine for new materials","updated_at":"2024-09-20T17:13:43Z","url":"https://techcrunch.com/2024/06/18/cuspai-raises-30m-to-create-a-gen-ai-driven-search-engine-for-new-materials/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"nirvael"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"Stealth AI startup CuspAI raises $30M seed round"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://sifted.eu/articles/cusp-ai-materials-seed-round-news"}},"_tags":["story","author_nirvael","story_40729431"],"author":"nirvael","created_at":"2024-06-19T15:51:55Z","created_at_i":1718812315,"num_comments":0,"objectID":"40729431","points":1,"story_id":40729431,"title":"Stealth AI startup CuspAI raises $30M seed round","updated_at":"2024-09-20T17:14:32Z","url":"https://sifted.eu/articles/cusp-ai-materials-seed-round-news"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"magoghm"},"title":{"matchLevel":"none","matchedWords":[],"value":"Materials startup advised by 'godfather of AI' raises \u00a324M"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"https://www.uktech.news/ai/cuspai-funding-godfather-20240618"}},"_tags":["story","author_magoghm","story_40719484"],"author":"magoghm","created_at":"2024-06-18T16:14:56Z","created_at_i":1718727296,"num_comments":0,"objectID":"40719484","points":1,"story_id":40719484,"title":"Materials startup advised by 'godfather of AI' raises \u00a324M","updated_at":"2024-09-20T17:13:24Z","url":"https://www.uktech.news/ai/cuspai-funding-godfather-20240618"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"monort"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"Cospaia: For nearly four hundred years, the smallest republic in the world"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.umbriatouring.it/en/lincredibile-storia-di-cospaia/"}},"_tags":["story","author_monort","story_9206196"],"author":"monort","children":[9208240,9208264,9208697,9211395],"created_at":"2015-03-15T12:02:20Z","created_at_i":1426420940,"num_comments":5,"objectID":"9206196","points":59,"story_id":9206196,"story_text":"","title":"Cospaia: For nearly four hundred years, the smallest republic in the world","updated_at":"2023-09-07T02:18:28Z","url":"http://www.umbriatouring.it/en/lincredibile-storia-di-cospaia/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"P0nqu0gueSurfer"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"Republic of Cospaia"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"https://en.wikipedia.org/wiki/Republic_of_Cospaia"}},"_tags":["story","author_P0nqu0gueSurfer","story_41165576"],"author":"P0nqu0gueSurfer","children":[41165577,41165600],"created_at":"2024-08-05T21:00:55Z","created_at_i":1722891655,"num_comments":1,"objectID":"41165576","points":5,"story_id":41165576,"title":"Republic of Cospaia","updated_at":"2024-09-20T17:35:52Z","url":"https://en.wikipedia.org/wiki/Republic_of_Cospaia"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"binarybana"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"Using TVM to generate portable sparse GPU kernels 5x faster than cuBLAS/cuSPARSE"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://medium.com/octoml/in-the-cloud-sparsity-on-gpus-provides-5x-speedup-6ec061f73b25"}},"_tags":["story","author_binarybana","story_25797906"],"author":"binarybana","created_at":"2021-01-15T23:17:35Z","created_at_i":1610752655,"num_comments":0,"objectID":"25797906","points":2,"story_id":25797906,"title":"Using TVM to generate portable sparse GPU kernels 5x faster than cuBLAS/cuSPARSE","updated_at":"2024-09-20T07:45:56Z","url":"https://medium.com/octoml/in-the-cloud-sparsity-on-gpus-provides-5x-speedup-6ec061f73b25"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ppcg"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"In this webinar, will be introduce:
- CUDA Python programming\n- Python integration with CUDA libraries: cuRAND, cuFFT, cuBLAS, cuSparse\n- JIT linking that allows the use of existing CUDA C/C++ code with CUDA Python."},"title":{"matchLevel":"none","matchedWords":[],"value":"[Free webinar] Using Numba to program the GPU from Python"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://pl.python.org/darmowe,webinarium,,obliczenia,na,gpu,z,pythonem,i,numba.html"}},"_tags":["story","author_ppcg","story_7880813"],"author":"ppcg","created_at":"2014-06-11T22:29:15Z","created_at_i":1402525755,"num_comments":0,"objectID":"7880813","points":1,"story_id":7880813,"story_text":"In this webinar, will be introduce:
- CUDA Python programming\n- Python integration with CUDA libraries: cuRAND, cuFFT, cuBLAS, cuSparse\n- JIT linking that allows the use of existing CUDA C/C++ code with CUDA Python.","title":"[Free webinar] Using Numba to program the GPU from Python","updated_at":"2023-09-06T23:06:38Z","url":"http://pl.python.org/darmowe,webinarium,,obliczenia,na,gpu,z,pythonem,i,numba.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"karol"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"I will not have time and resources to develop and market this as a product, so I decided to give it to the community. Hopefully something can emerge out of it, that can break Adobe's hegemony in the field of visual creating tools. The code is on github: https://github.com/karolk/csspainter"},"title":{"matchLevel":"none","matchedWords":[],"value":"CSS Painter (my side project) open-sourced (MIT licence)"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://karolk.com/csspainter/"}},"_tags":["story","author_karol","story_3795155"],"author":"karol","created_at":"2012-04-03T22:38:28Z","created_at_i":1333492708,"num_comments":0,"objectID":"3795155","points":1,"story_id":3795155,"story_text":"I will not have time and resources to develop and market this as a product, so I decided to give it to the community. Hopefully something can emerge out of it, that can break Adobe's hegemony in the field of visual creating tools. The code is on github: https://github.com/karolk/csspainter","title":"CSS Painter (my side project) open-sourced (MIT licence)","updated_at":"2023-09-06T21:25:05Z","url":"http://karolk.com/csspainter/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"fur0n"},"title":{"matchLevel":"none","matchedWords":[],"value":"CISPA is back with a new name"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.cispaisback.org/?t=dXNlcmlkPTUyMjM4MjE3LGVtYWlsaWQ9ODgzNw=="}},"_tags":["story","author_fur0n","story_8018985"],"author":"fur0n","children":[8019106,8019146,8019229,8019232,8019241,8019510,8019939,8020269],"created_at":"2014-07-11T05:21:19Z","created_at_i":1405056079,"num_comments":41,"objectID":"8018985","points":259,"story_id":8018985,"title":"CISPA is back with a new name","updated_at":"2023-09-06T21:56:49Z","url":"http://www.cispaisback.org/?t=dXNlcmlkPTUyMjM4MjE3LGVtYWlsaWQ9ODgzNw=="},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"zizee"},"title":{"matchLevel":"none","matchedWords":[],"value":"It's official: CISPA is back"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.cispaisback.org/"}},"_tags":["story","author_zizee","story_5398309"],"author":"zizee","children":[5398315,5398432,5398467,5398559,5399014,5399020,5399708,5401290],"created_at":"2013-03-19T01:16:11Z","created_at_i":1363655771,"num_comments":48,"objectID":"5398309","points":222,"story_id":5398309,"title":"It's official: CISPA is back","updated_at":"2025-02-25T22:33:50Z","url":"http://www.cispaisback.org/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"sturdysquirrel"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"CISPA is back"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.cispaisback.com"}},"_tags":["story","author_sturdysquirrel","story_5192998"],"author":"sturdysquirrel","children":[5193054,5193063,5193101,5193117,5193119,5193169,5193255,5193296,5193533,5193731,5194985,5195840],"created_at":"2013-02-09T16:42:41Z","created_at_i":1360428161,"num_comments":28,"objectID":"5192998","points":138,"story_id":5192998,"story_text":"","title":"CISPA is back","updated_at":"2024-09-19T19:21:35Z","url":"http://www.cispaisback.com"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"IgorPartola"},"title":{"matchLevel":"none","matchedWords":[],"value":"CISPA is back"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.cispaisback.org/"}},"_tags":["story","author_IgorPartola","story_8014397"],"author":"IgorPartola","created_at":"2014-07-10T09:56:34Z","created_at_i":1404986194,"num_comments":0,"objectID":"8014397","points":19,"story_id":8014397,"title":"CISPA is back","updated_at":"2024-09-19T20:53:08Z","url":"http://www.cispaisback.org/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"CodeMage"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"CISPA is back"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://cispaisback.com/"}},"_tags":["story","author_CodeMage","story_5210221"],"author":"CodeMage","created_at":"2013-02-12T23:14:52Z","created_at_i":1360710892,"num_comments":0,"objectID":"5210221","points":7,"story_id":5210221,"story_text":"","title":"CISPA is back","updated_at":"2023-09-06T20:48:50Z","url":"http://cispaisback.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"instakill"},"title":{"matchLevel":"none","matchedWords":[],"value":"CISPA is back."},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.cispaisback.com"}},"_tags":["story","author_instakill","story_5238094"],"author":"instakill","children":[5238198],"created_at":"2013-02-18T13:30:05Z","created_at_i":1361194205,"num_comments":1,"objectID":"5238094","points":4,"story_id":5238094,"title":"CISPA is back.","updated_at":"2024-09-19T19:16:24Z","url":"http://www.cispaisback.com"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"alexeston"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"#CISPABlackout"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://cispaisback.org/"}},"_tags":["story","author_alexeston","story_5588060"],"author":"alexeston","created_at":"2013-04-22T06:07:13Z","created_at_i":1366610833,"num_comments":0,"objectID":"5588060","points":3,"story_id":5588060,"story_text":"","title":"#CISPABlackout","updated_at":"2024-09-19T19:31:14Z","url":"http://cispaisback.org/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"crowhack"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"CISPA is back"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.cispaisback.com/"}},"_tags":["story","author_crowhack","story_5197813"],"author":"crowhack","created_at":"2013-02-10T20:42:58Z","created_at_i":1360528978,"num_comments":0,"objectID":"5197813","points":2,"story_id":5197813,"story_text":"","title":"CISPA is back","updated_at":"2024-09-19T19:22:00Z","url":"http://www.cispaisback.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"sturdysquirrel"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"Cat Signal: Over 30K websites protesting CISPA today"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.cispaisback.org"}},"_tags":["story","author_sturdysquirrel","story_5401981"],"author":"sturdysquirrel","children":[5402029],"created_at":"2013-03-19T16:46:34Z","created_at_i":1363711594,"num_comments":1,"objectID":"5401981","points":1,"story_id":5401981,"story_text":"","title":"Cat Signal: Over 30K websites protesting CISPA today","updated_at":"2024-09-19T19:22:56Z","url":"http://www.cispaisback.org"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"AaronO"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"Cispa is back"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"http://www.cispaisback.org/"}},"_tags":["story","author_AaronO","story_6597357"],"author":"AaronO","created_at":"2013-10-23T07:12:32Z","created_at_i":1382512352,"num_comments":0,"objectID":"6597357","points":1,"story_id":6597357,"story_text":"","title":"Cispa is back","updated_at":"2023-09-06T22:29:27Z","url":"http://www.cispaisback.org/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"app4soft"},"title":{"matchLevel":"none","matchedWords":[],"value":"The Ukrainian Hitchhiker's Guide to Antarctica"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"https://day.kyiv.ua/uk/article/cuspilstvo/avtostopom-do-antarktydy"}},"_tags":["story","author_app4soft","story_19967469"],"author":"app4soft","created_at":"2019-05-21T03:55:34Z","created_at_i":1558410934,"num_comments":0,"objectID":"19967469","points":1,"story_id":19967469,"title":"The Ukrainian Hitchhiker's Guide to Antarctica","updated_at":"2024-09-20T04:19:02Z","url":"https://day.kyiv.ua/uk/article/cuspilstvo/avtostopom-do-antarktydy"},{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"cospaia"},"title":{"matchLevel":"none","matchedWords":[],"value":"Java BitSet performance-flicker mystery"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://blog.agical.se/en/posts/java-bitset-performance-mystery"}},"_tags":["story","author_cospaia","story_30226083"],"author":"cospaia","children":[30226084,30227254,30227540,30227541,30227590,30227657,30227916,30228181,30228398,30228454,30228771,30229157,30229167,30229785,30229845,30229860,30230255,30230985,30231716,30231820,30231945,30232712,30236671],"created_at":"2022-02-05T21:10:27Z","created_at_i":1644095427,"num_comments":86,"objectID":"30226083","points":113,"story_id":30226083,"title":"Java BitSet performance-flicker mystery","updated_at":"2024-12-22T04:11:04Z","url":"https://blog.agical.se/en/posts/java-bitset-performance-mystery"},{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"cospaia"},"title":{"matchLevel":"none","matchedWords":[],"value":"A REPL-driven, zero-install, Get Started with Clojure guide"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://calva.io/get-started-with-clojure/"}},"_tags":["story","author_cospaia","story_28243234"],"author":"cospaia","children":[28243235],"created_at":"2021-08-20T06:26:00Z","created_at_i":1629440760,"num_comments":3,"objectID":"28243234","points":19,"story_id":28243234,"title":"A REPL-driven, zero-install, Get Started with Clojure guide","updated_at":"2024-09-20T09:15:03Z","url":"https://calva.io/get-started-with-clojure/"},{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"cospaia"},"story_text":{"matchLevel":"none","matchedWords":[],"value":"Data oriented. It's been a theme throughout my rather long career. Especially the last five or so years, when I've been using Clojure in anger. But even with Clojure there are a lot of not fully data oriented ways of doing things. Building frontends (which I do for a living) has been particularly tricky to keep as data oriented as I wish. Enter Replicant https://github.com/cjohansen/replicant
Replicant is one of those libraries which make you say \u201cI can't believe this is not React\u201d. But it really isn't React. It brings 90% of the benefits of React, without bringing in that whole world of churn and not-so-data-oriented ways of doing things. Replicant has zero dependencies. It is created by Christian Johansen, a developer as data oriented as they come. To get where Replicant, and this TodoMVC example, comes from, have a watch at Christians JavaZone Oslo 2023 talk, Stateless Data-driven UIs https://2023.javazone.no/program/85f23370-440f-42b5-bf50-4cb...
As Replicant is a library, and not a framework, there are as many ways to use it to build TodoMVC as there are developers. This example takes inspiration from my previous favorite UI libraries, Reagent and re-frame, from which I use what I think are their best ideas. The example implements a tiny (less than 50 loc) framework and then leverages that to create perhaps the most data oriented TodoMVC ever (I am expecting to be shown a lot of examples that are as, or more, data oriented). The unit tests in the example take advantage of this and test things that you normally need to bring in browser drivers to test. The example is finished, but the tests are work in progress (about 30% done, I think).
I've tried to make the example super easy to clone and play with. And I've tried to make the README be clear and useful to understand the example and what's unique with it. Please give it a spin and tell me what you think! If you want to help with test coverage, that would be awesome too."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: A data oriented TodoMVC using Replicant"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/anteoas/replicant-todomvc"}},"_tags":["story","author_cospaia","story_42215993","show_hn"],"author":"cospaia","created_at":"2024-11-22T18:02:15Z","created_at_i":1732298535,"num_comments":0,"objectID":"42215993","points":11,"story_id":42215993,"story_text":"Data oriented. It's been a theme throughout my rather long career. Especially the last five or so years, when I've been using Clojure in anger. But even with Clojure there are a lot of not fully data oriented ways of doing things. Building frontends (which I do for a living) has been particularly tricky to keep as data oriented as I wish. Enter Replicant https://github.com/cjohansen/replicant
Replicant is one of those libraries which make you say \u201cI can't believe this is not React\u201d. But it really isn't React. It brings 90% of the benefits of React, without bringing in that whole world of churn and not-so-data-oriented ways of doing things. Replicant has zero dependencies. It is created by Christian Johansen, a developer as data oriented as they come. To get where Replicant, and this TodoMVC example, comes from, have a watch at Christians JavaZone Oslo 2023 talk, Stateless Data-driven UIs https://2023.javazone.no/program/85f23370-440f-42b5-bf50-4cb...
As Replicant is a library, and not a framework, there are as many ways to use it to build TodoMVC as there are developers. This example takes inspiration from my previous favorite UI libraries, Reagent and re-frame, from which I use what I think are their best ideas. The example implements a tiny (less than 50 loc) framework and then leverages that to create perhaps the most data oriented TodoMVC ever (I am expecting to be shown a lot of examples that are as, or more, data oriented). The unit tests in the example take advantage of this and test things that you normally need to bring in browser drivers to test. The example is finished, but the tests are work in progress (about 30% done, I think).
I've tried to make the example super easy to clone and play with. And I've tried to make the README be clear and useful to understand the example and what's unique with it. Please give it a spin and tell me what you think! If you want to help with test coverage, that would be awesome too.","title":"Show HN: A data oriented TodoMVC using Replicant","updated_at":"2025-09-22T05:54:22Z","url":"https://github.com/anteoas/replicant-todomvc"},{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"cospaia"},"story_text":{"matchLevel":"none","matchedWords":[],"value":"Epupp has two modes of operation:
1. *Live REPL connection from your editor to the web page*, letting you inspect and modify the page on the fly, with or without the assistance of an AI agent.
2. *Userscripts*: Somewhat Tampermonkey style (I love Tampermonkey!).
The two form a powerful pair. The live REPL connection, while happily supporting one-off changes or data extractions, is also a very efficient and fun means to interactively develop userscripts. The buzzword here is Interactive Programming (aka REPL-driven development).
I started to build Epupp because I wanted the AI agent to help me solve a problem with printing a very tall receipt cleanly from Gmail. After that success, I realized it was generally very useful so I made an extension out of it. I then also noticed that I wanted to be able to save my live tampers as userscripts.
Epupp's scripting language is ClojureScript, the SCI kind. This is what makes the live tampering possible.
I have probably gotten a lot of things wrong with this first version. I am entering feedback-driven mode now. Though, unless something is terribly wrong with the API, I intend to keep it stable. In true Clojure tradition, I do not want to break my callers.
Epupp is free and open source, available at the Chrome and Firefox extension stores.
Try it out, please. I have created a template project which I hope can help with getting started + be your base for using Epupp.
* https://github.com/PEZ/my-epupp-hq
Security:
* Epupp enables a userscript to do just about anything on web page, including all the dangerous things. The gate is the user, scrutinizing userscripts and userscript authors.
* The REPL opens a websocket to Epupp's REPL. Again the user is responsible for what connects to that websocket.
* On a whitelist of domains, userscripts can install and modify userscripts. This enables a web userscript installer to be active on GitHub, GitLab and Codeberg. Userscripts can not, however, list or read userscripts from Epupp.
* The REPL can install, modify, list and read userscripts. But only if the user enables this in Epupp after establishing the REPL connection.
Demo videos:
* Copilot builds the Isolated Element Printer script, using interactive programming: https://youtu.be/CuEWN5yYVa8
* LinkedIn Squirrel, a userscript that keeps posts you engage with in immediate reach: https://youtu.be/yU6rsjoR7HQ
On the roadmap:
1. Fix issues when used with Firefox
2. Fix (many more) issues with Safari
3. Mobile browser support
WDYT, HN?"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Epupp \u2013 Live, REPL-driven, browser tampering"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/PEZ/epupp"}},"_tags":["story","author_cospaia","story_47249998","show_hn"],"author":"cospaia","created_at":"2026-03-04T16:35:26Z","created_at_i":1772642126,"num_comments":0,"objectID":"47249998","points":4,"story_id":47249998,"story_text":"Epupp has two modes of operation:
1. *Live REPL connection from your editor to the web page*, letting you inspect and modify the page on the fly, with or without the assistance of an AI agent.
2. *Userscripts*: Somewhat Tampermonkey style (I love Tampermonkey!).
The two form a powerful pair. The live REPL connection, while happily supporting one-off changes or data extractions, is also a very efficient and fun means to interactively develop userscripts. The buzzword here is Interactive Programming (aka REPL-driven development).
I started to build Epupp because I wanted the AI agent to help me solve a problem with printing a very tall receipt cleanly from Gmail. After that success, I realized it was generally very useful so I made an extension out of it. I then also noticed that I wanted to be able to save my live tampers as userscripts.
Epupp's scripting language is ClojureScript, the SCI kind. This is what makes the live tampering possible.
I have probably gotten a lot of things wrong with this first version. I am entering feedback-driven mode now. Though, unless something is terribly wrong with the API, I intend to keep it stable. In true Clojure tradition, I do not want to break my callers.
Epupp is free and open source, available at the Chrome and Firefox extension stores.
Try it out, please. I have created a template project which I hope can help with getting started + be your base for using Epupp.
* https://github.com/PEZ/my-epupp-hq
Security:
* Epupp enables a userscript to do just about anything on web page, including all the dangerous things. The gate is the user, scrutinizing userscripts and userscript authors.
* The REPL opens a websocket to Epupp's REPL. Again the user is responsible for what connects to that websocket.
* On a whitelist of domains, userscripts can install and modify userscripts. This enables a web userscript installer to be active on GitHub, GitLab and Codeberg. Userscripts can not, however, list or read userscripts from Epupp.
* The REPL can install, modify, list and read userscripts. But only if the user enables this in Epupp after establishing the REPL connection.
Demo videos:
* Copilot builds the Isolated Element Printer script, using interactive programming: https://youtu.be/CuEWN5yYVa8
* LinkedIn Squirrel, a userscript that keeps posts you engage with in immediate reach: https://youtu.be/yU6rsjoR7HQ
On the roadmap:
1. Fix issues when used with Firefox
2. Fix (many more) issues with Safari
3. Mobile browser support
WDYT, HN?","title":"Show HN: Epupp \u2013 Live, REPL-driven, browser tampering","updated_at":"2026-04-09T03:00:31Z","url":"https://github.com/PEZ/epupp"},{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"cusaitech"},"title":{"matchLevel":"none","matchedWords":[],"value":"Waymo and Tesla's self-driving systems are more similar than people think"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.understandingai.org/p/waymo-and-teslas-self-driving-systems"}},"_tags":["story","author_cusaitech","story_46307818"],"author":"cusaitech","children":[46307847],"created_at":"2025-12-18T01:08:16Z","created_at_i":1766020096,"num_comments":1,"objectID":"46307818","points":3,"story_id":46307818,"title":"Waymo and Tesla's self-driving systems are more similar than people think","updated_at":"2026-03-05T23:13:07Z","url":"https://www.understandingai.org/p/waymo-and-teslas-self-driving-systems"},{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"cospaia"},"title":{"matchLevel":"none","matchedWords":[],"value":"I love being an open source developer, also when it is not butter smooth"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://twitter.com/pappapez/status/1461018167002734592"}},"_tags":["story","author_cospaia","story_29258326"],"author":"cospaia","children":[29258327],"created_at":"2021-11-17T20:19:15Z","created_at_i":1637180355,"num_comments":1,"objectID":"29258326","points":3,"story_id":29258326,"title":"I love being an open source developer, also when it is not butter smooth","updated_at":"2024-09-20T09:52:52Z","url":"https://twitter.com/pappapez/status/1461018167002734592"},{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"cospaia"},"title":{"matchLevel":"none","matchedWords":[],"value":"Be aware of NUMA when your application needs to run fast"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://blog.agical.se/posts/be-numa-aware-for-the-sake-of-performance/"}},"_tags":["story","author_cospaia","story_30272573"],"author":"cospaia","children":[30272574],"created_at":"2022-02-09T13:50:57Z","created_at_i":1644414657,"num_comments":2,"objectID":"30272573","points":2,"story_id":30272573,"title":"Be aware of NUMA when your application needs to run fast","updated_at":"2024-09-20T10:28:54Z","url":"https://blog.agical.se/posts/be-numa-aware-for-the-sake-of-performance/"},{"_highlightResult":{"author":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["cuspai"],"value":"cumpais"},"story_text":{"matchLevel":"none","matchedWords":[],"value":"I'm developping a social startup, in the sense \"help people improve themselves\", and I honestly don't care if it makes money or not. I'm not altruistic, I want the success, recognition and to change the world. If I don't have the money, why don't I let the guys who have it, VCs, figure out how to make it? Has anybody tried the approach in the title? to what results?"},"title":{"matchLevel":"none","matchedWords":[],"value":"HAE tried \"don't know, don't care, you figure it out\" as a business plan?"},"url":{"matchLevel":"none","matchedWords":[],"value":""}},"_tags":["story","author_cumpais","story_4270654","ask_hn"],"author":"cumpais","created_at":"2012-07-20T13:33:05Z","created_at_i":1342791185,"num_comments":0,"objectID":"4270654","points":1,"story_id":4270654,"story_text":"I'm developping a social startup, in the sense \"help people improve themselves\", and I honestly don't care if it makes money or not. I'm not altruistic, I want the success, recognition and to change the world. If I don't have the money, why don't I let the guys who have it, VCs, figure out how to make it? Has anybody tried the approach in the title? to what results?","title":"HAE tried \"don't know, don't care, you figure it out\" as a business plan?","updated_at":"2024-09-19T18:47:42Z","url":""}],"hitsPerPage":50,"nbHits":27,"nbPages":1,"page":0,"params":"query=CuspAI&tags=story&hitsPerPage=50&advancedSyntax=true&analyticsTags=backend","processingTimeMS":5,"processingTimingsMS":{"_request":{"roundTrip":15},"afterFetch":{"merge":{"mergeLoop":{"prepareNextHit":1,"total":1},"total":1},"total":1},"fetch":{"query":2,"total":3},"total":5},"query":"CuspAI","serverTimeMS":6}