Beeminder Forum

'Not an essay' on ideas and writing

“Two things are infinite: the universe and the number of tabs in my browser; and I’m not sure about the universe.” - Einstein (paraphrased)

I am sure that some of you, like me, end up with browser tabs coming out of your ears. I believe I have identified a reason that mine do this, which is affecting my enjoyment of reading articles online. I have attempted to summarise my feelings in this post, and would welcome commiserations, suggestions, and of course ideas.

I love thinking and talking about ideas, but at the same time I often feel incompetent when I try to do so. I am increasingly reluctant to let the ideas I discover slide into my psyche, subsiding into the mush of everything I’ve ever read, watched, or thought. I suppose this comes from my dissatisfaction with sitting on the baseline of culture, desiring instead to be able to discuss and conceive of ideas. All this goes hand in hand with the desire to improve myself and to get the most out of life, something we’re all here for.

It is perfectly possible to enjoy reading something without thinking consciously about it or committing one’s thoughts to a medium, whether paper or digital. The expectations that I hold of myself are no doubt too high (‘aspirational’!), in that it is impossible to have an opinion on everything.

On the other hand, given my writing and sharing activity is so low, what I currently suffer from could come under the heading of ‘overload paralysis’, combined with procrastination and a job in a school which, at the best of times, consists of long work hours during term-time. (I am working on spending my time more intentionally, whether it’s down time with a game or creative endeavours.)

I believe that the tabs also build up as a form of ‘inbox’ and that they need to be ‘processed’ (speaking firmly from the GTD camp), but until now I haven’t really had or found a system that I trust to file those things in. I used to use Pocket but it slowly filled up with articles I wanted to ‘do something’ about, and thus I stopped opening the app as well as saving article to it.

To begin steering toward a forum-friendly atmosphere of discussion and away from an essay, I would like to know how any of you deal with the dreaded tab mountain?

Or: how you deal with the slight dread that an excellent idea or epiphany you’ve had will melt away into the background, your mind unable to retrieve it for conscious or unconscious strengthening, broadening, or softening of another, newer idea?
How do you keep up with writing about ideas, whether fictional or non-fictional? How do you compartmentalise, if you do at all? Do you keep them in a journal?

And most importantly: how do I Beemind this?! I have wondered about a backlog goal - possibly ‘things processed from list of stuff to write about’. Any other ideas?


There have been a few threads here about this! I know some folks have tools that pull tabs into a document that they like. Other folks have extensions to show the number of tabs, and manually beemind it.

(I bet there are lots of ways.)

1 Like

Good to know about those - I’ll have a search through the forum to see what I can find.

I usually close most of my mobile browser tabs when they get to around 40, but just now they’re sitting at 70! :scream:

This thread made me think of Beeminding Browser Tabs? and the rather scary Please help with tab panic - 3020 firefox tabs are making me go insane

70 tabs is just about the limit of my comfort zone!


Do you know about the Zettelkasten method and/or progressive summarization? Personally I’ve been using Roam Research for this kind of thing which has been amazing. I don’t implement Zettelkasten exactly, but when I encounter something that I think I might want to read, I add it to Roam with a #summarize tag (Roam makes it easy to later find everything with a certain tag.) Then I have a (time-based) Beeminder goal for doing progressive summarization. When it’s time to work on the goal, I open the Roam page containing everything with a #summarize tag, generate a random number between 1 and n where n is the number of things with a #summarize tag (see note below), and spend some time reading that thing and writing notes in Roam. Some things, I quickly realize are not actually that interesting to me after all, so I put a one-sentence summary of my initial impression and move on. Some things I spend a lot longer on. Once I’m done with one thing I remove the #summarize tag and repeat with something else. Roam is great for this because I can easily discover connections between things, recall ideas from other things I’ve read and summarized, etc. Besides, even just the act of summarizing in my own words makes me far more likely to retain something than just reading it.

Roam may or may not be outside your price range (as an academic and a beta user I am grandfathered in at a lower rate) but there are other things that might serve as well, e.g. Notion or Obsidian (I haven’t used either).

