22120
Vrmac
Our great sponsors
22120 | Vrmac | |
---|---|---|
13 | 45 | |
2,638 | 104 | |
- | - | |
9.7 | 3.6 | |
over 2 years ago | over 2 years ago | |
JavaScript | C# | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
22120
-
Is there a browser addon which locally archives every website I visit?
Here. An archivist browser controller that caches everything you browse, a library server with full text search to serve your archive.
- Show HN: Irchiver, your full-resolution personal web archive
-
Ask HN: Full text search engine in JavaScript for English and and Chinese?
Following your "hilarious" and disrespectful answer here https://github.com/i5ik/22120/issues/63#issuecomment-7275272..., I would prefer that you remove any reference to SingleFile in the description of your project. I could not open an issue because you blocked me. And please don't accuse people without proof.
- 22120: self-host the Internet with an Offline Archive. Similar to ArchiveBox, SingleFile and WebMemex. Works well with WorldBrain/Memex to give you full-text search. Why not WARC? Uses Chrome DevTools protocol to intercept all requests, and caches responses against a key of (method, URL)
-
Request: Proxy caching all visited websites text in DB, making history searchable
https://github.com/i5ik/22120 is a tool that archives as you browse that you can then view offline later
- Is the there a way I can cache videos(reddit.4chan) I watch in browser (Linux)?
-
So you want to write a GUI framework
My solution to this (it's been done before), is to use the existing browser engine (not the system webview) installed. So far I only utilize Chrome, but as the way I connect to it is over the Chrome DevTools protocol which is somewhat fluent with the Remote Debugging Protocol[0] that Firefox is doing, this is a reasonable approach.
So far my "tool" to do this is simply a template repository with some conveniences, providing in essence a skeleton for these types of apps. I hope to flesh this out a little more, and expose a much richer API, as well as convert some of my existing popular apps (like 22120[1]) to the "framework".
The benefit of this is Graderjs has a built in 'app builder' that can create a cross-platform binary (excluding or ignoring the necessity (on MacOS) and near-necessity (on Windows) to sign your executable somehow, that lets you display your UI in JS/HTML/CSS using the already installed browser engine, as well as run code in NodeJS and using the rich APIs[2] of the browser engine itself. I'm really happy with this project and think that, even tho it's small now, it will in time become my most popular and powerful one: even bigger than my remote browser and popular web archiver.
Just give it time! :)
[0]: https://firefox-source-docs.mozilla.org/remote/index.html
[1]: https://github.com/i5ik/22120
[2]: https://chromedevtools.github.io/devtools-protocol/tot/Brows...
The GraderJS: https://github.com/i5ik/graderjs
-
Ask HN: Why saving webpages on hard disk has not got better?
I use this to backup pages automatically
https://github.com/i5ik/22120
-
Saving all browsed websites automatically
Does this potentially help? https://github.com/c9fe/22120
-
Make Your Own Internet Archive with Archive Box
From the blog comments, I think this is what youāre after https://github.com/c9fe/22120
Vrmac
-
New Renderers for GTK
Couple times in the past I have implemented GPU-targeted GUI renderers, hereās an example: https://github.com/Const-me/Vrmac?tab=readme-ov-file#vector-... https://github.com/Const-me/Vrmac/blob/master/Vrmac/Draw/VAA...
2D graphics have very little in common with game engines. The problem is very different in many regards. In 2D, you generally have Bezier and other splines on input, large amount of overdraw, textures coming from users complicate VRAM memory management. OTOH, game engines are solving hard problem which are irrelevant to 2D renderers, like dynamic lighting, volumetric effects, and dynamic environment.
-
Was Rust Worth It?
> Part of Panama
Most real-live C APIs are using function pointers and/or complicated data structures. Hereās couple real-life examples defined by Linux kernel developers who made V4L2 API: [0], [1] The first of them contains a union in C version, i.e. different structures are at the same memory addresses. Note C# delivers the level of usability similar to C or C++: we simply define structures, and access these fields. Not sure this is gonna be easy in Java even after all these proposals arrive.
For a managed runtime, unmanaged interop is a huge feature which affects all levels of the stack: type system in the language for value types, GC to be able to temporarily pin objects passed to native code (making copies is prohibitively slow for use cases like video processing), code generator to convert managed delegates to C function pointers and vice versa, error handling to automatically convert between exceptions and integer status codes at the API boundary, and more. Gonna be very hard to add into the existing language like Java.
> "Vector API" JEP
That API is not good. They donāt expose hardware instructions, instead they have invented some platform-agnostic API and implemented graceful degradation.
This means the applicability is likely to be limited to pure vertical operations processing FP32 or FP64 numbers. The rest of the SIMD instructions are too different between architectures. A simple example in C++ is [2], see [3] for the context. That example is trivial to port to modern C#, but impossible to port to Java even after the proposed changes. The key part of the implementation is psadbw instruction, which is very specific to SSE2/AVX2 and these vector APIs donāt have an equivalent. Apart from reduction, other problematic operations are shuffles, saturating integer math, and some memory access patterns (gathers in AVX2, transposed loads/stores on NEON).
> most of these are not done / not in a stable LTS Java release yet
BTW, SIMD intrinsics arrived to C# in 2019 (.NET Core 3.0 released in 2019), and unmanaged interop support is available since the very first 1.0 version.
[0] https://github.com/Const-me/Vrmac/blob/master/VrmacVideo/Lin...
[1] https://github.com/Const-me/Vrmac/blob/master/VrmacVideo/Lin...
[2] https://gist.github.com/Const-me/3ade77faad47f0fbb0538965ae7...
[3] https://news.ycombinator.com/item?id=36618344
-
Stable Diffusion in pure C/C++
I have minimal experience with Rust. OTOH, programming C++ for living since 2000, with a few gaps when I used other languages like Obj-C and C#.
I agree C++ is very hard to learn if you only have experience with higher-level languages like Python and Scala. I think thereāre two reasons for that.
C++ is unsafe. Thereās no way around this one, it was designed that way, like C or assembly. Still, with modern toolset itās not terribly bad. Compilers print warnings, BTW I typically ask them to treat warnings as errors to deliberately fail the build. On Windows, a combination of debug build, debug C runtime, and visual studio debugger helps tremendously. Linux compilers have these sanitizers (address, memory, thread, undefined behavior) which are comparable, they too sacrifice runtime speed for diagnostics and debuggability.
Another reason, the language itself is very complicated, especially the templates. However, just because something is in the language doesnāt mean itās a good idea to use it. You donāt need to be familiar with that stuff unless doing something very advanced, like customizing the Eigen C++ library. Donāt follow the patterns found in the standard library: unlike your code, that library has good reasons to use that template BS. If instead of templates you do something else, C++ becomes much easier to use, and most importantly other people will still be able to read and understand your code. Another reason to avoid excessive template metaprogramming, it slows down the compiler, because template-heavy code often needs to be in headers as opposed to cpp files.
P.S. If you donāt need extreme levels of performance (defined as āapproach the numbers listed in CPU specsā, the numbers are FLOPS or memory bandwidth), and you donāt need the ecosystem too much, consider C# instead of C++. Much faster than Python, often faster than Scala or Java, easy integration with C should you need that (same as Rust, much easier than Python or Java), the only downside is these ~100MB of the runtime. The reputation is weird, but technically the language and runtime are pretty good. For example, hereās a C# library which re-implements a subset of ffmpeg and libavcodec C libraries: https://github.com/Const-me/Vrmac/tree/master/VrmacVideo
-
Media Player Element now available for cross-platform apps everywhere dotnet runs
BTW, I did that too for 32-bit ARM Linux on Raspberry Pi 4, back in 2020: https://github.com/Const-me/Vrmac/tree/master/VrmacVideo Unlike Uno, my implementation doesnāt use libVLC and is written mostly in C#, only audio decoders are in C++. To decode video, I directly consume V4L2 Linux kernel APIs.
-
Ask HN: Those making $0/month or less on side projects ā Show and tell
Doing that for decades.
An app for Windows phone, downloaded 140k times: https://github.com/Const-me/SkyFM
Cross-platform graphics library for .NET: https://github.com/Const-me/Vrmac
Recently, offline speech-to-text for Windows: https://github.com/Const-me/Whisper
At this point, I consider side projects like that as a hobby.
-
Minimal Cross-Platform Graphics
I think this needs much more complexity to be useful.
For the rendering, ideally it needs GPU support.
Input needs much more work, here's an overview for Windows: https://zserge.com/posts/fenster/
Windows' Sleep() function has default resolution 15.6ms, that's not enough for realtime rendering, and relatively hard to fix, ideally need a modern OS and a waitable timer created with high resolution flag.
Here's my attempt at making something similar, couple years ago: https://github.com/Const-me/Vrmac
- An MP4 file first draft
-
Cppfront, Herb Sutter's proposal for a new C++ syntax
I agree about Python or PHP.
However, for Java or modern C#, in my experience the performance is often fairly close. When using either of them, very often one doesnāt need C++ to be good enough.
Hereās an example, a video player library for Raspberry Pi4: https://github.com/Const-me/Vrmac/tree/master/VrmacVideo As written on that page, just a few things are in C++ (GLES integration, audio decoders, and couple SIMD utility functions), the majority of things are in C#.
-
Vulkan update: version 1.2 conformance for Raspberry Pi 4
To be fair, in modern GL versions they fixed some of these things. In GLES 3.1 which I used a lot on Pi4 https://github.com/Const-me/Vrmac/ GPU vertex buffers and shaders worked fine, GLSL compiler in the drivers worked fine too.
However, others issues are still present. Thereās no shaders bytecode, they have an extension to grab compiled shaders from GPU driver to cache on disk, but it doesnāt work. The only way to create shaders is separate compile and link API calls. Texture loading and binding API is still less than ideal.
- Advice for the next dozen Rust GUIs
What are some alternatives?
ArchiveBox - š Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more...
neutralinojs - Portable and lightweight cross-platform desktop application development framework
asciidoctor-latex - :triangular_ruler: Add LaTeX features to AsciiDoc & convert AsciiDoc to LaTeX
nanovg - Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.
pywb - Core Python Web Archiving Toolkit for replay and recording of web archives
vello - An experimental GPU compute-centric 2D renderer.
SingleFile - Web Extension for saving a faithful copy of a complete web page in a single HTML file
rapidyaml - Rapid YAML - a library to parse and emit YAML, and do it fast.
notes - A zero dependency shell script that makes it really simple to manage your text notes.
sokol - minimal cross-platform standalone C headers
DownloadNet - š¾ DownloadNet - All content you browse online available offline. Search through the full-text of all pages in your browser history. āļø Star to support our work!
NanoGUI - Minimalistic GUI library for OpenGL