IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#saltr
/2024/06/22
dr|z3d an overwhelming set of choices. i was thinking a base svg that we augment via xhr.
dr|z3d the svg itself could be generated in similar fashion to the susidns graphic if elements need to translated, or if we want a static base and want to display an initial svg without requiring js to render.
zzz ok, would the xhr return a full overlay sub-image created with SVGGraphics2D, or would we output low-level svg elements ourselves <g><path>.... and skip SVGGraphics2D??
dr|z3d if we can get away with not having to use SVGGraphics2D, might be better, depends what overlays we want to display.. for tooltips and a legend, we can probably get away with adding those to the svg and just updating the text via xhr.
dr|z3d for the connection lines, render them via js/xhr?
dr|z3d depending on how we present the router density, we might be able to get away with generating the css on the fly, or adding the relevant class to the country path dynamically, probably better.
zzz its just circles, rectangles, lines and text now, thats pretty straightforward to generate svg elements for those, although I swore we wouldn't want to do that
dr|z3d yeah, I don't think we want to pre-render every possible tunnel line and circle, or tooltip for that matter. the inline js for tooltips is a good starting point for how me might generate that content.
dr|z3d nothing to stop us from rendering 2 separate svgs and overlaying them, either. 1 for the map, the other for the dynamic content.
dr|z3d overlaying, or just injecting the info layer into a static svg.
dr|z3d I don't know if it's worth the effort pre-rending invisible "centroid" points for each country that can be referenced when generating the lines and circles. a bit of work, but maybe worth the effort.
dr|z3d that way you can just target #country.centroid or #country.centroid -> #country2.centroid when you want to generate a circle or line.
dr|z3d * #country .centroid sorry.
zzz if the overlay is going to interact with the base, then they probably have to be in one svg? or at least a sub-svg?
zzz not just overlaid with css positioning
dr|z3d yeah, we probably want to add a group to the existing svg with the overlay data, so at least at any given point if you save the svg you've got whatever's current in a single file, no?
zzz I think so? also depends if overlay is an href or is injected into the DOM
dr|z3d if it's rendered with javascript, then probably injected straight into the dom/svg, if java's rendering it, then it could a separate href/file.
dr|z3d if it's being injected, we might need a simple export image button to ensure that all the data/layers remain intact, but that's fairly simple.
zzz re: centroids, I don't know if svg can do: draw a circle at location id="us"
dr|z3d depends how you're defining id="us". if that's a single x,y point in the svg, then should be fairly simple.
dr|z3d javascript calculates absolute position, then draws circle using the coords as the center point.
zzz doesnt seem like we should need js for anything except xhr and maybe tooltips
dr|z3d not needed, no, just a question of how you want to generate the overlay, but sure, not a specific requirement.
dr|z3d tooltips, yes, why not? we've already got those, we just modify whatever we want to display there, and use xhr to update the content as required.
zzz in any case, I think we're agreed we don't want to reverse engineer cartosvg back to points and run it back thru SVGGraphics2D every time
dr|z3d haha, no, agreed.
dr|z3d ok, I've extracted the tooltips script and put it in it's own file, should be easier to deal with that way.
dr|z3d why why have a nested svg in there as well I have no idea, not required.
dr|z3d ok zzz, if you're still about..
dr|z3d javascript and css now in separate files, javascript functions somewhat deobfuscated and cleaned up.
dr|z3d having the css separate will allow for per-theme styling later.
dr|z3d deobfuscating the javascript, I noticed it was doing a 300ms hide and show routine whenever the viewport was resized, with an attached event listener. waste of time, removed.
trial When I'm tryna open/edit a pdf librewolf launches, instead of, e.g xournal++ or okular (KDE here)
trial Y'all know why is that so?
trial Already went to librewolf/firefox settings > search "pdf" > application > modified from open PDFs with librewolf to open with system default
dr|z3d try modifying your OS handler to set the default, perhaps it's using librewolf.
trial KDE > applications > file associations > pdf > general > application preference order > moved xournal++ above Librewolf, now librewolf doesn't pull up anymore. But now it's always okular that shows up
trial Despite me even throwing xournal++ on the very top of the list, above okular
trial KDE settings*
trial thanks, tabulating after --config, I was able to update my code editor for example, but nothing pdf related
trial Only one is pdftk, which uses itself as there's no other options
trial also, $ xdg-open blank.pdf
trial launches Okular instead of xournalpp
trial (Solved guys thanks sorry for being out of subject)
dr|z3d ok, we now have a router counts displayed on the tooltip per country.
dr|z3d and a heatmap.
trial It seems that the outproxies are blocking youtube
trial I'd understand the outproxy owners wouldn't appreciate serving google stuff to users
dr|z3d there's no explicit youtube blocking I'm aware of.
trial but rn I'm connected to a burner gmail account through tor, it's painful to get to reach the email list, and if I disconnect, I may not be able to reconnect to it
trial So if I don't want my youtube content to be tied to this burner gmail, I need to watch YT through i2p instead
trial invidious gets fuckedup and won't be able to serve 1080p+ resolution most of the time, unfortunately it's necessary when watching code/screen recording stuff, so real YT is the only option
trial Ah my bad then
trial It takes forever to load a youtube page tho, it might be YT fault I guess then
trial "Connection has timed out" every time
trial Timed out for invidious too actually...
dr|z3d colormap vs blobs, zzz. give me a few, I'll show you the alternative to blobs.
zzz ???
dr|z3d instead of using blobs, circles, to map router density, I'm using a heat map.
zzz what are you asking me to give you?
dr|z3d nothing *chuckle*
dr|z3d I'll be giving you something to look at in a minute.
dr|z3d so you need to run this in the console, anywhere you've got an exposed dir in /docs/ is fine, somewhere you can access via the console's url path..
zzz no time to run anything, sorry
dr|z3d doesn't need to be compiled, just needs access to netdb via xhr, so needs be on the same path as the console.
dr|z3d also required, a tbody id for the countrylist table, though you can hack that to use whatever suits. I have tbody id="cclist" there.
dr|z3d tooltip also displays the router count per country.
dr|z3d (not shown in screenshot)
dr|z3d missing is a persistent legend to indicate router density / color, todo.
dr|z3d colors mapped to 1,10,50,100,200,300,400,500. lighter green, >=1, the rest you can probably surmise from the image.
dr|z3d the other thing to note is that the country/region map now also contains a country code field.
dr|z3d (in the js)
dr|z3d we check the router count per country via xhr, store the counts in localstorage, and then refresh the counts every minute, so we don't need to do an xhr request every time we hover over a country.
dr|z3d if xhr fails, we delete localstorage, so we're not serving stale values after a router restart.
zzz impl sounds fancy; I don't know if the "heat" of various colors would be intuitive w/o a legend; black or gray for a count of zero may make it more obvious
zzz alternative: bars or "skyscrapers" like in the Westworld Rehobeth (?) globe?
dr|z3d legend is next, easy to do.
dr|z3d got a link to the bars map?
zzz tweaking all the colors so the "hotter" ones are "brighter" and the "colder" ones tended toward gray/black would definitely help
dr|z3d no doubt. css is external, easy to do.
zzz looking...
dr|z3d only problem with anything you overlay on the map is small countries and overlapping. that's why I thought a heat map might be better, no occlusion then.
zzz here's from ep 5 before everything went to hell: cbr.com/westworld-season-3-divergence-graphics-serac-watch
dr|z3d thanks
dr|z3d ok, cbr link gives me nothing that looks like a map, can't get to reddit, shreddit doesn't show the image. :|
zzz image search for 'westworld s3 e8 divergence globe'
zzz no it's not mercator ))
dr|z3d here's a version of the map with your color suggestions thrown in. cake.i2p/file/9lQzFtI8DQ_08o6avWWVTcN7ryoWlu2hjSHfQmr0O_9E0IDB1AAd/geomap.webp
dr|z3d ah, ok, westworld.
dr|z3d yeah, but no. you're pulling my chain, aren't you? :)
zzz yeah you're on the right track with the colors there
zzz just as inspiration
dr|z3d all that is svg, css, and some javascript. the only thing missing (legend aside) is the tunnel connection lines.
zzz image search: "global bar chart map"
dr|z3d yeah, I've thought about something along those lines, an isometric bar projection.
dr|z3d but like everything else that overlays anything on the map, it's problematic for the same reasons. 1) occlusion of the country where it's small and 2) intersection of overlays for different countries.
dr|z3d what is conceivable, however, is something like that on the tooltip, perhaps with the country enlarged.
dr|z3d (or shrunk)
dr|z3d no reason we can't have a bunch of stats represented on the tooltip, not so much a tooltip as an information overlay.
zzz a decent amount of transparency helps but it's not a complete solution
zzz the bar chart stuff looks better when the map is "tilted", I don't think it's great on a flat/straight mercator projection
dr|z3d doing some sort of tilt isn't out of the question, but that's another level of complexity and probably an external js lib.
zzz yeah just brainstorming alternatives
dr|z3d sure, no worries. keep brainstorming. :)
dr|z3d if we wanted to get fancier, a scrollable, zoomable 3d globe.
zzz I'd need to put all the tunnel hops into a polyline with an ID, right? I'm just doing individual lines for each hop now
dr|z3d maybe, depends what you want to represent.
zzz then you could get a tooltip for what tunnel it is and highlight all the hops
dr|z3d so each tunnel in a single path?
dr|z3d you might want to add classes if that's the case, so you can modify the lines based on bandwidth.
zzz it's png now so it doesn't matter,but yeah, each hop would be a single path in svg
dr|z3d ie instead of hard-wiring the stroke width in the path itself, you add a class and let the css handle width, colors.
zzz with jfreesvg we can only put in ids, not classes. I assume everything is possible with batik, or ofc if we're skipping graphics2d entirely
dr|z3d ok, not a show stopper. the id could be #tunnel1_10 or whatever, with _10 being some speed metric, and then let js clip the _10 and create a class from it, .bw_10 or whatever.
dr|z3d or just target the _10 in css, tunnel[id$="_10"]{stroke-width:3px}
dr|z3d ok, so basic legend added to map. given the context, it probably doesn't require any text, just numbers and colors, so it shouldn't need translation.
zzz I'm working on an email proposal...
trial Secure Connection Failed
trial An error occurred during a connection to invidious.private.coffee.
dr|z3d eep-to-eep, zzz? you think that's got legs?
zzz dunno. maybe. but only if it's easy
dr|z3d if it isn't an implementation headache, sounds like the natural successor to bote.
zzz I mean easy for the user. The impl would be a grind, althrough relatively straightforward
zzz back to maps, are you recommending we render at 1600 wide instead of 1200?