[Edited to add: I used to manually generate a random number and count through the items on the page to find the one corresponding to the generated number. Of course, that was very tedious, and I am happy to report there is now a better solution: the Query Tools extension by David Vargas can be used to randomly select one (or any number) of items generated by a query. So now all I have to do is open the #summarize page which contains a query for everything tagged #summarize, limited to one (random) result.]


Yes, exactly! I’ve saved thousands in a bookmark folder, and I have a couple thousand more or so on my phone, and 1100 or so on my compy, that need to go into the bookmark folder. They are all items that need to be processed.

Still struggling to deal with it, but I’ve been putting everything in the bookmark folder, and my new plan for 2021 sets aside time every day to go through the backlog. I have Beeminder goals for this.

Yeah, you can’t let your ideas melt away! You have to have a variety of note-taking tools handy to keep track of them - paper and pen, emails, phone apps, whatever. Then it all goes in the inbox which needs to be processed regularly.

To me, the most helpful idea of GTD was to separate out processing and doing. Processing doesn’t require you to do anything! All you have to do is put the thing somewhere and write the thing down on your Master List, along with where you stored it.

Since I typically have thousands on my phone and thousands on my computer, I’d consider the problem solved if I only had 70 on each!

Lol, scary to me too!

70 is like the bare minimum that I’d have after using the browser for an hour or two…

Agreed. I long since have come to terms with the fact that filing things away somewhere (such as Pocket) is as good as discarding it completely. (“As good as”, in all the senses: it does in fact give same benefit of reduced clutter that discarding gives, for the same reasons.)

But I want to do one better than that: I want to actually read them, or at least make the conscious decision on a case-by-case basis about if to discard each individual one.

The end result is this:

That’s tracks the number of browser tabs I have open: I generally keep the graph more zoomed in than that, but that’s my progress over the last year and a half, with a few short breaks (each time ending up with a number of tabs that has skyrocketed back up, but that’s fine: more for me to read.)


  1. This tracks open tabs, as opposed to anything to do with reading. The -2/day rate means that I must close two tabs per day, not read two per day. If there is anything I end up deciding I don’t actually want to read (and there is a fair amount of that) I just close it. Not only without any guilt, but with the pleasure of getting to mark off a tab without doing much work.
  2. This tracks the total number of tabs, not individual tabs. A rate of -2/day doesn’t mean “read two things each day”: it means “read two more things each day than the number you open”. It’s not unusual for me to read thirty or forty tabs in a given day, but to still end up with only two or so less tabs open total. That’s great too: I read a lot, and I feel no rush to read any given thing.

The feeling of never being rushed to read anything in particular, but always be making incremental progress, is really great. I know that I won’t get buried under an avalanche of tabs, like I would if I didn’t have this goal. (See on the graph, for instance, how many tabs I added in the span of a month or two on the occasions I paused the goal for a bit.)

And yes—the fact that I don’t have any pressure on me to read specifically the older tabs means that I have some number that have been open a while: looking at my log of open tabs, I find that I have 5 tabs that have remained open since May 2017. But so what? I’ll get to them and either read them or close them at some point, and until then they aren’t doing any harm. (At least not more harm than any other tab!)

Having 1000+ open tabs is a bit of a superpower: I am never at a loss for what to read! And with the Tree Style Tabs browser extension, they are organized and easily accessible.

Tree Style Tabs is really the secret sauce that makes this all work: if my tabs were organized linearly across the top of my screen like they are without Tree Style Tabs I almost certainly couldn’t do things the way I do. Tree Style Tabs makes tabs be an organizational system as good as any other, and better than most: even things like Pocket end up as a linear list. It may be theoretically possible to add tags or whatnot, but in practice: a) you don’t; and b) it would be a major investment of effort to tag each and every one.

But with Tree Style tabs, the tabs form themselves into natural hierarchies, with all the tabs you opened from the same parent tab nestled together underneath it. You can also rearrange tabs if you want, dragging them into trees of your own devising; that’s a nice capability to have when you want it, but it’s even better to mostly not need it, as the tabs arrange themselves into reasonably organized shapes without any effort.

Besides all that, because the tabs are arranged vertically, it’s incredibly easy to cast an eye over them and pick out what to read: not only do more fit in the viewport at once, but also when the do the titles on the tabs remain fully visible!

But perhaps the best of all the advantages that Tree Style Tabs has as an organizational system, way beyond Pocket, bookmarks, or any other such system you may propose, is that there is no context switching needed. If I step away from the computer for a second or for a day, the tabs remain right there, in the place they need to be both for the short term and for the long term. I never need to decide to switch an open page between the two states: with tabs, there’s only one state. (As opposed to, say, a tabs+bookmarks system, where you bookmark and close all tabs you want to save for another day, which would require you both to make an active decision to transition each one both in the tab -> bookmark direction, and then later in the bookmark -> tab direction.)


