share-links
Som
share-links | Som | |
---|---|---|
6 | 8 | |
- | 24 | |
- | - | |
- | 0.0 | |
- | almost 2 years ago | |
C++ | ||
- | GNU General Public License v3.0 only |
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.
share-links
-
The Small Website Discoverability Crisis
> A proposal, dear reader: Create a list of bookmarks linking to websites you find interesting, and publish it for the world to see. You decide what constitutes “interesting”.
That's exactly what I did with share-links : It's a tool that allow you to easily store and share links of things you like on the web.
Here's the repo where you can find more info (see the file DEPLOY.md if you want to launch an instance on the web): https://gitlab.com/sodimel/share-links
And here's my own instance, whith over... 4000 links: https://links.l3m.in/
Want to be surprised? Open this link on a new tab: https://links.l3m.in/en/random/
-
Show HN: Linkwarden – An open source collaborative bookmark manager
Here's a (my own) lightweight alternative, built using django & no javascript: https://gitlab.com/sodimel/share-links
It allows you to store links (title & language of the page, a pdf of the page, assign tags, to include them in collections), it has a very simple (moderated) comment system, a lightweight ui (remember: no js), multi-accounts (permissions), translations, some rudimentary stats and some other things (access a random page!).
See my own instance for an example with thousands of links: https://links.l3m.in/
- Show HN: Share-links, kinda like a clone of Shaarli in Django
-
How do ADHD people cope on here?
I don't think I have ADHD but I created a shaarli clone (https://gitlab.com/sodimel/share-links/) in order to be able to store, share and retrieve all the interesting link (the act of sharing interesting links happens more frequently now that I have a dedicated tool to store/retrieve them) :P
-
Ask HN: Admittedly Useless Side Projects?
I did the same for a while, but it was a mess (700+ unsorted bookmarks on my main computer, 100s more on others).
I tried shaarli, but soon after I tried to build something myself, and I created share-links.
It's an open-source Django app that you can self-host, and that lets you store (and share!) links, titles, descriptions, and tags. Then it display them in a nice way (for me : not much css, a simple page with no js).
It took some dozen of hours to get to the point where it's really usable, and it still have problems now (comments are not moderated, I just realized that you can't add a description in links or tags, but I will fix this soonTM).
Here's the link of the repo: https://gitlab.com/sodimel/share-links/
One cool feature is to set your browser homepage to the url that loads a random page : each day I get a cool article to read/concept to discover!
That's my useless side project (because shaarli already exist and it's way more mature).
-
Is it only me who finds deployment of Django very hard and complex ? Is there easy way ?
Not a full deploy guide (you need to have apache running & working fine), but I made a small tutorial for a bookmark-related app I'm working on on my free time: https://gitlab.com/sodimel/share-links/-/blob/main/DEPLOY.md.
Som
-
Making Smalltalk on a Raspberry Pi (2020)
> Smalltalkish
Have a look at the SOM dialect which is successfully used in education: http://som-st.github.io/
Here is an implementation in C++ which runs on LuaJIT: https://github.com/rochus-keller/Som/
> unfortunately out of print book Smalltalk 80: the language and its implementation is commonly recommended
I assume you know this link: http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook....
Here is an implementation in C++ and Lua: https://github.com/rochus-keller/Smalltalk
- Do transpilers just use a lot of string manipulation and concatenation to output the target language?
-
Ask HN: Admittedly Useless Side Projects?
- https://github.com/rochus-keller/Smalltalk/ Parser, code model, interpreter and navigable browser for the original Xerox Smalltalk-80 v2 sources and virtual image file
- https://github.com/rochus-keller/Som/ Parser, code model, navigable browser and VM for the SOM Smalltalk dialect
- https://github.com/rochus-keller/Simula A Simula 67 parser written in C++ and Qt
> do you regret those endeavours?
No, not in any way; the projects were very entertaining and gave me interesting insights.
-
Ask HN: Recommendation for general purpose JIT compiler
If your DSL is statically typed then I recommend that you have a look at the Mono CLR; it's compatible with the ECMA-335 standard and the IR (CIL) is well documented, even with secondary literature.
If your DSL is dynamically typed I recommend LuaJIT; the bytecode is lean and documented (not as good as CIL though). LuaJIT also works well with statically typed languages, but Mono is faster in the latter case. Even if it was originally built for Lua any compiler can generate LuaJIT bytecode.
Both approaches are lean (Mono about 8 MB, LuaJIT about 1 MB), general purpose, available on many platforms and work well (see e.g. https://github.com/rochus-keller/Oberon/ and https://github.com/rochus-keller/Som/).
-
When is Smalltalk's speed an issue?
At the latest when you run a benchmark suite like Are-we-fast-yet; here are some measurment results: http://software.rochus-keller.info/are-we-fast-yet_crystal_lua_node_som_pharo_i386_results_2020-12-29.pdf. See also https://github.com/rochus-keller/Som/ and https://github.com/rochus-keller/Smalltalk.
-
LuaJIT for backend?
LuaJIT is well suited as a backend/runtime environment for custom languages; I did it several times (see e.g. https://github.com/rochus-keller/Smalltalk, https://github.com/rochus-keller/Som/, https://github.com/rochus-keller/Oberon/). I also implemented a bit of infrastructure to ease the reuse: https://github.com/rochus-keller/LjTools. LuaJIT has some limitations though; if you require closures you have to know that the corresponding LuaJIT FNEW bytecode is not yet supported by the JIT, i.e. switches to the interpreter; as a work-around I implemented my own closures; LuaJIT also doesn't support multi-threading, but co-routines; and there is no debugger, and the infrastructure to implement one has limitations (i.e. performance is low when running to breakpoints). For most of my projects this was no issue. Recently I switched to CIL/Mono for my Oberon+ implementation which was a good move. But still I consider LuaJIT a good choice if you can cope with the mentioned limitations. The major advantage of LuaJIT is the small footprint and impressive performance for dynamic languages.
-
Optimizing an old interpreted language: where to begin?
One option is to leverage someone else's JIT: you could, for example, rewrite the interpreter to transpile to Lua source, which is then run in LuaJIT. There's a Smalltalk dialect which does this successfully; the Lua version runs in 1/12th the time of the C interpreted version. https://github.com/rochus-keller/Som You can use LuaJIT's FFI to call back into the Stunt server, or else just rewrite it completely in Lua --- large parts of the Stunt server will just go away in a native Lua implementation (e.g. the object database is just a table). Javascript would be another candidate for this.
-
JITted lang which is faster than C?
This is a completely different kind of measurement; unfortunately this is not clear enough from my Readme. I wanted to find out, how well my naive Bluebook interpreter performs on LuaJIT (using my virtual meta tracing approach) compared to Cog, which is a dedicatd Smalltalk VM optimized with whatever genious approaches over two decades (or even longer considering the long experience record by Elliot). This experiment continues in https://github.com/rochus-keller/Som, because I didn't want to modify the original Smalltalk image. I found that my naive LuaJIT based approach is about factor seven behind the highly optimized Cog/Spur, and further improvements would require similar optimization tricks as in the latter.
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...
Smalltalk - Parser, code model, interpreter and navigable browser for the original Xerox Smalltalk-80 v2 sources and virtual image file
kos-kpp
rockstar - Makes you a Rockstar C++ Programmer in 2 minutes
catwiki_p3 - CatWiki (using Python 3)
qbe-rs - QBE IR in natural Rust data structures
ubpf - Userspace eBPF VM
callibella - Sync your personal calendar to your work calendar, privately 🐒
sljit - Platform independent low-level JIT compiler
Oberon - Oberon parser, code model & browser, compiler and IDE with debugger