01:27 <+bridge> [ddnet] if you allocate it with `new`, free it with `delete`, if you allocate it with `malloc` free it with `free` 01:27 <+bridge> [ddnet] If you use a `unique_ptr` there it'd free itself when it goes out of scope 01:28 <+bridge> [ddnet] and no, you don't really need a pointer there, you could have a `CDemoEditor m_Editor;` as a member in the `CJob` then initialize the editor in the constructor of the job 09:27 <+bridge> [ddnet] 😋 09:27 <+bridge> [ddnet] @Learath2 ye, i remembered delete calls the class destructor 09:27 <+bridge> [ddnet] while free doesnt 10:41 <+bridge> [ddnet] @Learath2 oh yeah right i forgot that i can initialise it in the constructor xd 11:41 <+bridge> [ddnet] Actually i can't unless i pass every parameter for the `Init` function of the `CDemoEditor` to the constructor of my `CJob` 11:42 <+bridge> [ddnet] `DemoEditor->Init(m_pGameClient->NetVersion(), &m_SnapshotDelta, m_pConsole, m_pStorage);` 11:42 <+bridge> [ddnet] i need all that 4 parameters 12:03 <+bridge> [ddnet] Why not? 12:03 <+bridge> [ddnet] why not passing 4 more parameters to the constructor? xd 12:06 <+bridge> [ddnet] well you will be passing them somewhere one way or another 😛 12:06 <+bridge> [ddnet] but what's wrong using a pointer? 13:37 <+bridge> [ddnet] 13:37 13:40 <+bridge> [ddnet] :c 14:52 <+bridge> [ddnet] @Learath2 please don't add more thread-unsafe code 😦 15:00 <+bridge> [ddnet] oops 15:03 <+bridge> [ddnet] @Learath2 should i change the pointer then? 15:10 <+bridge> [ddnet] @archimede67 avoid using pointers wherever u can, it avoids mem leaks and its generally better 15:11 <+bridge> [ddnet] @archimede67 note: u can still pass by reference using &myvar to a function 15:17 <+bridge> [ddnet] yeah 15:18 <+bridge> [ddnet] i'll try something 15:37 <+bridge> [ddnet] bu 15:37 <+bridge> [ddnet] t 16:40 <+bridge> [ddnet] @deen what powers your blog at hookrace.net? 16:47 <+bridge> [ddnet] jekyll most likely 16:48 <+bridge> [ddnet] i use my own scripts :poggers: 16:48 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/582218516661272576/unknown.png 16:54 <+bridge> [ddnet] u use python 16:54 <+bridge> [ddnet] ofc 16:54 <+bridge> [ddnet] ew 16:54 <+bridge> [ddnet] python is perfect for this 16:54 <+bridge> [ddnet] nah 16:54 <+bridge> [ddnet] what? 16:54 <+bridge> [ddnet] normal html is perfect for html 16:54 <+bridge> [ddnet] idk if u dumb but 16:54 <+bridge> [ddnet] xd 16:54 <+bridge> [ddnet] python scripts generate html 16:54 <+bridge> [ddnet] from my markdown files 16:54 <+bridge> [ddnet] ik 16:55 <+bridge> [ddnet] xd 16:55 <+bridge> [ddnet] 😄 16:58 <+bridge> [ddnet] plottwist deen usses wix pro 16:59 <+bridge> [ddnet] :lol: 16:59 <+bridge> [ddnet] most ppl use wordpress 16:59 <+bridge> [ddnet] xd i dont like it 16:59 <+bridge> [ddnet] wix pro xd 16:59 <+bridge> [ddnet] and its even cringier if the one who uses it is a programmer 16:59 <+bridge> [ddnet] who claims to be a web dev 16:59 <+bridge> [ddnet] i use jade 17:00 <+bridge> [ddnet] pug* 17:00 <+bridge> [ddnet] pug is a html renderer lmao 17:00 <+bridge> [ddnet] completly diferent topic 17:00 <+bridge> [ddnet] ye 17:00 <+bridge> [ddnet] xd 17:00 <+bridge> [ddnet] in fact i use js 17:00 <+bridge> [ddnet] react ❤ 17:00 <+bridge> [ddnet] ye 17:00 <+bridge> [ddnet] reactjs skillz here 17:00 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/582221572505468979/unknown.png 17:00 <+bridge> [ddnet] where skill 17:00 <+bridge> [ddnet] lol most basic class xd 17:01 <+bridge> [ddnet] xd 17:01 <+bridge> [ddnet] the apisearch class is the big one 17:01 <+bridge> [ddnet] i hope its made by u 17:01 <+bridge> [ddnet] ye 17:01 <+bridge> [ddnet] noice 17:01 <+bridge> [ddnet] im making a web using reactjs and semantic ui react for frontend and expressjs + typescript + mysql2 as backend 17:01 <+bridge> [ddnet] with ajv for validation 17:01 <+bridge> [ddnet] hmm and thats all 17:02 <+bridge> [ddnet] ajv? 17:02 <+bridge> [ddnet] a rly good package i found recently 17:02 <+bridge> [ddnet] oh sounds nice 17:02 <+bridge> [ddnet] https://www.npmjs.com/package/ajv 17:02 <+bridge> [ddnet] 21 M downloads xd 17:02 <+bridge> [ddnet] oh man 17:02 <+bridge> [ddnet] weekly xd 17:03 <+bridge> [ddnet] oh and jwt for auth 17:03 <+bridge> [ddnet] ah ye 17:03 <+bridge> [ddnet] 17:05 <+bridge> [ddnet] ye ik 😄 17:10 <+bridge> [ddnet] oh man 17:10 <+bridge> [ddnet] `CDemoEdit(CClient *pClient, const char *pNetVersion, CSnapshotDelta SnapshotDelta, IConsole *pConsole, IStorage *pStorage, const char *pDemo, const char *pDst, int StartTick, int EndTick);` 17:10 <+bridge> [ddnet] xd 17:11 <+bridge> [ddnet] idk if its better 17:12 <+bridge> [ddnet] what u doing lmao 17:12 <+bridge> [ddnet] dud 17:12 <+bridge> [ddnet] i think if u pass 17:12 <+bridge> [ddnet] gameclient 17:12 <+bridge> [ddnet] u can get all those others 17:12 <+bridge> [ddnet] iconsole istorage 17:12 <+bridge> [ddnet] etc 17:12 <+bridge> [ddnet] no need for all 17:12 <+bridge> [ddnet] wait 17:13 <+bridge> [ddnet] not gameclient 17:14 <+bridge> [ddnet] but i only get Storage() from CClient, not console and not NetVersion 17:14 <+bridge> [ddnet] unless I add some function `Console()` in `CClient` 17:15 <+bridge> [ddnet] why not gameclient 17:15 <+bridge> [ddnet] theres not those functions in 17:16 <+bridge> [ddnet] but i can get gameclient from client 17:16 <+bridge> [ddnet] no 17:16 <+bridge> [ddnet] yes 17:16 <+bridge> [ddnet] rly? 17:16 <+bridge> [ddnet] xd 17:16 <+bridge> [ddnet] yes 17:16 <+bridge> [ddnet] it should be the other way around 17:16 <+bridge> [ddnet] 17:16 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/582225605475565580/unknown.png 17:16 <+bridge> [ddnet] ye 17:16 <+bridge> [ddnet] a mess 17:17 <+bridge> [ddnet] xd 17:17 <+bridge> [ddnet] wat u trying to do? 17:17 <+bridge> [ddnet] wait i'll show u 17:18 <+bridge> [ddnet] ```cpp 17:18 <+bridge> [ddnet] CDemoEdit::CDemoEdit(CClient *pClient, CSnapshotDelta *pSnapshotDelta, IConsole *pConsole, const char *pDemo, const char *pDst, int StartTick, int EndTick) : 17:18 <+bridge> [ddnet] m_pClient(pClient), 17:18 <+bridge> [ddnet] m_pConsole(pConsole) 17:18 <+bridge> [ddnet] { 17:18 <+bridge> [ddnet] str_copy(m_pDemo, pDemo, sizeof(m_pDemo)); 17:18 <+bridge> [ddnet] str_copy(m_pDst, pDst, sizeof(m_pDst)); 17:18 <+bridge> [ddnet] 17:18 <+bridge> [ddnet] m_StartTick = StartTick; 17:18 <+bridge> [ddnet] m_EndTick = EndTick; 17:18 <+bridge> [ddnet] 17:18 <+bridge> [ddnet] // Init the demoeditor 17:18 <+bridge> [ddnet] m_pDemoEditor.Init(pClient->GameClient()->NetVersion(), pSnapshotDelta, pConsole, pClient->Storage()); 17:19 <+bridge> [ddnet] } 17:19 <+bridge> [ddnet] ``` 17:19 <+bridge> [ddnet] I wanna init the demoeditor in my thread 17:19 <+bridge> [ddnet] called `CDemoEdit` (an `IJob`) 17:20 <+bridge> [ddnet] hmm 17:20 <+bridge> [ddnet] u know what a race condition is? 17:20 <+bridge> [ddnet] tell me 17:20 <+bridge> [ddnet] https://stackoverflow.com/questions/34510/what-is-a-race-condition 17:21 <+bridge> [ddnet] you have to be careful of those in a multithreaded enviroment 17:21 <+bridge> [ddnet] yeah 17:22 <+bridge> [ddnet] that's why @Learath2 suggested me to create a spearate demoeditor in case where the normal demoeditor was being used by the client itself 17:22 <+bridge> [ddnet] ye but u are still using the client methods and classes 17:22 <+bridge> [ddnet] if u only read it might be okay 17:22 <+bridge> [ddnet] i write also 17:23 <+bridge> [ddnet] using storage? 17:23 <+bridge> [ddnet] ye 17:23 <+bridge> [ddnet] be careful there then 17:23 <+bridge> [ddnet] idk how i would actually do it xd 17:23 <+bridge> [ddnet] u might need a 17:23 <+bridge> [ddnet] lock 17:24 <+bridge> [ddnet] hmm 17:26 <+bridge> [ddnet] a lock on the storage? 17:35 <+bridge> [ddnet] from a quick look, it seems that storage is threadsafe after initialisation 17:35 <+bridge> [ddnet] oh nice 17:36 <+bridge> [ddnet] @heinrich5991 https://github.com/HookRace/hookrace-web/blob/master/www/_config.yml 17:36 <+bridge> [ddnet] nginx + jekyll 17:38 <+bridge> [ddnet] cool, ty 🙂 17:38 <+bridge> [ddnet] any plans on doing hookrace btw? 🙃 17:38 <+bridge> [ddnet] I'm not a big ruby fan, but jekyll has lots of users and the result is static anyway 17:38 <+bridge> [ddnet] I like the looks of it btw. 🙂 17:38 <+bridge> [ddnet] @Ryozuki nope 17:38 <+bridge> [ddnet] @heinrich5991 yeah, feel free to fork it like @timakro did 😄 17:39 <+bridge> [ddnet] inb4 new heinrich blog 17:39 <+bridge> [ddnet] no, not heinrich5991's blog, I'm sorrz 17:40 <+bridge> [ddnet] 😮 17:40 <+bridge> [ddnet] im sure u have a lot to talk of 17:40 <+bridge> [ddnet] never wrote a blog, wouldn't even know where to start ­— perhaps I could ask Dune 17:40 <+bridge> [ddnet] yeah i feel the same 17:41 <+bridge> [ddnet] xD 17:42 <+bridge> [ddnet] @heinrich5991 now that u are here 17:42 <+bridge> [ddnet] yes? 17:42 <+bridge> [ddnet] https://github.com/ddnet/ddnet/pull/1754 17:42 <+bridge> [ddnet] what u think of this 17:43 <+bridge> [ddnet] good effort 🙂 17:44 <+bridge> [ddnet] 😮 17:44 <+bridge> [ddnet] (I'm no expert for .desktop files, but:) 17:44 <+bridge> [ddnet] there's two Comment= fields in there 17:45 <+bridge> [ddnet] oh 17:45 <+bridge> [ddnet] im blind 17:45 <+bridge> [ddnet] StartupNotify=false, is there a reason behind this? 17:45 <+bridge> [ddnet] I guess that's specifying that ther shouldn't be a cursor notification that ddnet is starting? 17:46 <+bridge> [ddnet] "If true, it is KNOWN that the application will send a "remove" message when started with the DESKTOP_STARTUP_ID environment variable set. If false, it is KNOWN that the application does not work with startup notification at all (does not shown any window, breaks even when using StartupWMClass, etc.). If absent, a reasonable handling is up to implementations (assuming false, usin 17:46 <+bridge> [ddnet] hmm 17:46 <+bridge> [ddnet] sounds like it should be absent 17:46 <+bridge> [ddnet] ok ill remove it 17:46 <+bridge> [ddnet] hey, i didn't fork your blog @deen. I forked https://github.com/poole/poole 17:48 <+bridge> [ddnet] I don't have the icns2png tool installed. how large are the resulting pngs? (like how many bytes?) can we just ship them in the repo? 17:48 <+bridge> [ddnet] (I discovered it through your blog of course) ^^ 17:49 <+bridge> [ddnet] 97040 bytes 17:49 <+bridge> [ddnet] the 512 17:49 <+bridge> [ddnet] stat returns bytes right? 17:49 <+bridge> [ddnet] xD 17:50 <+bridge> [ddnet] ye actually icns is a mac format 17:50 <+bridge> [ddnet] just include them I guess(?) 17:50 <+bridge> [ddnet] ok 17:50 <+bridge> [ddnet] the DESTINATION of your install command looks different from the ones around it 17:50 <+bridge> [ddnet] it should probably be `share/applications` 17:51 <+bridge> [ddnet] sure that works? 17:51 <+bridge> [ddnet] i read on some forums so i wasnt sure 17:51 <+bridge> [ddnet] did you read that you should specifically include /usr or was it just done like that? 17:51 <+bridge> [ddnet] same for the icons, `share/icons/hicolor/${SIZE}x${SIZE}/apps` 17:52 <+bridge> [ddnet] (it will install into /usr or /usr/local, depending on what the distro wants. that's why it would be weird if it was required to put /usr there explicitly) 17:52 <+bridge> [ddnet] ok 17:56 <+bridge> [ddnet] 17:56 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/582235737676709919/unknown.png 17:57 <+bridge> [ddnet] ur right 17:57 <+bridge> [ddnet] :twinbop: 17:57 <+bridge> [ddnet] ddnet.desktop install is not updated yet 17:57 <+bridge> [ddnet] oh 17:57 <+bridge> [ddnet] true 17:57 <+bridge> [ddnet] -- Installing: /usr/local/share/applications/ddnet.desktop 17:58 <+bridge> [ddnet] you could add teeworlds to the keywords and I'm not sure whether teeworlds is an ArcadeGame, maybe a Shooter, rather? 17:58 <+bridge> [ddnet] I think that's it 🙂 17:58 <+bridge> [ddnet] hmm 17:59 <+bridge> [ddnet] oh, you can write loops without making a list: `foreach(SIZE 16 32 48 128 256 512)` 17:59 <+bridge> [ddnet] i gess its from here 17:59 <+bridge> [ddnet] https://blends.debian.org/games/tasks/ 17:59 <+bridge> [ddnet] there is Fps 17:59 <+bridge> [ddnet] but its not a fps 17:59 <+bridge> [ddnet] yup 18:00 <+bridge> [ddnet] it's fine I guess. I'm not even sure what an arcarde game is 18:00 <+bridge> [ddnet] oh wait, DDNet isn't a shooter 😄 18:00 <+bridge> [ddnet] I forgot for a moment 18:01 <+bridge> [ddnet] i would say platformer 18:01 <+bridge> [ddnet] yep 18:01 <+bridge> [ddnet] platform Debian's platform games 18:01 <+bridge> [ddnet] i use that? 18:01 <+bridge> [ddnet] yea, doesn't exist in the category list though 18:01 <+bridge> [ddnet] https://specifications.freedesktop.org/menu-spec/menu-spec-1.0.html 18:02 <+bridge> [ddnet] @heinrich5991 Can you take a look at the IsDDNet pr? 18:02 <+bridge> [ddnet] i pushed 18:03 <+bridge> [ddnet] that looks more complicated, no, not right now 18:04 <+bridge> [ddnet] feel free to merge 🙂 18:04 <+bridge> [ddnet] oh, one more :/ 18:05 <+bridge> [ddnet] this should be done without the `if(TARGET_OS STREQUAL "linux")`, this is also relevant for the BSDs etc. 18:06 <+bridge> [ddnet] @Ryozuki what does your pr do? 18:06 <+bridge> [ddnet] adds a desktop icon for ddnet on linux 18:07 <+bridge> [ddnet] without? 18:07 <+bridge> [ddnet] What for 18:07 <+bridge> [ddnet] what happens if this runs on windows 18:07 <+bridge> [ddnet] its ignored? 18:07 <+bridge> [ddnet] we don't support make install on windows, the lines above that also don't work on windows 18:07 <+bridge> [ddnet] oh 18:08 <+bridge> [ddnet] @Ryozuki do you know how to squash commits (put all these temporary commits into one)? if so, that might also be nice 18:08 <+bridge> [ddnet] pushed 18:08 <+bridge> [ddnet] ye 18:08 <+bridge> [ddnet] ill do it 18:08 <+bridge> [ddnet] lovely, thanks 🙂 18:10 <+bridge> [ddnet] hmm done 18:10 <+bridge> [ddnet] idk why that 2 things appear but 18:10 <+bridge> [ddnet] xD 18:10 <+bridge> [ddnet] it should be fine 18:11 <+bridge> [ddnet] huh. did you rebase too deep? ^^ 18:11 <+bridge> [ddnet] ye 18:11 <+bridge> [ddnet] these commits have you as coauthor 18:11 <+bridge> [ddnet] how to fix it xD 18:11 <+bridge> [ddnet] try `git fetch upstream; git rebase upstream/master` 18:12 <+bridge> [ddnet] ok now 18:12 <+bridge> [ddnet] Ah right, there's a tournament tonight. Can't be there unfortunately, looking forward to play lets climb 3 though, I'm a huge fan of those maps. 18:13 <+bridge> [ddnet] @timakro :( 18:15 <+bridge> [ddnet] @heinrich5991 why does DDEV=ON sets the build type to debug? 18:15 <+bridge> [ddnet] because that sounded like a reasonable default for developing to me 18:16 <+bridge> [ddnet] "Whether to generate stuff necessary for packaging." 18:16 <+bridge> [ddnet] what packaging has to do with dev? 18:18 <+bridge> [ddnet] `-DDEV=ON` was added because of some weird restrictions that the cmake install process has 18:19 <+bridge> [ddnet] it has do build all the binaries that are packaged by default (this means it has to build all the tools every time you call the default make/ninja command line) 18:19 <+bridge> [ddnet] in order to be able to only build the client and server on a normal make/ninja invocation, I added `-DDEV=ON` 18:20 <+bridge> [ddnet] and since it's for developing, I changed the default compilation mode as well 18:20 <+bridge> [ddnet] (found this out by git-blaming that line and remembering the reasoning from the commit) 18:32 <+bridge> [ddnet] i see 19:01 <+bridge> [ddnet] @timakro Ah, I made some improvements on poole though, probably mostly css stuff I didn't like 20:35 <+bridge> [ddnet] i wonder if the ddnet client being limited to 120 fps on background is made by the os or by the client itself 20:35 <+bridge> [ddnet] client 20:35 <+bridge> [ddnet] if its possible to not limit it it would allow me to make some cool setups 20:35 <+bridge> [ddnet] cl_refresh_rate_inactive 20:35 <+bridge> [ddnet] for streaming 20:35 <+bridge> [ddnet] ohh 20:35 <+bridge> [ddnet] i do it only to save the world from energy waste 😄 20:36 <+bridge> [ddnet] :happy: 20:41 <+bridge> [ddnet] I hope all of you old people in the eu voted today 🙂 20:41 <+bridge> [ddnet] even the ones who are not eu citizens? 😄 20:42 <+bridge> [ddnet] *old eu citizens 20:45 <+bridge> [ddnet] i voted 20:45 <+bridge> [ddnet] and i would say im young 20:45 <+bridge> [ddnet] :pepeH: 20:45 <+bridge> [ddnet] if you're old enough to vote, you're old 😛 20:45 <+bridge> [ddnet] :twintri: 20:53 <+bridge> [ddnet] 😮 20:53 <+bridge> [ddnet] i can't 21:00 <+bridge> [ddnet] true 22:39 <+bridge> [ddnet] @deen `xdg-settings set default-url-scheme-handler ddnet DDNet.desktop` you need to do this for linux to understand ddnet links? i wonder if its possible to do it on make install too 22:39 <+bridge> [ddnet] that's how I did it, not sure what the proper way is 22:40 <+bridge> [ddnet] hm interesting. it doesn't just take the only program if one is available? 22:40 <+bridge> [ddnet] "There is a file, ~/.local/share/applications/mimeapps.list that contains a list of MIME handlers" 22:40 <+bridge> [ddnet] http://edoceo.com/howto/xfce-custom-uri-handler 22:40 <+bridge> [ddnet] hmm 22:41 <+bridge> [ddnet] perhaps you need to refresh some caches 22:41 <+bridge> [ddnet] MimeType=x-scheme-handler/ddnet 22:41 <+bridge> [ddnet] on the .desktop file? 22:41 <+bridge> [ddnet] oh 22:41 <+bridge> [ddnet] i think its already 22:42 <+bridge> [ddnet] idk 22:43 <+bridge> [ddnet] maybe cmake can simply run the command 22:51 <+bridge> [ddnet] @Ryozuki maybe you just need to run this tool after placing the desktop file? https://jlk.fjfi.cvut.cz/arch/manpages/man/update-desktop-database.1 22:58 <+bridge> [ddnet] Hm, the web preview gives fun errors with huge maps :/ 22:58 <+bridge> [ddnet] In Firefox it allocates ~ 15 GB of RAM and then just hangs 22:58 <+bridge> [ddnet] In Chrome there's an error message at least 23:03 <+bridge> [ddnet] wow 23:03 <+bridge> [ddnet] 15G of ram 23:04 <+bridge> [ddnet] In DDNet client we only need 500 MB for the same map 23:04 <+bridge> [ddnet] @deen what parts of the jekyll configuration did you change? do you remember that? 23:04 <+bridge> [ddnet] @heinrich5991 not really, sorry 23:04 <+bridge> [ddnet] k 23:05 <+bridge> [ddnet] just whatever annoyed me, probably code highlighting 23:05 <+bridge> [ddnet] adding a dark theme 23:06 <+bridge> [ddnet] @archimede67 oh wait, that was 15% of my RAM, so actually 4.5 GB 23:12 <+bridge> [ddnet] wait 23:12 <+bridge> [ddnet] 15% of your RAM is 4.5 GB? 23:13 <+bridge> [ddnet] 32GB RAM, not too unreasonable 😛 23:13 <+bridge> [ddnet] u have 32 GB xd 23:13 <+bridge> [ddnet] I bought RAM when it was cheap the last time 😄 23:15 <+bridge> [ddnet] but I wouldn't recommend that much, never use it anyway 23:17 <+bridge> [ddnet] I got 8gb ddr4 2997mhz and all runs fine 23:17 <+bridge> [ddnet] yeah, my normal memory usage is 2-3 GB 23:18 <+bridge> [ddnet] not using a web browser? ^^ 23:19 <+bridge> [ddnet] xd 23:20 <+bridge> [ddnet] i have 8 on my desktop computer 23:20 <+bridge> [ddnet] but its pretty old 23:20 <+bridge> [ddnet] Firefox instead of Chrome, it uses very little RAM 23:20 <+bridge> [ddnet] i don't like firefox xd 23:21 <+bridge> [ddnet] I use firefox, but maybe I'm using too many tabs 23:21 <+bridge> [ddnet] (I can recommend the extension Tree Style Tab if you want to have many tabs open) 23:22 <+bridge> [ddnet] ok, at 100 random tabs my total system usage is nearly 5 GB, but I rarely need that many tabs 23:22 <+bridge> [ddnet] how many tabs heinrich 23:22 <+bridge> [ddnet] one the weaker computer 258 23:23 <+bridge> [ddnet] *on the weaker 23:24 <+bridge> [ddnet] actually firefox 67 detects when you're running out of memory and will suspend tabs 23:24 <+bridge> [ddnet] on windows 23:24 <+bridge> [ddnet] oh, didn't read that far 😄 23:24 <+bridge> [ddnet] ^^ 23:25 <+bridge> [ddnet] Oh well, I'm already used to Firefox not caring about Linux at all 23:25 <+bridge> [ddnet] do u never close tabs or what 23:25 <+bridge> [ddnet] I use them as "read later" list 23:26 <+bridge> [ddnet] but tree style tabs makes it easy to have that many: each link you open will become a child tab. you can then hide whole trees of tabs behind a single tab 23:26 <+bridge> [ddnet] I see 23:29 <+bridge> [ddnet] Firefox best 23:51 <+bridge> [ddnet] no 23:51 <+bridge> [ddnet] internet explorer best