jdev - 2022-03-12

  1. al has left

  2. Millesimus has left

  3. jgart has joined

  4. goffi has left

  5. emus has left

  6. Millesimus has joined

  7. dezant has joined

  8. Millesimus has left

  9. oxtyped has joined

  10. larma has left

  11. oxtyped has left

  12. Millesimus has joined

  13. Millesimus has left

  14. Millesimus has joined

  15. marc0s has left

  16. marc0s has joined

  17. dezant has left

  18. dezant has joined

  19. marc0s has left

  20. marc0s has joined

  21. PapaTutuWawa has joined

  22. debacle has left

  23. pasdesushi has left

  24. xnamed has left

  25. Millesimus has left

  26. PapaTutuWawa has left

  27. Millesimus has joined

  28. Millesimus has left

  29. larma has joined

  30. marc0s has left

  31. marc0s has joined

  32. Millesimus has joined

  33. Millesimus has left

  34. larma has left

  35. marc0s has left

  36. marc0s has joined

  37. Millesimus has joined

  38. Millesimus has left

  39. Millesimus has joined

  40. Millesimus has left

  41. dezant has left

  42. marc0s has left

  43. marc0s has joined

  44. Millesimus has joined

  45. Yagizа has joined

  46. nephele has joined

  47. paul has joined

  48. nephele has left

  49. Millesimus has left

  50. nephele has joined

  51. Millesimus has joined

  52. nephele has left

  53. nephele has joined

  54. nephele has left

  55. nephele has joined

  56. dezant has joined

  57. Millesimus has left

  58. Millesimus has joined

  59. nephele has left

  60. al has joined

  61. Sam has left

  62. Sam has joined

  63. FireFly has left

  64. nephele has joined

  65. nephele has left

  66. nephele has joined

  67. mirux has joined

  68. nephele has left

  69. nephele has joined

  70. Ingolf has joined

  71. FireFly has joined

  72. nephele has left

  73. nephele has joined

  74. nephele has left

  75. nephele has joined

  76. emus has joined

  77. nephele has left

  78. Alex has joined

  79. Alex has left

  80. Alex has joined

  81. Alex has left

  82. Alex has joined

  83. jgart has left

  84. Millesimus has left

  85. nephele has joined

  86. Millesimus has joined

  87. nephele has left

  88. nephele has joined

  89. nephele has left

  90. jgart has joined

  91. nephele has joined

  92. nephele has left

  93. nephele has joined

  94. nephele has left

  95. nephele has joined

  96. FireFly has left

  97. wurstsalat has joined

  98. nephele has left

  99. nephele has joined

  100. nephele has left

  101. nephele has joined

  102. nephele has left

  103. moparisthebest has left

  104. J Marinaro has left

  105. FireFly has joined

  106. nephele has joined

  107. dezant has left

  108. nephele has left

  109. nephele has joined

  110. nephele has left

  111. nephele has joined

  112. dezant has joined

  113. nephele has left

  114. nephele has joined

  115. nephele has left

  116. nephele has joined

  117. jgart has left

  118. FireFly has left

  119. marmistrz has joined

  120. moparisthebest has joined

  121. emus has left

  122. nephele has left

  123. FireFly has joined

  124. wurstsalat has left

  125. wurstsalat has joined

  126. emus has joined

  127. kfv has left

  128. kfv has joined

  129. nephele has joined

  130. nephele has left

  131. nephele has joined

  132. J Marinaro has joined

  133. nephele has left

  134. nephele has joined

  135. al has left

  136. nephele has left

  137. nephele has joined

  138. xnamed has joined

  139. nephele has left

  140. nephele has joined

  141. nephele has left

  142. nephele has joined

  143. nephele has left

  144. nephele has joined

  145. nephele has left

  146. nephele has joined

  147. nephele has left

  148. nephele has joined

  149. Apollo has left

  150. nephele has left

  151. nephele has joined

  152. nephele has left

  153. nephele has joined

  154. goffi has joined

  155. goffi has left

  156. goffi has joined

  157. nephele has left

  158. moparisthebest has left

  159. pasdesushi has joined

  160. msavoritias has joined

  161. nephele has joined

  162. nephele has left

  163. nephele has joined

  164. debacle has joined

  165. Yagizа has left

  166. Yagizа has joined

  167. nephele has left

  168. nephele has joined

  169. xecks has left

  170. nephele has left

  171. nephele has joined

  172. nephele has left

  173. nephele has joined

  174. nephele has left

  175. nephele has joined

  176. nephele has left

  177. nephele has joined

  178. nephele has left

  179. Yagizа has left

  180. Yagizа has joined

  181. Laura has left

  182. nephele has joined

  183. nephele has left

  184. J Marinaro has left

  185. J Marinaro has joined

  186. nephele has joined

  187. nephele has left

  188. kfv has left

  189. kfv has joined

  190. nephele has joined

  191. kfv has left

  192. kfv has joined

  193. nephele has left

  194. nephele has joined

  195. Laura has joined

  196. nephele has left

  197. sonny has left

  198. goffi has left

  199. nephele has joined

  200. nephele has left

  201. nephele has joined

  202. nephele has left

  203. goffi has joined

  204. nephele has joined

  205. Yagizа has left

  206. marc0s has left

  207. marc0s has joined

  208. Yagizа has joined

  209. marc0s has left

  210. marc0s has joined

  211. sonny has joined

  212. marc0s has left

  213. Mjolnir Archon has left

  214. Maranda has left

  215. marc0s has joined

  216. Mjolnir Archon has joined

  217. Maranda has joined

  218. nephele has left

  219. Laura has left

  220. Laura has joined

  221. msavoritias has left

  222. msavoritias has joined

  223. rubi has left

  224. rubi has joined

  225. Yagizа has left

  226. Yagizа has joined

  227. sonny has left

  228. sonny has joined

  229. goffi has left

  230. Kev has joined

  231. Kev has left

  232. goffi has joined

  233. Kev has joined

  234. Kev has left

  235. Kev has joined

  236. Laura has left

  237. sonny has left

  238. debacle has left

  239. xecks has joined

  240. lovetox- has joined

  241. lovetox

    im interested in the size of the tcp read buffer people use

  242. lovetox

    currently is use 8192 bytes

  243. lovetox

    i wonder if this is too high, seems like a lot of stanzas can fit into this

  244. lovetox

    which means on every read i would have to process potentially a lot of UI updates

  245. Ge0rG

    that sounds like the opposite of a problem

  246. homebeach has left

  247. Matrix Traveler (bot) has left

  248. Matrix Traveler (bot) has joined

  249. homebeach has joined

  250. lovetox


  251. Ge0rG

    lovetox: you'll probably only hit this limit if you get flooded by some entity, like right after authenticating to the server or when joining a huge MUC

  252. lovetox

    i always get flooded from servers

  253. Ge0rG

    aggregting actions is much better than doing one thing at a time in the event loop

  254. lovetox

    thats the default if you join mucs

  255. Laura has joined

  256. Ge0rG

    if you have trouble coping with that in the UI, optimize the UI code ;)

  257. Ge0rG

    maybe you have some O(n²) algorithm hidden in there?

  258. J Marinaro has left

  259. jonas’

    what has the tcp read buffer to do with anything?

  260. jonas’

    isn't that more of a choice whether you process the actions caused by stanzas synchronously or asynchronously?

  261. J Marinaro has joined

  262. lovetox

    thats not much of a choice

  263. Yagizа has left

  264. jonas’

    if you say so

  265. J Marinaro has left

  266. lovetox

    the buffer defines the max amout you can receive with a read()

  267. lovetox

    hence limits the UI operations done afterwards

  268. Kev has left

  269. Kev has joined

  270. lovetox

    the situation is, you can pull more faster data from the network than you have capacity to process in the UI

  271. lovetox

    the situation is, you can pull faster data from the network than you have capacity to process in the UI

  272. xnamed has left

  273. Ge0rG

    lovetox: have you thought about not updating the ui in small increments, and instead perform all changes, then doing a single redraw() when the read buffers are empty?

  274. rom1dep has left

  275. rom1dep has joined

  276. lovetox

    sounds insanly complicated

  277. lovetox

    like i receive a presence, and then wait an amount X maybe i receive an updated presence, and then draw only the last?

  278. Ge0rG

    depends on your UI framework and on how you interact with it, I suppose

  279. Ge0rG

    lovetox: well, some programs will just delay the redraw by .2s, others will only issue the redraw after the read buffer is empty

  280. lovetox

    im not sure what you mean by empty, i call read(8192)

  281. Ge0rG

    is it a blocking or a non-blocking call?

  282. lovetox

    non blocking

  283. Ge0rG

    so it will return 0 if you are done, and you can issue a redraw then

  284. lovetox

    but it will not return 0 for like a minute

  285. lovetox

    if you join100 mucs on connect

  286. lovetox

    thats what i mean this is essentially a ddos scenario

  287. Ge0rG

    well, you could have two threads, one doing the stanza processing, the other doing UI redraws as fast as it can

  288. lovetox

    the server sends me a potential endless stream of data

  289. lovetox

    Ge0rG, so you build up a unbounded queue of UI draw events, because the one thread pulls data in faster then the other thread can process

  290. xnamed has joined

  291. lovetox

    thats what i say, async does not help here

  292. lovetox

    you need to limit the input

  293. lovetox

    to a level what your computer can process

  294. lovetox

    not stuff it into a queue which you process sometime later, maybe

  295. lovetox

    i had 2 ideas, one i limit the read size, meaning i need more time to pull in the data, meaning the ui has more time to update

  296. lovetox

    the second was to just limit the priority of when i call read(), meaning if there any UI events outstanding, i simply not call read() again

  297. Ge0rG

    lovetox: if you don't do redraws every 8KB, you won't do redraws every 4KB or 2KB

  298. lovetox

    pulling 4x 2 kb from the network takes more time, then pulling 8kb once

  299. xnamed has left

  300. Ge0rG

    some microseconds, yes

  301. Ge0rG

    it's already there in your network stack, waiting for you to fetch it

  302. xnamed has joined

  303. lovetox

    yes nevertheless, its an asnyc call, meaning if i call read(), i will not receive anything (even if its already there) in the mainloop iteration where i issued the call

  304. lovetox

    meaning thats a full iteration where other code can do other things

  305. mathieui has left

  306. lovetox

    but actually i wanted to know what other people use

  307. lovetox

    so Ge0rG what do you use?

  308. Ge0rG

    lovetox: I have a dedicated thread doing data processing

  309. Ge0rG

    and I send events to the UI to redraw.

  310. lovetox

    so when your UI freezes because it needs to process a lot of events, you pull in just more and more data in the background

  311. Ge0rG

    no, I always process data on a different thread, not blocking the UI

  312. lovetox

    i really having trouble understanding how that technically works, so you receive 200 stanzas, and then you issue 200 events to the ui thread, but it can only process say 10 events / second, so where do the other 190 events go? into some kind of UI event queue? and while that queue builds up you just pull more data in the other thread?

  313. Ge0rG

    I think I'm pooling things like all presence from a room

  314. goffi has left

  315. lovetox

    presence was an example, great if you are pooling them, but my question was about the how that would work if you getting spammed by a server

  316. Ge0rG

    lovetox: it's complicated ;) my backend service is storing data in an SQLite DB, and the content provider notifies the UI then

  317. lovetox- has left

  318. goffi has joined

  319. Millesimus has left

  320. lovetox- has joined

  321. Millesimus has joined

  322. lovetox- has left

  323. debacle has joined

  324. nephele has joined

  325. nephele has left

  326. nephele has joined

  327. nephele has left

  328. nephele has joined

  329. nephele has left

  330. nephele has joined

  331. oxtyped has joined

  332. abdullah has left

  333. nephele has left

  334. lovetox

    one problem i often come across is, when i need to export data from a jid to hard disk, and i need to name the file like the jid

  335. lovetox

    is there some save jid to allowed chars for harddrive convert thingy

  336. Ge0rG

    on linux, you can have anything but / and NUL, so bare JIDs go.

  337. Ge0rG

    on windows, you are in hell

  338. lovetox

    really anything? because full jids also allow stuff like emoji codepoints

  339. Ge0rG

    lovetox: depends on the fs of course, but on ext4 everything goes.

  340. Ge0rG

    you don't need to have valid utf8 or somesuch

  341. abdullah has joined

  342. lovetox

    hm so i replace / with "-" or something, and look when that breaks

  343. qy

    > lovetox wrote: > presence was an example, great if you are pooling them, but my question was about the how that would work if you getting spammed by a server How frequent or realistic a scenario is it that you'd be spammed by a server so fast that the UI could not keep up? (admittedly in weechat I use the same model, but only begrudgingly)

  344. oxtyped has left

  345. lovetox

    pretty high, because in xmpp you can pretty easily amplify the amount of data you get, i can send 100 join presences, resulting in 100.000 presence stanzas

  346. lovetox

    this all depends of course on how fast your server is, how fast your connection is, how fast your computer is

  347. qy

    But surely by that logic, when i applied MR677, my gajim should have become unusable and constantly be playing catchup?

  348. lovetox

    Not sure about what you are talking right now, but that is not the Gajim chat and i was not talking about a issue you had

  349. qy


  350. atomicwatch has joined

  351. oxtyped has joined

  352. qy

    Still relevant to me, cause i am technically halfway through rewriting my client to use an unbounded queue instead of direct processing, and best i can tell, even with all my mucs open, there's no real risk of not being able to keep up except at initial connect, so unless the UI redraw takes a very long time, i don't quite follow where the risk is, since the alternative is just freezing anyway

  353. pasdesushi has left

  354. lovetox

    that just does not sound like a sound architecture

  355. lovetox

    introducing an unbounded queue

  356. lovetox

    like instead of ui freezing (one problem) you probably have now much more propblems

  357. lovetox

    like instead of ui freezing (one problem) you probably have now much more problems

  358. lovetox

    data loss, memory management problems etc

  359. Ge0rG

    lovetox: what about joining fewer MUCs in parallel? ;)

  360. lovetox

    also a solution, it falls into the category "reducing input"

  361. lovetox

    in my expierience its very easy to write inefficient UI code

  362. jonas’

    lovetox, re JIDs on the FS: the problem is not what's allowed, the problem is that a JID may be much longer than what a filename may be on ext4 (255 bytes) or even a full pathname may be on linux (it depends™)

  363. jonas’

    lovetox, re JIDs on the FS: on linux, the problem is not what's allowed, the problem is that a JID may be much longer than what a filename may be on ext4 (255 bytes) or even a full pathname may be on linux (it depends™)

  364. lovetox

    jonas’, i know there are multiple problems all not pretty, i just have no better idea, if i offer the user a export off all conversations, and want to put them in plain text, then one file per conversation makes sense

  365. jonas’

    only way to stay sane is sha256 | base32 on the JID if you need to truly key it on the jid and hope that that's hard enough to collide.

  366. lovetox

    is there a better solution to this?

  367. lovetox

    jonas’, but its plaintext export, people should see the filename and know about what it is

  368. lovetox

    not some sha256 string

  369. jonas’

    alternatively you could truncate the individual JID parts (thankfully, DNS also only allows 255 chars), so you could e.g. localpart[:128] + '@' + domainpart[:100] + '/' + resourcepart[:10] + sha256sum(jid).to_hex()[:5] or so

  370. jonas’

    or you might separate domainpart, localpart, resourcepart into a directory structure, which may also be much more navigatable anyway

  371. larma has joined

  372. lovetox

    hm i like that idea on first look

  373. pasdesushi has joined

  374. jonas’

    (that still requires truncating on long local- and resourceparts tho)

  375. lovetox

    im fine with a 99% solution here

  376. nephele has joined

  377. lovetox

    thanks, i think i will try that with the folders

  378. mathieui has joined

  379. oxtyped has left

  380. nephele has left

  381. mathieui has left

  382. mathieui has joined

  383. sonny has joined

  384. xecks has left

  385. moparisthebest has joined

  386. xecks has joined

  387. Alex has left

  388. Alex has joined

  389. sonny has left

  390. lovetox

    uh resource can also contain /

  391. cedar has left

  392. cedar has joined

  393. dezant has left

  394. lovetox- has joined

  395. debacle has left

  396. lovetox- has left

  397. xecks has left

  398. dezant has joined

  399. rom1dep has left

  400. raghavgururajan has left

  401. raghavgururajan has joined

  402. abdullah has left

  403. xecks has joined

  404. abdullah has joined

  405. marmistrz has left

  406. atomicwatch has left

  407. xecks has left

  408. atomicwatch has joined

  409. xecks has joined

  410. sonny has joined

  411. rom1dep has joined

  412. mister has joined

  413. dezant has left

  414. pulkomandy

    hello, do you have any hints, comments, things to avoid, etc about nickname tab completion? for example: - any interesting algorithm to detect what substring of the input to try to complete? normally I would split the string on spaces, but xmpp nicknames can have spaces in them - how do you select which completion to use first when there are multiple matches? depending on who spoke last in the chat? depending on which tab completion was used previously for the same input? any other things to take into account? - really any feedback on how you did it and what makes oyu happy or unhappy about your current implementation

  415. Ge0rG

    pulkomandy: splitting on whitespace is generally fine, you'd only end up in conflict if you have multiple users with the same first word

  416. Ge0rG

    pulkomandy: it makes sense to order tab-completion by last-spoke _and_ last-mentioned

  417. Ge0rG

    poezio only does last-spoke, and I'm frustrated every time when messaging the same person multiple times back-to-back

  418. Ge0rG

    not sure if last-mentioned-by-you or -by-anybody though

  419. pep.

    Someone(tm) should push for a wire format to be used for this.

  420. pep.

    Converse is already using 372, dunno if that's the one, but something is badly needed

  421. Ge0rG

    pep.: to attach an occupant reference to a message?

  422. Ge0rG

    that's quite orthogonal

  423. pep.

    I think that's pretty much the deal. To me it's the same issue as 0071/0393. Randomly matching stuff in body

  424. pep.

    And not allowing the sender to express intentions

  425. pulkomandy

    yes, 372 can do that, I will add it to the message when tab completion is used to complete a nickname

  426. moparisthebest

    Last spoke is super annoying, if you've ever spent significant time in IRC you'll notice people constantly addressing the wrong person because that person spoke right before tab+enter

  427. Ge0rG

    moparisthebest: only if you have nothing to say

  428. Ge0rG

    I always do tab, then type a message, then press enter

  429. rom1dep has left

  430. pulkomandy

    also, do you use any fancy data structure / algorithms for this (possibly a trie or something like that), or do you consider that the number of people in a room is low enough that it isn't worth it, and just compare strings one by one to find all the matches?

  431. pulkomandy

    also, case sensitive or not?

  432. Ge0rG

    case insensitive. good luck getting that right with unicode and each user's locales.

  433. nephele has joined

  434. pulkomandy

    well I don't care about other user's locale, I can just convert everything to lowercase for comparisons locally

  435. nephele has left

  436. nephele has joined

  437. pulkomandy

    ah yes and there's also the case where someone has a nickname starting with [ or ` or some other silly char and I may want to ignore it for completion (or maybe I don't)

  438. oxtyped has joined

  439. pep.

    In poezio there's a user named ☭ sometimes. Looks like they've changed to another symbol today :)

  440. pep.

    In poezio@ there's a user named ☭ sometimes. Looks like they've changed to another symbol today :)

  441. nephele

    You don't need tab completion if you have only one char in your name :)

  442. nephele

    The only real vector I've had problems with is people namibg themselves /command something in group chats, depending on the input that can be an attack vector

  443. pep.

    Depends, let's say symbols are not often mapped on keyboards, and not everybody is into clicking

  444. rom1dep has joined

  445. pep.

    And being able to match that the nick has been mentioned is also necessary

  446. marc has left

  447. nephele

    It's not a completion if you have nothing to base it on, do you do tab conpletions with an empty buffer?

  448. pulkomandy

    probably won't have a special case to tab-complete cccp to ☭ , at least at first :p (I think that's how compose keys on Linux allow to use this character?)

  449. pep.

    nephele, sure

  450. pep.

    As Ge0rG said above, last-spoke and/or last-mentioned

  451. pulkomandy

    yes, empty buffer should allow to cycle through all nicknames. Preferrably the ones that are not reachable on the local keyboard first?

  452. pulkomandy

    and yes, that too

  453. nephele

    Compose key on linux (on X11) is based on a big list somewhere deep in X11 configs, I rewrote that config for myself once to make bindings that make sense

  454. oxtyped has left

  455. lovetox- has joined

  456. moparisthebest

    Someone in another MUC changed their name to start with something that looked like an A but was not, so only people using conversations could address them, no one using tab-complete clients could

  457. lovetox- has left

  458. nephele has left

  459. nephele has joined

  460. pasdesushi has left

  461. pasdesushi has joined

  462. nephele has left

  463. nephele has joined

  464. nephele has left

  465. nephele has joined

  466. nephele has left

  467. nephele has joined

  468. nephele has left

  469. larma has left

  470. nephele has joined

  471. marc has joined

  472. nephele has left

  473. nephele has joined

  474. nephele has left

  475. nephele has joined

  476. goffi has left

  477. nephele has left

  478. nephele has joined

  479. lovetox


  480. lovetox


  481. nephele has left

  482. nephele has joined

  483. larma has joined

  484. nephele has left

  485. oxtyped has joined

  486. inky has left

  487. oxtyped has left

  488. mathieui

    pep., to be fair that user is usually called "ux" and gets annoyed anytime people mention them

  489. nephele has joined

  490. inky has joined

  491. nephele has left

  492. nephele has joined

  493. nephele has left

  494. nephele has joined

  495. nephele has left

  496. oxtyped has joined

  497. goffi has joined

  498. oxtyped has left

  499. marc has left

  500. nephele has joined

  501. nephele has left

  502. nephele has joined

  503. nephele has left

  504. marc has joined

  505. debacle has joined

  506. emus has left

  507. me9 has joined

  508. nephele has joined

  509. larma has left

  510. FireFly has left

  511. nephele has left

  512. FireFly has joined

  513. FireFly has left

  514. oxtyped has joined

  515. selurvedu has joined

  516. oxtyped has left

  517. lovetox- has joined

  518. nephele has joined

  519. antranigv has left

  520. nephele has left

  521. cedar has left

  522. FireFly has joined

  523. kfv has left

  524. kfv has joined

  525. PapaTutuWawa has joined

  526. FireFly has left

  527. larma has joined

  528. nephele has joined

  529. nephele has left

  530. emus has joined

  531. mirux has left

  532. J Marinaro has joined

  533. atomicwatch has left

  534. oxtyped has joined

  535. mirux has joined

  536. oxtyped has left

  537. jgart has joined

  538. disgyze has joined

  539. disgyze has left

  540. disgyze has joined

  541. disgyze has left

  542. disgyze has joined

  543. disgyze has left

  544. disgyze has joined

  545. disgyze has left

  546. disgyze has joined

  547. disgyze has left

  548. disgyze has joined

  549. disgyze has left

  550. disgyze has joined

  551. disgyze has left

  552. disgyze has joined

  553. disgyze has left

  554. disgyze has joined

  555. mirux has left

  556. emus has left

  557. msavoritias has left

  558. me9 has left

  559. larma has left

  560. FireFly has joined

  561. antranigv has joined

  562. homebeach has left

  563. Matrix Traveler (bot) has left

  564. Matrix Traveler (bot) has joined

  565. homebeach has joined

  566. Vaulor has left

  567. PapaTutuWawa has left

  568. marc0s has left

  569. marc0s has joined

  570. kfv has left

  571. FireFly has left

  572. oxtyped has joined

  573. kfv has joined

  574. oxtyped has left

  575. Vaulor has joined

  576. dezant has joined

  577. lovetox- has left

  578. marc0s has left

  579. marc0s has joined

  580. FireFly has joined

  581. homebeach has left

  582. Matrix Traveler (bot) has left

  583. Matrix Traveler (bot) has joined

  584. homebeach has joined

  585. atomicwatch has joined

  586. emus has joined

  587. oxtyped has joined

  588. oxtyped has left

  589. marc0s has left

  590. marc0s has joined

  591. larma has joined