diff --git a/.config/newsboat/my_urls b/.config/newsboat/my_urls
index 0ad8d96e..e38d9412 100644
--- a/.config/newsboat/my_urls
+++ b/.config/newsboat/my_urls
@@ -67,3 +67,4 @@ file://./rss/wizard_zines.xml
file://./rss/philosophize_this.xml
file://./rss/matthew_manela.rss
file://./rss/david_heinemeier_hansson.atom
+file://./rss/tonsky.me.xml
diff --git a/.config/newsboat/rss/tonsky.me.xml b/.config/newsboat/rss/tonsky.me.xml
new file mode 100644
index 00000000..f22b656a
--- /dev/null
+++ b/.config/newsboat/rss/tonsky.me.xml
@@ -0,0 +1,1625 @@
+
+
++There Ain’t No Such Thing As Plain Text.
+It does not make sense to have a string without knowing what encoding it uses. You can no longer stick your head in the sand and pretend that “plain” text is ASCII.
+
A lot has changed in 20 years. In 2003, the main question was: what encoding is this?
+In 2023, it’s no longer a question: with a 98% probability, it’s UTF-8. Finally! We can stick our heads in the sand again!
+
The question now becomes: how do we use UTF-8 correctly? Let’s see!
+Unicode is a standard that aims to unify all human languages, both past and present, and make them work with computers.
+In practice, Unicode is a table that assigns unique numbers to different characters.
+For example:
+A is assigned the number 65.س is 1587.ツ is 12484𝄞 is 119070.💩 is 128169.Unicode refers to these numbers as code points.
+Since everybody in the world agrees on which numbers correspond to which characters, and we all agree to use Unicode, we can read each other’s texts.
+Unicode == character ⟷ code point.
+Currently, the largest defined code point is 0x10FFFF. That gives us a space of about 1.1 million code points.
+About 170,000, or 15%, are currently defined. An additional 11% are reserved for private use. The rest, about 800,000 code points, are not allocated at the moment. They could become characters in the future.
+Here’s roughly how it looks:
+
Large square == plane == 65,536 characters. Small one == 256 characters. The entire ASCII is half of a small red square in the top left corner.
+These are code points reserved for app developers and will never be defined by Unicode itself.
+For example, there’s no place for the Apple logo in Unicode, so Apple puts it at U+F8FF which is within the Private Use block. In any other font, it’ll render as missing glyph , but in fonts that ship with macOS, you’ll see
.
The Private Use Area is mostly used by icon fonts:
+
U+1F4A9 mean?It’s a convention for how to write code point values. The prefix U+ means, well, Unicode, and 1F4A9 is a code point number in hexadecimal.
Oh, and U+1F4A9 specifically is 💩.
UTF-8 is an encoding. Encoding is how we store code points in memory.
+The simplest possible encoding for Unicode is UTF-32. It simply stores code points as 32-bit integers. So U+1F4A9 becomes 00 01 F4 A9, taking up four bytes. Any other code point in UTF-32 will also occupy four bytes. Since the highest defined code point is U+10FFFF, any code point is guaranteed to fit.
UTF-16 and UTF-8 are less straightforward, but the ultimate goal is the same: to take a code point and encode it as bytes.
+Encoding is what you’ll actually deal with as a programmer.
+UTF-8 is a variable-length encoding. A code point might be encoded as a sequence of one to four bytes.
+This is how it works:
+| Code point | +Byte 1 | +Byte 2 | +Byte 3 | +Byte 4 | +
|---|---|---|---|---|
U+0000..007F |
+ 0xxxxxxx |
+ |||
U+0080..07FF |
+ 110xxxxx |
+ 10xxxxxx |
+ ||
U+0800..FFFF |
+ 1110xxxx |
+ 10xxxxxx |
+ 10xxxxxx |
+ |
U+10000..10FFFF |
+ 11110xxx |
+ 10xxxxxx |
+ 10xxxxxx |
+ 10xxxxxx |
+
If you combine this with the Unicode table, you’ll see that English is encoded with 1 byte, Cyrillic, Latin European languages, Hebrew and Arabic need 2, and Chinese, Japanese, Korean, other Asian languages, and Emoji need 3 or 4.
+A few important points here:
+First, UTF-8 is byte-compatible with ASCII. The code points 0..127, the former ASCII, are encoded with one byte, and it’s the same exact byte. U+0041 (A, Latin Capital Letter A) is just 41, one byte.
Any pure ASCII text is also a valid UTF-8 text, and any UTF-8 text that only uses codepoints 0..127 can be read as ASCII directly.
+Second, UTF-8 is space-efficient for basic Latin. That was one of its main selling points over UTF-16. It might not be fair for texts all over the world, but for technical strings like HTML tags or JSON keys, it makes sense.
+On average, UTF-8 tends to be a pretty good deal, even for non-English computers. And for English, there’s no comparison.
+Third, UTF-8 has error detection and recovery built-in. The first byte’s prefix always looks different from bytes 2-4. This way you can always tell if you are looking at a complete and valid sequence of UTF-8 bytes or if something is missing (for example, you jumped it the middle of the sequence). Then you can correct that by moving forward or backward until you find the beginning of the correct sequence.
+And a couple of important consequences:
+Those who do will eventually meet this bad boy: �
+U+FFFD, the Replacement Character, is simply another code point in the Unicode table. Apps and libraries can use it when they detect Unicode errors.
If you cut half of the code point off, there’s not much left to do with the other half, except displaying an error. That’s when � is used.
+var bytes = "Аналитика".getBytes("UTF-8");
+var partial = Arrays.copyOfRange(bytes, 0, 11);
+new String(partial, "UTF-8"); // => "Анал�"
+NO.
+UTF-32 is great for operating on code points. Indeed, if every code point is always 4 bytes, then strlen(s) == sizeof(s) / 4, substring(0, 3) == bytes[0, 12], etc.
The problem is, you don’t want to operate on code points. A code point is not a unit of writing; one code point is not always a single character. What you should be iterating on is called “extended grapheme clusters”, or graphemes for short.
+A grapheme is a minimally distinctive unit of writing in the context of a particular writing system. ö is one grapheme. é is one too. And 각. Basically, grapheme is what the user thinks of as a single character.
The problem is, in Unicode, some graphemes are encoded with multiple code points!
+
For example, é (a single grapheme) is encoded in Unicode as e (U+0065 Latin Small Letter E) + ´ (U+0301 Combining Acute Accent). Two code points!
It can also be more than two:
+☹️ is U+2639 + U+FE0F👨🏭 is U+1F468 + U+200D + U+1F3ED🚵🏻♀️ is U+1F6B5 + U+1F3FB + U+200D + U+2640 + U+FE0Fy̖̠͍̘͇͗̏̽̎͞ is U+0079 + U+0316 + U+0320 + U+034D + U+0318 + U+0347 + U+0357 + U+030F + U+033D + U+030E + U+035EThere’s no limit, as far as I know.
+Remember, we are talking about code points here. Even in the widest encoding, UTF-32, 👨🏭 will still take three 4-byte units to encode. And it still needs to be treated as a single character.
If the analogy helps, we can think of the Unicode itself (without any encodings) as being variable-length.
+An Extended Grapheme Cluster is a sequence of one or more Unicode code points that must be treated as a single, unbreakable character.
+Therefore, we get all the problems we have with variable-length encodings, but now on code point level: you can’t take only a part of the sequence, it always should be selected, copied, edited, or deleted as a whole.
+Failure to respect grapheme clusters leads to bugs like this:
+
or this:
+Using UTF-32 instead of UTF-8 will not make your life any easier in regards to extended grapheme clusters. And extended grapheme clusters is what you should care about.
+Code points — 🥱. Graphemes — 😍
+Not really. Extended Grapheme Clusters are also used for alive, actively used languages. For example:
+ö (German) is a single character, but multiple code points (U+006F U+0308).ą́ (Lithuanian) is U+00E1 U+0328.각 (Korean) is U+1100 U+1161 U+11A8.So no, it’s not just about emojis.
+The question is inspired by this brilliant article.
+Different programming languages will happily give you different answers.
+Python 3:
+>>> len("🤦🏼♂️")
+5
+JavaScript / Java / C#:
+>> "🤦🏼♂️".length
+7
+Rust:
+println!("{}", "🤦🏼♂️".len());
+// => 17
+As you can guess, different languages use different internal string representations (UTF-32, UTF-16, UTF-8) and report length in whatever units they store characters in (ints, shorts, bytes).
+BUT! If you ask any normal person, one that isn’t burdened with computer internals, they’ll give you a straight answer: 1. The length of 🤦🏼♂️ string is 1.
That’s what extended grapheme clusters are all about: what humans perceive as a single character. And in this case, 🤦🏼♂️ is undoubtedly a single character.
The fact that 🤦🏼♂️ consists of 5 code points (U+1F926 U+1F3FB U+200D U+2642 U+FE0F) is mere implementation detail. It should not be broken apart, it should not be counted as multiple characters, the text cursor should not be positioned inside it, it shouldn’t be partially selected, etc.
For all intents and purposes, this is an atomic unit of text. Internally, it could be encoded whatever, but for user-facing API, it should be treated as a whole.
+The only modern language that gets it right is Swift:
+print("🤦🏼♂️".count)
+// => 1
+Basically, there are two layers:
+.count or .substring. Swift gives you a view that pretends the string is a sequence of grapheme clusters. And that view behaves like any human would expect: it gives you 1 for "🤦🏼♂️".count.I hope more languages adopt this design soon.
+Question to the reader: what to you think "ẇ͓̞͒͟͡ǫ̠̠̉̏͠͡ͅr̬̺͚̍͛̔͒͢d̠͎̗̳͇͆̋̊͂͐".length should be?
Unfortunately, most languages choose the easy way out and let you iterate through strings with 1-2-4-byte chunks, but not with grapheme clusters.
+It makes no sense and has no semantics, but since it’s the default, programmers don’t think twice, and we see corrupted strings as the result:
+
“I know, I’ll use a library to do strlen()!” — nobody, ever.
+But that’s exactly what you should be doing! Use a proper Unicode library! Yes, for basic stuff like strlen or indexOf or substring!
For example:
+TextElementEnumerator, which is kept up to date with Unicode as far as I can tell.But whatever you choose, make sure it’s on the recent enough version of Unicode (15.1 at the moment of writing), because the definition of graphemes changes from version to version. For example, Java’s java.text.BreakIterator is a no-go: it’s based on a very old version of Unicode and not updated.
Use a library
+IMO, the whole situation is a shame. Unicode should be in the stdlib of every language by default. It’s the lingua franca of the internet! It’s not even new: we’ve been living with Unicode for 20 years now.
+Yes! Ain’t it cool?
+(I know, it ain’t)
+Starting roughly in 2014, Unicode has been releasing a major revision of their standard every year. This is where you get your new emojis from — Android and iOS updates in the Fall usually include the newest Unicode standard among other things.
+
What’s sad for us is that the rules defining grapheme clusters change every year as well. What is considered a sequence of two or three separate code points today might become a grapheme cluster tomorrow! There’s no way to know! Or prepare!
+Even worse, different versions of your own app might be running on different Unicode standards and report different string lengths!
+But that’s the reality we live in. You don’t really have a choice here. You can’t ignore Unicode or Unicode updates if you want to stay relevant and provide a decent user experience. So, buckle up, embrace, and update.
+Update yearly
+
Copy any of these to your JavaScript console:
+"Å" === "Å"
+"Å" === "Å"
+"Å" === "Å"
+What do you get? False? You should get false, and it’s not a mistake.
+Remember earlier when I said that ö is two code points, U+006F U+0308? Basically, Unicode offers more than one way to write characters like ö or Å. You can:
Å from normal Latin A + a combining character,U+00C5 that does that for you.They will look the same (Å vs Å), they should work the same, and for all intents and purposes, they are considered exactly the same. The only difference is the byte representation.
That’s why we need normalization. There are four forms:
+NFD tries to explode everything to the smallest possible pieces, and also sorts pieces in a canonical order if there is more than one.
+NFC, on the other hand, tries to combine everything into pre-composed form if one exists.
+
For some characters there are also multiple versions of them in Unicode. For example, there’s U+00C5 Latin Capital Letter A with Ring Above, but there’s also U+212B Angstrom Sign which looks the same.
These are also replaced during normalization:
+
NFD and NFC are called “canonical normalization”. Another two forms are “compatibility normalization”:
+NFKD tries to explode everything and replaces visual variants with default ones.
+NFKC tries to combine everything while replacing visual variants with default ones.
+
Visual variants are separate Unicode code points that represent the same character but are supposed to render differently. Like, ① or ⁹ or 𝕏. We want to be able to find both "x" and "2" in a string like "𝕏²", don’t we?

Why does the fi ligature even have its own code point? No idea. A lot can happen in a million characters.
Before comparing strings or searching for a substring, normalize!
+The Russian name Nikolay is written like this:
+
and encoded in Unicode as U+041D 0438 043A 043E 043B 0430 0439.
The Bulgarian name Nikolay is written:
+
and encoded in Unicode as U+041D 0438 043A 043E 043B 0430 0439. Exactly the same!
Wait a second! How does the computer know when to render Bulgarian-style glyphs and when to use Russian ones?
+Short answer: it doesn’t. Unfortunately, Unicode is not a perfect system, and it has many shortcomings. Among them is assigning the same code point to glyphs that are supposed to look differently, like Cyrillic Lowercase K and Bulgarian Lowercase K (both are U+043A).
From what I understand, Asian people get it much worse: many Chinese, Japanese, and Korean logograms that are written very differently get assigned the same code point:
+
Unicode motivation is to save code points space (my guess). Information on how to render is supposed to be transferred outside of the string, as locale/language metadata.
+Unfortunately, it fails the original goal of Unicode:
+++[...] no escape sequence or control code is required to specify any character in any language.
+
In practice, dependency on locale brings a lot of problems:
+
String::toLowerCase() accepts Locale as an argument?Another unfortunate example of locale dependence is the Unicode handling of dotless i in the Turkish language.
Unlike English, Turks have two I variants: dotted and dotless. Unicode decided to reuse I and i from ASCII and only add two new code points: İ and ı.
Unfortunately, that made toLowerCase/toUpperCase behave differently on the same input:
var en_US = Locale.of("en", "US");
+var tr = Locale.of("tr");
+
+"I".toLowerCase(en_US); // => "i"
+"I".toLowerCase(tr); // => "ı"
+
+"i".toUpperCase(en_US); // => "I"
+"i".toUpperCase(tr); // => "İ"
+So no, you can’t convert string to lowercase without knowing what language that string is written in.
+
“ ” ‘ ’, ’,– —,• ■ ☞,$ (kind of tells you who invented computers, doesn’t it?): € ¢ £,+ and equals = are part of ASCII, but minus − and multiply × are not ¯\_(ツ)_/¯,© ™ ¶ † §.Hell, you can’t even spell café, piñata, or naïve without Unicode. So yes, we are all in it together, even Americans.
Touché.
+That goes back to Unicode v1. The first version of Unicode was supposed to be fixed-width. A 16-bit fixed width, to be exact:
+
They believed 65,536 characters would be enough for all human languages. They were almost right!
+When they realized they needed more code points, UCS-2 (an original version of UTF-16 without surrogates) was already used in many systems. 16 bit, fixed-width, it only gives you 65,536 characters. What can you do?
+Unicode decided to allocate some of these 65,536 characters to encode higher code points, essentially converting fixed-width UCS-2 into variable-width UTF-16.
+A surrogate pair is two UTF-16 units used to encode a single Unicode code point. For example, D83D DCA9 (two 16-bit units) encodes one code point, U+1F4A9.
The top 6 bits in surrogate pairs are used for the mask, leaving 2×10 free bits to spare:
+ High Surrogate Low Surrogate
+ D800 ++ DC00
+1101 10?? ???? ???? ++ 1101 11?? ???? ????
+Technically, both halves of the surrogate pair can be seen as Unicode code points, too. In practice, the whole range from U+D800 to U+DFFF is allocated as “for surrogate pairs only”. Code points from there are not even considered valid in any other encodings.

Yes!
+The promise of a fixed-width encoding that covers all human languages was so compelling that many systems were eager to adopt it. Among them were Microsoft Windows, Objective-C, Java, JavaScript, .NET, Python 2, QT, SMS, and CD-ROM!
+Since then, Python has moved on, CD-ROM has become obsolete, but the rest is stuck with UTF-16 or even UCS-2. So UTF-16 lives there as in-memory representation.
+In practical terms today, UTF-16 has roughly the same usability as UTF-8. It’s also variable-length; counting UTF-16 units is as useless as counting bytes or code points, grapheme clusters are still a pain, etc. The only difference is memory requirements.
+The only downside of UTF-16 is that everything else is UTF-8, so it requires conversion every time a string is read from the network or from disk.
+Also, fun fact: the number of planes Unicode has (17) is defined by how much you can express with surrogate pairs in UTF-16.
+To sum it up:
+strlen, indexOf and substring.Overall, yes, Unicode is not perfect, but the fact that
+is a miracle. Send this to your fellow programmers so they can learn about it, too.
+There’s such a thing as plain text, and it’s encoded with UTF-8.
+Thanks Lev Walkin and my patrons for reading early drafts of this article.
+ +]]> +Quick context:
+:none and :advanced.:none is what you are supposed to develop with.:advanced is what you ship: smaller bundle size, stripped of unused code, better performance, worse stacktraces.So, I was complaining about compilation times and ergonomics of using :advanced mode and other devs could not understand me. Apparently, they all work in :none and their experience is much better.
This is where an interesting chain of cause and effect starts that leads (in my opinion) to what ultimately should become ClojureScript 2.0.
+You see, the very existence of :advanced mode means you can’t really develop in :none.
I know, sounds like clickbait. Let’s unpack.
+First, :advanced does not just packages your code and trims the bundle size. It also improves its performance and can change its behavior.
Better performance is fine, of course. Who doesn’t love a little bit of extra speed that computer gives you for free, with no work from your side?
+(Rich Hickey, for one. He once famously made a case why last should be slow where it could’ve been faster.)
Unless you are doing benchmarking (as I was), so you have to rely on :advanced and have to suffer worse experiences with everything else because of that.
You see, most bundlers (to my knowledge, I might be ignorant here) try to do the best they can while not changing the behavior of your code. For example, if they can prove some code is unused, only then will they remove it. If they can’t, the code stays. Better safe than sorry.
+Google Closure is different. Google Closure actively tries to destroy your code. You have to work against it to prove that your code is, in fact, used. Or that it shouldn’t be changed. Or that if you access, for example, className property on a JS object, it should stay named className and not be renamed to some fy or worse. The presumption of innocence does not apply here.
From ShadowCLJS README:
+++Ideally we want to use
+:closureas our primary JS Provider since that will run the entire application through:advancedgiving us the most optimized output. In practice however lots of code available via npm is not compatible with the aggressive optimizations that:advancedcompilation does. They either fail to compile at all or expose subtle bugs at runtime that are very hard to identify.
DataScript, unfortunately, is one of those libraries that need externs. Not because we do some weird shit there, but because of the nature of the problem.
+Basically, queries are data, and data doesn’t get munged by Google Closure. But datoms are classes so their fields are getting munged by default. That’s why we have to write externs to work around that.
It’s not always bad, though. I’ve heard stories that people can develop whole applications without ever experiencing this problem.
+I’ve also heard that there’s some “AI magic” (meaning: highly indeterministic heuristics) that is supposed to “automagically” detect cases like that and just “do the right thing™”.
+Which is supposed to be good, right?
+Well, not exactly. The fact that auto-deduced externs exist means people might forget that externs are sometimes essential for ClojureScript code to work.
+For example, ShadowCLJS, one of the most popular ClojureScript dev tools today, ignores hand-written externs by default. Because they are supposed to be “automatically deduced”. And it works. Until it doesn’t. As you can guess, their users then come to me claiming that “DataScript is broken”.
Well, it is. But I didn’t break it. It’s the way we do things is broken.
+BTW, did I tell you that upgrading your ClojureScript version might break things in new and exciting ways? Because it updates Google Closure, too, and the extern-deducing algorithm might change unpredictably between versions. And then it’s your problem, because, well, we didn’t really promise you anything, did we?
+The ultimate promise of Google Closure compilation is: your code might work. It might not. It also might change between versions. Good luck.
+When ClojureScript started, the main premise was that people will build websites with it.
+After 10 years, I’d say that ClojureScript is best suited for web apps, not pages. The minimal bundle size, the performance—you won’t really put stuff like that on your landing page.
+But a productivity app? Custom editor? Some complex UI? Sure! People don’t really care about bundle size in that case. They are already committed to using it, they have a JS bundle probably cached (unless you release 10 times a day), so it’s much less of a problem.
+What I’m saying is: since we are not getting into really super-small, super high-perf, low overhead JS territory, maybe we can relax our constraints a little and choose a less aggressive bundler? The one that maybe produces slightly less optimal code, but code that doesn’t subtly and unexpectedly break?
+Is there really a difference between, say, a 500k bundle and a 1M bundle? A practical one? One that users will definitely notice in a meaningful way?
+:none mode?It might seem that having more options is always better. Hey, do you want small bundle sizes and good perf? We got you covered. Great dev experience? We’ve got you too!
+And that is partially true. For app developers, at least. I think some people just ship :none mode and it works for them. Why wouldn’t it?
For library authors, it’s worse. Because :advanced mode exists, just the fact of its existence, means we have to take it into account. We don’t really get to choose. People use it → we have to support it. In some sense having more options made life harder for us.
You can always look at a choice like that two ways. Tesla can charge your car for free or replace your battery with no waiting time. Free or fast, says Elon Musk. But it’s also a choice between slow or paid. PS5 games have performance mode or quality mode. A good picture or fast gameplay. Or: big latency or worse picture? You don’t just choose good parts here. You also choose bad ones.
+It’s very interesting to look at what JVM Clojure is doing differently. This is how my rant on Twitter started, actually: I was wondering why on JVM, which is designed for statically-typed languages, the Clojure experience is much more dynamic than on JS, where it’s almost comparable with C++ development (long building times, lots of options, bad stacktraces, etc)?
+Well, because ClojureScript accidentally complected two things: performance optimizations and minification. I know Clojure devs are trained to be scared of the word “complected”, and its use here is intentional: I am trying to scare you.
+Look at Clojure experience. I develop without any notion of jars, classes, paths, etc. There are no compilation options either. It Just Works™. When the time comes, I can compile my Clojure classes (or not) and package everything into a jar, which I then ship.
+So there are two modes on JVM Clojure as well: dev mode and prod mode. Yet the dev code behaves exactly how it will in production. There’s no compromise. No choice to make. I can safely work in dev mode until the time comes to ship my code. And I know I don’t even need to check it a second time—it’ll just work. It’s guaranteed to work, even though the storage format (jar) is different.
+Why can’t it be that way in ClojureScript? Because it uses Google Closure for both bundle size and performance optimizations.
+You see, the ClojureScript compiler outputs less performant code and relies on Google Closure to improve its performance. So even if you personally are ok with larger bundles, it’s still really hard to leave free performance on the table.
+So what am I proposing? Basically,
+JS is an ecosystem. A strange one, but a huge one, too. So it was a very strange choice to ignore it completely or make it really hard to use. One of the selling points of JVM Clojure always was: to use whatever Java libraries you need. Using Java from Clojure is easier than from Java (not kidding).
+Whereas in ClojureScript it’s more like: don’t use JS libraries. It’s very hard. There are a million “buts”. Are you in node or a browser?
+That’s not the spirit, I would say.
+And no matter what Rich Hickey's reasoning was, Google Closure is not part of the JS ecosystem. Nobody uses it, except, maybe, for Google.
+Getting rid of Google Closure will make interop with JS much simpler (as far as I understand). So we will only potentially lose a little bit in bundle sizes and (maybe) performance? But there are so many low-hanging performance fruits in ClojureScript anyways maybe nobody will notice.
+What’s important is what we’ll gain:
+I fell in love with Clojure because of how simple everything was. To this day I’m still reflecting on how the same things are unnecessarily complicated in other languages.
+And I wish the same for ClojureScript users, I want them to feel the same transformative experience.
+I know getting rid of Google Closure is a huge step. I’m not even sure if that’s possible in the current implementation or the current ecosystem.
+That’s why I called this post ClojureScript 2.0. It’s a huge change. Lots of work. But I believe it’s the right path.
+I also believe Michiel Borkent is working in the right direction with Cherry 🍒. I don’t know all the details but it looks like how I imagined the Clojure compiler for JavaScript should look like. So maybe help him out?
+All in all, the goal of this post was not to diss on ClojureScript. It’s absolutely great that it exists, and its existence has been paying my bills for the last seven(-ish?) years at least. I just was excited that I finally saw how a very early decision (use Google Closure) eventually led to “Clojure feels like the future, ClojureScript feels like developing C++” in some cases. I hope I described that path clearly enough and it’s of interest to you too.
+Again, I’m not saying it’s wrong, bad, or anything, or that anybody should’ve predicted it. It took me 10 years to realize what was going on. I only hope it will help someone in the future if any new initiatives get developed.
+Peace.
+ +]]>And I did. I implemented a reactive/incremental computation engine (signals) and wrote a simple TodoMVC in it. Following are my thoughts on it.
+The idea behind signals is very simple: you declare some mutable (!) data sources:
+(s/defsignal *width
+ 16)
+
+(s/defsignal *height
+ 9)
+And then create a derived (computed) state that depends on those:
+(s/defsignal *area
+ (println "Computing area of" @*width "x" @*height)
+ (* @*width @*height))
+Now, the first time you dereference *area, it is computed:
@*area => 144
+;; Computing area of 16 x 9
+After that, any subsequent read is cached (notice the lack of stdout):
+@*area => 144
+If any of the sources change, it is marked as dirty (but not immediately recomputed):
+(s/reset! *width 20)
+But if you try to read *area again, it will recompute and cache its value again:
@*area => 180
+;; Computing area of 20 x 9
+
+@*area => 180
+;; (no println)
+You can check out implementation here and some usage examples here. The implementation is a proof-of-concept, so maybe don’t use it in production.
+The appeal of signals is that, when data changes, only the necessary minimum of computations happens. This is, of course, cool, but not entirely free — it comes at a cost of some overhead for managing the dependencies.
+I was particularly interested in using signals for Humble UI because they provide stable references. Let’s say you have a tabbed interface that has a checkbox that enables a text field:
+
Now, our state might look somewhat like this:
+(s/defsignal *tab
+ :first)
+
+(s/defsignal *checked?
+ false)
+
+(s/defsignal *text
+ nil)
+
+(s/defsignal *tab-content
+ (column
+ (ui/checkbox *checked?)
+ (when @*checked?
+ (ui/text-field *text))))
+
+(s/defsignal *app
+ (case @*tab
+ :first ...
+ :second *tab-content
+ :third ...))
+and the beauty of it is unless the user switches a tab or plays with a checkbox, *tab-content will be cached and NOT recomputed because its dependencies do not change!
And that means that no matter how many times we dereference *tab-content e.g. for rendering or layout, it will always return exactly the same instance of the checkbox and text field. As in, the same object. Same DOM node, if we were in the browser.
Cool? Cool! No diffing needed. No state tracking and positional memoization either. We can put all internal state into objects as fields and not invent any special “more persistent” storage solution at all!
+This was my main motivation to look into incremental computations. I don’t really care about optimal performance, because—how much is there to compute in UI anyways?
+And also—it’s not obvious to me that if you make every + and concat incremental it’ll be a net win because of overhead. But stable objects in a dynamic enough UI? Lack of diffing and VDOM? This is something I can use.
One of the examples where VDOM model doesn’t shine is props drilling. Imagine an app like this:
+(ui/default-theme
+ {:font-ui ...}
+ (ui/column
+ (ui/row
+ (ui/tabs
+ ...
+ (ui/tab
+ (ui/button
+ (ui/label "Hello")))))))
+The actual details don’t matter, but the point is: there’s a default theme at the very top of your app and a label somewhere deep down.
+If you pass font-ui as an argument to every component, it will create a false dependency for every intermediate container that it passes through. When the time for the update comes, the whole UI will be re-created:

In a perfect world, though, font-ui change should only affect components that actually use that font. E.g. it shouldn’t affect paddings, backgrounds, or scrolls, but should affect labels and paragraphs.
Well, incremental computation solves this problem beautifully! If you make your default font a signal, then only components that actually read it will subscribe to its changes:
+
On the other hand, how often do you change fonts in the entire app? Should it really be optimized? The question of whether this use case is important remains open.
+Now let’s dig into implementation details a little bit. What we have so far is, I believe, called reactive, but not incremental. To be called incremental we must somehow reuse, not just re-run, previous computations.
+A simple example. Imagine we have a list of todos and a function to render them. Then we can define our UI like this:
+(s/defsignal *todos
+ ...)
+
+(s/defsignal *column
+ (ui/column
+ (map render-todo @*todos)))
+This would work fine the first time, but if we add a new to-do, the whole list will be re-rendered. *todos changes, *column body gets re-executed, render-todo is applied to every todo again by map.
To solve just this problem, we could introduce incremental s/map that only re-computes the mappings that were not computed before:
(def column
+ (ui/column
+ (s/map render-todo *todos)))
+Under the hood, s/map caches previous computation and its result and, when re-evaluated, tries to reuse it as much as possible. Meaning, if it already saw the same todo before, it will return a cached version of (render-todo todo) instead of calculating it anew.
Two important things to note here. First, if we care about object identities, we have to use incremental map. Otherwise adding new todo to the end of the list will reset the internal component state of every other one. Not good!
+Second, although “incremental map” sounds fancy and smart, under the hood it does the same thing that React does: diffing. It diffs new collection against previous collection and tries to find matches.
+It is (probably) a perf win overall, but, more importantly, diff still does happen. That’s the reason why all incremental frameworks have their own versions of for/map:
+{#each arr as el}
+ <li>{el}</li>
+{/each}
+I can imagine it could be better when a diff happens on the data layer instead of on the final UI layer because generated UI is usually much larger than the source data. Either way, at least you can choose where it happens.
+The bad news is, you have to think about it, whereas in React model you usually don’t bother with such minute details at all.
+One can imagine that we’ll need incremental versions of filter, concat, reduce etc, and our users will have to learn about them and use them if they want to keep stable identities. And we’ll have to provide enough incremental versions of base core functions to keep everyone happy, and potentially teach them to write their own. Sounds harsh.
One important feature we’re missing in our incremental framework is effects.
+We implement a mixed push/pull model: recalculating values is lazy (not done until explicitly requested), but marking as dirty is eager (immediate dependencies are marked as :dirty and their transitive deps are marked with :check, which means might or might not be dirty):
(s/defsignal *a
+ 1)
+
+(s/defsignal *b
+ (+ 10 @*a))
+
+(s/defsignal *c
+ (+ 100 @*b))
+
+@*a ; => 1
+@*b ; => 11
+@*c ; => 111
+
+(:state *b) ; => :clean
+(:value *b) ; => 11
+
+(s/reset! *a 2)
+
+(:state *b) ; => :dirty
+(:value *b) ; => 11
+(:state *c) ; => :check
+(:value *c) ; => 111
+
+@*b ; => 12
+
+(:state *c) ; => :dirty
+(:value *c) ; => 111
+
+@*c ; => 112
+Or for us visual thinkers:
+
For details, see Reactively algorithm description.
+An effect is a signal that watches when it gets marked :check (something down the deps tree has changed) and forces its dependencies to see if any of them are actually :dirty. If any of them are, it evaluates its body:
(s/defsignal *a
+ 1)
+
+(s/defsignal *b
+ (mod @*a 3))
+
+(s/effect [*b]
+ (println @*a "mod 3 =" @*b))
+
+(s/reset! *a 2) ; => "2 mod 3 = 2"
+(s/reset! *a 3) ; => "3 mod 3 = 0"
+(s/reset! *a 6) ; => (no stdout: *b didn’t change)
+This is exactly what we need to schedule re-renders. We put an effect as a downstream dependency on every signal that was read during the last draw. That means we’ll create an explicit dependency for everything that affected the final picture one way or another.

Then, when any of the sources change and the redraw effect is actually a downstream dependency on it, we’ll trigger a new redraw.
+What I did have problems with is resource management. First, let’s consider something like this:
+(s/defsignal *object
+ "world")
+
+(def label
+ (s/signal (str "Hello, " @*object "!")))
+Now imagine we lose a reference to the label. Irresponsible, I know, but things happen, especially in end-user code. The simplest example: we’re in REPL and we re-evaluate (def label ...) again. What will happen?
Well, due to the nature of signals, they actually keep references to both upstream (for re-calculation) and downstream (for invalidation) dependencies. Meaning, the previous version of the signal will still be referenced from *object along with the new one:

We can introduce dispose method that could be called to unregister itself from upstream, but nobody can guarantee that users will call that in time. It’s so easy to accidentally lose a reference in a garbage-collected language!
And this is what I am struggling with. The signal network has to be dynamic. Meaning, new dependencies will come and go. But de-registering something doesn’t really feel natural in Clojure or even Java code, and there’s no way to enforce that every resource that is no longer needed will be properly disposed of.
+A common solution is to make downstream references weak. That means, if we lost all references to the dependant signal (label on the picture below), it will eventually be garbage collected.

What I don’t like about that solution (that we use anyways in the prototype) is that until GC is called, those unnecessary dependencies still hang around and take resources e.g. during downstream invalidation.
+
One idea is to dispose of signals explicitly when their component unmounts. It works for some signals, but not in general. Consider this:
+(s/defsignal *text
+ "Hello")
+
+(ui/label *text)
+*text signal is created outside of the label and shouldn’t be disposed of by it. At the same time,
(ui/label
+ (s/signal (str @*text ", world!")))
+In this case, the signal is created specifically for the label, thus should be disposed of at the same time as the label. But how to express that?
+Keep in mind that we probably want both use cases at the same time:
+(ui/column
+ (ui/header *text)
+ (ui/label
+ (s/signal (str @*text ", world!")))
+ (ui/label *text))
+Eventually, unused signals will be cleaned up by GC, so we can rely on that. I’m just not sure what sorts of problems it might cause in practice.
+Same problem I have with signals I also have with components. Because all components are values, nothing stops me from saving them in a var, using them multiple times, etc. Consider this UI:
+(s/defsignal *cond
+ true)
+
+(def the-label
+ (ui/label "Hello"))
+
+(def *ui
+ (s/signal
+ (if @*cond
+ the-label
+ (ui/label "Not hello"))))
+If we toggle *cond on and off, the-label will appear and disappear from our UI, calling on-mount and on-unmount multiple times. So if we do some resource cleanup in on-unmount, we should somehow restore it in on-mount? Feels strange, but why not?
(core/deftype+ Label [*paint *text ^:mut *line]
+ protocols/ILifecycle
+ (-on-mount-impl [_]
+ (set! *line
+ (s/signal
+ (.shapeLine
+ core/shaper
+ (str (s/maybe-read *text))
+ @*font-ui
+ ShapingOptions/DEFAULT))))
+
+ (-on-unmount-impl [_]
+ (s/dispose! *line)
+ (set! *line nil)))
+This way, if a component needs some heavy resources for rendering (textures, pre-rendered lines, or other native resources) it can clean it up and restore only when it’s actually on the screen. Or rely on GC once again (not recommended).
+Another thing that I used to take for granted since the world switched to React: lifecycle callbacks. A lot of stuff comes down to these callbacks. Enabling/disabling signals. Freeing expensive resources held by components. Users’ use cases, like setting a timer or making a fetch request. It is so convenient to be able to tie some expensive resource’s lifetime to the lifetime of a component. We certainly want these!
+How does React do it? Well, it takes mount/unmount API away from you and takes control over it, so it can guarantee to call you back at the right time.
+The solution I came up with is very simple: the component is mounted if it was drawn during render, and not mounted otherwise. At the very top level, I’m keeping track of everything that was rendered last frame and what is rendered this frame. For new stuff, -on-mount is called, for stuff that’s no longer visible, -on-unmount. The gotcha here is, as I said above, that some components might “come back” after being unmounted. I guess it’s ok?
Working with an incremental framework breaks both imperative and functional intuition. It’s a whole other thing. I made a lot of mistakes and had to think about stuff I usually don’t have to think about. Here are a few gotchas:
+Imagine we want to render a TODO from very simple EDN data:
+
We might write something like this:
+(defn render-todo [*todo]
+ (let [*text (s/signal
+ (str (:id @*todo)))]
+ (ui/label *text)))
+This render function returns a label object that has a signal as its text. So far so good.
+The problem is, we over-depend here: we only use :id from *todo but we depend on the entire thing. A better solution would be:
(defn render-todo [*todo]
+ (let [*id (s/signal (:id @*todo))
+ *text (s/signal (str *id))]
+ (ui/label *text)))
+which seems a bit too tedious to write. It probably doesn’t matter all that much in this particular case, but what if computations are more expensive?
+My point is: it’s too easy to make this mistake.
+Ambrose Bonnaire-Sergeant has pointed out that Reagent and CljFX solve this by providing an explicit API:
+@(subscribe [:items])
+Imagine you have a UI like this:
+
You have a signal that is hooked up to your text field and a button that converts it into a label:
+(s/defsignal *text
+ "Your name")
+
+(s/defsignal *list
+ [])
+
+(def app
+ (ui/column
+ (s/mapv ui/label *list)
+
+ (ui/text-field {:placeholder "Type here"}
+ *text)
+
+ (ui/button
+ #(s/swap! *list conj *text)
+ (ui/label "Add"))))
+Do you see it? We actually store the original signal in *list instead of making a copy. This way, when we edit text, every element in our list will also be edited!
We might fix it like so:
+#(s/swap! *list conj (s/signal @*text))
+but it’s no good either.
+Yes, we create a new signal, but it depends on the old one :) This is an API problem, and I think maybe I should have separate functions for source signals and derived signals. Right now the proper way to write it would be:
+#(let [text @*text]
+ (s/swap! *list conj (s/signal text)))
+which is almost identical! but the result is very different.
+It reminds me a lot about Clojure laziness puzzles, which is both ok (we all learned to deal with them) and not so much (the best way to deal with laziness is not to use it).
+There’s another gotcha in the previous example. column takes a collection or a signal that contains a collection, so we have to satisfy that:
(ui/column
+ (s/signal
+ (concat
+ (mapv ui/label @*list)
+ [(ui/text-field ...)
+ (ui/button ...)]))))
+But now our s/signal will re-create a text-field and a button each time *list changes. The solution might be:
(let [text-field (ui/text-field ...)
+ button (ui/button ...)]
+ (ui/column
+ (s/signal
+ (concat
+ (mapv ui/label @*list)
+ [text-field
+ button]))))
+which, again, kind of breaks referential transparency. Depending on where we allocate our components, an app behaves differently. Doesn’t matter for the button, as it doesn’t have an internal state, but does matter for the text field.
+Alternatively, we might introduce a version of concat that accepts both signals wrapping sequences as well as sequence values. Then argument evaluation will lock the text-field value for us:
(ui/column
+ (s/signal
+ (s/concat
+ (s/mapv ui/label *list)
+ [(ui/text-field ...)
+ (ui/button ...)])))
+It was not always clear to me which parts of the state should be signals and which should be values. Right now, for example, a list of todos is signal containing signals that point to todos:
+(defn random-todo []
+ {:id (rand-int 1000)
+ :checked? (rand-nth [true false])})
+
+(s/defsignal *todos
+ [(s/signal (random-todo))
+ (s/signal (random-todo))
+ (s/signal (random-todo))
+ ...])
+This way list of todos could be decoupled from the todos themselves. When we add new todo, we need to change the list and generate a new component. But when an individual todo is e.g. toggled, it’s handled entirely inside and shouldn’t affect the list.
+I guess this solution is okay, although double-nested mutable structures do give me pause.
+Could the same be done “single atom”-style? Probably, with some sort of keyed map operator and lenses?
+(s/defsignal *todos
+ [(random-todo)
+ (random-todo)
+ (random-todo)
+ ...])
+
+(def *todo-0
+ (s/signal
+ {:read (nth @*todos 0)
+ :write #(s/update *todos assoc 0 %)}))
+The same ambiguity problem happens here:
+(s/defsignal *text
+ "Hello")
+
+(ui/label *text)
+or
+(s/signal
+ (ui/label @*text))
+Should I use a label that contains a signal or a signal that contains a label? Both are viable.
+This is not necessarily a problem, just an observation. I guess I prefer Python’s “There should be one—and preferably only one—obvious way to do it” to Perl’s “There’s more than one way to do it”.
+I have a few constants defined in my app, including *scale (UI scale, e.g. 2.0 on Retina) and *padding (in logical pixels, e.g. 10).
But actual rendering requires screen pixels, not UI pixels. For that, I was using the derived signal calculated inside the padding constructor:
(defn padding [*amount]
+ (map->Padding
+ {:amount (s/signal (* @*scale @*amount))}))
+The problem? I was using default *padding everywhere:
(padding *padding ...)
+...
+(padding *padding ...)
+...
+(padding *padding ...)
+...
+This way I ended up with dozens of equivalent signals (different identities, same value, dependencies, and function) that multiply the same numbers to get the same result.
+Is it bad? In this case, probably not. It just doesn’t feel as clean, considering that the rest of the app uses the absolute required minimum of computations and the dependency graph is carefully constructed.
+But I don’t see a way to merge identical signals together, either. I guess we’ll have to live with this imperfection.
+I started this experiment inspired by Svelte, Solid, and Electric Clojure. All of them have compilation steps that I wanted to avoid.
+The most non-obvious result I get from this is that it looks like you need pre-compilation for better ergonomics and resource management. Both of these problems go away if we don’t let users interact with our incremental engine directly, but instead, do it for them.
+We can replace calls to if/map/concat with their incremental versions transparently, track dependencies reliably, and add dispose calls where needed—basically, all these things you can’t trust humans to get right.
I am also getting reports that Reagent (that has a similar thing, r/track) is hard to use correctly at scale. Can anyone confirm?
Maybe it’s worth running another experiment to see if I can get pre-compilation working and how much it helps.
+Some preliminary results from the experiment:
+After some massaging, I was able to build incremental TodoMVC that keeps the state of its components that do not directly change.
+Here’s a video:
+The magenta outline means that the component was just created and is rendered for the first time.
+Notice how when I add new TODO only its row is highlighted. That’s because the rest reuses the same components that were created before.
+When you switch between tabs, it causes some of the rows to be filtered out. When you go back to “All”, only the ones that were not visible are recreated.
+Also, notice the same effect on tabs: when you switch e.g. from “All” to “Active”, “All” becomes a button but “Active” becomes just a label, so they both have to be recreated. But “Completed” stays a button, so it doesn’t get recreated.
+And the last thing: when I toggle TODOs, nothing gets highlighted. This is because I made labels accept signals as text:
+(s/defsignal *text
+ "Hello")
+
+(ui/label *text)
+So the label could stay the same while the text it displays changes. Not necessary, but feels neat, actually. Another way to do it would’ve been:
+(s/signal
+ (ui/label @*text))
+Then it would be highlighted on the toggle:
+...knowing no computation is wasted on diffs and only the necessary minimum of UI is recreated.
+I made UI scale, padding, and button fill color signals and when I change them necessary parts of UI are updated:
+This feels very satisfying, too: knowing that you made the dependency very explicit and very precise, not the hacky “let’s just reset everything just in case” way. And it requires no special setup, it “just works”.
+I don’t have to implement VDOM and diffing! And I don’t need both heavy- and lightweight versions of each component. I don’t need to track the state separately from the components. That’s a huge burden off my shoulders.
+I do need to provide a set of incremental algorithms. Incremental map, incremental filter, concat etc. for macro, too.
Ideally, we want users to be able to write their own.
+Working with incremental computations could be tricky. Making a mistake is easy, and double-checking yourself is hard, so it’s hard to know if you are doing the right thing.
+But it seems that the stakes are not that high: the worst that could happen is you re-create too much and your performance suffers. I’d say it’s a \~similar deal you get with React.
+There’s probably a good reason React won and FRP/incremental remain marginal technologies that have been tried dozens of times. I understand the appeal, but I also see how it’s not everybody’s cup of tea.
+OTOH, Reagent seems to be doing fine in Clojure land, although many people prefer to pair it with re-frame.
+If you are curious, the code is on Github. The run script is at scripts/incremental.sh.
Let me know what you think! And I’m going to try VDOM approach next. And then I guess I’ll have to make a decision matrix.
+ +]]>I haven’t decided on anything for Humble UI yet, let’s say I’m in an experimenting phase. But I think my notes could be useful to quickly get a birds-eye overview of the field.
+This is a compilation of my research so far.
+Classic UIs like Swing, original native Windows/macOS APIs and the browser’s DOM are all implemented in an OOP manner: components are objects and they have methods: addChild, removeChild, render. That fits so well, actually, that you might think OOP was invented specifically for graphical UIs.
The problem with that approach is code duplication: you have to define both how your initial UI is constructed and how it will change in the future. Also, amount of transitions scales as N² compared to the amount of states, so at some point you either get overwhelmed or miss something.
+Nevertheless, OOUIs show great performance, a very straightforward programming model and are widely used everywhere.
+
Given the above, it’s only natural that Humble UI started with the OOP paradigm. Yes, we have stateful widgets and component instances, not functions or classes.
+Look, mutable fields and inheritance! In Clojure!
+(defparent AWrapper [child ^:mut child-rect]
+ protocols/IComponent
+ (-measure [this ctx cs]
+ (when-some [ctx' (protocols/-context this ctx)]
+ (core/measure child ctx' cs))))
+
+(core/deftype+ Clip []
+ :extends core/AWrapper
+
+ protocols/IComponent
+ (-draw [_ ctx rect ^Canvas canvas]
+ (canvas/with-canvas canvas
+ (canvas/clip-rect canvas rect)
+ (core/draw child ctx rect canvas))))
+These objects can lay out, draw themselves and handle events, but in true Clojure fashion, they can’t be modified.
+I mean, theoretically, sure, I could add something like setChildren and the like, but what’s the point if we are not going in that direction anyway?
But wait! — you’d say. I’ve certainly seen Humble UI apps modifying themselves!
+And you’ll be right. There’s a special type of component, dynamic, that doesn’t have a fixed list of children. Instead, it takes a function that generates and caches them based on its inputs. When inputs change, old children are thrown away and new ones are generated.
In this example, when *clicks changes, a new label will be created and the old one will be thrown away.
(def *clicks
+ (atom 0))
+
+(def app
+ (ui/dynamic _ [clicks @*clicks]
+ (ui/label (str "Clicks: " clicks))))
+You can get quite far with that approach. However, not far enough. The problem with dynamic is that it throws away the entire subtree, no matter which parts have changed. Consider
+(ui/dynamic _ [p @*p]
+ (ui/padding p
+ (ui/rect (paint/fill 0xFFF3F3F3)
+ (ui/label "Label"))))
+In this example, only ui/padding component needs to be re-created, but its children would be thrown away and re-created, too. Sometimes it can be fixed, actually, by writing it this way:
(let [body (ui/rect (paint/fill 0xFFF3F3F3)
+ (ui/label "Label"))]
+ (ui/dynamic _ [padding @*padding]
+ (ui/padding padding
+ body)))
+Remember — components are values, so the body reference will stay the same and will be captured by dynamic.
This is both good and bad: it works, but it’s kinda backward (you wouldn’t want to write your UI this way).
+It also creates very confusing “owning” semantics. Like, who should “unmount” the body in that case? Should it be padding? Or dynamic? Actually, it can be neither of them, because body outlives them both, and they have no way of knowing this.
Why is it a problem? Stateful components. If I throw away and re-create the text field, for example, it’ll lose selection, cursor position, scroll position, etc. Not good.
+Funnily enough, current implementation of text field asks you to hold its state because it has nowhere to put it reliably.
+But overall, we managed to get quite far with this approach and polish some stateful components, so I don’t consider it a waste.
+So at some point, programmers decided: we’ve had enough. Enough with OOUI, we don’t want to write
+window.add(button);
+window.show();
+anymore. We want comfort!
+And that’s how declarative UIs were born. The idea is that you describe your UI in some simpler language, bind it to your data, and then the computer goes brrr and displays it somehow.
+Well, why not? Sounds good, right?
+This is what people have come up with.
+You describe your UI in XML/PHP/HTML/what have you, sprinkle special instructions on top, give it to a black box and it magically works!
+Example: Svelte
+<script>
+ let count = 1;
+</script>
+
+<button on:click={handleClick}>
+ Count: {count}
+</button>
+The upsides of this approach are that language is probably very simple and very declarative, and also that you can do a lot of optimizations/preprocessing before turning it into UI. Maximum declarativity!
+The downsides are, of course, that you have to work in a second, “not real” language, which is usually less powerful, harder to interop with, and less dynamic.
+Probably because of the limitations of templates, the MVVM pattern was born: you prepare your data in a real language and get it into a shape that can be consumed by a simple template.
+You call builder functions in the right context and your UI framework somehow tracks them and turns them into components. Examples would be Dear Imgui or Jetpack Compose:
+ImGui::Text("Hello, world %d", 123);
+if (ImGui::Button("Save"))
+ MySaveFunction();
+ImGui::InputText("string", buf, IM_ARRAYSIZE(buf));
+ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
+Notice that you don’t explicitly “add” or “return” components anywhere. Instead, just calling builders is enough. Almost procedural style :)
+The upside: the code is very compact.
+The downside: you can’t work with components as values. Like, can’t put them in an array and reverse it, or take the first 10, or something like that. Your builders become lambdas, and lambdas are opaque: you can’t do much about them except call. Call sites start to matter, where they normally don’t: what looks like a normal program has a few non-obvious gotchas.
+In value-oriented DSLs, you return values from your components. Like in React:
+export default function Button() {
+ return (
+ <button>I don't do anything</button>
+ );
+}
+Notice that you return the button, not call some constructor that adds it to the form. How you get — doesn’t matter. The only thing that matters is the actual value you return. You can do what you want with it: use, ignore, compare, use twice, cache, throw away.
+This is also the most natural way to write programs in my opinion: pure functions taking and returning data. It also suits Clojure the best, so we’ll probably want something like that for Humble UI.
+Note also that <button> syntax, although technically being a DSL, is just a pure convenience. It doesn’t do anything smart, it’s just a more natural way of writing:
react.createElement('button', {})
+which returns a button.
+Another interesting point is that all declarative UIs work on top of dirty, mutable, old-fashioned OOUI. Flutter has RenderObject, for example, and browser UIs utilize and exploit DOM.
If you, like me, ever wondered why didn’t browsers implement React natively somehow, in the same manner they adopted jQuery APIs. Well, the answer is: you kind of need DOM. VDOM sounds cool and fancy as long as all the heavy lifting is done in real DOM.
+Declarative UIs are great but require a layer of real mutable widgets underneath. That means it’s all overhead, and all we can do is make it as small as possible.
+But we still want declarativity, if only for developer experience alone. We want to write more concise code and we don’t want to write update logic.
+As Raph Levien put it, “industry is fast converging on the reactive approach” (reactive/declarative, nobody knows what these words mean anymore). We are not going to argue with that.
+In declarative frameworks, each component exists in two forms: a lightweight, user-generated description of it (React elements, Flutter Widgets, SwiftUI Views, let’s call them VDOM) and a “heavy” stateful counterpart (DOM nodes, Flutter RenderObjects, “real DOM”).
+Reconciliation is a process of transforming the former into the latter. This gives up two main sources of overhead on top of OOUI:
+The simplest, but probably most wasteful, way is just to regenerate the entire UI description on each frame. This is what Dear ImGui does, for example.
+The problem is that then you have to reconcile the whole tree, too. And if some parts of your UI take a lot of time to generate — sorry to be you, you can’t skip them.
+Here’s a diagram of the full top-down reconciliation:
+
React updates are also mostly top-down, with two important improvements.
+First, when generating and comparing new tree, it has a way to be told “this subtree hasn't changed, I promise” and it’ll skip reconciliation for it altogether:
+
The second optimization is when you find a specific component and only reconcile its sub-trees:
+
Unfortunately, these techniques are not applied automatically, so a programmer’s work is required. And even then React adds quite a lot of overhead. The discovery of React team was, though, that this overhead is not important/tolerable in most cases and is a great tradeoff.
+In theory, both techniques combined could allow one to update one specific component and nothing else, giving you optimal performance. But it’ll probably be a little bit cumbersome to write.
+Why can’t all React updates be surgical, affecting only the element in question and neither its parents nor children? Well, because of data dependencies! Consider this simple UI:
+What would it look like in React? Something like this (yes, I asked ChatGPT to write it):
+function CelsiusInput(props) {
+ return (
+ <div>
+ <input value={props.celsius}
+ onChange={props.onChange} />
+ Celsius
+ </div>
+ );
+}
+
+function FahrenheitOutput(props) {
+ return (
+ <div>{props.fahrenheit} Fahrenheit</div>
+ );
+}
+
+function TemperatureConverter() {
+ const [celsius, setCelsius] = useState(0);
+ const handleCelsiusChange =
+ (e) => setCelsius(e.target.value);
+ return (
+ <div>
+ <CelsiusInput
+ celsius={celsius}
+ onChange={handleCelsiusChange} /> =
+ <FahrenheitOutput
+ fahrenheit={celsius * 9 / 5 + 32} />
+ </div>
+ );
+}
+In this example, TemperatureConverter owns the mutable state and both CelsiusInput and FahrenheitOutput have a data dependency on it, received through properties.
Intuitively it feels like CelsiusInput should own that state, but beacuse it’s used in its sibling, it has to be declared in the parent component. Because of that, not only CelsiusInput and FahrenheitOutput will have to be re-rendered, but their parent TemperatureConverter, too.
Another problem is that, because TemperatureConverter is written as a single function, when setCelsius is called TemperatureConverter its entire body will be re-evaluated. This, for example, means that a new instance of handleCelsiusChange will be created, even though it’s completely unnecessary.
These are two problems that frameworks like Svelte and SolidJS tried to solve: update as little as possible, only components that need to be updated and nothing more:
+
++UIs in general, what are they doing? They are computing something to display to the user and those things need to change quickly. And one of the things that can help them change quickly is they don’t change all at once, little bits of them change. You go and click somewhere and some small part of what you’re seeing changes, it’s not everything in the entire view being transformed all at once.
+
How do they do it? Well,
+++[...] hidden inside of every UI framework is some kind of incrementalization framework as well, because you basically need this incrementalization for performance reasons everywhere.
+
What’s the incrementalization framework? Imagine you compute a function once, but then are asked to compute it again, with slightly different inputs. If you store some partial computations somewhere and can do the computation faster a second time, if the input hasn’t changed too much, then you have an incremental function.
+The way Solid/Svelte solve re-evaluation problem is by rewriting your function body. They try to split it into isolated pieces and insert reactive callbacks where needed. I’m not sure I’m a huge fan of implicit rewrites, but the goal seems noble enough to pursue.
+Now, imagine you build your UI like this: you start with some data sources, like a counter signal (same as a variable, but reactive). Then you derive some computables from it, like squared, which is, well, counter with square function applied to it. Finally, UI components that display counter and squared could be further derived from those signals. Something like:
const counter = reactive(0);
+const counterLabel = reactive(() => <div>{counter.value}</div>);
+const squared = reactive(() => counter.value ** 2);
+const squaredLabel = reactive(() => <div>{squared.value}</div>);
+const app = reactive(() => {
+ <div>{counterLabel} * {counterLabel} = {squaredLabel}</div>
+});
+This creates an acyclic dependency graph like this:
+
which can be efficiently updated. For example, if we bump counter, it will trigger updates of squared and counterLabel. Then squared will trigger an update of squaredLabel. Both counterLabel and squaredLabel could be effects that update their corresponding DOM node, but the return value is the same — they return exactly the same node their work with, so they won’t trigger further updates at all: app structure is static and doesn’t need to be revisited.
This is the simplified and at the same time the most ideal case that we want to at least try to approach in Humble UI.
+UI’s don’t exist in isolation, they need to interact with larger program. Components on a screen represent some state (business model), but they often also have an internal state to keep track of (scroll position, selection, etc).
+In OOUI that wasn’t a problem: you just keep the state inside components. Each component is an object, state is just that object’s fields. As I said — OOP fits UI very nicely. And if the business model changes, well, you go and change your UI with addNode/removeNode/...
React introduced an interesting paradigm: your component is a function (not an object), but you can request a state inside it and the framework will allocate and track that state for you. Looks a bit weird, but it works:
+function Counter() {
+ const [count, setCount] = useState(0);
+ setCount(count + 1);
+}
+The trick here is that useState will return exactly the same object over multiple Counter() calls if and only if Counter component stays in the same place in the tree. That’s called positional memoization. Functions and lightweight descriptions (elements) are always generated anew, but positions in the tree are stable and can have state attached to them.
SwiftUI does the same, but it looks even weirder:
+struct CounterView: View {
+ @State var count = 0
+ let id = UUID()
+
+ var body: some View {
+ Text("ID: \(id.uuidString) Count: \(count)")
+ }
+}
+This looks like an object, but you can’t store normal properties inside it. On each render, the framework will create new instances of CounterView and any internal fields will be lost, but! It will fill fields marked with @State for you each time with the same object. In other words, id will be different on each render, but count will be exactly the same.
Anyways, SwiftUI approach works too, although I’d argue it’s a bit counter-intuitive.
+External state mostly defines what UI components you need to construct: how many lines are in a list, enabled or disabled button, show warning or not.
+One approach is to make all state external. For example, Humble UI’s text fields right now ask you to hold their state in your atom. Fun, but can get very tedious, especially when you need to clean up the state for components that are no longer visible.
+I think in the early days of ClojureScript frameworks Circle CI (IIRC) frontend’s state could be entirely serialized into a string and re-created on another machine, down do text selection and button hovers. Given that nobody else does this might suggest that it might be an overkill. Cool flex, though.
+Another approach is to put all your state in a single atom and only pass down sub-trees of that atom. This is what Om pioneered, and other ClojureScript frameworks adopted as well. This way you can do very cheap pointer comparisons on arguments, it’ll be so cheap it makes sense to do it by default.
+Of course, it only works with immutable data, but luckily, ClojureScript data tends to be immutable already. 10 years ago. Good times.
+I have three issues with this approach:
+map or filter a collection, the resulting pointer will be new each time and you’ll have re-render, breaking the optimization. One simplification in incremental compared to React’s prop drilling is that you can safely pass signals through properties, as only components that actually read the value will get re-rendered.
+But I’m also thinking about a different angle here: what if components themselves (real ones, heavyweight objects that do layout rendering, not lightweight descriptions) were the output of incremental functions? I mean, they’d stay stable until they need to be changed, right?
+
That would mean that we can keep the state inside them naturally, and we won’t need any VDOM at all, just incremental computations.
+This is just a theory at this point, but I am building a proof of concept to see where it goes. Subscribe for updates!
+The way we write components is important: it must be ergonomic.
+For example, in Flutter architectural overview they call this example trivial:
+class MyApp extends StatelessWidget {
+ const MyApp({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ home: Scaffold(
+ appBar: AppBar(
+ title: const Text('My Home Page'),
+ ),
+ body: Center(
+ child: Builder(
+ builder: (context) {
+ return Column(
+ children: [
+ const Text('Hello World'),
+ const SizedBox(height: 20),
+ ElevatedButton(
+ onPressed: () {
+ print('Click!');
+ },
+ child: const Text('A button'),
+ ),
+ ],
+ );
+ },
+ ),
+ ),
+ ),
+ );
+ }
+}
+But to my eye, it reads way harder than it should. Same but in Clojure + Hiccup:
+[MaterialApp
+ [Scaffold
+ {:appBar
+ [AppBar
+ {:title [Text "My Home Page"]}]}
+ [Center
+ [Column
+ [Text "Hello World"]
+ [SizedBox {:height 20}]
+ [ElevatedButton
+ {:onPresed #(print "Click!")}
+ [Text "A button"]]]]]]
+Now you can finally see what’s going on!
+Another important thing is that the way you write your components might impose unnecessary dependencies or other semantics. We don’t want to make users choose between fast and readable, we want them to have both.
+Let’s look at React example again:
+function TemperatureConverter() {
+ const [celsius, setCelsius] = useState(0);
+ const handleCelsiusChange =
+ (e) => setCelsius(e.target.value);
+ return (
+ <div>
+ <CelsiusInput
+ celsius={celsius}
+ onChange={handleCelsiusChange} /> =
+ <FahrenheitOutput
+ fahrenheit={celsius * 9 / 5 + 32} />
+ </div>
+ );
+}
+See the problem? By being plain JavaScript and plain function, if TemperatureConverter needs to be re-evaluated, the only thing to do here is to call the entire function. Meaning, do all the calculations again, allocate new objects and new functions again. Then diffing kicks in, trying to figure out which objects are the same and which are different. That’s a bit too much work than necessary, but React design forces us to do it.
Let’s look at another example, in Humble UI this time:
+(ui/vscrollbar
+ (ui/column
+ (ui/label @*count)
+ (ui/button #(swap! *count)
+ "Increment")))
+By the way it’s constructed, column depends on both label and button, and scrollbar depends on column.
This parent-children dependency comes naturally from evaluation order, but do we really want it? For example, if *count changes, we do want a new label to be created, or an old one to change its text? Ideally, we would also like to keep column, button and scroll—they might have important inner state, e.g. scroll position.
Another example (pseudo-code):
+(defcomp child []
+ (ui/dynamic ctx [{:keys [accent-color]} ctx]
+ (ui/fill accent-color
+ (ui/label "Hello"))))
+
+(defcomp parent []
+ (ui/with-context [:accent-color 0x1EA0F2]
+ (ui/center
+ (child))))
+
+(parent)
+I guess the point here is that parent creates a child (and could do it conditionally, in a loop, or in any other non-trivial way), so it kind of depends on the child (at least it defines it). But at the same time, the child it creates depends on a property defined by a parent, too.
+Again, maybe it’s not a problem if each component would be a macro that evaluates its children separately from itself, but still tricky to think about.
+Think of it this way: some data flows from top to bottom, defining which components should be created. Then changes flow from leaves back to top. Sometimes change in a signal might invalidate both a leaf and its parent, and that parent might decide not to re-create said leaf! This could lead to some unnecessary evaluations if not handled properly.
+One more example:
+(ui/dynamic _ [has-errors? (boolean @*errors)]
+ (if has-errors?
+ (ui/border 0xFF0000
+ (ui/text-field @*state))
+ (ui/border 0xCCCCCC
+ (ui/text-field @*state))))
+Should these two text fields be different objects or the same? I mean, in our example we want them to be the same, but by construction, they are different object instances.
+In React they will be the same, because React only cares about what you return and reconciles values, ignoring e.g. positional information or object instances.
+But then, we can trick React, too, to re-create text field:
+(ui/dynamic _ [has-errors? (boolean @*errors)]
+ (if has-errors?
+ (ui/border 0xFF0000
+ (ui/text-field @*state))
+ (ui/text-field @*state)))
+Now, because the return structure is different, React will drop the previous instance of the text field and create a new one, even if we don’t want it. It’ll drop the state, too. If I understand this correctly, even keys wouldn’t help us in this case (Flutter seems to have GlobalKey for cases like this, though).
When operating on heavy-weight components directly, we can do this transformation:
+(let [text-field (ui/text-field @*state)]
+ (ui/dynamic _ [has-errors? (boolean @*errors)]
+ (if has-errors?
+ (ui/border 0xFF0000
+ text-field)
+ text-field)))
+So it feels like this approach is a little bit more capable? I’m not sure how well it converts into that incremental dream, by the way.
+React plays very well with live reload because it does its thing in runtime. Basically, it expects nothing from you in advance and because of that can do all sorts of crazy stuff without reloading/recompiling/etc. E.g. I can define a new component and mount it into an existing tree in runtime and not lose any state in other components.
+This property of React is very appealing. I’m not sure how development experience is with incremental frameworks that require additional compilation, but I assume it’s more complicated.
+Full restart is also an option, as long as it happens in the same JVM and allows you to keep at least an external state intact. Luckily, Clojure works well for that.
+For example, after a certain threshold I switched from buffer evals for reload to full tools.namespace nuke & load because manual buffer evals were becoming too complex:
This unloads the namespace, loads it back, creates all new hierarchy of components, etc. All faster than a single frame on a 144 Hz monitor. Things our computers can do if they don’t have to run Xcode!
+Also, this approach should be compatible even with templates/preprocessing and it still gives you close-to-zero turnaround times and state persistence.
+Looks like our industry has converged on the following approaches:
+Where VDOM could be implemented with:
+And data organization:
+I’m leaning towards VDOM + return values + incremental computations for Humble UI, but will have to run a few experiments to see how it feels and performs.
+Also, I hope people will find this article by searching for “React vs Svelte”. It’ll be so funny.
+Overall, developing a UI framework is so interesting, I’m learning so much. You should try it one day, too.
+Until that, take care. See you next time!
+ +]]>I mean, the previous version worked fine, but it had a few flaws:
+So, let’s do it again, almost from scratch, and right this time!
+In a nutshell, REPL consists of three parts: client, server, and communication protocol between them.
+Here’s an architectural diagram for you:
+
As you can see from the diagram, REPL clients live in a variety of environments dictated by their host: Java for Idea, Python for Sublime Text, JS for VS Code, etc. In my case, it was Sublime Text, so the environment I was stuck with happened to be Python 3.8.
+Of course, writing client-server apps is not hard in any language. Unfortunately for us, REPL client needs to be able to read, speak and actually understand Clojure for a few features:
+When you go to a file and eval something there, you want it to be run in the context of that file’s namespace. But how to figure out which namespace it is, without parsing Clojure source file?
+The level of understanding is non-trivial: there could be multiple namespace declarations, not necessarily at the top of the file:
+
The declaration itself could be complex, too, containing comments and/or meta tokens before the actual name:
+
I want a shortcut that evals “the topmost form” around my cursor. To do so, I need to know where those boundaries are.
+Notice how I don’t explicitly “select” what I want to evaluate. Instead, REPL client finds form boundary for me:
+This is tricky, too. For the very least, you can count parens, but even then you’d have to be aware of strings.
+To make things harder, Clojure also has reader tags #inst "2023-02-24", metadata ^bytes b and different weird symbols like @ or #' that are not wrapped in parens but are still considered to be part of the form.
Bonus points for treating technically second-level forms inside (comment) as top-level.
All of this requires a really deep understanding of Clojure syntax.
+Clojure Sublimed originally started when I wasn’t happy with what happened when I press “Enter” in Clojure file. Cursor would go to the wrong place, and I (subjectively) was spending too much time correcting it, so I decided to fix that once and for all.
+Indentation is not really a REPL concern, but it’s another part of Clojure Sublimed that requires a model of Clojure code.
+Indentation logic re-applied to the whole file is formatting, so I got this one for free (both follow Better Clojure formatting rules).
+Finally, there’s a question of pretty printing, which is basically indentation + deciding where to put line breaks. Normally this would be done on Clojure side, but doing it on a client has clear advantages:
+
Another upside is that I can adjust pretty-printing rules to my liking, of course.
+So, client lives inside your code editor and needs to understand Clojure before it starts communicating with it. Meaning, without Clojure runtime. Meaning, we had to parse Clojure in Python!
+This is where things get hard because support for libraries, especially native ones, is not great in Sublime Text. Meaning, pure Python implementation!
+I was put off by that task for a long time because it felt enormous. In the first Clojure Sublimed version, I deduced this information from syntax highlighting (Sublime Text already parses your source code for highlighting, and you can kind of access the results of that). But this time I wanted to make things right.
+And, in fact, it turned out not to be all that bad! Clojure, like any Lisp, is relatively easy to parse. This is the entire grammar:
+
Full source at GitHub.
+Some notable details below.
+I cut some corners to write less code and get max performance by e.g. not distinguishing between numbers, keywords, symbols — they are all just tokens. It’s probably not hard to add them, but I don’t really need them for what I do, so they are not there.
+I haven’t spent any serious time trying to optimize the parser. In its current state, it can go through clojure.core (enormous 8000 loc file) in 170ms on my M1 Mac.
+Clojure itself does the same in roughly 30-50 ms, though, so there’s definitely potential for improvement.
+Should be possible one day :) So far performance is good enough to re-parse on each “enter” keypress.
+Parse trees could be quite hard to navigate, and twice as hard to compare.
+Parsing also requires a lot of tests to get everything right and to avoid regressions. So having a nice and ergonomic way to write and inspect tests was super important.
+I ended up copying test syntax from tree-sitter.
+
Test runner just compares the actual result with the expected one string-wise and if they are different, reports an error in a nice to comprehend table:
+
Having this early on saved me a ton of time and I am 100% happy I made that investment.
+Parsing valid Clojure code is quite easy. But code in the process of editing is not always correct, even syntactically. That means that our parser has to work around errors somehow!
+So I decided to see how people smarter than me do it and found this:
+++In the yacc and bison parser generators, the parser has an ad hoc mechanism to abandon the current statement, discard some parsed phrases and lookahead tokens surrounding the error, and resynchronize the parse at some reliable statement-level delimiter like semicolons or braces.
+
So yeah, I guess no beautiful theory on error recovery.
+For our purposes, though, it was quite simple: see something that you don’t understand? That must be an error. Most stuff gets consumed as a symbol or a number, though, so these were rare.
+We did accept some invalid programs as valid, but that’s okay for our use case: find expression boundaries, throw it over the fence, and let Clojure work out the rest of the details.
+One funny thing happened during testing: I noticed that sometimes the parser was becoming ultra-slow on moderately-sized files. Like, seconds instead of milliseconds. That means I had quadratic behavior somewhere.
+
And that was indeed the case. The first version of the parser, roughly, was parsing parens/brackets/braces like this:
+Seq(Char("["),
+ Repeat(Choice('_gap', '_form')),
+ Char("]"))
+This basically means: if you see an opening bracket, consume forms and whitespace inside as long as you can, and in the end, there must be a closing bracket.
+Well, what if it’s not there? That means it wasn’t a 'brackets' form in the first place! This is technically correct, but also means we have to mark the opening bracket as an error and then re-parse everything inside it again. That’s your quadratic behavior right here!
A simple change got rid of this problem:
+Seq(Char("["),
+ Repeat(Choice('_gap', '_form')),
+ Optional(Char("]")))
+Technically, this accepts incorrect programs. In practice, though, it works exactly as we need for indentation: we only care about opening parens up to the point of the cursor and don’t really care what happens after it.
+Writing the parser was very fun! So many little details to figure out and get right, but in the end, when everything snaps into place, it’s so satisfying!
+I also now understand why Lisps were so popular back in the day: they are really made for ease of implementation. Hacking together an entire parser from scratch in a weekend — can you imagine it for something like C++ or Python?
+Anyways, if you need Clojure parser in Python, take a peek at my implementation — maybe it’ll help you out!
+Let’s move to the second part of our architecture: the communication channel.
+How does a server talk to a client? Die-hard Clojure fans would answer immediately: EDN! But it’s not that simple.
+Yes, EDN is the simplest thing for Clojure users. But what about the rest of the world? Don’t forget that on the other side there’s an arbitrary platform and, despite Rich’s best efforts, EDN is not as widespread as we’d like.
+This is what clojure.core.server/repl does. Basically, it’s the same interactive experience as with command-line REPL, but over a socket:
Not machine-friendly at all.
+Type in forms, receive EDN-formatted output. clojure.core.server/io-prepl does that:

Half machine-friendly and you have to be able to parse EDN.
+Following the half-EDN example, our protocol doesn’t have to be symmetric, either. If we make ease of implementation our first priority, we can go crazy:
+Not elegant, but, you know, gets the job done. In both cases, messages are simple enough to be composed with string concatenation, so we only really care about parsing.
+The only problem I have with this solution is that it offends my sense of beauty.
+nREPL also had this problem: a common denominator for multiple clients in all possible languages. Their answer? Bencode.
+Bencode is a simple binary encoding developed for BitTorrent. And when I say simple, I mean very simple. Yes, simpler than JSON.
+This is the entire Bencode grammar:
+number = '0' / '-'? [1-9][0-9]*
+int = 'i' number 'e'
+list = 'l' value* 'e'
+dict = 'd' (value value)* 'e'
+string = length ':' bytes
+length = '0' / [1-9][0-9]*
+value = int / list / dict / string
+And here are some actual messages when communicating with nREPL server:
+
Bencode is not supported out of the box by either Python or Clojure, but implementation easily fits in 200 LoC.
+Problem? It’s binary. Unfortunately, you can’t run binary protocols on top of Socket Server, only the text ones. So to be able to use bencode you’ll have to start your own server.
+Clojure Sublimed uses bencode for connecting to nREPL servers.
+MessagePack is beautiful, exactly as I would’ve designed a compact binary serialization format. Everything is length-prefixed, super-simple to implement and you can support only parts that you actually use.
+But it’s binary, so can’t be used on top of Socket Server, and I’m not prepared to write my own REPL server yet.
+Consider voting for this issue and the situation might change! I believe Clojure deserves binary REPLs as much as text-based ones.
+A lucky coincidence saved me here. Remember the first part where I was writing Clojure parser? Guess what? Since EDN is a subset of Clojure, my parser also can parse EDN well enough to understand REPL server responses!
+This is what my upgraded Socket Server REPL looks like on the wire:
+
Yes, it looks like nREPL over EDN.
+No, it’s not exactly nREPL, it’s subtly different (see the server breakdown below), so there can be more chaos.
+Did I invent another wheel? Maybe. But it’s a good wheel and it suits my needs well.
+The tricky part of EDN-on-the-wire? How to separate messages.
+Clojure has a streaming parser: it consumes data from socket char-by-char and parses it as it goes until it reads a complete form. That’s why, for example, you can’t evaluate something like (+ 1 2 in the REPL, no matter how many times you press Enter.
But my Python parser wasn’t streaming :( You give it a string, it’ll parse it. But it can’t tell you how much of that string to read from a socket. If only TCP was message-oriented — one can dream!
+So the solution was... split on newlines :) Lucky for me, the default Clojure printer escapes newlines in strings, so it can’t occur inside the message.
+EDN doesn’t exactly forbid newlines, though, so let’s hope they won’t suddenly start to appear one day.
+Finally, the third and final part of our architecture: the server. When I only started learning about Clojure and Lisps, I imagined that REPL is literally that:
+
Because of that ignorance, it was hard for me to understand why there are different REPL implementations and why you need to “implement” REPL at all.
+Let’s go from the simplest case to more complex ones.
+Funny enough, the function I showed you above works:
+It’s very fragile, though: it’ll die on the first exception.
+It also doesn’t do many things which you’ll see more sophisticated REPLs provide.
+This is the REPL you get when you run clj or clojure command-line utility.
It works essentially the same, but does a little bit of extra work for you:
+First and most notably, it prints a command prompt that displays the current namespace:
+
Which you can actually customize to your liking:
+
Then, it catches and prints exceptions, so your REPL doesn’t die when you make a mistake:
+
It also stores the last calculated values in special *1..*3 dynamic vars and the last exception in *e. These variables do not exist outside of REPL:

Another convenience that default REPL does is requiring some stuff from clojure.repl and clojure.pprint:

Were you wondering where (doc) in REPL comes from? Now you know.
Finally, it isolates vars like *ns* or *warn-on-reflection* so that when you set! them in your REPL session it doesn’t alter their root bindings.
Quite a bit of nuance, huh? With all that, clojure.main/repl is still considered very basic. There’s more stuff you can do!
Basically the same as main/repl, but for the access over the network.
The only difference is output. If your entire program IS the REPL, you don’t have to do anything special with it.
+But if you are connecting dynamically to a working program, things get trickier. Where should (println "Hello") print?
If it prints to stdout of the process, you won’t see it in your REPL. It’ll go to wherever the server process redirects its standard output.
+So what Server REPL does is it redefines *in*/*out*/*err* to socket streams instead of process’s stdout and sends to you what you print over the network. Everybody gets their own stdout!
Really tricky stuff to figure out, but essential to understand if you consider yourself an advanced Clojure REPL user.
+The rest is the same. Server REPL literally calls into main/repl after rebinding *in*/*out*/*err*.
pREPL is Clojure team’s answer to nREPL and critique that Clojure Socket REPL is not machine-friendly. It’s basically server/repl but with EDN-formatted output:

pREPL consumes raw Clojure forms but outputs EDN-structured data.
+In terms of what it does for you, it also formats exceptions (not in a Clojure-aware way, unfortunately) and synchronizes your output so that two threads can’t print simultaneously. But that’s about it.
+The main problem with pREPL is that it’s based on EDN and, thus, aimed at Clojure clients first and foremost.
+nREPL is a third-party server started by Chas Emerick and lately adopted by Bozhidar Batsov. It’s a separate library that you have to add to your project and start the server yourself.
+As Rich Hickey put it, ”nREPL is not a REPL, it’s remote evaluation API”. He’s not wrong, but I think that’s exactly what tooling authors need: remote eval API, not interactive console.
+First, nREPL is machine-friendly both ways. It receives bencode-d data and sends bencode-d data back.
+Second, it walks an extra mile for you:
+eval optionally accepts file name and position in that file, so that stack traces would contain the correct position.lookup and load-file solve problems that their Clojure alternatives don’t.completions.All this stuff is very useful and doesn’t come “naturally” with naive REPL implementations.
+The downside? You need to add nREPL server dependency to your app. It also has a noticeable startup cost (~500ms on my machine).
+Since nREPL is extensible, one can extend it to do even more. That’s what the first version of Clojure Sublimed did and still does. Including:
+
It worked well for me for 1.5 years, but still, you know, nREPL dependency, startup time, NIH syndrome. I wanted to give REPL a shot on my own.
+Even the simplest REPL still has the full power of Clojure in it! We can start with something very basic, like server.repl, send our own server’s code to it first thing after connecting, and then take control over stdin/stdout and start serving our own protocol with our own execution model.
This is called “upgrading” your REPL and that’s how Christophe Grand’s Unrepl works, for example. The beauty of it is zero dependencies: you only need Clojure and nothing more. Everything you need you bring with you.
+In our case, it looks like this. First, we send a lot of Clojure code (unformatted, because machine doesn’t care):
+
Then, we receive this:
+
Which basically means “Yes, I’ve heard you”.
+This is all happening inside basic server/repl. It looks messy because it was designed for human consumption (eye-balling), and we don’t even try to interpret it. We just cross our fingers and hope everything we sent works.
At this point, we’re ready to “upgrade” our REPL. This is how we do it:
+
(repl) is a function we defined in our initial payload. {"tag" "started"} is the first message of our own protocol. I really, really, really hope here that it will not be messed up by other output (printing in Socket Server is not synchronized, and everyone who worked with Clojure REPL in the terminal knows how often it messes up your output).
After the client sees {"tag" "started"} somewhere in the socket, it considers the upgrade to be finished and now works in our own nREPL-like EDN-based protocol.
Our upgraded Clojure Sublimed REPL does all the same basic stuff that nREPL does. The only practical difference for clients is batch evaluation: send multiple forms together (e.g. when evaluating the whole buffer) and get separate results for each one.
+nREPL eval-buffer:
+
Clojure Sublimed eval-buffer:
+
Under the hood, though, it’s a completely new REPL. It sits on top of Socket Server, yes, but it has its own evaluation model and its own protocol. It’s clean, minimal, fast to load, and works much better with Clojure Sublimed client than nREPL.
+I don’t want to release yet separately from Clojure Sublimed (yet?), but, you know, take a peek at the implementation anyway.
+The original version of Clojure Sublimed (client) was organized quite poorly and adding new REPLs was problematic.
+New, refactored Clojure Sublimed was designed to be easy to extend. Out of the box, we ship with these now:
+And there could be more! If you are interested, let me know, or, better, jump in with a PR! I promise it should be much easier now. I even wrote docstrings everywhere at some places :)
So, Clojure Sublimed v3 is out there. To sum up the major differences:
+As always, you can get the new version in Package Control or on Github:
+
Let me know what you think! Issues are open :) And happy Clojur-ing!
+Color scheme: Niki Berkeley.
+The font on screenshots: Berkeley Mono.
+ +]]>
diff --git a/firefox_preferences/bookmarkbackups/bookmarks.json b/firefox_preferences/bookmarkbackups/bookmarks.json index 87499cdb..13aa69c3 100644 --- a/firefox_preferences/bookmarkbackups/bookmarks.json +++ b/firefox_preferences/bookmarkbackups/bookmarks.json @@ -1 +1 @@ -{"guid":"root________","title":"","index":0,"dateAdded":1649281065629000,"lastModified":1694474781438000,"id":1,"typeCode":2,"type":"text/x-moz-place-container","root":"placesRoot","children":[{"guid":"menu________","title":"menu","index":0,"dateAdded":1630357974555000,"lastModified":1630357974555000,"id":2,"typeCode":2,"type":"text/x-moz-place-container","root":"bookmarksMenuFolder","children":[{"guid":"WwFz849jTWMQ","title":"YVVAS: Gitea","index":0,"dateAdded":1629308310721000,"lastModified":1629308315410000,"id":7,"typeCode":1,"iconUri":"http://gitea.yvvas.com:4000/img/favicon.png","type":"text/x-moz-place","uri":"http://gitea.yvvas.com:4000/"},{"guid":"sisFB11eMfmm","title":"LinuxQuestions.org - where Linux users come for help","index":1,"dateAdded":1629557818838000,"lastModified":1629557818838000,"id":8,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.linuxquestions.org/questions/"},{"guid":"ZeALnv2FjiYH","title":"Manjaro Linux Forum","index":2,"dateAdded":1629557849720000,"lastModified":1629557849720000,"id":9,"typeCode":1,"iconUri":"https://forum.manjaro.org/uploads/default/optimized/1X/d75b86ee0d230b116a650e11d0ca7a0b8472a4a8_2_180x180.svg","type":"text/x-moz-place","uri":"https://forum.manjaro.org/"},{"guid":"5POR_dftBNCu","title":"Learning JavaScript Design Patterns","index":3,"dateAdded":1630357974555000,"lastModified":1630357974555000,"id":10,"typeCode":1,"type":"text/x-moz-place","uri":"https://addyosmani.com/resources/essentialjsdesignpatterns/book/"}]},{"guid":"toolbar_____","title":"toolbar","index":1,"dateAdded":1649281065629000,"lastModified":1694474781438000,"id":3,"typeCode":2,"type":"text/x-moz-place-container","root":"toolbarFolder","children":[{"guid":"KmANaDAw2hdg","title":"","index":0,"dateAdded":1621583253850000,"lastModified":1621583253850000,"id":11,"typeCode":3,"type":"text/x-moz-place-separator"},{"guid":"BmkEkcgKhrz_","title":"yt-dlp/supportedsites.md at master · yt-dlp/yt-dlp · GitHub","index":1,"dateAdded":1649333257888000,"lastModified":1649333257888000,"id":61,"typeCode":1,"iconUri":"https://github.githubassets.com/favicons/favicon.svg","type":"text/x-moz-place","uri":"https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md"},{"guid":"Dqodyq9FkEb7","title":"kitty","index":2,"dateAdded":1649713146957000,"lastModified":1649713146957000,"id":62,"typeCode":1,"iconUri":"https://sw.kovidgoyal.net//kitty/_static/kitty.svg","type":"text/x-moz-place","uri":"https://sw.kovidgoyal.net//kitty/"},{"guid":"L-ryPMHl4rrt","title":"NCURSES Programming HOWTO","index":3,"dateAdded":1651113338481000,"lastModified":1651113338481000,"id":63,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/"},{"guid":"XlPgjbyIQ3fz","title":"The Linux Documentation Project","index":4,"dateAdded":1651113341899000,"lastModified":1651113341899000,"id":64,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tldp.org/"},{"guid":"9cTyhm6_ymBG","title":"Dev1 Galaxy Forum","index":5,"dateAdded":1651113438952000,"lastModified":1651113438952000,"id":65,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev1galaxy.org/"},{"guid":"uYUarT7N0QKX","title":"RARBG Rarbg Index page","index":6,"dateAdded":1651129744540000,"lastModified":1651129744540000,"id":66,"typeCode":1,"type":"text/x-moz-place","uri":"https://rarbg.to/index80.php"},{"guid":"Wzo4IjMNRR_X","title":"Odysee","index":7,"dateAdded":1651331904632000,"lastModified":1651331904632000,"id":67,"typeCode":1,"iconUri":"https://odysee.com/public/pwa/icon-180.png","type":"text/x-moz-place","uri":"https://odysee.com/"},{"guid":"VQf-2buxeZ2o","title":"mirrors.dotsrc.org","index":8,"dateAdded":1651358341104000,"lastModified":1651358341104000,"id":68,"typeCode":1,"type":"text/x-moz-place","uri":"https://mirrors.dotsrc.org/artix-linux/"},{"guid":"cw4Mj7Y0ruoy","title":"Secure email: ProtonMail is free encrypted email.","index":9,"dateAdded":1651511468029000,"lastModified":1651511468029000,"id":69,"typeCode":1,"iconUri":"https://protonmail.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://protonmail.com/"},{"guid":"R9gzzMldn2kg","title":"Codeberg.org","index":10,"dateAdded":1651702844761000,"lastModified":1651702844761000,"id":70,"typeCode":1,"iconUri":"https://design.codeberg.org/logo-kit/favicon.svg","type":"text/x-moz-place","uri":"https://codeberg.org/"},{"guid":"o3HI42yiCaWm","title":"Linux.org","index":11,"dateAdded":1652207363973000,"lastModified":1652207363973000,"id":71,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.linux.org/"},{"guid":"E5PFetphcX9d","title":"LinuxQuestions.org","index":12,"dateAdded":1652207392636000,"lastModified":1652207392636000,"id":72,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://www.linuxquestions.org/"},{"guid":"qoHld09xnJlg","title":"Sheldon Brown-Bicycle Technical Information","index":13,"dateAdded":1654020880213000,"lastModified":1654020880213000,"id":73,"typeCode":1,"type":"text/x-moz-place","uri":"https://sheldonbrown.com/"},{"guid":"WW9dNPiyZspu","title":"C Tutorial","index":14,"dateAdded":1654195764135000,"lastModified":1654195764135000,"id":74,"typeCode":1,"iconUri":"https://www.demo2s.com/java/favicon.ico","type":"text/x-moz-place","uri":"https://www.demo2s.com/c/c.html"},{"guid":"B2IF4KDyFqww","title":"Learn C - Free Interactive C Tutorial","index":15,"dateAdded":1654195772329000,"lastModified":1654195772329000,"id":75,"typeCode":1,"iconUri":"https://www.learn-c.org/static/img/favicons/learn-c.org.ico","type":"text/x-moz-place","uri":"https://www.learn-c.org/"},{"guid":"0PJeh2ItAVWm","title":"C programming | Programming Simplified","index":16,"dateAdded":1654198218811000,"lastModified":1654198218811000,"id":76,"typeCode":1,"iconUri":"https://www.programmingsimplified.com/sites/default/files/logo.png","type":"text/x-moz-place","uri":"https://www.programmingsimplified.com/c/"},{"guid":"0rl-ZfBjznxN","title":"My st (suckless terminal) Build: The Even Bester Terminal! - YouTube","index":17,"dateAdded":1654202212353000,"lastModified":1654202212353000,"id":77,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.youtube.com/watch?v=FJmm7wl4JUI"},{"guid":"izBo_7nZnVUR","title":"https://tronche.com/gui/x/xlib/","index":18,"dateAdded":1654209880980000,"lastModified":1654209880980000,"id":78,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tronche.com/gui/x/xlib/"},{"guid":"N6g_1Jz1Xf76","title":"X.Org","index":19,"dateAdded":1654210249197000,"lastModified":1654210249197000,"id":79,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.x.org/wiki/"},{"guid":"kUI9dS1MZ0U8","title":"Introduction to File Locking in Linux | Baeldung on Linux","index":20,"dateAdded":1654483225423000,"lastModified":1654483225423000,"id":80,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.baeldung.com/linux/file-locking"},{"guid":"Zr2aqTIRSqda","title":"crifo.org","index":21,"dateAdded":1654484403496000,"lastModified":1654484403496000,"id":81,"typeCode":1,"type":"text/x-moz-place","uri":"https://crifo.org/"},{"guid":"YpYs4LPOewJ4","title":"LeetCode - The World's Leading Online Programming Learning Platform","index":22,"dateAdded":1654902699127000,"lastModified":1654902699127000,"id":82,"typeCode":1,"iconUri":"https://leetcode.com/favicon-192x192.png","type":"text/x-moz-place","uri":"https://leetcode.com/"},{"guid":"WmmgkgMBKyOL","title":"Privacy by default | Proton","index":23,"dateAdded":1654914230694000,"lastModified":1654914230694000,"id":83,"typeCode":1,"iconUri":"https://proton.me/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://proton.me/"},{"guid":"RP0WicyJWGgT","title":"The UNIX and Linux Forums - Free Tech Support","index":24,"dateAdded":1655084458356000,"lastModified":1655084458356000,"id":84,"typeCode":1,"iconUri":"https://www.unix.com/apple-touch-icon.png?v=3e88xkpGyw","type":"text/x-moz-place","uri":"https://www.unix.com/"},{"guid":"P0peXDUolK9q","title":"The linux-kernel mailing list FAQ","index":25,"dateAdded":1655267092609000,"lastModified":1655267092609000,"id":85,"typeCode":1,"type":"text/x-moz-place","uri":"http://vger.kernel.org/lkml/"},{"guid":"JBu_jYgSZm1j","title":"The Linux Kernel","index":26,"dateAdded":1655278541806000,"lastModified":1655278541806000,"id":86,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tldp.org/LDP/tlk/tlk.html"},{"guid":"BjES_nZCMe9h","title":"Show Your Screenshots Here - Page 4","index":27,"dateAdded":1655329664432000,"lastModified":1655329664432000,"id":87,"typeCode":1,"type":"text/x-moz-place","uri":"https://forum.artixlinux.org/index.php/topic,8.msg26772/boardseen.html#new"},{"guid":"MRRBc-IbfjXL","title":"Bash Guide for Beginners","index":28,"dateAdded":1655427055443000,"lastModified":1655427055443000,"id":88,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html"},{"guid":"7Sn1ul0wZreS","title":"1 Introduction","index":29,"dateAdded":1655526316605000,"lastModified":1655526316605000,"id":89,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.lysator.liu.se/c/rat/a.html#1-1"},{"guid":"mwXUs672DlZT","title":"Jan Schaumann","index":30,"dateAdded":1655887267489000,"lastModified":1655887267489000,"id":90,"typeCode":1,"type":"text/x-moz-place","uri":"https://stevens.netmeister.org/"},{"guid":"kVHIkh9EEcR3","title":"google webfonts helper","index":31,"dateAdded":1655977625213000,"lastModified":1655977625213000,"id":91,"typeCode":1,"type":"text/x-moz-place","uri":"https://google-webfonts-helper.herokuapp.com/fonts"},{"guid":"p2xeAZUB52C5","title":"gitmoji | An emoji guide for your commit messages","index":32,"dateAdded":1655984517314000,"lastModified":1655984517314000,"id":92,"typeCode":1,"iconUri":"https://gitmoji.dev/static/android-icon-192x192.png","type":"text/x-moz-place","uri":"https://gitmoji.dev/"},{"guid":"8IXTEwXajgid","title":"The world’s fastest framework for building websites | Hugo","index":33,"dateAdded":1655989446214000,"lastModified":1655989446214000,"id":93,"typeCode":1,"iconUri":"https://gohugo.io/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://gohugo.io/"},{"guid":"Dl3Sd4p6CEEx","title":"Iconify","index":34,"dateAdded":1655990943772000,"lastModified":1655990943772000,"id":94,"typeCode":1,"type":"text/x-moz-place","uri":"https://iconify.design/"},{"guid":"mrjt9bs3SMa5","title":"Sorting Algorithms In C | C Program For Sorting | Edureka","index":35,"dateAdded":1656301316469000,"lastModified":1656301316469000,"id":95,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.edureka.co/blog/sorting-algorithms-in-c/"},{"guid":"hf4AgA59Y94d","title":"Techie Delight | Ace your Coding Interview","index":36,"dateAdded":1656303139870000,"lastModified":1656303139870000,"id":96,"typeCode":1,"iconUri":"https://secure.gravatar.com/avatar/32fd0e5c28d6dbbaa262f30f3a33c727?s=192","type":"text/x-moz-place","uri":"https://www.techiedelight.com/"},{"guid":"FNTqmTrIkCcB","title":"Basic Graphics Programming With The XCB Library","index":37,"dateAdded":1656351589031000,"lastModified":1656351589031000,"id":97,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://www.x.org/releases/X11R7.5/doc/libxcb/tutorial/"},{"guid":"UsN8Bcl_-hWz","title":"Alex Blackie","index":38,"dateAdded":1656502771348000,"lastModified":1656502771348000,"id":98,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.alexblackie.com/"},{"guid":"-V6REa_AyyAG","title":"getopt() function in C to parse command line arguments","index":39,"dateAdded":1656601142299000,"lastModified":1656601142299000,"id":99,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.tutorialspoint.com/getopt-function-in-c-to-parse-command-line-arguments"},{"guid":"mQIbENZcWg3h","title":"LinuxQuestions.org - where Linux users come for help","index":40,"dateAdded":1656704685544000,"lastModified":1656704685544000,"id":100,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://www.linuxquestions.org/questions/index.php"},{"guid":"U7-23V2QIQGT","title":"Aaron Swartz - Wikipedia","index":41,"dateAdded":1656705805334000,"lastModified":1656705805334000,"id":101,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Aaron_Swartz#Congress"},{"guid":"5Aj4f5aqpLNc","title":"Stranger Things - Wikipedia","index":42,"dateAdded":1656872392829000,"lastModified":1656872392829000,"id":102,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Stranger_things#Video_games"},{"guid":"pUEZuDEl0kT5","title":"Buy a domain name - Register cheap domain names from $0.99 - Namecheap","index":43,"dateAdded":1657478526127000,"lastModified":1657478526127000,"id":103,"typeCode":1,"iconUri":"https://www.namecheap.com/assets/img/nc-icon/namecheap-icon-152x152.png","type":"text/x-moz-place","uri":"https://www.namecheap.com/"},{"guid":"BTEiNnuKUDVZ","title":"Welcome to leafbytes!","index":44,"dateAdded":1657567373299000,"lastModified":1657567373299000,"id":104,"typeCode":1,"iconUri":"https://leafbytes.com/favicon.svg","type":"text/x-moz-place","uri":"https://leafbytes.com/"},{"guid":"1FO6pp8INrBX","title":"Prism","index":45,"dateAdded":1657727747513000,"lastModified":1657727747513000,"id":105,"typeCode":1,"iconUri":"https://prismjs.com/assets/favicon.png","type":"text/x-moz-place","uri":"https://prismjs.com/"},{"guid":"6v2b16zLAtjn","title":"Untangled","index":46,"dateAdded":1658412910849000,"lastModified":1658412910849000,"id":106,"typeCode":1,"type":"text/x-moz-place","uri":"https://roy.gbiv.com/untangled/"},{"guid":"S-c3AyEX4xia","title":"Codinhood | Codinhood","index":47,"dateAdded":1658605731081000,"lastModified":1658605731081000,"id":107,"typeCode":1,"iconUri":"https://codinhood.com/icons/icon-512x512.png?v=85ac77ec79950db9b0114b1f5d9a2aba","type":"text/x-moz-place","uri":"https://codinhood.com/"},{"guid":"FbpmYV1fzPPT","title":"Bun is a fast all-in-one JavaScript runtime","index":48,"dateAdded":1658914201546000,"lastModified":1658914201546000,"id":108,"typeCode":1,"type":"text/x-moz-place","uri":"https://bun.sh/"},{"guid":"eluA8aNVXyc7","title":"LanguageTool - Open Source","index":49,"dateAdded":1658914338191000,"lastModified":1658914338191000,"id":109,"typeCode":1,"iconUri":"https://languagetool.org/images/favicons/favicon.png","type":"text/x-moz-place","uri":"https://languagetool.org/dev"},{"guid":"TY97Pu87CQ9K","title":"CSSBattle - the CSS code-golfing game!","index":50,"dateAdded":1658959599907000,"lastModified":1658959599907000,"id":110,"typeCode":1,"iconUri":"https://cssbattle.dev/images/logo-square.png","type":"text/x-moz-place","uri":"https://cssbattle.dev/"},{"guid":"VHZUSAGcev9p","title":"Load balancing (computing) - Wikipedia","index":51,"dateAdded":1659116480027000,"lastModified":1659116480027000,"id":111,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Load_balancing_(computing)"},{"guid":"fVHF_XZZAqnh","title":"Artix needs your help - Page 2","index":52,"dateAdded":1659596031678000,"lastModified":1659596031678000,"id":112,"typeCode":1,"type":"text/x-moz-place","uri":"https://forum.artixlinux.org/index.php/topic,508.50.html"},{"guid":"Ru6wYU4c98kv","title":"CSS Border Radius | A Quick Glance of CSS Border Radius | Examples","index":53,"dateAdded":1659732337658000,"lastModified":1659732337658000,"id":113,"typeCode":1,"iconUri":"https://cdn.educba.com/academy/wp-content/uploads/2020/05/cropped-apple-touch-icon-192x192.png","type":"text/x-moz-place","uri":"https://www.educba.com/css-border-radius/"},{"guid":"ewB7BAZy8sdb","title":"Build the portfolio you need to be a badass web developer. | egghead.io","index":54,"dateAdded":1659793667343000,"lastModified":1659793667343000,"id":114,"typeCode":1,"type":"text/x-moz-place","uri":"https://egghead.io/"},{"guid":"r93zyxXr9Z-x","title":"Programming Language Tutorials","index":55,"dateAdded":1659802952461000,"lastModified":1659802952461000,"id":115,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.demo2s.com/"},{"guid":"O-y8C8k1lSE_","title":"Dropdown Animations with CSS Transforms","index":56,"dateAdded":1659877332234000,"lastModified":1659877332234000,"id":116,"typeCode":1,"iconUri":"https://cpwebassets.codepen.io/assets/favicon/apple-touch-icon-5ae1a0698dcc2402e9712f7d01ed509a57814f994c660df9f7a952f3060705ee.png","type":"text/x-moz-place","uri":"https://codepen.io/codypearce/pen/PdBXpj"},{"guid":"bkYaibNeHq1T","title":"unixsheikh.com","index":57,"dateAdded":1659884831297000,"lastModified":1659884831297000,"id":117,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.unixsheikh.com/"},{"guid":"tS0aEJd-WvB8","title":"Nvim documentation: spell","index":58,"dateAdded":1659964122794000,"lastModified":1659964122794000,"id":118,"typeCode":1,"type":"text/x-moz-place","uri":"https://neovim.io/doc/user/spell.html"},{"guid":"ijx9QrY8G_zw","title":"nginx news","index":59,"dateAdded":1659967710446000,"lastModified":1659967710446000,"id":119,"typeCode":1,"type":"text/x-moz-place","uri":"https://nginx.org/"},{"guid":"683x7Gd2q8Qs","title":"Docker Hub","index":60,"dateAdded":1659969878836000,"lastModified":1659969878836000,"id":120,"typeCode":1,"type":"text/x-moz-place","uri":"https://hub.docker.com/"},{"guid":"BqXfJDSFvk8s","title":"DuckDuckGo !Bang","index":61,"dateAdded":1659976117430000,"lastModified":1659976117430000,"id":121,"typeCode":1,"type":"text/x-moz-place","uri":"https://duckduckgo.com/bang?"},{"guid":"TzCMyDbJVHg5","title":"Why I love using bspwm for my Linux window manager | Opensource.com","index":62,"dateAdded":1659976742365000,"lastModified":1659976742365000,"id":122,"typeCode":1,"type":"text/x-moz-place","uri":"https://opensource.com/article/21/4/bspwm-linux"},{"guid":"WS2HzaL1ZXty","title":"Julia Evans","index":63,"dateAdded":1660081276754000,"lastModified":1660081276754000,"id":123,"typeCode":1,"type":"text/x-moz-place","uri":"https://jvns.ca/"},{"guid":"HufMdoezc_4h","title":"Comparison of programming languages - Wikipedia","index":64,"dateAdded":1660142580786000,"lastModified":1660142580786000,"id":124,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Comparison_of_programming_languages"},{"guid":"OaiFn7EgWHBM","title":"nvim-lspconfig/server_configurations.md at master · neovim/nvim-lspconfig · GitHub","index":65,"dateAdded":1660247752493000,"lastModified":1660247752493000,"id":125,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md"},{"guid":"qF2v5I5hQSrn","title":"SOLID Principles with Javascript Examples | by Hayreddin Tüzel | Medium","index":66,"dateAdded":1660262541682000,"lastModified":1660262541682000,"id":126,"typeCode":1,"type":"text/x-moz-place","uri":"https://medium.com/@hayreddintuzel/solid-principles-with-examples-12f36f61796c"},{"guid":"TN32ZIWK8BjE","title":"Beej's Guide to Network Programming","index":67,"dateAdded":1660263282096000,"lastModified":1660263282096000,"id":127,"typeCode":1,"type":"text/x-moz-place","uri":"https://beej.us/guide/bgnet/html/"},{"guid":"aFBtEfqR0xt8","title":"SearXNG and searx instances","index":68,"dateAdded":1660406668851000,"lastModified":1660406668851000,"id":128,"typeCode":1,"type":"text/x-moz-place","uri":"https://searx.space/#"},{"guid":"IHTf9PUyk0u6","title":"Nothing New® - Sustainable with Style","index":69,"dateAdded":1660842559232000,"lastModified":1660842559232000,"id":129,"typeCode":1,"type":"text/x-moz-place","uri":"https://nothingnew.com/"},{"guid":"X5vkQRfdQCNd","title":"WAMA Underwear | Leaders in Hemp Underwear","index":70,"dateAdded":1660842643086000,"lastModified":1660842643086000,"id":130,"typeCode":1,"type":"text/x-moz-place","uri":"https://wamaunderwear.com/"},{"guid":"pbZGlb7twxCD","title":"Joel on Software","index":71,"dateAdded":1661211146796000,"lastModified":1661211146796000,"id":131,"typeCode":1,"iconUri":"https://i0.wp.com/www.joelonsoftware.com/wp-content/uploads/2016/12/11969842.jpg?fit=192%2C192&ssl=1","type":"text/x-moz-place","uri":"https://www.joelonsoftware.com/"},{"guid":"hagUlS47OHsU","title":"Let's Encrypt","index":72,"dateAdded":1661413809341000,"lastModified":1661413809341000,"id":132,"typeCode":1,"type":"text/x-moz-place","uri":"https://letsencrypt.org/"},{"guid":"CbxKNrnFHnbY","title":"Easy Newbie","index":73,"dateAdded":1661413831568000,"lastModified":1661413831568000,"id":133,"typeCode":1,"iconUri":"https://easynewbie.com/wp-content/uploads/2022/06/cropped-easynewbie-panda-512-192x192.png","type":"text/x-moz-place","uri":"https://easynewbie.com/"},{"guid":"YyradIzpX08F","title":"Certbot | Certbot","index":74,"dateAdded":1661413978690000,"lastModified":1661413978690000,"id":134,"typeCode":1,"type":"text/x-moz-place","uri":"https://certbot.eff.org/"},{"guid":"l6h_hfoEVzEs","title":"Installing an SSL certificate on your server, using cPanel - Hosting - Namecheap.com","index":75,"dateAdded":1661414302979000,"lastModified":1661414302979000,"id":135,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.namecheap.com/support/knowledgebase/article.aspx/9418/33/installing-an-ssl-certificate-on-your-server-using-cpanel/"},{"guid":"yBRe5Gf8udnn","title":"acme.sh/acme.sh at master · acmesh-official/acme.sh · GitHub","index":76,"dateAdded":1661414795055000,"lastModified":1661414795055000,"id":136,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/acmesh-official/acme.sh/blob/master/acme.sh"},{"guid":"p-yJvGd8kXA3","title":"Bulletproof TLS Guide","index":77,"dateAdded":1661415128884000,"lastModified":1661415128884000,"id":137,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.feistyduck.com/library/bulletproof-tls-guide/online/"},{"guid":"GRnCrtvbv0sy","title":"Mutexes and Semaphores Demystified","index":78,"dateAdded":1661478654240000,"lastModified":1661478654240000,"id":138,"typeCode":1,"type":"text/x-moz-place","uri":"https://barrgroup.com/embedded-systems/how-to/rtos-mutex-semaphore"},{"guid":"gwHAnRqkupRX","title":"SimpleLogin | Open source anonymous email service","index":79,"dateAdded":1661491685322000,"lastModified":1661491685322000,"id":139,"typeCode":1,"type":"text/x-moz-place","uri":"https://simplelogin.io/"},{"guid":"HUzFmIEKl4ln","title":"The One DevOps Platform | GitLab","index":80,"dateAdded":1661726427518000,"lastModified":1661726427518000,"id":140,"typeCode":1,"iconUri":"https://about.gitlab.com/nuxt-images/ico/favicon-192x192.png?cache=2022041","type":"text/x-moz-place","uri":"https://about.gitlab.com/"},{"guid":"rjTxRfk4P6m4","title":"WebAssembly","index":81,"dateAdded":1661748286920000,"lastModified":1661748286920000,"id":141,"typeCode":1,"type":"text/x-moz-place","uri":"https://webassembly.org/"},{"guid":"Pbxz3i0WSXcI","title":"Courses Dashboard | Wes Bos","index":82,"dateAdded":1661749078823000,"lastModified":1661749078823000,"id":142,"typeCode":1,"type":"text/x-moz-place","uri":"https://courses.wesbos.com/account/signin"},{"guid":"WeWvd8jqxdUj","title":"GitHub: Where the world builds software · GitHub","index":83,"dateAdded":1661750000360000,"lastModified":1661750000360000,"id":143,"typeCode":1,"iconUri":"https://github.githubassets.com/favicons/favicon.svg","type":"text/x-moz-place","uri":"https://github.com/"},{"guid":"h3GutkTIJFTt","title":"Mothereffing HSL","index":84,"dateAdded":1661839918365000,"lastModified":1661839918365000,"id":144,"typeCode":1,"iconUri":"https://mothereffinghsl.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://mothereffinghsl.com/"},{"guid":"FUl7E-T_T1-I","title":"Icon Font & SVG Icon Sets ❍ IcoMoon","index":85,"dateAdded":1661840052466000,"lastModified":1661840052466000,"id":145,"typeCode":1,"type":"text/x-moz-place","uri":"https://icomoon.io/"},{"guid":"DBwBzk7O8U5Y","title":"DuckDuckGo !Bang","index":86,"dateAdded":1661933112110000,"lastModified":1661933112110000,"id":146,"typeCode":1,"iconUri":"https://duckduckgo.com/assets/icons/meta/DDG-iOS-icon_152x152.png","type":"text/x-moz-place","uri":"https://duckduckgo.com/bang?q="},{"guid":"YrKga4SBMjPj","title":"MDN Web Docs","index":87,"dateAdded":1662120077794000,"lastModified":1662120077794000,"id":147,"typeCode":1,"iconUri":"https://developer.mozilla.org/apple-touch-icon.6803c6f0.png","type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/"},{"guid":"rBxN8zzNSs44","title":"DevDocs API Documentation","index":88,"dateAdded":1662120220320000,"lastModified":1662120220320000,"id":148,"typeCode":1,"type":"text/x-moz-place","uri":"https://devdocs.io/#q=lua%20packer"},{"guid":"XKlRGYrQYosK","title":"Certbot | Certbot","index":89,"dateAdded":1662205221017000,"lastModified":1662205221017000,"id":149,"typeCode":1,"type":"text/x-moz-place","uri":"https://certbot.eff.org/en"},{"guid":"iBGPREL_l8Vu","title":"Wikipedia","index":90,"dateAdded":1662207062205000,"lastModified":1662207062205000,"id":150,"typeCode":1,"iconUri":"https://www.wikipedia.org/static/apple-touch/wikipedia.png","type":"text/x-moz-place","uri":"https://www.wikipedia.org/"},{"guid":"f5hu-YSYJFnX","title":"PageSpeed Insights","index":91,"dateAdded":1662244460577000,"lastModified":1662244460577000,"id":151,"typeCode":1,"iconUri":"https://ssl.gstatic.com/pagespeed/insights/ui/logo/favicon_48.png","type":"text/x-moz-place","uri":"https://pagespeed.web.dev/"},{"guid":"GGQQAd1y8ErA","title":"SEO for Web Developers - DEV Community 👩💻👨💻","index":92,"dateAdded":1662250316235000,"lastModified":1662250316235000,"id":152,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/deviouslab/seo-for-web-developers-m54"},{"guid":"vZDeewRrcvOH","title":"8 SEO best practices for Web Developers - DEV Community 👩💻👨💻","index":93,"dateAdded":1662250321688000,"lastModified":1662250321688000,"id":153,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/mattzajechowski/8-seo-best-practices-for-web-developers-484a"},{"guid":"vZJzJCkyE6Rn","title":"HackerNoon - read, write and learn about any technology","index":94,"dateAdded":1662265201377000,"lastModified":1662265201377000,"id":154,"typeCode":1,"iconUri":"https://hackernoon.com/favicon-16x16.png","type":"text/x-moz-place","uri":"https://hackernoon.com/"},{"guid":"jctNogB-lB5e","title":"Hacker News","index":95,"dateAdded":1662265265030000,"lastModified":1662265265030000,"id":155,"typeCode":1,"type":"text/x-moz-place","uri":"https://news.ycombinator.com/"},{"guid":"DX4ueFvPgKjX","title":"Unsplash Image API | Free HD Photo API","index":96,"dateAdded":1662268084052000,"lastModified":1662268084052000,"id":156,"typeCode":1,"type":"text/x-moz-place","uri":"https://unsplash.com/developers"},{"guid":"rh3KLUESL0jL","title":"SomaFM: All Channels sorted by Genre","index":97,"dateAdded":1662335467328000,"lastModified":1662335467328000,"id":157,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://somafm.com/listen/listeners.html"},{"guid":"qbZO7pL2RVIq","title":"PostgreSQL: Documentation: 14: CREATE TABLE","index":98,"dateAdded":1662347303950000,"lastModified":1662347303950000,"id":158,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.postgresql.org/docs/current/sql-createtable.html"},{"guid":"eoDH_YSL2JuI","title":"Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher","index":99,"dateAdded":1662349951247000,"lastModified":1662349951247000,"id":159,"typeCode":1,"iconUri":"https://www.nerdfonts.com/assets/img/favicon.ico","type":"text/x-moz-place","uri":"https://www.nerdfonts.com/cheat-sheet"},{"guid":"bmj3kzWSWvOC","title":"SMS Texting API | Keep it Simple","index":100,"dateAdded":1662376881227000,"lastModified":1662376881227000,"id":160,"typeCode":1,"iconUri":"https://textbelt.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://textbelt.com/"},{"guid":"IQmlMklBT1rX","title":"Man Pages | ManKier","index":101,"dateAdded":1662432253320000,"lastModified":1662432253320000,"id":161,"typeCode":1,"iconUri":"https://www.mankier.com/img/icons/icon-192x192.png","type":"text/x-moz-place","uri":"https://www.mankier.com/"},{"guid":"oK0Vt7qXKj6t","title":"Optimized NGINX Web Server » Webinoly","index":102,"dateAdded":1662899452673000,"lastModified":1662899452673000,"id":162,"typeCode":1,"type":"text/x-moz-place","uri":"https://webinoly.com/"},{"guid":"yVDSQ4KW-JXw","title":"MarySnopok-Portfolio-Frontend","index":103,"dateAdded":1663699002256000,"lastModified":1663699002256000,"id":163,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.mary-snopok.com/"},{"guid":"4bKK89olXqW5","title":"Wilfred Hughes::Blog","index":104,"dateAdded":1663971752916000,"lastModified":1663971752916000,"id":164,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.wilfred.me.uk/"},{"guid":"aPVhorhuzAjv","title":"♫ 1Upsmanship | Michael likes story-driven games with lots of contemplative moral quandaries and inventory management. Adam likes action-driven FPS games with gorgeous graphics and no down-time. Together, their friendship is constantly on the verge of ruin! But you can watch it all crumble before your very ears on 1Upsmanship, the pod where two lifelong gamers run one game an episode through the crucible to determine if it belongs on the Celestial Hard Drive. GAME ON.","index":105,"dateAdded":1664061141614000,"lastModified":1664061141614000,"id":165,"typeCode":1,"iconUri":"https://www.iheart.com/static/assets/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.iheart.com/podcast/1119-1upsmanship-97574019/"},{"guid":"MOH9FIW8puAY","title":"Stream Small Beans | Listen to podcast episodes online for free on SoundCloud","index":106,"dateAdded":1664061273493000,"lastModified":1664061273493000,"id":166,"typeCode":1,"iconUri":"https://a-v2.sndcdn.com/assets/images/sc-icons/ios-a62dfc8fe7.png","type":"text/x-moz-place","uri":"https://soundcloud.com/user-682532119"},{"guid":"LtRE-Jw898A3","title":"Lex Fridman Podcast - Lex Fridman","index":107,"dateAdded":1664061334578000,"lastModified":1664061334578000,"id":167,"typeCode":1,"iconUri":"https://lexfridman.com/wordpress/wp-content/uploads/2017/06/cropped-lex-favicon-4-1-192x192.png","type":"text/x-moz-place","uri":"https://lexfridman.com/podcast/"},{"guid":"B1Xt3ZHr-3O5","title":"♫ Some More News | Comedian Cody Johnston hosts this always fair, always well-researched, but most importantly, always entertaining take on the topical news of the week. Every Tuesday, Some More News dives into the world's weekly events with a mix of wit, dread, hope and compassion. Since the news cycle never stops spinning, Johnston returns every Friday for Even More News, co-hosted by Katy Stoll. Together, they present an informative and comedic spin on the viewers’ frustrations with the news that week.","index":108,"dateAdded":1664061395558000,"lastModified":1664061395558000,"id":168,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.iheart.com/podcast/269-even-more-news-29429923/"},{"guid":"6b81CbAQ9pY6","title":"Bandcamp","index":109,"dateAdded":1664068069730000,"lastModified":1664068069730000,"id":169,"typeCode":1,"iconUri":"https://s4.bcbits.com/img/favicon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://bandcamp.com/"},{"guid":"zEESSk1EmDIU","title":"Frontend Masters — Learn JavaScript, React, Vue & Angular from Masters of Front-End Development!","index":110,"dateAdded":1664147817321000,"lastModified":1664147817321000,"id":170,"typeCode":1,"iconUri":"https://frontendmasters.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://frontendmasters.com/"},{"guid":"bEqL4gn6vCBh","title":"GabMus's Dev Log","index":111,"dateAdded":1664494546605000,"lastModified":1664494546605000,"id":171,"typeCode":1,"iconUri":"https://gabmus.org/logo.svg","type":"text/x-moz-place","uri":"https://gabmus.org/"},{"guid":"4TCdLuAQ8qx_","title":"asciinema - Record and share your terminal sessions, the simple way","index":112,"dateAdded":1664604712357000,"lastModified":1664604712357000,"id":172,"typeCode":1,"iconUri":"https://asciinema.org/images/favicon-2d62dafa447cf018340b7121007568e3.png?vsn=d","type":"text/x-moz-place","uri":"https://asciinema.org/"},{"guid":"57F6Hxu_NNRp","title":"Modern CSS Reset - Andy Bell","index":113,"dateAdded":1664668959992000,"lastModified":1664668959992000,"id":173,"typeCode":1,"iconUri":"https://github.githubassets.com/favicons/favicon.svg","type":"text/x-moz-place","uri":"https://gist.github.com/Asjas/4b0736108d56197fce0ec9068145b421"},{"guid":"2Ss0KSP7J4Y0","title":"The Accessibility Tool For Your Team | Aditus","index":114,"dateAdded":1664675399426000,"lastModified":1664675399426000,"id":174,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.aditus.io/"},{"guid":"wK2tRw58FTVe","title":"Home - Orange digital accessibility guidelines","index":115,"dateAdded":1664681023452000,"lastModified":1664681023452000,"id":175,"typeCode":1,"type":"text/x-moz-place","uri":"https://a11y-guidelines.orange.com/en/"},{"guid":"NYl6oYOzEAf6","title":"https://svgsprit.es/","index":116,"dateAdded":1664735266188000,"lastModified":1664735266188000,"id":176,"typeCode":1,"type":"text/x-moz-place","uri":"https://svgsprit.es/"},{"guid":"HC0-UcUCEsxd","title":"A11Y Slider - Library for simple and accessible sliders","index":117,"dateAdded":1664748368295000,"lastModified":1664748368295000,"id":177,"typeCode":1,"iconUri":"https://a11yslider.js.org/icons/icon-512x512.png?v=c4af7354b205bfe6dac741bd322e9b02","type":"text/x-moz-place","uri":"https://a11yslider.js.org/"},{"guid":"-NpX9BbUpYan","title":"CSS-Tricks - Tips, Tricks, and Techniques on using Cascading Style Sheets.","index":118,"dateAdded":1664777023636000,"lastModified":1664777023636000,"id":178,"typeCode":1,"iconUri":"https://css-tricks.com/favicon.svg","type":"text/x-moz-place","uri":"https://css-tricks.com/"},{"guid":"_tAGEl50qO-l","title":"Free Fonts! Legit Free & Quality » Font Squirrel","index":119,"dateAdded":1664862286114000,"lastModified":1664862286114000,"id":179,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fontsquirrel.com/"},{"guid":"p70jeHw__U64","title":"Free Fonts | 98,000+ Font Downloads | FontSpace","index":120,"dateAdded":1664862750113000,"lastModified":1664862750113000,"id":180,"typeCode":1,"iconUri":"https://www.fontspace.com/android-chrome-192x192.png?v=00Bdv4Q5g6","type":"text/x-moz-place","uri":"https://www.fontspace.com/"},{"guid":"w50o9OxXNQsY","title":"README.md · master · Raphaël Bastide / libre-foundries · GitLab","index":121,"dateAdded":1664864065628000,"lastModified":1664864065628000,"id":181,"typeCode":1,"type":"text/x-moz-place","uri":"https://gitlab.com/raphaelbastide/libre-foundries/-/blob/master/README.md"},{"guid":"XUlyOyfkQBfx","title":"CSS3 Animation Cheat Sheet - Justin Aguilar","index":122,"dateAdded":1664865490755000,"lastModified":1664865490755000,"id":182,"typeCode":1,"type":"text/x-moz-place","uri":"http://www.justinaguilar.com/animations/index.html#"},{"guid":"xW2uuf5m8qwI","title":"How to Create CSS Animations on Scroll [With Examples]","index":123,"dateAdded":1664866229561000,"lastModified":1664866229561000,"id":183,"typeCode":1,"iconUri":"https://alvarotrigo.com/fullPage/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://alvarotrigo.com/blog/css-animations-scroll/"},{"guid":"PCIrI-F9IuJA","title":"Dev Snap: The Ultimate Web Developer Resource","index":124,"dateAdded":1664926200643000,"lastModified":1664926200643000,"id":184,"typeCode":1,"type":"text/x-moz-place","uri":"https://devsnap.me/"},{"guid":"zprWY7tdUmPh","title":"ColorSpace - Color Palettes Generator and Color Gradient Tool","index":125,"dateAdded":1664949260960000,"lastModified":1664949260960000,"id":185,"typeCode":1,"iconUri":"https://mycolor.space/favicon5.png","type":"text/x-moz-place","uri":"https://mycolor.space/"},{"guid":"atkkuVv8U7xF","title":"Color wheel, a color palette generator | Adobe Color","index":126,"dateAdded":1664949370868000,"lastModified":1664949370868000,"id":186,"typeCode":1,"type":"text/x-moz-place","uri":"https://color.adobe.com/create/color-wheel"},{"guid":"qpS349__50_E","title":"CSS Gradient — Generator, Maker, and Background","index":127,"dateAdded":1665021754694000,"lastModified":1665021754694000,"id":187,"typeCode":1,"iconUri":"https://cssgradient.io/images/favicon-23859487.png","type":"text/x-moz-place","uri":"https://cssgradient.io/"},{"guid":"CDrqvppqbKX3","title":"Noun Project: Free Icons & Stock Photos for Everything","index":128,"dateAdded":1665022093185000,"lastModified":1665022093185000,"id":188,"typeCode":1,"iconUri":"https://static.production.thenounproject.com/img/favicons/apple-touch-icon.7fb1143e988e.png","type":"text/x-moz-place","uri":"https://thenounproject.com/"},{"guid":"R5Fn8y8oXf-7","title":"Swiper - The Most Modern Mobile Touch Slider","index":129,"dateAdded":1665035834537000,"lastModified":1665035834537000,"id":189,"typeCode":1,"iconUri":"https://swiperjs.com/images/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://swiperjs.com/"},{"guid":"0Tx-ReKdWk1S","title":"1001 Fonts ❤ Free Fonts Baby!","index":130,"dateAdded":1665093507408000,"lastModified":1665093507408000,"id":190,"typeCode":1,"iconUri":"https://st.1001fonts.net/img/1001fonts-avatar-180x180.png","type":"text/x-moz-place","uri":"https://www.1001fonts.com/"},{"guid":"XOEQJZAdvmVh","title":"How To Use CSS Animation Easing With Different Examples","index":131,"dateAdded":1665283253859000,"lastModified":1665283253859000,"id":191,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.positioniseverything.net/css-animation-easing"},{"guid":"v8QFgTuWnmwL","title":"Creating HTML Scrollable Div: A Thorough and Step by Step Guide","index":132,"dateAdded":1665288488265000,"lastModified":1665288488265000,"id":192,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.positioniseverything.net/html-scrollable-div"},{"guid":"z2D0JNbTcoVK","title":"Owls at Dawn","index":133,"dateAdded":1665342138129000,"lastModified":1665342138129000,"id":193,"typeCode":1,"iconUri":"https://assets.squarespace.com/universal/default-favicon.ico","type":"text/x-moz-place","uri":"https://www.owlsatdawn.com/"},{"guid":"UpCA6JXjJeFQ","title":"Hex to RGBA","index":134,"dateAdded":1665550451025000,"lastModified":1665550451025000,"id":194,"typeCode":1,"iconUri":"https://rgbacolorpicker.com/favicon.svg","type":"text/x-moz-place","uri":"https://rgbacolorpicker.com/hex-to-rgba"},{"guid":"UVkvHXbWaCes","title":"HTTP Error 403 Forbidden: What It Means and How to Fix It","index":135,"dateAdded":1665606583428000,"lastModified":1665606583428000,"id":195,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.freecodecamp.org/news/http-error-403-forbidden-what-it-means-and-how-to-fix-it/"},{"guid":"gM7VjX33mgOl","title":"How to Use HTML to Open a Link in a New Tab","index":136,"dateAdded":1665630848187000,"lastModified":1665630848187000,"id":196,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.freecodecamp.org/news/how-to-use-html-to-open-link-in-new-tab/"},{"guid":"lRDbw1ZLgGSE","title":"Meta Tags Generator Tool — Website Metadata","index":137,"dateAdded":1665640014100000,"lastModified":1665640014100000,"id":197,"typeCode":1,"iconUri":"https://websitemetadata.com/images/favicon.png","type":"text/x-moz-place","uri":"https://websitemetadata.com/meta-tags-generator"},{"guid":"KZN6chS9-J-o","title":"Responsive Web Design – How to Make a Website Look Good on Phones and Tablets","index":138,"dateAdded":1665722128580000,"lastModified":1665722128580000,"id":198,"typeCode":1,"iconUri":"https://cdn.freecodecamp.org/universal/favicons/favicon.ico","type":"text/x-moz-place","uri":"https://www.freecodecamp.org/news/responsive-web-design-how-to-make-a-website-look-good-on-phones-and-tablets/"},{"guid":"uN6ppKMgVyUw","title":"Responsive Web Design – How to Make a Website Look Good on Phones and Tablets","index":139,"dateAdded":1665722222312000,"lastModified":1665722222312000,"id":199,"typeCode":1,"iconUri":"https://cdn.freecodecamp.org/universal/favicons/favicon.ico","type":"text/x-moz-place","uri":"file:///home/brian/Documents/notes/web_resources/articles_responsive/fcc_responsve-web-design-how-to-make-a-website-look-good-on-phones-and-tablets.html"},{"guid":"J760ijboMbdR","title":"cpupower command - Adjust CPU frequency - LinuxStar","index":140,"dateAdded":1665723648978000,"lastModified":1665723648978000,"id":200,"typeCode":1,"type":"text/x-moz-place","uri":"https://linuxstar.info/cpupower/"},{"guid":"4eQ78rwzgNzz","title":"Contact form with HTML, CSS, and Javascript - StackHowTo","index":141,"dateAdded":1665804843674000,"lastModified":1665804843674000,"id":201,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackhowto.com/contact-form-with-html-css-and-javascript/"},{"guid":"WTvLiQpueipJ","title":"Hi, I'm Austin Gil. I write about code and stuff.","index":142,"dateAdded":1665896958300000,"lastModified":1665896958300000,"id":202,"typeCode":1,"iconUri":"https://cdn.statically.io/img/austingil.com/wp-content/uploads/favicon.svg","type":"text/x-moz-place","uri":"https://austingil.com/"},{"guid":"HCoAQp9NUq9b","title":"hCaptcha - Stop more bots. Start protecting privacy.","index":143,"dateAdded":1665897127863000,"lastModified":1665897127863000,"id":203,"typeCode":1,"iconUri":"https://assets-global.website-files.com/629d9c19da6544f17c9cbb3e/629d9c19da6544c7e19cbc12_hcaptcha-symbol-256.png","type":"text/x-moz-place","uri":"https://www.hcaptcha.com/"},{"guid":"BLZgaMa6UXgL","title":"Lucide","index":144,"dateAdded":1665948340871000,"lastModified":1665948340871000,"id":204,"typeCode":1,"type":"text/x-moz-place","uri":"https://lucide.dev/"},{"guid":"QjJZJVSap_Ak","title":"IconSearch: Instant icon search for SVG icons","index":145,"dateAdded":1665948452307000,"lastModified":1665948452307000,"id":205,"typeCode":1,"type":"text/x-moz-place","uri":"https://iconsear.ch/"},{"guid":"pakGBFwbOszp","title":"Feather – Simply beautiful open source icons","index":146,"dateAdded":1665948533693000,"lastModified":1665948533693000,"id":206,"typeCode":1,"type":"text/x-moz-place","uri":"https://feathericons.com/"},{"guid":"vSgAemFNWhSh","title":"Screen Sizes | Viewport Sizes and Pixel Densities for Popular Devices","index":147,"dateAdded":1665950401457000,"lastModified":1665950401457000,"id":207,"typeCode":1,"iconUri":"https://screensizes-production-04411863.s3.us-east-1.amazonaws.com/static/images/favicon.png","type":"text/x-moz-place","uri":"https://screensiz.es/"},{"guid":"hKrLYvlsb-uQ","title":"leafbytes","index":148,"dateAdded":1666322302558000,"lastModified":1666322302558000,"id":208,"typeCode":1,"iconUri":"http://127.0.0.1:8080/favicon.svg","type":"text/x-moz-place","uri":"http://127.0.0.1:8080/"},{"guid":"OmGhbJY6DcZM","title":"Matthew James Taylor: Artist. Designer. Author.","index":149,"dateAdded":1666325690038000,"lastModified":1666325690038000,"id":209,"typeCode":1,"type":"text/x-moz-place","uri":"https://matthewjamestaylor.com/"},{"guid":"kbVZaeZ9bQhb","title":"The HTTP crash course nobody asked for","index":150,"dateAdded":1666423039219000,"lastModified":1666423039219000,"id":210,"typeCode":1,"type":"text/x-moz-place","uri":"https://fasterthanli.me/articles/the-http-crash-course-nobody-asked-for#making-http-1-1-requests-with-reqwest"},{"guid":"hudf9-3kYtPi","title":"fasterthanli.me","index":151,"dateAdded":1666424522843000,"lastModified":1666424522843000,"id":211,"typeCode":1,"type":"text/x-moz-place","uri":"https://fasterthanli.me/"},{"guid":"LPgFK8mqDqOi","title":"Interrupt | A community and blog for embedded software makers","index":152,"dateAdded":1666945495602000,"lastModified":1666945495602000,"id":212,"typeCode":1,"iconUri":"https://interrupt.memfault.com/img/favicon.png","type":"text/x-moz-place","uri":"https://interrupt.memfault.com/"},{"guid":"520Bu97BZKCk","title":"This Person Does Not Exist","index":153,"dateAdded":1667181509437000,"lastModified":1667181509437000,"id":213,"typeCode":1,"type":"text/x-moz-place","uri":"https://thispersondoesnotexist.com/"},{"guid":"-nw-W7UIb1tr","title":"The Open Source Firebase Alternative | Supabase","index":154,"dateAdded":1667181548784000,"lastModified":1667181548784000,"id":214,"typeCode":1,"iconUri":"https://supabase.com/favicon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://supabase.com/"},{"guid":"eXSqobhTael9","title":"PocketBase - Open Source backend in 1 file","index":155,"dateAdded":1667181556951000,"lastModified":1667181556951000,"id":215,"typeCode":1,"iconUri":"https://pocketbase.io/images/favicon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://pocketbase.io/"},{"guid":"Hyr4bGsbXp9G","title":"Home · Solid","index":156,"dateAdded":1667181588734000,"lastModified":1667181588734000,"id":216,"typeCode":1,"type":"text/x-moz-place","uri":"https://solidproject.org/"},{"guid":"_saa6Q8ypk4H","title":"GitHub - darkreader/darkreader: Dark Reader Chrome and Firefox extension","index":157,"dateAdded":1667276221139000,"lastModified":1667276221139000,"id":217,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/darkreader/darkreader"},{"guid":"VxQYtEWnJcfY","title":"Brittany Chiang","index":158,"dateAdded":1667278950304000,"lastModified":1667278950304000,"id":218,"typeCode":1,"iconUri":"https://brittanychiang.com/icons/icon-512x512.png?v=dedd91ab2778735e31d0a7ccbb422fb7","type":"text/x-moz-place","uri":"https://brittanychiang.com/"},{"guid":"JacjQUL26Umb","title":"Building Super Powered HTML Forms with JavaScript","index":159,"dateAdded":1667441274220000,"lastModified":1667441274220000,"id":219,"typeCode":1,"type":"text/x-moz-place","uri":"https://austingil.com/building-super-powered-html-forms-with-javascript/"},{"guid":"nsM76GtYjnl3","title":"Wikimedia Commons","index":160,"dateAdded":1667446462083000,"lastModified":1667446462083000,"id":220,"typeCode":1,"iconUri":"https://commons.wikimedia.org/static/apple-touch/commons.png","type":"text/x-moz-place","uri":"https://commons.wikimedia.org/wiki/Main_Page"},{"guid":"Hg_yMbYeWDS5","title":"Text editor - Wikipedia","index":161,"dateAdded":1667868961728000,"lastModified":1667868961728000,"id":221,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Text_editor"},{"guid":"CJkAo-x4LXSR","title":"Lobsters","index":162,"dateAdded":1667875452342000,"lastModified":1667875452342000,"id":222,"typeCode":1,"type":"text/x-moz-place","uri":"https://lobste.rs/"},{"guid":"7Wmua_ywTZSa","title":"Basic Latin — ✔️ ❤️ ★ Unicode Character Table","index":163,"dateAdded":1668131260527000,"lastModified":1668131260527000,"id":223,"typeCode":1,"type":"text/x-moz-place","uri":"https://unicode-table.com/en/"},{"guid":"tsoF2UUvWh_5","title":"Marc André Tanner","index":164,"dateAdded":1668325445989000,"lastModified":1668325445989000,"id":224,"typeCode":1,"iconUri":"https://www.brain-dump.org/images/favicon.svg","type":"text/x-moz-place","uri":"https://www.brain-dump.org/"},{"guid":"JKq5-oQ9ITQf","title":"JSONPlaceholder - Free Fake REST API","index":165,"dateAdded":1668668870132000,"lastModified":1668668870132000,"id":225,"typeCode":1,"type":"text/x-moz-place","uri":"https://jsonplaceholder.typicode.com/"},{"guid":"uI_4eTxk8yx7","title":"chiark home page","index":166,"dateAdded":1668749272376000,"lastModified":1668749272376000,"id":226,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://www.chiark.greenend.org.uk/"},{"guid":"_YDjVoqTgFRr","title":"systemd - Wikipedia","index":167,"dateAdded":1668926659417000,"lastModified":1668926659417000,"id":227,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Systemd#Reception"},{"guid":"-gFpDAikE59t","title":"Intel - Wikipedia","index":168,"dateAdded":1669007037982000,"lastModified":1669007037982000,"id":228,"typeCode":1,"iconUri":"https://en.wikipedia.org/static/apple-touch/wikipedia.png","type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Intel"},{"guid":"0WWMw50U-cQg","title":"Process Supervision: Solved Problem | jtimberman’s blog","index":169,"dateAdded":1669268975206000,"lastModified":1669268975206000,"id":229,"typeCode":1,"type":"text/x-moz-place","uri":"https://jtimberman.housepub.org/blog/2012/12/29/process-supervision-solved-problem"},{"guid":"sffrsKAwYfqy","title":"jtimberman’s blog | Operations, Automation, Deployment, Workflows, DevOps; see my About page for ways you can support me.","index":170,"dateAdded":1669270759356000,"lastModified":1669270759356000,"id":230,"typeCode":1,"type":"text/x-moz-place","uri":"https://jtimberman.housepub.org/"},{"guid":"R9mWL5kHtJbh","title":"Reclaim Hosting – Take Control of your Digital Identity","index":171,"dateAdded":1669354935587000,"lastModified":1669354935587000,"id":231,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.reclaimhosting.com/"},{"guid":"gWY0wN6ou4PH","title":"Without Systemd","index":172,"dateAdded":1669422452715000,"lastModified":1669422452715000,"id":232,"typeCode":1,"type":"text/x-moz-place","uri":"https://without-systemd.org/wiki/index_php/Main_Page/"},{"guid":"cF6ZrhOijhd7","title":"Pelican – A Python Static Site Generator","index":173,"dateAdded":1669423174866000,"lastModified":1669423174866000,"id":233,"typeCode":1,"type":"text/x-moz-place","uri":"https://getpelican.com/"},{"guid":"OAfk_2YU3P_C","title":"Search | Quetre","index":174,"dateAdded":1669591137319000,"lastModified":1669591137319000,"id":234,"typeCode":1,"iconUri":"https://quetre.iket.me/icon.svg","type":"text/x-moz-place","uri":"https://quetre.iket.me/"},{"guid":"ejYjKSybOktJ","title":"Free Download Books","index":175,"dateAdded":1669678574861000,"lastModified":1669678574861000,"id":235,"typeCode":1,"iconUri":"https://oceanofpdf.com/wp-content/uploads/2019/09/cropped-favicon-4-192x192.png","type":"text/x-moz-place","uri":"https://oceanofpdf.com/"},{"guid":"wErcy8gJDSNf","title":"Murena - deGoogled phones and services","index":176,"dateAdded":1669679196587000,"lastModified":1669679196587000,"id":236,"typeCode":1,"type":"text/x-moz-place","uri":"https://murena.com/"},{"guid":"822hngy2FD4E","title":"Vim Works","index":177,"dateAdded":1669679453873000,"lastModified":1669679453873000,"id":237,"typeCode":1,"type":"text/x-moz-place","uri":"https://vim.works/"},{"guid":"zWvBbe8aSbAt","title":"Tom M","index":178,"dateAdded":1669679833855000,"lastModified":1669679833855000,"id":238,"typeCode":1,"type":"text/x-moz-place","uri":"https://tmewett.com/"},{"guid":"-BWGx9EecSWX","title":"Éric Lévénez's site","index":179,"dateAdded":1669679892956000,"lastModified":1669679892956000,"id":239,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://levenez.com/"},{"guid":"VjJeN0PKN64_","title":"Tech streams, blogs and code tutorials","index":180,"dateAdded":1669679971160000,"lastModified":1669679971160000,"id":240,"typeCode":1,"iconUri":"https://whitep4nth3r.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://whitep4nth3r.com/"},{"guid":"hE-qCmJfFjf4","title":"Eleventy, a simpler static site generator","index":181,"dateAdded":1669680021236000,"lastModified":1669680021236000,"id":241,"typeCode":1,"iconUri":"https://www.11ty.dev/img/favicon.png","type":"text/x-moz-place","uri":"https://www.11ty.dev/"},{"guid":"NtiMOBULcIbi","title":"Regex Tester and Debugger Online - Javascript, PCRE, PHP","index":182,"dateAdded":1669693412705000,"lastModified":1669693412705000,"id":242,"typeCode":1,"iconUri":"https://dpidudyah7i0b.cloudfront.net/favicon.ico","type":"text/x-moz-place","uri":"https://www.regextester.com/"},{"guid":"Wu37izlaVh9_","title":"quetre | Quetre","index":183,"dateAdded":1669702197725000,"lastModified":1669702197725000,"id":243,"typeCode":1,"type":"text/x-moz-place","uri":"https://quetre.iket.me/search?q=quetre"},{"guid":"q4rmUNCIIWUq","title":"Planet Debian","index":184,"dateAdded":1669765254128000,"lastModified":1669765254128000,"id":244,"typeCode":1,"iconUri":"https://planet.debian.org/common/favicon.ico","type":"text/x-moz-place","uri":"https://planet.debian.org/"},{"guid":"ItqYiP1OdAXn","title":"#727708 - tech-ctte: Decide which init system to default to in Debian. - Debian Bug report logs","index":185,"dateAdded":1669795201968000,"lastModified":1669795201968000,"id":245,"typeCode":1,"type":"text/x-moz-place","uri":"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727708#7395"},{"guid":"tpU6mKzuu1Zi","title":"» Linux Magazine","index":186,"dateAdded":1669795779790000,"lastModified":1669795779790000,"id":246,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.linux-magazine.com/"},{"guid":"rIOQHu4ByW7K","title":"Petter Reinholdtsen","index":187,"dateAdded":1669865296116000,"lastModified":1669865296116000,"id":247,"typeCode":1,"type":"text/x-moz-place","uri":"https://people.skolelinux.org/pere/blog/"},{"guid":"AYUb-KyhN1El","title":"OpenStreetMap","index":188,"dateAdded":1669957633006000,"lastModified":1669957633006000,"id":248,"typeCode":1,"iconUri":"https://www.openstreetmap.org/assets/favicon-194x194-79d3fb0152c735866e64b1d7535d504483cd13c2fad0131a6142bd9629d30de2.png","type":"text/x-moz-place","uri":"https://www.openstreetmap.org/"},{"guid":"iXZcoGQ_Qb1T","title":"LKML.ORG - the Linux Kernel Mailing List Archive","index":189,"dateAdded":1669958994176000,"lastModified":1669958994176000,"id":249,"typeCode":1,"type":"text/x-moz-place","uri":"https://lkml.org/"},{"guid":"wKKkiPQs7ueh","title":"The Valuable Dev","index":190,"dateAdded":1670047829659000,"lastModified":1670047829659000,"id":250,"typeCode":1,"iconUri":"https://thevaluable.dev/images/favicon.png","type":"text/x-moz-place","uri":"https://thevaluable.dev/"},{"guid":"FJT3mV2fJU7C","title":"Blog - paritybit.ca","index":191,"dateAdded":1670144754212000,"lastModified":1670144754212000,"id":251,"typeCode":1,"iconUri":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABX1BMVEUAAAABAAAAAAAAAAAAAAAAAAAAAAC7amoAAABlPz8AAAAAAAAGAwMAAAAAAAAAAAC7d3cKBwe7d3e7d3eWX1/ny4+WX18CAQGHVlaTXl4BAAApGhpiPj7ny4/ny4/oy4/ozI/qz5Ona2u7d3d4TEzny48MCAhlQEC7d3e7d3cAAAAAAAC7d3e8d3cAAAC8d3fnzI+8dnYAAADpzJC9eHjny4+WX1+TXV13S0u7d3fny492S0vnzI/ny4+EU1PnzI8mFxe7d3cjFhZgPT3ny5AAAAC7d3fny4+7d3cAAADozJC6d3e7d3cAAADozI/my5Dny44AAAAAAAC7d3e4d3fkx5DpzY69c3O7d3eoamroy4+FVVWEVFR0Skq7d3e7d3e8d3cAAAC6eHi7eHi7eHi8dna8dnYAAADozJAAAADkyY28eXnqyJHqzY63eHi/dXXny48AAAC7d3e5dXW2dHSjLYEdAAAAcHRSTlMA9cj58gYaBOrflhjq44MI/ePbaP348u/u6Oba1sW+oosL/Pbv7ejnyLuXlI54RkM8Oy4iG/v38efl4ODf2tfT09LQz87FwbeimJeJf397ZUlIRTQvGxYP9/Xv4ODZz86yk4JxYlRQSjctJiYlJCAYM3tXUgAAAg1JREFUOMttk1V3ImEQRO8MQ3CChACBIHF3l427+7q7Tjfz/88+sNhk67Vuf3K6CuryXo2Yfo/HbwYnvDxW25EldVnBNpfdHjVErO2dJ9nsk51tS8SItreMmyLxV46qakxVndW4iNl0yExEjHxFEyfTcz7f3PT7La0EDInM1PxQRMJZTSQbE5OvtbNLuv6d0W5K1zM99DXf6RvTnrCY1XdExcjqKcD9RbFQKF7cAyS105AoQJsheT0EyqWUbdu2badKZeBEA2KFgCOJVxI+uNu169q9A4YqAxIEryWr+hnKG3aTNsowrX2S9vJFLGcLOLZbdAwMO4ZMMCKbegq/5luB+VlIak6CmJLXGzi3XTqHOQ2IiV9e6gMU3EABeJoRPx7p7AXW3cA6kOgQTw1YcwNrNcAvL/QBut1AN9CbET+m5PUWSm6gBH90UEyCsqnjMOUGvsJHzckoV2I4Q8BBq38AvHUMucZryZJOwmx/s98/C7exPkl7YUTilTc+mHre5E8Bw5UBGa2uO6BjwPf6T7p/AuM6WF03UTEWNQlwWVxJpVaKlwCfYgseOatFLtyjYy2RYzzWE5Y9byO0izo02bBv9nUhXA9tNfaBiu5/+OED3+/ksFYGPRL55irOkqOqy8sxVadvQGQv9Kh6Ri6Q6ejIBHKGiHXmLnAomG6UNz0a+k+/vRPBav3fXTdN/wUXrszXABeiEwAAAABJRU5ErkJggg==","type":"text/x-moz-place","uri":"http://www.paritybit.ca/blog/"},{"guid":"D4Wu5pJO8Q4R","title":"Textplain","index":192,"dateAdded":1670148177506000,"lastModified":1670148177506000,"id":252,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://textplain.net/"},{"guid":"mK6vG9DljM24","title":"Advent of Code 2022","index":193,"dateAdded":1670150894282000,"lastModified":1670150894282000,"id":253,"typeCode":1,"iconUri":"https://adventofcode.com/favicon.png","type":"text/x-moz-place","uri":"https://adventofcode.com/"},{"guid":"XdYgR6AHjexT","title":"regex101: build, test, and debug regex","index":194,"dateAdded":1670206063727000,"lastModified":1670206063727000,"id":254,"typeCode":1,"type":"text/x-moz-place","uri":"https://regex101.com/"},{"guid":"TaOruqjLjQxs","title":"Choose an open source license | Choose a License","index":195,"dateAdded":1670371791654000,"lastModified":1670371791654000,"id":255,"typeCode":1,"type":"text/x-moz-place","uri":"https://choosealicense.com/"},{"guid":"rMgcsiRTXGH9","title":"Contributor Covenant: A Code of Conduct for Open Source and Other Digital Commons Communities","index":196,"dateAdded":1670375952607000,"lastModified":1670375952607000,"id":256,"typeCode":1,"iconUri":"https://www.contributor-covenant.org/images/favicon.ico","type":"text/x-moz-place","uri":"https://www.contributor-covenant.org/"},{"guid":"qZbrak8Duaq6","title":"The Homepage of Safia Abdalla","index":197,"dateAdded":1670377974614000,"lastModified":1670377974614000,"id":257,"typeCode":1,"type":"text/x-moz-place","uri":"https://safia.rocks/"},{"guid":"ibl3DH0jz7nW","title":"How to Create a man Page on Linux","index":198,"dateAdded":1670382863150000,"lastModified":1670382863150000,"id":258,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.howtogeek.com/682871/how-to-create-a-man-page-on-linux/"},{"guid":"4syk-BdvJplc","title":"Linux source code (v6.0.11) - Bootlin","index":199,"dateAdded":1670454266744000,"lastModified":1670454266744000,"id":259,"typeCode":1,"type":"text/x-moz-place","uri":"https://elixir.bootlin.com/linux/latest/source"},{"guid":"IIy_CXgh1dm9","title":"z3rOR0ne/upnup - upnup - Codeberg.org","index":200,"dateAdded":1670491256208000,"lastModified":1670491256208000,"id":260,"typeCode":1,"iconUri":"https://design.codeberg.org/logo-kit/favicon.svg","type":"text/x-moz-place","uri":"https://codeberg.org/z3rOR0ne/upnup"},{"guid":"BrGIHDylcwwM","title":"Proton Mail — Get a private, secure, and encrypted email","index":201,"dateAdded":1670634261868000,"lastModified":1670634261868000,"id":261,"typeCode":1,"iconUri":"https://proton.me/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://proton.me/mail"},{"guid":"V9ArGaxb7RpJ","title":"Typical Programmer","index":202,"dateAdded":1670717932617000,"lastModified":1670717932617000,"id":262,"typeCode":1,"type":"text/x-moz-place","uri":"https://typicalprogrammer.com/"},{"guid":"LN8NnWVJktao","title":"oidoid","index":203,"dateAdded":1670718069813000,"lastModified":1670718069813000,"id":263,"typeCode":1,"type":"text/x-moz-place","uri":"https://oidoid.com/"},{"guid":"DzX1i4soA6y4","title":"HNPDF","index":204,"dateAdded":1670718216307000,"lastModified":1670718216307000,"id":264,"typeCode":1,"type":"text/x-moz-place","uri":"https://hnpdf.com/latest"},{"guid":"mvqobqprhqZZ","title":"anuraghazra/github-readme-stats: Dynamically generated stats for your github readmes","index":205,"dateAdded":1671169003183000,"lastModified":1671169003183000,"id":265,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/anuraghazra/github-readme-stats"},{"guid":"BhsnBRryD57N","title":"Welcome! - paritybit.ca","index":206,"dateAdded":1671254667244000,"lastModified":1671254667244000,"id":266,"typeCode":1,"iconUri":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABX1BMVEUAAAABAAAAAAAAAAAAAAAAAAAAAAC7amoAAABlPz8AAAAAAAAGAwMAAAAAAAAAAAC7d3cKBwe7d3e7d3eWX1/ny4+WX18CAQGHVlaTXl4BAAApGhpiPj7ny4/ny4/oy4/ozI/qz5Ona2u7d3d4TEzny48MCAhlQEC7d3e7d3cAAAAAAAC7d3e8d3cAAAC8d3fnzI+8dnYAAADpzJC9eHjny4+WX1+TXV13S0u7d3fny492S0vnzI/ny4+EU1PnzI8mFxe7d3cjFhZgPT3ny5AAAAC7d3fny4+7d3cAAADozJC6d3e7d3cAAADozI/my5Dny44AAAAAAAC7d3e4d3fkx5DpzY69c3O7d3eoamroy4+FVVWEVFR0Skq7d3e7d3e8d3cAAAC6eHi7eHi7eHi8dna8dnYAAADozJAAAADkyY28eXnqyJHqzY63eHi/dXXny48AAAC7d3e5dXW2dHSjLYEdAAAAcHRSTlMA9cj58gYaBOrflhjq44MI/ePbaP348u/u6Oba1sW+oosL/Pbv7ejnyLuXlI54RkM8Oy4iG/v38efl4ODf2tfT09LQz87FwbeimJeJf397ZUlIRTQvGxYP9/Xv4ODZz86yk4JxYlRQSjctJiYlJCAYM3tXUgAAAg1JREFUOMttk1V3ImEQRO8MQ3CChACBIHF3l427+7q7Tjfz/88+sNhk67Vuf3K6CuryXo2Yfo/HbwYnvDxW25EldVnBNpfdHjVErO2dJ9nsk51tS8SItreMmyLxV46qakxVndW4iNl0yExEjHxFEyfTcz7f3PT7La0EDInM1PxQRMJZTSQbE5OvtbNLuv6d0W5K1zM99DXf6RvTnrCY1XdExcjqKcD9RbFQKF7cAyS105AoQJsheT0EyqWUbdu2badKZeBEA2KFgCOJVxI+uNu169q9A4YqAxIEryWr+hnKG3aTNsowrX2S9vJFLGcLOLZbdAwMO4ZMMCKbegq/5luB+VlIak6CmJLXGzi3XTqHOQ2IiV9e6gMU3EABeJoRPx7p7AXW3cA6kOgQTw1YcwNrNcAvL/QBut1AN9CbET+m5PUWSm6gBH90UEyCsqnjMOUGvsJHzckoV2I4Q8BBq38AvHUMucZryZJOwmx/s98/C7exPkl7YUTilTc+mHre5E8Bw5UBGa2uO6BjwPf6T7p/AuM6WF03UTEWNQlwWVxJpVaKlwCfYgseOatFLtyjYy2RYzzWE5Y9byO0izo02bBv9nUhXA9tNfaBiu5/+OED3+/ksFYGPRL55irOkqOqy8sxVadvQGQv9Kh6Ri6Q6ejIBHKGiHXmLnAomG6UNz0a+k+/vRPBav3fXTdN/wUXrszXABeiEwAAAABJRU5ErkJggg==","type":"text/x-moz-place","uri":"https://www.paritybit.ca/"},{"guid":"nSYmph_tgH_F","title":"lowdown — simple markdown translator","index":207,"dateAdded":1671256913682000,"lastModified":1671256913682000,"id":267,"typeCode":1,"type":"text/x-moz-place","uri":"https://kristaps.bsd.lv/lowdown/"},{"guid":"8_hW0VSEFJy-","title":"sblg: static blog utility","index":208,"dateAdded":1671256969489000,"lastModified":1671256969489000,"id":268,"typeCode":1,"type":"text/x-moz-place","uri":"https://kristaps.bsd.lv/sblg/"},{"guid":"aZg_LAYQ3Wf8","title":"Not Awful UW Photos","index":209,"dateAdded":1671256976567000,"lastModified":1671256976567000,"id":269,"typeCode":1,"iconUri":"https://kristaps.bsd.lv/logo.jpg","type":"text/x-moz-place","uri":"https://kristaps.bsd.lv/"},{"guid":"ckYFjv-DR0Sc","title":"Can I use... Support tables for HTML5, CSS3, etc","index":210,"dateAdded":1671335306571000,"lastModified":1671335306571000,"id":270,"typeCode":1,"iconUri":"https://caniuse.com/img/favicon-128.png","type":"text/x-moz-place","uri":"https://caniuse.com/"},{"guid":"GwkAXOPZrc_H","title":"Most Reliable App & Cross Browser Testing Platform | BrowserStack","index":211,"dateAdded":1671335334908000,"lastModified":1671335334908000,"id":271,"typeCode":1,"iconUri":"https://browserstack.wpenginepowered.com/wp-content/themes/browserstack/img/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.browserstack.com/"},{"guid":"Pl-q6QHYfGli","title":"Espanso - A Privacy-first, Cross-platform Text Expander","index":212,"dateAdded":1671348150736000,"lastModified":1671348150736000,"id":272,"typeCode":1,"iconUri":"https://espanso.org/img/favicon.ico","type":"text/x-moz-place","uri":"https://espanso.org/"},{"guid":"kMc6Ykyhm6XZ","title":"Forgejo – Beyond coding. We forge.","index":213,"dateAdded":1671426498644000,"lastModified":1671426498644000,"id":273,"typeCode":1,"iconUri":"https://forgejo.org/favicon.svg","type":"text/x-moz-place","uri":"https://forgejo.org/"},{"guid":"tKBA96Ek2LQe","title":"Vahid Naeini","index":214,"dateAdded":1671522890430000,"lastModified":1671522890430000,"id":274,"typeCode":1,"type":"text/x-moz-place","uri":"https://iamv.ir/"},{"guid":"O8TCxXUU7ew7","title":"terminal.sexy - Terminal Color Scheme Designer","index":215,"dateAdded":1671529486018000,"lastModified":1671529486018000,"id":275,"typeCode":1,"type":"text/x-moz-place","uri":"https://terminal.sexy/"},{"guid":"mr1JBp8wBHOS","title":"75 Zsh Commands, Plugins, Aliases and Tools - SitePoint","index":216,"dateAdded":1671601474490000,"lastModified":1671601474490000,"id":276,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.sitepoint.com/zsh-commands-plugins-aliases-tools/"},{"guid":"cW91o5ftbACQ","title":"rgb/hex converter syntax - how does this work? : bash","index":217,"dateAdded":1671613132967000,"lastModified":1671613132967000,"id":277,"typeCode":1,"type":"text/x-moz-place","uri":"https://teddit.net/r/bash/comments/zqmvz8/rgbhex_converter_syntax_how_does_this_work/"},{"guid":"2RID-ybGAJPR","title":"How to extract a number from a string using Bash example - Linux Tutorials - Learn Linux Configuration","index":218,"dateAdded":1671686720531000,"lastModified":1671686720531000,"id":278,"typeCode":1,"iconUri":"https://linuxconfig.org/wp-content/uploads/2021/08/cropped-android-chrome-512x512-1-192x192.png","type":"text/x-moz-place","uri":"https://linuxconfig.org/how-to-extract-number-from-a-string-using-bash-example"},{"guid":"7hQd47-F1xnA","title":"GitHub - user234683/youtube-local: browser-based client for watching Youtube anonymously and with greater page performance","index":219,"dateAdded":1671784372610000,"lastModified":1671784372610000,"id":279,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/user234683/youtube-local"},{"guid":"zKL7nibxpOEy","title":"Twine / An open-source tool for telling interactive, nonlinear stories","index":220,"dateAdded":1671784464887000,"lastModified":1671784464887000,"id":280,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://twinery.org/?ref=producthunt"},{"guid":"B3Xs0Q9ewiby","title":"Just a moment...","index":221,"dateAdded":1671784582955000,"lastModified":1671784582955000,"id":281,"typeCode":1,"type":"text/x-moz-place","uri":"https://chat.openai.com/"},{"guid":"v-8eYEUrNh8x","title":"wolfgang linux - Invidious","index":222,"dateAdded":1671786379289000,"lastModified":1671786379289000,"id":282,"typeCode":1,"type":"text/x-moz-place","uri":"https://inv.riverside.rocks/search?q=wolfgang+linux"},{"guid":"TQawL7z4IPSn","title":"BugsWriter - Invidious","index":223,"dateAdded":1671787442082000,"lastModified":1671787442082000,"id":283,"typeCode":1,"type":"text/x-moz-place","uri":"https://inv.riverside.rocks/channel/UCngn7SVujlvskHRvRKc1cTw?page=1&sort_by=popular"},{"guid":"8Osw6KYq4FVG","title":"Drew DeVault's blog","index":224,"dateAdded":1671790384669000,"lastModified":1671790384669000,"id":284,"typeCode":1,"iconUri":"https://drewdevault.com/avatar.png","type":"text/x-moz-place","uri":"https://drewdevault.com/"},{"guid":"_AO-H9uVo84F","title":"Color Designer - Simple Color Palette Generator","index":225,"dateAdded":1671923256607000,"lastModified":1671923256607000,"id":285,"typeCode":1,"iconUri":"https://colordesigner.io/favicons/favicon-16x16.png","type":"text/x-moz-place","uri":"https://colordesigner.io/"},{"guid":"JDD9Gi69xSCt","title":"Convert HSL to RGB - Colordesigner","index":226,"dateAdded":1671952045146000,"lastModified":1671952045146000,"id":286,"typeCode":1,"iconUri":"https://colordesigner.io/favicons/favicon-16x16.png","type":"text/x-moz-place","uri":"https://colordesigner.io/convert/hsltorgb"},{"guid":"UikP87F1OyEy","title":"Axon Flux // A Ruby on Rails Blog","index":227,"dateAdded":1672104111919000,"lastModified":1672104111919000,"id":287,"typeCode":1,"type":"text/x-moz-place","uri":"https://axonflux.com/"},{"guid":"h7M1EaIb20Ta","title":"converting hsl to rgb in bash : bash","index":228,"dateAdded":1672108209921000,"lastModified":1672108209921000,"id":288,"typeCode":1,"type":"text/x-moz-place","uri":"https://teddit.pussthecat.org/r/bash/comments/zut4nw/converting_hsl_to_rgb_in_bash/"},{"guid":"YsTE3FH3WEX_","title":"NPR - Breaking News, Analysis, Music, Arts & Podcasts : NPR","index":229,"dateAdded":1672358114797000,"lastModified":1672358114797000,"id":289,"typeCode":1,"iconUri":"https://static-assets.npr.org/static/images/favicon/favicon-180x180.png","type":"text/x-moz-place","uri":"https://www.npr.org/"},{"guid":"ybmeejmQnt9w","title":"bugswriter's website","index":230,"dateAdded":1672465607248000,"lastModified":1672465607248000,"id":290,"typeCode":1,"type":"text/x-moz-place","uri":"https://bugswriter.com/"},{"guid":"MZZL-iEk7f5g","title":"Zola","index":231,"dateAdded":1672465735022000,"lastModified":1672465735022000,"id":291,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.getzola.org/"},{"guid":"W8rwjEvtJ5HZ","title":"Code Review Stack Exchange","index":232,"dateAdded":1672468798543000,"lastModified":1672468798543000,"id":292,"typeCode":1,"iconUri":"https://cdn.sstatic.net/Sites/codereview/Img/apple-touch-icon.png?v=0a72875519a4","type":"text/x-moz-place","uri":"https://codereview.stackexchange.com/"},{"guid":"x5GVZU8hny84","title":"Pages - NotABug.org: Free code hosting","index":233,"dateAdded":1672561969276000,"lastModified":1672561969276000,"id":293,"typeCode":1,"iconUri":"https://notabug.org/img/icon-240.png","type":"text/x-moz-place","uri":"https://notabug.org/nbatman/freemediaheckyeah/wiki/_pages"},{"guid":"tJhOnquMXpfX","title":"GitHub - Igglybuff/awesome-piracy: A curated list of awesome warez and piracy links","index":234,"dateAdded":1672562046340000,"lastModified":1672562046340000,"id":294,"typeCode":1,"iconUri":"https://github.githubassets.com/favicons/favicon.svg","type":"text/x-moz-place","uri":"https://github.com/Igglybuff/awesome-piracy#tracker-invites"},{"guid":"YGgQhjYcMwMf","title":"API Reference | Vue.js","index":235,"dateAdded":1672722414382000,"lastModified":1672722414382000,"id":295,"typeCode":1,"iconUri":"https://vuejs.org/logo.svg","type":"text/x-moz-place","uri":"https://vuejs.org/api/"},{"guid":"2xBbvNdvB5H1","title":"leafbytes","index":236,"dateAdded":1672796826278000,"lastModified":1672796826278000,"id":296,"typeCode":1,"iconUri":"http://localhost:5173/favicon.svg","type":"text/x-moz-place","uri":"http://localhost:5173/"},{"guid":"3Pxhangv6e4N","title":"BuiltWith Technology Lookup","index":237,"dateAdded":1672822703735000,"lastModified":1672822703735000,"id":297,"typeCode":1,"iconUri":"https://d28rh9vvmrd65v.cloudfront.net/img/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://builtwith.com/"},{"guid":"zcrq442FtkoC","title":"JavaScript Jobs - OnSite and Remote JavaScript Jobs - January 2022","index":238,"dateAdded":1672824054168000,"lastModified":1672824054168000,"id":298,"typeCode":1,"type":"text/x-moz-place","uri":"https://javascriptjob.xyz/"},{"guid":"zvTraxCIR0SA","title":"leafbytes","index":239,"dateAdded":1672904772877000,"lastModified":1672904772877000,"id":299,"typeCode":1,"iconUri":"http://localhost:5173/favicon.svg","type":"text/x-moz-place","uri":"http://localhost:5173/home"},{"guid":"iwEXa4oRpxhV","title":"Vue.js jobs – Browse through dozens of Vue.js openings","index":240,"dateAdded":1673170090313000,"lastModified":1673170090313000,"id":300,"typeCode":1,"iconUri":"https://vuejobs.com/vuejobs.webp","type":"text/x-moz-place","uri":"https://vuejobs.com/"},{"guid":"_TQNayOf8VwE","title":"Create An RSS Feed From Scratch | Alex Le","index":241,"dateAdded":1673230542709000,"lastModified":1673230542709000,"id":301,"typeCode":1,"iconUri":"https://alexanderle.com/assets/favicon-alex-16x16.png","type":"text/x-moz-place","uri":"https://alexanderle.com/create-an-rss-feed-from-scratch"},{"guid":"os2wxgTBJJIs","title":"Home | Alex Le","index":242,"dateAdded":1673230549279000,"lastModified":1673230549279000,"id":302,"typeCode":1,"type":"text/x-moz-place","uri":"https://alexanderle.com/"},{"guid":"3XotRQltbD1a","title":"How to add a Background Image in Vue.js | Reactgo","index":243,"dateAdded":1673241762374000,"lastModified":1673241762374000,"id":303,"typeCode":1,"iconUri":"https://reactgo.com/icons/icon-512x512.png?v=5d4c5c0ac2d1ce690cea3b08650e37f8","type":"text/x-moz-place","uri":"https://reactgo.com/vue-background-image/"},{"guid":"1DkxCr0l13n_","title":"Vue.js Examples","index":244,"dateAdded":1673248483519000,"lastModified":1673248483519000,"id":304,"typeCode":1,"iconUri":"https://vuejsexamples.com/favicon.png","type":"text/x-moz-place","uri":"https://vuejsexamples.com/"},{"guid":"OJuM6E8Uqprt","title":"This Week In Neovim","index":245,"dateAdded":1673308740311000,"lastModified":1673308740311000,"id":305,"typeCode":1,"iconUri":"https://neovim.io/favicon.ico","type":"text/x-moz-place","uri":"https://this-week-in-neovim.org/"},{"guid":"fDI29CTshDSo","title":"Compiler Explorer","index":246,"dateAdded":1673487975055000,"lastModified":1673487975055000,"id":306,"typeCode":1,"type":"text/x-moz-place","uri":"https://godbolt.org/"},{"guid":"dbFwXF42aLLf","title":"leafbytes","index":247,"dateAdded":1673500468312000,"lastModified":1673500468312000,"id":307,"typeCode":1,"iconUri":"http://localhost:5173/favicon.svg","type":"text/x-moz-place","uri":"http://localhost:5173/blog/espanso-text-expander"},{"guid":"EgAYFboOKMWV","title":"https://www.youtube.com/@swildermuth","index":248,"dateAdded":1673854152925000,"lastModified":1673854152925000,"id":308,"typeCode":1,"type":"text/x-moz-place","uri":"view-source:https://www.youtube.com/@swildermuth"},{"guid":"M05aur1wcv1n","title":"Welcome To Distro.Tube","index":249,"dateAdded":1673921215014000,"lastModified":1673921215014000,"id":309,"typeCode":1,"type":"text/x-moz-place","uri":"https://distro.tube/"},{"guid":"E9ITfiEIJOeS","title":"Fluid Typography Calculator","index":250,"dateAdded":1673929050396000,"lastModified":1673929050396000,"id":310,"typeCode":1,"iconUri":"https://royalfig.github.io/fluid-typography-calculator/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://royalfig.github.io/fluid-typography-calculator/"},{"guid":"X2WSDerHOiwg","title":"Welcome to the Accessibility Developer Guide! - ADG","index":251,"dateAdded":1673929969769000,"lastModified":1673929969769000,"id":311,"typeCode":1,"iconUri":"https://www.accessibility-developer-guide.com/img/favicon/icon.svg","type":"text/x-moz-place","uri":"https://www.accessibility-developer-guide.com/"},{"guid":"_LuJk8zjupTG","title":"Josh W Comeau","index":252,"dateAdded":1673930927756000,"lastModified":1673930927756000,"id":312,"typeCode":1,"iconUri":"https://www.joshwcomeau.com/assets/favicon.png?v=4","type":"text/x-moz-place","uri":"https://www.joshwcomeau.com/"},{"guid":"Y2IoGLest08O","title":"Dev.Opera","index":253,"dateAdded":1673934023715000,"lastModified":1673934023715000,"id":313,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.opera.com/"},{"guid":"DB5tJDuhMQTE","title":"Awwwards - Website Awards - Best Web Design Trends","index":254,"dateAdded":1674036290289000,"lastModified":1674036290289000,"id":314,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.awwwards.com/"},{"guid":"JrQUNrBEhPM9","title":"Newsboat rss reader enable vim key bindings | The FreeBSD Forums","index":255,"dateAdded":1674088097079000,"lastModified":1674088097079000,"id":315,"typeCode":1,"type":"text/x-moz-place","uri":"https://forums.freebsd.org/threads/newsboat-rss-reader-enable-vim-key-bindings.69448/"},{"guid":"BtsRfhgUgPHL","title":"Deploying Vite App to GitHub Pages - DEV Community 👩💻👨💻","index":256,"dateAdded":1674116185596000,"lastModified":1674116185596000,"id":316,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/shashannkbawa/deploying-vite-app-to-github-pages-3ane"},{"guid":"8tqAATPpGx6q","title":"Git Delete Branch – How to Remove a Local or Remote Branch","index":257,"dateAdded":1674117576155000,"lastModified":1674117576155000,"id":317,"typeCode":1,"iconUri":"https://cdn.freecodecamp.org/universal/favicons/favicon.ico","type":"text/x-moz-place","uri":"https://www.freecodecamp.org/news/git-delete-branch-how-to-remove-a-local-or-remote-branch/"},{"guid":"U2bBcaKKKUz0","title":"Develop and deploy websites and apps in record time | Netlify","index":258,"dateAdded":1674119864442000,"lastModified":1674119864442000,"id":318,"typeCode":1,"iconUri":"https://www.netlify.com/v3/static/favicon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.netlify.com/"},{"guid":"cl8pxN_b3aPl","title":"SQLite Tutorial - An Easy Way to Master SQLite Fast","index":259,"dateAdded":1674349435204000,"lastModified":1674349435204000,"id":319,"typeCode":1,"iconUri":"https://www.sqlitetutorial.net/wp-content/uploads/2016/05/favicon.png","type":"text/x-moz-place","uri":"https://www.sqlitetutorial.net/"},{"guid":"Htntot0FZEO5","title":"RSS Advisory Board","index":260,"dateAdded":1674374692726000,"lastModified":1674374692726000,"id":320,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.rssboard.org/"},{"guid":"5mJwZ4LRGUqx","title":"Codrops | Creative front-end resources and inspiration for web professionals","index":261,"dateAdded":1674377790916000,"lastModified":1674377790916000,"id":321,"typeCode":1,"iconUri":"https://i7x7p5b7.stackpathcdn.com/codrops/wp-content/themes/codropstheme03/favicons/apple-touch-icon.png?v=2","type":"text/x-moz-place","uri":"https://tympanus.net/codrops/"},{"guid":"8_9Uc9niFRHm","title":"Technology and Miscellanea - Felix Crux","index":262,"dateAdded":1674442556868000,"lastModified":1674442556868000,"id":322,"typeCode":1,"type":"text/x-moz-place","uri":"https://felixcrux.com/"},{"guid":"A2tQxMbol256","title":"Super User","index":263,"dateAdded":1674443467604000,"lastModified":1674443467604000,"id":323,"typeCode":1,"type":"text/x-moz-place","uri":"https://superuser.com/"},{"guid":"dT5ST2ncWrAY","title":"Hot Questions - Stack Exchange","index":264,"dateAdded":1674443487769000,"lastModified":1674443487769000,"id":324,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackexchange.com/"},{"guid":"TzIueMyfExUq","title":"Stack Overflow - Where Developers Learn, Share, & Build Careers","index":265,"dateAdded":1674443507568000,"lastModified":1674443507568000,"id":325,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/"},{"guid":"U02uFJ5MEkn0","title":"IETF Datatracker","index":266,"dateAdded":1674443781822000,"lastModified":1674443781822000,"id":326,"typeCode":1,"iconUri":"https://www.ietf.org/lib/dt/9.6.0/ietf/images/ietf-logo-nor-180.png","type":"text/x-moz-place","uri":"https://datatracker.ietf.org/"},{"guid":"jbzEoJKJKPtK","title":"David Walsh Blog - JavaScript Consultant","index":267,"dateAdded":1674444733639000,"lastModified":1674444733639000,"id":327,"typeCode":1,"iconUri":"https://davidwalsh.name/wp-content/themes/punky/images/favicon-144.png","type":"text/x-moz-place","uri":"https://davidwalsh.name/"},{"guid":"cNmTElDvGV0v","title":"blog.wittcode.com","index":268,"dateAdded":1674789467714000,"lastModified":1674789467714000,"id":328,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.wittcode.com/"},{"guid":"K1YPv3UKBpkV","title":"WittCode","index":269,"dateAdded":1674790166591000,"lastModified":1674790166591000,"id":329,"typeCode":1,"iconUri":"https://wittcode.com/main-images/favicon.png","type":"text/x-moz-place","uri":"https://wittcode.com/"},{"guid":"p5r8m_sbnCaf","title":"TinyPNG – Compress WebP, PNG and JPEG images intelligently","index":270,"dateAdded":1674791322194000,"lastModified":1674791322194000,"id":330,"typeCode":1,"type":"text/x-moz-place","uri":"https://tinypng.com/"},{"guid":"sN4byqagkdeZ","title":"Portland, OR Nonprofits and Charities | Donate, Volunteer, Review | GreatNonprofits","index":271,"dateAdded":1674807662519000,"lastModified":1674807662519000,"id":331,"typeCode":1,"type":"text/x-moz-place","uri":"https://greatnonprofits.org/city/portland/OR"},{"guid":"o3tqNSmn0-3T","title":"DemocracyLab","index":272,"dateAdded":1674808603324000,"lastModified":1674808603324000,"id":332,"typeCode":1,"iconUri":"https://d1agxr2dqkgkuy.cloudfront.net/img/favicon.png","type":"text/x-moz-place","uri":"https://democracylab.org/"},{"guid":"pUcHRVvHWyaQ","title":"JSON:API — A specification for building APIs in JSON","index":273,"dateAdded":1674873446188000,"lastModified":1674873446188000,"id":333,"typeCode":1,"iconUri":"https://jsonapi.org/alt-favicons/favicon-194x194.png","type":"text/x-moz-place","uri":"https://jsonapi.org/"},{"guid":"Uj4h7zi4Sh8q","title":"JSON Schema | The home of JSON Schema","index":274,"dateAdded":1674873833452000,"lastModified":1674873833452000,"id":334,"typeCode":1,"type":"text/x-moz-place","uri":"https://json-schema.org/"},{"guid":"k9odgsLXew1e","title":"SWAPI - The Star Wars API","index":275,"dateAdded":1674874437480000,"lastModified":1674874437480000,"id":335,"typeCode":1,"iconUri":"https://swapi.dev/static/favicon.ico","type":"text/x-moz-place","uri":"https://swapi.dev/"},{"guid":"Wlg7125e2FG9","title":"Online JSON Schema Validator and Generator","index":276,"dateAdded":1674882128326000,"lastModified":1674882128326000,"id":336,"typeCode":1,"iconUri":"https://extendsclass.com/favicon.png","type":"text/x-moz-place","uri":"https://extendsclass.com/json-schema-validator.html"},{"guid":"ymcDJg6MCqWq","title":"LiteCLI","index":277,"dateAdded":1674895279567000,"lastModified":1674895279567000,"id":337,"typeCode":1,"iconUri":"https://litecli.com/img/favicon.png","type":"text/x-moz-place","uri":"https://litecli.com/"},{"guid":"VQmd5JgvtE80","title":"JSON Functions And Operators","index":278,"dateAdded":1674983067974000,"lastModified":1674983067974000,"id":338,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.sqlite.org/json1.html#jmini"},{"guid":"aooX32GJfwwa","title":"Appropriate Uses For SQLite","index":279,"dateAdded":1674985365936000,"lastModified":1674985365936000,"id":339,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.sqlite.org/whentouse.html"},{"guid":"0qRy_H0i9RB4","title":"SQL Query Builder for Javascript | Knex.js","index":280,"dateAdded":1674986879352000,"lastModified":1674986879352000,"id":340,"typeCode":1,"iconUri":"https://knexjs.org/knex-logo.png","type":"text/x-moz-place","uri":"https://knexjs.org/"},{"guid":"ulc6-DM4OG9U","title":"Objection.js","index":281,"dateAdded":1674986908126000,"lastModified":1674986908126000,"id":341,"typeCode":1,"type":"text/x-moz-place","uri":"https://vincit.github.io/objection.js/"},{"guid":"k56wrp6DM0SF","title":"CoRecursive Podcast - The Stories Behind The Code","index":282,"dateAdded":1674989042505000,"lastModified":1674989042505000,"id":342,"typeCode":1,"iconUri":"https://corecursive.com/assets/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://corecursive.com/"},{"guid":"eO2DJel2xKQ8","title":"SQLite Primary Key: The Ultimate Guide To Primary Key","index":283,"dateAdded":1675056587564000,"lastModified":1675056587564000,"id":343,"typeCode":1,"iconUri":"https://www.sqlitetutorial.net/wp-content/uploads/2016/05/favicon.png","type":"text/x-moz-place","uri":"https://www.sqlitetutorial.net/sqlite-primary-key/"},{"guid":"DSiBMF1wQXVE","title":"Aurora Sweep PCB Kit — splitkb.com","index":284,"dateAdded":1675157068904000,"lastModified":1675157068904000,"id":344,"typeCode":1,"iconUri":"https://cdn.shopify.com/s/files/1/0227/9171/6941/files/minimal-512-round_1e318420-82d2-48c5-8634-6707f91dea7f_32x32.png?v=1640825421","type":"text/x-moz-place","uri":"https://splitkb.com/products/aurora-sweep"},{"guid":"BpY6ZG9ZMSt9","title":"Node.js","index":285,"dateAdded":1675223041460000,"lastModified":1675223041460000,"id":345,"typeCode":1,"iconUri":"https://nodejs.org/static/images/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://nodejs.org/en/"},{"guid":"VDpXSDEE_gMs","title":"OWASP Foundation, the Open Source Foundation for Application Security | OWASP Foundation","index":286,"dateAdded":1675223681539000,"lastModified":1675223681539000,"id":346,"typeCode":1,"iconUri":"https://owasp.org/www--site-theme/favicon.ico","type":"text/x-moz-place","uri":"https://owasp.org/"},{"guid":"F2ZSjQCWjeuv","title":"Coding Bootcamp | Programming Bootcamp | Alchemy Code Lab","index":287,"dateAdded":1675249398492000,"lastModified":1675249398492000,"id":347,"typeCode":1,"iconUri":"https://www.alchemycodelab.com/images/alchemy-favicon.png","type":"text/x-moz-place","uri":"https://www.alchemycodelab.com/"},{"guid":"dtl3puxnAcWQ","title":"Council on Integrity in Results Reporting (CIRR) - Council on Integrity in Results Reporting (CIRR)","index":288,"dateAdded":1675250058260000,"lastModified":1675250058260000,"id":348,"typeCode":1,"type":"text/x-moz-place","uri":"https://cirr.org/"},{"guid":"O1MU33TRrGXC","title":"Titmouse, Inc. - Wikipedia","index":289,"dateAdded":1675423570088000,"lastModified":1675423570088000,"id":349,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Titmouse,_Inc.?useskin=vector"},{"guid":"CUMACUUb2tYD","title":"FileFormat.Info · The Digital Rosetta Stone","index":290,"dateAdded":1675573016264000,"lastModified":1675573016264000,"id":350,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fileformat.info/"},{"guid":"Z2Q3ox9FSyGp","title":"Linux Man Page Howto","index":291,"dateAdded":1675573066678000,"lastModified":1675573066678000,"id":351,"typeCode":1,"type":"text/x-moz-place","uri":"http://www.schweikhardt.net/man_page_howto.html"},{"guid":"p8uQQcYjVMYE","title":"GitHub - proycon/tuir: Browse Reddit from your terminal","index":292,"dateAdded":1675589903928000,"lastModified":1675589903928000,"id":352,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/proycon/tuir"},{"guid":"mnU1FVWPUcs-","title":"GitHub - ThePrimeagen/harpoon","index":293,"dateAdded":1675590584452000,"lastModified":1675590584452000,"id":353,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/ThePrimeagen/harpoon"},{"guid":"9g8Ieo9wfmRZ","title":"Articles – Cloud Four","index":294,"dateAdded":1675592733209000,"lastModified":1675592733209000,"id":354,"typeCode":1,"iconUri":"https://cloudfour.com/wp-content/themes/cloudfour2022/node_modules/@cloudfour/patterns/src/assets/favicons/icon.svg","type":"text/x-moz-place","uri":"https://cloudfour.com/thinks/"},{"guid":"COkqw8UgTuBE","title":"articles on design engineering – Sara Soueidan, inclusive design engineer","index":295,"dateAdded":1675593985455000,"lastModified":1675593985455000,"id":355,"typeCode":1,"iconUri":"https://www.sarasoueidan.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.sarasoueidan.com/blog/"},{"guid":"nTH4bjvuRJLm","title":"Dev.Opera — Responsive Images: Use Cases and Documented Code Snippets to Get You Started","index":296,"dateAdded":1675594177444000,"lastModified":1675594177444000,"id":356,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.opera.com/articles/responsive-images/"},{"guid":"cwKWJ560yJqg","title":"Dev.Opera — Native Responsive Images","index":297,"dateAdded":1675596369102000,"lastModified":1675596369102000,"id":357,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.opera.com/articles/native-responsive-images/"},{"guid":"RO2Wqqb6f4q3","title":"Responsive Images the Simple Way – Cloud Four","index":298,"dateAdded":1675596379969000,"lastModified":1675596379969000,"id":358,"typeCode":1,"type":"text/x-moz-place","uri":"https://cloudfour.com/thinks/responsive-images-the-simple-way/"},{"guid":"pldVimVN_QDp","title":"Autoprefixer CSS online","index":299,"dateAdded":1675596805949000,"lastModified":1675596805949000,"id":359,"typeCode":1,"iconUri":"https://autoprefixer.github.io/assets/icon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://autoprefixer.github.io/"},{"guid":"dFSNKVbFvkCx","title":"Butterick’s Practical Typography","index":300,"dateAdded":1675648044676000,"lastModified":1675648044676000,"id":360,"typeCode":1,"type":"text/x-moz-place","uri":"https://practicaltypography.com/"},{"guid":"PKX2nTo7oSsk","title":"Code Review Workshops with Dr. Michaela Greiler - Dr. McKayla","index":301,"dateAdded":1675648187032000,"lastModified":1675648187032000,"id":361,"typeCode":1,"iconUri":"https://i2.wp.com/www.michaelagreiler.com/wp-content/uploads/2020/09/Michaela-Greiler-Site-Identity-10.png?fit=192%2C192&ssl=1","type":"text/x-moz-place","uri":"https://www.michaelagreiler.com/"},{"guid":"BMHpXyYVfFij","title":"APIs and SDKs for Real-Time Chat, Experiences and More | PubNub","index":302,"dateAdded":1675664016974000,"lastModified":1675664016974000,"id":362,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.pubnub.com/"},{"guid":"6cUWqMsWIKu2","title":"PubNub docs | PubNub Docs","index":303,"dateAdded":1675664036838000,"lastModified":1675664036838000,"id":363,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.pubnub.com/docs/"},{"guid":"iG7TV4LpASkD","title":"Space","index":304,"dateAdded":1675746187261000,"lastModified":1675746187261000,"id":364,"typeCode":1,"iconUri":"https://assets.service.jetbrains.space/static/151032/br/apple-touch-icon-180x180.png","type":"text/x-moz-place","uri":"https://siimee.jetbrains.space/"},{"guid":"s2bquXiczcY0","title":"harrisoncramer.me","index":305,"dateAdded":1675811634732000,"lastModified":1675811634732000,"id":365,"typeCode":1,"type":"text/x-moz-place","uri":"https://harrisoncramer.me/"},{"guid":"ShfHDeKKvI-e","title":"HTML elements reference - HTML: HyperText Markup Language | MDN","index":306,"dateAdded":1675845410561000,"lastModified":1675845410561000,"id":366,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Web/HTML/Element"},{"guid":"s5gtAEahwCWl","title":"Semantics - MDN Web Docs Glossary: Definitions of Web-related terms | MDN","index":307,"dateAdded":1675846215175000,"lastModified":1675846215175000,"id":367,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Glossary/Semantics"},{"guid":"P5SQq6w9YtwF","title":"About web.dev","index":308,"dateAdded":1675846286425000,"lastModified":1675846286425000,"id":368,"typeCode":1,"iconUri":"https://web.dev/images/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://web.dev/about/"},{"guid":"f3Mfn8X_uR8_","title":"Accessible Rich Internet Applications (WAI-ARIA) 1.1","index":309,"dateAdded":1675846376027000,"lastModified":1675846376027000,"id":369,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3.org/TR/wai-aria/"},{"guid":"6EvyH214R6F5","title":"ARIA Authoring Practices Guide | APG | WAI | W3C","index":310,"dateAdded":1675846411425000,"lastModified":1675846411425000,"id":370,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3.org/WAI/ARIA/apg/#kbd_layout_landmark_XHTML"},{"guid":"cuopi0ARk_wG","title":"ARIA Authoring Practices Guide | APG | WAI | W3C","index":311,"dateAdded":1675846462943000,"lastModified":1675846462943000,"id":371,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3.org/WAI/ARIA/apg/"},{"guid":"tpygF5hAPlKa","title":"Introduction to ARIA","index":312,"dateAdded":1675847597347000,"lastModified":1675847597347000,"id":372,"typeCode":1,"type":"text/x-moz-place","uri":"https://web.dev/semantics-aria/"},{"guid":"htjdlfuG8BqY","title":"Cloudflare Pages","index":313,"dateAdded":1675912242595000,"lastModified":1675912242595000,"id":373,"typeCode":1,"type":"text/x-moz-place","uri":"https://pages.cloudflare.com/"},{"guid":"meaFoVYyajex","title":"Timestamp Converter","index":314,"dateAdded":1676267875917000,"lastModified":1676267875917000,"id":374,"typeCode":1,"iconUri":"https://www.timestamp-converter.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.timestamp-converter.com/"},{"guid":"3PlWht6GLio7","title":"State Area Measurements and Internal Point Coordinates","index":315,"dateAdded":1676272542817000,"lastModified":1676272542817000,"id":375,"typeCode":1,"iconUri":"https://www.census.gov/etc.clientlibs/census/clientlibs/common-site/resources/icons/android-chrome-256x256.png","type":"text/x-moz-place","uri":"https://www.census.gov/geographies/reference-files/2010/geo/state-area.html"},{"guid":"RSRW9hrHG0x0","title":"Amethyst | ianyh","index":316,"dateAdded":1676287464769000,"lastModified":1676287464769000,"id":376,"typeCode":1,"type":"text/x-moz-place","uri":"https://ianyh.com/amethyst/"},{"guid":"Ye4eSi9uUa6p","title":"AquaSnap Window Manager: dock, snap, tile, organize","index":317,"dateAdded":1676287468325000,"lastModified":1676287468325000,"id":377,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.nurgo-software.com/products/aquasnap"},{"guid":"jhFTI2HpdjRe","title":"SQLZOO","index":318,"dateAdded":1676636702502000,"lastModified":1676636702502000,"id":378,"typeCode":1,"type":"text/x-moz-place","uri":"https://sqlzoo.net/wiki/SQL_Tutorial"},{"guid":"-9a1TTpuut_N","title":"Complete List of Common Nursing Certifications 2023 | Nurse.org","index":319,"dateAdded":1676962106157000,"lastModified":1676962106157000,"id":379,"typeCode":1,"type":"text/x-moz-place","uri":"https://nurse.org/articles/nursing-certifications-credentials-list/"},{"guid":"CDk_MTPiFLWr","title":"joi.dev","index":320,"dateAdded":1677046624406000,"lastModified":1677046624406000,"id":380,"typeCode":1,"iconUri":"https://joi.dev/_nuxt/icons/icon_512x512.5f6a36.png","type":"text/x-moz-place","uri":"https://joi.dev/"},{"guid":"Py0yyRuS9QP9","title":"Find engineering teams that share your values | Key Values","index":321,"dateAdded":1677121916684000,"lastModified":1677121916684000,"id":381,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.keyvalues.com/"},{"guid":"TeCJEJcjr7kv","title":"Home - Merit America","index":322,"dateAdded":1677139339164000,"lastModified":1677139339164000,"id":382,"typeCode":1,"iconUri":"https://meritamerica.org/wp-content/uploads/2022/01/cropped-fav-300x300.png","type":"text/x-moz-place","uri":"https://meritamerica.org/"},{"guid":"whxEzjkn9wK0","title":"Sololearn: Learn to Code","index":323,"dateAdded":1677141094880000,"lastModified":1677141094880000,"id":383,"typeCode":1,"iconUri":"https://www.sololearn.com/Images/favicon.ico","type":"text/x-moz-place","uri":"https://www.sololearn.com/"},{"guid":"E-_1if9CYk7m","title":"most minimal firefoxcss reddit at DuckDuckGo","index":324,"dateAdded":1677226508286000,"lastModified":1677226508286000,"id":384,"typeCode":1,"type":"text/x-moz-place","uri":"https://lite.duckduckgo.com/lite/"},{"guid":"LvOSa-r4cBLq","title":"Dudemanguy's Musings","index":325,"dateAdded":1677464899658000,"lastModified":1677464899658000,"id":385,"typeCode":1,"type":"text/x-moz-place","uri":"https://dudemanguy.github.io/blog/"},{"guid":"sD0ZPzZrxES6","title":"Joren->blog","index":326,"dateAdded":1677465000799000,"lastModified":1677465000799000,"id":386,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.joren.ga/"},{"guid":"vyKPWJypwCLE","title":"beekeeb - experimental ergonomic mechanical keyboards and cases","index":327,"dateAdded":1677465100823000,"lastModified":1677465100823000,"id":387,"typeCode":1,"type":"text/x-moz-place","uri":"https://shop.beekeeb.com/"},{"guid":"3ftgmQ8QyqOW","title":"Blub's Blog","index":328,"dateAdded":1677479275750000,"lastModified":1677479275750000,"id":388,"typeCode":1,"type":"text/x-moz-place","uri":"https://blubsblog.bearblog.dev/"},{"guid":"6OkBBVwkzlSN","title":"Free Podcast hosting and Monetizing Platform | Podbean","index":329,"dateAdded":1677640801669000,"lastModified":1677640801669000,"id":389,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.podbean.com/"},{"guid":"fHF7qK-a-DGQ","title":"Cover Your Tracks","index":330,"dateAdded":1677745878306000,"lastModified":1677745878306000,"id":390,"typeCode":1,"type":"text/x-moz-place","uri":"https://coveryourtracks.eff.org/"},{"guid":"PseHFZSEySBp","title":"Browserleaks - Check your browser for privacy leaks","index":331,"dateAdded":1677897013973000,"lastModified":1677897013973000,"id":391,"typeCode":1,"type":"text/x-moz-place","uri":"https://browserleaks.com/"},{"guid":"m7SEh6_aKIBD","title":"https://davidspindler.online/","index":332,"dateAdded":1677975155736000,"lastModified":1677975155736000,"id":392,"typeCode":1,"type":"text/x-moz-place","uri":"https://davidspindler.online/"},{"guid":"FqWEsASOA6rz","title":"Rancho Cucamonga, California - Wikipedia","index":333,"dateAdded":1677981922809000,"lastModified":1677981922809000,"id":393,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Rancho_Cucamonga,_California?useskin=vector"},{"guid":"BdUzObP3SN9y","title":"Round Rock, Texas - Wikipedia","index":334,"dateAdded":1677985181754000,"lastModified":1677985181754000,"id":394,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Round_Rock?useskin=vector"},{"guid":"ZEIrqNssHaDw","title":"Crontab syntax for us humands -- Cron Helper","index":335,"dateAdded":1678132581103000,"lastModified":1678132581103000,"id":395,"typeCode":1,"type":"text/x-moz-place","uri":"https://cron.help/"},{"guid":"Jfk8bSvazECy","title":"Crontab syntax for us humands -- Cron Helper","index":336,"dateAdded":1678132581284000,"lastModified":1678132581284000,"id":396,"typeCode":1,"type":"text/x-moz-place","uri":"https://cron.help/#*/5_*_*_*_*"},{"guid":"bo9TX9GrK8eM","title":"chrome://browser/content/blanktab.html","index":337,"dateAdded":1678134496263000,"lastModified":1678134496263000,"id":397,"typeCode":1,"type":"text/x-moz-place","uri":"chrome://browser/content/blanktab.html"},{"guid":"QO3Le4FNwxkn","title":"WooCommerce - Open Source eCommerce Platform","index":338,"dateAdded":1678409090966000,"lastModified":1678409090966000,"id":398,"typeCode":1,"type":"text/x-moz-place","uri":"https://woocommerce.com/"},{"guid":"320Qaur-liB1","title":"Pluralistic: Daily links from Cory Doctorow – No trackers, no ads. Black type, white background. Privacy policy: we don't collect or retain any data at all ever period.","index":339,"dateAdded":1678580222478000,"lastModified":1678580222478000,"id":399,"typeCode":1,"type":"text/x-moz-place","uri":"https://pluralistic.net/"},{"guid":"c9yuHdoiZEFf","title":"Linux Hardware Database","index":340,"dateAdded":1678603995534000,"lastModified":1678603995534000,"id":400,"typeCode":1,"type":"text/x-moz-place","uri":"https://linux-hardware.org/"},{"guid":"KIc158NGgO8f","title":"GitHub - cwmccabe/pubnixhist: Public Access UNIX (and GNU/Linux) History Documentation Project","index":341,"dateAdded":1678699180285000,"lastModified":1678699180285000,"id":401,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/cwmccabe/pubnixhist"},{"guid":"JTvFg1vlDPIZ","title":"tildeverse","index":342,"dateAdded":1678699184115000,"lastModified":1678699184115000,"id":402,"typeCode":1,"type":"text/x-moz-place","uri":"https://tildeverse.org/"},{"guid":"jw4V7xkcx5mg","title":"~vern","index":343,"dateAdded":1678699186930000,"lastModified":1678699186930000,"id":403,"typeCode":1,"type":"text/x-moz-place","uri":"https://vern.cc/en/"},{"guid":"MXqIhlrxwrd9","title":"browser-bits/firefox-v109-change-order-under-extensions-button.js at main · icpantsparti2/browser-bits · GitHub","index":344,"dateAdded":1679379051788000,"lastModified":1679379051788000,"id":404,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/icpantsparti2/browser-bits/blob/main/javascript/firefox-v109-change-order-under-extensions-button.js"},{"guid":"U0nu2o00nhdj","title":"Wolfgang's Blog","index":345,"dateAdded":1679447021324000,"lastModified":1679447021324000,"id":405,"typeCode":1,"type":"text/x-moz-place","uri":"https://notthebe.ee/"},{"guid":"6NTwvJdjFSYM","title":"Leanpub: Publish Early, Publish Often","index":346,"dateAdded":1679542297677000,"lastModified":1679542297677000,"id":406,"typeCode":1,"type":"text/x-moz-place","uri":"https://leanpub.com/"},{"guid":"LAGFyY31o85_","title":"Array.prototype.forEach() - JavaScript | MDN","index":347,"dateAdded":1679706652175000,"lastModified":1679706652175000,"id":407,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach"},{"guid":"U6YHU0--64vc","title":"Yubico | YubiKey Strong Two Factor Authentication","index":348,"dateAdded":1679726107998000,"lastModified":1679726107998000,"id":408,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.yubico.com/"},{"guid":"yshuEKH8fFzw","title":"emac keybindings firefox at DuckDuckGo","index":349,"dateAdded":1680080943435000,"lastModified":1680080943435000,"id":409,"typeCode":1,"type":"text/x-moz-place","uri":"https://lite.duckduckgo.com/lite/?q=emac+keybindings+firefox"},{"guid":"TdzRQE5e5BP5","title":"NPR : National Public Radio","index":350,"dateAdded":1680119145941000,"lastModified":1680119145941000,"id":410,"typeCode":1,"type":"text/x-moz-place","uri":"https://text.npr.org/"},{"guid":"LbbsoxA2xEU2","title":"node.js - How do I shut down my Express server gracefully when its process is killed? - Stack Overflow","index":351,"dateAdded":1680155942014000,"lastModified":1680155942014000,"id":411,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/43003870/how-do-i-shut-down-my-express-server-gracefully-when-its-process-is-killed"},{"guid":"DqPVDYoxGFT2","title":"GitHub - yt-dlp/yt-dlp: A youtube-dl fork with additional features and fixes","index":352,"dateAdded":1680227705343000,"lastModified":1680227705343000,"id":412,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/yt-dlp/yt-dlp"},{"guid":"04mM1nSuGaL9","title":"Child Routers in Express · GitHub","index":353,"dateAdded":1680232075709000,"lastModified":1680232075709000,"id":413,"typeCode":1,"type":"text/x-moz-place","uri":"https://gist.github.com/zcaceres/f38b208a492e4dcd45f487638eff716c"},{"guid":"4QxD9Frd2JWu","title":"Express JS — Routing with Nested Paths","index":354,"dateAdded":1680232586714000,"lastModified":1680232586714000,"id":414,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/express-js-routing-with-nested-paths-2526bae9d2e6"},{"guid":"cYH8mMWZgtg2","title":"City-Data.com - Stats about all US cities - real estate, relocation info, crime, house prices, cost of living, races, home value estimator, recent sales, income, photos, schools, maps, weather, neighborhoods, and more","index":355,"dateAdded":1680645986397000,"lastModified":1680645986397000,"id":415,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.city-data.com/"},{"guid":"Djs44uWM2NZu","title":"GitHub - scraggo/comparing-javascript-test-runners: Comparing AVA, Jest, Mocha, and mocha-parallel-tests testing frameworks","index":356,"dateAdded":1680675137598000,"lastModified":1680675137598000,"id":416,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/scraggo/comparing-javascript-test-runners/"},{"guid":"Zk5WVTOD0KC2","title":"Sinon.JS - Standalone test fakes, spies, stubs and mocks for JavaScript. Works with any unit testing framework.","index":357,"dateAdded":1680675248719000,"lastModified":1680675248719000,"id":417,"typeCode":1,"type":"text/x-moz-place","uri":"https://sinonjs.org/"},{"guid":"0eYHtsvZq8lY","title":"GitHub - avajs/ava: Node.js test runner that lets you develop with confidence 🚀","index":358,"dateAdded":1680675465544000,"lastModified":1680675465544000,"id":418,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/avajs/ava"},{"guid":"BgSBpMRLAykQ","title":"sometechblog.com","index":359,"dateAdded":1680728951419000,"lastModified":1680728951419000,"id":419,"typeCode":1,"type":"text/x-moz-place","uri":"https://sometechblog.com/"},{"guid":"ld0glsCYbjCB","title":"set up neomutt","index":360,"dateAdded":1680763114027000,"lastModified":1680763142609000,"id":420,"typeCode":1,"type":"text/x-moz-place","uri":"https://seniormars.github.io/posts/neomutt/#initial-mutt-configuration"},{"guid":"2sEK-v1G1Csk","title":"The Twelve-Factor App","index":361,"dateAdded":1680820091876000,"lastModified":1680820091876000,"id":421,"typeCode":1,"type":"text/x-moz-place","uri":"https://12factor.net/"},{"guid":"DPp5iRACRbYN","title":"Docker Docs: How to build, share, and run applications","index":362,"dateAdded":1680820408561000,"lastModified":1680820408561000,"id":422,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.docker.com/"},{"guid":"czHlWx9NFDCQ","title":"Test Driven Development with JavaScript Using ava and Sinon.JS - Markus Oberlehner","index":363,"dateAdded":1680834199833000,"lastModified":1680834199833000,"id":423,"typeCode":1,"type":"text/x-moz-place","uri":"https://markus.oberlehner.net/blog/test-driven-development-with-javascript-using-ava-and-sinonjs/"},{"guid":"7c0OapXlQhZ6","title":"Blog - Markus Oberlehner","index":364,"dateAdded":1680834207307000,"lastModified":1680834207307000,"id":424,"typeCode":1,"type":"text/x-moz-place","uri":"https://markus.oberlehner.net/blog/"},{"guid":"5fQ18yGnNiUz","title":"GitHub - junegunn/fzf.vim: fzf vim","index":365,"dateAdded":1680835850418000,"lastModified":1680835850418000,"id":425,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/junegunn/fzf.vim"},{"guid":"ZirYxhgm0N89","title":"API · TryGhost/node-sqlite3 Wiki · GitHub","index":366,"dateAdded":1680850720854000,"lastModified":1680850720854000,"id":426,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/TryGhost/node-sqlite3/wiki/API"},{"guid":"AcV0HSKdmtCa","title":"Building Efficient Dockerfiles - Node.js - bitJudo","index":367,"dateAdded":1681013834262000,"lastModified":1681013834262000,"id":427,"typeCode":1,"type":"text/x-moz-place","uri":"https://bitjudo.com/blog/2014/03/13/building-efficient-dockerfiles-node-dot-js/"},{"guid":"nuTq2eR7GLGL","title":"npm Blog Archive: Introducing `npm ci` for faster, more reliable builds","index":368,"dateAdded":1681013837122000,"lastModified":1681013837122000,"id":428,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable"},{"guid":"qQh2y_Ud44U2","title":"bitJudo","index":369,"dateAdded":1681014888368000,"lastModified":1681014888368000,"id":429,"typeCode":1,"type":"text/x-moz-place","uri":"https://bitjudo.com/"},{"guid":"qBfdYTJOufgh","title":"Vitest | A blazing fast unit test framework powered by Vite","index":370,"dateAdded":1681090831630000,"lastModified":1681090831630000,"id":430,"typeCode":1,"type":"text/x-moz-place","uri":"https://vitest.dev/"},{"guid":"0MnrBPSD_yvx","title":"Proxmox VE - Virtualization Management Platform","index":371,"dateAdded":1681259080742000,"lastModified":1681259080742000,"id":431,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.proxmox.com/en/proxmox-ve"},{"guid":"Rbs3K19PCoo4","title":"Svelte • Cybernetically enhanced web apps","index":372,"dateAdded":1681270417756000,"lastModified":1681270417756000,"id":432,"typeCode":1,"type":"text/x-moz-place","uri":"https://svelte.dev/"},{"guid":"uNCYx_Z_To4f","title":"Overreacted — A blog by Dan Abramov","index":373,"dateAdded":1681285185719000,"lastModified":1681285185719000,"id":433,"typeCode":1,"type":"text/x-moz-place","uri":"https://overreacted.io/"},{"guid":"XVmQzGwD9C-N","title":"Getting started - Wave UI","index":374,"dateAdded":1681358055159000,"lastModified":1681358055159000,"id":434,"typeCode":1,"type":"text/x-moz-place","uri":"https://antoniandre.github.io/wave-ui/getting-started#getting-started"},{"guid":"D1tHDdqR7jIi","title":"Building A Chat Application Using SvelteJS and SSE","index":375,"dateAdded":1681359137956000,"lastModified":1681359137956000,"id":435,"typeCode":1,"type":"text/x-moz-place","uri":"https://marmelab.com/blog/2020/10/02/build-a-chat-application-using-sveltejs-and-sse.html"},{"guid":"OdFG407oMoSI","title":"Clean Code: Avoid Too Many Arguments In Functions | Matheus Rodrigues","index":376,"dateAdded":1681376694896000,"lastModified":1681376694896000,"id":436,"typeCode":1,"type":"text/x-moz-place","uri":"https://matheus.ro/2018/01/29/clean-code-avoid-many-arguments-functions/"},{"guid":"0pJcaHvHkkOf","title":"Books at mixu.net","index":377,"dateAdded":1681422709558000,"lastModified":1681422709558000,"id":437,"typeCode":1,"type":"text/x-moz-place","uri":"https://book.mixu.net/"},{"guid":"aPJj0xkOHSXz","title":"javascript - Short-polling vs Long-polling for real time web applications? - Stack Overflow","index":378,"dateAdded":1681434724478000,"lastModified":1681434724478000,"id":438,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/4642598/short-polling-vs-long-polling-for-real-time-web-applications"},{"guid":"v3opyC433R7E","title":"Polling vs SSE vs WebSocket— How to choose the right one","index":379,"dateAdded":1681434734033000,"lastModified":1681434734033000,"id":439,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/m/global-identity-2?redirectUrl=https%3A%2F%2Fcodeburst.io%2Fpolling-vs-sse-vs-websocket-how-to-choose-the-right-one-1859e4e13bd9"},{"guid":"l3FDAS9IBQK4","title":"Websockets 101 | Armin Ronacher's Thoughts and Writings","index":380,"dateAdded":1681435523729000,"lastModified":1681435523729000,"id":440,"typeCode":1,"type":"text/x-moz-place","uri":"https://lucumr.pocoo.org/2012/9/24/websockets-101/"},{"guid":"ti2MNyyCvYPP","title":"Blog | Armin Ronacher's Thoughts and Writings","index":381,"dateAdded":1681436863470000,"lastModified":1681436863470000,"id":441,"typeCode":1,"type":"text/x-moz-place","uri":"https://lucumr.pocoo.org/"},{"guid":"PK9rgvk8angs","title":"ws/ws.md at 45e17acea791d865df6b255a55182e9c42e5877a · websockets/ws · GitHub","index":382,"dateAdded":1681445537291000,"lastModified":1681445537291000,"id":442,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/websockets/ws/blob/HEAD/doc/ws.md"},{"guid":"tHAhDPHUqyzS","title":"Peropesis - Linux operating system","index":383,"dateAdded":1681460087500000,"lastModified":1681460087500000,"id":443,"typeCode":1,"type":"text/x-moz-place","uri":"https://peropesis.org/"},{"guid":"Oy6J0vBCUdI_","title":"PrivacyTests.org: open-source tests of web browser privacy","index":384,"dateAdded":1681464730063000,"lastModified":1681464730063000,"id":444,"typeCode":1,"type":"text/x-moz-place","uri":"https://privacytests.org/"},{"guid":"LEwC6OwMQe8z","title":"About The Calyx Institute - Calyx Institute","index":385,"dateAdded":1681708526800000,"lastModified":1681708526800000,"id":445,"typeCode":1,"type":"text/x-moz-place","uri":"https://calyxinstitute.org/about"},{"guid":"P0Bs7H4UHaen","title":"Color Safe - accessible web color combinations","index":386,"dateAdded":1681713704232000,"lastModified":1681713704232000,"id":446,"typeCode":1,"type":"text/x-moz-place","uri":"http://colorsafe.co/"},{"guid":"KA-zghio-eHe","title":"PDX Code Guild","index":387,"dateAdded":1681972172053000,"lastModified":1681972172053000,"id":447,"typeCode":1,"type":"text/x-moz-place","uri":"https://pdxcodeguild.com/"},{"guid":"jJI_xtzqyXRS","title":"CSS Demystified: Start writing CSS with confidence","index":388,"dateAdded":1682033599625000,"lastModified":1682033599625000,"id":448,"typeCode":1,"type":"text/x-moz-place","uri":"https://cssdemystified.com/"},{"guid":"I4VnpdGtMHJO","title":"Code for PDX | As a Code for America Brigade, we’re part of a national network of civic-minded volunteers who contribute their skills toward using the web as a platform for local government and community service.","index":389,"dateAdded":1682055000258000,"lastModified":1682055000258000,"id":449,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.codeforpdx.org/"},{"guid":"0_gJqbYLyQq3","title":"Hashnode - Blogging community for developers, and people in tech","index":390,"dateAdded":1682389862852000,"lastModified":1682389862852000,"id":450,"typeCode":1,"type":"text/x-moz-place","uri":"https://hashnode.com/"},{"guid":"SWtl04oObfkc","title":"Abilene, Texas - Wikipedia","index":391,"dateAdded":1682391198000000,"lastModified":1682391198000000,"id":451,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Abilene,_Texas?useskin=vector"},{"guid":"CRQBc2ktaYfD","title":"Home | Linux Journal","index":392,"dateAdded":1682482322353000,"lastModified":1682482322353000,"id":452,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.linuxjournal.com/"},{"guid":"OhpGNVhav3Gx","title":"Linux Lads | About Us","index":393,"dateAdded":1682489929239000,"lastModified":1682489929239000,"id":453,"typeCode":1,"type":"text/x-moz-place","uri":"https://linuxlads.com/"},{"guid":"58clHUypHygQ","title":"GitHub - 0xERR0R/blocky: Fast and lightweight DNS proxy as ad-blocker for local network with many features","index":394,"dateAdded":1682654831566000,"lastModified":1682654831566000,"id":454,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/0xERR0R/blocky"},{"guid":"RjzoIUl0SLV4","title":"Home - Ahmad Shadeed","index":395,"dateAdded":1682898404012000,"lastModified":1682898404012000,"id":455,"typeCode":1,"type":"text/x-moz-place","uri":"https://ishadeed.com/"},{"guid":"tWiw35SJAtrw","title":"Rebuilding a featured news section with modern CSS: Vox news - Ahmad Shadeed","index":396,"dateAdded":1682898724103000,"lastModified":1682898724103000,"id":456,"typeCode":1,"type":"text/x-moz-place","uri":"https://ishadeed.com/article/rebuild-featured-news-modern-css/"},{"guid":"buGFpK-r5mkn","title":"React","index":397,"dateAdded":1682902854999000,"lastModified":1682902854999000,"id":457,"typeCode":1,"type":"text/x-moz-place","uri":"https://react.dev/"},{"guid":"T3JOhXUAFb5C","title":"Gzipping @font-face with Nginx – BigDino Blog","index":398,"dateAdded":1683531097758000,"lastModified":1683531097758000,"id":458,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.bigdinosaur.org/gzipping-font-face-with-nginx/"},{"guid":"dlrvw_2900o8","title":"BigDino Blog – Tales of hacking and stomping on things, by Lee Hutchinson","index":399,"dateAdded":1683531102778000,"lastModified":1683531102778000,"id":459,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.bigdinosaur.org/"},{"guid":"KyuAYPxwqI_L","title":"BSteele.com Photos","index":400,"dateAdded":1683596621992000,"lastModified":1683596621992000,"id":460,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"http://www.bsteele.com/"},{"guid":"MKt57bnttZg8","title":"Dart documentation | Dart","index":401,"dateAdded":1683596651202000,"lastModified":1683596651202000,"id":461,"typeCode":1,"type":"text/x-moz-place","uri":"https://dart.dev/guides"},{"guid":"StowC50rR1Mg","title":"How to Scale Images and Background Images on Hover","index":402,"dateAdded":1683619803365000,"lastModified":1683619803365000,"id":462,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3docs.com/snippets/css/how-to-zoom-images-and-background-images-on-hover.html"},{"guid":"ajtn8vr341Qg","title":"Schema.org - Schema.org","index":403,"dateAdded":1683676924180000,"lastModified":1683676924180000,"id":463,"typeCode":1,"type":"text/x-moz-place","uri":"https://schema.org/"},{"guid":"Y7A3cmQs8Ruz","title":"HTML Emoji Reference","index":404,"dateAdded":1683806500024000,"lastModified":1683806500024000,"id":464,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3schools.com/charsets/ref_emoji.asp"},{"guid":"uW46yGyIRrYz","title":"WAI-ARIA Roles - Accessibility | MDN","index":405,"dateAdded":1683887095178000,"lastModified":1683887095178000,"id":465,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles"},{"guid":"SC7Tkxa4sdgM","title":"Kill the Newsletter!","index":406,"dateAdded":1684035848608000,"lastModified":1684035848608000,"id":466,"typeCode":1,"type":"text/x-moz-place","uri":"https://kill-the-newsletter.com/"},{"guid":"jtTVi9Q3wWMX","title":"RSS Feed Generator, Create RSS feeds from URL","index":407,"dateAdded":1684035850348000,"lastModified":1684035850348000,"id":467,"typeCode":1,"type":"text/x-moz-place","uri":"https://rss.app/"},{"guid":"27RXTb6YQKv4","title":"Justin Garrison's Homepage - Justin Garrison","index":408,"dateAdded":1684228041843000,"lastModified":1684228041843000,"id":468,"typeCode":1,"type":"text/x-moz-place","uri":"https://justingarrison.com/"},{"guid":"FitOY0QcX_ID","title":"Use JSDoc: Index","index":409,"dateAdded":1684230638953000,"lastModified":1684230638953000,"id":469,"typeCode":1,"type":"text/x-moz-place","uri":"https://jsdoc.app/"},{"guid":"CeiTgNByUFjB","title":"TypeScript: JavaScript With Syntax For Types.","index":410,"dateAdded":1684230718139000,"lastModified":1684230718139000,"id":470,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.typescriptlang.org/"},{"guid":"jMWRkGsDGVu5","title":"color-scheme | CSS-Tricks - CSS-Tricks","index":411,"dateAdded":1684232000615000,"lastModified":1684232000615000,"id":471,"typeCode":1,"type":"text/x-moz-place","uri":"https://css-tricks.com/almanac/properties/c/color-scheme/"},{"guid":"Qz93CJFWm7LX","title":"Keith J. Grant","index":412,"dateAdded":1684232654298000,"lastModified":1684232654298000,"id":472,"typeCode":1,"type":"text/x-moz-place","uri":"https://keithjgrant.com/"},{"guid":"MHAW80eyfshS","title":"Home Assistant","index":413,"dateAdded":1684234910085000,"lastModified":1684234910085000,"id":473,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.home-assistant.io/"},{"guid":"OpjWbkCf3WDa","title":"Icon Sets • Iconify","index":414,"dateAdded":1684310728782000,"lastModified":1684310728782000,"id":474,"typeCode":1,"type":"text/x-moz-place","uri":"https://icon-sets.iconify.design/"},{"guid":"rFPxmZEIhXnv","title":"CSS 'position: sticky' not working? Try 'overflow: clip', not 'overflow: hidden'","index":415,"dateAdded":1684318004856000,"lastModified":1684318004856000,"id":475,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.terluinwebdesign.nl/en/css/position-sticky-not-working-try-overflow-clip-not-overflow-hidden/"},{"guid":"ELsfRzq8ZoFI","title":"User email/account confirmation - opinions on best practices? : webdev","index":416,"dateAdded":1684382673161000,"lastModified":1684382673161000,"id":476,"typeCode":1,"type":"text/x-moz-place","uri":"https://teddit.pussthecat.org/r/webdev/comments/u5nb70/user_emailaccount_confirmation_opinions_on_best/"},{"guid":"sP4ns2kVAB6Q","title":"Full stack open","index":417,"dateAdded":1684392533310000,"lastModified":1684392533310000,"id":477,"typeCode":1,"type":"text/x-moz-place","uri":"https://fullstackopen.com/en/"},{"guid":"DmiRpYChEncZ","title":"Catbox","index":418,"dateAdded":1684398750784000,"lastModified":1684398750784000,"id":478,"typeCode":1,"type":"text/x-moz-place","uri":"https://catbox.moe/"},{"guid":"-y76mjzKWuyO","title":"Litterbox","index":419,"dateAdded":1684398756315000,"lastModified":1684398756315000,"id":479,"typeCode":1,"type":"text/x-moz-place","uri":"https://litterbox.catbox.moe/"},{"guid":"dHz8hb8pMZYV","title":"Why Japanese Websites Look So Different","index":420,"dateAdded":1684458237012000,"lastModified":1684458237012000,"id":480,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/@mirijam.missbichler/why-japanese-websites-look-so-different-2c7273e8be1e"},{"guid":"Wnr3aDkxlch5","title":"Brevo (formerly Sendinblue) | CRM Suite","index":421,"dateAdded":1684465883984000,"lastModified":1684465883984000,"id":481,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.brevo.com/"},{"guid":"8ZcVf19aVi2D","title":"Test Cookie Login","index":422,"dateAdded":1684819592179000,"lastModified":1684819592179000,"id":482,"typeCode":1,"type":"text/x-moz-place","uri":"http://localhost:8000/login"},{"guid":"kJr7Di2ErbQh","title":"NoScript Settings","index":423,"dateAdded":1685083284310000,"lastModified":1685083284310000,"id":483,"typeCode":1,"type":"text/x-moz-place","uri":"moz-extension://8efcc8dc-203c-4b0f-8166-2f43e7baa767/ui/options.html"},{"guid":"TkwBRKlpmAxV","title":"Bunny Fonts | FontSpace","index":424,"dateAdded":1685525031723000,"lastModified":1685525031723000,"id":484,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fontspace.com/category/bunny"},{"guid":"M6icijctKIXx","title":"Free eBooks | Project Gutenberg","index":425,"dateAdded":1685525046681000,"lastModified":1685525046681000,"id":485,"typeCode":1,"type":"text/x-moz-place","uri":"https://gutenberg.org/"},{"guid":"qMB9TFt7opHg","title":"GitHub - VonHeikemen/lsp-zero.nvim: A starting point to setup some lsp related features in neovim.","index":426,"dateAdded":1685618335845000,"lastModified":1685618335845000,"id":486,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/VonHeikemen/lsp-zero.nvim"},{"guid":"lZX4zxfrd107","title":"request.state is empty when server rendering · Issue #2970 · hapijs/hapi · GitHub","index":427,"dateAdded":1685684913208000,"lastModified":1685684913208000,"id":487,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/hapijs/hapi/issues/2970"},{"guid":"qYqRKu0vYO7P","title":"NGINX remove .html extension - Stack Overflow","index":428,"dateAdded":1685701208952000,"lastModified":1685701208952000,"id":488,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/38228393/nginx-remove-html-extension"},{"guid":"f1ieowhuiy71","title":"How to Create Custom 404 Error Page in NGINX","index":429,"dateAdded":1685701211340000,"lastModified":1685701211340000,"id":489,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.tecmint.com/create-custom-nginx-error-page/"},{"guid":"IFhGlPI4fFyY","title":"Converting and Optimizing Images From the Command Line | CSS-Tricks - CSS-Tricks","index":430,"dateAdded":1685703084713000,"lastModified":1685703084713000,"id":490,"typeCode":1,"type":"text/x-moz-place","uri":"https://css-tricks.com/converting-and-optimizing-images-from-the-command-line/"},{"guid":"xNmjg2IHfIBg","title":"Compression and Decompression | NGINX Documentation","index":431,"dateAdded":1685704671042000,"lastModified":1685704671042000,"id":491,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.nginx.com/nginx/admin-guide/web-server/compression/"},{"guid":"uR-OPGFAPy-o","title":"How To Improve Website Performance Using gzip and Nginx on Ubuntu 20.04 | DigitalOcean","index":432,"dateAdded":1685704896993000,"lastModified":1685704896993000,"id":492,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.digitalocean.com/community/tutorials/how-to-improve-website-performance-using-gzip-and-nginx-on-ubuntu-20-04"},{"guid":"nuI1elOvHPa1","title":"Transpilers vs Compilers⚙ - DEV Community","index":433,"dateAdded":1685764001108000,"lastModified":1685764001108000,"id":493,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/suryaraj1/transpilers-vs-compilers-3ohj"},{"guid":"zw440l1jAX5W","title":"How HEY Works | HEY","index":434,"dateAdded":1685769036813000,"lastModified":1685769036813000,"id":494,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.hey.com/how-it-works/"},{"guid":"004kRTTgE19v","title":"FastAPI","index":435,"dateAdded":1685775467974000,"lastModified":1685775467974000,"id":495,"typeCode":1,"type":"text/x-moz-place","uri":"https://fastapi.tiangolo.com/"},{"guid":"4zcW86sEMCJh","title":"Typer","index":436,"dateAdded":1685775481150000,"lastModified":1685775481150000,"id":496,"typeCode":1,"type":"text/x-moz-place","uri":"https://typer.tiangolo.com/"},{"guid":"Qk_kU2kEbSJ1","title":"how to allow known web crawlers and block spammers and harmful robots from scanning asp.net website - Stack Overflow","index":437,"dateAdded":1685786853515000,"lastModified":1685786853515000,"id":497,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/10793906/how-to-allow-known-web-crawlers-and-block-spammers-and-harmful-robots-from-scann"},{"guid":"qth52BGu_4dQ","title":"How to Secure Nginx Against Malicious Bots - Plesk","index":438,"dateAdded":1685786935782000,"lastModified":1685786935782000,"id":498,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.plesk.com/blog/guides/secure-nginx-against-bots/"},{"guid":"ri9kZkw31F1j","title":"How to Block Search Engines Using robots.txt disallow Rule","index":439,"dateAdded":1685788692610000,"lastModified":1685788692610000,"id":499,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.hostinger.com/tutorials/website/how-to-block-search-engines-using-robotstxt"},{"guid":"7Sewb07R9kjL","title":"Block Search Indexing with noindex | Google Search Central | Documentation | Google for Developers","index":440,"dateAdded":1685788694986000,"lastModified":1685788694986000,"id":500,"typeCode":1,"type":"text/x-moz-place","uri":"https://developers.google.com/search/docs/crawling-indexing/block-indexing"},{"guid":"L6RVgsF0H4B0","title":"Robots.txt Introduction and Guide | Google Search Central | Documentation | Google for Developers","index":441,"dateAdded":1685788696779000,"lastModified":1685788696779000,"id":501,"typeCode":1,"type":"text/x-moz-place","uri":"https://developers.google.com/search/docs/crawling-indexing/robots/intro"},{"guid":"5mm6Vj5zp0_l","title":"TorrentFreak - News","index":442,"dateAdded":1685843958781000,"lastModified":1685843958781000,"id":502,"typeCode":1,"type":"text/x-moz-place","uri":"https://torrentfreak.com/"},{"guid":"t16JwGZeg6OP","title":"caching - Redis cache vs using memory directly - Stack Overflow","index":443,"dateAdded":1685850052438000,"lastModified":1685850052438000,"id":505,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/19477821/redis-cache-vs-using-memory-directly#19489635"},{"guid":"A7Doond-aNUV","title":"Kysely | Kysely","index":444,"dateAdded":1685928030091000,"lastModified":1685928030091000,"id":506,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.kysely.dev/"},{"guid":"Back4AYHBmPr","title":"Bye-bye useState & useEffect: Revolutionizing React Development!","index":445,"dateAdded":1686121707889000,"lastModified":1686121707889000,"id":507,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/@emmanuelodii80/bye-bye-usestate-useeffect-revolutionizing-react-development-d91f95891adb?source=email-e2e3c3bdaf7d-1686043329251-digest.reader--d91f95891adb----0-58------------------d0d59453_5414_423f_8867_1def2536fc6c-1"},{"guid":"pB69yI0Rpycw","title":"HTML ASCII Reference","index":446,"dateAdded":1687066387038000,"lastModified":1687066387038000,"id":508,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3schools.com/charsets/ref_html_ascii.asp"},{"guid":"mVXRATPpqDKS","title":"Articles & Experiments by Roman Komarov","index":447,"dateAdded":1687121050138000,"lastModified":1687121050138000,"id":509,"typeCode":1,"type":"text/x-moz-place","uri":"https://kizu.dev/"},{"guid":"LetEQlHndjD8","title":"configuration - Nginx 403 error: directory index of [folder] is forbidden - Stack Overflow","index":448,"dateAdded":1687159920342000,"lastModified":1687159920342000,"id":510,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/19285355/nginx-403-error-directory-index-of-folder-is-forbidden"},{"guid":"kVaLPDMEFS9C","title":"NGINX Documentation","index":449,"dateAdded":1687160573000000,"lastModified":1687160573000000,"id":511,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.nginx.com/"},{"guid":"MY6Ns_qWoNbi","title":"Pitfalls and Common Mistakes | NGINX","index":450,"dateAdded":1687163928262000,"lastModified":1687163928262000,"id":512,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/"},{"guid":"bLKrU6X1UJ5L","title":"Meta Tag Generator | HTML code optimal for social media, SEO, mobile","index":451,"dateAdded":1687249003948000,"lastModified":1687249003948000,"id":513,"typeCode":1,"type":"text/x-moz-place","uri":"https://lewdev.github.io/apps/meta-tag-gen/"},{"guid":"yyYFr_ZTm7m8","title":"How to Run NGINX Inside Docker (for Easy Auto-Scaling)","index":452,"dateAdded":1687253291708000,"lastModified":1687253291708000,"id":514,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.howtogeek.com/devops/how-to-run-nginx-inside-docker-for-easy-auto-scaling/"},{"guid":"f_n0al0YdoZH","title":"GitHub - staticfloat/docker-nginx-certbot-old: Create and renew website certificates using the Letsencrypt free certificate authority.","index":453,"dateAdded":1687253424304000,"lastModified":1687253424304000,"id":515,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/staticfloat/docker-nginx-certbot-old"},{"guid":"lBe4xxxI1zv9","title":"Configuring Logging | NGINX Documentation","index":454,"dateAdded":1687256708936000,"lastModified":1687256708936000,"id":516,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.nginx.com/nginx/admin-guide/monitoring/logging/"},{"guid":"IJ3FSRPYXPwc","title":"NGINX Content Caching | NGINX Documentation","index":455,"dateAdded":1687257097770000,"lastModified":1687257097770000,"id":517,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/"},{"guid":"uSEKx8FwMx8q","title":"Agenty Browser API | Agenty","index":456,"dateAdded":1687320659898000,"lastModified":1687320659898000,"id":518,"typeCode":1,"type":"text/x-moz-place","uri":"https://agenty.com/docs/browser"},{"guid":"B9GdK5K4t_s-","title":"Amazon.com: Camco 20.5-Inches x 24-Inches Dishwasher Drain Pan, Black - Protects Your Floor, Cabinets and Walls from Leaking Dishwashers - Directs Water to The Front for Easy Leak Identification (20602) : Appliances","index":457,"dateAdded":1687329035193000,"lastModified":1687329035193000,"id":519,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.amazon.com/Camco-20-5-Inches-24-Inches-Dishwasher-Drain/dp/B09BBMN93G/ref=sr_1_1?keywords=camco+dishwasher+drain"},{"guid":"-SnWC2rCzmzo","title":"brianhayes.dev","index":458,"dateAdded":1687433770873000,"lastModified":1687433770873000,"id":520,"typeCode":1,"type":"text/x-moz-place","uri":"https://brianhayes.dev/blog/musings_on_vim"},{"guid":"eY8SSYcgFoCB","title":"WebPageTest - Website Performance and Optimization Test","index":459,"dateAdded":1687717194417000,"lastModified":1687717194417000,"id":521,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.webpagetest.org/"},{"guid":"RbQVAZW_gYhe","title":"GTmetrix | Website Performance Testing and Monitoring","index":460,"dateAdded":1687717205909000,"lastModified":1687717205909000,"id":522,"typeCode":1,"type":"text/x-moz-place","uri":"https://gtmetrix.com/"},{"guid":"GDPjehAtRlNT","title":"Optimize CSS delivery for faster page rendering","index":461,"dateAdded":1687718078293000,"lastModified":1687718078293000,"id":523,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.giftofspeed.com/optimize-css-delivery/"},{"guid":"NtAFyaxQEFe3","title":"Defer loading CSS scripts to render web pages quicker","index":462,"dateAdded":1687718178189000,"lastModified":1687718178189000,"id":524,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.giftofspeed.com/defer-loading-css/"},{"guid":"WLQxj1rHMxCw","title":"The Opt Out Project","index":463,"dateAdded":1687772258088000,"lastModified":1687772258088000,"id":525,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.optoutproject.net/"},{"guid":"fl5xVdRZMiIL","title":"Ploum.net","index":464,"dateAdded":1687772624193000,"lastModified":1687772624193000,"id":526,"typeCode":1,"type":"text/x-moz-place","uri":"https://ploum.net/"},{"guid":"DHxApikcNAlX","title":"Merdification of things","index":465,"dateAdded":1687773323004000,"lastModified":1687773323004000,"id":527,"typeCode":1,"type":"text/x-moz-place","uri":"https://ploum.net/2023-06-15-merdification.html"},{"guid":"CBFyzm3daKru","title":"User Generated Content and the Fediverse: A Legal Primer | Electronic Frontier Foundation","index":466,"dateAdded":1687775505414000,"lastModified":1687775505414000,"id":528,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.eff.org/deeplinks/2022/12/user-generated-content-and-fediverse-legal-primer"},{"guid":"88zDpqzoLy4t","title":"BookWyrm: Social Reading and Reviewing","index":467,"dateAdded":1687776036855000,"lastModified":1687776036855000,"id":529,"typeCode":1,"type":"text/x-moz-place","uri":"https://joinbookwyrm.com/"},{"guid":"Xn3FjIJ5XdPk","title":"Electronic Frontier Foundation | Defending your rights in the digital world","index":468,"dateAdded":1687777033004000,"lastModified":1687777033004000,"id":530,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.eff.org/"},{"guid":"twjiA0fgXTtG","title":"Frontpage -- Terms of Service; Didn't Read","index":469,"dateAdded":1687777701571000,"lastModified":1687777701571000,"id":531,"typeCode":1,"type":"text/x-moz-place","uri":"https://tosdr.org/"},{"guid":"s87VtYvxjUfN","title":"What Reddit Got Wrong | Electronic Frontier Foundation","index":470,"dateAdded":1687778571865000,"lastModified":1687778571865000,"id":532,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.eff.org/deeplinks/2023/06/what-reddit-got-wrong"},{"guid":"DWDyP43JnKBs","title":"brianhayes.dev","index":471,"dateAdded":1688113479635000,"lastModified":1688113479635000,"id":533,"typeCode":1,"type":"text/x-moz-place","uri":"https://brianhayes.dev/blog/why_use_linux"},{"guid":"GlI64y7W5RGs","title":"How (and should?) we stop the infinite scroll","index":472,"dateAdded":1688118598374000,"lastModified":1688118598374000,"id":534,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/m/global-identity-2?redirectUrl=https%3A%2F%2Fuxdesign.cc%2Fhow-and-should-we-stop-the-infinite-scroll-66141fcb0768%3Fsource%3Dmktgemail-e2e3c3bdaf7d--we230628"},{"guid":"nNu-GqMr5UGP","title":"Amnesty International","index":473,"dateAdded":1688172846094000,"lastModified":1688172846094000,"id":535,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.amnesty.org/en/"},{"guid":"PDMwSuokUUGk","title":"Why Processes In Docker Containers Shouldn’t Run as Root","index":474,"dateAdded":1688453978679000,"lastModified":1688453978679000,"id":536,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.howtogeek.com/devops/why-processes-in-docker-containers-shouldnt-run-as-root/"},{"guid":"nvg2Ew4N0or5","title":"Adding and Leveraging a CDN on Your Website | CSS-Tricks - CSS-Tricks","index":475,"dateAdded":1688457715580000,"lastModified":1688457715580000,"id":537,"typeCode":1,"type":"text/x-moz-place","uri":"https://css-tricks.com/adding-a-cdn-to-your-website/"},{"guid":"Sq5a4WwgvHqk","title":"GitHub - auth0/node-jsonwebtoken: JsonWebToken implementation for node.js http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html","index":476,"dateAdded":1688525208606000,"lastModified":1688525208606000,"id":538,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/auth0/node-jsonwebtoken#readme"},{"guid":"AsNG8ycv67Mi","title":"hapi-auth-jwt2 - npm","index":477,"dateAdded":1688525214258000,"lastModified":1688525214258000,"id":539,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.npmjs.com/package/hapi-auth-jwt2"},{"guid":"bzVWj34Ayv_d","title":"GitHub - dwyl/hapi-auth-jwt2: :lock: Secure Hapi.js authentication plugin using JSON Web Tokens (JWT) in Headers, URL or Cookies","index":478,"dateAdded":1688525217155000,"lastModified":1688525217155000,"id":540,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/dwyl/hapi-auth-jwt2"},{"guid":"xdx--T9rUlYD","title":"keyframes.dev","index":479,"dateAdded":1688697784977000,"lastModified":1688697784977000,"id":541,"typeCode":1,"type":"text/x-moz-place","uri":"https://keyframes.dev/index.html"},{"guid":"AaNmGJ6raQCl","title":"sub.rehab · Find your next diving spot","index":480,"dateAdded":1688697827773000,"lastModified":1688697827773000,"id":542,"typeCode":1,"type":"text/x-moz-place","uri":"https://sub.rehab/"},{"guid":"aGx__rgAxknJ","title":"🖤 ANTI-META FEDI PACT 🖤","index":481,"dateAdded":1688697848196000,"lastModified":1688697848196000,"id":543,"typeCode":1,"type":"text/x-moz-place","uri":"https://fedipact.online/"},{"guid":"CCN2HeG8auOo","title":"Markup from hell - HTMHell","index":482,"dateAdded":1688697920803000,"lastModified":1688697920803000,"id":544,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.htmhell.dev/"},{"guid":"YfC5XmLlyuBU","title":"Susie Lu - home","index":483,"dateAdded":1688698073748000,"lastModified":1688698073748000,"id":545,"typeCode":1,"type":"text/x-moz-place","uri":"https://susielu.com/"},{"guid":"TowiBuknx1sI","title":"OsmAnd(Navigation) Voice Directions Set up – BoringPhone","index":484,"dateAdded":1689498431791000,"lastModified":1689498431791000,"id":546,"typeCode":1,"type":"text/x-moz-place","uri":"https://boringphone.com/knowledge-base/osmandnavigation-voice-directions-set-up/"},{"guid":"oEzMQ1B2g7gE","title":"Invidious Instances - Invidious Documentation","index":485,"dateAdded":1689643785469000,"lastModified":1689643785469000,"id":547,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.invidious.io/instances/"},{"guid":"F6fuzF16QvOh","title":"Find Jobs in Tech | Dice.com","index":486,"dateAdded":1689730037185000,"lastModified":1689730037185000,"id":548,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.dice.com/"},{"guid":"TmlcUFROxatF","title":"B-Tree Visualization","index":487,"dateAdded":1689825386137000,"lastModified":1689825386137000,"id":549,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.cs.usfca.edu/~galles/visualization/BTree.html"},{"guid":"2ou9hIRg__Cw","title":"Google Font Pairing Inspiration for 2023","index":488,"dateAdded":1689832717790000,"lastModified":1689832717790000,"id":550,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fontpair.co/all"},{"guid":"bcblBtwu_JuX","title":"Realtime Colors","index":489,"dateAdded":1689832769604000,"lastModified":1689832769604000,"id":551,"typeCode":1,"type":"text/x-moz-place","uri":"https://realtimecolors.com/?colors=050505-fafafa-c1b2d2-e6dfec-7e5ea1"},{"guid":"4f3B9Tg9yc26","title":"Fluid type scale calculator | Utopia","index":490,"dateAdded":1689832836317000,"lastModified":1689832836317000,"id":552,"typeCode":1,"type":"text/x-moz-place","uri":"https://utopia.fyi/type/calculator?c=320,18,1.2,1240,20,1.25,5,2,&s=0.75%7C0.5%7C0.25,1.5%7C2%7C3%7C4%7C6,s-l&g=s,l,xl,12"},{"guid":"RBjZ-gkNjfTc","title":"Internet country domains list / Country Internet codes / TLDs - World Standards","index":491,"dateAdded":1690014797051000,"lastModified":1690014797051000,"id":553,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.worldstandards.eu/other/tlds/"},{"guid":"trvoJL_iowQr","title":"links - cadence's website","index":492,"dateAdded":1690103690160000,"lastModified":1690103690160000,"id":554,"typeCode":1,"type":"text/x-moz-place","uri":"https://cadence.moe/links"},{"guid":"-2bgzpCKSQKB","title":"cadence's website","index":493,"dateAdded":1690103696005000,"lastModified":1690103696005000,"id":555,"typeCode":1,"type":"text/x-moz-place","uri":"https://cadence.moe/"},{"guid":"qEIR5Jk2RzBR","title":"Why you shouldn't trust Discord - cadence's weblog (personal blog)","index":494,"dateAdded":1690105105428000,"lastModified":1690105105428000,"id":556,"typeCode":1,"type":"text/x-moz-place","uri":"https://cadence.moe/blog/2020-06-06-why-you-shouldnt-trust-discord"},{"guid":"5k5A2xkb5DWR","title":"GitHub - rchipka/node-osmosis: Web scraper for NodeJS","index":495,"dateAdded":1690176170341000,"lastModified":1690176170341000,"id":557,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/rchipka/node-osmosis"},{"guid":"qJUyLXmnea6I","title":"crxextractor.com","index":496,"dateAdded":1690277287311000,"lastModified":1690277302061000,"id":558,"typeCode":1,"type":"text/x-moz-place","uri":"https://crxextractor.com/"},{"guid":"4DgVvHC1qbWD","title":"Netflix Resources | Find Information, Resources, and Support | Home","index":497,"dateAdded":1690360928164000,"lastModified":1690360928164000,"id":559,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.wannatalkaboutit.com/"},{"guid":"HL7y3QDNKGj8","title":"Boundaries","index":498,"dateAdded":1690599388791000,"lastModified":1690599388791000,"id":560,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.destroyallsoftware.com/talks/boundaries"},{"guid":"5j5mLIjNvpVk","title":"Destroy All Software","index":499,"dateAdded":1690599412402000,"lastModified":1690599412402000,"id":561,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.destroyallsoftware.com/screencasts"},{"guid":"9zlq-KVkqz-0","title":"dBooks - Free download open books","index":500,"dateAdded":1691105603860000,"lastModified":1691105603860000,"id":562,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.dbooks.org/"},{"guid":"Zlq842I3V_h_","title":"Project Zomboid Map Project","index":501,"dateAdded":1691217946863000,"lastModified":1691217946863000,"id":563,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://map.projectzomboid.com/#11086x9137x9"},{"guid":"wKpKZ3J_M_Rd","title":"Main Page - PZwiki","index":502,"dateAdded":1691217962833000,"lastModified":1691217962833000,"id":564,"typeCode":1,"type":"text/x-moz-place","uri":"https://pzwiki.net/wiki/Special:MyLanguage/Main_Page"},{"guid":"ChM9v6OdT2z1","title":"Forums - The Indie Stone Forums","index":503,"dateAdded":1691218008673000,"lastModified":1691218008673000,"id":565,"typeCode":1,"type":"text/x-moz-place","uri":"https://theindiestone.com/forums/"},{"guid":"_fudVs8ZSkD9","title":"iCodeThis","index":504,"dateAdded":1691220364125000,"lastModified":1691220364125000,"id":566,"typeCode":1,"type":"text/x-moz-place","uri":"https://icodethis.com/"},{"guid":"TJrsHpq1aMk9","title":"Frontend Mentor | Front-end coding challenges using a real-life workflow","index":505,"dateAdded":1691220454266000,"lastModified":1691220454266000,"id":567,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.frontendmentor.io/"},{"guid":"u7dkQVbgwO5k","title":"Frontend Practice | Become a better frontend developer.","index":506,"dateAdded":1691220501480000,"lastModified":1691220501480000,"id":568,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.frontendpractice.com/"},{"guid":"4sU2L5014DKn","title":"CSS Diner - Where we feast on CSS Selectors!","index":507,"dateAdded":1691220696760000,"lastModified":1691220696760000,"id":569,"typeCode":1,"type":"text/x-moz-place","uri":"https://flukeout.github.io/"},{"guid":"SSOh5BkLvdGb","title":"Flexbox Froggy - A game for learning CSS flexbox","index":508,"dateAdded":1691220731312000,"lastModified":1691220731312000,"id":570,"typeCode":1,"type":"text/x-moz-place","uri":"https://flexboxfroggy.com/"},{"guid":"FKHteMomlABG","title":"Grid Garden - A game for learning CSS grid","index":509,"dateAdded":1691220902871000,"lastModified":1691220902871000,"id":571,"typeCode":1,"type":"text/x-moz-place","uri":"https://cssgridgarden.com/"},{"guid":"EwDnV2tCX3n6","title":"Learn CSS Grid Mastery Game","index":510,"dateAdded":1691220921503000,"lastModified":1691220921503000,"id":572,"typeCode":1,"type":"text/x-moz-place","uri":"https://gridcritters.com/"},{"guid":"xZT8k_O2kPno","title":"GitHub - alacritty/alacritty-theme: Collection of Alacritty color schemes","index":511,"dateAdded":1691831655852000,"lastModified":1691831655852000,"id":573,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/alacritty/alacritty-theme"},{"guid":"xhN822jV4GY-","title":"It's Going Down | In Search of New Forms of Life","index":512,"dateAdded":1692008632306000,"lastModified":1692008632306000,"id":574,"typeCode":1,"type":"text/x-moz-place","uri":"https://itsgoingdown.org/"},{"guid":"26hVKLrF1XPn","title":"DNS Resolvers - Privacy Guides","index":513,"dateAdded":1692051887400000,"lastModified":1692051923130000,"id":575,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.privacyguides.org/en/dns/"},{"guid":"9EprLsKFuHeA","title":"📜 ➜ Megathread","index":514,"dateAdded":1692052449111000,"lastModified":1692052449111000,"id":576,"typeCode":1,"type":"text/x-moz-place","uri":"https://rentry.co/megathread"},{"guid":"Il-nuBHnLZY8","title":"The Movie Database (TMDB)","index":515,"dateAdded":1692052490231000,"lastModified":1692052490231000,"id":577,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.themoviedb.org/"},{"guid":"Tvm_3yYyVgDB","title":"Practical Accessibility — Practical Accessibility for web designers and developers","index":516,"dateAdded":1692052558054000,"lastModified":1692052558054000,"id":578,"typeCode":1,"type":"text/x-moz-place","uri":"https://practical-accessibility.today/"},{"guid":"wtXwFf90ae0L","title":"wizard zines","index":517,"dateAdded":1692052625053000,"lastModified":1692052625053000,"id":579,"typeCode":1,"type":"text/x-moz-place","uri":"https://wizardzines.com/"},{"guid":"b8ckVvyjDvw8","title":"Resgen | Custom resumes for every job.","index":518,"dateAdded":1692052752604000,"lastModified":1692052752604000,"id":580,"typeCode":1,"type":"text/x-moz-place","uri":"https://resgen.app/"},{"guid":"lX5W0MuAKcm2","title":"Rose City Antifa","index":519,"dateAdded":1692085570434000,"lastModified":1692085570434000,"id":581,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.rosecityantifa.org/"},{"guid":"6Za0A0nRiMBQ","title":"GetComics – GetComics is an awesome place to download DC, Marvel, Image, Dark Horse, Dynamite, IDW, Oni, Valiant, Zenescope and many more Comics totally for FREE.","index":520,"dateAdded":1692264897598000,"lastModified":1692264897598000,"id":582,"typeCode":1,"type":"text/x-moz-place","uri":"https://getcomics.org/"},{"guid":"4wXLGehJd7o4","title":"How to publish your apps on F-Droid? - DEV Community","index":521,"dateAdded":1692353949504000,"lastModified":1692353949504000,"id":583,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/sanandmv7/how-to-publish-your-apps-on-f-droid-2epn"},{"guid":"o__IoEah4K7N","title":"Coding Interview & Technical Assessment Platform - CoderPad","index":522,"dateAdded":1692672036612000,"lastModified":1692672036612000,"id":584,"typeCode":1,"type":"text/x-moz-place","uri":"https://coderpad.io/"},{"guid":"TUbvr3Tea-Ks","title":"Coach Matt - Expert 1:1 interview prep for front-end engineers","index":523,"dateAdded":1692672965386000,"lastModified":1692672965386000,"id":585,"typeCode":1,"type":"text/x-moz-place","uri":"https://coachmatt.io/"},{"guid":"b6_LTeFQtM-3","title":"Practice Mock Interviews & Coding Problems - Land Top Jobs | Pramp","index":524,"dateAdded":1692693689154000,"lastModified":1692693689154000,"id":586,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.pramp.com/"},{"guid":"aFjVPTjE98iM","title":"The data brokers quietly buying and selling your personal information","index":525,"dateAdded":1692853490941000,"lastModified":1692853490941000,"id":587,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fastcompany.com/90310803/here-are-the-data-brokers-quietly-buying-and-selling-your-personal-information"},{"guid":"bWeSMX1WZ-1W","title":"The 10 Largest Advertising Agencies In The World - Zippia","index":526,"dateAdded":1692854196336000,"lastModified":1692854196336000,"id":588,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.zippia.com/advice/largest-advertising-agencies/"},{"guid":"yG3d5RhlSP5q","title":"Resend","index":527,"dateAdded":1693008880373000,"lastModified":1693008880373000,"id":589,"typeCode":1,"type":"text/x-moz-place","uri":"https://resend.com/"},{"guid":"pa-dRPyHHpSj","title":"Fast and low overhead web framework, for Node.js | Fastify","index":528,"dateAdded":1693193733377000,"lastModified":1693193733377000,"id":590,"typeCode":1,"type":"text/x-moz-place","uri":"https://fastify.dev/"},{"guid":"flyjfZYn8HtZ","title":"Introduction | Fastify","index":529,"dateAdded":1693193743587000,"lastModified":1693193743587000,"id":591,"typeCode":1,"type":"text/x-moz-place","uri":"https://fastify.dev/docs/latest/"},{"guid":"ofusf2geOqqk","title":"Getting Started with Swagger: An Introduction to Swagger Tools","index":530,"dateAdded":1693200347772000,"lastModified":1693200347772000,"id":592,"typeCode":1,"type":"text/x-moz-place","uri":"https://swagger.io/resources/webinars/getting-started-with-swagger/"},{"guid":"cNpgUVLSCH8A","title":"GitHub - fastify/fastify-swagger: Swagger documentation generator for Fastify","index":531,"dateAdded":1693200530367000,"lastModified":1693200530367000,"id":593,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/fastify/fastify-swagger"},{"guid":"bbcJOAk3E0s0","title":"GitHub - fastify/fastify-swagger-ui: Serve Swagger-UI for Fastify","index":532,"dateAdded":1693203278652000,"lastModified":1693203278652000,"id":594,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/fastify/fastify-swagger-ui"},{"guid":"gbREb9Fwt8Ij","title":"better-sqlite3/docs/api.md at master · WiseLibs/better-sqlite3 · GitHub","index":533,"dateAdded":1693215368509000,"lastModified":1693215368509000,"id":595,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/WiseLibs/better-sqlite3/blob/master/docs/api.md#tablename-definition---this"},{"guid":"lp3xW4_oub5u","title":"Installation | Knex.js","index":534,"dateAdded":1693215374117000,"lastModified":1693215374117000,"id":596,"typeCode":1,"iconUri":"https://knexjs.org/knex-logo.png","type":"text/x-moz-place","uri":"https://knexjs.org/guide/"},{"guid":"XKdCtaT9pMco","title":"Helmet.js","index":535,"dateAdded":1693217622584000,"lastModified":1693217622584000,"id":597,"typeCode":1,"type":"text/x-moz-place","uri":"https://helmetjs.github.io/"},{"guid":"5JGzqqqkli4C","title":"mysql - Does Knex.js prevent sql injection? - Stack Overflow","index":536,"dateAdded":1693217721693000,"lastModified":1693217721693000,"id":598,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/49665023/does-knex-js-prevent-sql-injection"},{"guid":"Dy4Q95Y_0uWq","title":"Validate the Fastify Input with Joi - NearForm","index":537,"dateAdded":1693377323490000,"lastModified":1693377323490000,"id":599,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.nearform.com/blog/validate-the-fastify-input-with-joi/"},{"guid":"2NANSPqsLh0x","title":"Validation and Serialization in Fastify v3 - DEV Community","index":538,"dateAdded":1693457373865000,"lastModified":1693457373865000,"id":600,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/eomm/validation-and-serialization-in-fastify-v3-2e8l"},{"guid":"3wM-wk3DVh-0","title":"Fastify Error handlers - DEV Community","index":539,"dateAdded":1693457608957000,"lastModified":1693457608957000,"id":601,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/eomm/fastify-error-handlers-53ol"},{"guid":"rCwSJz-bja3U","title":"enable cross-origin resource sharing","index":540,"dateAdded":1693464772511000,"lastModified":1693464772511000,"id":602,"typeCode":1,"type":"text/x-moz-place","uri":"https://enable-cors.org/server_nginx.html"},{"guid":"7lb0FC0WEqTv","title":"Cross-Origin Resource Sharing (CORS) - HTTP | MDN","index":541,"dateAdded":1693464790363000,"lastModified":1693464790363000,"id":603,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"},{"guid":"xen0pA3R_aR3","title":"Extending Multiple Classes in JavaScript","index":542,"dateAdded":1693543752590000,"lastModified":1693543752590000,"id":604,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/@thevirtuoid/extending-multiple-classes-in-javascript-2f4752574e65"},{"guid":"FcjnAKIT5nVd","title":"Understanding symbols in JavaScript - LogRocket Blog","index":543,"dateAdded":1693702771243000,"lastModified":1693702771243000,"id":605,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.logrocket.com/understanding-symbols-in-javascript/"},{"guid":"yXOlrBbJG_bf","title":"javascript - What is an efficient way to divide an array by a value? - Stack Overflow","index":544,"dateAdded":1693824438264000,"lastModified":1693824438264000,"id":606,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/42584479/what-is-an-efficient-way-to-divide-an-array-by-a-value"},{"guid":"deiGn92LDJMV","title":"How to deploy an Express app using Docker - Sabe.io","index":545,"dateAdded":1693872343973000,"lastModified":1693872343973000,"id":607,"typeCode":1,"type":"text/x-moz-place","uri":"https://sabe.io/tutorials/how-to-deploy-express-app-docker"},{"guid":"GCP-_SOHfxDD","title":"Testing | Fastify","index":546,"dateAdded":1693885322496000,"lastModified":1693885322496000,"id":608,"typeCode":1,"type":"text/x-moz-place","uri":"https://fastify.dev/docs/v4.15.x/Guides/Testing/"},{"guid":"ug3AT_fAMSV_","title":"TAP Basics","index":547,"dateAdded":1693888654572000,"lastModified":1693888654572000,"id":609,"typeCode":1,"type":"text/x-moz-place","uri":"https://node-tap.org/basics/"},{"guid":"zZrqRvlK-ia2","title":"ava/docs at main · avajs/ava · GitHub","index":548,"dateAdded":1693889237499000,"lastModified":1693889237499000,"id":610,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/avajs/ava/tree/main/docs"},{"guid":"z5tBRvsKxa_S","title":"Using Istanbul With AVA","index":549,"dateAdded":1693889882244000,"lastModified":1693889882244000,"id":611,"typeCode":1,"type":"text/x-moz-place","uri":"https://istanbul.js.org/docs/tutorials/ava/"},{"guid":"YU329WSfGp5e","title":"Page not found - Matthew Manela","index":550,"dateAdded":1693891211496000,"lastModified":1693891211496000,"id":612,"typeCode":1,"type":"text/x-moz-place","uri":"https://matthewmanela.com/blog"},{"guid":"5W9pXzpHzQfK","title":"Matthew Manela - Building high quality software and teams","index":551,"dateAdded":1693891221419000,"lastModified":1693891221419000,"id":613,"typeCode":1,"type":"text/x-moz-place","uri":"https://matthewmanela.com/"},{"guid":"1lzZRkuaNScP","title":"Sinon Tutorial: JavaScript Testing with Mocks, Spies & Stubs — SitePoint","index":552,"dateAdded":1693891624221000,"lastModified":1693891624221000,"id":614,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.sitepoint.com/sinon-tutorial-javascript-testing-mocks-spies-stubs/"},{"guid":"u72LkgqY49d3","title":"Gitolite","index":553,"dateAdded":1694088347282000,"lastModified":1694088347282000,"id":615,"typeCode":1,"type":"text/x-moz-place","uri":"https://gitolite.com/gitolite/"},{"guid":"pGZ0j-WMx6HL","title":"How to Run a Cron Job Inside a Docker Container? | Baeldung","index":554,"dateAdded":1694168989417000,"lastModified":1694168989417000,"id":616,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.baeldung.com/ops/docker-cron-job"},{"guid":"DiCNVTOiRWFY","title":"Sending Emails With Python – Real Python","index":555,"dateAdded":1694169482459000,"lastModified":1694169482459000,"id":617,"typeCode":1,"type":"text/x-moz-place","uri":"https://realpython.com/python-send-email/"},{"guid":"hdvWB8cmjFmx","title":"bash - sanely run all scripts in a directory - Unix & Linux Stack Exchange","index":556,"dateAdded":1694170547962000,"lastModified":1694170547962000,"id":618,"typeCode":1,"type":"text/x-moz-place","uri":"https://unix.stackexchange.com/questions/189118/sanely-run-all-scripts-in-a-directory"},{"guid":"gE8Cg3CCVuMt","title":"requests-HTML v0.3.4 documentation","index":557,"dateAdded":1694416697790000,"lastModified":1694416697790000,"id":619,"typeCode":1,"type":"text/x-moz-place","uri":"https://requests.readthedocs.io/projects/requests-html/en/latest/"},{"guid":"xetLTZkvdiTz","title":"Million.js","index":558,"dateAdded":1694474781438000,"lastModified":1694474781438000,"id":620,"typeCode":1,"type":"text/x-moz-place","uri":"https://million.dev/"}]},{"guid":"unfiled_____","title":"unfiled","index":3,"dateAdded":1646675245168000,"lastModified":1646675245168000,"id":5,"typeCode":2,"type":"text/x-moz-place-container","root":"unfiledBookmarksFolder","children":[{"guid":"Hd7HIRzH8Oji","title":"What Is a Database Relationship?","index":0,"dateAdded":1630518759034000,"lastModified":1630518766974000,"id":12,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.lifewire.com/database-relationships-p2-1019758"},{"guid":"ad7yyIb1__U6","title":"Codewars - Achieve mastery through coding practice and developer mentorship","index":1,"dateAdded":1634936662919000,"lastModified":1634936662919000,"id":13,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.codewars.com/"},{"guid":"1oYOpgeeT5_m","title":"runit - a UNIX init scheme with service supervision","index":2,"dateAdded":1636680706694000,"lastModified":1636680706694000,"id":14,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"http://smarden.org/runit/"},{"guid":"qrnLdf8XNasw","title":"Artix Linux Forum - Index","index":3,"dateAdded":1636680738314000,"lastModified":1636680738314000,"id":15,"typeCode":1,"iconUri":"https://artixlinux.org/favicons/favicon-196x196.png","type":"text/x-moz-place","uri":"https://forum.artixlinux.org/"},{"guid":"emY9dmtxkBdW","title":"[SOLVED] PostrgreSQL Runit service unable to start","index":4,"dateAdded":1636682883755000,"lastModified":1636682883755000,"id":16,"typeCode":1,"type":"text/x-moz-place","uri":"https://forum.artixlinux.org/index.php/topic,2229.0.html"},{"guid":"9BJg2-DXtrB2","title":"PostgreSQL - ArchWiki","index":5,"dateAdded":1636682892248000,"lastModified":1636682892248000,"id":17,"typeCode":1,"type":"text/x-moz-place","uri":"https://wiki.archlinux.org/title/PostgreSQL"},{"guid":"M0hozsmoCPcQ","title":"DuckDuckGo !Bang","index":6,"dateAdded":1636722730852000,"lastModified":1636722730852000,"id":18,"typeCode":1,"iconUri":"https://duckduckgo.com/assets/icons/meta/DDG-iOS-icon_152x152.png","type":"text/x-moz-place","uri":"https://duckduckgo.com/bang_lite.html"},{"guid":"zwrtBb7ZGM3g","title":"Python 3 Module of the Week — PyMOTW 3","index":7,"dateAdded":1637346630305000,"lastModified":1637346630305000,"id":19,"typeCode":1,"type":"text/x-moz-place","uri":"https://pymotw.com/3/"},{"guid":"uDV2ZRwR4MSb","title":"Tmux Cheat Sheet & Quick Reference","index":8,"dateAdded":1637700481376000,"lastModified":1637700481376000,"id":20,"typeCode":1,"type":"text/x-moz-place","uri":"https://tmuxcheatsheet.com/"},{"guid":"O9R5mPXs2AZ7","title":"OpenStreetMap","index":9,"dateAdded":1638056380565000,"lastModified":1638056380565000,"id":21,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.openstreetmap.org/#map=6/40.162/-120.808"},{"guid":"hgdt7-F0dECm","title":"The Bash Guide","index":10,"dateAdded":1638620156382000,"lastModified":1638620156382000,"id":22,"typeCode":1,"type":"text/x-moz-place","uri":"https://guide.bash.academy/"},{"guid":"8ErZybKjAHY2","title":"Free Programming Books – GoalKicker.com","index":11,"dateAdded":1638723395134000,"lastModified":1638723395134000,"id":23,"typeCode":1,"type":"text/x-moz-place","uri":"https://goalkicker.com/"},{"guid":"xfxJKiYEsZhw","title":"FOLDOC - Computing Dictionary","index":12,"dateAdded":1638723419598000,"lastModified":1638723419598000,"id":24,"typeCode":1,"type":"text/x-moz-place","uri":"https://foldoc.org/"},{"guid":"jI8aO9FMKmg9","title":"Linux Shell Scripting Wiki","index":13,"dateAdded":1638991397550000,"lastModified":1638991397550000,"id":25,"typeCode":1,"type":"text/x-moz-place","uri":"https://bash.cyberciti.biz/guide/Main_Page"},{"guid":"hweSQImoZ2Ku","title":"Noc.Social","index":14,"dateAdded":1639332615460000,"lastModified":1639332615460000,"id":26,"typeCode":1,"type":"text/x-moz-place","uri":"https://noc.social/web/timelines/home"},{"guid":"xuHVEI3BUHfW","title":"LibreTranslate - Free and Open Source Machine Translation API","index":15,"dateAdded":1639338149779000,"lastModified":1639338149779000,"id":27,"typeCode":1,"iconUri":"https://libretranslate.com/static/favicon.ico","type":"text/x-moz-place","uri":"https://libretranslate.com/"},{"guid":"7ZwKghkWMJs4","title":"PeerTube instances","index":16,"dateAdded":1639340498748000,"lastModified":1639340498748000,"id":28,"typeCode":1,"type":"text/x-moz-place","uri":"https://instances.joinpeertube.org/instances"},{"guid":"mfBwd5n0Ct_r","title":"Films By Kris","index":17,"dateAdded":1639836462107000,"lastModified":1639836462107000,"id":29,"typeCode":1,"iconUri":"https://filmsbykris.com/favicons/android-chrome-192x192.png","type":"text/x-moz-place","uri":"https://filmsbykris.com/v7/"},{"guid":"fbfJ3hh6N0U1","title":"Advanced Bash-Scripting Guide","index":18,"dateAdded":1640109556638000,"lastModified":1640109556638000,"id":30,"typeCode":1,"type":"text/x-moz-place","uri":"https://tldp.org/LDP/abs/html/"},{"guid":"GTQ9DccnHK-a","title":"We oppose DRM. | Defective by Design","index":19,"dateAdded":1640287860804000,"lastModified":1640287860804000,"id":31,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.defectivebydesign.org/"},{"guid":"GE02CRtQWrp6","title":"Welcome to a society for free software advocates, supporting the ethical cause of computer user freedom! | Free Software Foundation","index":20,"dateAdded":1640287971045000,"lastModified":1640287971045000,"id":32,"typeCode":1,"type":"text/x-moz-place","uri":"https://my.fsf.org/"},{"guid":"HGdHVMcUtBb5","title":"The Bash Hackers Wiki [Bash Hackers Wiki]","index":21,"dateAdded":1640352528310000,"lastModified":1640352528310000,"id":33,"typeCode":1,"iconUri":"https://wiki.bash-hackers.org/lib/tpl/bootstrap3/images/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://wiki.bash-hackers.org/"},{"guid":"a9L_M2Xr3Mxe","title":"Shell-Tips! Sharpen Your Tech Skills","index":22,"dateAdded":1640352820789000,"lastModified":1640352820789000,"id":34,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.shell-tips.com/"},{"guid":"CBYlnO6QVRiG","title":"The GNU Operating System and the Free Software Movement","index":23,"dateAdded":1640441540815000,"lastModified":1640441540815000,"id":35,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.gnu.org/"},{"guid":"dHzd2el-mivW","title":"Regular-Expressions.info - Regex Tutorial, Examples and Reference - Regexp Patterns","index":24,"dateAdded":1640444229994000,"lastModified":1640444229994000,"id":36,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.regular-expressions.info/"},{"guid":"YsAE8igViKdB","title":"youtube-dl/supportedsites.md at master · ytdl-org/youtube-dl · GitHub","index":25,"dateAdded":1641748226483000,"lastModified":1641748226483000,"id":37,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/ytdl-org/youtube-dl/blob/master/docs/supportedsites.md"},{"guid":"oHC4DQmdQVbq","title":"Invent with Python","index":26,"dateAdded":1642104601485000,"lastModified":1642104601485000,"id":38,"typeCode":1,"type":"text/x-moz-place","uri":"https://inventwithpython.com/invent4thed/"},{"guid":"DdaXLzVxdcTO","title":"Teach Yourself Computer Science","index":27,"dateAdded":1642788478718000,"lastModified":1642788478718000,"id":39,"typeCode":1,"type":"text/x-moz-place","uri":"https://teachyourselfcs.com/"},{"guid":"KRDZ6X1Z7B6U","title":"How to manually configure OpenVPN in Linux - ProtonVPN Support","index":28,"dateAdded":1643411837916000,"lastModified":1643411837916000,"id":40,"typeCode":1,"type":"text/x-moz-place","uri":"https://protonvpn.com/support/linux-openvpn/"},{"guid":"v5hAe1FzX6Ic","title":"unixsheikh.com","index":29,"dateAdded":1643415314070000,"lastModified":1643415314070000,"id":41,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.unixsheikh.com/index.html"},{"guid":"dfLgIHhF4tV4","title":"Nexus mods and community","index":30,"dateAdded":1644036058261000,"lastModified":1644036058261000,"id":42,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.nexusmods.com/"},{"guid":"DV-0EaaOXikz","title":"Jan-Piet Mens","index":31,"dateAdded":1644072149934000,"lastModified":1644072149934000,"id":43,"typeCode":1,"type":"text/x-moz-place","uri":"https://jpmens.net/"},{"guid":"Aj9NUaxy4PLQ","title":"Daniel Stenberg - daniel.haxx.se","index":32,"dateAdded":1644072275476000,"lastModified":1644072275476000,"id":44,"typeCode":1,"type":"text/x-moz-place","uri":"https://daniel.haxx.se/"},{"guid":"Mp2EfDYvFn3F","title":"Md5 To Text","index":33,"dateAdded":1644679183952000,"lastModified":1644679183952000,"id":45,"typeCode":1,"type":"text/x-moz-place","uri":"https://md5-hash.softbaba.com/converter/md5-to-text/"},{"guid":"hyTA21oJkj9F","title":"searx.info","index":34,"dateAdded":1644706010158000,"lastModified":1644706010158000,"id":46,"typeCode":1,"type":"text/x-moz-place","uri":"https://searx.info/"},{"guid":"0NqboXGVWzmQ","title":"FrogFind!","index":35,"dateAdded":1644779985449000,"lastModified":1644779985449000,"id":47,"typeCode":1,"type":"text/x-moz-place","uri":"http://www.frogfind.com/"},{"guid":"ly4i4jR00t_T","title":"Podtail – Listen to Podcasts Online","index":36,"dateAdded":1644861513977000,"lastModified":1644861513977000,"id":48,"typeCode":1,"type":"text/x-moz-place","uri":"https://podtail.com/"},{"guid":"tggoyO0xxnar","title":"ProtonDB | Gaming reports for Linux using Proton and Steam Play","index":37,"dateAdded":1645016206767000,"lastModified":1645016206767000,"id":49,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.protondb.com/"},{"guid":"UVcFu0VmPrT_","title":"skarnet.org","index":38,"dateAdded":1645018073821000,"lastModified":1645018073821000,"id":50,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.skarnet.org/"},{"guid":"y3SQ4Qu0PuQP","title":"Jude's Blog","index":39,"dateAdded":1645018181249000,"lastModified":1645018181249000,"id":51,"typeCode":1,"type":"text/x-moz-place","uri":"https://judecnelson.blogspot.com/"},{"guid":"4BzF_cMqqSRC","title":"EWONTFIX","index":40,"dateAdded":1645018261100000,"lastModified":1645018261100000,"id":52,"typeCode":1,"type":"text/x-moz-place","uri":"https://ewontfix.com/"},{"guid":"r8pYnm7Cau7Z","title":"Lemmy - A community of leftist privacy and FOSS enthusiasts, run by Lemmy’s developers","index":41,"dateAdded":1645616751853000,"lastModified":1645616751853000,"id":53,"typeCode":1,"type":"text/x-moz-place","uri":"https://lemmy.ml/"},{"guid":"p0JGzWtkvK4M","title":"Services and Daemons - runit - Void Linux Handbook","index":42,"dateAdded":1645636788194000,"lastModified":1645636788194000,"id":54,"typeCode":1,"iconUri":"https://docs.voidlinux.org/favicon.png","type":"text/x-moz-place","uri":"https://docs.voidlinux.org/config/services/index.html"},{"guid":"XrbBYsgit-xg","title":"npm","index":43,"dateAdded":1645714026436000,"lastModified":1645714026436000,"id":55,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.npmjs.com/"},{"guid":"QLTEB3wfINr0","title":"Medusa: Open Source Shopify alternative","index":44,"dateAdded":1646076601554000,"lastModified":1646076601554000,"id":56,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.medusajs.com/"},{"guid":"0AKcD_HriUsM","title":"5 Modern Bash Scripting Techniques That Only A Few Programmers Know | by Shalitha Suranga | Mar, 2022 | Level Up Coding","index":45,"dateAdded":1646250424644000,"lastModified":1646250424644000,"id":57,"typeCode":1,"type":"text/x-moz-place","uri":"https://levelup.gitconnected.com/5-modern-bash-scripting-techniques-that-only-a-few-programmers-know-4abb58ddadad?sk=381451845c8d4213b52703e49206ad39&gi=91abd5c38a86"},{"guid":"kGuCYdiLymbf","title":"kitty.conf - kitty","index":46,"dateAdded":1646326032219000,"lastModified":1646326032219000,"id":58,"typeCode":1,"iconUri":"https://sw.kovidgoyal.net/kitty/_static/kitty.svg","type":"text/x-moz-place","uri":"https://sw.kovidgoyal.net/kitty/conf/"},{"guid":"_cBQTe1l9MrW","title":"Proxy Server List - List of Free Public Proxy Servers (Updated March 2022)","index":47,"dateAdded":1646600120921000,"lastModified":1646600120921000,"id":59,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.proxynova.com/proxy-server-list/"},{"guid":"Ab-xySe64HNK","title":"1. Extending Python with C or C++ — Python 3.10.2 documentation","index":48,"dateAdded":1646675245168000,"lastModified":1646675245168000,"id":60,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.python.org/3/extending/extending.html"}]},{"guid":"mobile______","title":"mobile","index":4,"dateAdded":1649281065634000,"lastModified":1649333198138000,"id":6,"typeCode":2,"type":"text/x-moz-place-container","root":"mobileFolder"}]} \ No newline at end of file +{"guid":"root________","title":"","index":0,"dateAdded":1649281065629000,"lastModified":1696507294320000,"id":1,"typeCode":2,"type":"text/x-moz-place-container","root":"placesRoot","children":[{"guid":"menu________","title":"menu","index":0,"dateAdded":1630357974555000,"lastModified":1630357974555000,"id":2,"typeCode":2,"type":"text/x-moz-place-container","root":"bookmarksMenuFolder","children":[{"guid":"WwFz849jTWMQ","title":"YVVAS: Gitea","index":0,"dateAdded":1629308310721000,"lastModified":1629308315410000,"id":7,"typeCode":1,"iconUri":"http://gitea.yvvas.com:4000/img/favicon.png","type":"text/x-moz-place","uri":"http://gitea.yvvas.com:4000/"},{"guid":"sisFB11eMfmm","title":"LinuxQuestions.org - where Linux users come for help","index":1,"dateAdded":1629557818838000,"lastModified":1629557818838000,"id":8,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.linuxquestions.org/questions/"},{"guid":"ZeALnv2FjiYH","title":"Manjaro Linux Forum","index":2,"dateAdded":1629557849720000,"lastModified":1629557849720000,"id":9,"typeCode":1,"iconUri":"https://forum.manjaro.org/uploads/default/optimized/1X/d75b86ee0d230b116a650e11d0ca7a0b8472a4a8_2_180x180.svg","type":"text/x-moz-place","uri":"https://forum.manjaro.org/"},{"guid":"5POR_dftBNCu","title":"Learning JavaScript Design Patterns","index":3,"dateAdded":1630357974555000,"lastModified":1630357974555000,"id":10,"typeCode":1,"type":"text/x-moz-place","uri":"https://addyosmani.com/resources/essentialjsdesignpatterns/book/"}]},{"guid":"toolbar_____","title":"toolbar","index":1,"dateAdded":1649281065629000,"lastModified":1696507294320000,"id":3,"typeCode":2,"type":"text/x-moz-place-container","root":"toolbarFolder","children":[{"guid":"KmANaDAw2hdg","title":"","index":0,"dateAdded":1621583253850000,"lastModified":1621583253850000,"id":11,"typeCode":3,"type":"text/x-moz-place-separator"},{"guid":"BmkEkcgKhrz_","title":"yt-dlp/supportedsites.md at master · yt-dlp/yt-dlp · GitHub","index":1,"dateAdded":1649333257888000,"lastModified":1649333257888000,"id":61,"typeCode":1,"iconUri":"https://github.githubassets.com/favicons/favicon.svg","type":"text/x-moz-place","uri":"https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md"},{"guid":"Dqodyq9FkEb7","title":"kitty","index":2,"dateAdded":1649713146957000,"lastModified":1649713146957000,"id":62,"typeCode":1,"iconUri":"https://sw.kovidgoyal.net//kitty/_static/kitty.svg","type":"text/x-moz-place","uri":"https://sw.kovidgoyal.net//kitty/"},{"guid":"L-ryPMHl4rrt","title":"NCURSES Programming HOWTO","index":3,"dateAdded":1651113338481000,"lastModified":1651113338481000,"id":63,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/"},{"guid":"XlPgjbyIQ3fz","title":"The Linux Documentation Project","index":4,"dateAdded":1651113341899000,"lastModified":1651113341899000,"id":64,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tldp.org/"},{"guid":"9cTyhm6_ymBG","title":"Dev1 Galaxy Forum","index":5,"dateAdded":1651113438952000,"lastModified":1651113438952000,"id":65,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev1galaxy.org/"},{"guid":"uYUarT7N0QKX","title":"RARBG Rarbg Index page","index":6,"dateAdded":1651129744540000,"lastModified":1651129744540000,"id":66,"typeCode":1,"type":"text/x-moz-place","uri":"https://rarbg.to/index80.php"},{"guid":"Wzo4IjMNRR_X","title":"Odysee","index":7,"dateAdded":1651331904632000,"lastModified":1651331904632000,"id":67,"typeCode":1,"iconUri":"https://odysee.com/public/pwa/icon-180.png","type":"text/x-moz-place","uri":"https://odysee.com/"},{"guid":"VQf-2buxeZ2o","title":"mirrors.dotsrc.org","index":8,"dateAdded":1651358341104000,"lastModified":1651358341104000,"id":68,"typeCode":1,"type":"text/x-moz-place","uri":"https://mirrors.dotsrc.org/artix-linux/"},{"guid":"cw4Mj7Y0ruoy","title":"Secure email: ProtonMail is free encrypted email.","index":9,"dateAdded":1651511468029000,"lastModified":1651511468029000,"id":69,"typeCode":1,"iconUri":"https://protonmail.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://protonmail.com/"},{"guid":"R9gzzMldn2kg","title":"Codeberg.org","index":10,"dateAdded":1651702844761000,"lastModified":1651702844761000,"id":70,"typeCode":1,"iconUri":"https://design.codeberg.org/logo-kit/favicon.svg","type":"text/x-moz-place","uri":"https://codeberg.org/"},{"guid":"o3HI42yiCaWm","title":"Linux.org","index":11,"dateAdded":1652207363973000,"lastModified":1652207363973000,"id":71,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.linux.org/"},{"guid":"E5PFetphcX9d","title":"LinuxQuestions.org","index":12,"dateAdded":1652207392636000,"lastModified":1652207392636000,"id":72,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://www.linuxquestions.org/"},{"guid":"qoHld09xnJlg","title":"Sheldon Brown-Bicycle Technical Information","index":13,"dateAdded":1654020880213000,"lastModified":1654020880213000,"id":73,"typeCode":1,"type":"text/x-moz-place","uri":"https://sheldonbrown.com/"},{"guid":"WW9dNPiyZspu","title":"C Tutorial","index":14,"dateAdded":1654195764135000,"lastModified":1654195764135000,"id":74,"typeCode":1,"iconUri":"https://www.demo2s.com/java/favicon.ico","type":"text/x-moz-place","uri":"https://www.demo2s.com/c/c.html"},{"guid":"B2IF4KDyFqww","title":"Learn C - Free Interactive C Tutorial","index":15,"dateAdded":1654195772329000,"lastModified":1654195772329000,"id":75,"typeCode":1,"iconUri":"https://www.learn-c.org/static/img/favicons/learn-c.org.ico","type":"text/x-moz-place","uri":"https://www.learn-c.org/"},{"guid":"0PJeh2ItAVWm","title":"C programming | Programming Simplified","index":16,"dateAdded":1654198218811000,"lastModified":1654198218811000,"id":76,"typeCode":1,"iconUri":"https://www.programmingsimplified.com/sites/default/files/logo.png","type":"text/x-moz-place","uri":"https://www.programmingsimplified.com/c/"},{"guid":"0rl-ZfBjznxN","title":"My st (suckless terminal) Build: The Even Bester Terminal! - YouTube","index":17,"dateAdded":1654202212353000,"lastModified":1654202212353000,"id":77,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.youtube.com/watch?v=FJmm7wl4JUI"},{"guid":"izBo_7nZnVUR","title":"https://tronche.com/gui/x/xlib/","index":18,"dateAdded":1654209880980000,"lastModified":1654209880980000,"id":78,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tronche.com/gui/x/xlib/"},{"guid":"N6g_1Jz1Xf76","title":"X.Org","index":19,"dateAdded":1654210249197000,"lastModified":1654210249197000,"id":79,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.x.org/wiki/"},{"guid":"kUI9dS1MZ0U8","title":"Introduction to File Locking in Linux | Baeldung on Linux","index":20,"dateAdded":1654483225423000,"lastModified":1654483225423000,"id":80,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.baeldung.com/linux/file-locking"},{"guid":"Zr2aqTIRSqda","title":"crifo.org","index":21,"dateAdded":1654484403496000,"lastModified":1654484403496000,"id":81,"typeCode":1,"type":"text/x-moz-place","uri":"https://crifo.org/"},{"guid":"YpYs4LPOewJ4","title":"LeetCode - The World's Leading Online Programming Learning Platform","index":22,"dateAdded":1654902699127000,"lastModified":1654902699127000,"id":82,"typeCode":1,"iconUri":"https://leetcode.com/favicon-192x192.png","type":"text/x-moz-place","uri":"https://leetcode.com/"},{"guid":"WmmgkgMBKyOL","title":"Privacy by default | Proton","index":23,"dateAdded":1654914230694000,"lastModified":1654914230694000,"id":83,"typeCode":1,"iconUri":"https://proton.me/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://proton.me/"},{"guid":"RP0WicyJWGgT","title":"The UNIX and Linux Forums - Free Tech Support","index":24,"dateAdded":1655084458356000,"lastModified":1655084458356000,"id":84,"typeCode":1,"iconUri":"https://www.unix.com/apple-touch-icon.png?v=3e88xkpGyw","type":"text/x-moz-place","uri":"https://www.unix.com/"},{"guid":"P0peXDUolK9q","title":"The linux-kernel mailing list FAQ","index":25,"dateAdded":1655267092609000,"lastModified":1655267092609000,"id":85,"typeCode":1,"type":"text/x-moz-place","uri":"http://vger.kernel.org/lkml/"},{"guid":"JBu_jYgSZm1j","title":"The Linux Kernel","index":26,"dateAdded":1655278541806000,"lastModified":1655278541806000,"id":86,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tldp.org/LDP/tlk/tlk.html"},{"guid":"BjES_nZCMe9h","title":"Show Your Screenshots Here - Page 4","index":27,"dateAdded":1655329664432000,"lastModified":1655329664432000,"id":87,"typeCode":1,"type":"text/x-moz-place","uri":"https://forum.artixlinux.org/index.php/topic,8.msg26772/boardseen.html#new"},{"guid":"MRRBc-IbfjXL","title":"Bash Guide for Beginners","index":28,"dateAdded":1655427055443000,"lastModified":1655427055443000,"id":88,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html"},{"guid":"7Sn1ul0wZreS","title":"1 Introduction","index":29,"dateAdded":1655526316605000,"lastModified":1655526316605000,"id":89,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.lysator.liu.se/c/rat/a.html#1-1"},{"guid":"mwXUs672DlZT","title":"Jan Schaumann","index":30,"dateAdded":1655887267489000,"lastModified":1655887267489000,"id":90,"typeCode":1,"type":"text/x-moz-place","uri":"https://stevens.netmeister.org/"},{"guid":"kVHIkh9EEcR3","title":"google webfonts helper","index":31,"dateAdded":1655977625213000,"lastModified":1655977625213000,"id":91,"typeCode":1,"type":"text/x-moz-place","uri":"https://google-webfonts-helper.herokuapp.com/fonts"},{"guid":"p2xeAZUB52C5","title":"gitmoji | An emoji guide for your commit messages","index":32,"dateAdded":1655984517314000,"lastModified":1655984517314000,"id":92,"typeCode":1,"iconUri":"https://gitmoji.dev/static/android-icon-192x192.png","type":"text/x-moz-place","uri":"https://gitmoji.dev/"},{"guid":"8IXTEwXajgid","title":"The world’s fastest framework for building websites | Hugo","index":33,"dateAdded":1655989446214000,"lastModified":1655989446214000,"id":93,"typeCode":1,"iconUri":"https://gohugo.io/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://gohugo.io/"},{"guid":"Dl3Sd4p6CEEx","title":"Iconify","index":34,"dateAdded":1655990943772000,"lastModified":1655990943772000,"id":94,"typeCode":1,"type":"text/x-moz-place","uri":"https://iconify.design/"},{"guid":"mrjt9bs3SMa5","title":"Sorting Algorithms In C | C Program For Sorting | Edureka","index":35,"dateAdded":1656301316469000,"lastModified":1656301316469000,"id":95,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.edureka.co/blog/sorting-algorithms-in-c/"},{"guid":"hf4AgA59Y94d","title":"Techie Delight | Ace your Coding Interview","index":36,"dateAdded":1656303139870000,"lastModified":1656303139870000,"id":96,"typeCode":1,"iconUri":"https://secure.gravatar.com/avatar/32fd0e5c28d6dbbaa262f30f3a33c727?s=192","type":"text/x-moz-place","uri":"https://www.techiedelight.com/"},{"guid":"FNTqmTrIkCcB","title":"Basic Graphics Programming With The XCB Library","index":37,"dateAdded":1656351589031000,"lastModified":1656351589031000,"id":97,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://www.x.org/releases/X11R7.5/doc/libxcb/tutorial/"},{"guid":"UsN8Bcl_-hWz","title":"Alex Blackie","index":38,"dateAdded":1656502771348000,"lastModified":1656502771348000,"id":98,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.alexblackie.com/"},{"guid":"-V6REa_AyyAG","title":"getopt() function in C to parse command line arguments","index":39,"dateAdded":1656601142299000,"lastModified":1656601142299000,"id":99,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.tutorialspoint.com/getopt-function-in-c-to-parse-command-line-arguments"},{"guid":"mQIbENZcWg3h","title":"LinuxQuestions.org - where Linux users come for help","index":40,"dateAdded":1656704685544000,"lastModified":1656704685544000,"id":100,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://www.linuxquestions.org/questions/index.php"},{"guid":"U7-23V2QIQGT","title":"Aaron Swartz - Wikipedia","index":41,"dateAdded":1656705805334000,"lastModified":1656705805334000,"id":101,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Aaron_Swartz#Congress"},{"guid":"5Aj4f5aqpLNc","title":"Stranger Things - Wikipedia","index":42,"dateAdded":1656872392829000,"lastModified":1656872392829000,"id":102,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Stranger_things#Video_games"},{"guid":"pUEZuDEl0kT5","title":"Buy a domain name - Register cheap domain names from $0.99 - Namecheap","index":43,"dateAdded":1657478526127000,"lastModified":1657478526127000,"id":103,"typeCode":1,"iconUri":"https://www.namecheap.com/assets/img/nc-icon/namecheap-icon-152x152.png","type":"text/x-moz-place","uri":"https://www.namecheap.com/"},{"guid":"BTEiNnuKUDVZ","title":"Welcome to leafbytes!","index":44,"dateAdded":1657567373299000,"lastModified":1657567373299000,"id":104,"typeCode":1,"iconUri":"https://leafbytes.com/favicon.svg","type":"text/x-moz-place","uri":"https://leafbytes.com/"},{"guid":"1FO6pp8INrBX","title":"Prism","index":45,"dateAdded":1657727747513000,"lastModified":1657727747513000,"id":105,"typeCode":1,"iconUri":"https://prismjs.com/assets/favicon.png","type":"text/x-moz-place","uri":"https://prismjs.com/"},{"guid":"6v2b16zLAtjn","title":"Untangled","index":46,"dateAdded":1658412910849000,"lastModified":1658412910849000,"id":106,"typeCode":1,"type":"text/x-moz-place","uri":"https://roy.gbiv.com/untangled/"},{"guid":"S-c3AyEX4xia","title":"Codinhood | Codinhood","index":47,"dateAdded":1658605731081000,"lastModified":1658605731081000,"id":107,"typeCode":1,"iconUri":"https://codinhood.com/icons/icon-512x512.png?v=85ac77ec79950db9b0114b1f5d9a2aba","type":"text/x-moz-place","uri":"https://codinhood.com/"},{"guid":"FbpmYV1fzPPT","title":"Bun is a fast all-in-one JavaScript runtime","index":48,"dateAdded":1658914201546000,"lastModified":1658914201546000,"id":108,"typeCode":1,"type":"text/x-moz-place","uri":"https://bun.sh/"},{"guid":"eluA8aNVXyc7","title":"LanguageTool - Open Source","index":49,"dateAdded":1658914338191000,"lastModified":1658914338191000,"id":109,"typeCode":1,"iconUri":"https://languagetool.org/images/favicons/favicon.png","type":"text/x-moz-place","uri":"https://languagetool.org/dev"},{"guid":"TY97Pu87CQ9K","title":"CSSBattle - the CSS code-golfing game!","index":50,"dateAdded":1658959599907000,"lastModified":1658959599907000,"id":110,"typeCode":1,"iconUri":"https://cssbattle.dev/images/logo-square.png","type":"text/x-moz-place","uri":"https://cssbattle.dev/"},{"guid":"VHZUSAGcev9p","title":"Load balancing (computing) - Wikipedia","index":51,"dateAdded":1659116480027000,"lastModified":1659116480027000,"id":111,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Load_balancing_(computing)"},{"guid":"fVHF_XZZAqnh","title":"Artix needs your help - Page 2","index":52,"dateAdded":1659596031678000,"lastModified":1659596031678000,"id":112,"typeCode":1,"type":"text/x-moz-place","uri":"https://forum.artixlinux.org/index.php/topic,508.50.html"},{"guid":"Ru6wYU4c98kv","title":"CSS Border Radius | A Quick Glance of CSS Border Radius | Examples","index":53,"dateAdded":1659732337658000,"lastModified":1659732337658000,"id":113,"typeCode":1,"iconUri":"https://cdn.educba.com/academy/wp-content/uploads/2020/05/cropped-apple-touch-icon-192x192.png","type":"text/x-moz-place","uri":"https://www.educba.com/css-border-radius/"},{"guid":"ewB7BAZy8sdb","title":"Build the portfolio you need to be a badass web developer. | egghead.io","index":54,"dateAdded":1659793667343000,"lastModified":1659793667343000,"id":114,"typeCode":1,"type":"text/x-moz-place","uri":"https://egghead.io/"},{"guid":"r93zyxXr9Z-x","title":"Programming Language Tutorials","index":55,"dateAdded":1659802952461000,"lastModified":1659802952461000,"id":115,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.demo2s.com/"},{"guid":"O-y8C8k1lSE_","title":"Dropdown Animations with CSS Transforms","index":56,"dateAdded":1659877332234000,"lastModified":1659877332234000,"id":116,"typeCode":1,"iconUri":"https://cpwebassets.codepen.io/assets/favicon/apple-touch-icon-5ae1a0698dcc2402e9712f7d01ed509a57814f994c660df9f7a952f3060705ee.png","type":"text/x-moz-place","uri":"https://codepen.io/codypearce/pen/PdBXpj"},{"guid":"bkYaibNeHq1T","title":"unixsheikh.com","index":57,"dateAdded":1659884831297000,"lastModified":1659884831297000,"id":117,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.unixsheikh.com/"},{"guid":"tS0aEJd-WvB8","title":"Nvim documentation: spell","index":58,"dateAdded":1659964122794000,"lastModified":1659964122794000,"id":118,"typeCode":1,"type":"text/x-moz-place","uri":"https://neovim.io/doc/user/spell.html"},{"guid":"ijx9QrY8G_zw","title":"nginx news","index":59,"dateAdded":1659967710446000,"lastModified":1659967710446000,"id":119,"typeCode":1,"type":"text/x-moz-place","uri":"https://nginx.org/"},{"guid":"683x7Gd2q8Qs","title":"Docker Hub","index":60,"dateAdded":1659969878836000,"lastModified":1659969878836000,"id":120,"typeCode":1,"type":"text/x-moz-place","uri":"https://hub.docker.com/"},{"guid":"BqXfJDSFvk8s","title":"DuckDuckGo !Bang","index":61,"dateAdded":1659976117430000,"lastModified":1659976117430000,"id":121,"typeCode":1,"type":"text/x-moz-place","uri":"https://duckduckgo.com/bang?"},{"guid":"TzCMyDbJVHg5","title":"Why I love using bspwm for my Linux window manager | Opensource.com","index":62,"dateAdded":1659976742365000,"lastModified":1659976742365000,"id":122,"typeCode":1,"type":"text/x-moz-place","uri":"https://opensource.com/article/21/4/bspwm-linux"},{"guid":"WS2HzaL1ZXty","title":"Julia Evans","index":63,"dateAdded":1660081276754000,"lastModified":1660081276754000,"id":123,"typeCode":1,"type":"text/x-moz-place","uri":"https://jvns.ca/"},{"guid":"HufMdoezc_4h","title":"Comparison of programming languages - Wikipedia","index":64,"dateAdded":1660142580786000,"lastModified":1660142580786000,"id":124,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Comparison_of_programming_languages"},{"guid":"OaiFn7EgWHBM","title":"nvim-lspconfig/server_configurations.md at master · neovim/nvim-lspconfig · GitHub","index":65,"dateAdded":1660247752493000,"lastModified":1660247752493000,"id":125,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md"},{"guid":"qF2v5I5hQSrn","title":"SOLID Principles with Javascript Examples | by Hayreddin Tüzel | Medium","index":66,"dateAdded":1660262541682000,"lastModified":1660262541682000,"id":126,"typeCode":1,"type":"text/x-moz-place","uri":"https://medium.com/@hayreddintuzel/solid-principles-with-examples-12f36f61796c"},{"guid":"TN32ZIWK8BjE","title":"Beej's Guide to Network Programming","index":67,"dateAdded":1660263282096000,"lastModified":1660263282096000,"id":127,"typeCode":1,"type":"text/x-moz-place","uri":"https://beej.us/guide/bgnet/html/"},{"guid":"aFBtEfqR0xt8","title":"SearXNG and searx instances","index":68,"dateAdded":1660406668851000,"lastModified":1660406668851000,"id":128,"typeCode":1,"type":"text/x-moz-place","uri":"https://searx.space/#"},{"guid":"IHTf9PUyk0u6","title":"Nothing New® - Sustainable with Style","index":69,"dateAdded":1660842559232000,"lastModified":1660842559232000,"id":129,"typeCode":1,"type":"text/x-moz-place","uri":"https://nothingnew.com/"},{"guid":"X5vkQRfdQCNd","title":"WAMA Underwear | Leaders in Hemp Underwear","index":70,"dateAdded":1660842643086000,"lastModified":1660842643086000,"id":130,"typeCode":1,"type":"text/x-moz-place","uri":"https://wamaunderwear.com/"},{"guid":"pbZGlb7twxCD","title":"Joel on Software","index":71,"dateAdded":1661211146796000,"lastModified":1661211146796000,"id":131,"typeCode":1,"iconUri":"https://i0.wp.com/www.joelonsoftware.com/wp-content/uploads/2016/12/11969842.jpg?fit=192%2C192&ssl=1","type":"text/x-moz-place","uri":"https://www.joelonsoftware.com/"},{"guid":"hagUlS47OHsU","title":"Let's Encrypt","index":72,"dateAdded":1661413809341000,"lastModified":1661413809341000,"id":132,"typeCode":1,"type":"text/x-moz-place","uri":"https://letsencrypt.org/"},{"guid":"CbxKNrnFHnbY","title":"Easy Newbie","index":73,"dateAdded":1661413831568000,"lastModified":1661413831568000,"id":133,"typeCode":1,"iconUri":"https://easynewbie.com/wp-content/uploads/2022/06/cropped-easynewbie-panda-512-192x192.png","type":"text/x-moz-place","uri":"https://easynewbie.com/"},{"guid":"YyradIzpX08F","title":"Certbot | Certbot","index":74,"dateAdded":1661413978690000,"lastModified":1661413978690000,"id":134,"typeCode":1,"type":"text/x-moz-place","uri":"https://certbot.eff.org/"},{"guid":"l6h_hfoEVzEs","title":"Installing an SSL certificate on your server, using cPanel - Hosting - Namecheap.com","index":75,"dateAdded":1661414302979000,"lastModified":1661414302979000,"id":135,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.namecheap.com/support/knowledgebase/article.aspx/9418/33/installing-an-ssl-certificate-on-your-server-using-cpanel/"},{"guid":"yBRe5Gf8udnn","title":"acme.sh/acme.sh at master · acmesh-official/acme.sh · GitHub","index":76,"dateAdded":1661414795055000,"lastModified":1661414795055000,"id":136,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/acmesh-official/acme.sh/blob/master/acme.sh"},{"guid":"p-yJvGd8kXA3","title":"Bulletproof TLS Guide","index":77,"dateAdded":1661415128884000,"lastModified":1661415128884000,"id":137,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.feistyduck.com/library/bulletproof-tls-guide/online/"},{"guid":"GRnCrtvbv0sy","title":"Mutexes and Semaphores Demystified","index":78,"dateAdded":1661478654240000,"lastModified":1661478654240000,"id":138,"typeCode":1,"type":"text/x-moz-place","uri":"https://barrgroup.com/embedded-systems/how-to/rtos-mutex-semaphore"},{"guid":"gwHAnRqkupRX","title":"SimpleLogin | Open source anonymous email service","index":79,"dateAdded":1661491685322000,"lastModified":1661491685322000,"id":139,"typeCode":1,"type":"text/x-moz-place","uri":"https://simplelogin.io/"},{"guid":"HUzFmIEKl4ln","title":"The One DevOps Platform | GitLab","index":80,"dateAdded":1661726427518000,"lastModified":1661726427518000,"id":140,"typeCode":1,"iconUri":"https://about.gitlab.com/nuxt-images/ico/favicon-192x192.png?cache=2022041","type":"text/x-moz-place","uri":"https://about.gitlab.com/"},{"guid":"rjTxRfk4P6m4","title":"WebAssembly","index":81,"dateAdded":1661748286920000,"lastModified":1661748286920000,"id":141,"typeCode":1,"type":"text/x-moz-place","uri":"https://webassembly.org/"},{"guid":"Pbxz3i0WSXcI","title":"Courses Dashboard | Wes Bos","index":82,"dateAdded":1661749078823000,"lastModified":1661749078823000,"id":142,"typeCode":1,"type":"text/x-moz-place","uri":"https://courses.wesbos.com/account/signin"},{"guid":"WeWvd8jqxdUj","title":"GitHub: Where the world builds software · GitHub","index":83,"dateAdded":1661750000360000,"lastModified":1661750000360000,"id":143,"typeCode":1,"iconUri":"https://github.githubassets.com/favicons/favicon.svg","type":"text/x-moz-place","uri":"https://github.com/"},{"guid":"h3GutkTIJFTt","title":"Mothereffing HSL","index":84,"dateAdded":1661839918365000,"lastModified":1661839918365000,"id":144,"typeCode":1,"iconUri":"https://mothereffinghsl.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://mothereffinghsl.com/"},{"guid":"FUl7E-T_T1-I","title":"Icon Font & SVG Icon Sets ❍ IcoMoon","index":85,"dateAdded":1661840052466000,"lastModified":1661840052466000,"id":145,"typeCode":1,"type":"text/x-moz-place","uri":"https://icomoon.io/"},{"guid":"DBwBzk7O8U5Y","title":"DuckDuckGo !Bang","index":86,"dateAdded":1661933112110000,"lastModified":1661933112110000,"id":146,"typeCode":1,"iconUri":"https://duckduckgo.com/assets/icons/meta/DDG-iOS-icon_152x152.png","type":"text/x-moz-place","uri":"https://duckduckgo.com/bang?q="},{"guid":"YrKga4SBMjPj","title":"MDN Web Docs","index":87,"dateAdded":1662120077794000,"lastModified":1662120077794000,"id":147,"typeCode":1,"iconUri":"https://developer.mozilla.org/apple-touch-icon.6803c6f0.png","type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/"},{"guid":"rBxN8zzNSs44","title":"DevDocs API Documentation","index":88,"dateAdded":1662120220320000,"lastModified":1662120220320000,"id":148,"typeCode":1,"type":"text/x-moz-place","uri":"https://devdocs.io/#q=lua%20packer"},{"guid":"XKlRGYrQYosK","title":"Certbot | Certbot","index":89,"dateAdded":1662205221017000,"lastModified":1662205221017000,"id":149,"typeCode":1,"type":"text/x-moz-place","uri":"https://certbot.eff.org/en"},{"guid":"iBGPREL_l8Vu","title":"Wikipedia","index":90,"dateAdded":1662207062205000,"lastModified":1662207062205000,"id":150,"typeCode":1,"iconUri":"https://www.wikipedia.org/static/apple-touch/wikipedia.png","type":"text/x-moz-place","uri":"https://www.wikipedia.org/"},{"guid":"f5hu-YSYJFnX","title":"PageSpeed Insights","index":91,"dateAdded":1662244460577000,"lastModified":1662244460577000,"id":151,"typeCode":1,"iconUri":"https://ssl.gstatic.com/pagespeed/insights/ui/logo/favicon_48.png","type":"text/x-moz-place","uri":"https://pagespeed.web.dev/"},{"guid":"GGQQAd1y8ErA","title":"SEO for Web Developers - DEV Community 👩💻👨💻","index":92,"dateAdded":1662250316235000,"lastModified":1662250316235000,"id":152,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/deviouslab/seo-for-web-developers-m54"},{"guid":"vZDeewRrcvOH","title":"8 SEO best practices for Web Developers - DEV Community 👩💻👨💻","index":93,"dateAdded":1662250321688000,"lastModified":1662250321688000,"id":153,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/mattzajechowski/8-seo-best-practices-for-web-developers-484a"},{"guid":"vZJzJCkyE6Rn","title":"HackerNoon - read, write and learn about any technology","index":94,"dateAdded":1662265201377000,"lastModified":1662265201377000,"id":154,"typeCode":1,"iconUri":"https://hackernoon.com/favicon-16x16.png","type":"text/x-moz-place","uri":"https://hackernoon.com/"},{"guid":"jctNogB-lB5e","title":"Hacker News","index":95,"dateAdded":1662265265030000,"lastModified":1662265265030000,"id":155,"typeCode":1,"type":"text/x-moz-place","uri":"https://news.ycombinator.com/"},{"guid":"DX4ueFvPgKjX","title":"Unsplash Image API | Free HD Photo API","index":96,"dateAdded":1662268084052000,"lastModified":1662268084052000,"id":156,"typeCode":1,"type":"text/x-moz-place","uri":"https://unsplash.com/developers"},{"guid":"rh3KLUESL0jL","title":"SomaFM: All Channels sorted by Genre","index":97,"dateAdded":1662335467328000,"lastModified":1662335467328000,"id":157,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://somafm.com/listen/listeners.html"},{"guid":"qbZO7pL2RVIq","title":"PostgreSQL: Documentation: 14: CREATE TABLE","index":98,"dateAdded":1662347303950000,"lastModified":1662347303950000,"id":158,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.postgresql.org/docs/current/sql-createtable.html"},{"guid":"eoDH_YSL2JuI","title":"Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher","index":99,"dateAdded":1662349951247000,"lastModified":1662349951247000,"id":159,"typeCode":1,"iconUri":"https://www.nerdfonts.com/assets/img/favicon.ico","type":"text/x-moz-place","uri":"https://www.nerdfonts.com/cheat-sheet"},{"guid":"bmj3kzWSWvOC","title":"SMS Texting API | Keep it Simple","index":100,"dateAdded":1662376881227000,"lastModified":1662376881227000,"id":160,"typeCode":1,"iconUri":"https://textbelt.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://textbelt.com/"},{"guid":"IQmlMklBT1rX","title":"Man Pages | ManKier","index":101,"dateAdded":1662432253320000,"lastModified":1662432253320000,"id":161,"typeCode":1,"iconUri":"https://www.mankier.com/img/icons/icon-192x192.png","type":"text/x-moz-place","uri":"https://www.mankier.com/"},{"guid":"oK0Vt7qXKj6t","title":"Optimized NGINX Web Server » Webinoly","index":102,"dateAdded":1662899452673000,"lastModified":1662899452673000,"id":162,"typeCode":1,"type":"text/x-moz-place","uri":"https://webinoly.com/"},{"guid":"yVDSQ4KW-JXw","title":"MarySnopok-Portfolio-Frontend","index":103,"dateAdded":1663699002256000,"lastModified":1663699002256000,"id":163,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.mary-snopok.com/"},{"guid":"4bKK89olXqW5","title":"Wilfred Hughes::Blog","index":104,"dateAdded":1663971752916000,"lastModified":1663971752916000,"id":164,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.wilfred.me.uk/"},{"guid":"aPVhorhuzAjv","title":"♫ 1Upsmanship | Michael likes story-driven games with lots of contemplative moral quandaries and inventory management. Adam likes action-driven FPS games with gorgeous graphics and no down-time. Together, their friendship is constantly on the verge of ruin! But you can watch it all crumble before your very ears on 1Upsmanship, the pod where two lifelong gamers run one game an episode through the crucible to determine if it belongs on the Celestial Hard Drive. GAME ON.","index":105,"dateAdded":1664061141614000,"lastModified":1664061141614000,"id":165,"typeCode":1,"iconUri":"https://www.iheart.com/static/assets/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.iheart.com/podcast/1119-1upsmanship-97574019/"},{"guid":"MOH9FIW8puAY","title":"Stream Small Beans | Listen to podcast episodes online for free on SoundCloud","index":106,"dateAdded":1664061273493000,"lastModified":1664061273493000,"id":166,"typeCode":1,"iconUri":"https://a-v2.sndcdn.com/assets/images/sc-icons/ios-a62dfc8fe7.png","type":"text/x-moz-place","uri":"https://soundcloud.com/user-682532119"},{"guid":"LtRE-Jw898A3","title":"Lex Fridman Podcast - Lex Fridman","index":107,"dateAdded":1664061334578000,"lastModified":1664061334578000,"id":167,"typeCode":1,"iconUri":"https://lexfridman.com/wordpress/wp-content/uploads/2017/06/cropped-lex-favicon-4-1-192x192.png","type":"text/x-moz-place","uri":"https://lexfridman.com/podcast/"},{"guid":"B1Xt3ZHr-3O5","title":"♫ Some More News | Comedian Cody Johnston hosts this always fair, always well-researched, but most importantly, always entertaining take on the topical news of the week. Every Tuesday, Some More News dives into the world's weekly events with a mix of wit, dread, hope and compassion. Since the news cycle never stops spinning, Johnston returns every Friday for Even More News, co-hosted by Katy Stoll. Together, they present an informative and comedic spin on the viewers’ frustrations with the news that week.","index":108,"dateAdded":1664061395558000,"lastModified":1664061395558000,"id":168,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.iheart.com/podcast/269-even-more-news-29429923/"},{"guid":"6b81CbAQ9pY6","title":"Bandcamp","index":109,"dateAdded":1664068069730000,"lastModified":1664068069730000,"id":169,"typeCode":1,"iconUri":"https://s4.bcbits.com/img/favicon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://bandcamp.com/"},{"guid":"zEESSk1EmDIU","title":"Frontend Masters — Learn JavaScript, React, Vue & Angular from Masters of Front-End Development!","index":110,"dateAdded":1664147817321000,"lastModified":1664147817321000,"id":170,"typeCode":1,"iconUri":"https://frontendmasters.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://frontendmasters.com/"},{"guid":"bEqL4gn6vCBh","title":"GabMus's Dev Log","index":111,"dateAdded":1664494546605000,"lastModified":1664494546605000,"id":171,"typeCode":1,"iconUri":"https://gabmus.org/logo.svg","type":"text/x-moz-place","uri":"https://gabmus.org/"},{"guid":"4TCdLuAQ8qx_","title":"asciinema - Record and share your terminal sessions, the simple way","index":112,"dateAdded":1664604712357000,"lastModified":1664604712357000,"id":172,"typeCode":1,"iconUri":"https://asciinema.org/images/favicon-2d62dafa447cf018340b7121007568e3.png?vsn=d","type":"text/x-moz-place","uri":"https://asciinema.org/"},{"guid":"57F6Hxu_NNRp","title":"Modern CSS Reset - Andy Bell","index":113,"dateAdded":1664668959992000,"lastModified":1664668959992000,"id":173,"typeCode":1,"iconUri":"https://github.githubassets.com/favicons/favicon.svg","type":"text/x-moz-place","uri":"https://gist.github.com/Asjas/4b0736108d56197fce0ec9068145b421"},{"guid":"2Ss0KSP7J4Y0","title":"The Accessibility Tool For Your Team | Aditus","index":114,"dateAdded":1664675399426000,"lastModified":1664675399426000,"id":174,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.aditus.io/"},{"guid":"wK2tRw58FTVe","title":"Home - Orange digital accessibility guidelines","index":115,"dateAdded":1664681023452000,"lastModified":1664681023452000,"id":175,"typeCode":1,"type":"text/x-moz-place","uri":"https://a11y-guidelines.orange.com/en/"},{"guid":"NYl6oYOzEAf6","title":"https://svgsprit.es/","index":116,"dateAdded":1664735266188000,"lastModified":1664735266188000,"id":176,"typeCode":1,"type":"text/x-moz-place","uri":"https://svgsprit.es/"},{"guid":"HC0-UcUCEsxd","title":"A11Y Slider - Library for simple and accessible sliders","index":117,"dateAdded":1664748368295000,"lastModified":1664748368295000,"id":177,"typeCode":1,"iconUri":"https://a11yslider.js.org/icons/icon-512x512.png?v=c4af7354b205bfe6dac741bd322e9b02","type":"text/x-moz-place","uri":"https://a11yslider.js.org/"},{"guid":"-NpX9BbUpYan","title":"CSS-Tricks - Tips, Tricks, and Techniques on using Cascading Style Sheets.","index":118,"dateAdded":1664777023636000,"lastModified":1664777023636000,"id":178,"typeCode":1,"iconUri":"https://css-tricks.com/favicon.svg","type":"text/x-moz-place","uri":"https://css-tricks.com/"},{"guid":"_tAGEl50qO-l","title":"Free Fonts! Legit Free & Quality » Font Squirrel","index":119,"dateAdded":1664862286114000,"lastModified":1664862286114000,"id":179,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fontsquirrel.com/"},{"guid":"p70jeHw__U64","title":"Free Fonts | 98,000+ Font Downloads | FontSpace","index":120,"dateAdded":1664862750113000,"lastModified":1664862750113000,"id":180,"typeCode":1,"iconUri":"https://www.fontspace.com/android-chrome-192x192.png?v=00Bdv4Q5g6","type":"text/x-moz-place","uri":"https://www.fontspace.com/"},{"guid":"w50o9OxXNQsY","title":"README.md · master · Raphaël Bastide / libre-foundries · GitLab","index":121,"dateAdded":1664864065628000,"lastModified":1664864065628000,"id":181,"typeCode":1,"type":"text/x-moz-place","uri":"https://gitlab.com/raphaelbastide/libre-foundries/-/blob/master/README.md"},{"guid":"XUlyOyfkQBfx","title":"CSS3 Animation Cheat Sheet - Justin Aguilar","index":122,"dateAdded":1664865490755000,"lastModified":1664865490755000,"id":182,"typeCode":1,"type":"text/x-moz-place","uri":"http://www.justinaguilar.com/animations/index.html#"},{"guid":"xW2uuf5m8qwI","title":"How to Create CSS Animations on Scroll [With Examples]","index":123,"dateAdded":1664866229561000,"lastModified":1664866229561000,"id":183,"typeCode":1,"iconUri":"https://alvarotrigo.com/fullPage/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://alvarotrigo.com/blog/css-animations-scroll/"},{"guid":"PCIrI-F9IuJA","title":"Dev Snap: The Ultimate Web Developer Resource","index":124,"dateAdded":1664926200643000,"lastModified":1664926200643000,"id":184,"typeCode":1,"type":"text/x-moz-place","uri":"https://devsnap.me/"},{"guid":"zprWY7tdUmPh","title":"ColorSpace - Color Palettes Generator and Color Gradient Tool","index":125,"dateAdded":1664949260960000,"lastModified":1664949260960000,"id":185,"typeCode":1,"iconUri":"https://mycolor.space/favicon5.png","type":"text/x-moz-place","uri":"https://mycolor.space/"},{"guid":"atkkuVv8U7xF","title":"Color wheel, a color palette generator | Adobe Color","index":126,"dateAdded":1664949370868000,"lastModified":1664949370868000,"id":186,"typeCode":1,"type":"text/x-moz-place","uri":"https://color.adobe.com/create/color-wheel"},{"guid":"qpS349__50_E","title":"CSS Gradient — Generator, Maker, and Background","index":127,"dateAdded":1665021754694000,"lastModified":1665021754694000,"id":187,"typeCode":1,"iconUri":"https://cssgradient.io/images/favicon-23859487.png","type":"text/x-moz-place","uri":"https://cssgradient.io/"},{"guid":"CDrqvppqbKX3","title":"Noun Project: Free Icons & Stock Photos for Everything","index":128,"dateAdded":1665022093185000,"lastModified":1665022093185000,"id":188,"typeCode":1,"iconUri":"https://static.production.thenounproject.com/img/favicons/apple-touch-icon.7fb1143e988e.png","type":"text/x-moz-place","uri":"https://thenounproject.com/"},{"guid":"R5Fn8y8oXf-7","title":"Swiper - The Most Modern Mobile Touch Slider","index":129,"dateAdded":1665035834537000,"lastModified":1665035834537000,"id":189,"typeCode":1,"iconUri":"https://swiperjs.com/images/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://swiperjs.com/"},{"guid":"0Tx-ReKdWk1S","title":"1001 Fonts ❤ Free Fonts Baby!","index":130,"dateAdded":1665093507408000,"lastModified":1665093507408000,"id":190,"typeCode":1,"iconUri":"https://st.1001fonts.net/img/1001fonts-avatar-180x180.png","type":"text/x-moz-place","uri":"https://www.1001fonts.com/"},{"guid":"XOEQJZAdvmVh","title":"How To Use CSS Animation Easing With Different Examples","index":131,"dateAdded":1665283253859000,"lastModified":1665283253859000,"id":191,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.positioniseverything.net/css-animation-easing"},{"guid":"v8QFgTuWnmwL","title":"Creating HTML Scrollable Div: A Thorough and Step by Step Guide","index":132,"dateAdded":1665288488265000,"lastModified":1665288488265000,"id":192,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.positioniseverything.net/html-scrollable-div"},{"guid":"z2D0JNbTcoVK","title":"Owls at Dawn","index":133,"dateAdded":1665342138129000,"lastModified":1665342138129000,"id":193,"typeCode":1,"iconUri":"https://assets.squarespace.com/universal/default-favicon.ico","type":"text/x-moz-place","uri":"https://www.owlsatdawn.com/"},{"guid":"UpCA6JXjJeFQ","title":"Hex to RGBA","index":134,"dateAdded":1665550451025000,"lastModified":1665550451025000,"id":194,"typeCode":1,"iconUri":"https://rgbacolorpicker.com/favicon.svg","type":"text/x-moz-place","uri":"https://rgbacolorpicker.com/hex-to-rgba"},{"guid":"UVkvHXbWaCes","title":"HTTP Error 403 Forbidden: What It Means and How to Fix It","index":135,"dateAdded":1665606583428000,"lastModified":1665606583428000,"id":195,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.freecodecamp.org/news/http-error-403-forbidden-what-it-means-and-how-to-fix-it/"},{"guid":"gM7VjX33mgOl","title":"How to Use HTML to Open a Link in a New Tab","index":136,"dateAdded":1665630848187000,"lastModified":1665630848187000,"id":196,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.freecodecamp.org/news/how-to-use-html-to-open-link-in-new-tab/"},{"guid":"lRDbw1ZLgGSE","title":"Meta Tags Generator Tool — Website Metadata","index":137,"dateAdded":1665640014100000,"lastModified":1665640014100000,"id":197,"typeCode":1,"iconUri":"https://websitemetadata.com/images/favicon.png","type":"text/x-moz-place","uri":"https://websitemetadata.com/meta-tags-generator"},{"guid":"KZN6chS9-J-o","title":"Responsive Web Design – How to Make a Website Look Good on Phones and Tablets","index":138,"dateAdded":1665722128580000,"lastModified":1665722128580000,"id":198,"typeCode":1,"iconUri":"https://cdn.freecodecamp.org/universal/favicons/favicon.ico","type":"text/x-moz-place","uri":"https://www.freecodecamp.org/news/responsive-web-design-how-to-make-a-website-look-good-on-phones-and-tablets/"},{"guid":"uN6ppKMgVyUw","title":"Responsive Web Design – How to Make a Website Look Good on Phones and Tablets","index":139,"dateAdded":1665722222312000,"lastModified":1665722222312000,"id":199,"typeCode":1,"iconUri":"https://cdn.freecodecamp.org/universal/favicons/favicon.ico","type":"text/x-moz-place","uri":"file:///home/brian/Documents/notes/web_resources/articles_responsive/fcc_responsve-web-design-how-to-make-a-website-look-good-on-phones-and-tablets.html"},{"guid":"J760ijboMbdR","title":"cpupower command - Adjust CPU frequency - LinuxStar","index":140,"dateAdded":1665723648978000,"lastModified":1665723648978000,"id":200,"typeCode":1,"type":"text/x-moz-place","uri":"https://linuxstar.info/cpupower/"},{"guid":"4eQ78rwzgNzz","title":"Contact form with HTML, CSS, and Javascript - StackHowTo","index":141,"dateAdded":1665804843674000,"lastModified":1665804843674000,"id":201,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackhowto.com/contact-form-with-html-css-and-javascript/"},{"guid":"WTvLiQpueipJ","title":"Hi, I'm Austin Gil. I write about code and stuff.","index":142,"dateAdded":1665896958300000,"lastModified":1665896958300000,"id":202,"typeCode":1,"iconUri":"https://cdn.statically.io/img/austingil.com/wp-content/uploads/favicon.svg","type":"text/x-moz-place","uri":"https://austingil.com/"},{"guid":"HCoAQp9NUq9b","title":"hCaptcha - Stop more bots. Start protecting privacy.","index":143,"dateAdded":1665897127863000,"lastModified":1665897127863000,"id":203,"typeCode":1,"iconUri":"https://assets-global.website-files.com/629d9c19da6544f17c9cbb3e/629d9c19da6544c7e19cbc12_hcaptcha-symbol-256.png","type":"text/x-moz-place","uri":"https://www.hcaptcha.com/"},{"guid":"BLZgaMa6UXgL","title":"Lucide","index":144,"dateAdded":1665948340871000,"lastModified":1665948340871000,"id":204,"typeCode":1,"type":"text/x-moz-place","uri":"https://lucide.dev/"},{"guid":"QjJZJVSap_Ak","title":"IconSearch: Instant icon search for SVG icons","index":145,"dateAdded":1665948452307000,"lastModified":1665948452307000,"id":205,"typeCode":1,"type":"text/x-moz-place","uri":"https://iconsear.ch/"},{"guid":"pakGBFwbOszp","title":"Feather – Simply beautiful open source icons","index":146,"dateAdded":1665948533693000,"lastModified":1665948533693000,"id":206,"typeCode":1,"type":"text/x-moz-place","uri":"https://feathericons.com/"},{"guid":"vSgAemFNWhSh","title":"Screen Sizes | Viewport Sizes and Pixel Densities for Popular Devices","index":147,"dateAdded":1665950401457000,"lastModified":1665950401457000,"id":207,"typeCode":1,"iconUri":"https://screensizes-production-04411863.s3.us-east-1.amazonaws.com/static/images/favicon.png","type":"text/x-moz-place","uri":"https://screensiz.es/"},{"guid":"hKrLYvlsb-uQ","title":"leafbytes","index":148,"dateAdded":1666322302558000,"lastModified":1666322302558000,"id":208,"typeCode":1,"iconUri":"http://127.0.0.1:8080/favicon.svg","type":"text/x-moz-place","uri":"http://127.0.0.1:8080/"},{"guid":"OmGhbJY6DcZM","title":"Matthew James Taylor: Artist. Designer. Author.","index":149,"dateAdded":1666325690038000,"lastModified":1666325690038000,"id":209,"typeCode":1,"type":"text/x-moz-place","uri":"https://matthewjamestaylor.com/"},{"guid":"kbVZaeZ9bQhb","title":"The HTTP crash course nobody asked for","index":150,"dateAdded":1666423039219000,"lastModified":1666423039219000,"id":210,"typeCode":1,"type":"text/x-moz-place","uri":"https://fasterthanli.me/articles/the-http-crash-course-nobody-asked-for#making-http-1-1-requests-with-reqwest"},{"guid":"hudf9-3kYtPi","title":"fasterthanli.me","index":151,"dateAdded":1666424522843000,"lastModified":1666424522843000,"id":211,"typeCode":1,"type":"text/x-moz-place","uri":"https://fasterthanli.me/"},{"guid":"LPgFK8mqDqOi","title":"Interrupt | A community and blog for embedded software makers","index":152,"dateAdded":1666945495602000,"lastModified":1666945495602000,"id":212,"typeCode":1,"iconUri":"https://interrupt.memfault.com/img/favicon.png","type":"text/x-moz-place","uri":"https://interrupt.memfault.com/"},{"guid":"520Bu97BZKCk","title":"This Person Does Not Exist","index":153,"dateAdded":1667181509437000,"lastModified":1667181509437000,"id":213,"typeCode":1,"type":"text/x-moz-place","uri":"https://thispersondoesnotexist.com/"},{"guid":"-nw-W7UIb1tr","title":"The Open Source Firebase Alternative | Supabase","index":154,"dateAdded":1667181548784000,"lastModified":1667181548784000,"id":214,"typeCode":1,"iconUri":"https://supabase.com/favicon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://supabase.com/"},{"guid":"eXSqobhTael9","title":"PocketBase - Open Source backend in 1 file","index":155,"dateAdded":1667181556951000,"lastModified":1667181556951000,"id":215,"typeCode":1,"iconUri":"https://pocketbase.io/images/favicon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://pocketbase.io/"},{"guid":"Hyr4bGsbXp9G","title":"Home · Solid","index":156,"dateAdded":1667181588734000,"lastModified":1667181588734000,"id":216,"typeCode":1,"type":"text/x-moz-place","uri":"https://solidproject.org/"},{"guid":"_saa6Q8ypk4H","title":"GitHub - darkreader/darkreader: Dark Reader Chrome and Firefox extension","index":157,"dateAdded":1667276221139000,"lastModified":1667276221139000,"id":217,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/darkreader/darkreader"},{"guid":"VxQYtEWnJcfY","title":"Brittany Chiang","index":158,"dateAdded":1667278950304000,"lastModified":1667278950304000,"id":218,"typeCode":1,"iconUri":"https://brittanychiang.com/icons/icon-512x512.png?v=dedd91ab2778735e31d0a7ccbb422fb7","type":"text/x-moz-place","uri":"https://brittanychiang.com/"},{"guid":"JacjQUL26Umb","title":"Building Super Powered HTML Forms with JavaScript","index":159,"dateAdded":1667441274220000,"lastModified":1667441274220000,"id":219,"typeCode":1,"type":"text/x-moz-place","uri":"https://austingil.com/building-super-powered-html-forms-with-javascript/"},{"guid":"nsM76GtYjnl3","title":"Wikimedia Commons","index":160,"dateAdded":1667446462083000,"lastModified":1667446462083000,"id":220,"typeCode":1,"iconUri":"https://commons.wikimedia.org/static/apple-touch/commons.png","type":"text/x-moz-place","uri":"https://commons.wikimedia.org/wiki/Main_Page"},{"guid":"Hg_yMbYeWDS5","title":"Text editor - Wikipedia","index":161,"dateAdded":1667868961728000,"lastModified":1667868961728000,"id":221,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Text_editor"},{"guid":"CJkAo-x4LXSR","title":"Lobsters","index":162,"dateAdded":1667875452342000,"lastModified":1667875452342000,"id":222,"typeCode":1,"type":"text/x-moz-place","uri":"https://lobste.rs/"},{"guid":"7Wmua_ywTZSa","title":"Basic Latin — ✔️ ❤️ ★ Unicode Character Table","index":163,"dateAdded":1668131260527000,"lastModified":1668131260527000,"id":223,"typeCode":1,"type":"text/x-moz-place","uri":"https://unicode-table.com/en/"},{"guid":"tsoF2UUvWh_5","title":"Marc André Tanner","index":164,"dateAdded":1668325445989000,"lastModified":1668325445989000,"id":224,"typeCode":1,"iconUri":"https://www.brain-dump.org/images/favicon.svg","type":"text/x-moz-place","uri":"https://www.brain-dump.org/"},{"guid":"JKq5-oQ9ITQf","title":"JSONPlaceholder - Free Fake REST API","index":165,"dateAdded":1668668870132000,"lastModified":1668668870132000,"id":225,"typeCode":1,"type":"text/x-moz-place","uri":"https://jsonplaceholder.typicode.com/"},{"guid":"uI_4eTxk8yx7","title":"chiark home page","index":166,"dateAdded":1668749272376000,"lastModified":1668749272376000,"id":226,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://www.chiark.greenend.org.uk/"},{"guid":"_YDjVoqTgFRr","title":"systemd - Wikipedia","index":167,"dateAdded":1668926659417000,"lastModified":1668926659417000,"id":227,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Systemd#Reception"},{"guid":"-gFpDAikE59t","title":"Intel - Wikipedia","index":168,"dateAdded":1669007037982000,"lastModified":1669007037982000,"id":228,"typeCode":1,"iconUri":"https://en.wikipedia.org/static/apple-touch/wikipedia.png","type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Intel"},{"guid":"0WWMw50U-cQg","title":"Process Supervision: Solved Problem | jtimberman’s blog","index":169,"dateAdded":1669268975206000,"lastModified":1669268975206000,"id":229,"typeCode":1,"type":"text/x-moz-place","uri":"https://jtimberman.housepub.org/blog/2012/12/29/process-supervision-solved-problem"},{"guid":"sffrsKAwYfqy","title":"jtimberman’s blog | Operations, Automation, Deployment, Workflows, DevOps; see my About page for ways you can support me.","index":170,"dateAdded":1669270759356000,"lastModified":1669270759356000,"id":230,"typeCode":1,"type":"text/x-moz-place","uri":"https://jtimberman.housepub.org/"},{"guid":"R9mWL5kHtJbh","title":"Reclaim Hosting – Take Control of your Digital Identity","index":171,"dateAdded":1669354935587000,"lastModified":1669354935587000,"id":231,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.reclaimhosting.com/"},{"guid":"gWY0wN6ou4PH","title":"Without Systemd","index":172,"dateAdded":1669422452715000,"lastModified":1669422452715000,"id":232,"typeCode":1,"type":"text/x-moz-place","uri":"https://without-systemd.org/wiki/index_php/Main_Page/"},{"guid":"cF6ZrhOijhd7","title":"Pelican – A Python Static Site Generator","index":173,"dateAdded":1669423174866000,"lastModified":1669423174866000,"id":233,"typeCode":1,"type":"text/x-moz-place","uri":"https://getpelican.com/"},{"guid":"OAfk_2YU3P_C","title":"Search | Quetre","index":174,"dateAdded":1669591137319000,"lastModified":1669591137319000,"id":234,"typeCode":1,"iconUri":"https://quetre.iket.me/icon.svg","type":"text/x-moz-place","uri":"https://quetre.iket.me/"},{"guid":"ejYjKSybOktJ","title":"Free Download Books","index":175,"dateAdded":1669678574861000,"lastModified":1669678574861000,"id":235,"typeCode":1,"iconUri":"https://oceanofpdf.com/wp-content/uploads/2019/09/cropped-favicon-4-192x192.png","type":"text/x-moz-place","uri":"https://oceanofpdf.com/"},{"guid":"wErcy8gJDSNf","title":"Murena - deGoogled phones and services","index":176,"dateAdded":1669679196587000,"lastModified":1669679196587000,"id":236,"typeCode":1,"type":"text/x-moz-place","uri":"https://murena.com/"},{"guid":"822hngy2FD4E","title":"Vim Works","index":177,"dateAdded":1669679453873000,"lastModified":1669679453873000,"id":237,"typeCode":1,"type":"text/x-moz-place","uri":"https://vim.works/"},{"guid":"zWvBbe8aSbAt","title":"Tom M","index":178,"dateAdded":1669679833855000,"lastModified":1669679833855000,"id":238,"typeCode":1,"type":"text/x-moz-place","uri":"https://tmewett.com/"},{"guid":"-BWGx9EecSWX","title":"Éric Lévénez's site","index":179,"dateAdded":1669679892956000,"lastModified":1669679892956000,"id":239,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://levenez.com/"},{"guid":"VjJeN0PKN64_","title":"Tech streams, blogs and code tutorials","index":180,"dateAdded":1669679971160000,"lastModified":1669679971160000,"id":240,"typeCode":1,"iconUri":"https://whitep4nth3r.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://whitep4nth3r.com/"},{"guid":"hE-qCmJfFjf4","title":"Eleventy, a simpler static site generator","index":181,"dateAdded":1669680021236000,"lastModified":1669680021236000,"id":241,"typeCode":1,"iconUri":"https://www.11ty.dev/img/favicon.png","type":"text/x-moz-place","uri":"https://www.11ty.dev/"},{"guid":"NtiMOBULcIbi","title":"Regex Tester and Debugger Online - Javascript, PCRE, PHP","index":182,"dateAdded":1669693412705000,"lastModified":1669693412705000,"id":242,"typeCode":1,"iconUri":"https://dpidudyah7i0b.cloudfront.net/favicon.ico","type":"text/x-moz-place","uri":"https://www.regextester.com/"},{"guid":"Wu37izlaVh9_","title":"quetre | Quetre","index":183,"dateAdded":1669702197725000,"lastModified":1669702197725000,"id":243,"typeCode":1,"type":"text/x-moz-place","uri":"https://quetre.iket.me/search?q=quetre"},{"guid":"q4rmUNCIIWUq","title":"Planet Debian","index":184,"dateAdded":1669765254128000,"lastModified":1669765254128000,"id":244,"typeCode":1,"iconUri":"https://planet.debian.org/common/favicon.ico","type":"text/x-moz-place","uri":"https://planet.debian.org/"},{"guid":"ItqYiP1OdAXn","title":"#727708 - tech-ctte: Decide which init system to default to in Debian. - Debian Bug report logs","index":185,"dateAdded":1669795201968000,"lastModified":1669795201968000,"id":245,"typeCode":1,"type":"text/x-moz-place","uri":"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727708#7395"},{"guid":"tpU6mKzuu1Zi","title":"» Linux Magazine","index":186,"dateAdded":1669795779790000,"lastModified":1669795779790000,"id":246,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.linux-magazine.com/"},{"guid":"rIOQHu4ByW7K","title":"Petter Reinholdtsen","index":187,"dateAdded":1669865296116000,"lastModified":1669865296116000,"id":247,"typeCode":1,"type":"text/x-moz-place","uri":"https://people.skolelinux.org/pere/blog/"},{"guid":"AYUb-KyhN1El","title":"OpenStreetMap","index":188,"dateAdded":1669957633006000,"lastModified":1669957633006000,"id":248,"typeCode":1,"iconUri":"https://www.openstreetmap.org/assets/favicon-194x194-79d3fb0152c735866e64b1d7535d504483cd13c2fad0131a6142bd9629d30de2.png","type":"text/x-moz-place","uri":"https://www.openstreetmap.org/"},{"guid":"iXZcoGQ_Qb1T","title":"LKML.ORG - the Linux Kernel Mailing List Archive","index":189,"dateAdded":1669958994176000,"lastModified":1669958994176000,"id":249,"typeCode":1,"type":"text/x-moz-place","uri":"https://lkml.org/"},{"guid":"wKKkiPQs7ueh","title":"The Valuable Dev","index":190,"dateAdded":1670047829659000,"lastModified":1670047829659000,"id":250,"typeCode":1,"iconUri":"https://thevaluable.dev/images/favicon.png","type":"text/x-moz-place","uri":"https://thevaluable.dev/"},{"guid":"FJT3mV2fJU7C","title":"Blog - paritybit.ca","index":191,"dateAdded":1670144754212000,"lastModified":1670144754212000,"id":251,"typeCode":1,"iconUri":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABX1BMVEUAAAABAAAAAAAAAAAAAAAAAAAAAAC7amoAAABlPz8AAAAAAAAGAwMAAAAAAAAAAAC7d3cKBwe7d3e7d3eWX1/ny4+WX18CAQGHVlaTXl4BAAApGhpiPj7ny4/ny4/oy4/ozI/qz5Ona2u7d3d4TEzny48MCAhlQEC7d3e7d3cAAAAAAAC7d3e8d3cAAAC8d3fnzI+8dnYAAADpzJC9eHjny4+WX1+TXV13S0u7d3fny492S0vnzI/ny4+EU1PnzI8mFxe7d3cjFhZgPT3ny5AAAAC7d3fny4+7d3cAAADozJC6d3e7d3cAAADozI/my5Dny44AAAAAAAC7d3e4d3fkx5DpzY69c3O7d3eoamroy4+FVVWEVFR0Skq7d3e7d3e8d3cAAAC6eHi7eHi7eHi8dna8dnYAAADozJAAAADkyY28eXnqyJHqzY63eHi/dXXny48AAAC7d3e5dXW2dHSjLYEdAAAAcHRSTlMA9cj58gYaBOrflhjq44MI/ePbaP348u/u6Oba1sW+oosL/Pbv7ejnyLuXlI54RkM8Oy4iG/v38efl4ODf2tfT09LQz87FwbeimJeJf397ZUlIRTQvGxYP9/Xv4ODZz86yk4JxYlRQSjctJiYlJCAYM3tXUgAAAg1JREFUOMttk1V3ImEQRO8MQ3CChACBIHF3l427+7q7Tjfz/88+sNhk67Vuf3K6CuryXo2Yfo/HbwYnvDxW25EldVnBNpfdHjVErO2dJ9nsk51tS8SItreMmyLxV46qakxVndW4iNl0yExEjHxFEyfTcz7f3PT7La0EDInM1PxQRMJZTSQbE5OvtbNLuv6d0W5K1zM99DXf6RvTnrCY1XdExcjqKcD9RbFQKF7cAyS105AoQJsheT0EyqWUbdu2badKZeBEA2KFgCOJVxI+uNu169q9A4YqAxIEryWr+hnKG3aTNsowrX2S9vJFLGcLOLZbdAwMO4ZMMCKbegq/5luB+VlIak6CmJLXGzi3XTqHOQ2IiV9e6gMU3EABeJoRPx7p7AXW3cA6kOgQTw1YcwNrNcAvL/QBut1AN9CbET+m5PUWSm6gBH90UEyCsqnjMOUGvsJHzckoV2I4Q8BBq38AvHUMucZryZJOwmx/s98/C7exPkl7YUTilTc+mHre5E8Bw5UBGa2uO6BjwPf6T7p/AuM6WF03UTEWNQlwWVxJpVaKlwCfYgseOatFLtyjYy2RYzzWE5Y9byO0izo02bBv9nUhXA9tNfaBiu5/+OED3+/ksFYGPRL55irOkqOqy8sxVadvQGQv9Kh6Ri6Q6ejIBHKGiHXmLnAomG6UNz0a+k+/vRPBav3fXTdN/wUXrszXABeiEwAAAABJRU5ErkJggg==","type":"text/x-moz-place","uri":"http://www.paritybit.ca/blog/"},{"guid":"D4Wu5pJO8Q4R","title":"Textplain","index":192,"dateAdded":1670148177506000,"lastModified":1670148177506000,"id":252,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://textplain.net/"},{"guid":"mK6vG9DljM24","title":"Advent of Code 2022","index":193,"dateAdded":1670150894282000,"lastModified":1670150894282000,"id":253,"typeCode":1,"iconUri":"https://adventofcode.com/favicon.png","type":"text/x-moz-place","uri":"https://adventofcode.com/"},{"guid":"XdYgR6AHjexT","title":"regex101: build, test, and debug regex","index":194,"dateAdded":1670206063727000,"lastModified":1670206063727000,"id":254,"typeCode":1,"type":"text/x-moz-place","uri":"https://regex101.com/"},{"guid":"TaOruqjLjQxs","title":"Choose an open source license | Choose a License","index":195,"dateAdded":1670371791654000,"lastModified":1670371791654000,"id":255,"typeCode":1,"type":"text/x-moz-place","uri":"https://choosealicense.com/"},{"guid":"rMgcsiRTXGH9","title":"Contributor Covenant: A Code of Conduct for Open Source and Other Digital Commons Communities","index":196,"dateAdded":1670375952607000,"lastModified":1670375952607000,"id":256,"typeCode":1,"iconUri":"https://www.contributor-covenant.org/images/favicon.ico","type":"text/x-moz-place","uri":"https://www.contributor-covenant.org/"},{"guid":"qZbrak8Duaq6","title":"The Homepage of Safia Abdalla","index":197,"dateAdded":1670377974614000,"lastModified":1670377974614000,"id":257,"typeCode":1,"type":"text/x-moz-place","uri":"https://safia.rocks/"},{"guid":"ibl3DH0jz7nW","title":"How to Create a man Page on Linux","index":198,"dateAdded":1670382863150000,"lastModified":1670382863150000,"id":258,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.howtogeek.com/682871/how-to-create-a-man-page-on-linux/"},{"guid":"4syk-BdvJplc","title":"Linux source code (v6.0.11) - Bootlin","index":199,"dateAdded":1670454266744000,"lastModified":1670454266744000,"id":259,"typeCode":1,"type":"text/x-moz-place","uri":"https://elixir.bootlin.com/linux/latest/source"},{"guid":"IIy_CXgh1dm9","title":"z3rOR0ne/upnup - upnup - Codeberg.org","index":200,"dateAdded":1670491256208000,"lastModified":1670491256208000,"id":260,"typeCode":1,"iconUri":"https://design.codeberg.org/logo-kit/favicon.svg","type":"text/x-moz-place","uri":"https://codeberg.org/z3rOR0ne/upnup"},{"guid":"BrGIHDylcwwM","title":"Proton Mail — Get a private, secure, and encrypted email","index":201,"dateAdded":1670634261868000,"lastModified":1670634261868000,"id":261,"typeCode":1,"iconUri":"https://proton.me/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://proton.me/mail"},{"guid":"V9ArGaxb7RpJ","title":"Typical Programmer","index":202,"dateAdded":1670717932617000,"lastModified":1670717932617000,"id":262,"typeCode":1,"type":"text/x-moz-place","uri":"https://typicalprogrammer.com/"},{"guid":"LN8NnWVJktao","title":"oidoid","index":203,"dateAdded":1670718069813000,"lastModified":1670718069813000,"id":263,"typeCode":1,"type":"text/x-moz-place","uri":"https://oidoid.com/"},{"guid":"DzX1i4soA6y4","title":"HNPDF","index":204,"dateAdded":1670718216307000,"lastModified":1670718216307000,"id":264,"typeCode":1,"type":"text/x-moz-place","uri":"https://hnpdf.com/latest"},{"guid":"mvqobqprhqZZ","title":"anuraghazra/github-readme-stats: Dynamically generated stats for your github readmes","index":205,"dateAdded":1671169003183000,"lastModified":1671169003183000,"id":265,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/anuraghazra/github-readme-stats"},{"guid":"BhsnBRryD57N","title":"Welcome! - paritybit.ca","index":206,"dateAdded":1671254667244000,"lastModified":1671254667244000,"id":266,"typeCode":1,"iconUri":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABX1BMVEUAAAABAAAAAAAAAAAAAAAAAAAAAAC7amoAAABlPz8AAAAAAAAGAwMAAAAAAAAAAAC7d3cKBwe7d3e7d3eWX1/ny4+WX18CAQGHVlaTXl4BAAApGhpiPj7ny4/ny4/oy4/ozI/qz5Ona2u7d3d4TEzny48MCAhlQEC7d3e7d3cAAAAAAAC7d3e8d3cAAAC8d3fnzI+8dnYAAADpzJC9eHjny4+WX1+TXV13S0u7d3fny492S0vnzI/ny4+EU1PnzI8mFxe7d3cjFhZgPT3ny5AAAAC7d3fny4+7d3cAAADozJC6d3e7d3cAAADozI/my5Dny44AAAAAAAC7d3e4d3fkx5DpzY69c3O7d3eoamroy4+FVVWEVFR0Skq7d3e7d3e8d3cAAAC6eHi7eHi7eHi8dna8dnYAAADozJAAAADkyY28eXnqyJHqzY63eHi/dXXny48AAAC7d3e5dXW2dHSjLYEdAAAAcHRSTlMA9cj58gYaBOrflhjq44MI/ePbaP348u/u6Oba1sW+oosL/Pbv7ejnyLuXlI54RkM8Oy4iG/v38efl4ODf2tfT09LQz87FwbeimJeJf397ZUlIRTQvGxYP9/Xv4ODZz86yk4JxYlRQSjctJiYlJCAYM3tXUgAAAg1JREFUOMttk1V3ImEQRO8MQ3CChACBIHF3l427+7q7Tjfz/88+sNhk67Vuf3K6CuryXo2Yfo/HbwYnvDxW25EldVnBNpfdHjVErO2dJ9nsk51tS8SItreMmyLxV46qakxVndW4iNl0yExEjHxFEyfTcz7f3PT7La0EDInM1PxQRMJZTSQbE5OvtbNLuv6d0W5K1zM99DXf6RvTnrCY1XdExcjqKcD9RbFQKF7cAyS105AoQJsheT0EyqWUbdu2badKZeBEA2KFgCOJVxI+uNu169q9A4YqAxIEryWr+hnKG3aTNsowrX2S9vJFLGcLOLZbdAwMO4ZMMCKbegq/5luB+VlIak6CmJLXGzi3XTqHOQ2IiV9e6gMU3EABeJoRPx7p7AXW3cA6kOgQTw1YcwNrNcAvL/QBut1AN9CbET+m5PUWSm6gBH90UEyCsqnjMOUGvsJHzckoV2I4Q8BBq38AvHUMucZryZJOwmx/s98/C7exPkl7YUTilTc+mHre5E8Bw5UBGa2uO6BjwPf6T7p/AuM6WF03UTEWNQlwWVxJpVaKlwCfYgseOatFLtyjYy2RYzzWE5Y9byO0izo02bBv9nUhXA9tNfaBiu5/+OED3+/ksFYGPRL55irOkqOqy8sxVadvQGQv9Kh6Ri6Q6ejIBHKGiHXmLnAomG6UNz0a+k+/vRPBav3fXTdN/wUXrszXABeiEwAAAABJRU5ErkJggg==","type":"text/x-moz-place","uri":"https://www.paritybit.ca/"},{"guid":"nSYmph_tgH_F","title":"lowdown — simple markdown translator","index":207,"dateAdded":1671256913682000,"lastModified":1671256913682000,"id":267,"typeCode":1,"type":"text/x-moz-place","uri":"https://kristaps.bsd.lv/lowdown/"},{"guid":"8_hW0VSEFJy-","title":"sblg: static blog utility","index":208,"dateAdded":1671256969489000,"lastModified":1671256969489000,"id":268,"typeCode":1,"type":"text/x-moz-place","uri":"https://kristaps.bsd.lv/sblg/"},{"guid":"aZg_LAYQ3Wf8","title":"Not Awful UW Photos","index":209,"dateAdded":1671256976567000,"lastModified":1671256976567000,"id":269,"typeCode":1,"iconUri":"https://kristaps.bsd.lv/logo.jpg","type":"text/x-moz-place","uri":"https://kristaps.bsd.lv/"},{"guid":"ckYFjv-DR0Sc","title":"Can I use... Support tables for HTML5, CSS3, etc","index":210,"dateAdded":1671335306571000,"lastModified":1671335306571000,"id":270,"typeCode":1,"iconUri":"https://caniuse.com/img/favicon-128.png","type":"text/x-moz-place","uri":"https://caniuse.com/"},{"guid":"GwkAXOPZrc_H","title":"Most Reliable App & Cross Browser Testing Platform | BrowserStack","index":211,"dateAdded":1671335334908000,"lastModified":1671335334908000,"id":271,"typeCode":1,"iconUri":"https://browserstack.wpenginepowered.com/wp-content/themes/browserstack/img/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.browserstack.com/"},{"guid":"Pl-q6QHYfGli","title":"Espanso - A Privacy-first, Cross-platform Text Expander","index":212,"dateAdded":1671348150736000,"lastModified":1671348150736000,"id":272,"typeCode":1,"iconUri":"https://espanso.org/img/favicon.ico","type":"text/x-moz-place","uri":"https://espanso.org/"},{"guid":"kMc6Ykyhm6XZ","title":"Forgejo – Beyond coding. We forge.","index":213,"dateAdded":1671426498644000,"lastModified":1671426498644000,"id":273,"typeCode":1,"iconUri":"https://forgejo.org/favicon.svg","type":"text/x-moz-place","uri":"https://forgejo.org/"},{"guid":"tKBA96Ek2LQe","title":"Vahid Naeini","index":214,"dateAdded":1671522890430000,"lastModified":1671522890430000,"id":274,"typeCode":1,"type":"text/x-moz-place","uri":"https://iamv.ir/"},{"guid":"O8TCxXUU7ew7","title":"terminal.sexy - Terminal Color Scheme Designer","index":215,"dateAdded":1671529486018000,"lastModified":1671529486018000,"id":275,"typeCode":1,"type":"text/x-moz-place","uri":"https://terminal.sexy/"},{"guid":"mr1JBp8wBHOS","title":"75 Zsh Commands, Plugins, Aliases and Tools - SitePoint","index":216,"dateAdded":1671601474490000,"lastModified":1671601474490000,"id":276,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.sitepoint.com/zsh-commands-plugins-aliases-tools/"},{"guid":"cW91o5ftbACQ","title":"rgb/hex converter syntax - how does this work? : bash","index":217,"dateAdded":1671613132967000,"lastModified":1671613132967000,"id":277,"typeCode":1,"type":"text/x-moz-place","uri":"https://teddit.net/r/bash/comments/zqmvz8/rgbhex_converter_syntax_how_does_this_work/"},{"guid":"2RID-ybGAJPR","title":"How to extract a number from a string using Bash example - Linux Tutorials - Learn Linux Configuration","index":218,"dateAdded":1671686720531000,"lastModified":1671686720531000,"id":278,"typeCode":1,"iconUri":"https://linuxconfig.org/wp-content/uploads/2021/08/cropped-android-chrome-512x512-1-192x192.png","type":"text/x-moz-place","uri":"https://linuxconfig.org/how-to-extract-number-from-a-string-using-bash-example"},{"guid":"7hQd47-F1xnA","title":"GitHub - user234683/youtube-local: browser-based client for watching Youtube anonymously and with greater page performance","index":219,"dateAdded":1671784372610000,"lastModified":1671784372610000,"id":279,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/user234683/youtube-local"},{"guid":"zKL7nibxpOEy","title":"Twine / An open-source tool for telling interactive, nonlinear stories","index":220,"dateAdded":1671784464887000,"lastModified":1671784464887000,"id":280,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://twinery.org/?ref=producthunt"},{"guid":"B3Xs0Q9ewiby","title":"Just a moment...","index":221,"dateAdded":1671784582955000,"lastModified":1671784582955000,"id":281,"typeCode":1,"type":"text/x-moz-place","uri":"https://chat.openai.com/"},{"guid":"v-8eYEUrNh8x","title":"wolfgang linux - Invidious","index":222,"dateAdded":1671786379289000,"lastModified":1671786379289000,"id":282,"typeCode":1,"type":"text/x-moz-place","uri":"https://inv.riverside.rocks/search?q=wolfgang+linux"},{"guid":"TQawL7z4IPSn","title":"BugsWriter - Invidious","index":223,"dateAdded":1671787442082000,"lastModified":1671787442082000,"id":283,"typeCode":1,"type":"text/x-moz-place","uri":"https://inv.riverside.rocks/channel/UCngn7SVujlvskHRvRKc1cTw?page=1&sort_by=popular"},{"guid":"8Osw6KYq4FVG","title":"Drew DeVault's blog","index":224,"dateAdded":1671790384669000,"lastModified":1671790384669000,"id":284,"typeCode":1,"iconUri":"https://drewdevault.com/avatar.png","type":"text/x-moz-place","uri":"https://drewdevault.com/"},{"guid":"_AO-H9uVo84F","title":"Color Designer - Simple Color Palette Generator","index":225,"dateAdded":1671923256607000,"lastModified":1671923256607000,"id":285,"typeCode":1,"iconUri":"https://colordesigner.io/favicons/favicon-16x16.png","type":"text/x-moz-place","uri":"https://colordesigner.io/"},{"guid":"JDD9Gi69xSCt","title":"Convert HSL to RGB - Colordesigner","index":226,"dateAdded":1671952045146000,"lastModified":1671952045146000,"id":286,"typeCode":1,"iconUri":"https://colordesigner.io/favicons/favicon-16x16.png","type":"text/x-moz-place","uri":"https://colordesigner.io/convert/hsltorgb"},{"guid":"UikP87F1OyEy","title":"Axon Flux // A Ruby on Rails Blog","index":227,"dateAdded":1672104111919000,"lastModified":1672104111919000,"id":287,"typeCode":1,"type":"text/x-moz-place","uri":"https://axonflux.com/"},{"guid":"h7M1EaIb20Ta","title":"converting hsl to rgb in bash : bash","index":228,"dateAdded":1672108209921000,"lastModified":1672108209921000,"id":288,"typeCode":1,"type":"text/x-moz-place","uri":"https://teddit.pussthecat.org/r/bash/comments/zut4nw/converting_hsl_to_rgb_in_bash/"},{"guid":"YsTE3FH3WEX_","title":"NPR - Breaking News, Analysis, Music, Arts & Podcasts : NPR","index":229,"dateAdded":1672358114797000,"lastModified":1672358114797000,"id":289,"typeCode":1,"iconUri":"https://static-assets.npr.org/static/images/favicon/favicon-180x180.png","type":"text/x-moz-place","uri":"https://www.npr.org/"},{"guid":"ybmeejmQnt9w","title":"bugswriter's website","index":230,"dateAdded":1672465607248000,"lastModified":1672465607248000,"id":290,"typeCode":1,"type":"text/x-moz-place","uri":"https://bugswriter.com/"},{"guid":"MZZL-iEk7f5g","title":"Zola","index":231,"dateAdded":1672465735022000,"lastModified":1672465735022000,"id":291,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.getzola.org/"},{"guid":"W8rwjEvtJ5HZ","title":"Code Review Stack Exchange","index":232,"dateAdded":1672468798543000,"lastModified":1672468798543000,"id":292,"typeCode":1,"iconUri":"https://cdn.sstatic.net/Sites/codereview/Img/apple-touch-icon.png?v=0a72875519a4","type":"text/x-moz-place","uri":"https://codereview.stackexchange.com/"},{"guid":"x5GVZU8hny84","title":"Pages - NotABug.org: Free code hosting","index":233,"dateAdded":1672561969276000,"lastModified":1672561969276000,"id":293,"typeCode":1,"iconUri":"https://notabug.org/img/icon-240.png","type":"text/x-moz-place","uri":"https://notabug.org/nbatman/freemediaheckyeah/wiki/_pages"},{"guid":"tJhOnquMXpfX","title":"GitHub - Igglybuff/awesome-piracy: A curated list of awesome warez and piracy links","index":234,"dateAdded":1672562046340000,"lastModified":1672562046340000,"id":294,"typeCode":1,"iconUri":"https://github.githubassets.com/favicons/favicon.svg","type":"text/x-moz-place","uri":"https://github.com/Igglybuff/awesome-piracy#tracker-invites"},{"guid":"YGgQhjYcMwMf","title":"API Reference | Vue.js","index":235,"dateAdded":1672722414382000,"lastModified":1672722414382000,"id":295,"typeCode":1,"iconUri":"https://vuejs.org/logo.svg","type":"text/x-moz-place","uri":"https://vuejs.org/api/"},{"guid":"2xBbvNdvB5H1","title":"leafbytes","index":236,"dateAdded":1672796826278000,"lastModified":1672796826278000,"id":296,"typeCode":1,"iconUri":"http://localhost:5173/favicon.svg","type":"text/x-moz-place","uri":"http://localhost:5173/"},{"guid":"3Pxhangv6e4N","title":"BuiltWith Technology Lookup","index":237,"dateAdded":1672822703735000,"lastModified":1672822703735000,"id":297,"typeCode":1,"iconUri":"https://d28rh9vvmrd65v.cloudfront.net/img/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://builtwith.com/"},{"guid":"zcrq442FtkoC","title":"JavaScript Jobs - OnSite and Remote JavaScript Jobs - January 2022","index":238,"dateAdded":1672824054168000,"lastModified":1672824054168000,"id":298,"typeCode":1,"type":"text/x-moz-place","uri":"https://javascriptjob.xyz/"},{"guid":"zvTraxCIR0SA","title":"leafbytes","index":239,"dateAdded":1672904772877000,"lastModified":1672904772877000,"id":299,"typeCode":1,"iconUri":"http://localhost:5173/favicon.svg","type":"text/x-moz-place","uri":"http://localhost:5173/home"},{"guid":"iwEXa4oRpxhV","title":"Vue.js jobs – Browse through dozens of Vue.js openings","index":240,"dateAdded":1673170090313000,"lastModified":1673170090313000,"id":300,"typeCode":1,"iconUri":"https://vuejobs.com/vuejobs.webp","type":"text/x-moz-place","uri":"https://vuejobs.com/"},{"guid":"_TQNayOf8VwE","title":"Create An RSS Feed From Scratch | Alex Le","index":241,"dateAdded":1673230542709000,"lastModified":1673230542709000,"id":301,"typeCode":1,"iconUri":"https://alexanderle.com/assets/favicon-alex-16x16.png","type":"text/x-moz-place","uri":"https://alexanderle.com/create-an-rss-feed-from-scratch"},{"guid":"os2wxgTBJJIs","title":"Home | Alex Le","index":242,"dateAdded":1673230549279000,"lastModified":1673230549279000,"id":302,"typeCode":1,"type":"text/x-moz-place","uri":"https://alexanderle.com/"},{"guid":"3XotRQltbD1a","title":"How to add a Background Image in Vue.js | Reactgo","index":243,"dateAdded":1673241762374000,"lastModified":1673241762374000,"id":303,"typeCode":1,"iconUri":"https://reactgo.com/icons/icon-512x512.png?v=5d4c5c0ac2d1ce690cea3b08650e37f8","type":"text/x-moz-place","uri":"https://reactgo.com/vue-background-image/"},{"guid":"1DkxCr0l13n_","title":"Vue.js Examples","index":244,"dateAdded":1673248483519000,"lastModified":1673248483519000,"id":304,"typeCode":1,"iconUri":"https://vuejsexamples.com/favicon.png","type":"text/x-moz-place","uri":"https://vuejsexamples.com/"},{"guid":"OJuM6E8Uqprt","title":"This Week In Neovim","index":245,"dateAdded":1673308740311000,"lastModified":1673308740311000,"id":305,"typeCode":1,"iconUri":"https://neovim.io/favicon.ico","type":"text/x-moz-place","uri":"https://this-week-in-neovim.org/"},{"guid":"fDI29CTshDSo","title":"Compiler Explorer","index":246,"dateAdded":1673487975055000,"lastModified":1673487975055000,"id":306,"typeCode":1,"type":"text/x-moz-place","uri":"https://godbolt.org/"},{"guid":"dbFwXF42aLLf","title":"leafbytes","index":247,"dateAdded":1673500468312000,"lastModified":1673500468312000,"id":307,"typeCode":1,"iconUri":"http://localhost:5173/favicon.svg","type":"text/x-moz-place","uri":"http://localhost:5173/blog/espanso-text-expander"},{"guid":"EgAYFboOKMWV","title":"https://www.youtube.com/@swildermuth","index":248,"dateAdded":1673854152925000,"lastModified":1673854152925000,"id":308,"typeCode":1,"type":"text/x-moz-place","uri":"view-source:https://www.youtube.com/@swildermuth"},{"guid":"M05aur1wcv1n","title":"Welcome To Distro.Tube","index":249,"dateAdded":1673921215014000,"lastModified":1673921215014000,"id":309,"typeCode":1,"type":"text/x-moz-place","uri":"https://distro.tube/"},{"guid":"E9ITfiEIJOeS","title":"Fluid Typography Calculator","index":250,"dateAdded":1673929050396000,"lastModified":1673929050396000,"id":310,"typeCode":1,"iconUri":"https://royalfig.github.io/fluid-typography-calculator/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://royalfig.github.io/fluid-typography-calculator/"},{"guid":"X2WSDerHOiwg","title":"Welcome to the Accessibility Developer Guide! - ADG","index":251,"dateAdded":1673929969769000,"lastModified":1673929969769000,"id":311,"typeCode":1,"iconUri":"https://www.accessibility-developer-guide.com/img/favicon/icon.svg","type":"text/x-moz-place","uri":"https://www.accessibility-developer-guide.com/"},{"guid":"_LuJk8zjupTG","title":"Josh W Comeau","index":252,"dateAdded":1673930927756000,"lastModified":1673930927756000,"id":312,"typeCode":1,"iconUri":"https://www.joshwcomeau.com/assets/favicon.png?v=4","type":"text/x-moz-place","uri":"https://www.joshwcomeau.com/"},{"guid":"Y2IoGLest08O","title":"Dev.Opera","index":253,"dateAdded":1673934023715000,"lastModified":1673934023715000,"id":313,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.opera.com/"},{"guid":"DB5tJDuhMQTE","title":"Awwwards - Website Awards - Best Web Design Trends","index":254,"dateAdded":1674036290289000,"lastModified":1674036290289000,"id":314,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.awwwards.com/"},{"guid":"JrQUNrBEhPM9","title":"Newsboat rss reader enable vim key bindings | The FreeBSD Forums","index":255,"dateAdded":1674088097079000,"lastModified":1674088097079000,"id":315,"typeCode":1,"type":"text/x-moz-place","uri":"https://forums.freebsd.org/threads/newsboat-rss-reader-enable-vim-key-bindings.69448/"},{"guid":"BtsRfhgUgPHL","title":"Deploying Vite App to GitHub Pages - DEV Community 👩💻👨💻","index":256,"dateAdded":1674116185596000,"lastModified":1674116185596000,"id":316,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/shashannkbawa/deploying-vite-app-to-github-pages-3ane"},{"guid":"8tqAATPpGx6q","title":"Git Delete Branch – How to Remove a Local or Remote Branch","index":257,"dateAdded":1674117576155000,"lastModified":1674117576155000,"id":317,"typeCode":1,"iconUri":"https://cdn.freecodecamp.org/universal/favicons/favicon.ico","type":"text/x-moz-place","uri":"https://www.freecodecamp.org/news/git-delete-branch-how-to-remove-a-local-or-remote-branch/"},{"guid":"U2bBcaKKKUz0","title":"Develop and deploy websites and apps in record time | Netlify","index":258,"dateAdded":1674119864442000,"lastModified":1674119864442000,"id":318,"typeCode":1,"iconUri":"https://www.netlify.com/v3/static/favicon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.netlify.com/"},{"guid":"cl8pxN_b3aPl","title":"SQLite Tutorial - An Easy Way to Master SQLite Fast","index":259,"dateAdded":1674349435204000,"lastModified":1674349435204000,"id":319,"typeCode":1,"iconUri":"https://www.sqlitetutorial.net/wp-content/uploads/2016/05/favicon.png","type":"text/x-moz-place","uri":"https://www.sqlitetutorial.net/"},{"guid":"Htntot0FZEO5","title":"RSS Advisory Board","index":260,"dateAdded":1674374692726000,"lastModified":1674374692726000,"id":320,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.rssboard.org/"},{"guid":"5mJwZ4LRGUqx","title":"Codrops | Creative front-end resources and inspiration for web professionals","index":261,"dateAdded":1674377790916000,"lastModified":1674377790916000,"id":321,"typeCode":1,"iconUri":"https://i7x7p5b7.stackpathcdn.com/codrops/wp-content/themes/codropstheme03/favicons/apple-touch-icon.png?v=2","type":"text/x-moz-place","uri":"https://tympanus.net/codrops/"},{"guid":"8_9Uc9niFRHm","title":"Technology and Miscellanea - Felix Crux","index":262,"dateAdded":1674442556868000,"lastModified":1674442556868000,"id":322,"typeCode":1,"type":"text/x-moz-place","uri":"https://felixcrux.com/"},{"guid":"A2tQxMbol256","title":"Super User","index":263,"dateAdded":1674443467604000,"lastModified":1674443467604000,"id":323,"typeCode":1,"type":"text/x-moz-place","uri":"https://superuser.com/"},{"guid":"dT5ST2ncWrAY","title":"Hot Questions - Stack Exchange","index":264,"dateAdded":1674443487769000,"lastModified":1674443487769000,"id":324,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackexchange.com/"},{"guid":"TzIueMyfExUq","title":"Stack Overflow - Where Developers Learn, Share, & Build Careers","index":265,"dateAdded":1674443507568000,"lastModified":1674443507568000,"id":325,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/"},{"guid":"U02uFJ5MEkn0","title":"IETF Datatracker","index":266,"dateAdded":1674443781822000,"lastModified":1674443781822000,"id":326,"typeCode":1,"iconUri":"https://www.ietf.org/lib/dt/9.6.0/ietf/images/ietf-logo-nor-180.png","type":"text/x-moz-place","uri":"https://datatracker.ietf.org/"},{"guid":"jbzEoJKJKPtK","title":"David Walsh Blog - JavaScript Consultant","index":267,"dateAdded":1674444733639000,"lastModified":1674444733639000,"id":327,"typeCode":1,"iconUri":"https://davidwalsh.name/wp-content/themes/punky/images/favicon-144.png","type":"text/x-moz-place","uri":"https://davidwalsh.name/"},{"guid":"cNmTElDvGV0v","title":"blog.wittcode.com","index":268,"dateAdded":1674789467714000,"lastModified":1674789467714000,"id":328,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.wittcode.com/"},{"guid":"K1YPv3UKBpkV","title":"WittCode","index":269,"dateAdded":1674790166591000,"lastModified":1674790166591000,"id":329,"typeCode":1,"iconUri":"https://wittcode.com/main-images/favicon.png","type":"text/x-moz-place","uri":"https://wittcode.com/"},{"guid":"p5r8m_sbnCaf","title":"TinyPNG – Compress WebP, PNG and JPEG images intelligently","index":270,"dateAdded":1674791322194000,"lastModified":1674791322194000,"id":330,"typeCode":1,"type":"text/x-moz-place","uri":"https://tinypng.com/"},{"guid":"sN4byqagkdeZ","title":"Portland, OR Nonprofits and Charities | Donate, Volunteer, Review | GreatNonprofits","index":271,"dateAdded":1674807662519000,"lastModified":1674807662519000,"id":331,"typeCode":1,"type":"text/x-moz-place","uri":"https://greatnonprofits.org/city/portland/OR"},{"guid":"o3tqNSmn0-3T","title":"DemocracyLab","index":272,"dateAdded":1674808603324000,"lastModified":1674808603324000,"id":332,"typeCode":1,"iconUri":"https://d1agxr2dqkgkuy.cloudfront.net/img/favicon.png","type":"text/x-moz-place","uri":"https://democracylab.org/"},{"guid":"pUcHRVvHWyaQ","title":"JSON:API — A specification for building APIs in JSON","index":273,"dateAdded":1674873446188000,"lastModified":1674873446188000,"id":333,"typeCode":1,"iconUri":"https://jsonapi.org/alt-favicons/favicon-194x194.png","type":"text/x-moz-place","uri":"https://jsonapi.org/"},{"guid":"Uj4h7zi4Sh8q","title":"JSON Schema | The home of JSON Schema","index":274,"dateAdded":1674873833452000,"lastModified":1674873833452000,"id":334,"typeCode":1,"type":"text/x-moz-place","uri":"https://json-schema.org/"},{"guid":"k9odgsLXew1e","title":"SWAPI - The Star Wars API","index":275,"dateAdded":1674874437480000,"lastModified":1674874437480000,"id":335,"typeCode":1,"iconUri":"https://swapi.dev/static/favicon.ico","type":"text/x-moz-place","uri":"https://swapi.dev/"},{"guid":"Wlg7125e2FG9","title":"Online JSON Schema Validator and Generator","index":276,"dateAdded":1674882128326000,"lastModified":1674882128326000,"id":336,"typeCode":1,"iconUri":"https://extendsclass.com/favicon.png","type":"text/x-moz-place","uri":"https://extendsclass.com/json-schema-validator.html"},{"guid":"ymcDJg6MCqWq","title":"LiteCLI","index":277,"dateAdded":1674895279567000,"lastModified":1674895279567000,"id":337,"typeCode":1,"iconUri":"https://litecli.com/img/favicon.png","type":"text/x-moz-place","uri":"https://litecli.com/"},{"guid":"VQmd5JgvtE80","title":"JSON Functions And Operators","index":278,"dateAdded":1674983067974000,"lastModified":1674983067974000,"id":338,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.sqlite.org/json1.html#jmini"},{"guid":"aooX32GJfwwa","title":"Appropriate Uses For SQLite","index":279,"dateAdded":1674985365936000,"lastModified":1674985365936000,"id":339,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.sqlite.org/whentouse.html"},{"guid":"0qRy_H0i9RB4","title":"SQL Query Builder for Javascript | Knex.js","index":280,"dateAdded":1674986879352000,"lastModified":1674986879352000,"id":340,"typeCode":1,"iconUri":"https://knexjs.org/knex-logo.png","type":"text/x-moz-place","uri":"https://knexjs.org/"},{"guid":"ulc6-DM4OG9U","title":"Objection.js","index":281,"dateAdded":1674986908126000,"lastModified":1674986908126000,"id":341,"typeCode":1,"type":"text/x-moz-place","uri":"https://vincit.github.io/objection.js/"},{"guid":"k56wrp6DM0SF","title":"CoRecursive Podcast - The Stories Behind The Code","index":282,"dateAdded":1674989042505000,"lastModified":1674989042505000,"id":342,"typeCode":1,"iconUri":"https://corecursive.com/assets/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://corecursive.com/"},{"guid":"eO2DJel2xKQ8","title":"SQLite Primary Key: The Ultimate Guide To Primary Key","index":283,"dateAdded":1675056587564000,"lastModified":1675056587564000,"id":343,"typeCode":1,"iconUri":"https://www.sqlitetutorial.net/wp-content/uploads/2016/05/favicon.png","type":"text/x-moz-place","uri":"https://www.sqlitetutorial.net/sqlite-primary-key/"},{"guid":"DSiBMF1wQXVE","title":"Aurora Sweep PCB Kit — splitkb.com","index":284,"dateAdded":1675157068904000,"lastModified":1675157068904000,"id":344,"typeCode":1,"iconUri":"https://cdn.shopify.com/s/files/1/0227/9171/6941/files/minimal-512-round_1e318420-82d2-48c5-8634-6707f91dea7f_32x32.png?v=1640825421","type":"text/x-moz-place","uri":"https://splitkb.com/products/aurora-sweep"},{"guid":"BpY6ZG9ZMSt9","title":"Node.js","index":285,"dateAdded":1675223041460000,"lastModified":1675223041460000,"id":345,"typeCode":1,"iconUri":"https://nodejs.org/static/images/favicons/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://nodejs.org/en/"},{"guid":"VDpXSDEE_gMs","title":"OWASP Foundation, the Open Source Foundation for Application Security | OWASP Foundation","index":286,"dateAdded":1675223681539000,"lastModified":1675223681539000,"id":346,"typeCode":1,"iconUri":"https://owasp.org/www--site-theme/favicon.ico","type":"text/x-moz-place","uri":"https://owasp.org/"},{"guid":"F2ZSjQCWjeuv","title":"Coding Bootcamp | Programming Bootcamp | Alchemy Code Lab","index":287,"dateAdded":1675249398492000,"lastModified":1675249398492000,"id":347,"typeCode":1,"iconUri":"https://www.alchemycodelab.com/images/alchemy-favicon.png","type":"text/x-moz-place","uri":"https://www.alchemycodelab.com/"},{"guid":"dtl3puxnAcWQ","title":"Council on Integrity in Results Reporting (CIRR) - Council on Integrity in Results Reporting (CIRR)","index":288,"dateAdded":1675250058260000,"lastModified":1675250058260000,"id":348,"typeCode":1,"type":"text/x-moz-place","uri":"https://cirr.org/"},{"guid":"O1MU33TRrGXC","title":"Titmouse, Inc. - Wikipedia","index":289,"dateAdded":1675423570088000,"lastModified":1675423570088000,"id":349,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Titmouse,_Inc.?useskin=vector"},{"guid":"CUMACUUb2tYD","title":"FileFormat.Info · The Digital Rosetta Stone","index":290,"dateAdded":1675573016264000,"lastModified":1675573016264000,"id":350,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fileformat.info/"},{"guid":"Z2Q3ox9FSyGp","title":"Linux Man Page Howto","index":291,"dateAdded":1675573066678000,"lastModified":1675573066678000,"id":351,"typeCode":1,"type":"text/x-moz-place","uri":"http://www.schweikhardt.net/man_page_howto.html"},{"guid":"p8uQQcYjVMYE","title":"GitHub - proycon/tuir: Browse Reddit from your terminal","index":292,"dateAdded":1675589903928000,"lastModified":1675589903928000,"id":352,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/proycon/tuir"},{"guid":"mnU1FVWPUcs-","title":"GitHub - ThePrimeagen/harpoon","index":293,"dateAdded":1675590584452000,"lastModified":1675590584452000,"id":353,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/ThePrimeagen/harpoon"},{"guid":"9g8Ieo9wfmRZ","title":"Articles – Cloud Four","index":294,"dateAdded":1675592733209000,"lastModified":1675592733209000,"id":354,"typeCode":1,"iconUri":"https://cloudfour.com/wp-content/themes/cloudfour2022/node_modules/@cloudfour/patterns/src/assets/favicons/icon.svg","type":"text/x-moz-place","uri":"https://cloudfour.com/thinks/"},{"guid":"COkqw8UgTuBE","title":"articles on design engineering – Sara Soueidan, inclusive design engineer","index":295,"dateAdded":1675593985455000,"lastModified":1675593985455000,"id":355,"typeCode":1,"iconUri":"https://www.sarasoueidan.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.sarasoueidan.com/blog/"},{"guid":"nTH4bjvuRJLm","title":"Dev.Opera — Responsive Images: Use Cases and Documented Code Snippets to Get You Started","index":296,"dateAdded":1675594177444000,"lastModified":1675594177444000,"id":356,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.opera.com/articles/responsive-images/"},{"guid":"cwKWJ560yJqg","title":"Dev.Opera — Native Responsive Images","index":297,"dateAdded":1675596369102000,"lastModified":1675596369102000,"id":357,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.opera.com/articles/native-responsive-images/"},{"guid":"RO2Wqqb6f4q3","title":"Responsive Images the Simple Way – Cloud Four","index":298,"dateAdded":1675596379969000,"lastModified":1675596379969000,"id":358,"typeCode":1,"type":"text/x-moz-place","uri":"https://cloudfour.com/thinks/responsive-images-the-simple-way/"},{"guid":"pldVimVN_QDp","title":"Autoprefixer CSS online","index":299,"dateAdded":1675596805949000,"lastModified":1675596805949000,"id":359,"typeCode":1,"iconUri":"https://autoprefixer.github.io/assets/icon/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://autoprefixer.github.io/"},{"guid":"dFSNKVbFvkCx","title":"Butterick’s Practical Typography","index":300,"dateAdded":1675648044676000,"lastModified":1675648044676000,"id":360,"typeCode":1,"type":"text/x-moz-place","uri":"https://practicaltypography.com/"},{"guid":"PKX2nTo7oSsk","title":"Code Review Workshops with Dr. Michaela Greiler - Dr. McKayla","index":301,"dateAdded":1675648187032000,"lastModified":1675648187032000,"id":361,"typeCode":1,"iconUri":"https://i2.wp.com/www.michaelagreiler.com/wp-content/uploads/2020/09/Michaela-Greiler-Site-Identity-10.png?fit=192%2C192&ssl=1","type":"text/x-moz-place","uri":"https://www.michaelagreiler.com/"},{"guid":"BMHpXyYVfFij","title":"APIs and SDKs for Real-Time Chat, Experiences and More | PubNub","index":302,"dateAdded":1675664016974000,"lastModified":1675664016974000,"id":362,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.pubnub.com/"},{"guid":"6cUWqMsWIKu2","title":"PubNub docs | PubNub Docs","index":303,"dateAdded":1675664036838000,"lastModified":1675664036838000,"id":363,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.pubnub.com/docs/"},{"guid":"iG7TV4LpASkD","title":"Space","index":304,"dateAdded":1675746187261000,"lastModified":1675746187261000,"id":364,"typeCode":1,"iconUri":"https://assets.service.jetbrains.space/static/151032/br/apple-touch-icon-180x180.png","type":"text/x-moz-place","uri":"https://siimee.jetbrains.space/"},{"guid":"s2bquXiczcY0","title":"harrisoncramer.me","index":305,"dateAdded":1675811634732000,"lastModified":1675811634732000,"id":365,"typeCode":1,"type":"text/x-moz-place","uri":"https://harrisoncramer.me/"},{"guid":"ShfHDeKKvI-e","title":"HTML elements reference - HTML: HyperText Markup Language | MDN","index":306,"dateAdded":1675845410561000,"lastModified":1675845410561000,"id":366,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Web/HTML/Element"},{"guid":"s5gtAEahwCWl","title":"Semantics - MDN Web Docs Glossary: Definitions of Web-related terms | MDN","index":307,"dateAdded":1675846215175000,"lastModified":1675846215175000,"id":367,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Glossary/Semantics"},{"guid":"P5SQq6w9YtwF","title":"About web.dev","index":308,"dateAdded":1675846286425000,"lastModified":1675846286425000,"id":368,"typeCode":1,"iconUri":"https://web.dev/images/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://web.dev/about/"},{"guid":"f3Mfn8X_uR8_","title":"Accessible Rich Internet Applications (WAI-ARIA) 1.1","index":309,"dateAdded":1675846376027000,"lastModified":1675846376027000,"id":369,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3.org/TR/wai-aria/"},{"guid":"6EvyH214R6F5","title":"ARIA Authoring Practices Guide | APG | WAI | W3C","index":310,"dateAdded":1675846411425000,"lastModified":1675846411425000,"id":370,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3.org/WAI/ARIA/apg/#kbd_layout_landmark_XHTML"},{"guid":"cuopi0ARk_wG","title":"ARIA Authoring Practices Guide | APG | WAI | W3C","index":311,"dateAdded":1675846462943000,"lastModified":1675846462943000,"id":371,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3.org/WAI/ARIA/apg/"},{"guid":"tpygF5hAPlKa","title":"Introduction to ARIA","index":312,"dateAdded":1675847597347000,"lastModified":1675847597347000,"id":372,"typeCode":1,"type":"text/x-moz-place","uri":"https://web.dev/semantics-aria/"},{"guid":"htjdlfuG8BqY","title":"Cloudflare Pages","index":313,"dateAdded":1675912242595000,"lastModified":1675912242595000,"id":373,"typeCode":1,"type":"text/x-moz-place","uri":"https://pages.cloudflare.com/"},{"guid":"meaFoVYyajex","title":"Timestamp Converter","index":314,"dateAdded":1676267875917000,"lastModified":1676267875917000,"id":374,"typeCode":1,"iconUri":"https://www.timestamp-converter.com/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://www.timestamp-converter.com/"},{"guid":"3PlWht6GLio7","title":"State Area Measurements and Internal Point Coordinates","index":315,"dateAdded":1676272542817000,"lastModified":1676272542817000,"id":375,"typeCode":1,"iconUri":"https://www.census.gov/etc.clientlibs/census/clientlibs/common-site/resources/icons/android-chrome-256x256.png","type":"text/x-moz-place","uri":"https://www.census.gov/geographies/reference-files/2010/geo/state-area.html"},{"guid":"RSRW9hrHG0x0","title":"Amethyst | ianyh","index":316,"dateAdded":1676287464769000,"lastModified":1676287464769000,"id":376,"typeCode":1,"type":"text/x-moz-place","uri":"https://ianyh.com/amethyst/"},{"guid":"Ye4eSi9uUa6p","title":"AquaSnap Window Manager: dock, snap, tile, organize","index":317,"dateAdded":1676287468325000,"lastModified":1676287468325000,"id":377,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.nurgo-software.com/products/aquasnap"},{"guid":"jhFTI2HpdjRe","title":"SQLZOO","index":318,"dateAdded":1676636702502000,"lastModified":1676636702502000,"id":378,"typeCode":1,"type":"text/x-moz-place","uri":"https://sqlzoo.net/wiki/SQL_Tutorial"},{"guid":"-9a1TTpuut_N","title":"Complete List of Common Nursing Certifications 2023 | Nurse.org","index":319,"dateAdded":1676962106157000,"lastModified":1676962106157000,"id":379,"typeCode":1,"type":"text/x-moz-place","uri":"https://nurse.org/articles/nursing-certifications-credentials-list/"},{"guid":"CDk_MTPiFLWr","title":"joi.dev","index":320,"dateAdded":1677046624406000,"lastModified":1677046624406000,"id":380,"typeCode":1,"iconUri":"https://joi.dev/_nuxt/icons/icon_512x512.5f6a36.png","type":"text/x-moz-place","uri":"https://joi.dev/"},{"guid":"Py0yyRuS9QP9","title":"Find engineering teams that share your values | Key Values","index":321,"dateAdded":1677121916684000,"lastModified":1677121916684000,"id":381,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.keyvalues.com/"},{"guid":"TeCJEJcjr7kv","title":"Home - Merit America","index":322,"dateAdded":1677139339164000,"lastModified":1677139339164000,"id":382,"typeCode":1,"iconUri":"https://meritamerica.org/wp-content/uploads/2022/01/cropped-fav-300x300.png","type":"text/x-moz-place","uri":"https://meritamerica.org/"},{"guid":"whxEzjkn9wK0","title":"Sololearn: Learn to Code","index":323,"dateAdded":1677141094880000,"lastModified":1677141094880000,"id":383,"typeCode":1,"iconUri":"https://www.sololearn.com/Images/favicon.ico","type":"text/x-moz-place","uri":"https://www.sololearn.com/"},{"guid":"E-_1if9CYk7m","title":"most minimal firefoxcss reddit at DuckDuckGo","index":324,"dateAdded":1677226508286000,"lastModified":1677226508286000,"id":384,"typeCode":1,"type":"text/x-moz-place","uri":"https://lite.duckduckgo.com/lite/"},{"guid":"LvOSa-r4cBLq","title":"Dudemanguy's Musings","index":325,"dateAdded":1677464899658000,"lastModified":1677464899658000,"id":385,"typeCode":1,"type":"text/x-moz-place","uri":"https://dudemanguy.github.io/blog/"},{"guid":"sD0ZPzZrxES6","title":"Joren->blog","index":326,"dateAdded":1677465000799000,"lastModified":1677465000799000,"id":386,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.joren.ga/"},{"guid":"vyKPWJypwCLE","title":"beekeeb - experimental ergonomic mechanical keyboards and cases","index":327,"dateAdded":1677465100823000,"lastModified":1677465100823000,"id":387,"typeCode":1,"type":"text/x-moz-place","uri":"https://shop.beekeeb.com/"},{"guid":"3ftgmQ8QyqOW","title":"Blub's Blog","index":328,"dateAdded":1677479275750000,"lastModified":1677479275750000,"id":388,"typeCode":1,"type":"text/x-moz-place","uri":"https://blubsblog.bearblog.dev/"},{"guid":"6OkBBVwkzlSN","title":"Free Podcast hosting and Monetizing Platform | Podbean","index":329,"dateAdded":1677640801669000,"lastModified":1677640801669000,"id":389,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.podbean.com/"},{"guid":"fHF7qK-a-DGQ","title":"Cover Your Tracks","index":330,"dateAdded":1677745878306000,"lastModified":1677745878306000,"id":390,"typeCode":1,"type":"text/x-moz-place","uri":"https://coveryourtracks.eff.org/"},{"guid":"PseHFZSEySBp","title":"Browserleaks - Check your browser for privacy leaks","index":331,"dateAdded":1677897013973000,"lastModified":1677897013973000,"id":391,"typeCode":1,"type":"text/x-moz-place","uri":"https://browserleaks.com/"},{"guid":"m7SEh6_aKIBD","title":"https://davidspindler.online/","index":332,"dateAdded":1677975155736000,"lastModified":1677975155736000,"id":392,"typeCode":1,"type":"text/x-moz-place","uri":"https://davidspindler.online/"},{"guid":"FqWEsASOA6rz","title":"Rancho Cucamonga, California - Wikipedia","index":333,"dateAdded":1677981922809000,"lastModified":1677981922809000,"id":393,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Rancho_Cucamonga,_California?useskin=vector"},{"guid":"BdUzObP3SN9y","title":"Round Rock, Texas - Wikipedia","index":334,"dateAdded":1677985181754000,"lastModified":1677985181754000,"id":394,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Round_Rock?useskin=vector"},{"guid":"ZEIrqNssHaDw","title":"Crontab syntax for us humands -- Cron Helper","index":335,"dateAdded":1678132581103000,"lastModified":1678132581103000,"id":395,"typeCode":1,"type":"text/x-moz-place","uri":"https://cron.help/"},{"guid":"Jfk8bSvazECy","title":"Crontab syntax for us humands -- Cron Helper","index":336,"dateAdded":1678132581284000,"lastModified":1678132581284000,"id":396,"typeCode":1,"type":"text/x-moz-place","uri":"https://cron.help/#*/5_*_*_*_*"},{"guid":"bo9TX9GrK8eM","title":"chrome://browser/content/blanktab.html","index":337,"dateAdded":1678134496263000,"lastModified":1678134496263000,"id":397,"typeCode":1,"type":"text/x-moz-place","uri":"chrome://browser/content/blanktab.html"},{"guid":"QO3Le4FNwxkn","title":"WooCommerce - Open Source eCommerce Platform","index":338,"dateAdded":1678409090966000,"lastModified":1678409090966000,"id":398,"typeCode":1,"type":"text/x-moz-place","uri":"https://woocommerce.com/"},{"guid":"320Qaur-liB1","title":"Pluralistic: Daily links from Cory Doctorow – No trackers, no ads. Black type, white background. Privacy policy: we don't collect or retain any data at all ever period.","index":339,"dateAdded":1678580222478000,"lastModified":1678580222478000,"id":399,"typeCode":1,"type":"text/x-moz-place","uri":"https://pluralistic.net/"},{"guid":"c9yuHdoiZEFf","title":"Linux Hardware Database","index":340,"dateAdded":1678603995534000,"lastModified":1678603995534000,"id":400,"typeCode":1,"type":"text/x-moz-place","uri":"https://linux-hardware.org/"},{"guid":"KIc158NGgO8f","title":"GitHub - cwmccabe/pubnixhist: Public Access UNIX (and GNU/Linux) History Documentation Project","index":341,"dateAdded":1678699180285000,"lastModified":1678699180285000,"id":401,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/cwmccabe/pubnixhist"},{"guid":"JTvFg1vlDPIZ","title":"tildeverse","index":342,"dateAdded":1678699184115000,"lastModified":1678699184115000,"id":402,"typeCode":1,"type":"text/x-moz-place","uri":"https://tildeverse.org/"},{"guid":"jw4V7xkcx5mg","title":"~vern","index":343,"dateAdded":1678699186930000,"lastModified":1678699186930000,"id":403,"typeCode":1,"type":"text/x-moz-place","uri":"https://vern.cc/en/"},{"guid":"MXqIhlrxwrd9","title":"browser-bits/firefox-v109-change-order-under-extensions-button.js at main · icpantsparti2/browser-bits · GitHub","index":344,"dateAdded":1679379051788000,"lastModified":1679379051788000,"id":404,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/icpantsparti2/browser-bits/blob/main/javascript/firefox-v109-change-order-under-extensions-button.js"},{"guid":"U0nu2o00nhdj","title":"Wolfgang's Blog","index":345,"dateAdded":1679447021324000,"lastModified":1679447021324000,"id":405,"typeCode":1,"type":"text/x-moz-place","uri":"https://notthebe.ee/"},{"guid":"6NTwvJdjFSYM","title":"Leanpub: Publish Early, Publish Often","index":346,"dateAdded":1679542297677000,"lastModified":1679542297677000,"id":406,"typeCode":1,"type":"text/x-moz-place","uri":"https://leanpub.com/"},{"guid":"LAGFyY31o85_","title":"Array.prototype.forEach() - JavaScript | MDN","index":347,"dateAdded":1679706652175000,"lastModified":1679706652175000,"id":407,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach"},{"guid":"U6YHU0--64vc","title":"Yubico | YubiKey Strong Two Factor Authentication","index":348,"dateAdded":1679726107998000,"lastModified":1679726107998000,"id":408,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.yubico.com/"},{"guid":"yshuEKH8fFzw","title":"emac keybindings firefox at DuckDuckGo","index":349,"dateAdded":1680080943435000,"lastModified":1680080943435000,"id":409,"typeCode":1,"type":"text/x-moz-place","uri":"https://lite.duckduckgo.com/lite/?q=emac+keybindings+firefox"},{"guid":"TdzRQE5e5BP5","title":"NPR : National Public Radio","index":350,"dateAdded":1680119145941000,"lastModified":1680119145941000,"id":410,"typeCode":1,"type":"text/x-moz-place","uri":"https://text.npr.org/"},{"guid":"LbbsoxA2xEU2","title":"node.js - How do I shut down my Express server gracefully when its process is killed? - Stack Overflow","index":351,"dateAdded":1680155942014000,"lastModified":1680155942014000,"id":411,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/43003870/how-do-i-shut-down-my-express-server-gracefully-when-its-process-is-killed"},{"guid":"DqPVDYoxGFT2","title":"GitHub - yt-dlp/yt-dlp: A youtube-dl fork with additional features and fixes","index":352,"dateAdded":1680227705343000,"lastModified":1680227705343000,"id":412,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/yt-dlp/yt-dlp"},{"guid":"04mM1nSuGaL9","title":"Child Routers in Express · GitHub","index":353,"dateAdded":1680232075709000,"lastModified":1680232075709000,"id":413,"typeCode":1,"type":"text/x-moz-place","uri":"https://gist.github.com/zcaceres/f38b208a492e4dcd45f487638eff716c"},{"guid":"4QxD9Frd2JWu","title":"Express JS — Routing with Nested Paths","index":354,"dateAdded":1680232586714000,"lastModified":1680232586714000,"id":414,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/express-js-routing-with-nested-paths-2526bae9d2e6"},{"guid":"cYH8mMWZgtg2","title":"City-Data.com - Stats about all US cities - real estate, relocation info, crime, house prices, cost of living, races, home value estimator, recent sales, income, photos, schools, maps, weather, neighborhoods, and more","index":355,"dateAdded":1680645986397000,"lastModified":1680645986397000,"id":415,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.city-data.com/"},{"guid":"Djs44uWM2NZu","title":"GitHub - scraggo/comparing-javascript-test-runners: Comparing AVA, Jest, Mocha, and mocha-parallel-tests testing frameworks","index":356,"dateAdded":1680675137598000,"lastModified":1680675137598000,"id":416,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/scraggo/comparing-javascript-test-runners/"},{"guid":"Zk5WVTOD0KC2","title":"Sinon.JS - Standalone test fakes, spies, stubs and mocks for JavaScript. Works with any unit testing framework.","index":357,"dateAdded":1680675248719000,"lastModified":1680675248719000,"id":417,"typeCode":1,"type":"text/x-moz-place","uri":"https://sinonjs.org/"},{"guid":"0eYHtsvZq8lY","title":"GitHub - avajs/ava: Node.js test runner that lets you develop with confidence 🚀","index":358,"dateAdded":1680675465544000,"lastModified":1680675465544000,"id":418,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/avajs/ava"},{"guid":"BgSBpMRLAykQ","title":"sometechblog.com","index":359,"dateAdded":1680728951419000,"lastModified":1680728951419000,"id":419,"typeCode":1,"type":"text/x-moz-place","uri":"https://sometechblog.com/"},{"guid":"ld0glsCYbjCB","title":"set up neomutt","index":360,"dateAdded":1680763114027000,"lastModified":1680763142609000,"id":420,"typeCode":1,"type":"text/x-moz-place","uri":"https://seniormars.github.io/posts/neomutt/#initial-mutt-configuration"},{"guid":"2sEK-v1G1Csk","title":"The Twelve-Factor App","index":361,"dateAdded":1680820091876000,"lastModified":1680820091876000,"id":421,"typeCode":1,"type":"text/x-moz-place","uri":"https://12factor.net/"},{"guid":"DPp5iRACRbYN","title":"Docker Docs: How to build, share, and run applications","index":362,"dateAdded":1680820408561000,"lastModified":1680820408561000,"id":422,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.docker.com/"},{"guid":"czHlWx9NFDCQ","title":"Test Driven Development with JavaScript Using ava and Sinon.JS - Markus Oberlehner","index":363,"dateAdded":1680834199833000,"lastModified":1680834199833000,"id":423,"typeCode":1,"type":"text/x-moz-place","uri":"https://markus.oberlehner.net/blog/test-driven-development-with-javascript-using-ava-and-sinonjs/"},{"guid":"7c0OapXlQhZ6","title":"Blog - Markus Oberlehner","index":364,"dateAdded":1680834207307000,"lastModified":1680834207307000,"id":424,"typeCode":1,"type":"text/x-moz-place","uri":"https://markus.oberlehner.net/blog/"},{"guid":"5fQ18yGnNiUz","title":"GitHub - junegunn/fzf.vim: fzf vim","index":365,"dateAdded":1680835850418000,"lastModified":1680835850418000,"id":425,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/junegunn/fzf.vim"},{"guid":"ZirYxhgm0N89","title":"API · TryGhost/node-sqlite3 Wiki · GitHub","index":366,"dateAdded":1680850720854000,"lastModified":1680850720854000,"id":426,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/TryGhost/node-sqlite3/wiki/API"},{"guid":"AcV0HSKdmtCa","title":"Building Efficient Dockerfiles - Node.js - bitJudo","index":367,"dateAdded":1681013834262000,"lastModified":1681013834262000,"id":427,"typeCode":1,"type":"text/x-moz-place","uri":"https://bitjudo.com/blog/2014/03/13/building-efficient-dockerfiles-node-dot-js/"},{"guid":"nuTq2eR7GLGL","title":"npm Blog Archive: Introducing `npm ci` for faster, more reliable builds","index":368,"dateAdded":1681013837122000,"lastModified":1681013837122000,"id":428,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable"},{"guid":"qQh2y_Ud44U2","title":"bitJudo","index":369,"dateAdded":1681014888368000,"lastModified":1681014888368000,"id":429,"typeCode":1,"type":"text/x-moz-place","uri":"https://bitjudo.com/"},{"guid":"qBfdYTJOufgh","title":"Vitest | A blazing fast unit test framework powered by Vite","index":370,"dateAdded":1681090831630000,"lastModified":1681090831630000,"id":430,"typeCode":1,"type":"text/x-moz-place","uri":"https://vitest.dev/"},{"guid":"0MnrBPSD_yvx","title":"Proxmox VE - Virtualization Management Platform","index":371,"dateAdded":1681259080742000,"lastModified":1681259080742000,"id":431,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.proxmox.com/en/proxmox-ve"},{"guid":"Rbs3K19PCoo4","title":"Svelte • Cybernetically enhanced web apps","index":372,"dateAdded":1681270417756000,"lastModified":1681270417756000,"id":432,"typeCode":1,"type":"text/x-moz-place","uri":"https://svelte.dev/"},{"guid":"uNCYx_Z_To4f","title":"Overreacted — A blog by Dan Abramov","index":373,"dateAdded":1681285185719000,"lastModified":1681285185719000,"id":433,"typeCode":1,"type":"text/x-moz-place","uri":"https://overreacted.io/"},{"guid":"XVmQzGwD9C-N","title":"Getting started - Wave UI","index":374,"dateAdded":1681358055159000,"lastModified":1681358055159000,"id":434,"typeCode":1,"type":"text/x-moz-place","uri":"https://antoniandre.github.io/wave-ui/getting-started#getting-started"},{"guid":"D1tHDdqR7jIi","title":"Building A Chat Application Using SvelteJS and SSE","index":375,"dateAdded":1681359137956000,"lastModified":1681359137956000,"id":435,"typeCode":1,"type":"text/x-moz-place","uri":"https://marmelab.com/blog/2020/10/02/build-a-chat-application-using-sveltejs-and-sse.html"},{"guid":"OdFG407oMoSI","title":"Clean Code: Avoid Too Many Arguments In Functions | Matheus Rodrigues","index":376,"dateAdded":1681376694896000,"lastModified":1681376694896000,"id":436,"typeCode":1,"type":"text/x-moz-place","uri":"https://matheus.ro/2018/01/29/clean-code-avoid-many-arguments-functions/"},{"guid":"0pJcaHvHkkOf","title":"Books at mixu.net","index":377,"dateAdded":1681422709558000,"lastModified":1681422709558000,"id":437,"typeCode":1,"type":"text/x-moz-place","uri":"https://book.mixu.net/"},{"guid":"aPJj0xkOHSXz","title":"javascript - Short-polling vs Long-polling for real time web applications? - Stack Overflow","index":378,"dateAdded":1681434724478000,"lastModified":1681434724478000,"id":438,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/4642598/short-polling-vs-long-polling-for-real-time-web-applications"},{"guid":"v3opyC433R7E","title":"Polling vs SSE vs WebSocket— How to choose the right one","index":379,"dateAdded":1681434734033000,"lastModified":1681434734033000,"id":439,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/m/global-identity-2?redirectUrl=https%3A%2F%2Fcodeburst.io%2Fpolling-vs-sse-vs-websocket-how-to-choose-the-right-one-1859e4e13bd9"},{"guid":"l3FDAS9IBQK4","title":"Websockets 101 | Armin Ronacher's Thoughts and Writings","index":380,"dateAdded":1681435523729000,"lastModified":1681435523729000,"id":440,"typeCode":1,"type":"text/x-moz-place","uri":"https://lucumr.pocoo.org/2012/9/24/websockets-101/"},{"guid":"ti2MNyyCvYPP","title":"Blog | Armin Ronacher's Thoughts and Writings","index":381,"dateAdded":1681436863470000,"lastModified":1681436863470000,"id":441,"typeCode":1,"type":"text/x-moz-place","uri":"https://lucumr.pocoo.org/"},{"guid":"PK9rgvk8angs","title":"ws/ws.md at 45e17acea791d865df6b255a55182e9c42e5877a · websockets/ws · GitHub","index":382,"dateAdded":1681445537291000,"lastModified":1681445537291000,"id":442,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/websockets/ws/blob/HEAD/doc/ws.md"},{"guid":"tHAhDPHUqyzS","title":"Peropesis - Linux operating system","index":383,"dateAdded":1681460087500000,"lastModified":1681460087500000,"id":443,"typeCode":1,"type":"text/x-moz-place","uri":"https://peropesis.org/"},{"guid":"Oy6J0vBCUdI_","title":"PrivacyTests.org: open-source tests of web browser privacy","index":384,"dateAdded":1681464730063000,"lastModified":1681464730063000,"id":444,"typeCode":1,"type":"text/x-moz-place","uri":"https://privacytests.org/"},{"guid":"LEwC6OwMQe8z","title":"About The Calyx Institute - Calyx Institute","index":385,"dateAdded":1681708526800000,"lastModified":1681708526800000,"id":445,"typeCode":1,"type":"text/x-moz-place","uri":"https://calyxinstitute.org/about"},{"guid":"P0Bs7H4UHaen","title":"Color Safe - accessible web color combinations","index":386,"dateAdded":1681713704232000,"lastModified":1681713704232000,"id":446,"typeCode":1,"type":"text/x-moz-place","uri":"http://colorsafe.co/"},{"guid":"KA-zghio-eHe","title":"PDX Code Guild","index":387,"dateAdded":1681972172053000,"lastModified":1681972172053000,"id":447,"typeCode":1,"type":"text/x-moz-place","uri":"https://pdxcodeguild.com/"},{"guid":"jJI_xtzqyXRS","title":"CSS Demystified: Start writing CSS with confidence","index":388,"dateAdded":1682033599625000,"lastModified":1682033599625000,"id":448,"typeCode":1,"type":"text/x-moz-place","uri":"https://cssdemystified.com/"},{"guid":"I4VnpdGtMHJO","title":"Code for PDX | As a Code for America Brigade, we’re part of a national network of civic-minded volunteers who contribute their skills toward using the web as a platform for local government and community service.","index":389,"dateAdded":1682055000258000,"lastModified":1682055000258000,"id":449,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.codeforpdx.org/"},{"guid":"0_gJqbYLyQq3","title":"Hashnode - Blogging community for developers, and people in tech","index":390,"dateAdded":1682389862852000,"lastModified":1682389862852000,"id":450,"typeCode":1,"type":"text/x-moz-place","uri":"https://hashnode.com/"},{"guid":"SWtl04oObfkc","title":"Abilene, Texas - Wikipedia","index":391,"dateAdded":1682391198000000,"lastModified":1682391198000000,"id":451,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Abilene,_Texas?useskin=vector"},{"guid":"CRQBc2ktaYfD","title":"Home | Linux Journal","index":392,"dateAdded":1682482322353000,"lastModified":1682482322353000,"id":452,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.linuxjournal.com/"},{"guid":"OhpGNVhav3Gx","title":"Linux Lads | About Us","index":393,"dateAdded":1682489929239000,"lastModified":1682489929239000,"id":453,"typeCode":1,"type":"text/x-moz-place","uri":"https://linuxlads.com/"},{"guid":"58clHUypHygQ","title":"GitHub - 0xERR0R/blocky: Fast and lightweight DNS proxy as ad-blocker for local network with many features","index":394,"dateAdded":1682654831566000,"lastModified":1682654831566000,"id":454,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/0xERR0R/blocky"},{"guid":"RjzoIUl0SLV4","title":"Home - Ahmad Shadeed","index":395,"dateAdded":1682898404012000,"lastModified":1682898404012000,"id":455,"typeCode":1,"type":"text/x-moz-place","uri":"https://ishadeed.com/"},{"guid":"tWiw35SJAtrw","title":"Rebuilding a featured news section with modern CSS: Vox news - Ahmad Shadeed","index":396,"dateAdded":1682898724103000,"lastModified":1682898724103000,"id":456,"typeCode":1,"type":"text/x-moz-place","uri":"https://ishadeed.com/article/rebuild-featured-news-modern-css/"},{"guid":"buGFpK-r5mkn","title":"React","index":397,"dateAdded":1682902854999000,"lastModified":1682902854999000,"id":457,"typeCode":1,"type":"text/x-moz-place","uri":"https://react.dev/"},{"guid":"T3JOhXUAFb5C","title":"Gzipping @font-face with Nginx – BigDino Blog","index":398,"dateAdded":1683531097758000,"lastModified":1683531097758000,"id":458,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.bigdinosaur.org/gzipping-font-face-with-nginx/"},{"guid":"dlrvw_2900o8","title":"BigDino Blog – Tales of hacking and stomping on things, by Lee Hutchinson","index":399,"dateAdded":1683531102778000,"lastModified":1683531102778000,"id":459,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.bigdinosaur.org/"},{"guid":"KyuAYPxwqI_L","title":"BSteele.com Photos","index":400,"dateAdded":1683596621992000,"lastModified":1683596621992000,"id":460,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"http://www.bsteele.com/"},{"guid":"MKt57bnttZg8","title":"Dart documentation | Dart","index":401,"dateAdded":1683596651202000,"lastModified":1683596651202000,"id":461,"typeCode":1,"type":"text/x-moz-place","uri":"https://dart.dev/guides"},{"guid":"StowC50rR1Mg","title":"How to Scale Images and Background Images on Hover","index":402,"dateAdded":1683619803365000,"lastModified":1683619803365000,"id":462,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3docs.com/snippets/css/how-to-zoom-images-and-background-images-on-hover.html"},{"guid":"ajtn8vr341Qg","title":"Schema.org - Schema.org","index":403,"dateAdded":1683676924180000,"lastModified":1683676924180000,"id":463,"typeCode":1,"type":"text/x-moz-place","uri":"https://schema.org/"},{"guid":"Y7A3cmQs8Ruz","title":"HTML Emoji Reference","index":404,"dateAdded":1683806500024000,"lastModified":1683806500024000,"id":464,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3schools.com/charsets/ref_emoji.asp"},{"guid":"uW46yGyIRrYz","title":"WAI-ARIA Roles - Accessibility | MDN","index":405,"dateAdded":1683887095178000,"lastModified":1683887095178000,"id":465,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles"},{"guid":"SC7Tkxa4sdgM","title":"Kill the Newsletter!","index":406,"dateAdded":1684035848608000,"lastModified":1684035848608000,"id":466,"typeCode":1,"type":"text/x-moz-place","uri":"https://kill-the-newsletter.com/"},{"guid":"jtTVi9Q3wWMX","title":"RSS Feed Generator, Create RSS feeds from URL","index":407,"dateAdded":1684035850348000,"lastModified":1684035850348000,"id":467,"typeCode":1,"type":"text/x-moz-place","uri":"https://rss.app/"},{"guid":"27RXTb6YQKv4","title":"Justin Garrison's Homepage - Justin Garrison","index":408,"dateAdded":1684228041843000,"lastModified":1684228041843000,"id":468,"typeCode":1,"type":"text/x-moz-place","uri":"https://justingarrison.com/"},{"guid":"FitOY0QcX_ID","title":"Use JSDoc: Index","index":409,"dateAdded":1684230638953000,"lastModified":1684230638953000,"id":469,"typeCode":1,"type":"text/x-moz-place","uri":"https://jsdoc.app/"},{"guid":"CeiTgNByUFjB","title":"TypeScript: JavaScript With Syntax For Types.","index":410,"dateAdded":1684230718139000,"lastModified":1684230718139000,"id":470,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.typescriptlang.org/"},{"guid":"jMWRkGsDGVu5","title":"color-scheme | CSS-Tricks - CSS-Tricks","index":411,"dateAdded":1684232000615000,"lastModified":1684232000615000,"id":471,"typeCode":1,"type":"text/x-moz-place","uri":"https://css-tricks.com/almanac/properties/c/color-scheme/"},{"guid":"Qz93CJFWm7LX","title":"Keith J. Grant","index":412,"dateAdded":1684232654298000,"lastModified":1684232654298000,"id":472,"typeCode":1,"type":"text/x-moz-place","uri":"https://keithjgrant.com/"},{"guid":"MHAW80eyfshS","title":"Home Assistant","index":413,"dateAdded":1684234910085000,"lastModified":1684234910085000,"id":473,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.home-assistant.io/"},{"guid":"OpjWbkCf3WDa","title":"Icon Sets • Iconify","index":414,"dateAdded":1684310728782000,"lastModified":1684310728782000,"id":474,"typeCode":1,"type":"text/x-moz-place","uri":"https://icon-sets.iconify.design/"},{"guid":"rFPxmZEIhXnv","title":"CSS 'position: sticky' not working? Try 'overflow: clip', not 'overflow: hidden'","index":415,"dateAdded":1684318004856000,"lastModified":1684318004856000,"id":475,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.terluinwebdesign.nl/en/css/position-sticky-not-working-try-overflow-clip-not-overflow-hidden/"},{"guid":"ELsfRzq8ZoFI","title":"User email/account confirmation - opinions on best practices? : webdev","index":416,"dateAdded":1684382673161000,"lastModified":1684382673161000,"id":476,"typeCode":1,"type":"text/x-moz-place","uri":"https://teddit.pussthecat.org/r/webdev/comments/u5nb70/user_emailaccount_confirmation_opinions_on_best/"},{"guid":"sP4ns2kVAB6Q","title":"Full stack open","index":417,"dateAdded":1684392533310000,"lastModified":1684392533310000,"id":477,"typeCode":1,"type":"text/x-moz-place","uri":"https://fullstackopen.com/en/"},{"guid":"DmiRpYChEncZ","title":"Catbox","index":418,"dateAdded":1684398750784000,"lastModified":1684398750784000,"id":478,"typeCode":1,"type":"text/x-moz-place","uri":"https://catbox.moe/"},{"guid":"-y76mjzKWuyO","title":"Litterbox","index":419,"dateAdded":1684398756315000,"lastModified":1684398756315000,"id":479,"typeCode":1,"type":"text/x-moz-place","uri":"https://litterbox.catbox.moe/"},{"guid":"dHz8hb8pMZYV","title":"Why Japanese Websites Look So Different","index":420,"dateAdded":1684458237012000,"lastModified":1684458237012000,"id":480,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/@mirijam.missbichler/why-japanese-websites-look-so-different-2c7273e8be1e"},{"guid":"Wnr3aDkxlch5","title":"Brevo (formerly Sendinblue) | CRM Suite","index":421,"dateAdded":1684465883984000,"lastModified":1684465883984000,"id":481,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.brevo.com/"},{"guid":"8ZcVf19aVi2D","title":"Test Cookie Login","index":422,"dateAdded":1684819592179000,"lastModified":1684819592179000,"id":482,"typeCode":1,"type":"text/x-moz-place","uri":"http://localhost:8000/login"},{"guid":"kJr7Di2ErbQh","title":"NoScript Settings","index":423,"dateAdded":1685083284310000,"lastModified":1685083284310000,"id":483,"typeCode":1,"type":"text/x-moz-place","uri":"moz-extension://8efcc8dc-203c-4b0f-8166-2f43e7baa767/ui/options.html"},{"guid":"TkwBRKlpmAxV","title":"Bunny Fonts | FontSpace","index":424,"dateAdded":1685525031723000,"lastModified":1685525031723000,"id":484,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fontspace.com/category/bunny"},{"guid":"M6icijctKIXx","title":"Free eBooks | Project Gutenberg","index":425,"dateAdded":1685525046681000,"lastModified":1685525046681000,"id":485,"typeCode":1,"type":"text/x-moz-place","uri":"https://gutenberg.org/"},{"guid":"qMB9TFt7opHg","title":"GitHub - VonHeikemen/lsp-zero.nvim: A starting point to setup some lsp related features in neovim.","index":426,"dateAdded":1685618335845000,"lastModified":1685618335845000,"id":486,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/VonHeikemen/lsp-zero.nvim"},{"guid":"lZX4zxfrd107","title":"request.state is empty when server rendering · Issue #2970 · hapijs/hapi · GitHub","index":427,"dateAdded":1685684913208000,"lastModified":1685684913208000,"id":487,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/hapijs/hapi/issues/2970"},{"guid":"qYqRKu0vYO7P","title":"NGINX remove .html extension - Stack Overflow","index":428,"dateAdded":1685701208952000,"lastModified":1685701208952000,"id":488,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/38228393/nginx-remove-html-extension"},{"guid":"f1ieowhuiy71","title":"How to Create Custom 404 Error Page in NGINX","index":429,"dateAdded":1685701211340000,"lastModified":1685701211340000,"id":489,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.tecmint.com/create-custom-nginx-error-page/"},{"guid":"IFhGlPI4fFyY","title":"Converting and Optimizing Images From the Command Line | CSS-Tricks - CSS-Tricks","index":430,"dateAdded":1685703084713000,"lastModified":1685703084713000,"id":490,"typeCode":1,"type":"text/x-moz-place","uri":"https://css-tricks.com/converting-and-optimizing-images-from-the-command-line/"},{"guid":"xNmjg2IHfIBg","title":"Compression and Decompression | NGINX Documentation","index":431,"dateAdded":1685704671042000,"lastModified":1685704671042000,"id":491,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.nginx.com/nginx/admin-guide/web-server/compression/"},{"guid":"uR-OPGFAPy-o","title":"How To Improve Website Performance Using gzip and Nginx on Ubuntu 20.04 | DigitalOcean","index":432,"dateAdded":1685704896993000,"lastModified":1685704896993000,"id":492,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.digitalocean.com/community/tutorials/how-to-improve-website-performance-using-gzip-and-nginx-on-ubuntu-20-04"},{"guid":"nuI1elOvHPa1","title":"Transpilers vs Compilers⚙ - DEV Community","index":433,"dateAdded":1685764001108000,"lastModified":1685764001108000,"id":493,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/suryaraj1/transpilers-vs-compilers-3ohj"},{"guid":"zw440l1jAX5W","title":"How HEY Works | HEY","index":434,"dateAdded":1685769036813000,"lastModified":1685769036813000,"id":494,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.hey.com/how-it-works/"},{"guid":"004kRTTgE19v","title":"FastAPI","index":435,"dateAdded":1685775467974000,"lastModified":1685775467974000,"id":495,"typeCode":1,"type":"text/x-moz-place","uri":"https://fastapi.tiangolo.com/"},{"guid":"4zcW86sEMCJh","title":"Typer","index":436,"dateAdded":1685775481150000,"lastModified":1685775481150000,"id":496,"typeCode":1,"type":"text/x-moz-place","uri":"https://typer.tiangolo.com/"},{"guid":"Qk_kU2kEbSJ1","title":"how to allow known web crawlers and block spammers and harmful robots from scanning asp.net website - Stack Overflow","index":437,"dateAdded":1685786853515000,"lastModified":1685786853515000,"id":497,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/10793906/how-to-allow-known-web-crawlers-and-block-spammers-and-harmful-robots-from-scann"},{"guid":"qth52BGu_4dQ","title":"How to Secure Nginx Against Malicious Bots - Plesk","index":438,"dateAdded":1685786935782000,"lastModified":1685786935782000,"id":498,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.plesk.com/blog/guides/secure-nginx-against-bots/"},{"guid":"ri9kZkw31F1j","title":"How to Block Search Engines Using robots.txt disallow Rule","index":439,"dateAdded":1685788692610000,"lastModified":1685788692610000,"id":499,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.hostinger.com/tutorials/website/how-to-block-search-engines-using-robotstxt"},{"guid":"7Sewb07R9kjL","title":"Block Search Indexing with noindex | Google Search Central | Documentation | Google for Developers","index":440,"dateAdded":1685788694986000,"lastModified":1685788694986000,"id":500,"typeCode":1,"type":"text/x-moz-place","uri":"https://developers.google.com/search/docs/crawling-indexing/block-indexing"},{"guid":"L6RVgsF0H4B0","title":"Robots.txt Introduction and Guide | Google Search Central | Documentation | Google for Developers","index":441,"dateAdded":1685788696779000,"lastModified":1685788696779000,"id":501,"typeCode":1,"type":"text/x-moz-place","uri":"https://developers.google.com/search/docs/crawling-indexing/robots/intro"},{"guid":"5mm6Vj5zp0_l","title":"TorrentFreak - News","index":442,"dateAdded":1685843958781000,"lastModified":1685843958781000,"id":502,"typeCode":1,"type":"text/x-moz-place","uri":"https://torrentfreak.com/"},{"guid":"t16JwGZeg6OP","title":"caching - Redis cache vs using memory directly - Stack Overflow","index":443,"dateAdded":1685850052438000,"lastModified":1685850052438000,"id":505,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/19477821/redis-cache-vs-using-memory-directly#19489635"},{"guid":"A7Doond-aNUV","title":"Kysely | Kysely","index":444,"dateAdded":1685928030091000,"lastModified":1685928030091000,"id":506,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.kysely.dev/"},{"guid":"Back4AYHBmPr","title":"Bye-bye useState & useEffect: Revolutionizing React Development!","index":445,"dateAdded":1686121707889000,"lastModified":1686121707889000,"id":507,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/@emmanuelodii80/bye-bye-usestate-useeffect-revolutionizing-react-development-d91f95891adb?source=email-e2e3c3bdaf7d-1686043329251-digest.reader--d91f95891adb----0-58------------------d0d59453_5414_423f_8867_1def2536fc6c-1"},{"guid":"pB69yI0Rpycw","title":"HTML ASCII Reference","index":446,"dateAdded":1687066387038000,"lastModified":1687066387038000,"id":508,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.w3schools.com/charsets/ref_html_ascii.asp"},{"guid":"mVXRATPpqDKS","title":"Articles & Experiments by Roman Komarov","index":447,"dateAdded":1687121050138000,"lastModified":1687121050138000,"id":509,"typeCode":1,"type":"text/x-moz-place","uri":"https://kizu.dev/"},{"guid":"LetEQlHndjD8","title":"configuration - Nginx 403 error: directory index of [folder] is forbidden - Stack Overflow","index":448,"dateAdded":1687159920342000,"lastModified":1687159920342000,"id":510,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/19285355/nginx-403-error-directory-index-of-folder-is-forbidden"},{"guid":"kVaLPDMEFS9C","title":"NGINX Documentation","index":449,"dateAdded":1687160573000000,"lastModified":1687160573000000,"id":511,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.nginx.com/"},{"guid":"MY6Ns_qWoNbi","title":"Pitfalls and Common Mistakes | NGINX","index":450,"dateAdded":1687163928262000,"lastModified":1687163928262000,"id":512,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/"},{"guid":"bLKrU6X1UJ5L","title":"Meta Tag Generator | HTML code optimal for social media, SEO, mobile","index":451,"dateAdded":1687249003948000,"lastModified":1687249003948000,"id":513,"typeCode":1,"type":"text/x-moz-place","uri":"https://lewdev.github.io/apps/meta-tag-gen/"},{"guid":"yyYFr_ZTm7m8","title":"How to Run NGINX Inside Docker (for Easy Auto-Scaling)","index":452,"dateAdded":1687253291708000,"lastModified":1687253291708000,"id":514,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.howtogeek.com/devops/how-to-run-nginx-inside-docker-for-easy-auto-scaling/"},{"guid":"f_n0al0YdoZH","title":"GitHub - staticfloat/docker-nginx-certbot-old: Create and renew website certificates using the Letsencrypt free certificate authority.","index":453,"dateAdded":1687253424304000,"lastModified":1687253424304000,"id":515,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/staticfloat/docker-nginx-certbot-old"},{"guid":"lBe4xxxI1zv9","title":"Configuring Logging | NGINX Documentation","index":454,"dateAdded":1687256708936000,"lastModified":1687256708936000,"id":516,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.nginx.com/nginx/admin-guide/monitoring/logging/"},{"guid":"IJ3FSRPYXPwc","title":"NGINX Content Caching | NGINX Documentation","index":455,"dateAdded":1687257097770000,"lastModified":1687257097770000,"id":517,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/"},{"guid":"uSEKx8FwMx8q","title":"Agenty Browser API | Agenty","index":456,"dateAdded":1687320659898000,"lastModified":1687320659898000,"id":518,"typeCode":1,"type":"text/x-moz-place","uri":"https://agenty.com/docs/browser"},{"guid":"B9GdK5K4t_s-","title":"Amazon.com: Camco 20.5-Inches x 24-Inches Dishwasher Drain Pan, Black - Protects Your Floor, Cabinets and Walls from Leaking Dishwashers - Directs Water to The Front for Easy Leak Identification (20602) : Appliances","index":457,"dateAdded":1687329035193000,"lastModified":1687329035193000,"id":519,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.amazon.com/Camco-20-5-Inches-24-Inches-Dishwasher-Drain/dp/B09BBMN93G/ref=sr_1_1?keywords=camco+dishwasher+drain"},{"guid":"-SnWC2rCzmzo","title":"brianhayes.dev","index":458,"dateAdded":1687433770873000,"lastModified":1687433770873000,"id":520,"typeCode":1,"type":"text/x-moz-place","uri":"https://brianhayes.dev/blog/musings_on_vim"},{"guid":"eY8SSYcgFoCB","title":"WebPageTest - Website Performance and Optimization Test","index":459,"dateAdded":1687717194417000,"lastModified":1687717194417000,"id":521,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.webpagetest.org/"},{"guid":"RbQVAZW_gYhe","title":"GTmetrix | Website Performance Testing and Monitoring","index":460,"dateAdded":1687717205909000,"lastModified":1687717205909000,"id":522,"typeCode":1,"type":"text/x-moz-place","uri":"https://gtmetrix.com/"},{"guid":"GDPjehAtRlNT","title":"Optimize CSS delivery for faster page rendering","index":461,"dateAdded":1687718078293000,"lastModified":1687718078293000,"id":523,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.giftofspeed.com/optimize-css-delivery/"},{"guid":"NtAFyaxQEFe3","title":"Defer loading CSS scripts to render web pages quicker","index":462,"dateAdded":1687718178189000,"lastModified":1687718178189000,"id":524,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.giftofspeed.com/defer-loading-css/"},{"guid":"WLQxj1rHMxCw","title":"The Opt Out Project","index":463,"dateAdded":1687772258088000,"lastModified":1687772258088000,"id":525,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.optoutproject.net/"},{"guid":"fl5xVdRZMiIL","title":"Ploum.net","index":464,"dateAdded":1687772624193000,"lastModified":1687772624193000,"id":526,"typeCode":1,"type":"text/x-moz-place","uri":"https://ploum.net/"},{"guid":"DHxApikcNAlX","title":"Merdification of things","index":465,"dateAdded":1687773323004000,"lastModified":1687773323004000,"id":527,"typeCode":1,"type":"text/x-moz-place","uri":"https://ploum.net/2023-06-15-merdification.html"},{"guid":"CBFyzm3daKru","title":"User Generated Content and the Fediverse: A Legal Primer | Electronic Frontier Foundation","index":466,"dateAdded":1687775505414000,"lastModified":1687775505414000,"id":528,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.eff.org/deeplinks/2022/12/user-generated-content-and-fediverse-legal-primer"},{"guid":"88zDpqzoLy4t","title":"BookWyrm: Social Reading and Reviewing","index":467,"dateAdded":1687776036855000,"lastModified":1687776036855000,"id":529,"typeCode":1,"type":"text/x-moz-place","uri":"https://joinbookwyrm.com/"},{"guid":"Xn3FjIJ5XdPk","title":"Electronic Frontier Foundation | Defending your rights in the digital world","index":468,"dateAdded":1687777033004000,"lastModified":1687777033004000,"id":530,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.eff.org/"},{"guid":"twjiA0fgXTtG","title":"Frontpage -- Terms of Service; Didn't Read","index":469,"dateAdded":1687777701571000,"lastModified":1687777701571000,"id":531,"typeCode":1,"type":"text/x-moz-place","uri":"https://tosdr.org/"},{"guid":"s87VtYvxjUfN","title":"What Reddit Got Wrong | Electronic Frontier Foundation","index":470,"dateAdded":1687778571865000,"lastModified":1687778571865000,"id":532,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.eff.org/deeplinks/2023/06/what-reddit-got-wrong"},{"guid":"DWDyP43JnKBs","title":"brianhayes.dev","index":471,"dateAdded":1688113479635000,"lastModified":1688113479635000,"id":533,"typeCode":1,"type":"text/x-moz-place","uri":"https://brianhayes.dev/blog/why_use_linux"},{"guid":"GlI64y7W5RGs","title":"How (and should?) we stop the infinite scroll","index":472,"dateAdded":1688118598374000,"lastModified":1688118598374000,"id":534,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/m/global-identity-2?redirectUrl=https%3A%2F%2Fuxdesign.cc%2Fhow-and-should-we-stop-the-infinite-scroll-66141fcb0768%3Fsource%3Dmktgemail-e2e3c3bdaf7d--we230628"},{"guid":"nNu-GqMr5UGP","title":"Amnesty International","index":473,"dateAdded":1688172846094000,"lastModified":1688172846094000,"id":535,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.amnesty.org/en/"},{"guid":"PDMwSuokUUGk","title":"Why Processes In Docker Containers Shouldn’t Run as Root","index":474,"dateAdded":1688453978679000,"lastModified":1688453978679000,"id":536,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.howtogeek.com/devops/why-processes-in-docker-containers-shouldnt-run-as-root/"},{"guid":"nvg2Ew4N0or5","title":"Adding and Leveraging a CDN on Your Website | CSS-Tricks - CSS-Tricks","index":475,"dateAdded":1688457715580000,"lastModified":1688457715580000,"id":537,"typeCode":1,"type":"text/x-moz-place","uri":"https://css-tricks.com/adding-a-cdn-to-your-website/"},{"guid":"Sq5a4WwgvHqk","title":"GitHub - auth0/node-jsonwebtoken: JsonWebToken implementation for node.js http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html","index":476,"dateAdded":1688525208606000,"lastModified":1688525208606000,"id":538,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/auth0/node-jsonwebtoken#readme"},{"guid":"AsNG8ycv67Mi","title":"hapi-auth-jwt2 - npm","index":477,"dateAdded":1688525214258000,"lastModified":1688525214258000,"id":539,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.npmjs.com/package/hapi-auth-jwt2"},{"guid":"bzVWj34Ayv_d","title":"GitHub - dwyl/hapi-auth-jwt2: :lock: Secure Hapi.js authentication plugin using JSON Web Tokens (JWT) in Headers, URL or Cookies","index":478,"dateAdded":1688525217155000,"lastModified":1688525217155000,"id":540,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/dwyl/hapi-auth-jwt2"},{"guid":"xdx--T9rUlYD","title":"keyframes.dev","index":479,"dateAdded":1688697784977000,"lastModified":1688697784977000,"id":541,"typeCode":1,"type":"text/x-moz-place","uri":"https://keyframes.dev/index.html"},{"guid":"AaNmGJ6raQCl","title":"sub.rehab · Find your next diving spot","index":480,"dateAdded":1688697827773000,"lastModified":1688697827773000,"id":542,"typeCode":1,"type":"text/x-moz-place","uri":"https://sub.rehab/"},{"guid":"aGx__rgAxknJ","title":"🖤 ANTI-META FEDI PACT 🖤","index":481,"dateAdded":1688697848196000,"lastModified":1688697848196000,"id":543,"typeCode":1,"type":"text/x-moz-place","uri":"https://fedipact.online/"},{"guid":"CCN2HeG8auOo","title":"Markup from hell - HTMHell","index":482,"dateAdded":1688697920803000,"lastModified":1688697920803000,"id":544,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.htmhell.dev/"},{"guid":"YfC5XmLlyuBU","title":"Susie Lu - home","index":483,"dateAdded":1688698073748000,"lastModified":1688698073748000,"id":545,"typeCode":1,"type":"text/x-moz-place","uri":"https://susielu.com/"},{"guid":"TowiBuknx1sI","title":"OsmAnd(Navigation) Voice Directions Set up – BoringPhone","index":484,"dateAdded":1689498431791000,"lastModified":1689498431791000,"id":546,"typeCode":1,"type":"text/x-moz-place","uri":"https://boringphone.com/knowledge-base/osmandnavigation-voice-directions-set-up/"},{"guid":"oEzMQ1B2g7gE","title":"Invidious Instances - Invidious Documentation","index":485,"dateAdded":1689643785469000,"lastModified":1689643785469000,"id":547,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.invidious.io/instances/"},{"guid":"F6fuzF16QvOh","title":"Find Jobs in Tech | Dice.com","index":486,"dateAdded":1689730037185000,"lastModified":1689730037185000,"id":548,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.dice.com/"},{"guid":"TmlcUFROxatF","title":"B-Tree Visualization","index":487,"dateAdded":1689825386137000,"lastModified":1689825386137000,"id":549,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.cs.usfca.edu/~galles/visualization/BTree.html"},{"guid":"2ou9hIRg__Cw","title":"Google Font Pairing Inspiration for 2023","index":488,"dateAdded":1689832717790000,"lastModified":1689832717790000,"id":550,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fontpair.co/all"},{"guid":"bcblBtwu_JuX","title":"Realtime Colors","index":489,"dateAdded":1689832769604000,"lastModified":1689832769604000,"id":551,"typeCode":1,"type":"text/x-moz-place","uri":"https://realtimecolors.com/?colors=050505-fafafa-c1b2d2-e6dfec-7e5ea1"},{"guid":"4f3B9Tg9yc26","title":"Fluid type scale calculator | Utopia","index":490,"dateAdded":1689832836317000,"lastModified":1689832836317000,"id":552,"typeCode":1,"type":"text/x-moz-place","uri":"https://utopia.fyi/type/calculator?c=320,18,1.2,1240,20,1.25,5,2,&s=0.75%7C0.5%7C0.25,1.5%7C2%7C3%7C4%7C6,s-l&g=s,l,xl,12"},{"guid":"RBjZ-gkNjfTc","title":"Internet country domains list / Country Internet codes / TLDs - World Standards","index":491,"dateAdded":1690014797051000,"lastModified":1690014797051000,"id":553,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.worldstandards.eu/other/tlds/"},{"guid":"trvoJL_iowQr","title":"links - cadence's website","index":492,"dateAdded":1690103690160000,"lastModified":1690103690160000,"id":554,"typeCode":1,"type":"text/x-moz-place","uri":"https://cadence.moe/links"},{"guid":"-2bgzpCKSQKB","title":"cadence's website","index":493,"dateAdded":1690103696005000,"lastModified":1690103696005000,"id":555,"typeCode":1,"type":"text/x-moz-place","uri":"https://cadence.moe/"},{"guid":"qEIR5Jk2RzBR","title":"Why you shouldn't trust Discord - cadence's weblog (personal blog)","index":494,"dateAdded":1690105105428000,"lastModified":1690105105428000,"id":556,"typeCode":1,"type":"text/x-moz-place","uri":"https://cadence.moe/blog/2020-06-06-why-you-shouldnt-trust-discord"},{"guid":"5k5A2xkb5DWR","title":"GitHub - rchipka/node-osmosis: Web scraper for NodeJS","index":495,"dateAdded":1690176170341000,"lastModified":1690176170341000,"id":557,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/rchipka/node-osmosis"},{"guid":"qJUyLXmnea6I","title":"crxextractor.com","index":496,"dateAdded":1690277287311000,"lastModified":1690277302061000,"id":558,"typeCode":1,"type":"text/x-moz-place","uri":"https://crxextractor.com/"},{"guid":"4DgVvHC1qbWD","title":"Netflix Resources | Find Information, Resources, and Support | Home","index":497,"dateAdded":1690360928164000,"lastModified":1690360928164000,"id":559,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.wannatalkaboutit.com/"},{"guid":"HL7y3QDNKGj8","title":"Boundaries","index":498,"dateAdded":1690599388791000,"lastModified":1690599388791000,"id":560,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.destroyallsoftware.com/talks/boundaries"},{"guid":"5j5mLIjNvpVk","title":"Destroy All Software","index":499,"dateAdded":1690599412402000,"lastModified":1690599412402000,"id":561,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.destroyallsoftware.com/screencasts"},{"guid":"9zlq-KVkqz-0","title":"dBooks - Free download open books","index":500,"dateAdded":1691105603860000,"lastModified":1691105603860000,"id":562,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.dbooks.org/"},{"guid":"Zlq842I3V_h_","title":"Project Zomboid Map Project","index":501,"dateAdded":1691217946863000,"lastModified":1691217946863000,"id":563,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"https://map.projectzomboid.com/#11086x9137x9"},{"guid":"wKpKZ3J_M_Rd","title":"Main Page - PZwiki","index":502,"dateAdded":1691217962833000,"lastModified":1691217962833000,"id":564,"typeCode":1,"type":"text/x-moz-place","uri":"https://pzwiki.net/wiki/Special:MyLanguage/Main_Page"},{"guid":"ChM9v6OdT2z1","title":"Forums - The Indie Stone Forums","index":503,"dateAdded":1691218008673000,"lastModified":1691218008673000,"id":565,"typeCode":1,"type":"text/x-moz-place","uri":"https://theindiestone.com/forums/"},{"guid":"_fudVs8ZSkD9","title":"iCodeThis","index":504,"dateAdded":1691220364125000,"lastModified":1691220364125000,"id":566,"typeCode":1,"type":"text/x-moz-place","uri":"https://icodethis.com/"},{"guid":"TJrsHpq1aMk9","title":"Frontend Mentor | Front-end coding challenges using a real-life workflow","index":505,"dateAdded":1691220454266000,"lastModified":1691220454266000,"id":567,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.frontendmentor.io/"},{"guid":"u7dkQVbgwO5k","title":"Frontend Practice | Become a better frontend developer.","index":506,"dateAdded":1691220501480000,"lastModified":1691220501480000,"id":568,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.frontendpractice.com/"},{"guid":"4sU2L5014DKn","title":"CSS Diner - Where we feast on CSS Selectors!","index":507,"dateAdded":1691220696760000,"lastModified":1691220696760000,"id":569,"typeCode":1,"type":"text/x-moz-place","uri":"https://flukeout.github.io/"},{"guid":"SSOh5BkLvdGb","title":"Flexbox Froggy - A game for learning CSS flexbox","index":508,"dateAdded":1691220731312000,"lastModified":1691220731312000,"id":570,"typeCode":1,"type":"text/x-moz-place","uri":"https://flexboxfroggy.com/"},{"guid":"FKHteMomlABG","title":"Grid Garden - A game for learning CSS grid","index":509,"dateAdded":1691220902871000,"lastModified":1691220902871000,"id":571,"typeCode":1,"type":"text/x-moz-place","uri":"https://cssgridgarden.com/"},{"guid":"EwDnV2tCX3n6","title":"Learn CSS Grid Mastery Game","index":510,"dateAdded":1691220921503000,"lastModified":1691220921503000,"id":572,"typeCode":1,"type":"text/x-moz-place","uri":"https://gridcritters.com/"},{"guid":"xZT8k_O2kPno","title":"GitHub - alacritty/alacritty-theme: Collection of Alacritty color schemes","index":511,"dateAdded":1691831655852000,"lastModified":1691831655852000,"id":573,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/alacritty/alacritty-theme"},{"guid":"xhN822jV4GY-","title":"It's Going Down | In Search of New Forms of Life","index":512,"dateAdded":1692008632306000,"lastModified":1692008632306000,"id":574,"typeCode":1,"type":"text/x-moz-place","uri":"https://itsgoingdown.org/"},{"guid":"26hVKLrF1XPn","title":"DNS Resolvers - Privacy Guides","index":513,"dateAdded":1692051887400000,"lastModified":1692051923130000,"id":575,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.privacyguides.org/en/dns/"},{"guid":"9EprLsKFuHeA","title":"📜 ➜ Megathread","index":514,"dateAdded":1692052449111000,"lastModified":1692052449111000,"id":576,"typeCode":1,"type":"text/x-moz-place","uri":"https://rentry.co/megathread"},{"guid":"Il-nuBHnLZY8","title":"The Movie Database (TMDB)","index":515,"dateAdded":1692052490231000,"lastModified":1692052490231000,"id":577,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.themoviedb.org/"},{"guid":"Tvm_3yYyVgDB","title":"Practical Accessibility — Practical Accessibility for web designers and developers","index":516,"dateAdded":1692052558054000,"lastModified":1692052558054000,"id":578,"typeCode":1,"type":"text/x-moz-place","uri":"https://practical-accessibility.today/"},{"guid":"wtXwFf90ae0L","title":"wizard zines","index":517,"dateAdded":1692052625053000,"lastModified":1692052625053000,"id":579,"typeCode":1,"type":"text/x-moz-place","uri":"https://wizardzines.com/"},{"guid":"b8ckVvyjDvw8","title":"Resgen | Custom resumes for every job.","index":518,"dateAdded":1692052752604000,"lastModified":1692052752604000,"id":580,"typeCode":1,"type":"text/x-moz-place","uri":"https://resgen.app/"},{"guid":"lX5W0MuAKcm2","title":"Rose City Antifa","index":519,"dateAdded":1692085570434000,"lastModified":1692085570434000,"id":581,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.rosecityantifa.org/"},{"guid":"6Za0A0nRiMBQ","title":"GetComics – GetComics is an awesome place to download DC, Marvel, Image, Dark Horse, Dynamite, IDW, Oni, Valiant, Zenescope and many more Comics totally for FREE.","index":520,"dateAdded":1692264897598000,"lastModified":1692264897598000,"id":582,"typeCode":1,"type":"text/x-moz-place","uri":"https://getcomics.org/"},{"guid":"4wXLGehJd7o4","title":"How to publish your apps on F-Droid? - DEV Community","index":521,"dateAdded":1692353949504000,"lastModified":1692353949504000,"id":583,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/sanandmv7/how-to-publish-your-apps-on-f-droid-2epn"},{"guid":"o__IoEah4K7N","title":"Coding Interview & Technical Assessment Platform - CoderPad","index":522,"dateAdded":1692672036612000,"lastModified":1692672036612000,"id":584,"typeCode":1,"type":"text/x-moz-place","uri":"https://coderpad.io/"},{"guid":"TUbvr3Tea-Ks","title":"Coach Matt - Expert 1:1 interview prep for front-end engineers","index":523,"dateAdded":1692672965386000,"lastModified":1692672965386000,"id":585,"typeCode":1,"type":"text/x-moz-place","uri":"https://coachmatt.io/"},{"guid":"b6_LTeFQtM-3","title":"Practice Mock Interviews & Coding Problems - Land Top Jobs | Pramp","index":524,"dateAdded":1692693689154000,"lastModified":1692693689154000,"id":586,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.pramp.com/"},{"guid":"aFjVPTjE98iM","title":"The data brokers quietly buying and selling your personal information","index":525,"dateAdded":1692853490941000,"lastModified":1692853490941000,"id":587,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.fastcompany.com/90310803/here-are-the-data-brokers-quietly-buying-and-selling-your-personal-information"},{"guid":"bWeSMX1WZ-1W","title":"The 10 Largest Advertising Agencies In The World - Zippia","index":526,"dateAdded":1692854196336000,"lastModified":1692854196336000,"id":588,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.zippia.com/advice/largest-advertising-agencies/"},{"guid":"yG3d5RhlSP5q","title":"Resend","index":527,"dateAdded":1693008880373000,"lastModified":1693008880373000,"id":589,"typeCode":1,"type":"text/x-moz-place","uri":"https://resend.com/"},{"guid":"pa-dRPyHHpSj","title":"Fast and low overhead web framework, for Node.js | Fastify","index":528,"dateAdded":1693193733377000,"lastModified":1693193733377000,"id":590,"typeCode":1,"type":"text/x-moz-place","uri":"https://fastify.dev/"},{"guid":"flyjfZYn8HtZ","title":"Introduction | Fastify","index":529,"dateAdded":1693193743587000,"lastModified":1693193743587000,"id":591,"typeCode":1,"type":"text/x-moz-place","uri":"https://fastify.dev/docs/latest/"},{"guid":"ofusf2geOqqk","title":"Getting Started with Swagger: An Introduction to Swagger Tools","index":530,"dateAdded":1693200347772000,"lastModified":1693200347772000,"id":592,"typeCode":1,"type":"text/x-moz-place","uri":"https://swagger.io/resources/webinars/getting-started-with-swagger/"},{"guid":"cNpgUVLSCH8A","title":"GitHub - fastify/fastify-swagger: Swagger documentation generator for Fastify","index":531,"dateAdded":1693200530367000,"lastModified":1693200530367000,"id":593,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/fastify/fastify-swagger"},{"guid":"bbcJOAk3E0s0","title":"GitHub - fastify/fastify-swagger-ui: Serve Swagger-UI for Fastify","index":532,"dateAdded":1693203278652000,"lastModified":1693203278652000,"id":594,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/fastify/fastify-swagger-ui"},{"guid":"gbREb9Fwt8Ij","title":"better-sqlite3/docs/api.md at master · WiseLibs/better-sqlite3 · GitHub","index":533,"dateAdded":1693215368509000,"lastModified":1693215368509000,"id":595,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/WiseLibs/better-sqlite3/blob/master/docs/api.md#tablename-definition---this"},{"guid":"lp3xW4_oub5u","title":"Installation | Knex.js","index":534,"dateAdded":1693215374117000,"lastModified":1693215374117000,"id":596,"typeCode":1,"iconUri":"https://knexjs.org/knex-logo.png","type":"text/x-moz-place","uri":"https://knexjs.org/guide/"},{"guid":"XKdCtaT9pMco","title":"Helmet.js","index":535,"dateAdded":1693217622584000,"lastModified":1693217622584000,"id":597,"typeCode":1,"type":"text/x-moz-place","uri":"https://helmetjs.github.io/"},{"guid":"5JGzqqqkli4C","title":"mysql - Does Knex.js prevent sql injection? - Stack Overflow","index":536,"dateAdded":1693217721693000,"lastModified":1693217721693000,"id":598,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/49665023/does-knex-js-prevent-sql-injection"},{"guid":"Dy4Q95Y_0uWq","title":"Validate the Fastify Input with Joi - NearForm","index":537,"dateAdded":1693377323490000,"lastModified":1693377323490000,"id":599,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.nearform.com/blog/validate-the-fastify-input-with-joi/"},{"guid":"2NANSPqsLh0x","title":"Validation and Serialization in Fastify v3 - DEV Community","index":538,"dateAdded":1693457373865000,"lastModified":1693457373865000,"id":600,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/eomm/validation-and-serialization-in-fastify-v3-2e8l"},{"guid":"3wM-wk3DVh-0","title":"Fastify Error handlers - DEV Community","index":539,"dateAdded":1693457608957000,"lastModified":1693457608957000,"id":601,"typeCode":1,"type":"text/x-moz-place","uri":"https://dev.to/eomm/fastify-error-handlers-53ol"},{"guid":"rCwSJz-bja3U","title":"enable cross-origin resource sharing","index":540,"dateAdded":1693464772511000,"lastModified":1693464772511000,"id":602,"typeCode":1,"type":"text/x-moz-place","uri":"https://enable-cors.org/server_nginx.html"},{"guid":"7lb0FC0WEqTv","title":"Cross-Origin Resource Sharing (CORS) - HTTP | MDN","index":541,"dateAdded":1693464790363000,"lastModified":1693464790363000,"id":603,"typeCode":1,"type":"text/x-moz-place","uri":"https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"},{"guid":"xen0pA3R_aR3","title":"Extending Multiple Classes in JavaScript","index":542,"dateAdded":1693543752590000,"lastModified":1693543752590000,"id":604,"typeCode":1,"type":"text/x-moz-place","uri":"https://scribe.rip/@thevirtuoid/extending-multiple-classes-in-javascript-2f4752574e65"},{"guid":"FcjnAKIT5nVd","title":"Understanding symbols in JavaScript - LogRocket Blog","index":543,"dateAdded":1693702771243000,"lastModified":1693702771243000,"id":605,"typeCode":1,"type":"text/x-moz-place","uri":"https://blog.logrocket.com/understanding-symbols-in-javascript/"},{"guid":"yXOlrBbJG_bf","title":"javascript - What is an efficient way to divide an array by a value? - Stack Overflow","index":544,"dateAdded":1693824438264000,"lastModified":1693824438264000,"id":606,"typeCode":1,"type":"text/x-moz-place","uri":"https://stackoverflow.com/questions/42584479/what-is-an-efficient-way-to-divide-an-array-by-a-value"},{"guid":"deiGn92LDJMV","title":"How to deploy an Express app using Docker - Sabe.io","index":545,"dateAdded":1693872343973000,"lastModified":1693872343973000,"id":607,"typeCode":1,"type":"text/x-moz-place","uri":"https://sabe.io/tutorials/how-to-deploy-express-app-docker"},{"guid":"GCP-_SOHfxDD","title":"Testing | Fastify","index":546,"dateAdded":1693885322496000,"lastModified":1693885322496000,"id":608,"typeCode":1,"type":"text/x-moz-place","uri":"https://fastify.dev/docs/v4.15.x/Guides/Testing/"},{"guid":"ug3AT_fAMSV_","title":"TAP Basics","index":547,"dateAdded":1693888654572000,"lastModified":1693888654572000,"id":609,"typeCode":1,"type":"text/x-moz-place","uri":"https://node-tap.org/basics/"},{"guid":"zZrqRvlK-ia2","title":"ava/docs at main · avajs/ava · GitHub","index":548,"dateAdded":1693889237499000,"lastModified":1693889237499000,"id":610,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/avajs/ava/tree/main/docs"},{"guid":"z5tBRvsKxa_S","title":"Using Istanbul With AVA","index":549,"dateAdded":1693889882244000,"lastModified":1693889882244000,"id":611,"typeCode":1,"type":"text/x-moz-place","uri":"https://istanbul.js.org/docs/tutorials/ava/"},{"guid":"YU329WSfGp5e","title":"Page not found - Matthew Manela","index":550,"dateAdded":1693891211496000,"lastModified":1693891211496000,"id":612,"typeCode":1,"type":"text/x-moz-place","uri":"https://matthewmanela.com/blog"},{"guid":"5W9pXzpHzQfK","title":"Matthew Manela - Building high quality software and teams","index":551,"dateAdded":1693891221419000,"lastModified":1693891221419000,"id":613,"typeCode":1,"type":"text/x-moz-place","uri":"https://matthewmanela.com/"},{"guid":"1lzZRkuaNScP","title":"Sinon Tutorial: JavaScript Testing with Mocks, Spies & Stubs — SitePoint","index":552,"dateAdded":1693891624221000,"lastModified":1693891624221000,"id":614,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.sitepoint.com/sinon-tutorial-javascript-testing-mocks-spies-stubs/"},{"guid":"u72LkgqY49d3","title":"Gitolite","index":553,"dateAdded":1694088347282000,"lastModified":1694088347282000,"id":615,"typeCode":1,"type":"text/x-moz-place","uri":"https://gitolite.com/gitolite/"},{"guid":"pGZ0j-WMx6HL","title":"How to Run a Cron Job Inside a Docker Container? | Baeldung","index":554,"dateAdded":1694168989417000,"lastModified":1694168989417000,"id":616,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.baeldung.com/ops/docker-cron-job"},{"guid":"DiCNVTOiRWFY","title":"Sending Emails With Python – Real Python","index":555,"dateAdded":1694169482459000,"lastModified":1694169482459000,"id":617,"typeCode":1,"type":"text/x-moz-place","uri":"https://realpython.com/python-send-email/"},{"guid":"hdvWB8cmjFmx","title":"bash - sanely run all scripts in a directory - Unix & Linux Stack Exchange","index":556,"dateAdded":1694170547962000,"lastModified":1694170547962000,"id":618,"typeCode":1,"type":"text/x-moz-place","uri":"https://unix.stackexchange.com/questions/189118/sanely-run-all-scripts-in-a-directory"},{"guid":"gE8Cg3CCVuMt","title":"requests-HTML v0.3.4 documentation","index":557,"dateAdded":1694416697790000,"lastModified":1694416697790000,"id":619,"typeCode":1,"type":"text/x-moz-place","uri":"https://requests.readthedocs.io/projects/requests-html/en/latest/"},{"guid":"xetLTZkvdiTz","title":"Million.js","index":558,"dateAdded":1694474781438000,"lastModified":1694474781438000,"id":620,"typeCode":1,"type":"text/x-moz-place","uri":"https://million.dev/"},{"guid":"nqK1VQvM9hYX","title":"Virtual Cards That Protect Your Payments | Online Payment Security","index":559,"dateAdded":1694480863034000,"lastModified":1694480863034000,"id":621,"typeCode":1,"type":"text/x-moz-place","uri":"https://privacy.com/"},{"guid":"J3Bva90vYZXB","title":"David Heinemeier Hansson","index":560,"dateAdded":1694480920479000,"lastModified":1694480920479000,"id":622,"typeCode":1,"type":"text/x-moz-place","uri":"https://world.hey.com/dhh/"},{"guid":"mB3OfSx9zT00","title":"Augusta, Georgia - Wikipedia","index":561,"dateAdded":1694485507298000,"lastModified":1694485507298000,"id":623,"typeCode":1,"type":"text/x-moz-place","uri":"https://en.wikipedia.org/wiki/Augusta,_Georgia?useskin=vector"},{"guid":"xrF11FD9yKU2","title":"Linux syscall tables","index":562,"dateAdded":1694664188404000,"lastModified":1694664188404000,"id":624,"typeCode":1,"type":"text/x-moz-place","uri":"https://syscalls.mebeim.net/?table=x86/64/x64/v6.5"},{"guid":"B96dGdYqGRbm","title":"Charissa Day - Portfolio","index":563,"dateAdded":1694745275617000,"lastModified":1694745275617000,"id":625,"typeCode":1,"type":"text/x-moz-place","uri":"https://loafylilu.github.io/"},{"guid":"5e98PedJK6-1","title":"Jonathan Cruz - Software Engineer","index":564,"dateAdded":1694745294641000,"lastModified":1694745294641000,"id":626,"typeCode":1,"type":"text/x-moz-place","uri":"https://joncruz.netlify.app/"},{"guid":"Zuypwzt_mYVu","title":"Crunchbase: Discover innovative companies and the people behind them","index":565,"dateAdded":1694745328877000,"lastModified":1694745328877000,"id":627,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.crunchbase.com/"},{"guid":"G2xmNhD_UNoO","title":"Nonprofit data for donors, grantmakers, and businesses | GuideStar | Candid","index":566,"dateAdded":1694745348976000,"lastModified":1694745348976000,"id":628,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.guidestar.org/"},{"guid":"TBWR3C48LFrK","title":"Council Members","index":567,"dateAdded":1694847403096000,"lastModified":1694847403096000,"id":629,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.edisonnj.org/departments/council/council_members.php"},{"guid":"sbygh9xhC4YA","title":"Developer Roadmaps - roadmap.sh","index":568,"dateAdded":1695088652087000,"lastModified":1695088652087000,"id":630,"typeCode":1,"type":"text/x-moz-place","uri":"https://roadmap.sh/"},{"guid":"42NUJMDQX5Lr","title":"Empathetech","index":569,"dateAdded":1695255828293000,"lastModified":1695255828293000,"id":631,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.empathetech.org/"},{"guid":"9KBVB5J_YF3K","title":"Councilmembers - New Orleans City Council","index":570,"dateAdded":1695628546003000,"lastModified":1695628546003000,"id":632,"typeCode":1,"type":"text/x-moz-place","uri":"https://council.nola.gov/councilmembers/"},{"guid":"hCd56nuyh55X","title":"Mage 🧙 | Free, Fast, Unlimited Stable Diffusion","index":571,"dateAdded":1695948743797000,"lastModified":1695948743797000,"id":633,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.mage.space/"},{"guid":"o9uQWpIpxWTr","title":"GPU Instances - DataCrunch","index":572,"dateAdded":1695954375532000,"lastModified":1695954375532000,"id":634,"typeCode":1,"type":"text/x-moz-place","uri":"https://datacrunch.io/products"},{"guid":"R67yrMd3jL-0","title":"The Modern JavaScript Tutorial","index":573,"dateAdded":1696296919014000,"lastModified":1696296919014000,"id":635,"typeCode":1,"type":"text/x-moz-place","uri":"https://javascript.info/"},{"guid":"tWoRAcE6RUH_","title":"Exercism","index":574,"dateAdded":1696300343687000,"lastModified":1696300343687000,"id":636,"typeCode":1,"type":"text/x-moz-place","uri":"https://exercism.org/"},{"guid":"t4VlUhEcgG2b","title":"Home | endoflife.date","index":575,"dateAdded":1696408959159000,"lastModified":1696408959159000,"id":637,"typeCode":1,"type":"text/x-moz-place","uri":"https://endoflife.date/"},{"guid":"BakNbouvP4PO","title":"Portland Tech Jobs | PortlandTech.org","index":576,"dateAdded":1696506997645000,"lastModified":1696506997645000,"id":638,"typeCode":1,"type":"text/x-moz-place","uri":"https://portlandtech.org/"},{"guid":"YXXmrbnMZMa4","title":"Blog @ tonsky.me","index":577,"dateAdded":1696507030737000,"lastModified":1696507030737000,"id":639,"typeCode":1,"type":"text/x-moz-place","uri":"https://tonsky.me/"},{"guid":"Ndb8p0APadZX","title":"Can I email… Support tables for HTML and CSS in emails","index":578,"dateAdded":1696507160305000,"lastModified":1696507160305000,"id":640,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.caniemail.com/"},{"guid":"G61U1dC61PBi","title":"Catchafire: Skills-Based Virtual Volunteer Matching","index":579,"dateAdded":1696507188217000,"lastModified":1696507188217000,"id":641,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.catchafire.org/"},{"guid":"2zIq9v5smQsb","title":"Caddy - The Ultimate Server with Automatic HTTPS","index":580,"dateAdded":1696507294320000,"lastModified":1696507294320000,"id":642,"typeCode":1,"type":"text/x-moz-place","uri":"https://caddyserver.com/"}]},{"guid":"unfiled_____","title":"unfiled","index":3,"dateAdded":1646675245168000,"lastModified":1646675245168000,"id":5,"typeCode":2,"type":"text/x-moz-place-container","root":"unfiledBookmarksFolder","children":[{"guid":"Hd7HIRzH8Oji","title":"What Is a Database Relationship?","index":0,"dateAdded":1630518759034000,"lastModified":1630518766974000,"id":12,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.lifewire.com/database-relationships-p2-1019758"},{"guid":"ad7yyIb1__U6","title":"Codewars - Achieve mastery through coding practice and developer mentorship","index":1,"dateAdded":1634936662919000,"lastModified":1634936662919000,"id":13,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.codewars.com/"},{"guid":"1oYOpgeeT5_m","title":"runit - a UNIX init scheme with service supervision","index":2,"dateAdded":1636680706694000,"lastModified":1636680706694000,"id":14,"typeCode":1,"charset":"windows-1252","type":"text/x-moz-place","uri":"http://smarden.org/runit/"},{"guid":"qrnLdf8XNasw","title":"Artix Linux Forum - Index","index":3,"dateAdded":1636680738314000,"lastModified":1636680738314000,"id":15,"typeCode":1,"iconUri":"https://artixlinux.org/favicons/favicon-196x196.png","type":"text/x-moz-place","uri":"https://forum.artixlinux.org/"},{"guid":"emY9dmtxkBdW","title":"[SOLVED] PostrgreSQL Runit service unable to start","index":4,"dateAdded":1636682883755000,"lastModified":1636682883755000,"id":16,"typeCode":1,"type":"text/x-moz-place","uri":"https://forum.artixlinux.org/index.php/topic,2229.0.html"},{"guid":"9BJg2-DXtrB2","title":"PostgreSQL - ArchWiki","index":5,"dateAdded":1636682892248000,"lastModified":1636682892248000,"id":17,"typeCode":1,"type":"text/x-moz-place","uri":"https://wiki.archlinux.org/title/PostgreSQL"},{"guid":"M0hozsmoCPcQ","title":"DuckDuckGo !Bang","index":6,"dateAdded":1636722730852000,"lastModified":1636722730852000,"id":18,"typeCode":1,"iconUri":"https://duckduckgo.com/assets/icons/meta/DDG-iOS-icon_152x152.png","type":"text/x-moz-place","uri":"https://duckduckgo.com/bang_lite.html"},{"guid":"zwrtBb7ZGM3g","title":"Python 3 Module of the Week — PyMOTW 3","index":7,"dateAdded":1637346630305000,"lastModified":1637346630305000,"id":19,"typeCode":1,"type":"text/x-moz-place","uri":"https://pymotw.com/3/"},{"guid":"uDV2ZRwR4MSb","title":"Tmux Cheat Sheet & Quick Reference","index":8,"dateAdded":1637700481376000,"lastModified":1637700481376000,"id":20,"typeCode":1,"type":"text/x-moz-place","uri":"https://tmuxcheatsheet.com/"},{"guid":"O9R5mPXs2AZ7","title":"OpenStreetMap","index":9,"dateAdded":1638056380565000,"lastModified":1638056380565000,"id":21,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.openstreetmap.org/#map=6/40.162/-120.808"},{"guid":"hgdt7-F0dECm","title":"The Bash Guide","index":10,"dateAdded":1638620156382000,"lastModified":1638620156382000,"id":22,"typeCode":1,"type":"text/x-moz-place","uri":"https://guide.bash.academy/"},{"guid":"8ErZybKjAHY2","title":"Free Programming Books – GoalKicker.com","index":11,"dateAdded":1638723395134000,"lastModified":1638723395134000,"id":23,"typeCode":1,"type":"text/x-moz-place","uri":"https://goalkicker.com/"},{"guid":"xfxJKiYEsZhw","title":"FOLDOC - Computing Dictionary","index":12,"dateAdded":1638723419598000,"lastModified":1638723419598000,"id":24,"typeCode":1,"type":"text/x-moz-place","uri":"https://foldoc.org/"},{"guid":"jI8aO9FMKmg9","title":"Linux Shell Scripting Wiki","index":13,"dateAdded":1638991397550000,"lastModified":1638991397550000,"id":25,"typeCode":1,"type":"text/x-moz-place","uri":"https://bash.cyberciti.biz/guide/Main_Page"},{"guid":"hweSQImoZ2Ku","title":"Noc.Social","index":14,"dateAdded":1639332615460000,"lastModified":1639332615460000,"id":26,"typeCode":1,"type":"text/x-moz-place","uri":"https://noc.social/web/timelines/home"},{"guid":"xuHVEI3BUHfW","title":"LibreTranslate - Free and Open Source Machine Translation API","index":15,"dateAdded":1639338149779000,"lastModified":1639338149779000,"id":27,"typeCode":1,"iconUri":"https://libretranslate.com/static/favicon.ico","type":"text/x-moz-place","uri":"https://libretranslate.com/"},{"guid":"7ZwKghkWMJs4","title":"PeerTube instances","index":16,"dateAdded":1639340498748000,"lastModified":1639340498748000,"id":28,"typeCode":1,"type":"text/x-moz-place","uri":"https://instances.joinpeertube.org/instances"},{"guid":"mfBwd5n0Ct_r","title":"Films By Kris","index":17,"dateAdded":1639836462107000,"lastModified":1639836462107000,"id":29,"typeCode":1,"iconUri":"https://filmsbykris.com/favicons/android-chrome-192x192.png","type":"text/x-moz-place","uri":"https://filmsbykris.com/v7/"},{"guid":"fbfJ3hh6N0U1","title":"Advanced Bash-Scripting Guide","index":18,"dateAdded":1640109556638000,"lastModified":1640109556638000,"id":30,"typeCode":1,"type":"text/x-moz-place","uri":"https://tldp.org/LDP/abs/html/"},{"guid":"GTQ9DccnHK-a","title":"We oppose DRM. | Defective by Design","index":19,"dateAdded":1640287860804000,"lastModified":1640287860804000,"id":31,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.defectivebydesign.org/"},{"guid":"GE02CRtQWrp6","title":"Welcome to a society for free software advocates, supporting the ethical cause of computer user freedom! | Free Software Foundation","index":20,"dateAdded":1640287971045000,"lastModified":1640287971045000,"id":32,"typeCode":1,"type":"text/x-moz-place","uri":"https://my.fsf.org/"},{"guid":"HGdHVMcUtBb5","title":"The Bash Hackers Wiki [Bash Hackers Wiki]","index":21,"dateAdded":1640352528310000,"lastModified":1640352528310000,"id":33,"typeCode":1,"iconUri":"https://wiki.bash-hackers.org/lib/tpl/bootstrap3/images/apple-touch-icon.png","type":"text/x-moz-place","uri":"https://wiki.bash-hackers.org/"},{"guid":"a9L_M2Xr3Mxe","title":"Shell-Tips! Sharpen Your Tech Skills","index":22,"dateAdded":1640352820789000,"lastModified":1640352820789000,"id":34,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.shell-tips.com/"},{"guid":"CBYlnO6QVRiG","title":"The GNU Operating System and the Free Software Movement","index":23,"dateAdded":1640441540815000,"lastModified":1640441540815000,"id":35,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.gnu.org/"},{"guid":"dHzd2el-mivW","title":"Regular-Expressions.info - Regex Tutorial, Examples and Reference - Regexp Patterns","index":24,"dateAdded":1640444229994000,"lastModified":1640444229994000,"id":36,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.regular-expressions.info/"},{"guid":"YsAE8igViKdB","title":"youtube-dl/supportedsites.md at master · ytdl-org/youtube-dl · GitHub","index":25,"dateAdded":1641748226483000,"lastModified":1641748226483000,"id":37,"typeCode":1,"type":"text/x-moz-place","uri":"https://github.com/ytdl-org/youtube-dl/blob/master/docs/supportedsites.md"},{"guid":"oHC4DQmdQVbq","title":"Invent with Python","index":26,"dateAdded":1642104601485000,"lastModified":1642104601485000,"id":38,"typeCode":1,"type":"text/x-moz-place","uri":"https://inventwithpython.com/invent4thed/"},{"guid":"DdaXLzVxdcTO","title":"Teach Yourself Computer Science","index":27,"dateAdded":1642788478718000,"lastModified":1642788478718000,"id":39,"typeCode":1,"type":"text/x-moz-place","uri":"https://teachyourselfcs.com/"},{"guid":"KRDZ6X1Z7B6U","title":"How to manually configure OpenVPN in Linux - ProtonVPN Support","index":28,"dateAdded":1643411837916000,"lastModified":1643411837916000,"id":40,"typeCode":1,"type":"text/x-moz-place","uri":"https://protonvpn.com/support/linux-openvpn/"},{"guid":"v5hAe1FzX6Ic","title":"unixsheikh.com","index":29,"dateAdded":1643415314070000,"lastModified":1643415314070000,"id":41,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.unixsheikh.com/index.html"},{"guid":"dfLgIHhF4tV4","title":"Nexus mods and community","index":30,"dateAdded":1644036058261000,"lastModified":1644036058261000,"id":42,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.nexusmods.com/"},{"guid":"DV-0EaaOXikz","title":"Jan-Piet Mens","index":31,"dateAdded":1644072149934000,"lastModified":1644072149934000,"id":43,"typeCode":1,"type":"text/x-moz-place","uri":"https://jpmens.net/"},{"guid":"Aj9NUaxy4PLQ","title":"Daniel Stenberg - daniel.haxx.se","index":32,"dateAdded":1644072275476000,"lastModified":1644072275476000,"id":44,"typeCode":1,"type":"text/x-moz-place","uri":"https://daniel.haxx.se/"},{"guid":"Mp2EfDYvFn3F","title":"Md5 To Text","index":33,"dateAdded":1644679183952000,"lastModified":1644679183952000,"id":45,"typeCode":1,"type":"text/x-moz-place","uri":"https://md5-hash.softbaba.com/converter/md5-to-text/"},{"guid":"hyTA21oJkj9F","title":"searx.info","index":34,"dateAdded":1644706010158000,"lastModified":1644706010158000,"id":46,"typeCode":1,"type":"text/x-moz-place","uri":"https://searx.info/"},{"guid":"0NqboXGVWzmQ","title":"FrogFind!","index":35,"dateAdded":1644779985449000,"lastModified":1644779985449000,"id":47,"typeCode":1,"type":"text/x-moz-place","uri":"http://www.frogfind.com/"},{"guid":"ly4i4jR00t_T","title":"Podtail – Listen to Podcasts Online","index":36,"dateAdded":1644861513977000,"lastModified":1644861513977000,"id":48,"typeCode":1,"type":"text/x-moz-place","uri":"https://podtail.com/"},{"guid":"tggoyO0xxnar","title":"ProtonDB | Gaming reports for Linux using Proton and Steam Play","index":37,"dateAdded":1645016206767000,"lastModified":1645016206767000,"id":49,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.protondb.com/"},{"guid":"UVcFu0VmPrT_","title":"skarnet.org","index":38,"dateAdded":1645018073821000,"lastModified":1645018073821000,"id":50,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.skarnet.org/"},{"guid":"y3SQ4Qu0PuQP","title":"Jude's Blog","index":39,"dateAdded":1645018181249000,"lastModified":1645018181249000,"id":51,"typeCode":1,"type":"text/x-moz-place","uri":"https://judecnelson.blogspot.com/"},{"guid":"4BzF_cMqqSRC","title":"EWONTFIX","index":40,"dateAdded":1645018261100000,"lastModified":1645018261100000,"id":52,"typeCode":1,"type":"text/x-moz-place","uri":"https://ewontfix.com/"},{"guid":"r8pYnm7Cau7Z","title":"Lemmy - A community of leftist privacy and FOSS enthusiasts, run by Lemmy’s developers","index":41,"dateAdded":1645616751853000,"lastModified":1645616751853000,"id":53,"typeCode":1,"type":"text/x-moz-place","uri":"https://lemmy.ml/"},{"guid":"p0JGzWtkvK4M","title":"Services and Daemons - runit - Void Linux Handbook","index":42,"dateAdded":1645636788194000,"lastModified":1645636788194000,"id":54,"typeCode":1,"iconUri":"https://docs.voidlinux.org/favicon.png","type":"text/x-moz-place","uri":"https://docs.voidlinux.org/config/services/index.html"},{"guid":"XrbBYsgit-xg","title":"npm","index":43,"dateAdded":1645714026436000,"lastModified":1645714026436000,"id":55,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.npmjs.com/"},{"guid":"QLTEB3wfINr0","title":"Medusa: Open Source Shopify alternative","index":44,"dateAdded":1646076601554000,"lastModified":1646076601554000,"id":56,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.medusajs.com/"},{"guid":"0AKcD_HriUsM","title":"5 Modern Bash Scripting Techniques That Only A Few Programmers Know | by Shalitha Suranga | Mar, 2022 | Level Up Coding","index":45,"dateAdded":1646250424644000,"lastModified":1646250424644000,"id":57,"typeCode":1,"type":"text/x-moz-place","uri":"https://levelup.gitconnected.com/5-modern-bash-scripting-techniques-that-only-a-few-programmers-know-4abb58ddadad?sk=381451845c8d4213b52703e49206ad39&gi=91abd5c38a86"},{"guid":"kGuCYdiLymbf","title":"kitty.conf - kitty","index":46,"dateAdded":1646326032219000,"lastModified":1646326032219000,"id":58,"typeCode":1,"iconUri":"https://sw.kovidgoyal.net/kitty/_static/kitty.svg","type":"text/x-moz-place","uri":"https://sw.kovidgoyal.net/kitty/conf/"},{"guid":"_cBQTe1l9MrW","title":"Proxy Server List - List of Free Public Proxy Servers (Updated March 2022)","index":47,"dateAdded":1646600120921000,"lastModified":1646600120921000,"id":59,"typeCode":1,"type":"text/x-moz-place","uri":"https://www.proxynova.com/proxy-server-list/"},{"guid":"Ab-xySe64HNK","title":"1. Extending Python with C or C++ — Python 3.10.2 documentation","index":48,"dateAdded":1646675245168000,"lastModified":1646675245168000,"id":60,"typeCode":1,"type":"text/x-moz-place","uri":"https://docs.python.org/3/extending/extending.html"}]},{"guid":"mobile______","title":"mobile","index":4,"dateAdded":1649281065634000,"lastModified":1649333198138000,"id":6,"typeCode":2,"type":"text/x-moz-place-container","root":"mobileFolder"}]} \ No newline at end of file diff --git a/my_binaries.txt b/my_binaries.txt index 772b13a9..056dfef1 100644 --- a/my_binaries.txt +++ b/my_binaries.txt @@ -1 +1 @@ -/usr/bin ftp mysql_embedded mono-symbolicate chmod xfce4-popup-applicationsmenu avr-cpp wineg++ vde_switch dc osinfo-install-script delv gtbl nl-util-addr openvpn psjoin asciitopgm vgimport llvm-dwp aa-enforce dvilj vnstati avahi-browse pamsharpmap nl-addr-list loadunimap stubtest ssh-keyscan mount.ntfs-3g nf-exp-list automake-1.16 gst-inspect-1.0-32 freeaptxenc ppmrough pw-cli uuclient parallel-moreutils mkfs.ext3 eu-size steam-runtime pacconf vde_plug cut gtk-query-settings clear ebb eu-addr2line pamtopng idevicescreenshot delaunay node pcregrep virtlockd pylupdate5 llvm-PerfectShuffle mariadb-hotcopy dt2dv spirv-cfg peglgears gdiffmk randpkt db_archive yuvsplittoppm sndfile-deinterleave useradd numastat gio-querymodules-32 ts_conf mount.lowntfs-3g kcpolytest grub-bios-setup cfftot1 slsh zstdcat regsvr32 autoheader wineconsole luajithbtex ip6tables-nft-save gtk4-query-settings man-recode pbmmake event_rpcgen.py pw-config pasteurize rsv gupnp-binding-tool-1.6 pgmramp tinywm encode_keychange grub-probe mount.fuse aafire named-compilezone crlupdate yuv-distortion db_dump era_invalidate moc ld zramctl gst-play-1.0 flex kill ps2ps2 xfs_info runcon stylua grub-mklayout avr-lto-dump kadmin.local fsadm cacaview rst2html5.py mysql_client_test_embedded rifle kdb5_ldap_util uptex iptables-nft-restore getent nbd-client vapigen-0.56 ecryptfsd javah ppltotf grub-set-default usbreset bg5pdflatex pamunlookup indxbib colordiff resizepart postprocessing_benchmark mdoc-export-html rarp snmptrap gjs mail fc-conflist ldns-walk firecfg wc colorit plugreport sbcdec snmpcheck dropuser wpg2svgbatch.pl hxincl mesg ppmtojpeg llvm-debuginfod qmltyperegistrar qashctl ntfscp lzmainfo mocha rm snmptop mono-find-requires exrmultiview jpegtran pnmtotiffcmyk uname26 gdbus-codegen xtotroff xrdb gsnd ntpq text2pcap ppmtoacad afmtodit arandr pcap-config slocate proxy_thr x86_64-linux-gnu-g++ p0f texindex rust-lldb neqn block-rate-estim gphoto2-port-config termshark pamon pw-top gzip nmtui-connect upower sha256sum llvm-diff llvm-readobj xz mpicxx webpinfo ldns-key2ds pdfattach litecli arm-none-eabi-gprof checkbandwidth pvremove hwloc-bind losetup dictl kbdrate mktemp gimp-debug-tool-2.0 vercmp dbus-send openal-info xmlrpc_cpp_proxy ufw qmake lutris fallocate fixparts pnmtosgi xdotool optex corrupt_mpeg2 pick zgrep postgres bzmore luatex pam_namespace_helper hxref monop2 pathchk xapian-progsrv mtp-folders ipmaddr ociocheck JxrDecApp trust gpg-error sxhkd svgo llvm-cvtres ebtables-nft-save msgfilter cdr2raw ppmdcfont dvbv5-scan rpdfcrop cllayerinfo showwal ybmtopbm lensfun-add-adapter csplain hwloc-gather-topology xxh64sum showconsolefont remark-language-server lsattr ecryptfs-setup-private pi1toppm ftdi_eeprom optipng composeglyphs t1rawafm obfs4proxy firefox ldns-nsec3-hash upmpost paydept sfdp sjislatex traceroute usbmuxd otr_mackey nbd-trdump printenv virt-clone killwa mkfs.exfat cmx2raw curl-config reindexdb ktelnetservice5 ecryptfs-setup-swap mariadb-test-embedded nf-exp-delete chkdvifont shtab texsis afm2tfm dvibook slogencrypt wpg2svg gdtopng llvm-install-name-tool pw-v4l2 gsbj mkbitmap mountpoint reiserfstune bzip2recover pacinstall libpng-config-32 snarf llvm-readelf simple_dcraw xmlrpc_transport grpconv mysqlbinlog pgmtexture cargo-make xfs_scrub pnmcut pamtopdbimg mkfontdir platex-dev flask dpkg-deb cefsconv x265 texmfstart dirmngr-client kcgrasstest pkill ragel js102-config xmlrpc-c-config semver ilasm jbigtopnm display pvcreate cccheck pactl connmand-wait-online v4l2-ctl a52dec xauth fsck.minix watch gbklatex gss-server pg_test_fsync xfs_spaceman fdtget fuck pnmtopng axfer parted ipptool pbmtosunicon idn appstream-compose env_parallel.csh fail2ban-client git-upload-archive rletopnm grotty mmroff llvm-mca aplaymidi androiddeployqt6 more xapian-config lpadmin fftw-wisdom-to-conf umount.nfs4 grub-menulst2cfg lscpu myisampack alsabat-test.sh dvilualatex-dev permview fsck.f2fs hxextract tty rawtextdump qvkgen-qt5 pango-segmentation mariadb-secure-installation ownership msginit sqlmetal mex dd markdown-it pinentry f2fscrypt gpg-wks-server wpa_passphrase cygdb3 eplain pg_recvlogical [ c89 dot heif-enc virtlogd cert-sync gcc ip arptables-nft cloc nvidia-powerd avr-gcov-tool aseqnet calcurse-upgrade ociochecklut hdifftopam tee w3m eptex ecryptfs-manager eu-elfcompress kctreemgr virgl_test_server mariadb-access httpcfg pnmpad lzmadec myisam_ftdump dictdplugin-config efibootmgr clang-offload-bundler Magick++-config lispmtopgm gst-tester-1.0-32 xml2-config ipcmk virt-pki-validate hxwls mmc-tool hwloc-annotate pngfix-32 getunimap sha224sum fsck.xfs ct2-fairseq-converter sqlformat column spa-inspect djvmcvt jstack ul pgmminkowski glib-compile-schemas x86_64-pc-linux-gnu-c++ e2scrub pdflatex python3 dirname manweb apparmor_parser ptex gdbus fsck.cramfs shfmt mllatex driverless-fax fim pcscd spirv-link dpkg-gensymbols dpkg-genbuildinfo stdbuf pnmtopclxl rst2latex pbmtogo cygdb hxmkbib keepassxc-proxy seriesmeta vgextend captree wipefs spawn_login tiger-hash pg_ctl paru bibtex rbox oslinfo gifclrmp delpart desktop-file-validate arptables-nft-restore otr_modify pdb2mdb cx18-ctl whatis pnmcolormap sim_server nvidia-debugdump mdmon redshift-gtk telnetd arch-meson c-index-test modprobe gst-typefind-1.0 clang-rename pg peverify serialver zmore gtkdoc-scangobj fsck.exfat pbmclean speaker-test vala-0.56 fail2ban-regex signtool dbus-run-session llvm-cfi-verify update-patterndb pamsistoaglyph mdb_copy gpm-root pdbimgtopam orted epsffit nl-class-delete callgrind_control snmpset tzselect env_parallel.zsh json-glib-format dictd ctstat iconvconfig xxh32sum pnmtojpeg ctxtools vgcfgrestore r-pmpost bzdiff qml6 gst-launch-1.0 legit lua5.2 asn1Coding oid2name xournalpp-thumbnailer paclog lsmem unexpand cef5conv pacsearch ecryptfs-recover-private pamtoavs tificc avahi-publish clang-offload-packager pdfunite markdown-calibre tifftopnm dviselect fdtdump tor amstex imlib2_show qmlmin bssh rubberband-r3 xinit avrdude nettle-lfib-stream kded5 applygnupgdefaults neo-matrix mysqlshow AppImageUpdateDummy dpkg talkd uuidparse update-desktop-database nmtui-hostname espanso cjpeg ideviceprovision cec-compliance vterm-dump pw-midirecord sudo_logsrvd shlibsign texi2any prune pkexec login fftwl-wisdom pbmtopi3 grub-script-check pgmkernel pambackground ppmtoilbm unicode_stop aainfo locate h5format_convert numademo tjbench pnmconvol mtp-reset eu-elfclassify gpgme-json dvcont cdr2text xfs_scrub_all info kccachetest lstopo bsdcat wsrep_sst_common gst-discoverer-1.0-32 idle netstat nfsdcltrack idle3.11 ld.so tiffdump nl-link-ifindex2name grub-ofpathname msgcomm chroot kswitch valadoc ytfzf cjpeg_hdr git-clang-format pstopdf bg5+latex python3.11 pamchannel otr_remac llvm-cxxmap dfu-util xwordgrinder cefslatex resgen gtstemplate zdump audispd-zos-remote exrheader mount.nfs orcc setpriv shred pnminvert diffstat egltri_wayland virt-ssh-helper sasldblistusers2 pgcli ijs_server_example pydoc3 ldns-zsplit wine64-preloader zless mm2gv iptables cronnext pngtopnm yank pamsplit pipewire tic lzfgrep snmpdelta ttf2afm niceload lp2 a2ps qmlls6 strace-log-merge h5repart bridge gpgv2 h5import resolveip hipstopgm diff3 rrsync atomx yarnpkg glxgears fail2ban-testcases xmlstarlet dcb xfs_io mysqld_safe es2gears_wayland wgetpaste hxtabletrans muxer msgunfmt neotoppm rd-curves pgmnorm debugfs ctangle chem jailcheck intltool-merge qmleasing-qt5 avr-c++ avr-gcc-12.2.0 icu-config-32 cdparanoia svgtopam mysql_setpermission fsck.reiserfs find-all-symbols lv2info idevicename geckodriver gofmt pack200 rpcinfo uchardet pgmtolispm quick-lint-js pause pldd munch pipesz env_parallel.pdksh lvmdevices rc-sysinit nf-exp-add netcap pbmtopk sndfile-info lvchange ecryptfs-mount-private kadmin qlalr-qt5 fsck.jfs mysqlhotcopy defrag.f2fs upmendex calibre-customize cups-browsed nfbpf_compile gregorio ompi_info cp arm-none-eabi-cpp xlinks lpoptions ffmpegthumbnailer ldns-dane mono-xmltool gennorm2 gimp sqlite3 mkfs.cramfs genccode llvm-jitlink-executor thin_repair wattr arecord nano true dumpiso size avr-ranlib gsl-randist myisamlog chromium getfacl mysofa2json p11tool tracegen resize_reiserfs idevicepair kprop ionice kepubify pamflip guvcview run-parts egltri_x11 ctie prepmx nopt ptx llvm-ranlib guile-tools arm-none-eabi-strip ld.bfd pgmcrater lvm_import_vdo monolinker dqtool glib-mkenums red lxappearance git-receive-pack db_hotbackup gzexe cllualatex dbus-daemon pnmhistmap jasper qasconfig libtoolize proxychains4-daemon pwunconv source-highlight rst2pseudoxml chmem pkcs1-conv cc alsoft-config printafm gcc-ar pic MagickCore-config mouse-test enum_chmLib veritysetup mkdir pbmtextps audisp-remote gpg-agent runsvchdir stream asn1Parser cd-info wineboot roff2ps intltool-update yuy2topam xmllint pgmenhance uic persist-tool install x86_64-pc-linux-gnu-gcc-nm plookup wmc rsvg-convert pcsc-spy multipath gtkdoc-scan nl-addr-add qemu-pr-helper dbus-update-activation-environment pw-mon svlogd gpg2 btrfs-find-root pmix_info sum tree sgen-grep-binprot paplay lensfun-update-data tex4ht amrnb-dec scor2prt ppmforge h5cc uptime texi2dvi ppdhtml feh gtkdoc-depscan ps grub-macbless lvreduce acountry eu-strip sanstats clangd gifsicle mtp-newfolder xfs_mkfile rtstat pamtohdiff h5dump blockdev named-checkzone mariadb-find-rows mtp-tracks install-info comm dmesg vlock valac shutdown cacaserver aria_s3_copy blkzone less xsd kproplog xprop tpic2pdftex thin_metadata_pack patgen pdf2dsc addr2line nl-list-sockets qmake6 7z installvst pgrep mtdev-test ctwill-twinx normalizer spirv-as mpif90 r-mpost jps gacutil2 ovf2ovp lsmod crlutil pg_receivewal extract_chmLib sordi gts2oogl pacscripts dosfslabel dpkg-checkbuilddeps yuvtoppm update-pciids pnmgamma spirv-reduce seq xdg-icon-resource chcpu giffix fdtoverlay du hzip mysql_tzinfo_to_sql dpipe composite pinky identify appstream-builder mandb java eu-strings mono-sgen-gdb.py devlink atktopbm zipinfo nf-monitor pamcut copydatabase pammosaicknit pgmtost4 snapshot-detect nroff virtproxyd i386 slw nstat xorriso-dd-target chgrp pamfix mailx dtagnames rlatopam jmap rav1e pmap yaml-bench pprof-symbolize roff2text qlalr caspol pw-dsdplay initex tset pbmtopgm zstdmt sha1sum w xmlrpc_parsecall od gst-launch-1.0-32 kclangctest pambayer vss2raw qmi-network ndisasm chardetect vgmknodes clusterdb ctwill t1dotlessj hxtoc vsd2xhtml aa-exec gxl2gv dcraw_emu flex++ tiffset timeshift-gtk xsel mispipe mtp-format vgrename cstool modeprint aatest dpkg-shlibdeps pamstretch-gen scqref avahi-resolve nvidia-cuda-mps-control ppmtoarbtxt ppmtosixel fixps id llvm-stress pg_basebackup qhull ppmcie card rsync-ssl sccmap lsirq efivar errno eglgears_wayland ldns-keygen dvips zstd idevicebackup2 mongoose pbmtext mkfs.fat sulogin gpgme-tool ip6tables-legacy systemd-tmpfiles intercept-build linkicc lvremove dvigif llvm-bcanalyzer updvitomp pdvitomp cd-drive xapian-replicate-server macptopbm ntfsundelete UnicodeNameMappingGenerator gtk-encode-symbolic-svg date mariadbd-multi gimp-2.10 vscode-css-language-server hitex chat syslog-ng-update-virtualenv xwdtopnm ip6tables msgcmp pedump ppmdmkfont mount.ecryptfs testtex pppstats cmsutil ttf2pk dvilj6 modinfo gpgconf fc-match gnome-keyring-3 mtp-getfile wpexec imlib2_bumpmap pamditherbw gendict_dirb ppmtompeg hmac256 lpstat keyctl libevdev-tweak-device xmltex avr-strings zcat notify-send psidtopgm ppmtopi1 gvpr wavpack llvm-split ip6tables-restore gp-archive fsidd dhcp_release p0f-sendsyn6 ikdasm pyright-langserver sndfile-metadata-set fatlabel cdr2xhtml 411toppm pg_verifybackup qemu-system-x86_64 qmlcachegen chmorph scan-build-py roff2html pp-trace cupsenable xpmtoppm gtkdocize cache_dump ecryptfs-rewrap-passphrase ebook-edit pf2afm pktype gvmap protoc-3.21.12.0 gst-play-1.0-32 tor-gencert swaplabel gtktranslate libfm-pref-apps truncate newusers gdparttopng mgrtopbm kcutilmgr arm-none-eabi-gcc-13.1.0 test-connect-t pnmmontage ir-keytable slogkey gvedit xwininfo pbmto4425 aa-autodep ipcrm dot2gxl wiper.sh xdg-mime updates a2ps-lpr-wrapper umount.nfs pfw gcc-ranlib gtk4-builder-tool ppmtowinicon mbimcli ippeveprinter nl-route-list yelp-check pnminterp pybind11-config tred arecordmidi mariadb-test ftpd ppmlabel xfce4-screenshooter unlzma auditd fusermount outpsfheader regedit pamshadedrelief al2 recode-sr-latin enscript pw-dot rustdoc createdb locale dump.f2fs avr-gcc-ar llvm-addr2line rst2man compare intltoolize basenc virt-login-shell progress xsltproc dubdv env_parallel.mksh gimp-console qmlpreview-qt5 xgettext xfs_mdrestore vftovp gprof llvm-as env_parallel.ash psbook pnmshear hxunent xapian-compact grolbp wmv check-regexp e2image pgmmorphconv update-mime-database qdbuscpp2xml-qt5 jpgicc mono-package-runtime scan-view paxtest gouldtoppm mv fibmap.f2fs sntp hjson.cmd talk cg_diff ip6tables-legacy-save ideviceimagemounter jadetex gpgsplit pc1toppm sunicontopnm mono-sgen ntpd xmlrpc_dumpserver grub-install xzegrep over wget llc glib-genmarshal gcov aria_read_log xorriso-tcltk tiff2rgba nvidia-xconfig iscan not nl hxpipe mako-render pip monodocs2slashdoc calibre-parallel pwmconfig ppmntsc chsh gtscheck pgmdeshadow idle3 pamdepth mysql_plugin pmpost grub-reboot nsupdate cmark-py3 postgresql-check-db-dir ps2pdfwr xbmtopbm onefetch sockstat grodvi unflatten monodocs2html raw2tiff llvm-strip kcforestmgr tiffcmp mkfs.f2fs gcr-viewer readtags eu-unstrip write curl eglkms zipmerge v4l2-compliance lollipop pbmtoepson fsck.ext4 libnet-config dnssec-importkey gts2dxf switch_root otr_parse winepath iptables-nft skdump timelineeditor acceleration_speed mysql_ldb showmount sgen pamgauss cal debuginfod pnmflip lslocks mariadb-waitpid mke2fs llvm-lto2 grub-glue-efi saned pdata_tools amrnb-enc krb5-send-pr xev rtmon ignw schemagen xset ndctl clang++ free djvutoxml virt-host-validate pug pamtosvg xglyph lesskey qmlpreview ip6tables-nft nmap widl debuginfod-find wish8.6 mkrfc2734 pdfmex t1lint libwacom-update-db rome h5jam dvihp vgdisplay rstpep2html runsvdir syncqt.pl-qt5 mapw auvirt arm-none-eabi-dwp sqlcipher xfs_estimate psnup canberra-gtk-play pdfsig pbmtoicon ipp-usb iw zellij npth-config luahbtex ts_harvest dig pahole arm-none-eabi-strings mypyc llvm-c-test rmmod sjisconv xfs_repair grep saslpasswd2 idevicediagnostics mib2c-update pdfxmltex vipe nfs-ls pygmentize ppmtorgb3 ntfsresize cups-config wayland-scanner faillog dvipdfmx uuserver tgatoppm gettext numactl pacman-key arm-none-eabi-nm g-ir-doc-tool hwloc-patch pbmtog3 mft inproc_thr hwloc-ps llvm-lib pamtotga gencat c++filt avr-as wpd2raw gimptool-2.0 ldns-signzone alsatplg pamtopnm xdvi affixcompress hxcount mono-shlib-cop yt-dlp nfsiostat llvm-config sh imlib2_colorspace aureport gnutls-serv xjc hwloc-info mib2c libpng16-config-32 disdvi timeshift-launcher uptftopl sdiff fold dazzle-list-counters tracker3 elf2dmp glewinfo mtxrunjit clang-15 fc-cat valgrind-di-server mysql_upgrade desktopeditors checkrebuild nl-link-list qmlprofiler-qt5 vnstat simplesearch xfs_freeze psc b2sum sbigtopgm avahi-discover-standalone extractbb compton cweave glslc qmlformat aasavefont lzdiff paper desktop-file-edit mtp-delfile idevicesyslog mysqldumpslow dv2dt rst2odt arm-none-eabi-gcc-ar pammasksharpen wrc alsactl arm-none-eabi-gcc-nm igrep rst2xetex.py ccrewrite setarch tiffcp gif2rgb aa-unconfined llvm-symbolizer kcookiejar5 ntfs-3g.probe unmunch debugreiserfs animate codiff alsaucm refer qdbusxml2cpp pyuic6 lvcreate ppmwheel asciinema.sh node-gyp ps2pdf12 proxychains4 json-glib-validate difft mariadb-slap site_perl nft logrotate pgmtopbm v4l2-tracer idevicedate pdflatex-dev bs2bconvert sexp-conv basename pmxab pnmstitch pamtopfm afm2pl repo-add cg_merge jstat tiffsplit aa-mergeprof iptables-xml lpr nettle-pbkdf2 btrfsck git-lfs git-shell srt-tunnel vmstat dosfsck enchant-2 libwmf-fontmap syscse thin_delta mprof-report handy-1-demo traptoemail ntp-keygen winicontoppm mangohudctl kglobalaccel5 histretch ping calibredb bsdcpio gdk-pixbuf-query-loaders-32 dunstify qmllint mysqldump grub-syslinux2cfg lnstat iso-read namei cdrskin mii-tool gml2gv chrt rst2xetex sktest hxprune sqlitebrowser GraphicsMagickWand-config inimf roff2x llvm-ml rnano certmgr exiv2 ppmtospu any2djvu ppmshadow auto-cpufreq-install eu-nm mdoc-export-msxdoc mpg123-strip rbash sha384sum gtkdoc-mkhtml gpg-connect-agent h5c++ hwloc-ls pnmmargin gio dhclient mpathpersist named idl2wrs pnmscalefixed gslj ntpdate perror avr-objcopy mkntfs rshd dvtm cmark pdfcslatex ecryptfs-umount-private hxunpipe ociodisplay vsd2text gdbmtool pon dviconcat gd2togif pax deallocvt ed uppltotf ideviceenterrecovery msguniq h5redeploy jcmd rst2man.py e2label qmlscene6 fakeroot remote-viewer era_check dpkg-query llvm-remark-size-diff valadoc-0.56 lli luatools patchwork tabulate elogind-inhibit gif2webp pacsort ximtoppm jsonschema mpic++ ideviceinfo pinentry-qt nfsdcld fixqt4headers.pl exportfs tfmtodit gtkdoc-rebase testshade hardlink h5watch xfs_growfs lowdown dunst qmicli f2py ppmmix msgfmt daxctl driverless illinkanalyzer idevicecrashreport mkinitcpio gcc-nm calcurse-caldav pw-link utmpdump ppmtoleaf dbus-binding-tool chktex cjb2 arm-none-eabi-readelf python-argcomplete-tcsh lxshortcut ctwill-refsort testpkg potrace source-highlight-settings winecfg milc-color fitstopnm magick-script ppmtouil tipc picom-trans javac mtp-thumb xzgrep aomdec wopl2ofm edgepaint speexdec nmtui-edit man dmenu gv2gxl kpsestat itstool efibootdump tdbrestore llvm-cat taskset infotopam rmdir clang-refactor exrenvmap krb5-config shuf genbrk nvidia-ngx-updater pee gettext.sh git2 pactree colcrt qmk pydoc3.11 uglifycss ibus-daemon g-lensfun-update-data llvm-mc ip6tables-save avahi-set-host-name debugfs.reiserfs fax2ps gp-display-src plipconfig hxindex sed ktrash5 sv remote_thr vpxdec ppmchange es2gears_x11 latexdef scrot winegcc xfs_metadump bunzip2 h5perf_serial wineserver unzstd pnmquant nfsrahead mariadb-config pnmtopnm gftype e4defrag ebook-polish ldnsd hwloc-distrib nl-neigh-add grn sbcenc krita_version mmafm xetex nop lighthouse avr-ld.bfd qmlplugindump-qt5 dialog avahi-resolve-host-name memusagestat spa-acp-tool pi3topbm avr-gcc clippy-driver expr teamdctl kde-geo-uri-handler nl-fib-lookup kcutiltest plugctl transicc acpid syslog-ng-debun espeak spirv-remap kcpolymgr ppmdist lvresize isaset virtnodedevd snmpbulkget wine-preloader sndfile-play mdoc-assemble mariadb-import pamtooctaveimg fd filefrag newsboat named-checkconf split zzdir ppmddumpfont mawk mariadbd fullcircle rst2html pipewire-pulse nc tsig-keygen fftw-wisdom pdfroff snmpnetstat mtp-hotplug cistopbm zipnote nl-link-enslave simpleexpand proptest aalib-config ipcs slabtop mujs mount.ntfs nl-pktloc-lookup mdatopbm broadwayd docker-compose pinentry-emacs gc lowntfs-3g gtk-query-immodules-3.0 chgpasswd fincore cargo-miri named-journalprint aplay arm-none-eabi-objcopy thin_dump virsh nfsdclddb inproc_lat resize2fs exrmultipart pnmpaste procan nping pacinfo dvitodvi dfuse-pack ntfsdecrypt idevicedebug chattr toast geoiplookup6 tmpfiles xournalpp psl mysqlslap ntfsinfo showkey pbmtoepsi pltotf yelp-new fail2ban-server dtc pbmtomacp gst-device-monitor-1.0-32 luajit-2.1.0-beta3 cacaclock pamscale pyftsubset ppmfade rst2latex.py 2to3 xclip odvitype makealias lvm-cache-stats xzcat orterun pidof nspr-config ocioarchive gbkpdflatex macpack wallpaper unicode_start mysqladmin nl-qdisc-add inxi nsec3hash ffmpeg python aa-genprof x86_64-pc-linux-gnu-gcc-ar ntfsls giftool dmevent_tool bzip2 pvchange pinentry-gtk-2 t1testpage logsave pnmsplit moar mariadb-install-db snmpbulkwalk readprofile _mocha ppmtoyuv gspell-app1 yq mariadb-conv gobuster mono-configuration-crypto watchgnupg dvi2tty gst-transcoder-1.0 mkfs gprofng tex egrep brave pnm2png mpicalc ppmtobmp llvm-objcopy e2undo arm-none-eabi-size sndfile-concat kwalletd5 audisp-af_unix mtp-sendtr rst2s5 xmlrpc_pstream djvudigital augenrules b2 osinfo-query powertop png-fix-itxt-32 cameratopam pgmmake passwd chronic mpeg2dec head nvidia-cuda-mps-server wvtag jfs_mkfs cpupower psfgettable parecord grpck vacuumlo axohelp pic2graph pg_checksums clang-cl pbmtonokia rpc.statd mapscrn ebtables-translate pamundice mtp-filetree uclampset gost12-256-hash icupkg llvm-rtdyld unlink nl-list-caches rst2html.py fc-validate ldns-verify-zone look texhash qmltestrunner-qt5 pprof rst2odt_prepstyles.py mpicc openssl-1.1 grub-mkstandalone ntfssecaudit paccheck pk-example-frobnicate cefconv kpropd pamtohtmltbl iptables-legacy-save gtk-update-icon-cache wxrc live-server virtnetworkd nl-cls-add leaftoppm mkfs.btrfs wpg2raw mpost e2freefrag nl-link-set getpcaps db_load asciinema stunbdc speedtest fc-pattern xclip-copyfile gtkdoc-fixxref hxname2id clang-linker-wrapper mariadb_config blkdiscard djvutxt bjam patch ip6tables-restore-translate zdiff setvesablank ts_calibrate vmmouse_detect pw-play lli-child-target mysql_find_rows pcre2test diffimg c_rehash csplit x86_64-linux-gnu-gcc pnmtojbig pjtoppm chwb2 nl-tctree-list corepack lex pbmtomatrixorbital virt-manager teamd latex ttf2tfm vala-gen-introspect groupadd proxychains makeconv glilypond ortecc llvm-tapi-diff eglinfo ovp2ovf gawk-5.2.2 msgcat gst-typefind-1.0-32 amidi java2html xtables-monitor dpkg-scansources mariadb-binlog ppmtopuzz maketx mfluajit mariadb-ldb js102 arm-none-eabi-ar avahi-publish-service kpseaccess kvno iptables-save dvtm-status dbus-cleanup-sockets setfont pnmtorle btrfs-convert newgrp nbd-trplay nbd-server aa-logprof MagickWand-config pacsift pdffonts babl sln intltool-extract jfs_fscklog mysqld winemine convert zzxordir pnmalias ld.gold setcap llvm-gsymutil connmanctl showjournal set-wireless-regdom python3-config hxmultitoc xindy.mem mdassembler hxcite-mkbib pfmtopam nfsconf v4l2-dbg tkmib mkbundle pktogf neato mkfs.ext4 marksman kpasswd umount.ecryptfs_private alsaloop tclsh8.6 pgmtopgm fsck.vfat pamdice lame bc arm-none-eabi-lto-dump mariadb-check dmenu_path pgmslice amdgpu_stress transform r-upmpost pktopbm pg_isready healthd tdbbackup systool wsimport happrox dmypy arm-none-eabi-addr2line uplatex-dev pamtofits montage wsrep_sst_mysqldump strace fc-cache-32 xvminitoppm bootlogd pvs dash auto-cpufreq-remove dnssec-revoke fftwq-wisdom kexec scp symkeyutil gts2stl btrfs-select-super spottopgm acpi_listen h5clear rsync snmpstatus hxremove pdftohtml pamwipeout nslookup hxselect peek updvitype zzz libpng-config testlibraw env_parallel.tcsh lzless dpkg-parsechangelog vacuumdb aria_dump_log groupmems top zeisstopnm mount.exfat-fuse gacutil wordgrinder mk_isdnhwdb ppmtoyuvsplit ppmflash sensors-conf-convert fribidi gp-display-html remote_lat ifconfig gdisk repo-elephant orbd getfattr hxnsxml odvicopy iso-info mktexfmt arm-none-eabi-ld.gold dbus-test-tool archlinux-java obj2yaml pbmtopsg3 dpkg-name caca-config rcp xapian-delve twolame avahi-resolve-address kcforesttest groffer dwp dav1d gtk4-launch thin_rmap pamstretch bashbug ziptool pbmtoxbm md5sum xtrace captest conjure pidwait gs keyring zstdless pslog virt-viewer dumpcap fonttools scroll tiffcrop era_restore touchpad-edge-detector sord_validate magick pkttyagent avifdec avr-c++filt blkdeactivate lv-tool-0.4 nmtui clang-move avahi-discover ts_verify psresize ocsptool gtk-builder-tool pnmnorm winefile kbuildsycoca5 amrwb-dec mcookie zic nasm gimp-test-clipboard-2.0 shellcheck ssh-keygen vptovf ntptime nss-config sftp gdk-pixbuf-csource qmleasing csepdjvu dirb intltool-prepare vue-language-server lv2bench distro lexgrog inotifywatch docker-init vgconvert mknod m4 userdel pnmtoxwd lynis update-leap FileCheck botan xml-rpc-api2cpp pw-cat gtk-launch wordforms setfattr avr-elfedit zipcmp giftopnm sgdisk addpart syslog-ng stund graphml2gv mysqld_multi dumpe2fs mono-api-info pnmquantall pbmtoescp2 sudoreplay tune2fs llvm-mt texexec gkbd-keyboard-display tcat who mysql fstrim pacrepairdb es2_info tabs iptables-legacy-restore ijs-config sleep mtp-emptyfolders platex lv2specgen.py xzmore register-python-argcomplete choom iv mariadb-fix-extensions key.dns_resolver dfu-programmer pfunct nfsdclnts mysql_client_test vimdot post-grohtml llvm-sim pg_amcheck orte-server qvidcap parallel diffpp encodedv grolj4 dpkg-buildflags qemu-keymap gcore nl-link-stats mdb_load arm-none-eabi-as pbmtozinc wires fc-query spirv-opt resize.f2fs ogonkify rpcctl inkscape vgexport named-rrchecker h5stat dotnet dvidvi dict qconvex vde_autolink aa-complain makejvf gtk-demo env_parallel tdbtool strings rev otr_sesskeys llvm-undname p0f-client ldns-chaos sndfile-convert ppmtopgm pdftocairo moc-qt5 xorriso winebuild ts_test_mt postman enchant-lsmod-2 jeprof dvipos lvrename exrstdattr llvm-dwarfdump updatedb aa-easyprof calibre-smtp gawk pw-encplay find pgbench jbig2dec pbmmask msql2mysql mtxrun vapigen monodocer clang-reorder-fields ts llvm-tli-checker chfn tput ppmtoterm containerd-shim clang-pseudo llvm-modextract halt funzip aa-disable doas dpkg-trigger wordlist2hunspell v4l2-sysfs-path ddns-confgen groupdel mono-find-provides iproxy rustup manpath ppmtoppm xdpyinfo gencfu rmiregistry ldd aa-features-abi bond2team cat spa-monitor paperconf pamtogif lvdisplay pw-reserve combine inkview djvm runuser tor-resolve includeres sponge pydoc xfce4-kiosk-query mkfs.reiserfs dvilj4l sndfile-interleave mysqlcheck ppmtv pinentry-gnome3 cd-read kdestroy f2py3.11 gst-stats-1.0 escapesrc nl-link-release ccomps nologin gv2gml chvt nl-cls-delete ps2pdf14 arm-none-eabi-c++filt pdfcsplain db_stat dict_lookup btrfs-image git-cvsserver gpg iptables-translate pg_config mariadb-admin timeout connman-vpnd mcomix xdg-dbus-proxy dbus-launch ebook-viewer djvuserve jemalloc.sh vde_cryptcab request-key vedit pamgradient fstopgm panelctl half_mt jfs_tune tree-sitter ecryptfs-wrap-passphrase mysqld_safe_helper mmdbresolve vscode-json-language-server vgimportdevices pppd rg fail2ban-python ompi-server osirrox pstops disco tload ociobakelut yelp-build vipw libinput avr-gcov-dump virtinterfaced infotocap gftodvi certutil otangle groupmod msgconv pamthreshold timeshift avr-objdump rawshark sshd sdl2-config convert-dtsv0 bbox lualatex-dev pgmtoppm pngtopam tiff2ps nl-route-add zsh-5.9 ndptool dec265 st chcon mono csh udev-hwdb lvmconfig ncursesw6-config pamoil py3smi icuinfo db_printlog gegl sherlock265 rawtopgm ssh cxpm file ctags mkfs.xfs keynav cargo-clippy secret-tool mtp-newplaylist ociolutimage rtcwake certbot ntfsclone ifdata cmp ppmtopjxl fusermount3 pamfixtrunc pamstereogram ilbmtoppm redshift pyxel pwconv mkfs.minix hxcite futurize dirmngr dpkg-genchanges pacreport spctoppm clang-format edonr512-hash ldns-test-edns pdf2ps calibre-server pnmenlarge ifuse granite-demo eapol_test mfluajit-nowin psktool xtables-legacy-multi tshark ppmhist rankmirrors nl-cls-list vgdb bd_list_titles systeroid python-argcomplete-check-easy-install-script ppmcolors tiffmedian ausyscall mltex xterm xindy.run sxpm elc3 pavucontrol ldns-dpa gtk4-update-icon-cache db_recover wmf2x umount vala isosize mariadb-client-test-embedded vsd2raw ppmcolormask clang-offload-wrapper newuidmap iconv unzzip-big rmid ldconfig wrs pyright nmcli ppmrainbow fcplay cg_annotate isadump pg_dump kchashtest dhcp_release6 tickadj haveged soelim zzxorcat nm-online parse.f2fs ln llvm-xray libpng16-config mount.fuse3 tracegen-qt5 qemu-system-i386 cefspdflatex eyuvtoppm setpci xq mtp-getplaylist calibre-complete rpc.gssd cef5pdflatex wine64 dmidecode cacafire setsid python3.11-config h5copy gdk-pixbuf-pixdata gwe ssh-agent twopi ldns-mx escp2topbm metaflac pglobal utmpset zforce hltest pbmtoplot infocmp pbmtocmuwm cacademo stl2gts yarn avr-ld llvm-otool anytopnm systeroid-tui gst-tester-1.0 mpiexec opj_decompress whois ecryptfs-verify wpd2text pamsummcol ppmtoneo sfdisk lsinitcpio grip ranger vlna untoast tomlq peekfd iptables-legacy ppmquantall iftop kcdirmgr tnameserv llvm-bitcode-strip lsusb cert2spc ppmnorm dictunformat pcdovtoppm argon2 wvgain xrandr mount.exfat pamaddnoise net-snmp-create-v3-user 7zr blkmapd wpa_cli msgexec cache_metadata_size ps2pdf mariadb-tzinfo-to-sql pamtojpeg2k syslog-ng-ctl mujs-pp sxiv neomutt genrb imlib2_poly envsubst sbcinfo mkfs.msdos tac openssl xorrecord secutil wxrc-3.2 ifstat aa-notify nproc hexdump paxcpio gst-device-monitor-1.0 pamexec decode_tm6000 ppmtotga bwrap wname ldns-revoke fix-qdf pnmmercator ldattach archlinux-keyring-wkd-sync html2dic xfs_logprint fzf-tmux mkfontscale gnome-keyring-daemon scriptreplay pnmarith ffprobe lrs2lrf opal_wrapper cargo-fmt sendiso tar gifbuild runc jconsole orte-clean pacrepairfile count lastlog hxnum runsv cython gxl2dot desktop-file-install update-grub unpack200 uniq db_upgrade sc pbmtomrf aec pacman-db-upgrade env_parallel.sh bibtex8 gslp chwb ibus xdo nl-class-list llvm-size brushtopbm lualatex zlib-flate which cmx2xhtml mariadbd-safe-helper qvoronoi cupsctl llvm-libtool-darwin dir avr-gcov mono-hang-watchdog gimptool nl-qdisc-delete qml dpkg-realpath qdbuscpp2xml rc-shutdown arp calcurse context pamarith ts_print_mt objcopy arm-none-eabi-ranlib mtp-albums dnssec-settime f2fs_io xmmv webpng pammixinterlace gd2topng clang-change-namespace mogrify wsrep_sst_rsync_wan sensors-detect makers arpaname vdecmd convert-mans texluajitc bg5latex pamtowinicon unixcmd twill unix_chkpwd dvipdf ffplay makecert pnmcat env_parallel.ksh pgmtosbig ddbugtopbm magnet-link pbmtogem gtkdoc-check rdma wovf2ovp ppmtomitsu srt-file-transmit autoupdate xfce4-panel exrinfo xdg-desktop-icon mkfs.ntfs import dot_builtins mf-nowin vgcreate artix-meson kwallet-query dvitomp virt-admin rcc-qt5 nf-ct-events usb-devices nfs-cp gsdj500 Xorg gjs-console gsftopk ldns-config resize sherlock mkfs.ext2 lsw grub-mkpasswd-pbkdf2 pps cxl modutil rst2html4.py hishrink cmx2text yapf-diff virtvboxd jxlinfo xxh128sum states clang-check privoxy hxunxmlns sfv-hash qcatool-qt5 protoc ipf-mod.pl scalar llvm-opt-report ippfind poweroff nameif dvispc vbltest arping pamstack djxl libwacom-list-local-devices arm-none-eabi-gcov-tool iptables-nft-save qdelaunay raw-identify tex2xindy thin_ls orc-bugreport ntptrace qmltestrunner cgdisk luac5.4 findmnt gtkdoc-mkpdf clang-doc pamvalidate setvtrgb chezdav bzz ip6tables-translate rfkill ts_finddev x86_64-pc-linux-gnu-gcc hxclean mkocp wmf2eps devnag pylupdate6 arm-none-eabi-elfedit sha512sum rndc-confgen sqlsharp lc article_md pcre2grep modularize taglib-config scan-build trietool containerd-shim-runc-v1 ldns-keyfetcher kcdirtest guile-snarf ts_print allec mypy pg_dumpall col snmpdf gftopk t4ht pw-profiler png-fix-itxt pdftoppm psfaddtable zfgrep eu-objdump x86_64-pc-linux-gnu-g++ hjson woff2_compress xapian-pos dictfmt_index2word ts_uinput qmlmin-qt5 uuidgen nl-qdisc-list glslangValidator lua5.3 killw expiry sliceprint cython3 sgitopnm fixproc qrencode annotate qemu-edid eject nl-classid-lookup xapian-replicate rst2html4 gpm gtf rsm rhash opl2ofm realpath synctex xslt-config reiserfsck orte-info https pevent c99 iecset fftwf-wisdom lzmore mpirun woff2_info dnsdomainname fiascotopnm aconnect gcov-tool heif-thumbnailer pbmminkowski palmtopnm llvm-dlltool acyclic tex2aspc gvcolor dnssec-dsfromkey nf-ct-list cargo guild startx resizecons dtd2rng sst_dump dpkg-distaddfile tbl X grub-mkconfig kpsepath ps2pdf13 ecryptfs-insert-wrapped-passphrase-into-keyring djvuextract proxy pdfseparate rtorrent ldns-testns pbmtodjvurle sn kcstashtest calibre-debug makepkg ecryptfs-migrate-home hxcopy fgrep makedb geqn pngtogd2 setmetamode tangle fzf ppm2tiff screen dvipdfm fc-cache avr-readelf dmeventd hxxmlns pw-metadata ppdi mag msggrep llvm-extract pam_timestamp_check eu-elfcmp touch start-statd gifview bscalc genxs profile2mat.pl ociowrite SvtAv1EncApp pnmtofiasco tr thefuck pr pg_controldata libcamerify xclip-cutfile grub-file krb5kdc wtp bshell idectl avr-addr2line clockdiff bst djvups dnssec-verify ebtables-nft hxaddid keytool cvt pkgdata xdg-user-dirs-update gpgscm wish reset lpmove ocioconvert inotifywait groff pkaction xml2asc pass lv2_validate preparetips5 exo-open ppmtopict lp gvmap.sh webpmux pandoc kpsexpand gssdp-device-sniffer jstatd msidb insmod bat snmp-bridge-mib kbd_mode display-coords certtool sirtopnm dmraid virtqemud gencnval pcre2-config yat2m cvtsudoers firejail gost12-512-hash paclog-pkglist bjoentegaard sqlhist memhog pnmcrop alsabat mdbrebase passmenu autoscan rpcdebug virt-qemu-run pbmtoppa pamsumm clang-extdef-mapping libwmf-config nf-queue idevice_id exfatlabel split-file simpleindex es2tri gtk-query-immodules-2.0 tail torify mariadb-convert-table-format chktrust jo glib-gettextize dkms llvm-cov rzip mbim-network qv4l2 mangoapp Xvfb avr-gprof mtp-connect pdftops virt-xml jsonpointer gxditview keepassxc x264 ed2k-link yaml2obj xmlwf lsns arm-none-eabi-c++ yes dwebp steamdeps ausearch net-snmp-cert udevadm pg_restore unzzip-mem bspwm dpkg-vendor winemaker integritysetup wpd2html has160-hash agentxtrap wireplumber gegl-imgcmp dvipng last gnome-autogen.sh p0f-sendsyn lvm containerd yuvconvert k5srvutil bison nl-monitor pw-dump h5mkgrp py7zr pcre-config pnmtopalm pwd kcprototest kctreetest partprobe locale-gen db_tuner x86_64-linux-gnu-gcc-nm arm-none-eabi-objdump psselect lit base64 getcap edit unterm vmwarectrl pampop9 qmltime-qt5 grub-mkrescue llvm-jitlink lz4 llvm-nm 7za iptables-restore foliate acpi cabextract source-highlight-esc.sh rubberband getkeycodes pnmindex djvuxmlparser dumpsexp clang-tidy zip solid-hardware5 qml-qt5 pfb2pfa x86_64-linux-gnu-gcc-ar pampick mupdf javap launcher.jar ts_print_raw unxrandr dbus-uuidgen createuser gen-enc-table xdg-settings pdfmom padsp gdbm_dump tdbdump unzip genl jpeg2ktopam h5unjam lrfviewer gensprep inetcat heif-convert colrm display-buttons tftopl cec-follower pod2texi users containerd-shim-runc-v2 db_checkpoint mkfifo parset winedbg ir-ctl filan mariadb-dump mfplain ppdmerge osage sputoppm cchardetect mozroots netcat xfs_bmap linux32 mdb_stat jq wbmptopbm wmf2svg otr_readforge xclip-pastefile virtstoraged vte-2.91 tcsh compile_et grub-mount aa-enabled lz4c function_grep.pl lzgrep sndfile-cmp xfs_ncheck kbxutil view luac5.2 pfetch mysql_secure_installation exr2aces sharkd paccapability nscd pamperspective icu-config st4topgm flock mariadb-setpermission dvilj4 hwloc-compress-dir gamma4scanimage gnutls-cli-debug extract_a52 appstream-util cpaldjvu qmleasing6 mono-service librewolf prlimit nvidia-bug-report.sh pphs dconf smokehouse dust lsb_release llvm-dis rust-gdb gpgv gemtopnm setreg rstpep2html.py cplay spirv-val mono-boehm pacat mtp-playlists libgcrypt-config pg_archivecleanup dpkg-source spicy-stats gts-config libusb-config chwn pdfetex ssh-copy-id pngtogd update-alternatives captoinfo speexenc aulast wnckprop ducktype cache_restore stubgen aa-teardown pdftosrc cache_repair e2fsck getsysinfo pdftexi2dvi optscript calibre xdg-open nl-class-add ppmtoeyuv lvmpolld mtrace g-ir-scanner bg5+pdflatex wx-config gtk-lshw unlz4 vala-gen-introspect-0.56 lookbib soapsuds zegrep syncqt.pl qemu-img xfs_copy imlib2_test avahi-bookmarks pgmoil nice zsoelim rsh min-nbd-client mkafmmap cpuid_tool eu-elflint imlib2_load ijs_client_example wsgen llvm-lipo rmic ppmtopcx lvs thin_restore pg_rewind gtk-builder-convert aclocal nm busctl xdg-email pbmtoybm rustdesk zenity dpkg-divert dmstats wall mdoc-update tiff2bw luac5.3 innochecksum rpc.nfsd aa-cleanprof ls avifenc NetworkManager pacman mklost+found xxhsum docker mkindex mmcli imlib2_conv blkpr hunspell bd_splice qmake-qt5 valgrind virt-install avstopam clang-cpp gamemodelist markdown_py get-versions paxtar mount umount.ecryptfs gendict pamslice fsck rst2s5.py asc2xml httpx pamfile test postmaster qmltime pacsync addgnupghome pamseq ebook-meta prettier anacron hdrcopy fsck.msdos mdlt gsdj dhcpcd ex avr-g++ dbus-monitor migratepages aria_ftdump usbhid-dump yapf idiff detex mysql_fix_extensions sqldiff dselect bmptopnm edonr256-hash libassuan-config gdbserver pfbtops icontopbm pw-record cpufreqctl.auto-cpufreq snmptable fmt slogverify xfs_fsr dvilj2p udevd grub-fstest gfeeds sprof genl-ctrl-list ccls pg_test_timing libieee1284_test llvm-ifs dfu-prefix ldns-resolver ps2pk fsck.ext3 pdfjadetex xfce4-popup-directorymenu showstat4 echo xtables-nft-multi rst2xml.py pscap rtacct pgmbentley ldns-version ngettext xzfgrep devour arptables-nft-save pinentry-curses aggregate_profile.pl gp-display-text pampaintspill resgen2 sensors diff euptex pamtouil dpkg-fsys-usrunmess dumpkeys modules-load type1afm jfs_fsck pnmtotiff ps2ps rst2html5 mdvalidater out123 arm-none-eabi-gcc giftogd2 xargs texlua lprm csi ct2-opennmt-tf-converter pnmtofits dockerd mpifort uncompress dvbv5-zap virtsecretd dhclient-script tclsh c44 pdfdetach pstree.x11 bspc gemtopbm spicy-screenshot mpg123 dlc3 vgmerge ispellaff2myspell lua nfs-stat whereis aprofutil pnmtile xfce4-about heif-info servertool mflua-nowin ntfscat unzip-mem iscan-registry virtnwfilterd xsetroot ar qmlformat-qt5 objdump run-clang-tidy blkid gvgen pnmtoplainpnm gpasswd upbibtex kwriteconfig5 sjispdflatex dmcs resolvconf fixqt4headers.pl-qt5 otftotfm lessecho remuxer llvm-cxxfilt pk12util dnslookup qmltyperegistrar-qt5 ibus-setup stty memusage lstopo-no-graphics zzcat local_lat umax_pp activate-global-python-argcomplete urlscan zrun kdb5_util slattach dvb-fe-tool hwloc-gather-cpuid pnmtorast winecpp raw-thumbnailer pnmhisteq ppmrelief teckit_compile gettextize mpv ssltap xapian-metadata mariabackup ktutil llvm-debuginfod-find qemu-io ldns-compare-zones makemhr tldr eglgears_x11 jfs_logdump my_print_defaults spa-json-dump sclient dfu-suffix chacl osinfo-detect wew mbstream update-ca-trust gapplication killall gd2copypal mysqlimport llvm-strings xdg-desktop-menu clang-apply-replacements make dpkg-split rlogin bdftopcf aseqdump ppmtoicr renice avr-size eu-make-debug-archive dnssec-keyfromlabel findssl.sh toe git-upload-pack g-ir-generate nl-route-delete verify-uselistorder udisksctl pamtotiff nl-neightbl-list myisamchk pdfinfo pamcomp pg_waldump pamlookup setlogcons kpsereadlink ModemManager img2txt h5repack dumpexfat script cache_writeback guile ghostscript snmpping libart2-config vgcfgbackup monodis ceflatex stest telnet db_verify local_thr lv2apply com.github.johnfactotum.Foliate ts_test ctrlaltdel ppmshift pamenlarge go thin_check mount.ecryptfs_private gtester dpkg-statoverride ntfsrecover gpgtar modetest asn1Decoding cpp2html pcxtoppm chm_http rename kpartx winedump captype setleds xkbcli avahi-daemon mariadb pbmtoptx xzless autom4te krita mysql_install_db fsck.fat sane-config isutf8 fax2tiff brotli meson pbmtolj mtp-sendfile sancov xfs_admin ncpamixer wsrep_sst_backup tsort dpkg-gencontrol df gpinyin avr-strip autrace vgreduce routel msgen false pbmtoibm23xx factor pbmtomda depmod dnssec-keygen spawn_console dtach wmf2fig arm-none-eabi-gcov mysqlaccess ppmtopj fsfreeze exa mono-heapviz solid-power setterm fimgs ntfscluster vgsplit ldns-gen-zone cfdisk ecryptfs-add-passphrase wmctrl omfonts partx avahi-autoipd eu-ranlib ldns-rrsig fadvise gdb kacpimon g-ir-annotation-tool jpegoptim join cythonize multipathd mkpasswd spicy ocioperf pdfclose db_deadlock gsl-histogram loginctl kbdinfo reordercap sndfile-salvage filecap f2py3 pamtopam dvilualatex avahi-dnsconfd rasttopnm swapon llvm-pdbutil gpgrt-config env_parallel.fish unzipsfx lckdo ecryptfs-rewrite-file logger link jemalloc-config weave grap2graph ppmtomap db_convert znew su srftopam pgmnoise idiag-socket-details sdl-config usermod pdfimages findfs e4crypt zstdgrep setxkbmap 4channels qmlplugindump hpftodit ppmmake GraphicsMagick++-config derb doesitcache pdw js78-config pg_resetwal getsubids pbmreduce rst2xml vi btrfstune sg cryptsetup llvm-lto eu-readelf e2scrub_all vde_over_ns newgidmap mtp-albumart pbibtex ecpg calcurse-vdir qrttoppm luit ssh-add unprocessed_raw psicc tiff2pdf gvpack kchashmgr dvitype whoami wavemon idn2 bzcat snmpd gnutls-cli xeglgears pnmtoddif pamixer ppmbrighten setfacl aria_pack mev pnmcomp grub-render-label jfs_debugfs qmlcachegen-qt5 qtwaylandscanner lsusb.py pvresize mdb_dump wrjpgcom firemon mk_cmds localedef ldns-update kreadconfig5 kiconfinder5 mozcerts-qt5 mpif77 nvidia-sleep.sh snmpgetnext xzdiff ifnames pinentry-tty rgb3toppm vbc pamfunc checkupdates g++ arm-none-eabi-g++ dictfmt autoreconf base32 eqn2graph dropdb SvtAv1DecApp btrfs-map-logical lvmdump cpufreq-bench iinfo imlib2_view hxuncdata volume_key faillock net-snmp-config ranlib ip6tables-nft-restore printf sim_client djpeg env_parallel.bash gss-client idevicedebugserverproxy cdda-player vgimportclone pacremove nohup ahost rustfmt hilatex pkg-config pbmtoln03 snmpconf srt-live-transmit aa-audit qvkgen readlink uxterm xzdec gfi vdpa mysql_config visudo ntfs-3g snmpwalk mkreiserfs ulockmgr_server mono-test-install djvumake vpddecode spirv-lesspipe.sh xeglthreads unzzip btrfs contextjit uname tcpdump avr-nm gunzip mousepad wtf idevicebackup ppmquant gentrigrams ksu lzcmp vmcore-dmesg pal2rgb wsdump repstopdf callgrind_annotate rustc mpiCC iptunnel wpa_supplicant troff mariadb-show clxelatex makeinfo eqn wirefilter pango-view xdvipdfmx virt-qemu-qmp-proxy pdfgrep spice-webdavd diagtool mono-cil-strip automake dtdiff npm streamlink ntp-wait setkeycodes llvm-ar repo-remove wdctl llvm-profgen pstopnm spirv-lint tig notepad pgmmedian cupsfilter pk2bm notmuch extconv qasmixer libwacom-show-stylus h5delete linux-boot-prober os-prober gsettings b43-fwcutter eglewinfo virt-xml-validate vde_router vde_plug2tap pyftmerge onig-config msiexec pango-list pacini mkexfatfs ctr vdir env mariadb-embedded lua5.4 bcomps parcat paste luacsplain aserver pnmremap pppdump migspeed fdtput mrftopbm mkfs.vfat gimp-console-2.10 docutils vidir jdb mouse-dpi-tool xapian-tcpsrv mariadb-plugin mergecap gio-querymodules aleph pnmdepth fgconsole 2to3-3.11 multirender_test gst-stats-1.0-32 img2webp vscode-html-language-server cancel aclocal-1.16 rst2odt.py roff2pdf resolve_stack_dump rcc wsrep_sst_mariabackup gdb-add-index virt-qemu-sev-validate vscode-eslint-language-server gtkdoc-mkhtml2 makeindex boxdumper ntfsfix awk avahi-browse-domains bsdtar chown pkgconf xzcmp micro pbmtomgr h5fc ppmtolj thin_metadata_unpack onlyoffice-desktopeditors alsa-info.sh x86_64-pc-linux-gnu-pkg-config koi8rxterm uic-qt5 rsspls strip gsl-config crecord glxewinfo sensord nfnl_osf psfstriptable pip3.11 uuidd bdftogd auditctl md2html swapoff mono-gdb.py ntpdc ninja srt-ffplay gdcmpgif lv2ls myrocks_hotbackup autoconf pacdiff llvm-reduce x86_64-pc-linux-gnu-gcc-ranlib pamedge eu-findtextrel nfsidmap x86_64-linux-gnu-c++ pbmtolps attr hxnormalize grub-mkfont llvm-cxxdump svcutil flac git gpgsm imlib2_grab ddjvu dvicopy latex-dev pnmtops pyuic5 vnstatd sserver ntfscmp whiptail gpgparsemail utf8mex iconvert pamrubber slop qmlimportscanner-qt5 unrar mangohud pbmtoascii arm-none-eabi-gcc-ranlib pnmfile pwhistory_helper rawtoppm editcap mdoc-validate dtd2xsd mconfig avr-gcc-ranlib rlogind pdiff desktoptojson al expac gtk4-broadwayd pnmsmooth llvm-tblgen tiffdither msxlint bs2bstream kadmind pamdeinterlace pbmtox10bm ebook-convert hostname qmi-firmware-update grpunconv pipewire-avb clang-include-fixer vmafossexec check_hd screendump cddb_query lslogins g3topbm dnsmasq h5debug screenkey gamemoderun tie lsof usbredirect ntfstruncate c++ mkcert cmuwmtopbm openvt wnck-urgency-monitor libwacom-list-devices snmptest h5ls pgmtofs bdftruncate nginx mf yacc catman nawk testshade_dso gsx vterm-ctrl grog rtkitctl xorrisofs pcprofiledump qhalf vgs sort sudo_sendlog ppdc dpkg-maintscript-helper wsrep_sst_rsync hwclock drill dvb-format-convert fc-scan fuser mariadb-upgrade substrings.pl qmlscene-qt5 hpcdtoppm plistutil com.github.bleakgrey.tootle visualinfo cupsaccept bd_info fetch-ebook-metadata virtlxcd circo ppmglobe gst-discoverer-1.0 jinfo as cpp mdoc pvdisplay sldtoppm glib-compile-resources mono-service2 xmlcatalog xml bugpoint vpxenc rds-ctl lpc dictfmt_index2suffix readelf eu-ar chpst nvim texluajit vgchange sudo stat pattrs html-minifier ecryptfs-find lsblk llvm-link json_verify ntfslabel lpq bzgrep waitpid intel-virtual-output zipcloak spirv-dis pacman-conf hwinfo ppmspread mariadb-dumpslow nvtop tth-hash clrunimap cythonize3 pwdx pw-loopback JxrEncApp dpkg-scanpackages picom opj_compress lsipc ddgr pamrecolor aulastlog testrender virtchd gifdiff scriptlive cheetah pacfile grub-mknetdir dnssec-cds lvmdiskscan pyrcc5 tqdm updpkgsums pbmtobbnbg wemux uglifyjs prtstat avr-ar gcolor3 i686-pc-linux-gnu-pkg-config avahi-publish-address web2disk mkofm preconv sysctl gawkbug elfedit btfdiff crontab screen-4.9.0 grub-sparc64-setup named-nzd2nzf w3mman arm-none-eabi-ld mount.nfs4 pvmove cache_check kmod pmixcc snmpps valgrind-listener xapian-check runit GraphicsMagick-config wofm2opl aa-decode rdjpgcom runit-init mkswap qdbusxml2cpp-qt5 db_log_verify lrf2lrs psql mtvtoppm setpalette apparmor_status sndfile-metadata-get mtp-files ofm2opl icuexportdata vendor_perl vendor_perl/HEAD vendor_perl/lwp-mirror vendor_perl/exiftool vendor_perl/lwp-dump vendor_perl/lwp-download vendor_perl/POST vendor_perl/GET vendor_perl/lwp-request sysusers lzcat lsfd tor-print-ed-signing-cert hbf2gf opt zipsplit mkhomedir_helper grammarly-languageserver keepassxc-cli virt-pki-query-dn otp2ocp xidel ppmtoxpm sotruss rndc pbmupc reboot wmf2gd gvncviewer gssproxy outocp pbmpscale clang-repl dvipdft chrome-debug arpd quest zipgrep pdvitype groups tiffinfo http nvidia-modprobe lvscan autopoint pbmtowbmp xml-rpc-api2txt agetty speedtest-cli zzxorcopy gts2xyz init luajittex dvbv5-daemon qemu-nbd tiffgt cheetah-compile pppoe-discovery dunstctl xdg-screensaver gobject-query emmet-ls xdvi-xaw xelatex-dev clang adig cheetah-analyze pcretest winicontopam thin_metadata_size pnmrotate vscode-markdown-language-server snmpinform pamtoxvmini ucs2any cdiff qmlpreview6 scncopy dnssec-signzone cupstestppd javadoc bioradtopgm pkcheck wmp kritarunner vgck valac-0.56 mysql_waitpid imgtoppm gropdf ppmdither fsnotifywatch ps2epsi gresource dpkg-mergechangelogs mono-api-html dviluatex faked g-ir-inspect qpdf xfs_rtcp exfatfsck wvunpack libvirtd x86_64-pc-linux-gnu-gcc-13.1.1 gtk-query-immodules-3.0-32 pgmedge pipewire-aes67 grub-editenv json_reformat mariadb-client-test pamtilt pdwtags lshw omxregister-bellagio getconf showdb lzip mycli mdig pamtompfont enumdir_chmLib perl mod hostid dhcp_lease_time analyze llvm-profdata tc idevicesetlocation nvidia-persistenced gencmn umount.udisks2 oiiotool gr2fonttest vkgears ppmtoapplevol mpg123-id3dump xmlrpc xfconf-query connmand links pzstd xvfb-run exrmaketiled dialog-config jiv cpufreq-bench_plot.sh parec xhost texluac dictzip gperl analyze-build mtp-trexist qmlimportscanner bg5conv pivot_root foomatic-rip dpkg-architecture sane-find-scanner jpegtopnm llvm-windres ttftotype42 ss extractres ttfdump cupsdisable mysqltest guile-config ldns-read-zone thinkjettopbm ntfswipe snmpvacm gvnccapture avr-man sload.f2fs lz4cat crond pnmscale pgmhist cupsreject dcraw_half apropos teamnl pfbtopfa validate-pyproject conplay lzegrep poff js78 cupsd lvconvert pamtosrf galculator wheel trietool-0.2 clang-scan-deps whirlpool-hash luajit iptables-apply nettle-hash era_dump core_perl core_perl/piconv core_perl/ptar core_perl/podchecker core_perl/enc2xs core_perl/libnetcfg core_perl/ptardiff core_perl/ptargrep core_perl/pod2man core_perl/instmodsh core_perl/h2xs core_perl/corelist core_perl/shasum core_perl/pod2usage core_perl/cpan core_perl/perlbug core_perl/pod2text core_perl/splain core_perl/pl2pm core_perl/h2ph core_perl/perldoc core_perl/prove core_perl/json_pp core_perl/perlthanks core_perl/streamzip core_perl/perlivp core_perl/xsubpp core_perl/encguess core_perl/pod2html core_perl/zipdetails mktorrent msgattrib imginfo roff2dvi ppmdraw gtkdoc-mkman docker-langserver lvmsar gdbm_load pvck chromedriver llvm-objdump shout hxprintlinks cslatex brctl docker-proxy alsamixer dmenu_run ecryptfs-stat dijkstra loadkeys rpc.mountd dsymutil mountstats src-hilite-lesspipe.sh addftinfo xfs_quota initdb nfsv4.exportd mkfs.bfs paclist qt-faststart btop exo-desktop-item-edit g-ir-compiler cheat pamsharpness h5diff compton-trans cwebp sync arm-none-eabi-gcov-dump extract_mpeg2 vgremove cpio chpasswd hwloc-dump-hwdata lzma idevicenotificationproxy ms_print fsck.btrfs loggen neovim-node-host imgcmp tunefs.reiserfs grops uplatex pdfopen autosp pbmto10x ptftopl etex lpinfo exrmakepreview nl-rule-list nf-ct-add capinfos nsenter unix_update gcr-viewer-gtk4 snmppcap tunelp pgmabel steam pg_upgrade texi2pdf qemu-storage-daemon arm-none-eabi-ld.bfd luac mcs unzzip-mix hdparm pnmtosir cpu-x lkbib lowdown-diff sku xbuild grub-mkrelpath unxz snmpget cef5latex thin_trim kpsewhich ociomakeclf accessdb pip3 clang-query hunzip tootle ppmtogif lynx cacaplay avr-gcc-nm badblocks pbmtoatk audisp-syslog protocoltojson cefpdflatex scanimage nfsstat wsdl2 f2fslabel ppmtoascii jws mp3rtp csc logname serdi chage pamrgbatopng monop cd-paranoia opj_dump mariadbd-safe openmpt123 host xdg-user-dir xfce4-popup-windowmenu paccache nl-addr-delete gm pdftex paclock cluster gp-collect-app giftext gst-inspect-1.0 sem podboat manette-test xmodmap calc_tickadj prefcnt parsetrigrams pnmpsnr cjxl glxinfo amixer pamcrater convert_hd wovp2ovf htop lacheck fdp python-config gdialog uconv brprintconf_mfcj615w mysql_convert_table_format woff2_decompress xkbcomp pbmtocis gtester-report hwloc-diff aria_chk tor-prompt ppdpo psfxtable db5.3 db5.3/db_archive db5.3/db_dump db5.3/db_hotbackup db5.3/db_load db5.3/db_stat db5.3/db_printlog db5.3/db_recover db5.3/db_upgrade db5.3/db_tuner db5.3/db_checkpoint db5.3/db_verify db5.3/db_deadlock db5.3/db_log_verify db5.3/db_replicate bvnc capsh lspci ppmpat expand thunderbird cairo-trace djvudump png2pnm pdbtool wpctl pquery gitk eps2eps zsh dvconnect ps2ascii ntfsusermap qmlscene pcmanfm fsck.ext2 spa-resample gdk-pixbuf-query-loaders nfs-cat sql pwiz.py x86_64-linux-gnu-gcc-ranlib pnmnoraw pnmnlfilt route ct2-opennmt-py-converter pamtodjvurle llvm-rc vgscan nl-neigh-delete zcmp dmsetup ifne scmp_sys_resolver pbmlife bash mkdosfs t1reencode html2text pvscan pwck bmptoppm tmux chwso nvidia-smi drmdevice xfs_db multipathc aomenc mysqltest_embedded gamemoded db_replicate vigr pw-jack qmllint-qt5 pbmpage rst2pseudoxml.py ncat dircolors systemd-sysusers ldns-notify fancontrol numfmt unshare ecryptfs-unwrap-passphrase replace getopt parsort pstree wine gtk4-encode-symbolic-svg rc-sv pactrans gtscompare libtool mflua containerd-stress aa-status vss2text xbanish otfinfo httpie qmlprofiler nodemon hwloc-calc fsnotifywait eu-stack kinit mem_image aa-remove-unknown pluginviewer irssi snmptrapd makepkg-template rst2odt_prepstyles ip6tables-apply libftdi1-config npx iptables-restore-translate pw-mididump mdadm cksum gnome-keyring djvused protonup pw-midiplay vmaf jarsigner pdftotext plog sudoedit llvm-dwarfutil deb2targz mkfs.jfs xml2pmx jest disable-paste ip6tables-legacy-restore rpc.idmapd irqtop efisecdb mmpfb gdk-pixbuf-thumbnailer signcode pamendian kquitapp5 exfatattrib ttx snmptranslate vde_pcapplug tracepath fdisk grub-kbdcomp nl-route-get linux64 ebook-device airscan-discover wsdl gphoto2-config nl-neigh-list pngfix lvextend gtkdoc-mkdb msgmerge klist lastb ebtables-nft-restore test_chmLib ultrabayd rpcbind xelatex geoiplookup mtp-detect dpkg-buildpackage tut pooltype mariadb-backup bash-language-server signver ctracer pre-grohtml media-ctl fc-list lvmsadc x86_64 hmaptool sm-notify e2mmpstatus oslc socat biosdecode p11-kit snmpusm env_parallel.dash freeaptxdec ldns-zcat ompi-clean mendex vdeterm csharp xmrs grub-mkimage ppmdim ppm3d nl-link-name2ifindex jar cec-ctl vss2xhtml nf-log \ No newline at end of file +/usr/bin ftp mysql_embedded xmkmf mono-symbolicate chmod xfce4-popup-applicationsmenu lld avr-cpp wineg++ vde_switch dc osinfo-install-script delv gtbl nl-util-addr openvpn psjoin asciitopgm vgimport llvm-dwp aa-enforce dvilj vnstati avahi-browse pamsharpmap nl-addr-list loadunimap stubtest ssh-keyscan mount.ntfs-3g nf-exp-list automake-1.16 gst-inspect-1.0-32 freeaptxenc ppmrough pw-cli uuclient parallel-moreutils mkfs.ext3 eu-size steam-runtime pacconf vde_plug cut gtk-query-settings clear ebb eu-addr2line pamtopng idevicescreenshot delaunay node pcregrep virtlockd pylupdate5 llvm-PerfectShuffle mariadb-hotcopy dt2dv spirv-cfg peglgears gdiffmk randpkt db_archive yuvsplittoppm sndfile-deinterleave useradd numastat gio-querymodules-32 ts_conf mount.lowntfs-3g kcpolytest grub-bios-setup cfftot1 slsh zstdcat regsvr32 autoheader wineconsole luajithbtex csrcnv ip6tables-nft-save gtk4-query-settings man-recode pbmmake event_rpcgen.py pw-config pasteurize rsv gupnp-binding-tool-1.6 pgmramp tinywm encode_keychange amdgpu-arch grub-probe mount.fuse aafire named-compilezone crlupdate yuv-distortion db_dump era_invalidate moc ld zramctl gst-play-1.0 flex kill ps2ps2 xfs_info runcon stylua grub-mklayout avr-lto-dump kadmin.local fsadm cacaview rst2html5.py mysql_client_test_embedded rifle kdb5_ldap_util uptex iptables-nft-restore getent nbd-client vapigen-0.56 ecryptfsd javah ppltotf grub-set-default usbreset bg5pdflatex pamunlookup indxbib colordiff resizepart postprocessing_benchmark mdoc-export-html rarp snmptrap gjs mail fc-conflist ldns-walk firecfg wc colorit plugreport sbcdec snmpcheck dropuser wpg2svgbatch.pl hxincl mesg ppmtojpeg llvm-debuginfod qmltyperegistrar qashctl ntfscp nvptx-arch lzmainfo mocha rm snmptop mono-find-requires exrmultiview jpegtran pnmtotiffcmyk uname26 dump_syms gdbus-codegen xtotroff xrdb gsnd ntpq text2pcap ppmtoacad afmtodit arandr pcap-config slocate proxy_thr x86_64-linux-gnu-g++ p0f texindex rust-lldb neqn block-rate-estim gphoto2-port-config termshark eza pyserial-ports pamon pw-top gzip nmtui-connect upower sha256sum llvm-diff llvm-readobj xz mpicxx webpinfo ldns-key2ds pyppeteer-install pdfattach litecli arm-none-eabi-gprof checkbandwidth pvremove hwloc-bind losetup dictl kbdrate mktemp lndir gimp-debug-tool-2.0 vercmp dbus-send openal-info xmlrpc_cpp_proxy ufw qmake lutris fallocate fixparts pnmtosgi xdotool optex corrupt_mpeg2 pick zgrep postgres bzmore luatex pam_namespace_helper hxref monop2 pathchk xapian-progsrv mtp-folders ipmaddr ociocheck JxrDecApp trust gpg-error sxhkd svgo gkrw llvm-cvtres ebtables-nft-save msgfilter cdr2raw ppmdcfont dvbv5-scan cllayerinfo showwal ybmtopbm lensfun-add-adapter csplain hwloc-gather-topology xxh64sum showconsolefont remark-language-server lsattr ecryptfs-setup-private pi1toppm ftdi_eeprom optipng composeglyphs t1rawafm obfs4proxy firefox ldns-nsec3-hash upmpost paydept sfdp sjislatex traceroute usbmuxd otr_mackey nbd-trdump printenv virt-clone killwa mkfs.exfat cmx2raw curl-config reindexdb ktelnetservice5 ecryptfs-setup-swap mariadb-test-embedded nf-exp-delete chkdvifont shtab texsis afm2tfm dvibook wpg2svg gdtopng llvm-install-name-tool pw-v4l2 ghc-pkg gsbj mkbitmap mountpoint reiserfstune bzip2recover pacinstall libpng-config-32 snarf llvm-readelf simple_dcraw xmlrpc_transport grpconv mysqlbinlog pgmtexture cargo-make xfs_scrub pnmcut pamtopdbimg mkfontdir platex-dev flask dpkg-deb cefsconv x265 texmfstart dirmngr-client kcgrasstest pkill ragel js102-config xmlrpc-c-config semver ilasm jbigtopnm display pvcreate cccheck pactl connmand-wait-online v4l2-ctl a52dec xauth fsck.minix watch gbklatex gss-server pg_test_fsync xfs_spaceman fdtget fuck pnmtopng axfer parted ipptool pbmtosunicon idn appstream-compose env_parallel.csh fail2ban-client git-upload-archive rletopnm grotty mmroff llvm-mca aplaymidi androiddeployqt6 more xapian-config lpadmin fftw-wisdom-to-conf umount.nfs4 grub-menulst2cfg lscpu myisampack alsabat-test.sh dvilualatex-dev permview fsck.f2fs hxextract clang-16 tty rawtextdump qvkgen-qt5 pango-segmentation mariadb-secure-installation ownership msginit sqlmetal mex dd markdown-it pinentry f2fscrypt gpg-wks-server wpa_passphrase cygdb3 eplain pg_recvlogical [ c89 dot heif-enc virtlogd cert-sync gcc ip arptables-nft cloc nvidia-powerd avr-gcov-tool aseqnet calcurse-upgrade ociochecklut hdifftopam tee w3m eptex ecryptfs-manager eu-elfcompress kctreemgr virgl_test_server mariadb-access httpcfg pnmpad lzmadec myisam_ftdump dictdplugin-config efibootmgr clang-offload-bundler Magick++-config lispmtopgm gst-tester-1.0-32 xml2-config ipcmk virt-pki-validate hxwls mmc-tool hwloc-annotate pngfix-32 getunimap sha224sum fsck.xfs ct2-fairseq-converter sqlformat column spa-inspect djvmcvt jstack ul pgmminkowski glib-compile-schemas x86_64-pc-linux-gnu-c++ e2scrub pdflatex python3 dirname manweb apparmor_parser ptex gdbus fsck.cramfs shfmt mllatex driverless-fax fim pcscd spirv-link dpkg-gensymbols dpkg-genbuildinfo stdbuf pnmtopclxl rst2latex pbmtogo cygdb hxmkbib keepassxc-proxy seriesmeta vgextend captree wipefs spawn_login tiger-hash pg_ctl paru bibtex rbox oslinfo gifclrmp delpart desktop-file-validate arptables-nft-restore otr_modify pdb2mdb cx18-ctl whatis pnmcolormap sim_server nvidia-debugdump mdmon redshift-gtk telnetd arch-meson c-index-test modprobe gst-typefind-1.0 clang-rename pg peverify serialver zmore gtkdoc-scangobj fsck.exfat pbmclean speaker-test vala-0.56 fail2ban-regex signtool dbus-run-session llvm-cfi-verify pamsistoaglyph mdb_copy gpm-root pdbimgtopam orted epsffit nl-class-delete libdeflate-gunzip callgrind_control snmpset tzselect env_parallel.zsh json-glib-format dictd ctstat iconvconfig xxh32sum pnmtojpeg ctxtools vgcfgrestore r-pmpost bzdiff qml6 gst-launch-1.0 legit screen-4.9.1 lua5.2 asn1Coding oid2name xournalpp-thumbnailer paclog lsmem unexpand cef5conv pacsearch ecryptfs-recover-private pamtoavs tificc avahi-publish clang-offload-packager pdfunite markdown-calibre tifftopnm dviselect fdtdump tor amstex android-file-transfer imlib2_show qmlmin bssh rubberband-r3 xinit avrdude nettle-lfib-stream kded5 applygnupgdefaults neo-matrix mysqlshow dpkg talkd uuidparse update-desktop-database nmtui-hostname espanso cjpeg ideviceprovision cec-compliance vterm-dump pw-midirecord sudo_logsrvd m2gmetis shlibsign texi2any prune pkexec login fftwl-wisdom pbmtopi3 grub-script-check pgmkernel pambackground ppmtoilbm unicode_stop aainfo locate h5format_convert numademo tjbench pnmconvol mtp-reset eu-elfclassify gpgme-json dvcont cdr2text xfs_scrub_all info kccachetest lstopo bsdcat wsrep_sst_common gst-discoverer-1.0-32 idle netstat nfsdcltrack idle3.11 ld.so tiffdump nl-link-ifindex2name grub-ofpathname msgcomm chroot kswitch valadoc ytfzf cjpeg_hdr git-clang-format pstopdf bg5+latex python3.11 pamchannel otr_remac llvm-cxxmap dfu-util xwordgrinder cefslatex resgen gtstemplate zdump audispd-zos-remote exrheader mount.nfs orcc setpriv shred pnminvert diffstat egltri_wayland virt-ssh-helper sasldblistusers2 pgcli ijs_server_example pydoc3 ldns-zsplit wine64-preloader zless mm2gv iptables cronnext pngtopnm yank pamsplit pipewire tic lzfgrep snmpdelta ttf2afm niceload lp2 a2ps qmlls6 strace-log-merge h5repart bridge gpgv2 h5import resolveip hipstopgm diff3 rrsync atomx yarnpkg glxgears fail2ban-testcases xmlstarlet dcb xfs_io mysqld_safe es2gears_wayland wgetpaste hxtabletrans muxer msgunfmt neotoppm rd-curves pgmnorm debugfs ctangle chem jailcheck intltool-merge qmleasing-qt5 avr-c++ icu-config-32 cdparanoia svgtopam mysql_setpermission fsck.reiserfs find-all-symbols lv2info idevicename geckodriver gofmt xfce4-set-wallpaper pack200 rpcinfo uchardet pgmtolispm quick-lint-js pause pldd munch pipesz env_parallel.pdksh lvmdevices rc-sysinit nf-exp-add netcap pbmtopk sndfile-info lvchange ecryptfs-mount-private kadmin qlalr-qt5 fsck.jfs mysqlhotcopy defrag.f2fs upmendex calibre-customize nfbpf_compile gregorio ompi_info cp arm-none-eabi-cpp xlinks lpoptions ffmpegthumbnailer ldns-dane mono-xmltool gennorm2 gimp sqlite3 mkfs.cramfs genccode llvm-jitlink-executor thin_repair wattr arecord nano true dumpiso size avr-ranlib gsl-randist myisamlog chromium getfacl mysofa2json p11tool tracegen resize_reiserfs idevicepair kprop ionice kepubify pamflip guvcview run-parts egltri_x11 ctie prepmx nopt ptx llvm-ranlib guile-tools arm-none-eabi-strip ld.bfd pgmcrater lvm_import_vdo monolinker glib-mkenums red lxappearance git-receive-pack db_hotbackup gzexe dbus-daemon pnmhistmap jasper qasconfig libtoolize proxychains4-daemon pwunconv source-highlight rst2pseudoxml chmem pkcs1-conv cc alsoft-config printafm gcc-ar pic MagickCore-config mouse-test enum_chmLib veritysetup mkdir pbmtextps audisp-remote gpg-agent runsvchdir stream asn1Parser cd-info wineboot intltool-update yuy2topam xmllint pgmenhance uic install x86_64-pc-linux-gnu-gcc-nm plookup wmc rsvg-convert pcsc-spy multipath gtkdoc-scan nl-addr-add qemu-pr-helper dbus-update-activation-environment pw-mon svlogd gpg2 btrfs-find-root pmix_info sum tree sgen-grep-binprot paplay lensfun-update-data tex4ht amrnb-dec scor2prt ppmforge h5cc uptime texi2dvi ppdhtml feh gtkdoc-depscan ps grub-macbless lvreduce acountry eu-strip sanstats clangd vscodium gifsicle mtp-newfolder xfs_mkfile rtstat pamtohdiff h5dump blockdev named-checkzone mariadb-find-rows mtp-tracks install-info comm dmesg vlock valac shutdown cacaserver aria_s3_copy blkzone less xsd kproplog xprop tpic2pdftex thin_metadata_pack patgen pdf2dsc addr2line nl-list-sockets qmake6 7z installvst pgrep mtdev-test ctwill-twinx normalizer spirv-as mpif90 r-mpost jps gacutil2 ovf2ovp lsmod crlutil pg_receivewal extract_chmLib sordi gts2oogl pacscripts dosfslabel dpkg-checkbuilddeps yuvtoppm update-pciids pnmgamma spirv-reduce seq xdg-icon-resource chcpu Liftoff giffix fdtoverlay du hzip mysql_tzinfo_to_sql dpipe composite pinky identify appstream-builder mandb java eu-strings mono-sgen-gdb.py coverage devlink atktopbm zipinfo nf-monitor pamcut copydatabase pammosaicknit pgmtost4 nroff virtproxyd i386 slw nstat xorriso-dd-target chgrp pamfix mailx dtagnames rlatopam jmap rav1e pmap yaml-bench pprof-symbolize qlalr caspol pw-dsdplay initex tset pbmtopgm zstdmt sha1sum w xmlrpc_parsecall od gst-launch-1.0-32 kclangctest pambayer vss2raw qmi-network ndisasm chardetect vgmknodes clusterdb ctwill t1dotlessj hxtoc vsd2xhtml aa-exec gxl2gv dcraw_emu flex++ tiffset timeshift-gtk xsel mispipe mtp-format vgrename cstool modeprint aatest dpkg-shlibdeps pamstretch-gen scqref avahi-resolve nvidia-cuda-mps-control ppmtoarbtxt ppmtosixel vfat-resize fixps id llvm-stress pg_basebackup qhull ppmcie card rsync-ssl sccmap lsirq efivar errno eglgears_wayland ldns-keygen dvips zstd idevicebackup2 mongoose pbmtext mkfs.fat sulogin gpgme-tool ip6tables-legacy systemd-tmpfiles intercept-build linkicc lvremove dvigif llvm-bcanalyzer updvitomp pdvitomp cd-drive xapian-replicate-server macptopbm coverage3 ntfsundelete UnicodeNameMappingGenerator gtk-encode-symbolic-svg luajit-2.1.1694285958 date mariadbd-multi gimp-2.10 vscode-css-language-server hitex chat xwdtopnm ip6tables msgcmp pedump ppmdmkfont mount.ecryptfs testtex pppstats cmsutil ttf2pk dvilj6 modinfo gpgconf fc-match gnome-keyring-3 mtp-getfile wpexec pandoc-server imlib2_bumpmap pamditherbw gendict_dirb ppmtompeg hmac256 lpstat keyctl libevdev-tweak-device xmltex avr-strings zcat notify-send psidtopgm ppmtopi1 gvpr wavpack llvm-split ip6tables-restore gp-archive fsidd dhcp_release p0f-sendsyn6 ikdasm pyright-langserver sndfile-metadata-set fatlabel cdr2xhtml 411toppm vpl-sample_vpp pg_verifybackup qemu-system-x86_64 qmlcachegen chmorph scan-build-py pp-trace cupsenable xpmtoppm gtkdocize cache_dump ecryptfs-rewrap-passphrase ebook-edit pf2afm pktype gvmap gst-play-1.0-32 tor-gencert swaplabel gtktranslate libfm-pref-apps truncate newusers gdparttopng mgrtopbm kcutilmgr test-connect-t pnmmontage ir-keytable gvedit xwininfo pbmto4425 aa-autodep ipcrm dot2gxl wiper.sh xdg-mime updates a2ps-lpr-wrapper umount.nfs pfw gcc-ranlib gtk4-builder-tool ppmtowinicon mbimcli ippeveprinter nl-route-list yelp-check pnminterp pybind11-config tred arecordmidi mariadb-test ftpd ppmlabel ebt xfce4-screenshooter unlzma auditd fusermount outpsfheader regedit pamshadedrelief al2 recode-sr-latin enscript pw-dot rustdoc createdb locale dump.f2fs avr-gcc-ar llvm-addr2line rst2man compare intltoolize basenc virt-login-shell progress xsltproc dubdv env_parallel.mksh gimp-console qmlpreview-qt5 xgettext xfs_mdrestore vftovp gprof llvm-as env_parallel.ash psbook pnmshear hxunent xapian-compact grolbp wmv check-regexp e2image pgmmorphconv update-mime-database qdbuscpp2xml-qt5 jpgicc mono-package-runtime scan-view paxtest gouldtoppm mv fibmap.f2fs sntp hjson.cmd talk cg_diff ip6tables-legacy-save ideviceimagemounter jadetex gpgsplit pc1toppm sunicontopnm mono-sgen ntpd xmlrpc_dumpserver grub-install xzegrep over wget llc glib-genmarshal gcov aria_read_log xorriso-tcltk nvidia-xconfig iscan not nl hxpipe mako-render pip monodocs2slashdoc calibre-parallel pwmconfig ppmntsc chsh gtscheck pgmdeshadow idle3 vpl-system_analyzer pamdepth mysql_plugin pmpost grub-reboot nsupdate cmark-py3 postgresql-check-db-dir ps2pdfwr xbmtopbm onefetch sockstat grodvi unflatten monodocs2html llvm-strip kcforestmgr mkfs.f2fs gcr-viewer readtags eu-unstrip write curl eglkms zipmerge v4l2-compliance lollipop pbmtoepson fsck.ext4 dnssec-importkey gts2dxf switch_root otr_parse winepath iptables-nft skdump timelineeditor acceleration_speed mysql_ldb showmount sgen pamgauss cal debuginfod pnmflip lslocks mariadb-waitpid mke2fs llvm-lto2 grub-glue-efi saned pdata_tools amrnb-enc krb5-send-pr xev rtmon ignw schemagen xset ndctl clang++ free djvutoxml virt-host-validate pug pamtosvg xglyph lesskey qmlpreview ip6tables-nft nmap widl debuginfod-find wish8.6 metalog mkrfc2734 pdfmex t1lint libwacom-update-db rome h5jam dvihp vgdisplay rstpep2html runsvdir syncqt.pl-qt5 mapw auvirt arm-none-eabi-dwp sqlcipher xfs_estimate psnup canberra-gtk-play pdfsig pbmtoicon ipp-usb iw zellij npth-config luahbtex ts_harvest dig pahole arm-none-eabi-strings mypyc llvm-c-test rmmod sjisconv xfs_repair grep saslpasswd2 idevicediagnostics mib2c-update pdfxmltex vipe nfs-ls pygmentize ppmtorgb3 ntfsresize cups-config wayland-scanner faillog dvipdfmx uuserver tgatoppm gettext numactl pacman-key arm-none-eabi-nm g-ir-doc-tool vpl-sample_multi_transcode hwloc-patch pbmtog3 mft inproc_thr hwloc-ps llvm-lib pamtotga gencat c++filt avr-as wpd2raw gimptool-2.0 ldns-signzone alsatplg pamtopnm xdvi ndmetis affixcompress hxcount mono-shlib-cop yt-dlp nfsiostat llvm-config sh imlib2_colorspace aureport gnutls-serv xjc hwloc-info mib2c libpng16-config-32 disdvi timeshift-launcher uptftopl sdiff fold dazzle-list-counters tracker3 elf2dmp glewinfo mtxrunjit fc-cat valgrind-di-server mysql_upgrade desktopeditors checkrebuild nl-link-list qmlprofiler-qt5 vnstat simplesearch xfs_freeze jbgtopbm85 psc b2sum sbigtopgm avahi-discover-standalone extractbb compton cweave glslc qmlformat aasavefont lzdiff paper desktop-file-edit mtp-delfile idevicesyslog mysqldumpslow dv2dt rst2odt arm-none-eabi-gcc-ar pammasksharpen wrc alsactl arm-none-eabi-gcc-nm igrep rst2xetex.py ccrewrite setarch tiffcp gif2rgb aa-unconfined llvm-symbolizer kcookiejar5 ntfs-3g.probe unmunch debugreiserfs animate codiff alsaucm refer qdbusxml2cpp pyuic6 lvcreate ppmwheel asciinema.sh node-gyp ps2pdf12 proxychains4 json-glib-validate difft mariadb-slap site_perl nft logrotate pgmtopbm v4l2-tracer idevicedate pdflatex-dev veloren-server-cli bs2bconvert sexp-conv basename pmxab pnmstitch pamtopfm afm2pl repo-add cg_merge jstat tiffsplit aa-mergeprof iptables-xml lpr aft-mtp-cli nettle-pbkdf2 protoc-24.3.0 btrfsck git-lfs git-shell srt-tunnel vmstat dosfsck enchant-2 libwmf-fontmap syscse thin_delta mprof-report handy-1-demo traptoemail ntp-keygen winicontoppm mangohudctl kglobalaccel5 histretch ping calibredb bsdcpio gdk-pixbuf-query-loaders-32 dunstify qmllint mysqldump grub-syslinux2cfg lnstat iso-read namei cdrskin mii-tool gml2gv chrt rst2xetex sktest hxprune sqlitebrowser GraphicsMagickWand-config inimf llvm-ml rnano certmgr exiv2 ppmtospu pbmtojbg85 any2djvu ppmshadow auto-cpufreq-install eu-nm mdoc-export-msxdoc mpg123-strip rbash sha384sum gtkdoc-mkhtml gpg-connect-agent h5c++ hwloc-ls pnmmargin gio dhclient mpathpersist esysusers named idl2wrs pnmscalefixed gslj ntpdate perror avr-objcopy mkntfs rshd dvtm cmark pdfcslatex ecryptfs-umount-private hxunpipe ociodisplay vsd2text gdbmtool pon dviconcat mergelib gd2togif pax deallocvt ed uppltotf ideviceenterrecovery msguniq h5redeploy jcmd rst2man.py e2label qmlscene6 fakeroot remote-viewer era_check dpkg-query llvm-remark-size-diff valadoc-0.56 lli luatools patchwork tabulate elogind-inhibit gif2webp pacsort ximtoppm jsonschema mpic++ ideviceinfo pinentry-qt nfsdcld fixqt4headers.pl exportfs tfmtodit gtkdoc-rebase testshade hardlink h5watch xfs_growfs lowdown dunst qmicli f2py ppmmix msgfmt daxctl bsdunzip driverless illinkanalyzer idevicecrashreport mkinitcpio gcc-nm calcurse-caldav pw-link utmpdump ppmtoleaf dbus-binding-tool chktex cjb2 arm-none-eabi-readelf python-argcomplete-tcsh lxshortcut ctwill-refsort testpkg potrace source-highlight-settings winecfg milc-color fitstopnm magick-script ppmtouil tipc picom-trans javac mtp-thumb xzgrep aomdec wopl2ofm edgepaint speexdec nmtui-edit man dmenu gv2gxl kpsestat itstool efibootdump tdbrestore llvm-cat taskset infotopam rmdir clang-refactor exrenvmap krb5-config shuf genbrk nvidia-ngx-updater pee gettext.sh git2 pactree colcrt qmk pydoc3.11 uglifycss ibus-daemon g-lensfun-update-data llvm-mc ip6tables-save avahi-set-host-name debugfs.reiserfs gp-display-src plipconfig hxindex sed ktrash5 sv remote_thr vpxdec ppmchange es2gears_x11 scrot winegcc xfs_metadump bunzip2 h5perf_serial wineserver unzstd pnmquant nfsrahead mariadb-config pnmtopnm pctrl gftype e4defrag ebook-polish ldnsd hwloc-distrib nl-neigh-add grn sbcenc mangoplot krita_version mmafm xetex nop lighthouse avr-ld.bfd qmlplugindump-qt5 dialog avahi-resolve-host-name memusagestat fis spa-acp-tool pi3topbm avr-gcc clippy-driver expr teamdctl kde-geo-uri-handler nl-fib-lookup kcutiltest plugctl transicc acpid espeak spirv-remap kcpolymgr ppmdist lvresize isaset virtnodedevd snmpbulkget wine-preloader sndfile-play mdoc-assemble mariadb-import pamtooctaveimg fd filefrag newsboat named-checkconf split zzdir ppmddumpfont mawk mariadbd fullcircle rst2html pipewire-pulse nc tsig-keygen fftw-wisdom pdfroff snmpnetstat mtp-hotplug cistopbm zipnote nl-link-enslave simpleexpand proptest xapp-gpu-offload aalib-config ipcs slabtop mujs mount.ntfs nl-pktloc-lookup mdatopbm broadwayd docker-compose pinentry-emacs gc lowntfs-3g gtk-query-immodules-3.0 chgpasswd fincore cargo-miri named-journalprint aplay arm-none-eabi-objcopy thin_dump virsh nfsdclddb inproc_lat resize2fs exrmultipart pnmpaste procan nping pacinfo dvitodvi dfuse-pack ntfsdecrypt idevicedebug chattr toast geoiplookup6 xournalpp psl mysqlslap ntfsinfo showkey pbmtoepsi pltotf yelp-new fail2ban-server dtc pbmtomacp gst-device-monitor-1.0-32 cacaclock pamscale pyftsubset ppmfade rst2latex.py 2to3 xclip odvitype makealias ccmakedep lvm-cache-stats xzcat orterun pidof nspr-config ocioarchive gbkpdflatex macpack wallpaper unicode_start mysqladmin nl-qdisc-add inxi nsec3hash ffmpeg python aa-genprof x86_64-pc-linux-gnu-gcc-ar ntfsls giftool dmevent_tool bzip2 pvchange pinentry-gtk-2 t1testpage logsave pnmsplit moar mariadb-install-db snmpbulkwalk readprofile _mocha ppmtoyuv gspell-app1 yq mariadb-conv gobuster mono-configuration-crypto watchgnupg dvi2tty gst-transcoder-1.0 mkfs gprofng tex egrep pnm2png mpicalc ppmtobmp llvm-objcopy e2undo arm-none-eabi-size sndfile-concat kwalletd5 audisp-af_unix mtp-sendtr rst2s5 xmlrpc_pstream djvudigital augenrules b2 osinfo-query powertop png-fix-itxt-32 cameratopam pgmmake passwd chronic mpeg2dec head nvidia-cuda-mps-server wvtag jfs_mkfs cpupower psfgettable parecord grpck vacuumlo axohelp pic2graph pg_checksums clang-cl pbmtonokia rpc.statd mapscrn ebtables-translate pamundice mtp-filetree uclampset gost12-256-hash icupkg llvm-rtdyld unlink nl-list-caches rst2html.py fc-validate ldns-verify-zone look qmltestrunner-qt5 pprof rst2odt_prepstyles.py mpicc openssl-1.1 grub-mkstandalone ntfssecaudit paccheck pk-example-frobnicate cefconv kpropd pamtohtmltbl iptables-legacy-save gtk-update-icon-cache wxrc arm-none-eabi-gcc-13.2.0 live-server virtnetworkd nl-cls-add leaftoppm mkfs.btrfs wpg2raw mpost e2freefrag nl-link-set getpcaps db_load asciinema stunbdc fc-pattern xclip-copyfile gtkdoc-fixxref codium hxname2id clang-linker-wrapper mariadb_config blkdiscard djvutxt bjam patch ip6tables-restore-translate zdiff setvesablank ts_calibrate vmmouse_detect pw-play lli-child-target mysql_find_rows pcre2test diffimg c_rehash csplit x86_64-linux-gnu-gcc pnmtojbig pjtoppm chwb2 nl-tctree-list corepack lex pbmtomatrixorbital virt-manager teamd latex ttf2tfm vala-gen-introspect groupadd proxychains makeconv glilypond ortecc llvm-tapi-diff eglinfo ovp2ovf gawk-5.2.2 msgcat gst-typefind-1.0-32 amidi java2html xtables-monitor dpkg-scansources mariadb-binlog ppmtopuzz maketx mfluajit mariadb-ldb js102 arm-none-eabi-ar avahi-publish-service kpseaccess kvno iptables-save dvtm-status dbus-cleanup-sockets setfont pnmtorle btrfs-convert newgrp nbd-trplay nbd-server aa-logprof MagickWand-config pacsift pdffonts babl sln intltool-extract jfs_fscklog mysqld winemine convert zzxordir pnmalias ld.gold setcap llvm-gsymutil connmanctl showjournal set-wireless-regdom python3-config hxmultitoc xindy.mem mdassembler hxcite-mkbib pfmtopam nfsconf v4l2-dbg tkmib mkbundle pktogf neato mkfs.ext4 marksman kpasswd umount.ecryptfs_private alsaloop tclsh8.6 pgmtopgm fsck.vfat pamdice lame bc arm-none-eabi-lto-dump mariadb-check dmenu_path pgmslice amdgpu_stress transform r-upmpost pktopbm pg_isready healthd tdbbackup systool wsimport happrox dmypy arm-none-eabi-addr2line uplatex-dev pamtofits montage wsrep_sst_mysqldump strace fc-cache-32 xvminitoppm h5fuse.sh bootlogd nhlt-dmic-info pvs dash auto-cpufreq-remove dnssec-revoke fftwq-wisdom kexec scp symkeyutil gts2stl btrfs-select-super spottopgm acpi_listen h5clear rsync snmpstatus hxremove pdftohtml pamwipeout nslookup hxselect peek updvitype zzz libpng-config testlibraw env_parallel.tcsh lzless dpkg-parsechangelog vacuumdb aria_dump_log jbgtopbm groupmems top zeisstopnm mount.exfat-fuse gacutil wordgrinder mk_isdnhwdb ppmtoyuvsplit ppmflash sensors-conf-convert fribidi gp-display-html remote_lat ifconfig gdisk repo-elephant orbd getfattr hxnsxml odvicopy iso-info arm-none-eabi-ld.gold dbus-test-tool archlinux-java obj2yaml pbmtopsg3 dpkg-name caca-config rcp xapian-delve twolame avahi-resolve-address kcforesttest dwp dav1d gtk4-launch thin_rmap pamstretch bashbug ziptool pbmtoxbm md5sum xtrace captest conjure pidwait gs makedepend keyring zstdless pslog virt-viewer dumpcap fonttools scroll era_restore touchpad-edge-detector sord_validate magick pkttyagent avifdec avr-c++filt blkdeactivate lv-tool-0.4 nmtui clang-move avahi-discover ts_verify psresize ocsptool gtk-builder-tool pnmnorm winefile kbuildsycoca5 amrwb-dec mcookie zic nasm gimp-test-clipboard-2.0 shellcheck ssh-keygen vptovf ntptime nss-config libdeflate-gzip sftp gdk-pixbuf-csource qmleasing csepdjvu dirb veloren-voxygen intltool-prepare vue-language-server lv2bench distro lexgrog inotifywatch docker-init vgconvert mknod m4 userdel pnmtoxwd lynis update-leap FileCheck botan xml-rpc-api2cpp pw-cat gtk-launch wordforms setfattr avr-elfedit zipcmp giftopnm sgdisk addpart stund graphml2gv mysqld_multi dumpe2fs mono-api-info pnmquantall pbmtoescp2 sudoreplay scour tune2fs llvm-mt texexec gkbd-keyboard-display tcat who mysql fstrim pacrepairdb es2_info tabs iptables-legacy-restore ijs-config sleep vpl-sample_encode mtp-emptyfolders platex lv2specgen.py xzmore register-python-argcomplete choom iv mariadb-fix-extensions key.dns_resolver dfu-programmer pfunct nfsdclnts mysql_client_test vimdot post-grohtml llvm-sim pg_amcheck orte-server qvidcap parallel diffpp encodedv grolj4 dpkg-buildflags qemu-keymap gcore nl-link-stats mdb_load arm-none-eabi-as pbmtozinc wires fc-query spirv-opt resize.f2fs ogonkify rpcctl inkscape vgexport named-rrchecker h5stat dotnet dvidvi dict qconvex vde_autolink aa-complain ld.lld makejvf gtk-demo env_parallel tdbtool strings rev otr_sesskeys llvm-undname etmpfiles p0f-client ldns-chaos sndfile-convert ppmtopgm pdftocairo moc-qt5 xorriso winebuild ts_test_mt postman enchant-lsmod-2 jeprof dvipos lvrename exrstdattr llvm-dwarfdump updatedb gccmakedep aa-easyprof calibre-smtp makeg gawk pw-encplay find pgbench jbig2dec pbmmask msql2mysql mtxrun vapigen monodocer clang-reorder-fields ts llvm-tli-checker chfn tput ppmtoterm containerd-shim clang-pseudo llvm-modextract halt funzip aa-disable doas dpkg-trigger wordlist2hunspell v4l2-sysfs-path ddns-confgen groupdel mono-find-provides iproxy rustup manpath ppmtoppm xdpyinfo gencfu rmiregistry ldd aa-features-abi bond2team cat spa-monitor paperconf pamtogif lvdisplay pw-reserve combine inkview djvm runuser tor-resolve includeres sponge pydoc xfce4-kiosk-query mkfs.reiserfs dvilj4l sndfile-interleave mysqlcheck ppmtv pinentry-gnome3 cd-read kdestroy gst-stats-1.0 revpath escapesrc nl-link-release ccomps nologin gv2gml chvt nl-cls-delete ps2pdf14 arm-none-eabi-c++filt gulp pdfcsplain db_stat dict_lookup btrfs-image git-cvsserver gpg iptables-translate pg_config mariadb-admin timeout connman-vpnd mcomix xdg-dbus-proxy dbus-launch ebook-viewer djvuserve jemalloc.sh vde_cryptcab request-key vedit pamgradient fstopgm panelctl half_mt jfs_tune ecryptfs-wrap-passphrase mysqld_safe_helper mmdbresolve vscode-json-language-server vgimportdevices pppd rg fail2ban-python ompi-server osirrox pstops disco tload ociobakelut yelp-build vipw mkhtmlindex libinput avr-gcov-dump virtinterfaced infotocap gftodvi dpkg-buildapi certutil otangle groupmod msgconv pamthreshold timeshift avr-objdump rawshark sshd sdl2-config convert-dtsv0 bbox lualatex-dev pgmtoppm pngtopam nl-route-add zsh-5.9 ndptool dec265 st chcon mono csh udev-hwdb lvmconfig ncursesw6-config pamoil py3smi icuinfo db_printlog gegl sherlock265 rawtopgm ssh cxpm file ctags mkfs.xfs keynav cargo-clippy secret-tool mtp-newplaylist ociolutimage rtcwake certbot ntfsclone ifdata cmp ppmtopjxl fusermount3 pamfixtrunc pamstereogram ilbmtoppm redshift pyxel pwconv mkfs.minix hxcite futurize dirmngr dpkg-genchanges pacreport spctoppm clang-format edonr512-hash ldns-test-edns pdf2ps calibre-server pnmenlarge ifuse granite-demo eapol_test mfluajit-nowin psktool xtables-legacy-multi tshark ppmhist rankmirrors nl-cls-list vgdb bd_list_titles systeroid python-argcomplete-check-easy-install-script ppmcolors ausyscall mltex xterm xindy.run sxpm elc3 pavucontrol ldns-dpa gtk4-update-icon-cache db_recover wmf2x umount vala isosize mariadb-client-test-embedded vsd2raw ppmcolormask newuidmap iconv unzzip-big rmid ldconfig wrs pyright nmcli ppmrainbow fcplay cg_annotate isadump pg_dump kchashtest dhcp_release6 tickadj haveged soelim zzxorcat nm-online parse.f2fs ln llvm-xray libpng16-config mount.fuse3 tracegen-qt5 qemu-system-i386 cefspdflatex eyuvtoppm setpci xq mtp-getplaylist calibre-complete rpc.gssd cef5pdflatex wine64 dmidecode cacafire setsid python3.11-config h5copy gdk-pixbuf-pixdata gwe ssh-agent twopi ldns-mx escp2topbm metaflac pglobal vpl-inspect utmpset zforce hltest pbmtoplot infocmp pbmtocmuwm cacademo stl2gts yarn avr-ld llvm-otool anytopnm systeroid-tui gst-tester-1.0 mpiexec opj_decompress whois ecryptfs-verify wpd2text pamsummcol ppmtoneo sfdisk lsinitcpio grip ranger vlna untoast tomlq peekfd iptables-legacy ppmquantall iftop kcdirmgr tnameserv llvm-bitcode-strip lsusb cert2spc ppmnorm dictunformat pcdovtoppm argon2 wvgain xrandr mount.exfat pamaddnoise net-snmp-create-v3-user 7zr blkmapd wpa_cli msgexec cache_metadata_size ps2pdf mariadb-tzinfo-to-sql pamtojpeg2k mujs-pp sxiv neomutt genrb imlib2_poly envsubst sbcinfo mkfs.msdos tac openssl xorrecord secutil wxrc-3.2 ifstat aa-notify nproc hexdump paxcpio gst-device-monitor-1.0 pamexec decode_tm6000 ppmtotga bwrap wname ldns-revoke wasm-ld fix-qdf pnmmercator ldattach archlinux-keyring-wkd-sync html2dic xfs_logprint fzf-tmux mkfontscale gnome-keyring-daemon scriptreplay pnmarith ffprobe lrs2lrf opal_wrapper cargo-fmt sendiso tar gifbuild runc jconsole orte-clean pacrepairfile count lastlog hxnum runsv cython gxl2dot desktop-file-install update-grub unpack200 uniq db_upgrade sc pbmtomrf aec pacman-db-upgrade env_parallel.sh tidy bibtex8 gslp chwb ibus xdo nl-class-list llvm-size brushtopbm lualatex zlib-flate which cmx2xhtml mariadbd-safe-helper qvoronoi cupsctl llvm-libtool-darwin dir avr-gcov cleanlinks mono-hang-watchdog gimptool nl-qdisc-delete qml dpkg-realpath qdbuscpp2xml rc-shutdown arp calcurse context pamarith ts_print_mt objcopy arm-none-eabi-ranlib mtp-albums dnssec-settime f2fs_io xmmv webpng pammixinterlace gd2topng clang-change-namespace mogrify wsrep_sst_rsync_wan sensors-detect makers arpaname vdecmd convert-mans texluajitc bg5latex pamtowinicon unixcmd twill unix_chkpwd dvipdf ffplay makecert pnmcat env_parallel.ksh pgmtosbig ddbugtopbm magnet-link pbmtogem gtkdoc-check rdma wovf2ovp ppmtomitsu srt-file-transmit autoupdate xfce4-panel exrinfo xdg-desktop-icon mkfs.ntfs import dot_builtins mf-nowin vgcreate artix-meson kwallet-query dvitomp virt-admin rcc-qt5 nf-ct-events usb-devices nfs-cp gsdj500 Xorg gjs-console gsftopk ldns-config resize sherlock mkfs.ext2 lsw grub-mkpasswd-pbkdf2 pps cxl modutil rst2html4.py hishrink cmx2text yapf-diff virtvboxd jxlinfo xxh128sum states clang-check privoxy hxunxmlns sfv-hash qcatool-qt5 protoc ipf-mod.pl scalar llvm-opt-report ippfind poweroff nameif dvispc vbltest arping pamstack djxl libwacom-list-local-devices arm-none-eabi-gcov-tool iptables-nft-save qdelaunay raw-identify tex2xindy thin_ls orc-bugreport ntptrace qmltestrunner unidecode cgdisk luac5.4 findmnt gtkdoc-mkpdf clang-doc pamvalidate setvtrgb chezdav bzz ip6tables-translate rfkill ts_finddev x86_64-pc-linux-gnu-gcc hxclean mkocp wmf2eps devnag pylupdate6 arm-none-eabi-elfedit sha512sum rndc-confgen sqlsharp lc article_md pcre2grep modularize taglib-config scan-build trietool containerd-shim-runc-v1 ldns-keyfetcher kcdirtest guile-snarf ts_print mypy pg_dumpall col snmpdf gftopk t4ht pw-profiler png-fix-itxt pdftoppm psfaddtable zfgrep eu-objdump x86_64-pc-linux-gnu-g++ hjson woff2_compress xapian-pos dictfmt_index2word ts_uinput qmlmin-qt5 uuidgen nl-qdisc-list glslangValidator lua5.3 killw expiry sliceprint cython3 sgitopnm fixproc qrencode annotate qemu-edid eject nl-classid-lookup xapian-replicate rst2html4 gpm gtf rsm rhash opl2ofm realpath synctex xslt-config reiserfsck orte-info https pevent c99 iecset fftwf-wisdom lzmore mpirun woff2_info dnsdomainname fiascotopnm aconnect gcov-tool heif-thumbnailer pbmminkowski palmtopnm llvm-dlltool acyclic tex2aspc gvcolor dnssec-dsfromkey WebKitWebDriver nf-ct-list cargo guild startx resizecons dtd2rng sst_dump dpkg-distaddfile tbl X grub-mkconfig ps2pdf13 ecryptfs-insert-wrapped-passphrase-into-keyring djvuextract proxy pdfseparate rtorrent ldns-testns pbmtodjvurle sn kcstashtest calibre-debug makepkg pyserial-miniterm ecryptfs-migrate-home hxcopy fgrep makedb ld64.lld geqn pngtogd2 setmetamode tangle fzf screen dvipdfm fc-cache avr-readelf dmeventd hxxmlns pw-metadata ppdi mag msggrep llvm-extract pam_timestamp_check eu-elfcmp touch start-statd gifview bscalc genxs profile2mat.pl ociowrite SvtAv1EncApp pnmtofiasco tr thefuck pr pg_controldata libcamerify xclip-cutfile grub-file krb5kdc wtp bshell idectl avr-addr2line clockdiff bst djvups dnssec-verify ebtables-nft hxaddid keytool cvt pkgdata xdg-user-dirs-update gpgscm wish reset lpmove ocioconvert inotifywait groff pkaction xml2asc pass lv2_validate preparetips5 exo-open ppmtopict lp gvmap.sh webpmux pandoc gssdp-device-sniffer jstatd msidb insmod bat snmp-bridge-mib kbd_mode display-coords certtool sirtopnm dmraid virtqemud gencnval pcre2-config yat2m cvtsudoers firejail gost12-512-hash paclog-pkglist bjoentegaard sqlhist memhog pnmcrop alsabat mdbrebase passmenu autoscan rpcdebug virt-qemu-run pbmtoppa pamsumm clang-extdef-mapping libwmf-config nf-queue idevice_id exfatlabel split-file simpleindex es2tri pandoc-lua gtk-query-immodules-2.0 tail torify mariadb-convert-table-format chktrust jo glib-gettextize dkms llvm-cov rzip mbim-network qv4l2 mangoapp Xvfb avr-gprof mtp-connect pdftops virt-xml jsonpointer gxditview keepassxc x264 ed2k-link yaml2obj xmlwf airshipper lsns arm-none-eabi-c++ yes dwebp steamdeps ausearch net-snmp-cert udevadm pg_restore unzzip-mem bspwm dpkg-vendor m2mnbrs winemaker integritysetup wpd2html has160-hash agentxtrap wireplumber gegl-imgcmp dvipng last gnome-autogen.sh p0f-sendsyn lvm containerd yuvconvert k5srvutil bison nl-monitor pw-dump h5mkgrp py7zr pcre-config pnmtopalm pwd kcprototest kctreetest partprobe locale-gen db_tuner x86_64-linux-gnu-gcc-nm arm-none-eabi-objdump psselect lit base64 getcap edit unterm vmwarectrl pampop9 qmltime-qt5 grub-mkrescue llvm-jitlink lz4 llvm-nm 7za iptables-restore foliate acpi cabextract source-highlight-esc.sh rubberband getkeycodes pnmindex djvuxmlparser dumpsexp clang-tidy zip solid-hardware5 qml-qt5 pfb2pfa x86_64-linux-gnu-gcc-ar pampick mupdf javap launcher.jar ts_print_raw unxrandr dbus-uuidgen createuser gen-enc-table xdg-settings pdfmom padsp gdbm_dump tdbdump unzip genl jpeg2ktopam h5unjam lrfviewer gensprep inetcat heif-convert colrm display-buttons tftopl cec-follower pod2texi users containerd-shim-runc-v2 db_checkpoint mkfifo parset winedbg ir-ctl filan mariadb-dump mfplain ppdmerge osage sputoppm cchardetect mozroots netcat xfs_bmap linux32 mdb_stat jq wbmptopbm wmf2svg otr_readforge xclip-pastefile virtstoraged vte-2.91 tcsh compile_et grub-mount aa-enabled lz4c function_grep.pl lzgrep sndfile-cmp xfs_ncheck kbxutil view luac5.2 pfetch mysql_secure_installation exr2aces sharkd paccapability pamperspective cmpnbrs icu-config st4topgm flock mariadb-setpermission dvilj4 hwloc-compress-dir gamma4scanimage gnutls-cli-debug extract_a52 appstream-util cpaldjvu qmleasing6 mono-service librewolf prlimit nvidia-bug-report.sh pphs dconf smokehouse dust lsb_release llvm-dis rust-gdb gpgv gemtopnm setreg rstpep2html.py cplay spirv-val mono-boehm pacat mtp-playlists libgcrypt-config pg_archivecleanup dpkg-source spicy-stats gts-config libusb-config chwn pdfetex ssh-copy-id pngtogd update-alternatives captoinfo speexenc aulast wnckprop ducktype cache_restore stubgen aa-teardown pdftosrc cache_repair e2fsck getsysinfo aft-mtp-mount pdftexi2dvi optscript calibre xdg-open nl-class-add ppmtoeyuv lvmpolld mtrace g-ir-scanner bg5+pdflatex wx-config gtk-lshw unlz4 vala-gen-introspect-0.56 lookbib soapsuds zegrep syncqt.pl qemu-img xfs_copy imlib2_test avahi-bookmarks pgmoil nice zsoelim rsh min-nbd-client pipx mkafmmap cpuid_tool eu-elflint imlib2_load ijs_client_example wsgen llvm-lipo rmic ppmtopcx lvs thin_restore pg_rewind gtk-builder-convert aclocal nm busctl xdg-email pbmtoybm rustdesk zenity dpkg-divert dmstats wall mdoc-update luac5.3 innochecksum rpc.nfsd aa-cleanprof ls avifenc NetworkManager pacman mklost+found xxhsum docker mkindex mmcli imlib2_conv blkpr hunspell bd_splice qmake-qt5 valgrind virt-install avstopam clang-cpp gamemodelist markdown_py get-versions paxtar mount umount.ecryptfs gendict pamslice fsck rst2s5.py asc2xml httpx pamfile test postmaster qmltime pacsync addgnupghome pamseq ebook-meta prettier anacron hdrcopy fsck.msdos mdlt gsdj dhcpcd ex avr-g++ dbus-monitor migratepages aria_ftdump usbhid-dump yapf idiff detex mysql_fix_extensions sqldiff dselect bmptopnm edonr256-hash libassuan-config gdbserver pfbtops icontopbm pw-record cpufreqctl.auto-cpufreq snmptable fmt xfs_fsr dvilj2p udevd grub-fstest gfeeds sprof genl-ctrl-list ccls pg_test_timing libieee1284_test llvm-ifs dfu-prefix ldns-resolver ps2pk fsck.ext3 pdfjadetex xfce4-popup-directorymenu showstat4 echo xtables-nft-multi rst2xml.py pscap rtacct pgmbentley ldns-version ngettext xzfgrep devour arptables-nft-save pinentry-curses aggregate_profile.pl gp-display-text pampaintspill resgen2 sensors diff euptex pamtouil dpkg-fsys-usrunmess dumpkeys modules-load type1afm jfs_fsck pnmtotiff ps2ps rst2html5 mdvalidater out123 arm-none-eabi-gcc giftogd2 xargs texlua lprm csi ct2-opennmt-tf-converter pnmtofits ghc-pkg-9.0.2 dockerd mpifort uncompress dvbv5-zap virtsecretd dhclient-script tclsh c44 pdfdetach pstree.x11 bspc gemtopbm spicy-screenshot mpg123 dlc3 vgmerge ispellaff2myspell lua nfs-stat whereis aprofutil pnmtile xfce4-about heif-info servertool mflua-nowin ntfscat unzip-mem iscan-registry virtnwfilterd xsetroot ar qmlformat-qt5 objdump run-clang-tidy blkid gvgen pnmtoplainpnm gpasswd upbibtex xb-tool kwriteconfig5 sjispdflatex dmcs resolvconf fixqt4headers.pl-qt5 otftotfm lessecho remuxer llvm-cxxfilt pk12util dnslookup qmltyperegistrar-qt5 ibus-setup stty memusage lstopo-no-graphics zzcat local_lat umax_pp activate-global-python-argcomplete urlscan zrun kdb5_util slattach dvb-fe-tool hwloc-gather-cpuid pnmtorast winecpp raw-thumbnailer pnmhisteq ppmrelief teckit_compile gettextize mpv ssltap xapian-metadata mariabackup ktutil llvm-debuginfod-find qemu-io ldns-compare-zones makemhr tldr eglgears_x11 jfs_logdump my_print_defaults spa-json-dump sclient dfu-suffix chacl osinfo-detect wew mbstream update-ca-trust gapplication killall gd2copypal mysqlimport llvm-strings xdg-desktop-menu clang-apply-replacements pamx make cbindgen dpkg-split rlogin bdftopcf aseqdump ppmtoicr renice avr-size eu-make-debug-archive dnssec-keyfromlabel findssl.sh toe git-upload-pack g-ir-generate nl-route-delete verify-uselistorder cmpfillin udisksctl pamtotiff nl-neightbl-list myisamchk pdfinfo pamcomp pg_waldump pamlookup setlogcons kpsereadlink ModemManager img2txt h5repack dumpexfat script gtk4-rendernode-tool cache_writeback guile ghostscript pastebin snmpping graphchk libart2-config vgcfgbackup monodis ceflatex stest telnet db_verify local_thr lv2apply com.github.johnfactotum.Foliate ts_test ctrlaltdel ppmshift pamenlarge go thin_check mount.ecryptfs_private gtester dpkg-statoverride ntfsrecover gpgtar modetest asn1Decoding cpp2html pcxtoppm chm_http rename kpartx winedump captype setleds xkbcli avahi-daemon mariadb pbmtoptx xzless autom4te krita mysql_install_db fsck.fat sane-config isutf8 brotli meson pbmtolj mtp-sendfile sancov xfs_admin ncpamixer wsrep_sst_backup tsort dpkg-gencontrol df gpinyin avr-strip autrace vgreduce routel msgen false pbmtoibm23xx factor pbmtomda depmod dnssec-keygen spawn_console dtach wmf2fig arm-none-eabi-gcov mysqlaccess ppmtopj fsfreeze exa mono-heapviz solid-power setterm fimgs ntfscluster vgsplit ldns-gen-zone cfdisk ecryptfs-add-passphrase wmctrl omfonts clang-include-cleaner partx avahi-autoipd eu-ranlib ldns-rrsig fadvise gdb kacpimon g-ir-annotation-tool jpegoptim join cythonize multipathd mkpasswd spicy ocioperf pdfclose db_deadlock gsl-histogram loginctl kbdinfo reordercap sndfile-salvage filecap pamtopam dvilualatex avahi-dnsconfd rasttopnm swapon llvm-pdbutil gpgrt-config env_parallel.fish unzipsfx lckdo ecryptfs-rewrite-file logger link jemalloc-config weave grap2graph ppmtomap db_convert znew su srftopam pgmnoise idiag-socket-details sdl-config usermod pdfimages findfs e4crypt zstdgrep setxkbmap 4channels qmlplugindump hpftodit ppmmake GraphicsMagick++-config derb doesitcache pdw js78-config pg_resetwal getsubids pbmreduce rst2xml vi btrfstune sg cryptsetup nl-nh-list llvm-lto eu-readelf e2scrub_all vde_over_ns newgidmap mtp-albumart pbibtex ecpg calcurse-vdir qrttoppm luit ssh-add unprocessed_raw psicc gvpack kchashmgr dvitype whoami wavemon idn2 bzcat snmpd gnutls-cli xeglgears pnmtoddif pamixer ppmbrighten setfacl aria_pack mev pnmcomp grub-render-label jfs_debugfs qmlcachegen-qt5 qtwaylandscanner lsusb.py pvresize mdb_dump wrjpgcom firemon mk_cmds mkdirhier localedef ldns-update kreadconfig5 kiconfinder5 mozcerts-qt5 mpif77 nvidia-sleep.sh snmpgetnext xzdiff ifnames pinentry-tty rgb3toppm vbc pamfunc checkupdates g++ ytasm arm-none-eabi-g++ dictfmt autoreconf base32 eqn2graph dropdb SvtAv1DecApp btrfs-map-logical lvmdump cpufreq-bench iinfo imlib2_view hxuncdata volume_key faillock net-snmp-config ranlib ip6tables-nft-restore printf sim_client djpeg env_parallel.bash gss-client idevicedebugserverproxy cdda-player vgimportclone gkgraph pacremove nohup ahost rustfmt hilatex pkg-config pbmtoln03 snmpconf srt-live-transmit aa-audit qvkgen readlink uxterm xzdec gfi vdpa mysql_config visudo ntfs-3g alacritty mpmetis snmpwalk mkreiserfs ulockmgr_server mono-test-install djvumake vpddecode spirv-lesspipe.sh xeglthreads unzzip btrfs contextjit uname tcpdump avr-nm gpmetis gunzip mousepad wtf idevicebackup ppmquant gentrigrams ksu lzcmp vmcore-dmesg wsdump callgrind_annotate rustc mpiCC iptunnel wpa_supplicant troff mariadb-show makeinfo eqn wirefilter pango-view xdvipdfmx virt-qemu-qmp-proxy pdfgrep spice-webdavd diagtool mono-cil-strip automake dtdiff npm streamlink ntp-wait setkeycodes llvm-ar repo-remove wdctl llvm-profgen pstopnm spirv-lint tig notepad pgmmedian cupsfilter pk2bm notmuch extconv qasmixer libwacom-show-stylus h5delete linux-boot-prober os-prober gsettings b43-fwcutter eglewinfo virt-xml-validate vde_router vde_plug2tap pyftmerge onig-config msiexec pango-list pacini mkexfatfs ctr vdir env mariadb-embedded lua5.4 bcomps parcat paste luacsplain aserver pnmremap pppdump migspeed fdtput mrftopbm mkfs.vfat gimp-console-2.10 docutils vidir jdb mouse-dpi-tool xapian-tcpsrv mariadb-plugin mergecap gio-querymodules aleph pnmdepth fgconsole 2to3-3.11 multirender_test gst-stats-1.0-32 img2webp vscode-html-language-server cancel aclocal-1.16 rst2odt.py resolve_stack_dump rcc wsrep_sst_mariabackup gdb-add-index virt-qemu-sev-validate vscode-eslint-language-server gtkdoc-mkhtml2 makeindex boxdumper ntfsfix awk avahi-browse-domains bsdtar chown pkgconf xzcmp micro pbmtomgr h5fc ppmtolj thin_metadata_unpack onlyoffice-desktopeditors alsa-info.sh x86_64-pc-linux-gnu-pkg-config koi8rxterm uic-qt5 rsspls strip gsl-config crecord glxewinfo sensord nfnl_osf psfstriptable pip3.11 uuidd bdftogd auditctl md2html swapoff mono-gdb.py ntpdc upload-system-info ninja srt-ffplay gdcmpgif lv2ls myrocks_hotbackup autoconf pacdiff llvm-reduce x86_64-pc-linux-gnu-gcc-ranlib pamedge eu-findtextrel nfsidmap x86_64-linux-gnu-c++ pbmtolps attr hxnormalize grub-mkfont llvm-cxxdump svcutil flac git userpath llvm-remarkutil gpgsm imlib2_grab ddjvu dvicopy latex-dev pnmtops pyuic5 vnstatd sserver ntfscmp whiptail gpgparsemail utf8mex iconvert pamrubber slop qmlimportscanner-qt5 unrar mangohud coverage-3.11 pbmtoascii arm-none-eabi-gcc-ranlib pnmfile pwhistory_helper rawtoppm editcap mdoc-validate dtd2xsd mconfig avr-gcc-ranlib rlogind pdiff desktoptojson al expac gtk4-broadwayd pnmsmooth llvm-tblgen msxlint bs2bstream kadmind pamdeinterlace pbmtox10bm ebook-convert hostname qmi-firmware-update grpunconv pipewire-avb clang-include-fixer vmafossexec check_hd screendump cddb_query lslogins g3topbm dnsmasq h5debug screenkey gamemoderun tie lsof usbredirect ntfstruncate c++ mkcert cmuwmtopbm openvt wnck-urgency-monitor libwacom-list-devices snmptest h5ls pgmtofs bdftruncate nginx mf yacc catman nawk testshade_dso gsx vterm-ctrl grog rtkitctl xorrisofs pcprofiledump qhalf vgs sort sudo_sendlog ppdc dpkg-maintscript-helper wsrep_sst_rsync hwclock drill dvb-format-convert fc-scan fuser mariadb-upgrade substrings.pl qmlscene-qt5 hpcdtoppm plistutil com.github.bleakgrey.tootle visualinfo cupsaccept bd_info fetch-ebook-metadata virtlxcd circo ppmglobe gst-discoverer-1.0 jinfo as cpp mdoc pvdisplay sldtoppm glib-compile-resources mono-service2 xmlcatalog xml bugpoint vpxenc rds-ctl lpc dictfmt_index2suffix readelf eu-ar chpst nvim texluajit vgchange sudo stat pattrs html-minifier ecryptfs-find lsblk llvm-link json_verify ntfslabel lpq bzgrep waitpid intel-virtual-output zipcloak spirv-dis pacman-conf hwinfo ppmspread mariadb-dumpslow nvtop x86_64-pc-linux-gnu-gcc-13.2.1 tth-hash clrunimap cythonize3 pwdx pw-loopback JxrEncApp dpkg-scanpackages picom opj_compress lsipc ddgr pamrecolor aulastlog testrender virtchd gifdiff appstreamcli vsyasm scriptlive cheetah pacfile grub-mknetdir dnssec-cds lvmdiskscan pyrcc5 tqdm updpkgsums pbmtobbnbg wemux uglifyjs prtstat avr-ar gcolor3 i686-pc-linux-gnu-pkg-config avahi-publish-address vpl-sample_decode web2disk mkofm preconv sysctl gawkbug elfedit btfdiff crontab grub-sparc64-setup named-nzd2nzf w3mman arm-none-eabi-ld mount.nfs4 pvmove cache_check kmod pmixcc snmpps valgrind-listener xapian-check runit GraphicsMagick-config wofm2opl aa-decode rdjpgcom runit-init mkswap qdbusxml2cpp-qt5 db_log_verify lrf2lrs psql mtvtoppm setpalette apparmor_status sndfile-metadata-get mtp-files ofm2opl icuexportdata vendor_perl vendor_perl/HEAD vendor_perl/lwp-mirror vendor_perl/exiftool vendor_perl/lwp-dump vendor_perl/lwp-download vendor_perl/POST vendor_perl/GET vendor_perl/lwp-request lzcat lsfd tor-print-ed-signing-cert hbf2gf opt zipsplit mkhomedir_helper grammarly-languageserver keepassxc-cli virt-pki-query-dn otp2ocp xidel ppmtoxpm sotruss rndc pbmupc reboot wmf2gd gvncviewer gssproxy outocp pbmpscale clang-repl dvipdft chrome-debug arpd quest zipgrep pdvitype groups tiffinfo http nvidia-modprobe lvscan autopoint pbmtowbmp xml-rpc-api2txt agetty zzxorcopy gts2xyz init luajittex dvbv5-daemon qemu-nbd cheetah-compile pppoe-discovery dunstctl xdg-screensaver gobject-query emmet-ls xdvi-xaw xelatex-dev clang adig cheetah-analyze pcretest winicontopam thin_metadata_size pnmrotate vscode-markdown-language-server snmpinform pamtoxvmini ucs2any cdiff qmlpreview6 scncopy dnssec-signzone cupstestppd javadoc bioradtopgm artix-pipewire-launcher pkcheck wmp kritarunner vgck valac-0.56 mysql_waitpid imgtoppm gropdf ppmdither fsnotifywatch ps2epsi gresource dpkg-mergechangelogs mono-api-html dviluatex faked g-ir-inspect qpdf xfs_rtcp exfatfsck wvunpack yasm libvirtd gtk-query-immodules-3.0-32 pgmedge imake pipewire-aes67 grub-editenv json_reformat mariadb-client-test pamtilt pdwtags lshw omxregister-bellagio getconf showdb lzip mycli mdig pamtompfont enumdir_chmLib perl mod hostid dhcp_lease_time analyze llvm-profdata tc idevicesetlocation nvidia-persistenced gencmn umount.udisks2 oiiotool gr2fonttest vkgears ppmtoapplevol mpg123-id3dump xmlrpc xfconf-query connmand links pzstd xvfb-run exrmaketiled dialog-config jiv cpufreq-bench_plot.sh parec xhost texluac dictzip gperl llvm-debuginfo-analyzer analyze-build mtp-trexist qmlimportscanner bg5conv pivot_root foomatic-rip dpkg-architecture sane-find-scanner jpegtopnm llvm-windres ttftotype42 ss extractres ttfdump cupsdisable mysqltest guile-config ldns-read-zone thinkjettopbm ntfswipe snmpvacm gvnccapture avr-man sload.f2fs lz4cat crond pnmscale pgmhist cupsreject dcraw_half apropos teamnl pfbtopfa validate-pyproject conplay lzegrep poff js78 cupsd lvconvert pamtosrf galculator wheel trietool-0.2 clang-scan-deps whirlpool-hash luajit iptables-apply nettle-hash era_dump core_perl core_perl/piconv core_perl/ptar core_perl/podchecker core_perl/enc2xs core_perl/libnetcfg core_perl/ptardiff core_perl/ptargrep core_perl/pod2man core_perl/instmodsh core_perl/h2xs core_perl/corelist core_perl/shasum core_perl/pod2usage core_perl/cpan core_perl/perlbug core_perl/pod2text core_perl/splain core_perl/pl2pm core_perl/h2ph core_perl/perldoc core_perl/prove core_perl/json_pp core_perl/perlthanks core_perl/streamzip core_perl/perlivp core_perl/xsubpp core_perl/encguess core_perl/pod2html core_perl/zipdetails mktorrent msgattrib imginfo pbmtojbg ppmdraw gtkdoc-mkman docker-langserver lvmsar gdbm_load pvck chromedriver llvm-objdump shout hxprintlinks cslatex brctl docker-proxy alsamixer dmenu_run ecryptfs-stat dijkstra loadkeys rpc.mountd dsymutil mountstats src-hilite-lesspipe.sh addftinfo xfs_quota initdb nfsv4.exportd mkfs.bfs paclist qt-faststart btop exo-desktop-item-edit g-ir-compiler cheat pamsharpness h5diff compton-trans cwebp sync arm-none-eabi-gcov-dump extract_mpeg2 vgremove cpio chpasswd hwloc-dump-hwdata lzma idevicenotificationproxy ms_print fsck.btrfs neovim-node-host imgcmp tunefs.reiserfs grops uplatex pdfopen autosp pbmto10x ptftopl etex lpinfo exrmakepreview nl-rule-list nf-ct-add capinfos nsenter unix_update gcr-viewer-gtk4 snmppcap tunelp pgmabel steam pg_upgrade texi2pdf qemu-storage-daemon lld-link arm-none-eabi-ld.bfd luac mcs unzzip-mix hdparm pnmtosir cpu-x lkbib lowdown-diff sku xbuild grub-mkrelpath unxz snmpget cef5latex thin_trim kpsewhich ociomakeclf accessdb pip3 clang-query hunzip tootle ppmtogif lynx cacaplay avr-gcc-nm badblocks pbmtoatk audisp-syslog protocoltojson cefpdflatex scanimage nfsstat wsdl2 f2fslabel ppmtoascii jws mp3rtp csc logname serdi chage pamrgbatopng monop cd-paranoia opj_dump mariadbd-safe openmpt123 host xdg-user-dir xfce4-popup-windowmenu paccache nl-addr-delete gm pdftex paclock cluster gp-collect-app giftext gst-inspect-1.0 sem podboat manette-test xmodmap avr-gcc-13.2.0 calc_tickadj prefcnt parsetrigrams pnmpsnr cjxl glxinfo amixer pamcrater convert_hd wovp2ovf htop lacheck fdp python-config gdialog uconv brprintconf_mfcj615w mysql_convert_table_format woff2_decompress xkbcomp pbmtocis gtester-report hwloc-diff aria_chk tor-prompt ppdpo psfxtable db5.3 db5.3/db_archive db5.3/db_dump db5.3/db_hotbackup db5.3/db_load db5.3/db_stat db5.3/db_printlog db5.3/db_recover db5.3/db_upgrade db5.3/db_tuner db5.3/db_checkpoint db5.3/db_verify db5.3/db_deadlock db5.3/db_log_verify db5.3/db_replicate bvnc capsh lspci ppmpat expand thunderbird cairo-trace djvudump png2pnm wpctl pquery gitk eps2eps zsh dvconnect ps2ascii ntfsusermap qmlscene pcmanfm fsck.ext2 spa-resample gdk-pixbuf-query-loaders nfs-cat sql pwiz.py x86_64-linux-gnu-gcc-ranlib pnmnoraw pnmnlfilt route ct2-opennmt-py-converter pamtodjvurle llvm-rc vgscan nl-neigh-delete zcmp dmsetup ifne scmp_sys_resolver pbmlife bash mkdosfs t1reencode html2text pvscan pwck bmptoppm tmux chwso nvidia-smi drmdevice xfs_db multipathc aomenc mysqltest_embedded gamemoded db_replicate vigr pw-jack qmllint-qt5 pbmpage rst2pseudoxml.py ncat dircolors systemd-sysusers ldns-notify fancontrol numfmt unshare ecryptfs-unwrap-passphrase replace getopt parsort pstree wine gtk4-encode-symbolic-svg rc-sv pactrans gtscompare libtool mflua containerd-stress aa-status vss2text xbanish otfinfo httpie qmlprofiler nodemon hwloc-calc fsnotifywait eu-stack kinit mem_image aa-remove-unknown pluginviewer irssi snmptrapd makepkg-template rst2odt_prepstyles ip6tables-apply libftdi1-config npx iptables-restore-translate pw-mididump mdadm cksum gnome-keyring djvused protonup pw-midiplay vmaf jarsigner pdftotext plog sudoedit llvm-dwarfutil deb2targz mkfs.jfs xml2pmx jest disable-paste ip6tables-legacy-restore rpc.idmapd irqtop efisecdb mmpfb gdk-pixbuf-thumbnailer signcode pamendian kquitapp5 exfatattrib ttx snmptranslate vde_pcapplug tracepath fdisk grub-kbdcomp nl-route-get linux64 ebook-device airscan-discover wsdl gphoto2-config nl-neigh-list pngfix lvextend gtkdoc-mkdb msgmerge klist lastb ebtables-nft-restore test_chmLib ultrabayd rpcbind xelatex geoiplookup mtp-detect dpkg-buildpackage tut pooltype mariadb-backup bash-language-server signver ctracer pre-grohtml media-ctl fc-list lvmsadc x86_64 hmaptool sm-notify e2mmpstatus oslc socat biosdecode p11-kit snmpusm glslang env_parallel.dash freeaptxdec ldns-zcat ompi-clean mendex vdeterm csharp xmrs grub-mkimage ppmdim ppm3d nl-link-name2ifindex jar cec-ctl vss2xhtml nf-log \ No newline at end of file diff --git a/my_go_packages.txt b/my_go_packages.txt index f1f7f984..a1c16ba0 100644 --- a/my_go_packages.txt +++ b/my_go_packages.txt @@ -1 +1 @@ -archive/tar archive/zip bufio bytes compress/bzip2 compress/flate compress/gzip compress/lzw compress/zlib container/heap container/list container/ring context crypto crypto/aes crypto/cipher crypto/des crypto/dsa crypto/ecdh crypto/ecdsa crypto/ed25519 crypto/elliptic crypto/hmac crypto/internal/alias crypto/internal/bigmod crypto/internal/boring crypto/internal/boring/bbig crypto/internal/boring/bcache crypto/internal/boring/sig crypto/internal/edwards25519 crypto/internal/edwards25519/field crypto/internal/nistec crypto/internal/nistec/fiat crypto/internal/randutil crypto/md5 crypto/rand crypto/rc4 crypto/rsa crypto/sha1 crypto/sha256 crypto/sha512 crypto/subtle crypto/tls crypto/x509 crypto/x509/pkix database/sql database/sql/driver debug/buildinfo debug/dwarf debug/elf debug/gosym debug/macho debug/pe debug/plan9obj embed embed/internal/embedtest encoding encoding/ascii85 encoding/asn1 encoding/base32 encoding/base64 encoding/binary encoding/csv encoding/gob encoding/hex encoding/json encoding/pem encoding/xml errors expvar flag fmt go/ast go/build go/build/constraint go/constant go/doc go/doc/comment go/format go/importer go/internal/gccgoimporter go/internal/gcimporter go/internal/srcimporter go/internal/typeparams go/parser go/printer go/scanner go/token go/types hash hash/adler32 hash/crc32 hash/crc64 hash/fnv hash/maphash html html/template image image/color image/color/palette image/draw image/gif image/internal/imageutil image/jpeg image/png index/suffixarray internal/abi internal/buildcfg internal/bytealg internal/cfg internal/coverage internal/coverage/calloc internal/coverage/cformat internal/coverage/cmerge internal/coverage/decodecounter internal/coverage/decodemeta internal/coverage/encodecounter internal/coverage/encodemeta internal/coverage/pods internal/coverage/rtcov internal/coverage/slicereader internal/coverage/slicewriter internal/coverage/stringtab internal/coverage/test internal/coverage/uleb128 internal/cpu internal/dag internal/diff internal/fmtsort internal/fuzz internal/goarch internal/godebug internal/goexperiment internal/goos internal/goroot internal/goversion internal/intern internal/itoa internal/lazyregexp internal/lazytemplate internal/nettrace internal/obscuretestdata internal/oserror internal/pkgbits internal/platform internal/poll internal/profile internal/race internal/reflectlite internal/safefilepath internal/saferio internal/singleflight internal/syscall/execenv internal/syscall/unix internal/sysinfo internal/testenv internal/testlog internal/testpty internal/trace internal/txtar internal/types/errors internal/unsafeheader internal/xcoff io io/fs io/ioutil log log/syslog math math/big math/bits math/cmplx math/rand mime mime/multipart mime/quotedprintable net net/http net/http/cgi net/http/cookiejar net/http/fcgi net/http/httptest net/http/httptrace net/http/httputil net/http/internal net/http/internal/ascii net/http/internal/testcert net/http/pprof net/internal/socktest net/mail net/netip net/rpc net/rpc/jsonrpc net/smtp net/textproto net/url os os/exec os/exec/internal/fdtest os/signal os/user path path/filepath plugin reflect reflect/internal/example1 reflect/internal/example2 regexp regexp/syntax runtime runtime/cgo runtime/coverage runtime/debug runtime/internal/atomic runtime/internal/math runtime/internal/startlinetest runtime/internal/sys runtime/internal/syscall runtime/metrics runtime/pprof runtime/race runtime/race/internal/amd64v1 runtime/trace sort strconv strings sync sync/atomic syscall testing testing/fstest testing/internal/testdeps testing/iotest testing/quick text/scanner text/tabwriter text/template text/template/parse time time/tzdata unicode unicode/utf16 unicode/utf8 unsafe vendor/golang.org/x/crypto/chacha20 vendor/golang.org/x/crypto/chacha20poly1305 vendor/golang.org/x/crypto/cryptobyte vendor/golang.org/x/crypto/cryptobyte/asn1 vendor/golang.org/x/crypto/hkdf vendor/golang.org/x/crypto/internal/alias vendor/golang.org/x/crypto/internal/poly1305 vendor/golang.org/x/net/dns/dnsmessage vendor/golang.org/x/net/http/httpguts vendor/golang.org/x/net/http/httpproxy vendor/golang.org/x/net/http2/hpack vendor/golang.org/x/net/idna vendor/golang.org/x/net/nettest vendor/golang.org/x/sys/cpu vendor/golang.org/x/text/secure/bidirule vendor/golang.org/x/text/transform vendor/golang.org/x/text/unicode/bidi vendor/golang.org/x/text/unicode/norm \ No newline at end of file +archive/tar archive/zip bufio bytes cmp compress/bzip2 compress/flate compress/gzip compress/lzw compress/zlib container/heap container/list container/ring context crypto crypto/aes crypto/cipher crypto/des crypto/dsa crypto/ecdh crypto/ecdsa crypto/ed25519 crypto/elliptic crypto/hmac crypto/internal/alias crypto/internal/bigmod crypto/internal/boring crypto/internal/boring/bbig crypto/internal/boring/bcache crypto/internal/boring/sig crypto/internal/edwards25519 crypto/internal/edwards25519/field crypto/internal/nistec crypto/internal/nistec/fiat crypto/internal/randutil crypto/md5 crypto/rand crypto/rc4 crypto/rsa crypto/sha1 crypto/sha256 crypto/sha512 crypto/subtle crypto/tls crypto/x509 crypto/x509/pkix database/sql database/sql/driver debug/buildinfo debug/dwarf debug/elf debug/gosym debug/macho debug/pe debug/plan9obj embed embed/internal/embedtest encoding encoding/ascii85 encoding/asn1 encoding/base32 encoding/base64 encoding/binary encoding/csv encoding/gob encoding/hex encoding/json encoding/pem encoding/xml errors expvar flag fmt go/ast go/build go/build/constraint go/constant go/doc go/doc/comment go/format go/importer go/internal/gccgoimporter go/internal/gcimporter go/internal/srcimporter go/internal/typeparams go/parser go/printer go/scanner go/token go/types hash hash/adler32 hash/crc32 hash/crc64 hash/fnv hash/maphash html html/template image image/color image/color/palette image/draw image/gif image/internal/imageutil image/jpeg image/png index/suffixarray internal/abi internal/bisect internal/buildcfg internal/bytealg internal/cfg internal/coverage internal/coverage/calloc internal/coverage/cformat internal/coverage/cmerge internal/coverage/decodecounter internal/coverage/decodemeta internal/coverage/encodecounter internal/coverage/encodemeta internal/coverage/pods internal/coverage/rtcov internal/coverage/slicereader internal/coverage/slicewriter internal/coverage/stringtab internal/coverage/test internal/coverage/uleb128 internal/cpu internal/dag internal/diff internal/fmtsort internal/fuzz internal/goarch internal/godebug internal/godebugs internal/goexperiment internal/goos internal/goroot internal/goversion internal/intern internal/itoa internal/lazyregexp internal/lazytemplate internal/nettrace internal/obscuretestdata internal/oserror internal/pkgbits internal/platform internal/poll internal/profile internal/race internal/reflectlite internal/safefilepath internal/saferio internal/singleflight internal/syscall/execenv internal/syscall/unix internal/sysinfo internal/testenv internal/testlog internal/testpty internal/trace internal/txtar internal/types/errors internal/unsafeheader internal/xcoff internal/zstd io io/fs io/ioutil log log/internal log/slog log/slog/internal log/slog/internal/benchmarks log/slog/internal/buffer log/slog/internal/slogtest log/syslog maps math math/big math/bits math/cmplx math/rand mime mime/multipart mime/quotedprintable net net/http net/http/cgi net/http/cookiejar net/http/fcgi net/http/httptest net/http/httptrace net/http/httputil net/http/internal net/http/internal/ascii net/http/internal/testcert net/http/pprof net/internal/socktest net/mail net/netip net/rpc net/rpc/jsonrpc net/smtp net/textproto net/url os os/exec os/exec/internal/fdtest os/signal os/user path path/filepath plugin reflect reflect/internal/example1 reflect/internal/example2 regexp regexp/syntax runtime runtime/cgo runtime/coverage runtime/debug runtime/internal/atomic runtime/internal/math runtime/internal/startlinetest runtime/internal/sys runtime/internal/syscall runtime/internal/wasitest runtime/metrics runtime/pprof runtime/race runtime/race/internal/amd64v1 runtime/trace slices sort strconv strings sync sync/atomic syscall testing testing/fstest testing/internal/testdeps testing/iotest testing/quick testing/slogtest text/scanner text/tabwriter text/template text/template/parse time time/tzdata unicode unicode/utf16 unicode/utf8 unsafe vendor/golang.org/x/crypto/chacha20 vendor/golang.org/x/crypto/chacha20poly1305 vendor/golang.org/x/crypto/cryptobyte vendor/golang.org/x/crypto/cryptobyte/asn1 vendor/golang.org/x/crypto/hkdf vendor/golang.org/x/crypto/internal/alias vendor/golang.org/x/crypto/internal/poly1305 vendor/golang.org/x/net/dns/dnsmessage vendor/golang.org/x/net/http/httpguts vendor/golang.org/x/net/http/httpproxy vendor/golang.org/x/net/http2/hpack vendor/golang.org/x/net/idna vendor/golang.org/x/net/nettest vendor/golang.org/x/sys/cpu vendor/golang.org/x/text/secure/bidirule vendor/golang.org/x/text/transform vendor/golang.org/x/text/unicode/bidi vendor/golang.org/x/text/unicode/norm \ No newline at end of file diff --git a/my_npm_packages.txt b/my_npm_packages.txt index 252cd336..ac65b148 100644 --- a/my_npm_packages.txt +++ b/my_npm_packages.txt @@ -1 +1 @@ -/usr/lib/node_modules mocha svgo remark-language-server semver legit wallpaper-cli nopt updates @volar rome node-gyp remark uglifycss lighthouse live-server corepack vscode-langservers-extracted .bin pyright yarn @captainsafia prettier mdlt google-font-installer npm dockerfile-language-server-nodejs html-minifier uglifyjs grammarly-languageserver emmet-ls .package-lock.json nodemon jest uglify-js bash-language-server \ No newline at end of file +/usr/lib/node_modules mocha svgo remark-language-server semver legit wallpaper-cli nopt updates @volar rome node-gyp remark uglifycss lighthouse live-server corepack vscode-langservers-extracted gulp .bin pyright yarn @captainsafia prettier mdlt google-font-installer npm dockerfile-language-server-nodejs html-minifier uglifyjs grammarly-languageserver emmet-ls .package-lock.json nodemon jest uglify-js bash-language-server \ No newline at end of file diff --git a/my_pacman_packages.txt b/my_pacman_packages.txt index ec8140f4..5b603399 100644 --- a/my_pacman_packages.txt +++ b/my_pacman_packages.txt @@ -1 +1 @@ -a2ps a52dec aalib acl acpi acpid acpid-runit adobe-source-code-pro-fonts adwaita-cursors adwaita-icon-theme alsa-card-profiles alsa-firmware alsa-lib alsa-plugins alsa-topology-conf alsa-ucm-conf alsa-utils alsa-utils-runit amd-ucode aom apparmor apparmor-runit appstream-glib arandr arch-wiki-docs archlinux-appstream-data archlinux-keyring archlinux-mirrorlist argon2 arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib artix-archlinux-support artix-backgrounds artix-backgrounds-extra artix-dark-theme artix-desktop-presets artix-gtk-presets artix-icons artix-keyring artix-mirrorlist artix-qt-presets asciinema at-spi2-core athena-jot atkmm attr audit audit-runit autoconf autoconf-archive automake avahi avahi-runit avr-binutils avr-gcc avr-libc avrdude b43-fwcutter babl base bash bash-completion bat bc bcg729 bind binutils bison blas blocaled bluez bluez-libs bluez-runit boost boost-libs bootlogd botan botan2 brave-bin bridge-utils brother-mfc-j615w brotli bspwm btop btrfs-progs bubblewrap bzip2 c-ares ca-certificates ca-certificates-mozilla ca-certificates-utils cabextract cairo cairomm calcurse calibre cantarell-fonts capstone cargo-make cblas ccls cdparanoia certbot cheat chmlib clang clang+llvm-binaries cloc cmark colordiff compiler-rt confuse connman connman-runit containerd coreutils cpio cpu-x cpupower cpupower-runit cronie cronie-runit cryptsetup cryptsetup-runit ctags cups cups-filters cups-runit curl cython dash dav1d db db5.3 dbus dbus-glib dbus-python dbus-runit dconf ddgr deb2targz debuginfod default-cursors desktop-file-utils device-mapper device-mapper-runit devour dfu-programmer dfu-util dhclient dhcpcd dhcpcd-runit dialog dictd diffstat difftastic diffutils ding-libs dirb djvulibre dkms dmenu dmidecode dmraid dnslookup-bin dnsmasq dnssec-anchors docbook-xml docbook-xsl docker docker-compose docker-runit dosfstools dotnet-host dotnet-runtime double-conversion dpkg dtach dtc duktape dunst dust dvtm e2fsprogs ecryptfs-utils ed edk2-ovmf efibootmgr efivar egl-wayland eglexternalplatform elfutils elogind elogind-runit enchant enscript espeak esysusers etmpfiles exa exfat-utils exiv2 exo expac expat f2fs-tools fail2ban fail2ban-runit fakeroot fd feh ffcall ffmpeg ffmpegthumbnailer ffmpegthumbs fftw file filesystem fim findutils firefox firejail flac flex fmt foliate fontconfig freeglut freetype2 fribidi fuse-common fuse2 fuse3 fzf galculator gamemode garcon gawk gc gcc gcc-libs gcolor3 gcr gcr-4 gd gdb gdb-common gdbm gdk-pixbuf2 geckodriver gegl geoclue geocode-glib geocode-glib-common geoip geoip-database gettext gfeeds ghostscript giflib gifsicle gimp git git-lfs gjs glew glfw-x11 glib-networking glib2 glib2-docs glibc glibmm glslang glu gmime3 gmp gnome-common gnome-desktop gnome-desktop-4 gnome-desktop-common gnome-keyring gnupg gnutls go gobject-introspection gobject-introspection-runtime gobuster gperftools gpgme gpm gptfdisk granite graphene graphicsmagick graphite graphviz grep groff grub gsettings-desktop-schemas gsfonts gsl gsm gspell gssdp gssproxy gst-plugins-bad-libs gst-plugins-base gst-plugins-base-libs gst-plugins-good gst-plugins-ugly gst-python gstreamer gtest gtk-doc gtk-update-icon-cache gtk-vnc gtk2 gtk3 gtk4 gtkmm3 gtksourceview4 gtktranslate-bin gts guile gumbo-parser gupnp gupnp-igd guvcview guvcview-common gvfs gvfs-afc gvfs-mtp gwe gzip harfbuzz harfbuzz-icu haveged haveged-runit hdf5 hdparm hicolor-icon-theme hidapi highway html-xml-utils htop http-parser httpie hunspell hwdata hwinfo hwloc hyphen iana-etc ibus icu iftop ifuse ijs imagemagick imath imlib2 inetutils iniparser inkscape inotify-tools intel-oneapi-common intel-oneapi-compiler-dpcpp-cpp-runtime intel-oneapi-compiler-dpcpp-cpp-runtime-libs intel-oneapi-compiler-shared-opencl-cpu intel-oneapi-compiler-shared-runtime intel-oneapi-compiler-shared-runtime-libs intel-oneapi-openmp intel-oneapi-tbb intel-ucode intltool inxi ipp-usb iproute2 iptables iputils ipw2100-fw ipw2200-fw irssi iscan-for-epson-v500-photo iscan-plugin-gt-f720 iso-codes itstool iw jansson jasper java-environment-common java-openjdk-bin java-runtime-common jbig2dec jemalloc jfsutils jo jpegoptim jq jre8-openjdk jre8-openjdk-headless js102 js78 json-c json-glib jsoncpp jxrlib karchive kauth kbd kbookmarks kcodecs kcompletion kconfig kconfigwidgets kcoreaddons kcrash kdbusaddons kded keepassxc kepubify-bin kexec-tools keynav keyutils kglobalaccel kguiaddons ki18n kiconthemes kio kitemmodels kitemviews kjobwidgets kmod knotifications krb5 krita kservice ktextwidgets kwallet kwidgetsaddons kwindowsystem kxmlgui kyotocabinet l-smash lame lapack lcms2 ldns lensfun less level-zero-loader lib2geom lib32-acl lib32-alsa-lib lib32-alsa-plugins lib32-at-spi2-core lib32-attr lib32-brotli lib32-bzip2 lib32-cairo lib32-colord lib32-curl lib32-dbus lib32-e2fsprogs lib32-elogind lib32-expat lib32-flac lib32-fontconfig lib32-freetype2 lib32-fribidi lib32-gamemode lib32-gcc-libs lib32-gdk-pixbuf2 lib32-gettext lib32-giflib lib32-glib2 lib32-glibc lib32-gmp lib32-gnutls lib32-gst-plugins-base-libs lib32-gstreamer lib32-gtk3 lib32-harfbuzz lib32-icu lib32-keyutils lib32-krb5 lib32-lcms2 lib32-libasyncns lib32-libcanberra lib32-libcap lib32-libcups lib32-libdatrie lib32-libdrm lib32-libelf lib32-libepoxy lib32-libffi lib32-libgcrypt lib32-libglvnd lib32-libgpg-error lib32-libidn2 lib32-libjpeg-turbo lib32-libldap lib32-libltdl lib32-libnl lib32-libogg lib32-libpcap lib32-libpciaccess lib32-libpipewire lib32-libpng lib32-libpsl lib32-libpulse lib32-librsvg lib32-libsndfile lib32-libssh2 lib32-libtasn1 lib32-libthai lib32-libtiff lib32-libtirpc lib32-libunistring lib32-libunwind lib32-libva lib32-libvorbis lib32-libx11 lib32-libxau lib32-libxcb lib32-libxcomposite lib32-libxcrypt lib32-libxcursor lib32-libxdamage lib32-libxdmcp lib32-libxext lib32-libxfixes lib32-libxft lib32-libxi lib32-libxinerama lib32-libxkbcommon lib32-libxml2 lib32-libxrandr lib32-libxrender lib32-libxshmfence lib32-libxslt lib32-libxss lib32-libxtst lib32-libxv lib32-libxxf86vm lib32-llvm-libs lib32-lm_sensors lib32-mesa lib32-mpg123 lib32-ncurses lib32-nettle lib32-nspr lib32-nss lib32-nvidia-utils lib32-ocl-icd lib32-openal lib32-openssl lib32-opus lib32-orc lib32-p11-kit lib32-pam lib32-pango lib32-pcre lib32-pcre2 lib32-pipewire lib32-pipewire-jack lib32-pipewire-v4l2 lib32-pixman lib32-readline lib32-sqlite lib32-tdb lib32-udev lib32-util-linux lib32-v4l-utils lib32-vulkan-icd-loader lib32-vulkan-radeon lib32-wayland lib32-xz lib32-zlib lib32-zstd libadwaita libaec libaio libappindicator-gtk3 libarchive libart-lgpl libass libassuan libasyncns libatasmart libavc1394 libavif libb2 libblockdev libbluray libbpf libbs2b libbsd libburn libbytesize libcaca libcacard libcamera libcamera-ipa libcanberra libcap libcap-ng libcddb libcdio libcdio-paranoia libcdr libcloudproviders libcolord libconfig libcpuid libcups libcurl-gnutls libdaemon libdatrie libdazzle libdbusmenu-glib libdbusmenu-gtk3 libdbusmenu-qt5 libde265 libdecor libdrm libdv libdvdnav libdvdread libedit libelf libelogind libepoxy libev libevdev libevent libexif libfdk-aac libffi libfm libfm-extra libfm-gtk2 libfontenc libfreeaptx libftdi libgcrypt libgdiplus libgee libgexiv2 libgirepository libgit2 libglvnd libgnomekbd libgovirt libgpg-error libgphoto2 libgtop libgudev libhandy libheif libibus libical libice libid3tag libidn libidn2 libiec61883 libieee1284 libimagequant libimobiledevice libindicator-gtk3 libinih libinput libisl libisoburn libisofs libjpeg-turbo libjpeg6-turbo libjxl libkeybinder3 libksba liblc3 libldac libldap liblqr libluv libmaa libmanette libmaxminddb libmbim libmd libmfx libmicrohttpd libmm-glib libmng libmnl libmodplug libmpc libmpeg2 libmspack libmtp libmypaint libmysofa libndp libnet libnetfilter_conntrack libnewt libnfnetlink libnfs libnftnl libnghttp2 libnice libnl libnm libnotify libnsl libogg libomxil-bellagio libopenmpt libopenraw libosinfo libotr libp11-kit libpaper libpcap libpciaccess libpgm libpipeline libpipewire libplacebo libplist libpng libpng12 libproxy libpsl libpulse libqmi libqrtr-glib libraqm libraw libraw1394 librest librevenge librewolf librsvg libsamplerate libsasl libseccomp libsecret libshout libsidplay libsigc++ libsigsegv libslirp libsm libsndfile libsodium libsoup libsoup3 libsoxr libspiro libssh libssh2 libstemmer libsynctex libsysprof-capture libtasn1 libteam libtermkey libthai libtheora libtiff libtirpc libtool libtorrent libtraceevent libtracefs libudev libunistring libunrar libunwind liburcu liburing libusb libusb-compat libusbmuxd libutempter libuv libva libvdpau libverto libvirt libvirt-glib libvirt-python libvirt-runit libvisio libvisual libvorbis libvpx libvterm libvterm01 libwacom libwebp libwireplumber libwm-git libwmf libwnck3 libwpd libwpe libwpg libx11 libx86emu libxau libxaw libxcb libxcomposite libxcrypt libxcursor libxcvt libxdamage libxdmcp libxext libxfce4ui libxfce4util libxfixes libxfont2 libxft libxi libxinerama libxkbcommon libxkbcommon-x11 libxkbfile libxklavier libxml2 libxmlrpc libxmu libxnvctrl libxpm libxpresent libxrandr libxrender libxres libxshmfence libxslt libxss libxt libxtst libxv libxvmc libxxf86vm libyaml libyuv libzip licenses lilv links linux linux-api-headers linux-docs linux-firmware linux-firmware-whence linux-headers linux-lts linux-lts-headers linux-zen linux-zen-headers litecli llvm llvm-libs lm_sensors lmdb logrotate lowdown lsb-release lshw lsof lua lua52 lua52-filesystem lua53 luajit luit lutris lv2 lvm2 lvm2-runit lxappearance lxmenu-data lynis lynx lz4 lzip lzo m4 mailcap make mallard-ducktype man-db man-pages mangohud mariadb mariadb-clients mariadb-libs mariadb-runit marksman mate-icon-theme-faenza mathjax mawk mcomix md4c mdadm mdadm-runit media-player-info memtest86+ menu-cache mesa mesa-utils meson metis micro minizip minizip-ng mkcert mkinitcpio mkinitcpio-busybox mkinitcpio-openswap mktorrent mlocate moar mobile-broadband-provider-info modemmanager mono moreutils mousepad mpfr mpg123 mpv msgpack-c mtdev mujs multipath-tools mupdf mycli mypaint-brushes1 mypy nano nasm nawk nbd ncpamixer ncurses ndctl neo-matrix-git neomutt neovim net-snmp net-tools netpbm nettle networkmanager networkmanager-runit newsboat nfs-utils nfs-utils-runit nfsidmap nftables nginx nginx-runit ninja nmap node-gyp nodejs nodejs-nopt notmuch-runtime npm npth nspr nss nss-mdns ntfs-3g ntp ntp-runit numactl nvidia-dkms nvidia-utils nvim-packer-git nvtop obfs4proxy ocl-icd onednn onefetch oniguruma onlyoffice-bin openal openbsd-netcat opencl-headers opencolorio opencore-amr opendoas openexr openimageio openjpeg2 openmpi openpmix openresolv openshadinglanguage openssh openssh-runit openssl openssl-1.1 openvpn openvpn-runit optipng opus orc os-prober osinfo-db p0f p11-kit p7zip pacman pacman-contrib pacutils pahole pam pambase pamixer pandoc-bin pango pangomm papirus-icon-theme parallel parted pass patch pavucontrol pax paxtest pciutils pcmanfm pcre pcre2 pcsclite pdfgrep peek perl perl-algorithm-diff perl-class-method-modifiers perl-clone perl-data-optlist perl-devel-globaldestruction perl-encode-locale perl-error perl-file-listing perl-html-parser perl-html-tagset perl-http-cookies perl-http-daemon perl-http-date perl-http-message perl-http-negotiate perl-image-exiftool perl-import-into perl-io-html perl-io-tty perl-ipc-run perl-ipc-run3 perl-libwww perl-lwp-mediatypes perl-mailtools perl-module-runtime perl-moo perl-net-http perl-parallel-forkmanager perl-params-util perl-regexp-common perl-role-tiny perl-sub-exporter perl-sub-exporter-progressive perl-sub-install perl-sub-quote perl-time-duration perl-timedate perl-try-tiny perl-uri perl-www-robotrules perl-xml-parser perl-xml-writer pfetch pgcli-git phodav pick picom pinentry pipewire pipewire-audio pipewire-jack pipewire-pulse pipewire-v4l2 pixman pkcs11-helper pkgconf podofo polkit polkit-qt5 poppler poppler-data poppler-glib popt portaudio postgresql postgresql-libs postgresql-old-upgrade postgresql-runit postman-bin potrace powertop ppp prettier privoxy privoxy-runit procps-ng progress protobuf protonup-git proxychains-ng psmisc psutils pugixml pulseaudio-alsa pybind11 pystring python python-acme python-anyio python-anytree python-appdirs python-apsw python-argcomplete python-async-timeout python-attrs python-autocommand python-backports.csv python-beaker python-beautifulsoup4 python-brotli python-brotlicffi python-cachecontrol python-cairo python-certifi python-cffi python-chardet python-charset-normalizer python-cheetah3 python-cleo python-cli_helpers python-click python-colorama python-commonmark python-configargparse python-configobj python-contextlib2 python-contourpy python-crashtest python-cryptography python-css-parser python-cssselect python-cycler python-dateutil python-decorator python-defusedxml python-distlib python-distro python-dnspython python-docopt python-docutils python-dotty-dict python-entrypoints python-et-xmlfile python-evdev python-fastjsonschema python-faust-cchardet python-feedparser python-filelock python-flask python-fonttools python-future python-gobject python-grip python-h11 python-halo python-hid python-hjson python-html2text python-html5-parser python-html5lib python-httpcore python-httpx python-humanize python-idna python-ifaddr python-importlib-metadata python-inflate64 python-inflect python-injector python-isodate python-itsdangerous python-jaraco.classes python-jaraco.context python-jaraco.functools python-jaraco.text python-jarowinkler python-jeepney python-jinja python-josepy python-jsonpointer python-jsonschema python-keyring python-kitchen python-kiwisolver python-listparser python-log_symbols python-lxml python-mako python-markdown python-markdown-it-py python-markupsafe python-matplotlib python-mdurl python-mechanize python-milc python-moddb python-more-itertools python-msgpack python-multidict python-multivolumefile python-mypy_extensions python-netifaces python-notify2 python-nspektr python-numpy python-openpyxl python-ordered-set python-packaging python-pandas python-parsedatetime python-path-and-address python-pdftotext python-peewee python-pendulum python-pep517 python-pgspecial python-pillow python-pip python-platformdirs python-ply python-prompt_toolkit python-protobuf python-psutil python-psycopg python-psycopg2 python-py3nvml python-py7zr python-pyaes python-pybcj python-pychm python-pycountry python-pycparser python-pycryptodome python-pycryptodomex python-pydantic python-pygments python-pyinotify python-pylev python-pymongo python-pymysql python-pynacl python-pynput python-pyopenssl python-pyparsing python-pyperclip python-pyppmd python-pyqt5 python-pyqt5-sip python-pyqt6 python-pyqt6-sip python-pyqt6-webengine python-pyrate-limiter python-pyrfc3339 python-pyrsistent python-pysocks python-pyte python-pythondialog python-pytz python-pytzdata python-pyusb python-pyxdg python-pyzstd python-rapidfuzz python-readability-lxml python-regex python-requests python-requests-futures python-requests-toolbelt python-resolvelib python-retrying python-rfc3986 python-rfc3987 python-rich python-rx python-secretstorage python-setproctitle python-setuptools python-sgmllib3k python-shtab python-six python-sniffio python-soupsieve python-spinners python-sqlglot python-sqlparse python-stem python-tabulate python-tenacity python-termcolor python-terminaltables python-texttable python-toml python-tomli python-tomlkit python-toolz python-torrequest python-tqdm python-trove-classifiers python-typing_extensions python-uc-micro-py python-unrardll python-urllib3 python-urwid python-validate-pyproject python-wcwidth python-webcolors python-webencodings python-websocket-client python-werkzeug python-wheel python-xlib python-xmltodict python-yaml python-zeroconf python-zipp python-zope-component python-zope-deferredimport python-zope-deprecation python-zope-event python-zope-hookable python-zope-interface python-zope-proxy qastools qca-qt5 qcustomplot qemu-audio-alsa qemu-audio-dbus qemu-audio-jack qemu-audio-oss qemu-audio-pa qemu-audio-sdl qemu-audio-spice qemu-block-curl qemu-block-dmg qemu-block-nfs qemu-block-ssh qemu-chardev-spice qemu-common qemu-desktop qemu-hw-display-qxl qemu-hw-display-virtio-gpu qemu-hw-display-virtio-gpu-gl qemu-hw-display-virtio-gpu-pci qemu-hw-display-virtio-gpu-pci-gl qemu-hw-display-virtio-vga qemu-hw-display-virtio-vga-gl qemu-hw-s390x-virtio-gpu-ccw qemu-hw-usb-host qemu-hw-usb-redirect qemu-hw-usb-smartcard qemu-img qemu-pr-helper qemu-system-x86 qemu-system-x86-firmware qemu-tools qemu-ui-curses qemu-ui-dbus qemu-ui-egl-headless qemu-ui-gtk qemu-ui-opengl qemu-ui-sdl qemu-ui-spice-app qemu-ui-spice-core qemu-vhost-user-gpu qhexedit2 qhull qmk qpdf qrencode qscintilla-qt5 qt5-base qt5-declarative qt5-imageformats qt5-multimedia qt5-quickcontrols qt5-quickcontrols2 qt5-speech qt5-styleplugins qt5-svg qt5-translations qt5-wayland qt5-x11extras qt6-base qt6-declarative qt6-imageformats qt6-positioning qt6-svg qt6-translations qt6-webchannel qt6-webengine quazip-qt5 quick-lint-js ragel ranger rapidjson rav1e raw-thumbnailer re2 readline rebuild-detector redshift reiserfsprogs rest rhash ripgrep rpcbind rpcbind-runit rsm rsspls rsv rsync rsync-runit rtkit rtorrent rubberband run-parts runc runit runit-rc rustdesk-bin rustup rzip s-nail sane sane-airscan sbc sc screen screenkey scroll-git scrot sdl12-compat sdl2 sdl2_image seabios sed semver serd sfsexp shaderc shadow shared-mime-info shellcheck sherlock-git shfmt sku-git slang slop snappy snarf socat sockstat solid sonnet sord sound-theme-freedesktop source-highlight spandsp spdlog speed-test speedtest-cli-git speex speexdsp spice spice-gtk spice-protocol spirv-tools sqlcipher sqlite sqlitebrowser sratom srt startup-notification steam stfl strace streamlink stylua sudo suitesparse svgo svt-av1 sxhkd sxiv sysfsutils syslog-ng syslog-ng-runit systeroid t1lib taglib talloc tar tcl tcpdump tcsh tdb terminus-font termshark texinfo texlive-bin thefuck thin-provisioning-tools thunderbird tig timeshift tinycompress tinyxml tk tldr tmux tmux-resurrect tootle tor tor-runit tpm2-tss traceroute tracker3 tree tree-sitter tslib ttf-carlito ttf-dejavu ttf-droid ttf-hanazono ttf-inconsolata ttf-joypixels ttf-liberation ttf-roboto ttf-roboto-mono tumbler tut twolame tzdata uchardet udev udisks2 ufw ufw-runit ungoogled-chromium unibilium unrar unzip upower urlscan usbmuxd usbredir usbutils util-linux util-linux-libs v4l-utils vala valgrind vde2 vi vid.stab virglrenderer virt-install virt-manager virt-viewer virtiofsd vmaf vnstat vnstat-runit volume_key vte-common vte3 vulkan-headers vulkan-icd-loader vulkan-radeon w3m wavemon wavpack wayland wayland-protocols webkit2gtk webkit2gtk-4.1 webrtc-audio-processing wemux wget wgetpaste which whois wine-staging wireless-regdb wireplumber wireshark-cli wmctrl wmutils-git woff2 wolfssl wordgrinder wpa_supplicant wpa_supplicant-runit wpebackend-fdo wxwidgets-common wxwidgets-gtk3 x264 x265 xapian-core xapp xbanish xbitmaps xcb-proto xcb-util xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xclip xcursor-premium xdg-dbus-proxy xdg-desktop-portal-gnome xdg-desktop-portal-gtk xdg-user-dirs xdg-utils xdo xdotool xf86-input-libinput xf86-input-vmmouse xf86-video-amdgpu xf86-video-ati xf86-video-dummy xf86-video-fbdev xf86-video-intel xf86-video-nouveau xf86-video-openchrome xf86-video-sisusb xf86-video-vesa xf86-video-vmware xf86-video-voodoo xfce4-artwork xfce4-panel xfce4-screenshooter xfconf xfsprogs xidel xkeyboard-config xmlstarlet xorg-bdftopcf xorg-font-util xorg-fonts-encodings xorg-mkfontscale xorg-server xorg-server-common xorg-server-xvfb xorg-setxkbmap xorg-xauth xorg-xdpyinfo xorg-xev xorg-xhost xorg-xinit xorg-xkbcomp xorg-xmodmap xorg-xprop xorg-xrandr xorg-xrdb xorg-xset xorg-xsetroot xorg-xwininfo xorgproto xournalpp xsel xterm xvidcore xxhash xz yajl yaml-cpp yank yapf yarn yelp-tools yelp-xsl yq yt-dlp ytfzf zellij zenity zeromq zimg zip zlib zsh zstd zulu-11-bin zziplib \ No newline at end of file +a2ps a52dec aalib abseil-cpp acl acpi acpid acpid-runit adobe-source-code-pro-fonts adwaita-cursors adwaita-icon-theme airshipper alacritty alsa-card-profiles alsa-firmware alsa-lib alsa-plugins alsa-topology-conf alsa-ucm-conf alsa-utils alsa-utils-runit amd-ucode android-file-transfer android-udev aom apparmor apparmor-runit appstream appstream-glib arandr arch-wiki-docs archlinux-appstream-data archlinux-keyring archlinux-mirrorlist argon2 arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib artix-archlinux-support artix-backgrounds artix-backgrounds-extra artix-dark-theme artix-desktop-presets artix-gtk-presets artix-icons artix-keyring artix-mirrorlist artix-qt-presets asciinema at-spi2-core athena-jot atkmm attr audit audit-runit autoconf autoconf-archive automake avahi avahi-runit avr-binutils avr-gcc avr-libc avrdude b43-fwcutter babl base bash bash-completion bat bc bcg729 bind binutils bison blas blocaled bluez bluez-libs bluez-runit boost boost-libs bootlogd botan botan2 bridge-utils brother-mfc-j615w brotli bspwm btop btrfs-progs bubblewrap bzip2 c-ares ca-certificates ca-certificates-mozilla ca-certificates-utils cabextract cairo cairomm calcurse calibre cantarell-fonts capstone cargo-make cbindgen cblas ccls cdparanoia certbot cheat chmlib clang clang+llvm-binaries clang15 cloc cmark colordiff compiler-rt compiler-rt15 confuse connman connman-runit containerd coreutils cpio cpu-x cpupower cpupower-runit cronie cronie-runit cryptsetup cryptsetup-runit ctags cups cups-filters cups-runit curl cython dash dav1d db db5.3 dbus dbus-glib dbus-python dbus-runit dconf ddgr deb2targz debuginfod default-cursors desktop-file-utils device-mapper device-mapper-runit devour dfu-programmer dfu-util dhclient dhcpcd dhcpcd-runit dialog dictd diffstat difftastic diffutils ding-libs dirb djvulibre dkms dmenu dmidecode dmraid dnslookup-bin dnsmasq dnssec-anchors docbook-xml docbook-xsl docker docker-compose docker-runit dosfstools dotnet-host dotnet-runtime double-conversion dpkg dtach dtc duktape dump_syms dunst dust dvtm e2fsprogs ecryptfs-utils ed edk2-ovmf efibootmgr efivar egl-wayland eglexternalplatform elfutils elogind elogind-runit enchant enscript espeak esysusers etmpfiles exfat-utils exiv2 exo expac expat eza f2fs-tools fail2ban fail2ban-runit fakeroot fd feh ffcall ffmpeg ffmpegthumbnailer ffmpegthumbs fftw file filesystem fim findutils firefox firejail flac flex fmt foliate fontconfig freeglut freetype2 fribidi fuse-common fuse2 fuse3 fzf galculator gamemode garcon gawk gc gcc gcc-libs gcolor3 gcr gcr-4 gd gdb gdb-common gdbm gdk-pixbuf2 geckodriver gegl geoclue geocode-glib geocode-glib-common geoip geoip-database gettext gfeeds ghc-libs ghostscript giflib gifsicle gimp git git-lfs gjs gklib glew glfw-x11 glib-networking glib2 glib2-docs glibc glibmm glslang glu gmime3 gmp gnome-common gnome-desktop gnome-desktop-4 gnome-desktop-common gnome-keyring gnupg gnutls go gobject-introspection gobject-introspection-runtime gobuster gperftools gpgme gpm gpm-runit gptfdisk granite graphene graphicsmagick graphite graphviz grep groff grub gsettings-desktop-schemas gsfonts gsl gsm gspell gssdp gssproxy gst-plugins-bad-libs gst-plugins-base gst-plugins-base-libs gst-plugins-good gst-plugins-ugly gst-python gstreamer gtest gtk-doc gtk-update-icon-cache gtk-vnc gtk2 gtk3 gtk4 gtkmm3 gtksourceview4 gtktranslate-bin gts guile gulp gumbo-parser gupnp gupnp-igd guvcview guvcview-common gvfs gvfs-afc gvfs-mtp gwe gzip harfbuzz harfbuzz-icu haskell-aeson haskell-assoc haskell-attoparsec haskell-base-compat haskell-base-compat-batteries haskell-base-orphans haskell-bifunctors haskell-comonad haskell-contravariant haskell-data-array-byte haskell-data-fix haskell-diff haskell-distributive haskell-dlist haskell-erf haskell-fgl haskell-foldable1-classes-compat haskell-generically haskell-ghc-bignum-orphans haskell-hashable haskell-indexed-traversable haskell-indexed-traversable-instances haskell-integer-logarithms haskell-onetuple haskell-primitive haskell-quickcheck haskell-random haskell-regex-base haskell-regex-tdfa haskell-scientific haskell-semialign haskell-semigroupoids haskell-splitmix haskell-statevar haskell-strict haskell-tagged haskell-text-short haskell-th-abstraction haskell-these haskell-time-compat haskell-transformers-compat haskell-unordered-containers haskell-uuid-types haskell-vector haskell-vector-stream haskell-witherable haveged haveged-runit hdf5 hdparm hicolor-icon-theme hidapi highway html-xml-utils htop http-parser httpie hunspell hwdata hwinfo hwloc hyphen iana-etc ibus icu iftop ifuse ijs imagemagick imake imath imlib2 inetutils iniparser inkscape inotify-tools intel-oneapi-common intel-oneapi-compiler-dpcpp-cpp-runtime intel-oneapi-compiler-dpcpp-cpp-runtime-libs intel-oneapi-compiler-shared-opencl-cpu intel-oneapi-compiler-shared-runtime intel-oneapi-compiler-shared-runtime-libs intel-oneapi-openmp intel-oneapi-tbb intel-ucode intltool inxi ipp-usb iproute2 iptables iputils ipw2100-fw ipw2200-fw irssi iscan-for-epson-v500-photo iscan-plugin-gt-f720 iso-codes itstool iw jansson jasper java-environment-common java-openjdk-bin java-runtime-common jbig2dec jbigkit jemalloc jfsutils jo jpegoptim jq jre8-openjdk jre8-openjdk-headless js102 js78 json-c json-glib jsoncpp jxrlib karchive5 kauth5 kbd kbookmarks5 kcodecs5 kcompletion5 kconfig5 kconfigwidgets5 kcoreaddons5 kcrash5 kdbusaddons5 kded5 keepassxc kepubify-bin kexec-tools keynav keyutils kglobalaccel5 kguiaddons5 ki18n5 kiconthemes5 kio5 kitemmodels5 kitemviews5 kjobwidgets5 kmod knotifications5 krb5 krita kservice5 ktextwidgets5 kwallet5 kwidgetsaddons5 kwindowsystem5 kxmlgui5 kyotocabinet l-smash lame lapack lcms2 ldns lensfun less level-zero-loader lib2geom lib32-acl lib32-alsa-lib lib32-alsa-plugins lib32-at-spi2-core lib32-attr lib32-brotli lib32-bzip2 lib32-cairo lib32-colord lib32-curl lib32-dbus lib32-e2fsprogs lib32-elogind lib32-expat lib32-flac lib32-fontconfig lib32-freetype2 lib32-fribidi lib32-gamemode lib32-gcc-libs lib32-gdk-pixbuf2 lib32-gettext lib32-giflib lib32-glib2 lib32-glibc lib32-gmp lib32-gnutls lib32-gst-plugins-base-libs lib32-gstreamer lib32-gtk3 lib32-harfbuzz lib32-icu lib32-keyutils lib32-krb5 lib32-lcms2 lib32-libasyncns lib32-libcanberra lib32-libcap lib32-libcups lib32-libdatrie lib32-libdrm lib32-libelf lib32-libepoxy lib32-libffi lib32-libgcrypt lib32-libglvnd lib32-libgpg-error lib32-libidn2 lib32-libjpeg-turbo lib32-libldap lib32-libltdl lib32-libnl lib32-libogg lib32-libpcap lib32-libpciaccess lib32-libpipewire lib32-libpng lib32-libpsl lib32-libpulse lib32-librsvg lib32-libsndfile lib32-libssh2 lib32-libtasn1 lib32-libthai lib32-libtiff lib32-libtirpc lib32-libunistring lib32-libunwind lib32-libva lib32-libvorbis lib32-libx11 lib32-libxau lib32-libxcb lib32-libxcomposite lib32-libxcrypt lib32-libxcrypt-compat lib32-libxcursor lib32-libxdamage lib32-libxdmcp lib32-libxext lib32-libxfixes lib32-libxft lib32-libxi lib32-libxinerama lib32-libxkbcommon lib32-libxml2 lib32-libxrandr lib32-libxrender lib32-libxshmfence lib32-libxslt lib32-libxss lib32-libxtst lib32-libxv lib32-libxxf86vm lib32-llvm-libs lib32-lm_sensors lib32-mesa lib32-mpg123 lib32-ncurses lib32-nettle lib32-nspr lib32-nss lib32-nvidia-utils lib32-ocl-icd lib32-openal lib32-openssl lib32-opus lib32-orc lib32-p11-kit lib32-pam lib32-pango lib32-pcre lib32-pcre2 lib32-pipewire lib32-pipewire-jack lib32-pipewire-v4l2 lib32-pixman lib32-readline lib32-sqlite lib32-tdb lib32-udev lib32-util-linux lib32-v4l-utils lib32-vulkan-icd-loader lib32-vulkan-radeon lib32-wayland lib32-xcb-util-keysyms lib32-xz lib32-zlib lib32-zstd libadwaita libaec libaio libappindicator-gtk3 libarchive libart-lgpl libass libassuan libasyncns libatasmart libavc1394 libavif libb2 libblockdev libbluray libbpf libbs2b libbsd libburn libbytesize libcaca libcacard libcamera libcamera-ipa libcanberra libcap libcap-ng libcddb libcdio libcdio-paranoia libcdr libcloudproviders libcolord libconfig libcpuid libcups libcupsfilters libcurl-gnutls libdaemon libdatrie libdazzle libdbusmenu-glib libdbusmenu-gtk3 libdbusmenu-qt5 libde265 libdecor libdeflate libdovi libdrm libdv libdvdnav libdvdread libedit libelf libelogind libepoxy libev libevdev libevent libexif libfdk-aac libffi libfm libfm-extra libfm-gtk2 libfontenc libfreeaptx libftdi libgcrypt libgdiplus libgee libgexiv2 libgirepository libgit2 libglvnd libgnomekbd libgovirt libgpg-error libgphoto2 libgtop libgudev libhandy libheif libibus libical libice libidn libidn2 libiec61883 libieee1284 libimagequant libimobiledevice libindicator-gtk3 libinih libinput libisl libisoburn libisofs libjpeg-turbo libjpeg6-turbo libjxl libkeybinder3 libksba liblc3 libldac libldap liblqr libluv libmaa libmanette libmaxminddb libmbim libmd libmfx libmicrohttpd libmm-glib libmng libmnl libmodplug libmpc libmpeg2 libmspack libmtp libmupdf libmypaint libmysofa libndp libnetfilter_conntrack libnewt libnfnetlink libnfs libnftnl libnghttp2 libnice libnl libnm libnotify libnsl libnvme libogg libomxil-bellagio libopenmpt libopenraw libosinfo libotr libp11-kit libpaper libpcap libpciaccess libpgm libpipeline libpipewire libplacebo libplist libpng libpng12 libppd libproxy libpsl libpulse libqmi libqrtr-glib libraqm libraw libraw1394 librest librevenge librewolf-bin librsvg libsamplerate libsasl libseccomp libsecret libshout libsidplay libsigc++ libsigsegv libslirp libsm libsndfile libsodium libsoup libsoup3 libsoxr libspiro libssh libssh2 libstemmer libsynctex libsysprof-capture libtasn1 libteam libtermkey libthai libtheora libtiff libtirpc libtool libtorrent libtraceevent libtracefs libudev libunistring libunrar libunwind liburcu liburing libusb libusb-compat libusbmuxd libutempter libuv libva libvdpau libverto libvirt libvirt-glib libvirt-python libvirt-runit libvisio libvisual libvorbis libvpx libvterm libvterm01 libwacom libwebp libwireplumber libwm-git libwmf libwnck3 libwpd libwpe libwpg libx11 libx86emu libxau libxaw libxcb libxcomposite libxcrypt libxcrypt-compat libxcursor libxcvt libxdamage libxdmcp libxext libxfce4ui libxfce4util libxfixes libxfont2 libxft libxi libxinerama libxkbcommon libxkbcommon-x11 libxkbfile libxklavier libxml2 libxmlb libxmlrpc libxmu libxnvctrl libxpm libxpresent libxrandr libxrender libxres libxshmfence libxslt libxss libxt libxtst libxv libxvmc libxxf86vm libyaml libyuv libzip licenses liftoff-bin lilv links linux linux-api-headers linux-docs linux-firmware linux-firmware-whence linux-headers linux-lts linux-lts-headers linux-zen linux-zen-headers litecli lld llvm llvm-libs llvm15-libs lm_sensors lmdb logrotate lowdown lsb-release lshw lsof lua lua52 lua52-filesystem lua53 luajit luit lutris lv2 lvm2 lvm2-runit lxappearance lxmenu-data lynis lynx lz4 lzip lzo m4 mailcap make mallard-ducktype man-db man-pages mangohud mariadb mariadb-clients mariadb-libs mariadb-runit marksman mate-icon-theme-faenza mathjax mawk mcomix md4c mdadm mdadm-runit media-player-info memtest86+ menu-cache mesa mesa-utils meson metalog metalog-runit metis micro minizip minizip-ng mkcert mkinitcpio mkinitcpio-busybox mkinitcpio-openswap mktorrent mlocate moar mobile-broadband-provider-info modemmanager mono moreutils mousepad mpfr mpg123 mpv msgpack-c mtdev mujs multipath-tools mupdf mycli mypaint-brushes1 mypy nano nasm nawk nbd ncpamixer ncurses ndctl neo-matrix-git neomutt neovim net-snmp net-tools netpbm nettle networkmanager networkmanager-runit newsboat nfs-utils nfs-utils-runit nfsidmap nftables nginx nginx-runit ninja nmap node-gyp nodejs nodejs-nopt notmuch-runtime npm npth nspr nss nss-mdns ntfs-3g ntp ntp-runit numactl nvidia-dkms nvidia-utils nvim-packer-git nvm nvtop-nosystemd-git obfs4proxy ocl-icd onednn onefetch onevpl oniguruma onlyoffice-bin openal openbsd-netcat opencl-headers opencolorio opencore-amr opendoas openexr openimageio openjpeg2 openmpi openpmix openresolv openshadinglanguage openssh openssh-runit openssl openssl-1.1 openvpn openvpn-runit optipng opus orc os-prober osinfo-db p0f p11-kit p7zip pacman pacman-contrib pacutils pahole pam pambase pamixer pandoc-bin pango pangomm papirus-icon-theme parallel parted pass patch pavucontrol pax paxtest pciutils pcmanfm pcre pcre2 pcsclite pdfgrep peek perl perl-algorithm-diff perl-class-method-modifiers perl-clone perl-data-optlist perl-devel-globaldestruction perl-encode-locale perl-error perl-file-listing perl-html-parser perl-html-tagset perl-http-cookiejar perl-http-cookies perl-http-daemon perl-http-date perl-http-message perl-http-negotiate perl-image-exiftool perl-import-into perl-io-html perl-io-tty perl-ipc-run perl-ipc-run3 perl-libwww perl-lwp-mediatypes perl-mailtools perl-module-runtime perl-moo perl-net-http perl-parallel-forkmanager perl-params-util perl-regexp-common perl-role-tiny perl-sub-exporter perl-sub-exporter-progressive perl-sub-install perl-sub-quote perl-time-duration perl-timedate perl-try-tiny perl-uri perl-www-robotrules perl-xml-parser perl-xml-writer pfetch pgcli-git phodav pick picom pinentry pipewire pipewire-audio pipewire-jack pipewire-pulse pipewire-v4l2 pixman pkcs11-helper pkgconf podofo polkit polkit-qt5 poppler poppler-data poppler-glib popt portaudio postgresql postgresql-libs postgresql-old-upgrade postgresql-runit postman-bin potrace powertop ppp prettier privoxy privoxy-runit procps-ng progress protobuf protonup-git proxychains-ng psmisc psutils pugixml pulseaudio-alsa pybind11 pystring python python-acme python-annotated-types python-anyio python-anytree python-appdirs python-apsw python-argcomplete python-async-timeout python-async_generator python-attrs python-autocommand python-backports.csv python-beaker python-beautifulsoup4 python-blinker python-brotli python-brotlicffi python-cachecontrol python-cairo python-certifi python-cffi python-chardet python-charset-normalizer python-cheetah3 python-cleo python-cli_helpers python-click python-colorama python-commonmark python-configargparse python-configobj python-contextlib2 python-contourpy python-coverage python-crashtest python-cryptography python-css-parser python-cssselect python-cycler python-dateutil python-decorator python-defusedxml python-distlib python-distro python-dnspython python-docopt python-docutils python-dotty-dict python-entrypoints python-et-xmlfile python-evdev python-exceptiongroup python-fake-useragent python-fastjsonschema python-faust-cchardet python-feedparser python-filelock python-flask python-fonttools python-future python-gobject python-grip python-h11 python-halo python-hid python-hjson python-html2text python-html5-parser python-html5lib python-httpcore python-httpx python-humanize python-idna python-ifaddr python-importlib-metadata python-inflate64 python-inflect python-injector python-isodate python-itsdangerous python-jaraco.classes python-jaraco.context python-jaraco.functools python-jaraco.text python-jarowinkler python-jeepney python-jinja python-josepy python-jsonpointer python-jsonschema python-jsonschema-specifications python-keyring python-kitchen python-kiwisolver python-listparser python-lockfile python-log_symbols python-lxml python-magic python-mako python-markdown python-markdown-it-py python-markupsafe python-matplotlib python-mdurl python-mechanize python-milc python-moddb python-more-itertools python-msgpack python-multidict python-multivolumefile python-mypy_extensions python-netifaces python-notify2 python-nspektr python-numpy python-openpyxl python-ordered-set python-outcome python-packaging python-pandas python-parse python-parsedatetime python-path-and-address python-pdftotext python-peewee python-pendulum python-pep517 python-pgspecial python-pillow python-pip python-pipx python-platformdirs python-ply python-prompt_toolkit python-protobuf python-psutil python-psycopg python-psycopg2 python-py3nvml python-py7zr python-pyaes python-pybcj python-pychm python-pycountry python-pycparser python-pycryptodome python-pycryptodomex python-pydantic python-pydantic-core python-pyee python-pygments python-pyinotify python-pylev python-pymongo python-pymysql python-pynacl python-pynput python-pyopenssl python-pyparsing python-pyperclip python-pyppeteer python-pyppmd python-pyqt5 python-pyqt5-sip python-pyqt6 python-pyqt6-sip python-pyqt6-webengine python-pyquery python-pyrate-limiter python-pyrfc3339 python-pyrsistent python-pyserial python-pysocks python-pyte python-pythondialog python-pytz python-pytzdata python-pyusb python-pyxdg python-pyzstd python-rapidfuzz python-reactivex python-readability-lxml python-referencing python-regex python-requests python-requests-futures python-requests-html python-requests-toolbelt python-resolvelib python-retrying python-rfc3986 python-rfc3987 python-rich python-rpds-py python-rx python-secretstorage python-setproctitle python-setuptools python-sgmllib3k python-shtab python-six python-sniffio python-sortedcontainers python-soupsieve python-spinners python-sqlglot python-sqlparse python-stem python-tabulate python-tenacity python-termcolor python-terminaltables python-texttable python-toml python-tomli python-tomlkit python-toolz python-torrequest python-tqdm python-trio python-trio-websocket python-trove-classifiers python-typing_extensions python-uc-micro-py python-unidecode python-unrardll python-urllib3 python-urwid python-userpath python-validate-pyproject python-w3lib python-wcwidth python-webcolors python-webencodings python-websocket-client python-websockets python-werkzeug python-wheel python-wsproto python-xlib python-xmltodict python-yaml python-zeroconf python-zipp python-zope-component python-zope-deferredimport python-zope-deprecation python-zope-event python-zope-hookable python-zope-interface python-zope-proxy python-zstandard qastools qca-qt5 qcustomplot qemu-audio-alsa qemu-audio-dbus qemu-audio-jack qemu-audio-oss qemu-audio-pa qemu-audio-pipewire qemu-audio-sdl qemu-audio-spice qemu-base qemu-block-curl qemu-block-dmg qemu-block-nfs qemu-block-ssh qemu-chardev-spice qemu-common qemu-desktop qemu-hw-display-qxl qemu-hw-display-virtio-gpu qemu-hw-display-virtio-gpu-gl qemu-hw-display-virtio-gpu-pci qemu-hw-display-virtio-gpu-pci-gl qemu-hw-display-virtio-vga qemu-hw-display-virtio-vga-gl qemu-hw-s390x-virtio-gpu-ccw qemu-hw-usb-host qemu-hw-usb-redirect qemu-hw-usb-smartcard qemu-img qemu-pr-helper qemu-system-x86 qemu-system-x86-firmware qemu-tools qemu-ui-curses qemu-ui-dbus qemu-ui-egl-headless qemu-ui-gtk qemu-ui-opengl qemu-ui-sdl qemu-ui-spice-app qemu-ui-spice-core qemu-vhost-user-gpu qhexedit2 qhull qmk qpdf qrencode qscintilla-qt5 qt5-base qt5-declarative qt5-imageformats qt5-multimedia qt5-quickcontrols qt5-quickcontrols2 qt5-speech qt5-styleplugins qt5-svg qt5-translations qt5-wayland qt5-x11extras qt6-base qt6-declarative qt6-imageformats qt6-positioning qt6-svg qt6-translations qt6-webchannel qt6-webengine quazip-qt5 quick-lint-js ragel ranger rapidjson rav1e raw-thumbnailer re2 readline rebuild-detector redshift reiserfsprogs rest rhash ripgrep rpcbind rpcbind-runit rsm rsspls rsv rsync rsync-runit rtkit rtorrent rubberband run-parts runc runit runit-rc rustdesk-bin rustup rzip s-nail sane sane-airscan sbc sc scour screen screenkey scroll-git scrot sdl12-compat sdl2 sdl2_image seabios sed semver serd sfsexp shaderc shadow shared-mime-info shellcheck sherlock-git shfmt sku-git slang slop snappy snarf socat sockstat solid5 sonnet5 sord sound-theme-freedesktop source-highlight spandsp spdlog speex speexdsp spice spice-gtk spice-protocol spirv-tools sqlcipher sqlite sqlitebrowser sratom srt startup-notification steam stfl strace streamlink stylua sudo suitesparse svgo svt-av1 sxhkd sxiv syndication-domination sysfsutils systeroid t1lib taglib talloc tar tcl tcpdump tcsh tdb terminus-font termshark texinfo texlive-bin thefuck thin-provisioning-tools thunderbird tidy tig timeshift tinycompress tinyxml tk tldr tmux tmux-resurrect tootle tor tor-runit tpm2-tss traceroute tracker3 tree tree-sitter tslib ttf-carlito ttf-dejavu ttf-droid ttf-hanazono ttf-inconsolata ttf-joypixels ttf-liberation ttf-roboto ttf-roboto-mono tumbler tut twolame tzdata uchardet udev udisks2 ufw ufw-runit ungoogled-chromium unibilium unrar unzip upower urlscan usbmuxd usbredir usbutils util-linux util-linux-libs v4l-utils vala valgrind vde2 veloren vi vid.stab virglrenderer virt-install virt-manager virt-viewer virtiofsd vmaf vnstat vnstat-runit volume_key vscodium vte-common vte3 vulkan-headers vulkan-icd-loader vulkan-radeon w3m wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi wavemon wavpack wayland wayland-protocols webkit2gtk webkit2gtk-4.1 webkitgtk-6.0 webrtc-audio-processing webrtc-audio-processing-1 wemux wget wgetpaste which whois wine-mono wine-staging wireless-regdb wireplumber wireshark-cli wmctrl wmutils-git woff2 wolfssl wordgrinder words wpa_supplicant wpa_supplicant-runit wpebackend-fdo wxwidgets-common wxwidgets-gtk3 x264 x265 xapian-core xapp xbanish xbitmaps xcb-proto xcb-util xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm xclip xcursor-premium xdg-dbus-proxy xdg-desktop-portal xdg-desktop-portal-gnome xdg-desktop-portal-gtk xdg-user-dirs xdg-utils xdo xdotool xf86-input-libinput xf86-input-vmmouse xf86-video-amdgpu xf86-video-ati xf86-video-dummy xf86-video-fbdev xf86-video-intel xf86-video-nouveau xf86-video-openchrome xf86-video-sisusb xf86-video-vesa xf86-video-vmware xf86-video-voodoo xfce4-artwork xfce4-panel xfce4-screenshooter xfconf xfsprogs xidel xkeyboard-config xmlstarlet xorg-bdftopcf xorg-font-util xorg-fonts-encodings xorg-mkfontscale xorg-server xorg-server-common xorg-server-xvfb xorg-setxkbmap xorg-xauth xorg-xdpyinfo xorg-xev xorg-xhost xorg-xinit xorg-xkbcomp xorg-xmodmap xorg-xprop xorg-xrandr xorg-xrdb xorg-xset xorg-xsetroot xorg-xwininfo xorgproto xournalpp xsel xterm xvidcore xxhash xz yajl yaml-cpp yank yapf yarn yasm yelp-tools yelp-xsl yq yt-dlp ytfzf zellij zenity zeromq zimg zip zlib zsh zstd zulu-11-bin zziplib \ No newline at end of file diff --git a/my_paru_packages.txt b/my_paru_packages.txt index b268891f..c75a15dd 100644 --- a/my_paru_packages.txt +++ b/my_paru_packages.txt @@ -1 +1 @@ -athena-jot brother-mfc-j615w cheat clang+llvm-binaries cpu-x deb2targz devour dirb dnslookup-bin dtach espeak fim gobuster gtktranslate-bin gwe intel-oneapi-compiler-shared-opencl-cpu ipw2100-fw ipw2200-fw iscan-for-epson-v500-photo iscan-plugin-gt-f720 java-openjdk-bin js78 kepubify-bin keynav libart-lgpl libsidplay libvterm01 libwm-git litecli mawk metis moar mycli ncpamixer neo-matrix-git nvim-packer-git obfs4proxy onlyoffice-bin pfetch pgcli-git pick postman-bin protonup-git python-grip python-injector python-jarowinkler python-kitchen python-path-and-address python-pep517 python-pynput python-sqlglot python-terminaltables python-torrequest quick-lint-js rsspls rsv rustdesk-bin rzip scroll-git sherlock-git sku-git snarf sockstat speed-test speedtest-cli-git svgo tmux-resurrect tootle tut wemux wmutils-git wordgrinder xbanish xidel zulu-11-bin \ No newline at end of file +airshipper athena-jot brother-mfc-j615w cheat clang+llvm-binaries cpu-x deb2targz devour dirb dnslookup-bin dtach espeak fim gklib gobuster gtktranslate-bin gwe intel-oneapi-compiler-shared-opencl-cpu ipw2100-fw ipw2200-fw iscan-for-epson-v500-photo iscan-plugin-gt-f720 java-openjdk-bin js78 kepubify-bin keynav libart-lgpl librewolf-bin libsidplay libvterm01 libwm-git liftoff-bin litecli mawk metis moar mycli ncpamixer neo-matrix-git nvim-packer-git nvtop-nosystemd-git obfs4proxy onlyoffice-bin pfetch pgcli-git pick postman-bin protonup-git python-anytree python-fake-useragent python-grip python-injector python-jarowinkler python-kitchen python-path-and-address python-pep517 python-pynput python-requests-html python-sqlglot python-terminaltables python-torrequest quick-lint-js rsspls rsv rustdesk-bin rzip scroll-git sherlock-git sku-git snarf sockstat svgo tmux-resurrect tootle tut veloren wemux wmutils-git wordgrinder xbanish xidel zulu-11-bin \ No newline at end of file diff --git a/my_pip_packages.txt b/my_pip_packages.txt index f321da3b..99fdaabc 100644 --- a/my_pip_packages.txt +++ b/my_pip_packages.txt @@ -1 +1 @@ -Package ------------------- acme anyio anytree apparmor appdirs apsw arandr argcomplete asciinema async-generator async-timeout attrs autocommand backports.csv Beaker beautifulsoup4 Brotli brotlicffi bs4 btrfsutil CacheControl certbot certifi cffi chardet charset-normalizer cleo cli-helpers click colorama commonmark ConfigArgParse configobj contextlib2 contourpy crashtest cryptography css-parser cssselect CT3 cycler Cython dbus-python decorator defusedxml distlib distro dnspython docopt docutils dotty-dict entrypoints et-xmlfile evdev exceptiongroup fail2ban fastjsonschema faust-cchardet feedparser filelock Flask fonttools future gunicorn h11 halo hid hjson html2text html5-parser html5lib httpcore httpie httpx humanize idna ifaddr importlib-metadata inflate64 inflect isodate itsdangerous jaraco.classes jaraco.context jaraco.functools jaraco.text jarowinkler jeepney Jinja2 josepy jsonpointer jsonschema keyring kitchen kiwisolver lensfun LibAppArmor libfdt libvirt-python listparser lit litecli log-symbols lxml Mako mallard-ducktype Markdown markdown-it-py MarkupSafe matplotlib mcomix mdurl mechanize meson milc moddb more-itertools msgpack multidict multivolumefile mycli mypy mypy-extensions netifaces netsnmp-python nftables notify2 nspektr numpy openpyxl ordered-set outcome packaging pandas parsedatetime pdftotext peewee pendulum pgcli pgspecial Pillow pip platformdirs ply prompt-toolkit protobuf protonup psutil psycopg psycopg2 py3nvml py7zr pyaes pybcj pybind11 pycairo pychm pycountry pycparser pycryptodome pycryptodomex pydantic Pygments PyGObject pyinotify pylev pymongo PyMySQL PyNaCl pyOpenSSL pyparsing pyperclip pyppmd PyQt5 PyQt5-sip PyQt6 PyQt6-sip PyQt6-WebEngine pyrate-limiter pyRFC3339 pyrsistent PySocks pyte python-dateutil python-xlib pythondialog pytz pytzdata pyusb PyVirtualDisplay pyxdg PyYAML pyzstd qmk ranger-fm rapidfuzz readability-lxml regex requests requests-futures requests-toolbelt resolvelib retrying rfc3986 rfc3987 rich Rx screenkey SecretStorage selenium setproctitle setuptools sgmllib3k shtab six sniffio sortedcontainers soupsieve spinners sqlglot sqlparse stem streamlink tabulate tenacity termcolor texttable thefuck tldr toml tomli tomlkit toolz tqdm trio trio-websocket trove-classifiers typing_extensions uc-micro-py ufw unrardll urllib3 urlscan urwid validate validate-pyproject wcwidth webcolors webencodings websocket-client Werkzeug wheel wsproto xmltodict yapf yq yt-dlp zeroconf zipp zope.component zope.deferredimport zope.deprecation zope.event zope.hookable zope.interface zope.proxy \ No newline at end of file +Package ------------------------- acme annotated-types anyio anytree apparmor appdirs apsw arandr argcomplete asciinema async-generator async-timeout attrs autocommand backports.csv Beaker beautifulsoup4 blinker Brotli brotlicffi bs4 btrfsutil CacheControl certbot certifi cffi chardet charset-normalizer cleo cli-helpers click colorama commonmark ConfigArgParse configobj contextlib2 contourpy coverage crashtest cryptography css-parser cssselect CT3 cycler Cython dbus-python decorator defusedxml distlib distro dnspython docopt docutils dotty-dict entrypoints et-xmlfile evdev exceptiongroup fail2ban fake-useragent fastjsonschema faust-cchardet feedparser filelock Flask fonttools future gunicorn h11 halo hid hjson html2text html5-parser html5lib httpcore httpie httpx humanize idna ifaddr importlib-metadata inflate64 inflect injector isodate itsdangerous jaraco.classes jaraco.context jaraco.functools jaraco.text jarowinkler jeepney Jinja2 josepy jsonpointer jsonschema jsonschema-specifications keyring kitchen kiwisolver lensfun LibAppArmor libfdt libvirt-python listparser lit litecli lockfile log-symbols lxml Mako mallard-ducktype Markdown markdown-it-py MarkupSafe matplotlib mcomix mdurl mechanize meson milc moddb more-itertools msgpack multidict multivolumefile mycli mypy mypy-extensions netifaces netsnmp-python nftables notify2 nspektr numpy openpyxl ordered-set outcome packaging pandas parse parsedatetime pdftotext peewee pendulum pep517 pgcli pgspecial Pillow pip pipx platformdirs ply prompt-toolkit protobuf protonup psutil psycopg psycopg2 py3nvml py7zr pyaes pybcj pybind11 pycairo pychm pycountry pycparser pycryptodome pycryptodomex pydantic pydantic_core pyee Pygments PyGObject pyinotify pylev pymongo PyMySQL PyNaCl pyOpenSSL pyparsing pyperclip pyppeteer pyppmd PyQt5 PyQt5-sip PyQt6 PyQt6-sip PyQt6-WebEngine pyquery pyrate-limiter pyRFC3339 pyrsistent pyserial PySocks pyte python-dateutil python-magic python-xlib pythondialog pytz pytzdata pyusb PyVirtualDisplay pyxdg PyYAML pyzstd qmk ranger-fm rapidfuzz reactivex readability-lxml referencing regex requests requests-futures requests-html requests-toolbelt resolvelib retrying rfc3986 rfc3987 rich rpds-py Rx scour screenkey SecretStorage selenium setproctitle setuptools sgmllib3k shtab six sniffio sortedcontainers soupsieve spinners sqlglot sqlparse stem streamlink tabulate tenacity termcolor terminaltables texttable thefuck tldr toml tomli tomlkit toolz tqdm trio trio-websocket trove-classifiers typing_extensions uc-micro-py ufw Unidecode unrardll urllib3 urlscan urwid userpath validate validate-pyproject w3lib wcwidth webcolors webencodings websocket-client websockets Werkzeug wheel wsproto xmltodict yapf yq yt-dlp zeroconf zipp zope.component zope.deferredimport zope.deprecation zope.event zope.hookable zope.interface zope.proxy zstandard \ No newline at end of file diff --git a/noscript_data.txt b/noscript_data.txt index 82fcb753..db15ea6e 100644 --- a/noscript_data.txt +++ b/noscript_data.txt @@ -474,7 +474,28 @@ "§:nestjs.com", "§:requests.readthedocs.io", "§:readthedocs.org", - "§:million.dev" + "§:million.dev", + "§:privacy.com", + "§:quickref.me", + "§:mebeim.net", + "§:loafylilu.github.io", + "§:joncruz.netlify.app", + "§:crunchbase.com", + "§:guidestar.org", + "§:roadmap.sh", + "§:empathetech.org", + "§:datacrunch.io", + "§:crisp.chat", + "§:javascript.info", + "§:exercism.org", + "§:endoflife.date", + "§:jobscan.co", + "§:portlandtech.org", + "§:tonsky.me", + "§:caniemail.com", + "§:catchafire.org", + "§:licdn.com", + "§:caddyserver.com" ], "untrusted": [ "hotmail.com",