For my 80k+ bookmarks I use buku.
Everything goes in there. It`s just a sqlite database (and buku is also a library for python). Good resources are saved in archivebox.io and are searchable via `rga`.
In order to access my bookmarks i either need a local copy or have access to where my stuff is stored.
To open any bookmark i search with `fzf` outside the browser. so i can work browser independently. (Can be integrated in rofi or dmenu.)
And in the near future I`ll upload resources in a webarchive format to ipfs node to preserve some of the current internet (and to not get involved with rate limiting when I update my buku metadata. Sorry HN, I'm not spamming, just updating meta data for my bookmark archive.)
Just to represent the other end of the spectrum: me (43 years old, been hacking since I learned C64 assembly at age 10), who has 38 bookmarks and I don't think I've ever had more than 10 tabs open in my entire life.
You must have remarkable discipline and focus! Or you must have discovered the 38 exceedingly better sites on the whole Internet, and now no other URLs will do.
I always wonder why people have all these bookmarks. I think the most I had at one time was 15 and that because I switch to another project halfway. As soon I extract what I want in one page, I close it. If it's something that is interesting, and I don't have time, I add it to my read-it-later list. And if it's something that I may often revisit, that's when I bookmark.
For me the history in my address bar is the most important thing. Switching to a new laptop recently and not bringing those across, I became painfully aware how much I use this. Often the reference page I care about, or a deep link into some tool is a few keystrokes (the first few letters of the service and deeper link).
Bookmarks makes this info portable. It's like having close to O(1) access to the knowledge or tasks that are not immediately in your direct clickable range. Having extra non-title info makes this even better.
I have no idea how bookmarks I have but my plan is to eventually use them to remind me of things I want to make sure I want to cover in a book with quite a breadth, regarding health and health systems, that I hope to write some day.
Those bookmarks are more or less the tip of the iceberg. And they were almost all created during $DAYJOB which was years ago. Although already then (~2017) i had about 3500 sources in my RSS Server. And of course, I lost track of everything remotely interesting.
Archiving those links was fundamental work for creating my news blog, which is still run privately until I figure out how to implement a community communication system (mostly commenting) that will work on an IPFS backend. I mean, the comment section of HN is what has made me come to this site for years.
It's unfortunate that you've lost track of the most interesting pages you've come across. Built-in browser bookmarking systems and managers leave much to be desired on the categorization and prioritization side, in my opinion.
(On a mostly unrelated note, around ten years ago, someone posted a motivational/productivity article on Hacker News that used video-game-themed metaphors and artwork, reminiscent of Heroes of Might and Magic. It involved going down one path or the other, and for one of the paths, the author asked whether you really wanted to be "hanging out with the hydras". I've never been able to find it since. Does anyone remember it or know how I could find it?)
I meant I was loosing interesting articles on my RSS server without filtering. I won't be loosing resources that I have already archived.
On the other side, having so many sources allows me to find articles about one topic and group them. Making future research for reporters easier. At least I hope so.
How is this as a privacy oriented solution? Using in-browser bookmarks is, in my opinion, like creating a perfect fingerprint of who you are in so many ways (aside from the obvious of being traceable based on the same bookmarks being transferred to new browsers). Any suggestions?
I just don`t do it. One could use a service in between, which opens up pay-walled content. But for me it`s not worth the hassle.
Even if I`m loosing high quality content ... which is only available on one site.
I blacklist "bad" sites that don`t care about freedom or sites that just make life harder for the reader. Like unnecessary advertisement, binding the core functionality to cookies and/or javascript, being not international, copying from other sites ... those criteria can sum up to a overall bad user experience. Those criteria are only "bad" for me in the context of news and blog sites.
I keep making bookmarks, but I don't know why... I never, ever, ever, ever go back and use them. I even think about how I'm not going to use a bookmark as I create it. :-\
I tend to keep way too many tabs open in my browsers, some of which I never, ever go back and read. Once in a while I dump these evergreen tabs into bookmarks.google.com (yeah, I know), which is just enough to satisfy my inner hoarder that I haven't completely lost whatever was so special about that tab.
I have this fantasy about a browser history on steroids that remembers not just the URLs, but the contents of everything I've ever visited. Not necessarily 100% retention of images and layouts, but at least searchable text. There are so many times when I'm simply unable to convince Google to find a page I read a few years ago. I've probably even bookmarked a project or two along those lines.
Doesn't pinboard.in support full-text archiving? If so, it's probably still limited to public content. Conceivably a bookmark extension could save a full-page screenshot and all of the text, even if the page requires auth, isn't resolvable from the internet, etc.
I suffer from the same affliction for the most part, but I do end up capturing sets of bookmarks related to research or projects that I share with colleagues. It also sometimes happens that I start a new browser profile for learning a tech and save all my bookmarks from that with the code. That has helped when it's a case of "how did I do this one thing I know I did in throwaway project X?"
Not self-hosted, is it? If its not self-hosted, it doesn't interest me. Also, need a proper way to export data, and need to use an open, specified data format.
I've the same fantasy, plus some extra features. The organization of the browser tabs is also important. Sometimes that's because a windows contains tabs all on an important topic. Other times it's because there's a hierarchical-ordering of the tabs. Either way, I'd like to save this information in addition to the tab/bookmark and (optionally) content.
Hmmm...like a sort of fuzzy IPFS, eh? I don't mean this sarcastically...i lefgitimately think this is a good idea. I knwo they have the wayback machine, etc...but i imagine you mean a more local, personal thing...i like this idea!
I recently created a daily "random 5 bookmarks" email using GitHub actions and Pinboard's API. I love it; it's a serendipitous reminder of things I once thought were interesting, and now I bookmark things with abandon just so they may show up again. I rarely use bookmarks to find something again because search is still low-friction, but that assumes I know what I'm looking for.
There's a real point here -- not every thing we note will ever have value to us again.
OTOH, I taught high school math briefly, and this reminds me of the evergreen question "When are we ever going to use this?" And the honest answer that most students in the classroom will never use more than a tiny portion of the anything they're taught beyond basic algebra (maybe not even that).
And yet it's worth doing sometimes because at any given point in life, you don't know exactly what you're going to be or do later. You want to do what is more likely to open doors than close doors later.
Even if you learn your HS math well, you probably won't get by on that skill specifically. You'll either train on deeper specifics that HS math gatekept... and/or you'll probably forget enough of it that you'd have to come back and brush up and then get into specific applications.
But you'll remember there was such a thing as this kind of problem solving and have some idea of what it entailed and where to find out more.
It has become more important to me as search has deteriorated in general. If I find a possibly useful site that isn't SEO-compliant, there is a decent chance I might not be able to find it again if I don't save a link.
I scrape all my bookmarks, github / gitlab stars, favorite tweets, etc... regularly, and push that to an elasticsearch instance, so that I can do full text searches later.
This is the only reliable way for me to find something I have a vague recollection of, which happens quite often. In the past I used to simply type whatever I could recall into Google search and often find it, but that just doesn't work any more. It's not just the SEO stuff, also the bias towards recent content seems to have increased, and obviously the pace of content generation as well. The haystack is much bigger now than it used to be.
Also there's the https://github.com/karlicoss/HPI library, which you could build on, though it mainly relies on data dumps from the different services instead of crawling and fetching through APIs, which is why I didn't use it. Keeping up with API changes is bad enough, I don't want to deal with undocumented dump formats...
My bookmarks are roughly broken into two groups - a small set that I go to specifically on a regular basis, and a much larger set that's organized loosely into a long list of folders. I rarely go into my bookmark folders to click on one of these links specifically.
The value of that larger set of bookmarks is like a personalized search history. When I search for a topic, I really like knowing whether I've already visited a relevant site. It saves sifting through raw search results for topics that come up a few times a year, or when I work on specific kinds of projects.
I’ve spent more time trying to find a page I wish I’d bookmarked than bookmarking. The friction is so low adding a bookmark, even when I doubt I’ll need it.
Some time ago I went through my several hundred bookmarks, rooted out link rot, and tagged all of them. The tags have been a godsend for finding high quality resources quickly. Recently I needed materials on C and systems programming and I found the perfect site bookmarked who knows when. My bookmarks are more of a very niche, manual high quality index for searching.
Right there with you. I have this vague dream that one day, the tech will be there to automatically collate and reference all my stored data more easily, sort of like how I work with physical sources.
Even as I type this, though, it feels more and more like a pipe dream.
Minimal: Every page I visit grab headings (easy) / major themes (harder). Add these to a local searchable db. Type ahead interface showing summary info.
Bonus points - automatic summarization (GAN based perhaps?)
My Pipe dream...
I wonder what the actual quantity of unique text a human actually sees in their lifetime. Could this be easily stored? Like every word I ever read anytime?
Working with physical sources = being able to spread ten books out on a table and easily flip between sections in a tactile way (physical pages). That’s really what I mean. For some reason physical objects are much simpler to work with (for me) and opening ten windows (even on a giant screen) just doesn’t work for me the same way.
The minimum useful version for me would be something that recognizes all media types AND allows commenting/notes in a standard format that links between them and is easily manageable.
In particular that would mean for me:
- read/highlight/notate/manage/organize functionality for epubs, PDFs.
- import physical books via ISBN and allow me to attach my notes there (ideally with a companion phone app that lets me scan/photograph relevant sections.
- photo library (ideally containing the aforementioned book pics while leaving them linked to the notes).
- multiple routes for surfacing old stuff.
But in all honesty: the reason I think it’s a pipe dream is because I’m fairly certain the limiting factor is being human, not the technology. Like I’m kind of hoping for a new paradigm for digesting media, but I also recognize that’s a pretty steep ask.
Relatedly I’ve been trying to build what I’m talking about out of emacs since COVID started, and I get some of the way there by org roam + org noter, but the difficulty of connecting emacs with various work cloud services and such has proved quite daunting.
But I’m still at it, because most tools of this nature are dev centric, whereas I’m prose centric, so much of my frustration comes from having tools that are CLOSE but fall apart in the last mile workflow (for my purposes).
Honorable mention to hookapp for mac, which I’m still wrapping my head around but may end up solving some of my nicher problem areas.
Thanks for going into detail on that. This makes me wonder if information organization and traversal is truly the killer app of AR + AI. Arrange your data like physical objects. See the connections like literal threads in 3D space. Have a librarian who can actually understand your natural language queries help you find things.
For me it absolutely would be. Allow me to interact with my (personal, DRM free, already owned and stored locally) digital media as if it were physical media and you will have my money day one (unless Zuckerberg).
Awesome. Let's go back to "what is the simplest useful implementation"... Let's say you have some static media like PDFs. Let's say you can use VR/AR if you want, but you can also just use your flat screen with a handheld motion controller.
Would it be useful to create a 3D world where those PDFs take up space and stay where they're put? Let's say you open an app on your computer that shows you a virtual room, and there's a menu that lets you select a folder from your computer full of PDFs. You open the folder and a pile of physical documents appears as either a stack, a spread, or something messier.
Viewing from there would be really important. You'd need to bring the camera in really close to give you the ability to read anything. Or magnifying glasses. Maybe the ability to clone and transform pages and parts of pages while leaving them linked to their parent documents.
I dig everything you’re saying and think the way forward is something like that. But right now implementations are very limited by screens, in my experience. Like, even if there’s 360 of a virtual space avail to me by dragging the screen, it ends up having the same issues — it seems like, for me, a persistent space is needed. There’s also some research to suggest that having such permanence is helpful to learning — it’s easier to remember info from a physical book because your brain can associate the CONTENT with the actual physical experience of the book itself, which leads to greater retention (I think it’s similar to how mind palaces are meant to function).
A mix of AR glasses and physical simulacra is where I expect it to go eventually. As in, I have 10 book “blanks”, and when I use AR glasses, they become whatever I wish (from my library). Ideally I could then flip around the blanks and see the content of the books — making it much more like my actual physical workflow.
Tl;dr you’re 100% right that the means and method of viewing are critical to what I’m after. But I think the main through line for me is that if I’m having to manipulate the camera AND the content, it leads back to the same issues I currently face. The point for me is being able to interact as I usually do, but with access to “physical” versions of everything I have digital (albeit with digital convenience — such as exif data readily available on the “back” of a photograph).
Hope that all makes sense and thanks for treating this so seriously!
Protip: switch to an outliner with infinite nesting like Dynalist and dump bookmarks in there. You can far more easily categorise, tag and interlink bookmarks that way, and it eventually evolves into a personal wiki almost.
While we're plugging different software solutions for creating indented lists, I would recommend TaskPaper 3 for MacOS. It's a fantastic piece of software that runs natively on Mac.
I gave up, no use. Important work links I know how to find again (I always remember who I send links to on Slack and then I can find them very quickly).
I gave up on collecting links, I'm not organized enough, it always turns into an unusable mess.
I'm not using browser bookmarks anymore, instead I am just using plaintext files (org-mode in my case). When I want to make a bookmark I use grasp [0] to simply capture in in the 'links.org' file, possibly with some notes/selected text and tags. Now and then I would skim through this file, refile the most important/interesting things to other files, and put the rest into 'later.org' (things I might never look at again :) ). The upside is that bookmarks become alive this way, you can easily edit them, add more context, interlink, etc.
I also mirror saved items from other services (e.g. reddit/HN/twitter/instapaper) as plaintext org-mode files, via orger [1].
Then, all of this feeds into Promensia [0] [1], a tool I wrote that serves as a web browsing copilot and surfaces my bookmarks (or any relevant links, really) when I'm browsing.
That way I don't need to worry about spending too much time processing bookmarks and that I'd never read them, I can just read the most interesting stuff and the rest is searchable (so I use it as a knowledge base/personal search engine), and surfaces in my browser via Promnesia, so I can find out if I have some relevant information in my knowledge base without actively searching. I don't need to suffer from vendor lock-in (even if the service/tool is open, migration is always painful), I can just add another adapter to my system and feed it into Promnesia/Orger.
del.icio.us is still up, albeit with a "note secure" warning [0].
"""
My name is Maciej Ceglowski. I bought what remains of this site in 2017 for about the price of a Volkswagen. I got that money from running a paid clone of del.icio.us called Pinboard.
Every time I send someone a topical/relevant link for a discussion or project I'm involved with, people always ask "How do you find this stuff?". I mention that it's primarily reading great Hacker News posts or tweets and just saving it over time.
Maciej's blog is also particularly entertaining including both funny technical and non-technical posts.
I'm a longtime Pinboard user but it has some annoying quirks. The biggest weakness for me is the limited search. e.g. Yesterday I was trying to find my kids' school menu site and searched for "menu"... nothing. Turns out I did have it bookmarked, but the title is "Menus and Pricing". So you have to search for "menus" to find it. I've made suggestions to the developer on stuff like this over the years but it hasn't improved much.
Both my delicious accounts are still accessible. I was away from the Internet for eight years (jail) and when I got out delicious was one of the only accounts that still worked, since it hadn't changed its authentication system while I was gone. Sadly, 99% of my bookmarks are dead links now.
Yeah, definitely a percentage of them are just "moved" links.. things that pointed to say a .html file before people realized that file extensions were out-of-date.
Adjacent to what the author is doing, I manage my bookmarks in a web app. The main principle is that it should be possible to add any link, no matter how trivial, and have a good chance of finding it later on. (Eventually, in the far-off future, search-engine numbers of links.)
I have written a similar tool[0], also using the YAML format. The output is a small web app, contained in a single HTML file. We host our YAML project bookmarks in a Git repository and automatically deploy the generated web app, so it's available to the whole team. I do the same with all my private bookmarks.
Synchronizing bookmarks between browsers and endpoints is a surprisingly long standing and thorny issue within enterprise IT. You'd think it would be simple but every profile synchronization service I've ever encountered has had severe failure scenarios. I guess it makes sense when you think of it as a CAP theorem problem.
One solution kept the bookmarks in an internal DB and would create them on an endpoint (eg a non-persistent virtual desktop) at sign-in. Sometimes this failed due to whatever reason and you had no bookmarks for that session. Oh well.
But wait the solution also synced bookmarks when the browser process was closed. That sync didn't fail so now all your bookmarks were overwritten with a blank bookmarks file and were thus erased from the DB too! Now you got to call support and have them revert your bookmarks to the previous version. But thankfully the service eventually included a self-service portal where you could revert them yourself.
Heaven forbid you have two active endpoints. Last write wins? Maybe!
> every profile synchronization service I've ever encountered has had severe failure scenarios. I guess it makes sense when you think of it as a CAP theorem problem
I don't think CAP theorem is particularly relevant in this scenario. Sounds more like they were doing an overly basic "just overwrite with the current state" instead of sending individual commands, e.g. "create this bookmark".
The reason is likely a procurement problem. Anything that's "enterprise" and calls things "endpoints" is off to a bad start in my book.
With Pinboard down recently[0], I have made a pledge to myself to export from Pinboard.in as frequently as possible to a local hard-drive where I then back that up in several cloud locations for peace of mind. As a rule of thumb: I don't build my castles on other people's land. Edit: the cloud is building castles on other people's land, but I have local backups and don't put all my eggs in one basket (i.e use several providers like Backblaze, Dropbox etc).
I started using Notion to organize and keep track of my digital life, including storing all of my bookmarks. It's been great so far, I can categorize the bookmarks and add notes and comments on them to get the gist of the information that is at the linked site. Before having bookmarks sucked because I had to go to the link and re-read the site to remember why I bookmarked it. Now I just write down little snippets of important information from the site, and I can just reference that instead.
If I may shamelessly plug my startup: https://histre.com/ I'm building recommendations on top of your bookmarks / notes / highlights. This could be interesting because there is no conflict of interest in those recommendations (ie not trying push anything). It has a lot of integrations including with IFTTT and Twitter, with more coming.
I'm the author of this post and its been really cool to see all the different comments and projects looking to solve this problem - they all make mine look like amateur hour!
Much like other posts on here, todo apps and bookmarks don't really work for me either, they just get out of date. It's not really about personal bookmarks, it's more about trying to give people in a company a consistent experience and making onboarding a bit more self-service. I use this as a way to store my companies URLs, keep them centralised and stored in my browser. The Slackbot was then a way of making it accessible to non-technical users.
I had ideas about making a web app and other interfaces to update the YAML but I wanted to keep it simple, base it peoples existing toolchains and a GipOps approach for versioning. There are a bunch of other tools I want to build around onboarding and OOH support but I wasn't sure if anyone would be interested so all of this was really nice to read.
For years on I endured ads because they were the sole source of revenue to millions of sites online and to people who were getting peanuts for their efforts of building, maintaining and pouring contents which have been priceless to me. But the more I endured them, the further they were pushed down my throat, most of all youtube. So around 6 months ago I decided that I've had enough and switched to brave. And fundamentally the one thing which I still dearly miss was quick access to my bookmarks/history from any of my devices. History more so than bookmarks but hey... I might end up doing something similar specifically for history.
Bookmarks, gotta love something so simple that just never works for me. It's the same as todo list apps, I tried all of them, and non really stick (although Things3 is doing well atm). Things get outdated, I don't organize it well and it becomes a mess, or I simply stop using it. I think I'm just not organized enough.
But I really enjoy reading the comments how everyone has either build something themselves, uses some (sometimes obscure/niche) tool, or has bundled a bunch of stuff together into something that works for them. OP's solution also looks nice.
I was trying to do the exact same thing without git and coding (so that people could just view the bookmarks, maybe react to them as a voting mechanism). Ironically I ended up coding a solution for that - https://www.axomark.xyz .
The previous version was a free service without the need to sign up - just create a bookmark collection page with an optional password, then anyone with the password can use it right away. The link to the collection could be totally anonymous because the app tracked nothing at all. But I got 0 users, apart from myself. So I rewrote it from scratch to make the collections more organizable. The sharing is still anonymous because there's no way for another user to know who created them. There has to be a way, however to track your own bookmarks, so I guess it's not truly "anonymous" as in "impossible to track" (the database contains the bookmark owner). But it seemed this time around people are more interested. I guess there has to be a balance.
I actually do something similar, but no upvotes and it uses Evernote WebClipper to capture and track tags archive a snapshot of the page. They are then indexed by both tags and date and rendered into templates to be stored statically forever.
https://jaytaylor.com/notes (warning: all on one page, it's grown large over the years, please be gentle to my poor server)
It's open-source, just a python module you hook up an Evernote API key and tell it which "notebook" to use:
Really handy to not lose track of links and pages (though my system could definitely be further improved). I also like that it's naturally cross browser since the clipper plugin is available for both FF and Chrome.
Very cool! I've been playing with a side project (link below) to try and make bookmarks easier to search through, and have run up against the whole "normalizing bookmark data" challenge.
Most browsers do seem to follow a standard, but I've yet to find a way to sync them across browsers, devices and machines (without having to use some 3rd party service like Evernote, or what have you). I always prefer solutions/approaches that don't require users to change their behaviour (eg. use another service to track links).
With the forthcoming version manifest v3 for Chrome extensions, this may prove trickier, but it should in theory be possible :)
I've seen a few large tech companies where internal "bookmarks" where all just shortlinks you had to remember (using golinks.io or another internal config).
So for example http://go/project-X, go/JIRA-123, go/team, go/team/oncall. References to the links were scattered across dozens of documentation pages and you just got used to that state over time. I always thought that a proper bookmarking system would do wonders for onboarding and documentation (by forcing people to maintain organisation if they wanted to use the links).
I typically export my bookmarks as JSON from Firefox and use a custom script to loop through and convert each bookmark into HTML nodes. I use JavaScript to expand/hide nodes with buttons (styled with CSS). Overall pretty simple but really sustainable and easy to use IMO ... Pretty proud of it:
I just tackled that recently myself - mainly to publish my music library.
Glancing over the blog post, it almost feels overengineered.
Conveniently, the Chrome Bookmarks file already is JSON and I created a small tool that takes it as input and renders it with Handlebars templates. It also includes a simple way to get thumbnails and an HTML template with expandable folders (no JavaScript needed).
Just to mention a tool that I did not see elsewhere in the discussion: I store my bookmarks in the weirdly named BookmarkOS (https://bookmarkos.com/). It costs a nominal amount a year and provides just the right level of organization for me.
Recently, I have been storing groups of tabs related to a subject in the Firefox Simple Tab Groups extension. The UI is a bit hokey, but it does let me context switch between complex tasks quickly.
As long as we have a gathering of bookmark-nerds here, is there a good solution for progress-tracking bookmarks? I'd love to be able to bookmark a web site one time and that bookmark update every time I open a new page on that site. For example, if I was reading a blog or a webcomic from beginning to end, being able to resume progress at any point in the future with only a single bookmark would be great and would keep me from having so many tabs open.
everything supports links these days, so anything beyond firefox already has links. That being said, I keep links in the following systems
1. google docs
2. emacs and org
3. private github markdown files
These 3 systems allows me to adequately save links to almost anything based on context.
I wish the tools in this space were better to share bookmarks between systems but it seems like a lost cause with all the bookmark systems shutdown.
Take a quick look at https://braintool.org Its an extension that saves bookmarks (+ notes) to an org-mode formatted text file that can be auto-synced to google Drive. The org file can then be edited and accessed from emacs or any other plain text editor.
This is about half of my links to the web in the ℍ𝕪𝕡𝕖𝕣𝔱𝔢𝔵𝔱. Sometimes a different context is better for linking. I can't say I know how to do it well enough.
In 2019 I built my own bookmark while learn Reactjs, I launched it as open source and I still use it even though I am the only active user. This is an example with my profile: https://pegao.co/@zakokor
My similar scratch-my-own-itch solution is BrainTool[0] - a bookmarking extension which syncs to a shareable org-mode file. Nested topics, per-item notes and tab group support.
I have everything in zotero synched via webdav to my synology nas. All my bookmarks and docs. Zotero also keeps an offline copy + its as easy as clicking the button in whatever browser you are using.
Not distributing per se (even though this would be possible) but I am storing my bookmarks in OneNote in a logical structure. OneNote has the advantage to easily switch between browsers and is fully searchable.
I was on Refind (until they went paid) and now I'm on OneNote. I take notes in OneNote as well so I think this works out well. I wish their Chrome Extension works a bit better though (some sites are difficult to capture as an Article).
I have had the extension be pretty slow in the past, especially on weak devices. But I do like the syncing backend of OneNote (works pretty well), I just wish the whole 'notebooks' setup was a little looser - it's pretty restrictive.
Plugging in my setup: Zotero with their Zotero Connector. Provides a lot of benefits (local, stores a snapshot of the page, pulls out relevant metadata, easy note attachement and linking)
In order to access my bookmarks i either need a local copy or have access to where my stuff is stored. To open any bookmark i search with `fzf` outside the browser. so i can work browser independently. (Can be integrated in rofi or dmenu.)
And in the near future I`ll upload resources in a webarchive format to ipfs node to preserve some of the current internet (and to not get involved with rate limiting when I update my buku metadata. Sorry HN, I'm not spamming, just updating meta data for my bookmark archive.)
https://github.com/jarun/Buku
https://archivebox.io/
https://github.com/oduwsdl/ipwb
[edited1 for formatting] [edited2 forgot to relate to the linked article]