IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#saltr
/2024/06/20
zzz world map code up as a draft MR at git.idk.i2p/i2p-hackers/i2p.i2p/-/merge_requests/206 for review/comment/testing/brickbats
zzz I summarized most of the previous comments up there for people to think about
dr|z3d I might post some comments on the MR later, but here's what I'm currently thinking..
dr|z3d 1) forget java / jfreesvg entirely. do the entire thing as js /svg.
dr|z3d re blobs, with a tagged svg map, we can probably do a heatmap style representation of router density per country, with an overlaid key that maps color to count.
dr|z3d 3) inserting the count data and other datapoints that are represented on /netdb might be as simple as extracting them from tables and inserting into the svg via ajax.
zzz all is possible, but it's straying pretty far away from our core competencies
zzz (or at least mine)
dr|z3d someone's put an I2P+ image up on docker if anyone's into docker. hub.docker.com/r/justinhimself/i2pplus
dr|z3d downloaded 8.3K times, apparently, no idea what that means, but it's more than most of his other images. hub.docker.com/u/justinhimself
snex 8000 of those 8300 are just him testing it
dr|z3d yeah, probably haha.
zzz I got batik working
zzz and I got it down to 8 of their 35 jars req'd, totalling 1MB, or "only" 20 bigger than jfreesvg
dr|z3d well that's something, well done. it is a bit of a monster though, eh?
zzz you may find the svg output more pleasing, at least they put in newlines and it looks a little smarter
dr|z3d you mean the source?
dr|z3d the svg file structure?
dr|z3d and when you say working, presumably that's with rrd4j?
zzz yes yes yes
zzz the API is huge and a lot more flexible than jfree, you can put css in the svg for example
dr|z3d I've got css in my svg graphs. :)
zzz I mean without hacking the source
zzz I'll check it into my github rrd4j-jfreesvg project shortly
dr|z3d the only thing I'd be interested in by way of comparison is the visual output, and I doubt there's any difference?
T3s|4 dr|z3d: if only to confirm the expected, no snark stalls on 19+ on 3 different rigs, given the 9999 down limit. On my ISP connection, fairly certain the 'upper limit' of snark's 'down' value lies between 16,000 and 25,000 KB/s (and probably closer to 25,000) before torrents stall, if interested in further testing
zzz nothing obvious
dr|z3d formatted source? I purposely remove all redundant newlines, spaces etc from the graph svgs.
dr|z3d T3s|4: as zzz said, possibly a buffer overrun issue. if it's not an issue for him, I'm not going to pursue it.
zzz at one point you were greatly concerned with all excesses and cruft in the jfreesvg generated svg; if all you care about now is visual output, then not much to see here
dr|z3d yeah, the cruft I wasn't a fan of. that's why it's all been removed. all of it :)
dr|z3d you'd be hard pressed to get the graph svgs any smaller than they are, filesize-wise.
T3s|4 dr|z3d: I must have missed it, when / where was the buffer overrun issue mentioned?
dr|z3d <zzz> oh this is megabytes. 28000KBps = 28 MBps = 224 Mbps
dr|z3d <zzz> smells like an integer overflow somewhere
dr|z3d <zzz> T3s|4, please give me the three SREDQ lines from the debug bandwidth limiter section on /i2psnark/?p=2
dr|z3d integer overflow, sorry.
T3s|4 ah, thanks, I do recall that
dr|z3d are you any more persuaded to include this in mainline i2p?
dr|z3d aka canon?
dr|z3d for graphs, I mean, though it sounds like you're mulling using it elsewhere, like the netdb map..
T3s|4 dr|z3d: if your remove snark's 4 'nines' down limit in your next build, I'm sure I will be able to find snark's 'upper' down limit prior to stalls on my ISP's 400 Mbps Up/Down connection
T3s|4 *you remove
dr|z3d I'm sure I will, T3s|4, but I'm not going to. :)
dr|z3d too much distraction for not enough payback.
T3s|4 *** reverts to observer mode ***
zzz I'm sure you don't need a .0 at the end of every x/y coord in svg, batik doesn't do it, have you yoinked thouse out yet?
dr|z3d yeah, gone.
dr|z3d eg <line x1="1" y1="1" x2="384" y2="1" .../>
dr|z3d you also don't need a leading 0 for 0.x values, either.
zzz put up some MRs for them then. Although in general nobody seems to care about svg size since it's all usually gzipped
dr|z3d not much point, I'm working on the 4.x version when 5.x is current wrt jfreesvg.
dr|z3d and you're probably right about gzip, most people probably don't care about an extra couple of kilobytes pre-gzip.
dr|z3d side note, don't use xlink-href in your svgs, I think you vaguely mentioned something about those on your netdb map MR.
dr|z3d deprecated, just use href
zzz that's down in the lib, not under my control
dr|z3d ok, just bringing that to your attention.
zzz but with or without, you can't right-click-save the image and get happy results if the background map is separate
dr|z3d separate from?
zzz the alice's restaurant overlay image
dr|z3d really depends how you're rendering that, but you should be able to get javascript to give you something useful.
zzz I split them up because if it's in one png it was about 700KB uncacheable
zzz so the MR is two pngs on top of each other
dr|z3d as a concept it works, but I'm not a fan of multi-layered huge bitmaps.
dr|z3d not in the console, anyways. gimp, sure. :)
zzz sure but it could also be SVG on top of PNG
dr|z3d svg on svg is best. then you can modify the countries, tooltips and everything else without having to worry about pixel-precise alignment.
dr|z3d and of course you can provide a resolution-independent, zoomable map and all the rest of it.
dr|z3d and when I say svg on svg, what I really mean is a self-contained svg with all the data, layers, tooltips etc.
zzz I don't know why svg+svg is better than just one svg
dr|z3d right, it's not. a single svg is what I'm driving at.
zzz yup
dr|z3d for the heatmap, if you can target individual countries in your svg map, you can do something like a fill with variable opacity (or different colors) to denote router density.
dr|z3d that way you don't have to deal with overlapping blobs.
dr|z3d then you've got more visual space to do something with the tunnel lines and width without the the presentation becoming too messy.
zzz maybe, although that may be too subtle for small countries with lots of users. tradeoffs abound
dr|z3d no reason why click to zoom links can't be presented in the table, that brings the clicked country into view, zoomed appropriately.
zzz complexity is the reason...
dr|z3d sure, you don't do it all at once, but once you've got a javascript framework, it's easily extended.
zzz it's a tricky line to draw, but all the flags w/ stats is a little problematic with all the hate everybody has on each other and what countries are real or not...
zzz I feel like the topo map I have tends to soften that a little, while a svg country map would emphasize the political divisions even more
dr|z3d that sounds like you're referring to Taiwan. :)
zzz thats a good example, sure, but far from the only
dr|z3d minor issue in the scheme of things. if we need a non-boundary map to keep everyone happy, I'm sure we can make one.
zzz thats what I have now ))
dr|z3d you do, all 700K of it :)
zzz lol
zzz sure it would shrink a lot if we just made all the oceans the same color ))
zzz that would also make it a lot less busy
dr|z3d did you have a play with cartosvg.com/app ?
dr|z3d aside from the different projection modes, zoom/rotate features, it can also not display borders (country divisions).
dr|z3d it's all got a feature to color countries based on data points built in. check the layers tab.
dr|z3d (with associated legend)
dr|z3d anyways, let's have a look at your map, see if we can do anything with it for you.
zzz yeah it's all fun stuff, if we wanted to get serious it would be the usual slog of looking at size, licenses, dependencies, blah blah blah
zzz here's the size requirements for any replacement base map: 1200x1200 85 degree Web Mercator (WGS-84), crop 215 px off the top and 349 px off the bottom, for a 1200x636 image
dr|z3d I was just looking at what you uploaded.
zzz the crops are at about 72 degrees on the top and 60 degrees on the bottom
zzz you can choose different crop points but then you'd have to change the hardcoded offsets/sizes in the code
zzz I played with it and decided to do it so basically all of canada and russia were shown and none of antarctica was
dr|z3d I'm not endorsing png usage, but how does a png 50% of the size of your offering sound?
zzz good
dr|z3d ai upscaled x4, then downscaled to initial resolution and processed via tinypng.com a couple of times.
dr|z3d counterintuitively, upscaling was intended to remove some of the sea detailing to make the image more compressible.
zzz in some ways it's better but it makes the continental shelves even more distracting
dr|z3d so you want all the light blue gone, ideally?
zzz i don't know what i want
zzz but flattening all the water (aka blue) to a single color is worth a try, maybe inkscape or gimp knows how to do that
zzz but the result may just look stupid
dr|z3d yeah, you can do something with that, I could do something with that too if my gimp install was completely fucked right not.
dr|z3d some "phased" update appears to have broken just about everything useful. it serves as an image viewer and not much else right now :|
zzz the result would look something like google maps, which should be pretty familiar to most people
dr|z3d presumably the map came with the gridlines and you don't have anything without?
zzz correct
zzz all these mapping services serve up tiles, it's hard to find the whole thing in one image
zzz google maps is what kickstarted web mercator, that's why it's everywhere now
zzz that cartosvg site, btw, is powered by an open source country boundary dataset that's 400 MB
snex thats gotta be the uncompressed size
zzz there was another one that you gave me that was a lot more promising except for the janky non-open-source pay us $200 license
snex the one i suggested was openlayers which im pretty sure is free
dr|z3d 400MB?
zzz openlayers doesn't have any data, you need a tile server
zzz this is the janky license one simplemaps.com/world
dr|z3d that's not quite 400MB. try 24K.
zzz it also doesn't contain any coordinates (((
dr|z3d yeah, shouldn't need those, just the individual countries tagged.
zzz I still need an open-source base map and simplemaps.com isn't it
zzz i wonder if i should move russia about 3000 miles west because I'm pretty sure nobody lives where it is now ))
zzz whats that called? centroid?
zzz population centroid vs. land mass centroid
dr|z3d I think that's called "the Putin effect".
zzz right now the circle is over eastbumfuckistan
dr|z3d for tagged countries, have a look at cartosvg.com/mercator
dr|z3d just ctrl+u on the page and you'll see the inline svg.
dr|z3d careful, you'll get orignal excited, you're talking his language :)
cumlord very low effort in 2 color mode
dr|z3d yeah, cumlord, you said it. low effort. haha.
dr|z3d without the gridlines it would be a lot easier to optimize.