freenode/#shirakumo - IRC Chatlog
Search
12:21:16
Shinmera
I've also been thinking about ripping out Flare and replacing the indexed-set thingy with something better.
12:26:02
Shinmera
Maybe something like a flat vector with a deletion counter and compaction only once the counter gets too high.
12:26:25
Shinmera
or splitting into chunks of limited size so the maximum work per deletion is always bounded.
12:26:51
Shinmera
Could probably also get away with an unsorted table iteration for a lot of things.\
12:38:40
Shinmera
Well, 1) flare is barely used so it's a whole system and complexity that's kinda shitty to have around
12:38:56
Shinmera
2) yes, speed. The indexed set uses a doubly-linked list, which is not great for what you do most with it: iteration
12:50:44
selwyn
hopefully avoiding wasteful re-renders will help the situation, but alloy is weirdly slow
12:51:51
Shinmera
text is reuploaded to the gpu every frame because of the allocation problems I talked about
12:52:51
Shinmera
if we can allocate a buffer for every text that problem goes away entirely, but then we have to know when and how to deallocate.
12:55:52
selwyn
is the focus invariant you mentioned that only one thing can have strong focus in the tree?
12:57:57
Shinmera
At any time there's always exactly one thing that has strong focus. Additionally, an element can only be weakly focused if either its parent is strongly focused, or a child in the tree is strongly focused.
12:58:17
Shinmera
I had a case where an element should have had strong focus, and in fact it was still set as the focused element, but its focus value was nil.
13:23:52
selwyn
well, i suppose it's somewhat acceptable to postpone that in a ui toolkit that's meant for games
14:33:35
selwyn
you can do fourier transforms in any number of dimensions, as well as over arbitrary finite groups, function spaces, lots of places
14:35:29
selwyn
the higher dimensional ones are not really useful in signal processing afaict, which is why they are somewhat neglected i guess
14:50:58
selwyn
cancel that, some kind soul has made a n-dimensional fourier transform in common lisp
15:34:50
Shinmera
Spawning ten threads each opening and closing 1000 times gets me ~225 connections per second for each thread.
15:39:30
Shinmera
Across the 100 threads looks like they can each send around 4'500 messages per second.
15:57:18
Shinmera
Looks like on my machine I can get around 14'500 messages per second delivered and received (so full round-trip)
16:34:32
Shinmera
Also managed to fix that egregious bug where sometimes some browser clients were getting massive delay on messages.
16:35:39
Shinmera
Was a chunk stitching issue where if multiple full messages were received at once it would erroneously only process the first and defer the others, which however meant waiting for another tcp payload or a timeout.
16:52:40
mfiano
For the last 3 weeks an IRC pebcak had me in #shirkumo and I was wondering why I wasn't seeing any activity long after the holiday break.
17:03:40
mfiano
I decided this year is my "I need to stop working on my fucking game engine and make a fucking game" year
17:07:27
mfiano
Doing some procgen and making pixelart blob tilesets here, for a rogue-like-like idea
17:13:11
mfiano
Requires disabling adblocker to post, and makes you watch a 30 second video ad in between each image uploaded to a collection
17:16:22
mfiano
2 minutes later, here's a stupid little cave with the most complicated SSBO shader I ever wrote, and probably the crappiest 20 minute pixelart I ever made: https://imgur.com/a/9HyU5wZ
17:55:36
mfiano
As for what you're looking at, it's some weird hybrid of cellular automata and metaballs. I don't even know what I'm looking at yet :)
18:06:00
Shinmera
SAL9000: I revised the shirakumo-server-management extension and added a shirakumo-ip extension.
18:06:47
Shinmera
SAL9000: Not sure how to handle the user-info for the ip extension, though. It should only be sent to authorised users of course, but Lichat only has a permissions check on an update-type level, so no per-update-property permissions.
18:12:35
Shinmera
yeah that would be the most fitting thing. Still don't like splitting things, though.
18:17:16
Shinmera
It's either a new update, a permissions system for sub-update granularity, or a separate list of "privileged users" for which such fields are included
18:42:29
Shinmera
I think I'll go with a separate update just so we can deliver even more potential info.
18:54:09
Shinmera
how long they've been on, which channels they're in, what past IPs they've connected with.
19:13:33
SAL9000
also, 7.8 shirakumo-pause -- throttle the too-many-updates error as well? otherwise it could conceivably become ddos-amplification
19:15:11
SAL9000
right, if the servers are allowed to just drop stuff then dos-protection can be done that way, yeah
19:17:50
SAL9000
I just noticed the various clock-related updates... had a silly thought about NTP-over-Lichat :D
19:18:41
SAL9000
(of course, if your chat client has the privileges to adjust your system clock you're doing something wrong)
19:20:57
SAL9000
in theory, client could have a separate lichat-clock -- or server could track clients' clocks -- but that's way out of scope.
19:21:44
SAL9000
our TOTP-registration screen did not have a "enter a code here to test your token" step and I brought up time desync as a reason to have such a field
19:23:35
Shinmera
but then always pushed it out when I realised I'd have to look into the standard and implement it lol
19:28:10
Colleen
github.com/mare5x/LispQR/ Website (HTML), Title: GitHub - mare5x/LispQR: QR Code encoding using Common Lisp.
20:08:57
Shinmera
also, do you want to join the shirakumo team? Could give you commit bit for all the lichat repos.
20:10:12
SAL9000
if the server downcases "destructively" anyway, then client doesn't need to care (can just downcase too)
20:10:48
Shinmera
whatever the case the server definitely doesn't store the name as created and then "fix" it for you to send that back.
20:11:02
Shinmera
I think lookups are just case-insensitive, so the update would send whatever the user typed.
20:11:32
SAL9000
right, so it's case-insensitive (non-destructive), as opposed to case-folding (destructive)
20:14:09
SAL9000
I think a custom-map would be the 'pythonic' thing to do, since then client.channels would still Just Work(tm)
20:15:08
Colleen
docs.python.org/3/library/c... Website (HTML), Title: collections.abc â Abstract Base Classes for Containers — Python 3.9.1 documentation
20:22:54
SAL9000
tl;dr python2 has been deprecated for years, and now officially sunsetted, but people STILL USE IT
20:25:18
SAL9000
pro is like 2x the price of home, but you can refuse updates for much longer if you want
20:25:35
selwyn
unfortunately all of the good open source voice recognition software is in python2 for the moment
20:26:47
SAL9000
ditto un-activated... apparently after enough time has passed it starts turning features off
20:26:55
selwyn
i did the azure thing and it works great, it tends not to give you much choice in updates afaict
20:27:40
SAL9000
on pro I can -- if I really want to -- tell non-security updates to go hang for 365 days
20:28:29
SAL9000
delaying the update = more time for the guinea pigs to pick up on the issues and get the update pulled/patched
20:28:51
SAL9000
because who needs QA when one has users willing to pay for the privilege of being alpha-testers? /s
20:31:51
Shinmera
https://lh3.googleusercontent.com/proxy/fLoNEe8YYEMzK-VbstrtxZ3ZAMR3Neqswq6um2TEVpXVZKY1VGD5LaReKsHLLEDPxIj3t3eN9EDAOlvIkzei1DRORAs7YBrfhs0hpXvezRAsZEcSdUxXTJns-MQSRBmvYlmEUe9z_j4zVn5yCYj6Uhblqz1jan-pTcU
21:10:02
Shinmera
Personally I woulda just .lower() d things on lookup and insert and be done with it.
21:18:30
SAL9000
unless something's changed since I did weechat scripting last time (years ago), there's basically "IRC-like" buffers and "freeform" buffers
21:20:01
gingerale
I really should come up with a task list of some sort where to also write notes in.
21:31:14
SAL9000
Shinmera: poked #weechat but quick check of API docs seems to indicate no editing unless it's freeform. IRC doesn't allow editing messages, so it makes sense...
21:36:40
gingerale
There's a very nice diff library for JavaScript for comparing two blocks of text.
21:38:15
SAL9000
given that there are a grand total of 2 weechat scripts in js, I'm guessing no-one is going to have that feature installed :p
21:44:32
Shinmera
like, instead of using update classes could just use the list and a custom dispatch.
21:46:15
Shinmera
Another nice extension to lichat would be E2E encryption. I'm scared of trying that though as I don't think I know enough to make a good proposal for that kinda thing.
21:48:56
SAL9000
basically, a protocol for doing E2E on top of existing chat systems e.g. IRC private messaging
21:49:22
Colleen
otr.cypherpunks.ca/Protocol... Website (HTML), Title: Off-the-Record Messaging Protocol version 3
21:52:48
Shinmera
The problem with this I guess is that it only encrypts the payload. You'd still be able to snoop the from and other update fields.
21:53:45
Shinmera
Whereas every lichat communication is over a channel with arbitrary number of participants.
21:54:47
Shinmera
the from etc fields don't matter as long as we already have an established connection.
21:55:09
Shinmera
In fact in Lichat 2.0 you can leave out from entirely and the server will tack it on for you.
21:55:37
SAL9000
although having a from could make sense if you want to (later) implement gateways/proxies
21:57:56
Shinmera
Another problem the from was meant to solve was sharding. Another server would be another user with an "impostor" permission so that it could send messages on behalf of others.
21:58:48
Shinmera
But that needs some more thought (how to merge user and channel lists and keep them in sync, etc.)
22:01:13
Shinmera
anyway, considering my tests with exlichat earlier today I don't think I need to work on that extension for a long time :)
22:05:26
Shinmera
nah, just leaving it be for now, perf seems far more than acceptable for what I need.
22:05:46
SAL9000
"over 2 million connections (Erlang on FreeBSD)" yes... and then "10-12 million connections (Java)"
22:07:59
Shinmera
we say as we consider an elixir server and talk about python and javascript clients
22:36:59
SAL9000
loading a trivial weechat script which loads pylichat already causes warning messages :p
22:37:07
SAL9000
"context.c:55: warning: mpd_setminalloc: ignoring request to set MPD_MINALLOC a second time"
22:37:20
SAL9000
https://stackoverflow.com/questions/49757245/fixing-warning-message-related-to-mpd-setminalloc
22:37:21
Colleen
stackoverflow.com/questions... Website (HTML), Title: python - fixing warning message related to mpd_setminalloc - Stack Overflow
22:48:38
Colleen
github.com/Shirakumo/weelic... Website (HTML), Title: weelichat/lichat.py at main · Shirakumo/weelichat · GitHub
22:52:05
Shinmera
I'll hold off on pushing a new version to pypi until this works so we don't have to bump versions too much.
23:19:10
Shinmera
SAL9000: do you have an idea already how to handle the connection? Does weechat offer some periodic callback you can use or something?
23:19:29
Shinmera
would still introduce latency, but not sure how else to make it "wake up on arrival"
23:19:31
SAL9000
Shinmera: there's periodic callbacks but I'm hoping to hook into the weechat select loop