I think we’ve discussed this before a few times, but this just isn’t my experience with having hundreds or thousands of tabs. I use Tree Style Tab also, but it doesn’t work well as an organizational system for me - I need to put them somewhere else in order to deal with them and process them. I’m not really sure I can explain why, but I think part of it is that my brain associates it with reading webpages and opening new tabs, rather than processing and sorting them?

To me this is the biggest disadvantage. I get a panicky feeling from scrolling back up over them and having them all just there.

So my graph would be the opposite of yours - it gradually builds up to a few thousand or so, then I dump them all in a list to go through, then it builds up again, and so on.

Now I just need to work on going through the list!

Also, how are you Beeminding tabs?

1 Like

Yeah, it’s come up a few time in the past. Sure, I guess different people have different reactions to such things—for me, all panicky feeling I had before about being overwhelmed with tabs went away as soon as I know that I had a commitment to whittle them away, and would eventually get to them.

The same techniques don’t always work for everyone, so we might as well each describe our own techniques, and anyone else who is interested can perhaps come up with some variant that works for them!

Firefox keeps a json file with the recovery state for the browser, in sessionstore-backups/recovery.jsonlz4 in the profile directory. It’s compressed with a weird variant of lz4. I’ve been using to decompress it, but I actually now see that the repo no longer exists (but claims to be doing the same thing.)

In any case jq -r ".windows[].tabs[].entries[-1].url" on the decompressed file gives a list of the urls of all open tabs.

I have a script that runs automatically every night, which generates that list of urls and uploads it to tarsnap. I’ve got so many tabs that loosing them would be a disaster—backing up the list of open tabs is essential for my peace of mind.

Also, I’ve set up a hotkey on my computer to run the script that generates the list, and count the unique urls, showing me the result with notify-send in a little toast message.

I just as easily could have it submit a datapoint to Beeminder, but I prefer to be in the loop—I want my progress (or lack thereof) on this to not be easily ignored. So every evening I enter the datapoint into Beeminder manually (after tapping the hotkey combination that shows me the toast with the count.)


@zzq would you help me set up something to Beemind tabs? I want to Beemind the number of bookmarks in a specific bookmarks folder and set up a script to automatically do it - how can I do that?

1 Like
How I got there...

@zzq Here’s where I am now. I am using NextCloud to sync the Firefox files to my server.

There are two that look promising: recovery.jsonlz4 and the jsonlz4 files in bookmarkbackups/

Then, I am trying to use that link you gave me, mozlz4a, to decompress them.

But, the files I get when I decompress them look very strange, with all sorts of bizarre characters in between the links and so forth. I am not sure how that happened, but they don’t look like JSON files and jq is giving me parsing errors.


OH - decompressing the file rather than compressing it again might help, haha! :joy:

I need the -d in there…

Edit 2:

Ok, so I was able to replicate what you did, with running jq -r ".windows[].tabs[].entries[-1].url" on the decompressed sessionstore-backups/recovery.jsonlz4 file and getting a list of the urls of all open tabs.

Now I just need to try to figure out a jq command to run on the bookmarkbackups/ files to get a list of bookmarks, and filter for the ones in the folder I need.

Edit 3:

I figured it out! This works:

jq -r ".children" output.json | grep moz-place\" | wc -l


The only problem is that these are daily backups, so it doesn’t give me current figures. Now I have to figure out where the current bookmarks are stored…

Edit 4:

It looks like they’re stored in places.sqlite - which is, obviously, an SQLite database. I can’t really extract bookmarks from that can I? So maybe there’s a way to tell firefox to do the bookmark backups more often…

Edit 5:

*reads about sqlite*

Oh, hey, it’s easier than I thought:

  1. sync places.sqlite to the server
  2. sqlite3 places.sqlite "select count(*) from moz_bookmarks"
1 Like

I’m in the “overload paralysis” school of thought about the tab mountain. I try and record elsewhere when a web page is something I think I’ll want to refer back to, but fear of losing my train of thought stopped me from ever closing most tabs down and it all got to be an overload in itself. Someone on this forum mentioned the One Tab browser extension a while back and I tried it out and have become a massive fan.

I just hit the “one tab” button regularly, always in the morning or whenever I feel like I need a clean slate through the day, and all my tabs are saved for me leaving me with a clean browser. I can search through the list if I want to find something specific again. I can hit “restore all” and get back to the tabs I had open at a given previous time (I have it set in the options to save a tab in the list even if it’s already somewhere on the big long list). I used to spend ages searching through my browser history for that one page I saw that one time with that one thing on, now I just leave those pages open and they get remembered for me in a much more logical way than happens with your browser’s default history list.

