Community
Chat Logs
Monday, February 16, 2026
- blueinstead he wants to make it configurable... which uh.. is ok, doesn't make the default behaviour any less quirky
- blueso basically no human is gonna parse A DASHDASH B as A is the karma'd object, and B is the comment, if A and/or B are anything resembling a sentence
- bluehaving a karma feature is a nice-to-have. having a flowing conversation the bot doesn't lose its mind in the middle and spews nonsense is *basics*
- bluewhere the bot*
- bluethis also leads to some really weird situations (the following is a test)
- bluejosh -- did you read my pm?
- nevetjosh now has karma of -1.
- blue^ dumb
- * Chronos doesn't have a strong opinion on it one way or another
- ChronosBut I feel compelled to clean up the mess I made, so please disregard the following two messages
- Chronosblue: I'd probably use emdashes if I knew how to type them. I used to use ++
- nevetblue: I'd probably use emdashes if I knew how to type them. I used to use has neutral karma.
- bluelol
- bluere strong opinion: as you should. dreamreal and I are going to butt head on this until the messiah arrives, and it's good that way
- ChronosAt a guess, ignore the line if it has text that follows the ++ or -- characters.
- nevetAt a guess, ignore the line if it has text that follows the ++ or now has karma of -1.
- blueheads*
- ChronosWhoops, what did I do wrong there...
- Chronost a guess, ignore the line if it has text that follows the ++
- nevett a guess, ignore the line if it has text that follows the now has karma of 1.
- ChronosUGH.
- ChronosAt a guess, ignore the line if it has text that follows the ++
- nevetAt a guess, ignore the line if it has text that follows the now has karma of 1.
- Chronost a guess, ignore the line if it has text that follows the --
- nevett a guess, ignore the line if it has text that follows the has neutral karma.
- blueoh man, you just keeping polluting the db even more, LOL
- ChronosOh no, I was hoping neutral karma would clean up the DB :)
- blueanyway, dreamreal indicated karma is selfhealing
- blueor well, 'fades away' or whatever
- Chronosdreamreal: Sorry! I'm unintentionally causing chaos! :(
- blue--
- blue---
- nevet- now has karma of -1.
- blue----
- nevet-- now has karma of -1.
- bluewelp
- blueI prefer explicit karma, anyway. like +1 or -1. but I guess that could have other caveats
- dreamrealChronos: the format is subject operation comment
- dreamrealoperations are the inc or dec operators, and consumption for subject is greedy
- dreamrealSo you can do:
- dreamrealC++-- this language sucks!
- nevetC++ now has karma of -2.
- dreamrealOr:
- dreamrealC++++ this language rocks!
- nevetC++ now has karma of -1.
- dreamrealand blue likes using the emdash as a formal writing conceit, so he's like "hey I use the emdsh and it turns into a karma operation waaaaaaaah"
- dreamrealand he's wrong
- dreamreal(BTW, #java's karma works ALMOST like this, without the greedy subject bits because javabot is older code and I don't like it and I'm not going to fix it)
- dreamrealin practice, it's a pretty mild human interface thing: it's a little noisy when it's unintentionally fired, it's REALLY noisy when you're chatting about it
- dreamrealand it's possibly really noisy if you write like an AI and use emdashes all over the place
- dreamrealSo... I might add an option to provide a stupid special exception for squeaky whiners^W^Wspecial morons^Wcases like blue's, where some channels don't apply the emdash if it's surrounded by spaces, which is going to have problems of its own
- jreicherWait—I'm confused—there's a problem with emdashes?
- dreamrealI fully expect a flurry of bug reports about how it's not applied when OBVIOUSLY he meant to apply it, all because the parsing works on tokens and not the things he expects it to work with, and he just never realizes that I actually know how my own damn code works
- dreamrealjreicher: no
- dreamrealbut if you embed emdashes in words as part of natural grammar -- like this -- they turn into karma operations
- nevetbut if you embed emdashes in words as part of natural grammar -- like this now has karma of -1.
- jreicherThat was a joke. :) A really nerdy typographical one.
- dreamrealyou're a nerd
- dreamrealthere IS an upper bound for karma subjects, but it's intentionally pretty gracious
- jreicherI actually don't know how common UTF8 is in IRC clients.
- jreicherOr unicode? Not sure what comes down the wire...
- dreamreal(Sorry, nevet` was running to test the UI, and I need to get a configuration that's more specific for local execution - it needs an MTA!)
- dreamrealemdash in uft-8 is just two dashes - an ACTUAL emdash isn't a trigger
- jreicherI know. :)
- dreamrealso the problem is people FAKING the emdash
- dreamreallike fakers who want the emdash without actually using it
- dreamrealdamn troublemakers
- dreamrealI'm bitching about it because it really is annoying
- dreamrealbut it's late and sunday evening and I have other fish to fry, naming getting the UI working
- jreicherTotally get it, and the annoyance too.
- dreamrealLots of really good fixes today, though: and github! That's another thing he's bitched about, but he's RIGHT There
- dreamrealI set it up to poll, for valid reasons, but supporting push would be a huge win
- dreamrealit's just not super-important for ME, so it's a lower priority, and getting the UI online is the key to getting bytecode.news online for real
- dreamreal(nevet = bytecode.news, the content module is designed for that, and it's all just different views of a single dataset)
- dreamreal'night!
- jreichero/
- bluedreamreal: "writing like an AI" is actually CORRECT. most people are dumb and get it wrong!
- bluewhy am I even telling you that. I'm not the Chicago manual of style
- bluethe really stupid thing is en dash being a disparate character to the hyphen
- bluethe reason I use double hyphens and not em dashes isn't unicode, but rather the fact I'd need to configure my keyboard to produce it, and I'd like to stick to the base ascii set with my keyboard
- jreicherblue: I was taught that endash has a distinct use that sets it apart from hyphen. Not your understanding? (I'm just curious.)
- bluejreicher: this might be the case, but it's a distinction without a merit imho. unlike em dash, they're not visually different enough, and also people commonly use hyphen in exactly those cases you're 'supposed' to use an en dash, like Einstein-Rosen bridge
- bluesimplicity is king, there is no justified use for a character that looks markedly the same to another, and also isn't typable in ascii
- bluein most cases and many fonts, – and - look very similar or nearly identical
- blueyet, having a distinct character like that breaks stuff like search, where you might think they're hyphens, but you won't find them
- bluealtogether, an awfully dumb idea to encode endashes separately to hyphens
- bluewithout merit*
- jreicherI didn't realise endashes could/should be used in that situation. I only learned of their use for number ranges.
- dreamrealNot only are you not the manual of style, you're not S&W either, and I'm a professional writer, I know this stuff better than you think
- dreamrealen- vs em-dash is a *typesetting* thing
- dreamrealfor typesetting kerning, it makes sense. But we're doing DOING typesetting - we're TYPING. You don't manually align or justify your stuff on IRC; why would you? The em-dash is a similar, although more meaningful, affectation.
- dreamrealen- vs em- is *typesetting* and *kerning*. It's right there in the name. The difference is in width; one is the width of an n, the other the width of an m. In monospace they're the same.
- dreamrealit's prevalent in human writing because we learn to write by learning to READ, and much print in human history was typeset - and did I mention that em- vs. en- was a typesetting artifact? I'm pretty sure I did. And lo, we learn to write by following those who used em- vs en- in specific circumstances because of typesetting and we inherited rules that don't actually matter.
- dreamrealIt's like "why do we cut off the ends of pot roasts, mother?" as the old joke goes
- dreamrealmother goes "I don't know, my mother did it" so the girl asks grandmother, who shrugs and says "*I* cut off the ends of pot roasts because my pan was small and they wouldn't fit, I don't know whyyour mother does it, her pan's bigger than mine was"
- dreamrealall of this to say: I don't really care if HUMANS use em- or en-dashes, or when, or if they're consistent about it or not - humans do learn to write by learning to read, and intent is more important than presentation. Thus we don't go about saying "you used two spaces when one is correct" all the time, or viciously corecting spelling when we can. It only shows up HERE because of karma, which creates
- dreamrealan artificial clash when you use the affectation.
- bluedreamreal: the point holds, and has been pointed out by others here. Your bot breaks expectation: having a flowing conversation is WAY more important than a karma feature, which is an addon. this unexpected behaviour makes the software dumb. software should have undumb defaults
- blueno amount of configuration shenanigans is gonna change the point
- dreamrealI agree, but we disagree that the default is dumb, here, because IRC is *not* a typical human conversation. if it were spoken, IRC would be utter madness, because conversational threads are not maintained; this is an artificial albeit understandable desire on YOUR part.
- blueit's only artificial if you live in an ivory tower
- dreamrealI get it: the emdash separation feature is actually an acceptance criterion for #41. Your point is being addressed, even though I find it overly restrictive.
- dreamrealBut I'm not going to pretend it's anything but an affectation on your part.
- blueit's not an affection at all. I've been using double dashes in IRC, and generally online, for just about forever. YOU are telling me to change how I write to not trigger your dumb bot
- bluean affectation it would be, were I to use this style EXTRA to annoy you
- bluein fact I've already consciously avoided using them in this conversation, and this annoys me to no end
- bluedouble dashes are a pretty common replacement/representation of emdash online (in mailing lists, too), and pretending this is someone else's problem isn't a good answer
- dreamrealmein Gott
- bluedo better!
- dreamrealYou're like a dog with a bone on this. With all due respect: shut up. I've already filed an issue on it. You'll be able to change the behavior as you wish. You're literally straining at a gnat, all because you've cargo-culted a writing affectation.
- blueit's not an affectation! I disagree with the premise
- dreamrealAnd you can use them; this is IRC. It's pretty normal for conversations to be trivially interrupted.
- dreamrealYou disagree with... how em-dashes CAME TO BE and WHY? With all due respect, that IS stupid.
- dreamrealThey are TYPESETTING. It is IN THE NAME.
- bluewait what
- bluethe point above was about en-dashes, not em-dashes
- blueare you even reading
- dreamreal"double dashes" are an attempt to use em-dashes in forums in which they do not exist.
- blueit's not an attempt. it's a representation since keyboards typically don't have them
- dreamrealit's a freaking hyphen. A short horizontal line. That's what it is. If you were writing with pen, you'd make the line and move on.
- dreamrealOf course they don't, because they are TYPESETTING.
- blueyes but I'm not writing with a pen
- dreamrealYou're not setting type either!
- blueI'm writing online, and your bot shouldn't interfere with dumb garbage entries
- bluethat's like the first rule of bots, don't be annoying
- dreamrealSo, uh, I have a question
- dreamrealif you're looking at a traffic stop, going "you know, that needs a light" and the local government goes "yes, that needs a light" and puts one in, do you still complain about the light being needed after it's been acknowledged, maybe even installed?
- bluethis is NOT A GOOD COMPARISON, traffic lights are basics, the bot's karma feature isn't
- blueit's a playful stupidity, and as soon as it starts to be annoying, it's not playful and just a stupidity
- dreamrealThe analogy holds: #41 exists, your feature is an acceptance criteria, and you won't shut up about it
- blueno, the analogy is garbage
- blue#41 doesn't solve it
- bluethe defaults are still dumb
- dreamrealYou know, I'm removing the feature as acceptance criteria now
- dreamrealjust to annoy you
- bluethat's fair, it's your software
- dreamrealyou "won the battle" and yet you can't accept it, you demand philosophical agreement even though the intent is to give you everything you asked for
- dreamrealNow I'm gonna dig in my heels just to annoy you because you're annoying ME
- blueI didn't "win the battle", I don't want to configure EVERY INDIVIDUAL channel on discord to not use karma
- bluethis will still end up with me removing the otherwise very useful bot
- dreamrealBloody hell I SET IT UP SO THAT IT WOULD HAVE GLOBAL DEFAULTS
- bluewhich is just a pity
- dreamrealYou won the fucking battle SHUT THE FUCK UP ABOUT IT
- dreamrealNO. MORE.
- dreamrealI know you have like some kind of mental block that says you will never ever ever ever ever ever ever ever look at your premises and say "you know, the other guy might have a point, I'm carrying this on past the point of absurdity" so just make the decision that everyone else is wrong but you're going to have some grace and just sit in your superiority for a while in silence
- dreamrealin beit hillel and beit shammai you'd never accept the other to be considered as a viable alternative, whichever one you ended up in
- dreamrealbut this is not a good way to be
- bot[jottinger/bytecode.news] New issue #43: Production deployment: Docker Compose, reverse proxy, MTA, and documentation - https://github.com/jottinger/bytecode.news/issues/43
- dreamrealso just to clarify: #41 actually addresses global and per-channel defaults for operations. I haven't decided on a default for karma, specifically, yet, for reasons;
- dreamreal1. It's not all that important
- dreamreal2. the space separator actually does break a normal interaction. If I use tab completion *at the front of a line* I get a rational separator, and that separator gets discarded properly:
- dreamrealdreamreal: ++
- dreamrealhowever, if I hit tab *in a line* the separator does not show up:
- dreamrealdummies like dreamreal -- they are stupid [note: I used tab completion for my nick here]
- nevetdummies like dreamreal now has karma of -1.
- dreamrealnote: that's INTENDED to be a karma operation! And it is! But the flag would disable that.
- dreamreal(the reason my first karma operation didn't register is because my nick is intentionally ignored as a subject. "Dummies like dreamreal" is not a direct match, so it's not ignored.)
- dreamrealso issue 41 has a lot of configuration in it: system configuration for super-admins, oepration-level controls like "enable karma" and defaults (including, BTW, the emdash thing as an acceptance test), *and* operational controls at the provenance level, so you can control it for specific channels. A global configuration could be different than a channel configuration.
- blue15:26 < dreamreal> dummies like dreamreal DASHDASH they are stupid [note: I used tab completion for my nick here]
- bluethis is EXACTLY the point of contention RIGHT THERE
- blueI did NOT parse that sentence mentally as a karma operation DASHDASH but as a normal sentence
- dreamrealSure. You didn't. You're not the bot.
- blueyes, and the bot's interpretation is unnatural and dumb
- blueask ANYONE and he'd that you that's a normal sentence DASHDASH not a karma operation
- dreamrealI get it. Struggling to care, because it's a bot. It's not supposed to be natural.
- bluethat's not an argument. it's not supposed to be natural, it's supposed to be useful
- dreamrealDude, with all due respect, you do not want to say that. I've been on IRC for nearly 30 years.
- blueand ME since 95!
- bluethat's basically the same amoutn of time. you're not gonna get me on argument from authority here
- ChronosI'm one of the dummies too, and know that is 1/2 the battle!
- dreamrealSo you know the danger of selection. DOn't make that dare. You're saying "you can't find people to validate the behavior you just said you can validate through usage" and, uh, I can indeed validate that behavior through usage, which is why I made the assertion in the first place. You've made your point. You seem to be struggling to accept that others disagree even though you made your point
- dreamrealsuccessfully.
- dreamrealYou are being an asshat. Please stop.
- blueI'm not, but I'm gonna drop it not because I think I should, but because you're forcing me, note that
- dreamrealI'm definitely putting it up on my quotes board.
- ChronosPersonal anecdote: I've seen lots of IRC bots support the concept of karma, but have never, ever found the karma feature useful in any of them.
- ChronosTherefore, I'm not sure the current subject matters. ;)
- blueI don't find it that useful either. In my personal experience, karma should be indirect anyway, by using ^ following the person you agree with
- bluethat doesn't allow for karma for concepts, but who cares. the whole idea of hindu karma is about living beings, not concepts, anyway
- ChronosI guess it could be useful for determining things like, "Which of these two good options has the highest karma?" Check the karma of both, and off you go?
- blueyeah, except no one ever did that... looked up the karma value of two things on irc to determine a course of action
- bluehowever: karma for people could be interesting to map out the territory in a new channel
- ChronosI've never seen anyone do that either, though perhaps they queried the bot directly, rather than doing it in a main channel.
- blueit could indicate a matrix of acceptance/approval/merit that transcends ophood
- blueDASHDASH is useful
- bluein which case, it would be useful, because people on irc sometimes abuse ophood to argue from authority
- Chronosdreamreal: Is nevet intended as a "general purpose" IRC bot? Or is it more specific to Java specifically? Or computer programming languages?
- dreamrealit's for information systems. It's leaning towards programming because its users and authors tend to be programmers - thus the factoid systems have things like "urls" and "maven coordinates" as primary aspects. #java and javabot (and purl, from #perl, #python, and others) were primary inspirations.
- dreamrealbut purl and javabot are literally designed as infobots, and I see "infobot" as a second-order consequence.
- ChronosActually, hmmm... I would say the way karma currently works is actually somewhat incompatible with channels whose topic is programming languages, since the increment and decrement operators are somewhat common.
- ChronosFor example, you might show some example code: for (int i = 0; i < 100; i++) { /* do something */ }
- nevetFor example, you might show some example code: for (int i = 0; i < 100; i now has karma of 1.
- ChronosFor example, you might show some example code: for (int i = 0; i < 100; i--
- nevetFor example, you might show some example code: for (int i = 0; i < 100; i has neutral karma.
- Chronos(Just doing some clean up there.)
- dreamrealkarma, in this case, is a toy. And karma's been around in programming channels since the very early days of purl; yes, there are misfires like that. but since IRC isn't a conversation that *can be interrupted* it's generally been seen as an artifact and not something that really matters; you might as well complain that you're knee-deep in conversation when someone joins or parts a channel.
- dreamrealDon't bother cleaning up, there's no need.
- dreamrealkarma records are not *expensive* in any sense of the word.
- blue(except you can filter out parts/joins)
- dreamrealblue: okay, fine. Let's pretend you're not being officious: let's ignore parts and joins and splits; how about someone joins INVISIBLY and says "hi all, how's it going" in the middle of a conversation.
- ChronosJoins and parts are one of my pet peeves about IRC, because they're so frequent (almost amount to spam). Fortunately, my IRC client "collapses" all joins and parts.
- bluedreamreal: then that's a USEFUL tidbit of info. you've failed to demonstrate how that bot reaction is useful in any universe
- dreamrealOddly enough, blue, you just interrupted an exchange taking place between chronos and me - are you not offended at yourself?
- bluenope
- blueyou're equating horses to donkeys
- dreamrealBy your own metric you should be, donkey.
- ChronosI don't like outright filtering out joins and parts, because I don't like talking to people that have parted. So I typically ignore the collapsed joins/parts when "just browsing" a channel conversation, and pay more attention to them when I'm actively participating in a channel.
- bluethe bot repeating that isn't doing anything useful, by any metric
- dreamrealA lot of that is just an artifact of being on IRC.
- dreamrealhumans learn how it works, they adjust IT or what they expect, we all somehow survive, not being incinerated by information like four lines of joins/parts, or - as known in the bad old days when connectivity was apparently over a phone line over the atlantic - 50 lines of joins/parts.
- blueI feel at this point you've looking for reasons to justify this, and I'm not gonna change my mind, so this is going to be one of the sad rare moments we'll have to do the dumb modern thing of agreeing to disagree
- dreamrealTBH I don't even understand what the problem is: the issue exists, I'm going to address the behavior, you're still talking about it.
- * Chronos wishes IRC wasn't (still) "constant connection oriented," but totally understands why it (still) is.
- blueso will it be possible to deactivate it for an entire discord server, dreamreal?
- dreamrealChronos: slack is right there, buddy :D
- blueand who will control that, the server admin?
- Chronosdreamreal: Heh! I do use Discord, but I'm under no illusion that it won't keep walking down the enshittification path.
- bluethat's impossible, Chronos
- bluediscord was already created in a state of absolute debauchery
- ChronosHeh.
- dreamrealblue: I doubt it, because of the nature of discord connections: it's not "a discord server," it's discord. It might fall out of the provenance stuff, which is built off of URLs: I just haven't tried it yet.
- ChronosI'm a (happy) IRCCloud subscriber, which solves a lot (not all) of the "constant connection oriented" design.
- blueso how would I disable it for my entire disocrd server + one channel here? run my own nevet? that was what I was trying to avoid, also the code isn't open source atm
- dreamrealIt'll be controlled by admins; there're multiple levels of admins, but operations would be admins. The admins are NOT by provenance though.
- * Chronos is one of those rare people that doesn't mind paying for stuff (gasp!)
- blueya I don't mind paying for nevet either
- blueit if creates value, why not
- dreamrealblue: that's the thing; discord doesn't HAVE servers
- dreamrealit has guilds
- blueMEIN GOTT
- dreamrealyou connect TO discord and get the guilds
- blueit's the same thing, NO ONE SAYS gilds
- blueit's just hteir dumb technical docs use guild_id
- bluebut it's a discord server, in universal parlance
- Chronosblue: The recent ID / face scan stuff from Discord was a "good reminder" for a lot of people.
- dreamrealRight. I know what you mean, and I'm describing WHY it's possibly (POSSIBLY) difficult - it may fall out of the provenance mechanism, but I haven't tried it. We don't have "connect to this, and tha, and the other" in discord.
- dreamrealin IRC we do, in SLACK we do.
- blueChronos: yes. but also, you do need an id to get into an adult movie theatre, discord is just doing the same...
- blueyou also need an id to buy liquor or porn magazines, I never got the argument why those restrictions ought not to apply online
- dreamrealblue: in any event, you're still tilting at windmills: I do not know, because I have not tried, and specifying guilds in provenances is a DRAG, I hate it, and it's a consequence of how discord works
- bluedreamreal: ok use case. I want to use nevet, NOT deploy it on my own, and either disable the karma op entirely for my discord server and irc channel, or just the emdash thingy. will THAT be possible or not? simple yes no
- dreamrealI don't see a reason it ABSOLUTELY COULD NOT work with tiered permissions, but that's just work, and I haven't done it, and nobody's paid me to do it so I'll get to it when I get to it
- dreamrealof course
- dreamrealyes, a thousand times yes, and that's been the case since you raised the issue in the first place and I've said so
- bluebecause again, #41 talks about "per channel", which means I'd need to configure it for every discord channel on my server
- Chronosblue: I don't really have a problem with the "prove you're an adult to access adult spaces" idea in general, but when it comes to online/tech companies like Discord, I simply don't trust them to keep that kind of sensitive data secure.
- bluealternatively, it talks about "universal", and I'm not a nevet admin
- ChronosI'm not sure how many more hacks need to happen for people to understand they should never, ever share that kind of sensitive data, unless access is absolutely required.
- dreamrealblue: nevet isn't a PAAS :D
- blueChronos: so incidentally, I had this conversation in another channel with other people. the concern was the same -- why should we provide our ids to some online shady illicit websites
- nevetChronos: so incidentally, I had this conversation in another channel with other people. the concern was the same now has karma of -1.
- Chronosblue: When I go to the liquor store, an employee briefly glances at my ID — the details aren't stored on some computer system that can and will get hacked, eventually.
- Chronosnever is a bot that works for both IRC and Discord?
- bluemy idea was that you could purchase offline an gift card, in cash if you care, and then use it online
- bluea gift card*
- dreamrealChronos: yes, it is connected right now to slack, discord, and irc
- Chronosblue: In a nutshell: It's a security issue. It's simply not a good idea to share an ID or face scan with Discord, because it's not safe or secure, no matter how much BS they spew about it being safe.
- dreamrealand has a bridge set up to mirror a channel between irc and discord (post something on one, the other one gets the same content)
- blueChronos: yes, and my idea avoids that
- dreamrealChronos: nevet means "stream" and it's designed to be a multifaceted consumer and producer of information
- dreamrealagh, blue is correcting my craptastic hebrew: "sprout"
- Chronoss/never/nevet/
- Chronosblue: I'm somewhat confident The Powers That Be could "put together" the data points on that path and still expose your identity.
- dreamrealblue: #41 has been updated to capture specialization of configuration, so now if you can specify the guild for discord you can in fact generalize configurations across guilds
- dreamrealit's not coded yet (again, volunteer here) but the feature's captured
- ChronosIt's fine with me if some people want to take the risk. For me, the answer is easy: I won't share my ID or face scan. If that means I'm limited to the spaces I can talk — or even limited to IRC — so be it.
- dreamreallargely because when it was expressed it wasn't issued from on high
- Chronosdreamreal: Oh, very neat. Did you write nevet?
- dreamrealyes
- dreamrealthus the github for it is jottinger/bytecode.news :D
- ChronosVery neat. I like the idea of being able to link disparate chat systems as well.
- blueyes, that was my idea
- dreamrealthe mirroring was, yes
- Chronosdreamreal: Nice! :)
- dreamrealnevet's initial design was ALWAYS to connect to discord, irc, slack, mattermost, matrix, etc. etc., anything I could connect it to
- ChronosKind of like the bot version of Pidgin
- dreamrealmattermost and matrix are still "todo" - I only have one mattermost connection and there's no way nevet will legally be allowed to connect to it
- dreamrealyes, very much, although the point of nevet is information capture and not actual communication
- dreamrealone of the previous versions' features was "summarize what's been going on" via AI
- blueI'm an early adopter, I have nevet serving at one of my projects
- dreamrealit didn't analyze anything without being asked to, but the idea was that it would go back 100 lines on a given information stream, time delimited, and say "oh, man, that chronos guy is going OFF on how much he really likes ponies these days"
- blueonce it can reliably do github via webhooks, I'm gonna turn off the built-in discord thingy for that and replace with nevet's
- Chronosdreamreal: Information capture? You're one of them! You're working for The Man! ;)
- bluethen I would get my lifelong dream of informing both irc and discord at the same time
- dreamrealblue: incidentally, when I'm not fending off peoples' ridiculous requests via karma, I'm working on spinning up the UI - which is the MAIN blocker for github webhooks
- Chronosponies++ Ponies are awesome!
- nevetponies now has karma of 1.
- dreamrealonce the UI's up, webhooks get a lot easier
- bluewait what
- dreamrealChronos: for the record, I work for the man for real
- bluein what universe is the UI related to endpoints
- Chronosdreamreal: What are you using for the UI? If you don't mind saying.
- Chronosdreamreal: Given the owners of the company I work for, I probably do too, just indirectly.
- dreamrealblue: webhooks require exposed endpoints. The UI = exposed endpoints. nevet as it's deployed RIGHT NOW exposes NOTHING to the outside world outside of the connections it's using.
- blueI fear we have a massively disparate conception of UI
- dreamrealChronos: kinabalu wrote a UI in next.js, probably with claude or perplexity :D
- blueyes and it SUCKS
- blueobviously he should taken something else! not saying what
- dreamrealblue: "the ui" in this case is the blog. Right now as deployed, nevet exposes NO ports to incoming traffic.
- dreamrealblue: well, it's open source, you're welcome to contribute better... the endpoints are documented.
- blueif I send you a primate PR, you'll merge it? where would I put it?
- bluethere's currently just 'frontend' and it's that nextjs app
- Chronosdreamreal: Ah, neat. (I'm not personally anti-AI, so I have no problem with AI generated code — as long as it's been properly reviewed, of course.)
- dreamrealChronos: I just want the UI to work
- Chronos"primate PR" — love it! :)
- dreamrealblue: Hell, put it in primate-frontend. But I need to get the frontend deployed, first, because that means the basic services the front end NEEDS work. The goal is to have nextjs.bytecode.news, primate.bytecode.news, react.bytecode.news, struts.bytecode.news ... and bytecode.news routes to whichever one happens to be best.
- bluek, I'll see what I can do. you just need a blog for now?
- dreamrealThat way, if ANYONE goes "hey, I know wicket really well, why isn't the front end in wicket" they can write one in wicket and have a 1:1 comparison point.
- dreamrealThe goal is to support service-blog, yes.
- ChronosOh, I thought "primate PR" was a joke about it being a PR made by a person rather than an AI — did I interpret that wrong?
- dreamreal~primate
- dreamrealprimate
- dreamrealgrrr
- dreamrealfactoids got reset, hold on
- ChronosI still have a pretty big factoids DB from when I was an op in EFNet #c in the 1990s and running channel bots :)
- dreamrealprimate=<reply>Primate is an opinionated, largely language-neutral web framework. It supports multiple front ends, backends, and runtimes, with a tendency towards to the javascript ecosystem.
- nevetok, dreamreal: updated primate.
- dreamrealprimate.url=https://primate.run/
- nevetok, dreamreal: updated primate.
- dreamrealprimate.seealso=react,angular,vue,svelte,javascript,typescript,webassembly
- nevetok, dreamreal: updated primate.
- dreamrealprimate
- nevetPrimate is an opinionated, largely language-neutral web framework. It supports multiple front ends, backends, and runtimes, with a tendency towards to the javascript ecosystem. URL: https://primate.run/ See also: react, angular, vue, svelte, javascript, typescript, and webassembly
- dreamrealreact=<reply>React is a typescript web crap thingamabob that dreamreal avoids like the plague because it's UI.
- nevetok, dreamreal: updated react.
- dreamrealprimate
- nevetPrimate is an opinionated, largely language-neutral web framework. It supports multiple front ends, backends, and runtimes, with a tendency towards to the javascript ecosystem. URL: https://primate.run/ See also: react, angular, vue, svelte, javascript, typescript, and webassembly
- dreamrealhmm.
- dreamrealI think we finded a bug!
- dreamrealChronos: if you have an old DB of factoids, I'd be happy to migrate useful bits out
- dreamreal(It's supposed to show "~react" there because it's an existing factoid, in teh seealso section.)
- ChronosAwww. And here I thought "primate PR" was so clever!
- dreamreal:D
- Chronosdreamreal: The old EFNet #c factoid DB is... low quality... but I can dig it up
- dreamrealit may not be worth it, plus it's C
- blueChronos: Primate is my framework, I'm the author
- ChronosAnd, oh my goodness, was maintaining a big EFNet channel in the 1990s+ difficult. EFNet never did give us proper tools for channel administration.
- dreamrealfoo
- blueI just usually don't capitalise its name when I talk about it
- dreamrealfoo=bar
- nevetok, dreamreal: updated foo.
- Chronosblue: Oh, neat!
- dreamrealfoo.seealso=baz
- nevetok, dreamreal: updated foo.
- dreamrealbaz=bletch
- nevetok, dreamreal: updated baz.
- dreamrealfoo
- nevetfoo is bar. See also: baz
- dreamrealfoo.seealso=baz,quux
- nevetok, dreamreal: updated foo.
- dreamrealfoo
- nevetfoo is bar. See also: baz and quux
- blueI honestly have no idea what he did there with nextjs... it's sending requests to the actual backend from the frontend? that seems awfully ineffective
- dreamrealThat's supposed to be "~baz and quux"
- dreamrealblue: he probably had perplexity or claude do it
- blueI'm just gonna pretend I didn't see that code and ask you what you expect of a UI, dreamreal
- bluebecause I feel that code is a dumpster fire
- dreamrealI dunno, you UI people are ridiculous and bonkers, I just wants it to work
- bluebeyond being in nextjs, that is
- dreamrealblue: I'd ignore the code, the endpoints are documented (and there's openapi generated for it too)
- bluealrighty. for your information, I'm likely to proxy it to /api or so
- dreamrealdon't care as long as I know how to deploy it
- bluethat is generally of no concern of yours, but it allows the actual backend to not be hardcoded into the frontend paths
- dreamrealIf you have a requirement that changes service-blog, that's fine too, I just need to know and teh documentation HAS to be kept up to date
- dreamrealthis is a new API, so it's not expected to be hardened yet
- blueI'm not gonna touch the openapi def just work against it. if it changes, it changes
- blueI'll probably version it though
- bluethat would be nice, would it not?
- dreamrealI'm just saying if you find holes, that's not going to surprise or offend me
- dreamrealdepends on how: if you're going to version it, it'd be mapped as a selector
- bluedo you have a /version or so?
- dreamrealas a concept, I'm fine
- dreamrealno
- bluenvm, I'll look it up myself
- bluemight be a case of YAGNI
- bluehttps://github.com/jottinger/bytecode.news/blob/main/docs/api-reference.md
- bluethis is all I need to know?
- dreamrealif we version the endpoint, it's going to be with header versioning
- dreamrealthat doc is supposed to be, yeah
- bluek
- bluedreamreal: where is the openapi yaml/json?
- dreamrealIt's generated live on deployment, I don't store it, I need to do that, huh
- bluej
- bluek*
- bluewell, it's time to revive the openapi module, dreamreal
- dreamrealrevive...?
- dreamrealopenapi is baked in, it just doesn't generate an artifact, because openapi is dumb
- blueyes. I never really finished it. the idea is to do `npx primate openapi defile.yaml --target=python`, and it generates you a client in the target language. default would be TS
- nevetyes. I never really finished it. the idea is to do `npx primate openapi defile.yaml now has karma of -1.
- bluedeffile.yaml*
- dreamrealyeah. kinabalu actually has some code somewhere that generates the openapi artifact as part of test output, that's actually really useful and I need to integrate it.
- bluethe client would be generally typed. so client.posts.year(...).month(...).slug(...).comments.get()
- blue-> would call `GET /posts/{year}/{month}/{slug}/comments` using the bearer token the client was init'd with
- bluedepending on the openapi yaml, path params can be typed (numbers). that would be translated to a type in the target language, if the language is typed, that is
- blueI mean number | string | array, etc.
- blueI imagine that since java is typed, the openapi def would include that
- blueand we can actually runtime-verify it in TS, which is superneat
- dreamreal*nod*
- bot[jottinger/bytecode.news] New issue #44: Factoid see-also summary does not decorate known factoids with ~ - https://github.com/jottinger/bytecode.news/issues/44
- * blue checks if kotlin has a wasm target
- blueoh wow, it even has wasi, that's sweet
- dreamreali's an utter drag to work with, though
- blueneeds gradle?
- bluethat's fine by me
- dreamrealno, the runtime libraries are different
- blueapparently they have a node and deno examples
- blues/a//
- dreamrealI use kotlin in the JVM so I have the full JVM ecosystem - the multiplatform kotlin stuff can't rely on the JVM, so there's a whole OTHER platform-neutral library ecosystem
- bluedreamreal: btw: a sed operation in nevet would be awesome
- blueah, gotcha
- dreamrealsed would be easy, too, file an issue, but mein Gott is it noisy :D
- dreamrealhmm, maybe that's another thing: a throttle
- dreamrealrunning a test now to work out the factoid fix AND store openapi output in the repo
- dreamrealheh, year, month, date are strings in the open api :D
- dreamrealI know why, but it's still funny
- bot[jottinger/bytecode.news] New PR #45: Fixing factoid expression and adding openapi artifact - https://github.com/jottinger/bytecode.news/pull/45
- dreamrealfoo
- nevetfoo is bar. See also: ~baz and quux
- dreamrealWorking!
- dreamrealbaz
- nevetbaz is bletch.
- dreamrealquux
- dreamrealperfect.
- dreamrealfoo.forget
- nevetok, forgot foo.
- dreamrealbaz.forget
- nevetok, forgot baz.
- dreamrealquux.forget
- dreamrealblue: main now has docs/openapi.json
- bluethank you!
- dreamrealthe guy who wrote the nextjs frontend showed the way :D
- bluethis is REALLY nice: schema: { type: string, format: uuid }
- bluethis means the generated client can *runtime-verify* that the given param is a valid uuid
- bluethe server will obviously also have its json parsing, but this should fail early
- dreamrealuuidv7 internally, too, BTW
- blueyeah, technically this isn't ocmmunicatable via openapi I think
- bluethe validation will be against a common subset of v4 and v7
- bluethey're very similar, anyway
- bluethey differ mostly in how values are created -- not their format
- nevetthey differ mostly in how values are created now has karma of -1.
- dreamrealyeah, that's why I said internally :D you can't examine a uuidv4 and v7 and tell them apart without knowing their relationship
- bluethe only difference is the 13th character: it's 4 respectively 7
- bluedreamreal: you can, as I just said
- bluethe 13th character is set
- dreamrealIs it? oh, nice
- bluev4: e4ddfa5d-f953-42a9-8f38-f58f59569e87
- bluev7: e4ddfa5d-f953-72a9-8f38-f58f59569e87
- dreamrealI don't pay attentin to the crap you say!
- dreamrealbut yeah, I guess that makes sense
- blueso to validate both, you need to allow 4|7 for the 14th character
- dreamrealnot really relevant for downstream uses, though, I don't think nevet accepts external UUIDs to be generated
- blueit's not about accepting, it's about verifying it before it goes out to nevet. if it's not a valid uuid, there's no reason to send the request
- dreamreal*nod*
- bluedreamreal: I still got the openapi collection running, e.g.: https://openapi.primate.run/spec/anthropic.json
- blueI'm gonna add nevet.json.. or maybe I'll call it bytenews.json ?
- dreamrealbytecode.news is the codebase, nevet's just one instance
- bluehow would you generalyl call the openapi def file?
- dreamrealWhat do you mean? Like, at what URL would it be exposed in a running instance?
- bluethere's quite a few of them:
- bluehttps://openapi.primate.run/manifest.json
- dreamreal${servername}/v3/api-docs is the endpoint that's exposed
- blueI want to add an entry for your stuff
- blueI'm just looking for a proper name for it
- dreamrealI'd call it bytecodenews if it can't handle a period, or bytecode-news
- blueit's generally quoted, so dot would be ok. I can also just simply call it after the github repo name, so jottinger/bytecode.news.json
- dreamreal*nod*
- bluehm
- bluedo you intend to open the repo at some point? I just realised this isn't gonna work with a private repo. I might need to put in the file manually
- dreamrealProbably; streampack is, I guess I was thinking I'd make sure this was more hardened than it is before I opened it up
- blueI can hardcode it for now
- dreamrealthe log sanitization has already been put in, and that was a pretty big aspect of that
- dreamrealbut I need to make sure the rest of it's good too
- blueheh: (node:149949) [TAG_RESOLVE_FAILED] YAMLWarning: Unresolved tag: tag:yaml.org,2002:float at line 21392, column 28:
- blue(this is unrelated to your openapi, it's someone else's)
- dreamrealI'm working on the deployment stuff, so you will eventually be able to spin up a local instance with docker compose with working backend and db
- dreamrealthe front ends will be deployed in docker, too, eventually
- bot[jottinger/bytecode.news] New issue #51: Deployment guide documentation - https://github.com/jottinger/bytecode.news/issues/51
- bot[jottinger/bytecode.news] New issue #50: Nginx config examples for multi-frontend deployment - https://github.com/jottinger/bytecode.news/issues/50
- bot[jottinger/bytecode.news] New issue #49: Backend Dockerfile and docker-compose service - https://github.com/jottinger/bytecode.news/issues/49
- bot[jottinger/bytecode.news] New issue #48: Frontend Dockerfile and docker-compose service - https://github.com/jottinger/bytecode.news/issues/48
- bot[jottinger/bytecode.news] New issue #47: Externalize Next.js API rewrite target - https://github.com/jottinger/bytecode.news/issues/47
- bot[jottinger/bytecode.news] New issue #46: Externalize CORS allowed origins to env var - https://github.com/jottinger/bytecode.news/issues/46
- bot[jottinger/bytecode.news] New PR #52: Updating CORS - https://github.com/jottinger/bytecode.news/pull/52
- dreamreal~glot.io.url=https://glot.io/new/java
- dreamrealglot.io.url=https://glot.io/new/java
- nevetok, dreamreal: updated glot.io.
- dreamrealglot.io
- nevetURL: https://glot.io/new/java
- dreamrealideone.url=https://ideone.com/
- nevetok, dreamreal: updated ideone.
- dreamrealideone.seealso=glot.io
- nevetok, dreamreal: updated ideone.
- dreamrealglot.io.seealso=ideone
- nevetok, dreamreal: updated glot.io.
- dreamrealglot.io
- nevetURL: https://glot.io/new/java See also: ~ideone
- dreamrealglot.io=an online code runner, much like a simple IDE, useful for demonstrating simple code.
- nevetok, dreamreal: updated glot.io.
- dreamrealideone=an online code runner, much like a very simple IDE, useful for demonstrating simple java code.
- nevetok, dreamreal: updated ideone.
- dreamrealglot.io
- nevetglot.io is an online code runner, much like a simple IDE, useful for demonstrating simple code. URL: https://glot.io/new/java See also: ~ideone
- dreamrealChronos: ^^^
- dreamrealChronos: compare this to how javabot does it :D
- dreamrealit's more verbose but MUCH better targeted
- dreamreal...and since nevet isn't tied to IRC, if you were talking to it over slack or discord, you can now do !glot.io and get the factoid
- dreamrealfactoid search runner
- dreamrealhmm, I need to remember how to do the searches
- dreamrealsearch runner
- nevetSearch for 'runner' matched: ~glot.io and ~ideone
- dreamrealwell, THAT was simple :D
- dreamrealsearch ide
- nevetSearch for 'ide' matched: ~glot.io, ~ideone, and ~pep 3
- dreamrealidea=<reply>IDEA is one of the "big two" Java IDEs, and probably the most popular of them. Has a free and commercial edition, and has capability to work for many, many, MANY languages.
- nevetok, dreamreal: updated idea.
- dreamrealeclipse=<reply>Eclipse is one of the "big two" java IDEs, and is generally free, although there are commercial variants. Built on OSGi, it's got an incredibly large ecosystem.
- nevetok, dreamreal: updated eclipse.
- dreamrealidea.seealso=ide,eclipse
- nevetok, dreamreal: updated idea.
- dreamrealeclipse.seealso=idea,ide
- nevetok, dreamreal: updated eclipse.
- dreamrealidea.url=https://jetbrains.com/idea
- nevetok, dreamreal: updated idea.
- dreamrealeclipse.url=https://eclipseide.org/
- nevetok, dreamreal: updated eclipse.
- dreamrealnetbeans.url=https://netbeans.apache.org/
- nevetok, dreamreal: updated netbeans.
- dreamrealnetbeans.seealso=ide,eclipse,idea
- nevetok, dreamreal: updated netbeans.
- dreamrealnetbeans=generally the redheaded stepchild of IDEs for Java, now managed by apache since no-one else was willing to adopt it. Capable but an also-ran.
- nevetok, dreamreal: updated netbeans.
- dreamrealnetbeans
- nevetnetbeans is generally the redheaded stepchild of IDEs for Java, now managed by apache since no-one else was willing to adopt it. Capable but an also-ran. URL: https://netbeans.apache.org/ See also: ide, ~eclipse, and ~idea
- bot[jottinger/bytecode.news] New PR #54: Updating docker-compose for development porpoises - https://github.com/jottinger/bytecode.news/pull/54
- bot[jottinger/bytecode.news] New PR #53: Fixing Next.JS base url - https://github.com/jottinger/bytecode.news/pull/53
- dreamreallots of fixes so far today, none too far reaching but they're important
- bluedreamreal: `client.posts.year(2020).month(1).slug("hi").comments.get();`
- bluethat's the shape in TS. year and month will unfortunately be verified as strings. what type are they in the kotlin code?
- blueI expected "number" in the openapi... but it's "string"
- bluewhere is the path mapping located in the code, could you point me to it?
- dreamrealhttps://github.com/jottinger/bytecode.news/blob/69dda17cd6e4188bc16371bb4c4c8cf26e17efa6/service-blog/src/main/kotlin/com/enigmastation/streampack/blog/controller/PostController.kt#L79
- blueah
- blueservice-blog/src/main/kotlin/com/enigmastation/streampack/blog/controller/PostController.kt: @GetMapping("/posts/{year}/{month}/{slug}")
- blueya, thx
- dreamrealThis API is very raw and very new so if we need to adjust it we can
- dreamrealI'm not opposed to migrating that to a proper numeric type
- dreamrealand honestly... where's the day
- blueyes. personal take: make year, month and day numeric.
- bluemy openapi client will benefit from it
- dreamrealhold on, investigating
- blueI'm fine with Int. the outputter will likely make a javascript `number` of it, which is fine. openapi v3 technically has a min-max thingy, which years and particularly months and days could immensely benefit from
- bluemonths should definitely be min 1 max 12
- dreamrealhold on, still investigating impact
- bluedepending on how kotlin parses Int, you could still accept 01
- blueor a bespoke type, would be perfect
- dreamrealgive me a few minutes, yeesh
- dreamrealI can have this fixed real soon but I need to make sure the impact is managed
- blueit's not my fault you're SLOW!
- blue(to anyone else: this is in jest. dreamreal often prides himself on reading super fast, and will expect me to finish reading things he wrote within quantum time)
- dreamrealI'm almost done, JACK HOLE
- blueclock's tickin
- dreamrealcompiling for tests now, and need to do a full compile to regen the openapi endpoints too
- dreamrealbut that's a good catch
- dreamrealI noticed it earlier but it's UI-related so I didn't REALLY care, but I figured if it was significant enough someone else would pipe up and tell me to care
- blueI AM that someone
- dreamrealyes
- bluelooking like I'm snugging in into the shammai role here
- dreamrealYou've definitely never left the shammai role, except shammai at least tried to understand hillel some
- bluego on. tell me that every bride is pretty on her wedding day EVEN IF SHE'S UGLY
- bluehave me roll my eyes
- dreamrealIt's one thing to pretend reality is malleable, it's another thing altogether, and a negative one, to bother SAYING "you know she's a troll, right?"
- blueoh, that's below me
- blueI'll still have that thought, likely. which is probably just as bad, thoug
- bluethough*
- dreamrealyes, and that's the point hillel was making
- blueyes
- dreamrealokay, main is updated, as is the openapi spec
- blueSWEET
- dreamrealearliest publication year is set to 2007, because I'm thinking I might migrate some old articles over from the java channel blog
- dreamrealand if this is still running in the year 3000CE I'll take the maintenance hit of updating the schema
- dreamreal"great-great-great-great... something grandpa has had us running that VPS for freaking *centuries*."
- bot[jottinger/bytecode.news] New issue #57: Multi-site blog hosting: shared infrastructure, per-site content - https://github.com/jottinger/bytecode.news/issues/57
- bot[jottinger/bytecode.news] New issue #55: Use integral types for year/month path variables in blog endpoints - https://github.com/jottinger/bytecode.news/issues/55
- bot[jottinger/bytecode.news] New PR #56: Updating blog endpoints to provide proper types for slugs - https://github.com/jottinger/bytecode.news/pull/56
- blue@Schema(minimum = "2007", maximum = "3000") year: Int,
- bluesweet tuches!
- bluenice, the openapi exporter got it too:
- blue{ type: "integer", format: "int32", maximum: 3000, minimum: 2007 }
- bluedreamreal: you know what this means, right?
- blueit means I can translate this to a pema schema, so we get REAL runtime-validation!
- blue-> p.i32.min(2007).max(3000)
- bluenow a client tries to do this: client.posts(2006). BAM, we error out even BEFORE we continue!
- blueactually client.posts.year(2006), but you get the point
- blueclient gets ParseError: value should be minimum 2007, got 2006
- blue*no request goes to server*
- dreamrealyeah, for all 4 requests that prevents :D
- dreamrealblue: did you see 57?
- bluedreamreal: not yet. I'm formulating a proposal for the openapi client for primate. will do shortly
- bot[jottinger/bytecode.news] New PR #58: fix/55 integral types for blog slugs - https://github.com/jottinger/bytecode.news/pull/58