This has a few rough edges yet, for which I’m sorry. I’m proud enough to release it though. Please don’t consider this to be “finished software” yet. :-)
I’m not a heavy bookmark user, and for the few I have I rely on Firefox bookmarks. What are people getting out of having separate dedicated bookmarking servers?
My use case was to access my bookmarks across multiple browsers (through the service’s browser extensions).
Also, as far as I remember, Chrome and Safari lack bookmark tags. You would have to reach out for a separate service if you want tags on those browsers.
I think a better way to think about it is as a “link collection”; it’s a way to track links that are interesting and you have read or want to read. If you spend any amount of time on a link aggregator (and given you’re on lobste.rs I’m assuming you do) you end up with a ton of articles like that and you need to keep track of them beyond your browser’s tabs. The one I wrote for myself even indexes the articles so I can plain text search through them so I can remember where I read something.
After using in-browser bookmarks with keywords I switched to a homemade bookmark server some years ago. My server is set up in a way so that it can be used as a default search engine. What I wanted out of it was:
Having the same keyword act both as a simple webpage bookmark and a search jump. So for example I can do either “lob” to come to the Lobsters main page or “lob lisp” to search for “lisp” on Lobsters. Similar to DDG bangs but personalized and uses prefix keywords rather than bangs.
Easy portability between browsers and devices.
Storing the bookmarks in a human and tool manageable way which currently means json blobs in git.
If there was an (obvious) way to run Linkding on OpenBSD, I probably wouldn’t even have started writing 42links. It seems to be a great software indeed.
Where is the documentation on how to install it on OpenBSD? The only supported way seems to be via Docker (which we neither have nor want to have). Running a “dev version” in production sounds like a not-so-great idea.
Adapt the Alpine container definition. Containers aren’t scary, nor are Containerfiles. Treat them as glorified build scripts and they’re trivial to adapt to non-container environments most of the time. This one in particular will nearly 1:1 map to a shell script that should run on almost any OS that can run Python+SQLIte, including OpenBSD.
I started a similar project a few weeks ago for my bookmarks that has expanded into also covering links I post to social media: https://search.technomancy.us (also in lisp!)
For me the purpose is not to collect the links as much as to index the content on the pages themselves.
Personally, I use both my standard browser’s bookmarks (for bookmarks) and services like the one I wrote :-) for read-it-later tasks; basically, as a TODO link collector. Having those in the browser clutters the bookmarks.
Yes — and Mozilla have access to your Firefox Accounts passphrase in plain text, if you ever log in via HTML that they serve rather than via the browser itself.
End-to-end encryption doesn’t help if the key ever leaves your machine.
I use my own service (gitlab.com/sodimel/share-links) that I started to write a few years ago. The main goals are to be able to share links to my friends and to the internet, to have a rss feed of recently added links, to be able to comment, add tags, group links by collections. The project is using Django so the admin interface is auto-generated, and it allows me to focus on features :)
The admin interface is for myself only, the public interface is written by me for the visitors.
I don’t mind using a “classic themed” django admin if it allows me to add links (it does, and I even added a small bit of js to fetch the title & language of the link I’m adding) and to filter them easily (it does too, I added a lot of filters).
Who am I to judge other people’s CSS skills? I mean, look at mine. There are reasons why 42links uses a (tiny) CSS framework with only a few extra declarations. I can’t design web stuff very well.
As far as I can see from your screenshot and the “demo”, it looks boring, but both functional and accessible. :-)
That’s the magic of the autogenerated django admin interface ; its boring but it works well, and you can configure it the way you want (display more columns, add filters to the right, custom actions in the dropdown).
I wanted to write all the css myself for the public interface, and that’s what I did. I really like the idea of an horizontally-scrollable filter list, it works very well on mobile :)
Now you can help me write exactly this! (Or fork it and become rich with it. Either way, enjoy.)
Is there any significance to the name?
The name was still free and “42” can never be wrong. (Fun fact: 42links is what I developed instead of 42feeds, so to speak. Originally I wanted to write an RSS reader. Then I found Miniflux, which does exactly what I want. However, I could certainly use the prefix 42 again later, which is why, for example, the database works with _42LINKS variables, not just 42).
Nice to see a Lisp implementation!
I’m not a heavy bookmark user, and for the few I have I rely on Firefox bookmarks. What are people getting out of having separate dedicated bookmarking servers?
My use case was to access my bookmarks across multiple browsers (through the service’s browser extensions).
Also, as far as I remember, Chrome and Safari lack bookmark tags. You would have to reach out for a separate service if you want tags on those browsers.
Also no tags on Firefox mobile.
Ah, this makes sense, thanks.
I think a better way to think about it is as a “link collection”; it’s a way to track links that are interesting and you have read or want to read. If you spend any amount of time on a link aggregator (and given you’re on lobste.rs I’m assuming you do) you end up with a ton of articles like that and you need to keep track of them beyond your browser’s tabs. The one I wrote for myself even indexes the articles so I can plain text search through them so I can remember where I read something.
After using in-browser bookmarks with keywords I switched to a homemade bookmark server some years ago. My server is set up in a way so that it can be used as a default search engine. What I wanted out of it was:
In theory, 42links can do 1 and 2. For 2 and 3, I wrote ymarks (ymarks.org).
device independence and backups mostly.
I run an instance of https://github.com/sissbruecker/linkding and it works great for my use case.
If there was an (obvious) way to run Linkding on OpenBSD, I probably wouldn’t even have started writing 42links. It seems to be a great software indeed.
It is written in python/sqlite. That should just work on OpenBSD
Where is the documentation on how to install it on OpenBSD? The only supported way seems to be via Docker (which we neither have nor want to have). Running a “dev version” in production sounds like a not-so-great idea.
Adapt the Alpine container definition. Containers aren’t scary, nor are Containerfiles. Treat them as glorified build scripts and they’re trivial to adapt to non-container environments most of the time. This one in particular will nearly 1:1 map to a shell script that should run on almost any OS that can run Python+SQLIte, including OpenBSD.
https://github.com/sissbruecker/linkding/blob/master/docker/alpine.Dockerfile
Ok, that could work. Well… thanks!
I started a similar project a few weeks ago for my bookmarks that has expanded into also covering links I post to social media: https://search.technomancy.us (also in lisp!)
For me the purpose is not to collect the links as much as to index the content on the pages themselves.
That sounds intriguing, indeed. I never had time to play with Fennel though.
Personally, I use both my standard browser’s bookmarks (for bookmarks) and services like the one I wrote :-) for read-it-later tasks; basically, as a TODO link collector. Having those in the browser clutters the bookmarks.
Makes sense. I hadn’t considered a bookmark service as a simple read-it-later alternative.
There is no good way I am aware of to export bookmarks from Firefox when one changes phones (Mozilla’s Sync service is insecure).
Can you elaborate?
I’m fortunate to not have sensitive bookmarks, but I had figured it was end-to-end encrypted with my Firefox Accounts passphrase?
Yes — and Mozilla have access to your Firefox Accounts passphrase in plain text, if you ever log in via HTML that they serve rather than via the browser itself.
End-to-end encryption doesn’t help if the key ever leaves your machine.
I use my own service (gitlab.com/sodimel/share-links) that I started to write a few years ago. The main goals are to be able to share links to my friends and to the internet, to have a rss feed of recently added links, to be able to comment, add tags, group links by collections. The project is using Django so the admin interface is auto-generated, and it allows me to focus on features :)
Interfaces written by software are not really attractive in my opinion.
The admin interface is for myself only, the public interface is written by me for the visitors.
I don’t mind using a “classic themed” django admin if it allows me to add links (it does, and I even added a small bit of js to fetch the title & language of the link I’m adding) and to filter them easily (it does too, I added a lot of filters).
Here’s a screenshot of the admin list view, and here’s the link to my own instance if you want to judge my css skills : https://links.l3m.in/en/
Who am I to judge other people’s CSS skills? I mean, look at mine. There are reasons why 42links uses a (tiny) CSS framework with only a few extra declarations. I can’t design web stuff very well.
As far as I can see from your screenshot and the “demo”, it looks boring, but both functional and accessible. :-)
That’s the magic of the autogenerated django admin interface ; its boring but it works well, and you can configure it the way you want (display more columns, add filters to the right, custom actions in the dropdown).
I wanted to write all the css myself for the public interface, and that’s what I did. I really like the idea of an horizontally-scrollable filter list, it works very well on mobile :)
Glad to see more lisp code out in the wild, plus I’d been thinking about writing exactly this.
Is there any significance to the name?
Now you can help me write exactly this! (Or fork it and become rich with it. Either way, enjoy.)
The name was still free and “42” can never be wrong. (Fun fact: 42links is what I developed instead of 42feeds, so to speak. Originally I wanted to write an RSS reader. Then I found Miniflux, which does exactly what I want. However, I could certainly use the prefix 42 again later, which is why, for example, the database works with
_42LINKSvariables, not just42).http://pb1n.de/
pastebin or 0x0 on PicoLisp