I don’t think my browser tab mountain needs processing, I don’t think it needs Beeminding, it just needed to be out there somewhere where I can look at the view again when I feel like it.

I guess I do a tiny bit of processing by keeping a long running journal where I try to keep track very succintly of all the weird rabbit holes of research I vanish down numerous times a day which helps locate the right tabs in the list when I want to find them again, but that’s more of a diary thing than a processing thing.


Seems like you got more or less to the solution I was going to recommend. But note that this query counts the total number of bookmarks, not the number in a given folder.

For that, I’d go with a query like this:

SELECT p.url
  FROM moz_bookmarks AS b
   INNER JOIN moz_places AS p
     ON =
   INNER JOIN moz_bookmarks AS folder
     ON = b.parent
  WHERE folder.title = 'Folder name goes here';

(Insert the appropriate folder name, of course.)

This outputs the urls of all the bookmarks in folders with the appropriate name. (Note that if you have multiple folders with that name, it will take the bookmarks from all of them. Also note that it only take bookmarks that are in such a folder directly, not those that are in subfolders.)

If you really want, replace SELECT p.url with SELECT count(*) to get the count directly. But on the unix principle of small, composable tools, I prefer listing the urls, and then piping that into to wc -l to count them—it gives the extra flexibility of allowing extra steps in the middle: say, perhaps, piping it thorough sort -u to get rid of duplicates. Or not, as you choose, but it’s kind of nice to have the option to do that or anything else in the middle.

1 Like

Oh wow, thank you so much for that! I like the idea of piping through wc -l and sort -u.

I’m a little confused - I thought moz_places was the history? Why are we joining with that?

Right now I have them in a two-level structure where I have a main folder, which contains folders 1 through N, and then the bookmarks are all in folders 1 through N. How would I get a list of all the grandchildren urls? Would I just use b.parent.parent ?


I’ve been playing with this, and it seems to work just fine without that extra inner join with moz_places - that is, this gives me the correct answers:

select count(*) from moz_bookmarks as b inner join moz_bookmarks as folder on = b.parent where folder.title = "1";

And this seems like it works for counting grandchildren:

select count(*) from moz_bookmarks as b inner join moz_bookmarks as folder on = b.parent inner join moz_bookmarks as parentfolder on = folder.parent where parentfolder.title = "Filled";

Am I missing anything? What is the join with moz_places supposed to do?

Thank you again for all your help btw - I’ve never played with SQL before!

Firefox has this weird internal “places” abstraction, which consists of both history and bookmarks. Yeah, it’s strange, but that’s how you get the URL for a bookmark.

On the one hand, yes, but on the other hand, there are two reasons to join with moz_places:

  1. That’s the only way to get the URLs, if you want to dedup them with sort -u or whatever.
  2. It ensures that you’re only counting bookmarks that have URLs—that is, actual bookmarks, as opposed to folders. An entry in moz_bookmarks can represent either, but only actual bookmarks have an entry in moz_places.

There are other ways to arrange for that second reason—you could for instance add to the where clause an and is null restriction—but given that this join also gives you the first, I’d recommend it. Beyond anything else, outputting the list of URLs makes the script composable, and thus reusable in other contexts. (Like, maybe you want to also write another script that every morning emails you a random link from this bookmark folder, or something like that. Or really, anything you can think of.)

Keep in mind that b.parent is just a plain-old integer. There is no reason that .parent on an integer should possibly work. But what this integer represents is the id of the parent folder record, which allows you to fetch that parent folder record using a join.

Indeed, that’s the way to do it, with the extra join. Note though that this only counts grandchildren, not children or great-grandchildren, but that’s probably what you want anyway.

If you want to count descendants of an arbitrary depth (children, plus grandchildren, plus great-grandchildren, etc), you could do that using a recursive CTE. But recursive CTEs rightfully have a reputation for being one of the more advanced corners of SQL, so perhaps it might be more than you’d want to tackle right now, especially if the grandchildren-only query does what you want.

1 Like

Wow, I just noticed that and clicked on that link, and Tarsnap is amazing! I’d been looking for a way to back up everything I had regularly without needing ridiculous amounts of space for each new backup. Thank you for that!

I am auto-beeminding my number of bookmarks, but not really doing anything with them, as my tab list is growing again… I think I need to auto-beemind (bookmarks + tabs) instead, so I my have to make use of your earlier suggestion for how to do that:

I really need to start going through all my bookmarks with Keep or Delete Bookmarks – Get this Extension for 🦊 Firefox (en-US) or something.

1 Like