<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:00:01] <Izaya> Then I can add loading from the data portion
L2[00:00:08] <peelz_> RIP you
L3[00:00:22] <peelz_> time to practice dem code golfing skills
L4[00:00:38] <Izaya> I mean, I've gotten like 10K down to 4K
L5[00:00:48] <peelz_> not bad
L6[00:01:12] <peelz_> I mean, surely you can figure out a way to yank 12 bytes?
L7[00:02:53] <Izaya> honestly at this point it may be a bit of a stretch
L8[00:02:59] <Izaya> I don't want to break the API entirely
L9[00:06:23] <Izaya> 92 bytes available now :D
L10[00:06:25] <Izaya> I only needed 48
L11[00:12:13] ⇦ Quits: Cervator (Cervator!~Thunderbi@2601:4c1:4001:1d5d:c1b6:cf21:6194:8c) (Quit: Cervator)
L12[00:45:43] ⇨ Joins: freacknate09 (freacknate09!~freacknat@97-92-106-20.static.reno.nv.charter.com)
L13[00:45:47] <freacknate09> hey
L14[00:46:01] <freacknate09> What is the RC API? The wiki page is practically nil
L15[00:46:11] <Izaya> it can run stuff
L16[00:46:27] <Izaya> in all seriousness, it's a good way to do startup scripts
L17[00:46:35] <freacknate09> Ahh, how do I use it?
L18[00:46:40] <Izaya> you put a file in /etc/rc.d with a start() and a stop() function
L19[00:46:51] <Izaya> or really any other name but start will let you autorun it
L20[00:47:17] <Izaya> use the start() function for any startup stuff and stop() to close open files and such
L21[00:47:28] <Izaya> then you can do rc filename start and rc filename stop
L22[00:47:45] <Izaya> (if you had a function called foo you could also do rc filename foo)
L23[00:47:49] <freacknate09> ok, sounds very useful. I jumped on tonight specifically for this. That and I am gonna try and learn more Lua and the like.
L24[00:47:53] <freacknate09> nice
L25[00:48:01] <Izaya> arguments also work
L26[00:48:13] <Izaya> function start(a,b,c) print(a,b,c) end
L27[00:48:17] <Mimiru> no they don't! (This is an argument :P)
L28[00:48:20] <Izaya> and then you did rc filename start 1 2 3
L29[00:48:25] <Izaya> it'd respond with 1 2 3
L30[00:48:51] <Izaya> if you want to autorun it you can do rc filename enable
L31[00:49:00] <Izaya> you don't need an enable function
L32[00:49:10] <Izaya> enable adds it to the autorun section of /etc/rc.cfg
L33[00:49:19] <freacknate09> ok
L34[00:49:47] <Izaya> I use it for minitel, see https://github.com/ShadowKatStudios/OC-Minitel/blob/master/OpenOS/etc/rc.d/minitel.lua
L35[00:50:01] <freacknate09> I created a new creative world for tinkering with OC, once I get a building made, I am gonna play with RC and whatnot. What does minitel do?
L36[00:50:13] <Izaya> minitel is my networking stack
L37[00:50:35] <Izaya> it does mesh routing and reliability
L38[00:50:41] <freacknate09> ahh, I am not gonna even ask about networking :) lol, I suck with basic stuff, muchless networking
L39[00:50:42] <Izaya> also streams if you use the higher-level APIs
L40[00:52:02] <Izaya> https://oc.cil.li/index.php?/topic/1556-minitel/ for a better description
L41[00:52:14] <freacknate09> Thanks, reading now
L42[00:54:50] <freacknate09> How do the relay blocks work? I know they have cycle rate, packets/cycle, and queue size. Other than that, I have no clue.
L43[00:55:47] <Izaya> they separate component networks - your computer and its peripherals - and relay network packets between them
L44[00:56:31] <freacknate09> ahh, ok
L45[00:57:19] <Izaya> ~w relay
L46[00:57:19] <ocdoc> Predicted http://ocd.cil.li/api:thread
L47[00:57:24] * Izaya frowns
L48[00:57:53] <Izaya> from the ingame manual: https://oc.shadowkat.net/en_US/block/relay.html
L49[00:58:52] <freacknate09> what is this shadowkat.net site?
L50[00:59:00] <Izaya> that's my site
L51[00:59:06] <freacknate09> ahh
L52[00:59:18] <Izaya> I have a script that runs once a day and updates the copy of the manual I have there if there are any changes
L53[00:59:23] <freacknate09> ahh, nice
L54[00:59:37] <Izaya> has a bunch of other random shit there too
L55[01:02:03] ⇨ Joins: freacknate (freacknate!~freacknat@97-92-106-20.static.reno.nv.charter.com)
L56[01:03:03] ⇦ Quits: freacknate09 (freacknate09!~freacknat@97-92-106-20.static.reno.nv.charter.com) (Ping timeout: 202 seconds)
L57[01:03:32] *** freacknate is now known as freacknate09
L58[01:04:47] <freacknate09> Well, I have a working computer, aaand no idea what to do. It is too late irl
L59[01:05:17] <freacknate09> I am gonna deal with this tomorrow, see yall tomorrow
L60[01:05:41] ⇦ Quits: freacknate09 (freacknate09!~freacknat@97-92-106-20.static.reno.nv.charter.com) (Client Quit)
L61[02:21:25] ⇨ Joins: Backslash (Backslash!~Backslash@ip-94-114-162-224.unity-media.net)
L62[02:22:09] ⇦ Quits: Backslash_ (Backslash_!~Backslash@ip-94-114-162-224.unity-media.net) (Ping timeout: 198 seconds)
L63[02:30:22] <Forecaster> %loot
L64[02:30:22] <MichiBot> Forecaster: You get a loot box! It contains an empty bottle.
L65[02:31:49] ⇦ Quits: jackmcbarn (jackmcbarn!jackmcbarn@gateway02.insomnia247.nl) (Ping timeout: 195 seconds)
L66[02:34:03] ⇨ Joins: jackmcbarn (jackmcbarn!jackmcbarn@gateway02.insomnia247.nl)
L67[03:00:37] ⇨ Joins: Vexatos (Vexatos!~Vexatos@p200300C107179417E6752CEF91E246A9.dip0.t-ipconnect.de)
L68[03:00:37] zsh sets mode: +v on Vexatos
L69[03:26:34] <Izaya> reee ATA jumpers
L70[03:41:29] <Kodos> %loot
L71[03:41:29] <MichiBot> Kodos: You get a loot box! It contains a broken .zip.
L72[04:00:54] <Forecaster> %loot
L73[04:00:54] <MichiBot> Forecaster: You get a loot box! It contains a tiny bag of catnip.
L74[04:13:01] ⇦ Quits: peelz_ (peelz_!kiwiirc@modemcable157.151-83-70.mc.videotron.ca) (Ping timeout: 182 seconds)
L75[04:32:50] ⇦ Quits: Doty1154 (Doty1154!~Doty1154@c-73-189-164-179.hsd1.ca.comcast.net) (Read error: Connection reset by peer)
L76[05:07:38] <Forecaster> ouch https://imgur.com/gallery/1B2LaJx
L77[05:16:50] ⇨ Joins: ben_mkiv (ben_mkiv!~ben_mkiv@p57972032.dip0.t-ipconnect.de)
L78[06:41:53] <Izaya> Skye: https://pomf.pyonpyon.moe/txmbmd.webm
L79[06:43:30] <Skye> Izaya, no room for encryption? ;)
L80[06:43:45] <Izaya> I'm using the data partition now
L81[06:43:54] <Izaya> for the fget client
L82[06:43:57] <Skye> that's still less than 4K
L83[06:44:05] <Skye> isn't that 256 bytes
L84[06:44:10] <Izaya> yes
L85[06:44:15] <Skye> .___.
L86[06:44:17] <Izaya> I'm using it because I filled the main storage
L87[06:44:36] <Skye> yeah
L88[06:44:37] <Izaya> 4057 bytes for the main EEPROM image
L89[06:44:46] <Skye> no room for encryption lol
L90[06:44:54] <Skye> not even for signature checking
L91[06:45:00] <Izaya> 160 bytes for the fget client
L92[06:45:10] <Izaya> that said
L93[06:45:17] <Izaya> if you were running this in a network
L94[06:45:55] <Izaya> you could totally add a call to the data partition to download and run the stuff for encryption from an frequest client
L95[06:46:04] <Skye> Izaya, could you port an ECDSA thing to Lua and then use a public key to verify external code
L96[06:46:32] <Izaya> you'd only need to do like, pcall(load(fget("server","/crypto-lib.lua")))
L97[06:46:48] <Skye> but you'd need ECDSA to verify the external code you're loading
L98[06:46:57] <Izaya> well
L99[06:47:02] <Izaya> uh
L100[06:47:07] <Izaya> gl
L101[06:47:22] <Izaya> if you stripped the terminal and REPL you get uh
L102[06:47:48] <Izaya> 2213 bytes used
L103[06:48:27] <Izaya> 1883 bytes to implement ECDSA
L104[06:48:35] <Izaya> oh wait, frequest client
L105[06:48:42] <Izaya> 1723 bytes
L106[06:48:47] <Skye> x_x
L107[06:49:36] <Skye> https://ed25519.cr.yp.to/
L108[06:49:41] <Izaya> that said, if you had a data card you could probably do it
L109[06:49:42] <Skye> has a C and Python impl
L110[06:51:06] <Skye> Izaya, https://ed25519.cr.yp.to/python/ed25519.py
L111[06:51:18] <Izaya> just saw it
L112[06:51:30] <Izaya> it's short, so maybe doable I guess
L113[06:51:45] <Skye> you'll need SHA256 as well
L114[06:52:00] <Izaya> that's basically going to be about 5KB on its own
L115[06:52:21] <Skye> oh
L116[06:52:22] <Skye> x_x
L117[06:52:25] <Skye> no compact SHA256
L118[06:53:58] <Skye> Izaya, tbh you just need any competant hashing algo
L119[06:55:01] <Skye> Izaya, would this even be doable without a data card
L120[06:55:07] <Skye> with a data card it would be very easy
L121[06:55:16] <Izaya> It would not be easy, I imagine.
L122[06:56:36] <Skye> https://ocdoc.cil.li/component:data
L123[06:56:43] <Skye> ecdsa(data:string, key:userdata[, sig:string]):string or boolean
L124[06:56:43] <Skye> Generates a signiture of data using a private key. If signature is present
L125[06:56:43] <Skye> generated signature string. and the original string.
L126[06:56:43] <Skye> verifies the signature using the public key and the previously generated
L127[06:56:56] <Izaya> no I mean doing it without a data card would not be easy
L128[06:56:59] <Skye> with a data card it is one line of code
L129[06:57:37] <Skye> wihtout a data card you need SHA256, and ED25519
L130[06:57:40] <Skye> which uh
L131[06:57:48] <Skye> relatively compact
L132[06:57:52] <Skye> but not enough for an EEPROM
L133[06:59:07] * Izaya nods
L134[07:00:13] <Izaya> I'm rather impressed that this works so well though
L135[07:00:59] <Izaya> This is like, 3 libraries away from where PsychOS was.
L136[07:01:05] <Izaya> And a scheduler, I guess.
L137[07:01:19] <Skye> key questions I have about the data card
L138[07:01:33] <Skye> is it ED25519 or P-256
L139[07:01:49] <Skye> basically it has ECDH and ECDSA
L140[07:01:59] <Skye> but which curve does it use
L141[07:11:40] <Skye> so OC uses a ECDH curve
L142[07:11:48] <Skye> but I can't find any docs
L143[07:11:50] <Skye> aaaaaa
L144[07:14:04] <Skye> http://www.ietf.org/rfc/rfc3278.txt
L145[07:14:10] <Skye> 5 Recommended Algorithms and Elliptic Curves
L146[07:14:26] <Skye> Furthermore, in order to encourage interoperability, implementations
L147[07:14:28] <Skye> SHOULD use the elliptic curve domain parameters specified by ANSI
L148[07:14:30] <Skye> [X9.62], NIST [FIPS-186-2] and SECG [SEC2].
L149[07:14:52] ⇨ Joins: Inari (Inari!~Pinkishu@p4FC1E088.dip0.t-ipconnect.de)
L150[07:15:55] <Inari> https://twitter.com/dixonij/status/997205031173611520 heh
L151[07:15:55] <MichiBot> Thu May 17 14:59:41 CDT 2018 @dixonij: A friendly cyberawareness reminder that this Royal Wedding 'Royal Name' meme thing is quite literally asking for th… https://t.co/vrrhz54E1R
L152[07:17:06] <Skye> so
L153[07:17:07] <Skye> basically
L154[07:17:19] <Skye> I think the data card uses Curve P-256
L155[07:17:29] <Skye> while all implementations of Curve 25519
L156[07:17:35] * Skye sighs
L157[07:17:52] <Skye> as in
L158[07:18:02] <Skye> the only Lua / simple implementations of EC stuff
L159[07:18:06] <Skye> use curve 25519
L160[07:19:42] <Skye> and apparently P-256 is not the greatest but is more common
L161[07:19:43] <Skye> bleh
L162[07:20:17] <Skye> Izaya, so here's the question, would it be better to try to use the older stuff in Lua, or to add the newer stuff to the data card
L163[07:22:27] <Skye> Izaya, if I wanted to, I could try to implement the modern goodies on the data card using existing Java code?
L164[07:22:34] <Skye> would it be worth it?
L165[07:22:46] <Izaya> Newer algos would be nice.
L166[07:22:52] <Izaya> But the question is do you want to do it?
L167[07:23:05] <Izaya> If you'd enjoy it, you should do it.
L168[07:25:36] <Skye> if I find the time I will
L169[07:25:47] <Skye> Izaya, basically will it more convenient?
L170[07:25:55] <Skye> like chacha20 is simpler than AES
L171[07:26:18] <Skye> so will havving the ability for it to work well in pure lua be better/
L172[07:26:18] <Izaya> If we can have interoperable software and hardware crypto stuff that is more compact that would be nice
L173[07:26:53] <Skye> Izaya, so basically I need to find the most compact algorithms and then add them to the data card?
L174[07:27:31] <Izaya> I mean, it's your call. I'd find them useful, and I'm sure other people would too, though.
L175[07:28:05] <Skye> so... chacha20
L176[07:28:12] <Skye> sha2 or sha3?
L177[07:28:21] <Skye> we might want a MAC as well
L178[07:42:19] ⇦ Quits: ben_mkiv (ben_mkiv!~ben_mkiv@p57972032.dip0.t-ipconnect.de) (Ping timeout: 194 seconds)
L179[07:56:36] ⇨ Joins: ben_mkiv (ben_mkiv!~ben_mkiv@p57972032.dip0.t-ipconnect.de)
L180[09:29:14] * Inari wonders if theres any loli tax accountants hireable in the region around Frankfurt or Wurzburg :p
L181[10:57:46] <pwootage> I seem to be getting SSL errors in Gradle attempting to download oc's API from maven (hostname mismatch) but when I manually check it, it looks fine. Any ideas what I have configured incorrectly?
L182[10:58:08] <pwootage> (this was working fine 6 months ago, just updating everything)
L183[11:04:12] <AmandaC> pwootage: the servers are in the processs of being updated, might be a problem in that regard
L184[11:04:35] <pwootage> Hm, alright, guess I'll just try again later :p
L185[11:04:52] <AmandaC> @Sangar might know more, since he's the one updating the servers.
L186[11:22:20] <pwootage> Testing now
L187[11:23:00] <pwootage> Looks good, thanks!
L188[12:01:41] <Inari> So bored
L189[12:11:48] ⇦ Quits: TheCryptek (TheCryptek!~TheCrypte@ircbouncehouse.com) (Ping timeout: 182 seconds)
L190[13:17:49] ⇨ Joins: TheCryptek (TheCryptek!~TheCrypte@ircbouncehouse.com)
L191[13:28:26] ⇨ Joins: peelz_ (peelz_!kiwiirc@modemcable157.151-83-70.mc.videotron.ca)
L192[14:04:56] <payonel> peelz_: i personally don't like `cp -i` as the default
L193[14:04:59] <payonel> but it's been there a long time
L194[14:05:06] <peelz_> hmm
L195[14:05:21] <payonel> also, as i noted in the github ticket, the transfer lib is internal
L196[14:05:34] <peelz_> yup I saw my gh notifications :P
L197[14:06:05] <peelz_> So there's currently no way to invert that?
L198[14:08:26] <payonel> options. unalias cp in your .shrc | i change -f to override -i | i remove -i from the default
L199[14:08:33] <payonel> | or do nothing :)
L200[14:11:22] <peelz_> payonel: I manually patched my cp to expose `f` LUL
L201[14:11:55] <CompanionCube> lol: 'No it is not that simple as 64 bit architecture use processor registers of 64 bits which are twice as large as 32 bit architecture. Because of size, a 64 bit architecture is slower than a 32 bit architecture and use more resources when using stuff are built for 32 bit architecture as those probably don't take advantage of bigger registers.' this is something someone said
L202[14:12:14] <payonel> peelz_: ...
L203[14:12:17] <payonel> peelz_: i was wrong
L204[14:12:23] <peelz_> about what?
L205[14:12:39] <peelz_> Is it not aliased?
L206[14:13:13] <peelz_> the alias is set in /etc/profile.lua
L207[14:13:42] <payonel> transfer.batch and the force override is not an oversight, that's how i wanted the my internal lib to work as far as i remember, but that's besides the point
L208[14:13:55] <payonel> it was an oversight, rather, that the -f option isn't handled in /bin/cp
L209[14:14:09] <payonel> now, since transfer does respect -f more than -i, maybe i'll just expose -f
L210[14:14:30] <payonel> and let some crazy random person down the road complain that it doesn't match real life
L211[14:14:37] <peelz_> lmao
L212[14:14:57] <payonel> Izaya: nice work
L213[14:17:08] <payonel> Izaya: one other thing maybe you could do: load((([[...]]):gsub("E","elseif"))
L214[14:17:25] <payonel> that would save 45 bytes
L215[14:17:26] <payonel> :/
L216[14:17:31] <payonel> haha
L217[14:18:00] <payonel> i missed a ) or something in that
L218[14:18:13] <payonel> but the gsub result would need an additional () to not confuse load
L219[14:18:34] <payonel> load( (([[]]):gsub()) )
L220[14:18:51] <AmandaC> I wonder if @20kdc's compression would be minimisable enough to use as an eeprom bootstrapper, Izaya
L221[14:24:45] ⇨ Joins: Doty1154 (Doty1154!~Doty1154@c-73-189-164-179.hsd1.ca.comcast.net)
L222[14:24:58] <Inari> https://imgur.com/gallery/awaIOOD Hmm need to try that
L223[14:25:33] <peelz_> payonel: have you seen the POC KVM code I sent you on Discord?
L224[14:26:29] <payonel> i'm rarely on discord, sorry
L225[14:26:33] <payonel> i'll check -
L226[14:26:35] <peelz_> ah that's what I thought
L227[14:26:43] <payonel> but in the future, feel free to paste it here and tag my nick
L228[14:26:44] <peelz_> I'll send a newer version here hold up
L229[14:26:46] <payonel> i scroll history
L230[14:29:00] <Inari> https://imgur.com/gallery/GB7PxRO
L231[14:39:17] <payonel> peelz_: you're doing good work :) i wish sometimes i wasn't behind so many todos for oc. and i could just play the game myself :)
L232[14:39:52] <peelz_> thanks :D I feel you lol
L233[14:42:40] <AmandaC> https://twitter.com/gaffneyc/status/997275952135790592?s=19
L234[14:46:58] <payonel> AmandaC: i have no idea what that is
L235[14:47:27] <AmandaC> payonel: mailchimp is a mailinglist manager for companies to send stuff like promotional emails
L236[14:47:52] <AmandaC> That's the page someone got when clicking the "unsubscribe" link in one of those such emails
L237[14:48:00] <payonel> AmandaC: but there is something in the comment that grammatically confuses me
L238[14:48:06] <payonel> "Periodic reminder that we can see your MailChimp list names when we unsubscribe"
L239[14:48:22] <AmandaC> payonel: we = users who mailchimp is emailing on your behalf
L240[14:48:25] <payonel> ah, they can see the GROUP NAME
L241[14:48:37] <payonel> "list name" makes no sense to my brain
L242[14:49:00] <payonel> i feel a bit dense
L243[14:49:00] <AmandaC> whatever company that email was sent on behalf of, named the list for targetting the email rudely
L244[14:49:03] <payonel> but i get it now
L245[14:49:08] <payonel> yeah
L246[14:49:22] <payonel> i would call it group name, but sure
L247[14:49:45] <payonel> i feel like english isn't my native language trying to read that title
L248[14:49:56] <peelz_> lmfao
L249[14:50:01] <Mimiru> It's a Mailing List, so it's the name of the list the "List Name" if you will.
L250[14:50:02] <Mimiru> :P
L251[14:50:21] <payonel> this my brain, ok?! => but where is the freaking verb?
L252[14:50:31] <payonel> "mailchimp list" <- the noun
L253[14:50:35] <payonel> "names" it names something
L254[14:51:05] <payonel> or does mailchimp, the subject, list, the verb, some names, the object
L255[14:51:09] <payonel> then i just can't
L256[14:51:09] <AmandaC> `Mailchimp list's name` would have been another way to word it
L257[14:51:43] <AmandaC> English is Hardâ„¢
L258[14:52:04] <payonel> peelz_: it's not easy :) haha
L259[14:52:04] <peelz_> payonel: if I wanted to add /dev/ entries, how would I go about doing that? (for my vscreens)
L260[14:52:06] <peelz_> D:
L261[14:52:15] <AmandaC> There's no devfs API yet, is there?
L262[14:52:18] <payonel> do you want a standalone pseudo file? or a component drive in components/ ?
L263[14:52:32] <AmandaC> s/API/public API/
L264[14:52:32] <MichiBot> <AmandaC> There's no devfs public API yet, is there?
L265[14:52:46] <peelz_> not sure what that means haha
L266[14:52:51] <payonel> yeah, devfs is only in its 2nd incarnation
L267[14:53:07] <payonel> i think something needs like 10 revisions before it's probably stable (api)
L268[14:53:11] <AmandaC> haha
L269[14:53:31] <AmandaC> meanwhile, I've had my kittiesdb REST API fixed at version 0 for like, years
L270[14:53:48] <payonel> peelz_: do you want a new type of component to be listed? or do you just want a /dev/{file} ?
L271[14:53:50] <AmandaC> ( That's not to say I've not touched it / broken it, just that I'm too lazy to label it )
L272[14:53:55] <peelz_> I wanted to do something like this to print the vscreen buffer: `/dev/vscreen/by-uuid/00000000-0000-...`
L273[14:54:08] <payonel> ah
L274[14:54:43] <AmandaC> Speaking of <shameless-plug> New URL for the kittiesdb: https://kittiesdb.app </shameless-plug>
L275[14:54:44] <payonel> you want /lib/core/devfs/adapters/
L276[14:54:56] <peelz_> ah
L277[14:55:47] <AmandaC> payonel: have you heard of the VS Session Sharing stuff, ooc?
L278[14:56:37] <payonel> ooc? vs as in vs code? is this a plugin?
L279[14:56:53] <payonel> peelz_: 01_hw.lua and 02_utils.lua load when devfs loads
L280[14:56:55] <AmandaC> ooc = out of curiosity, and yeah, vs and vscode
L281[14:57:12] <payonel> 02_utils is what creates the psuedo files, like /dev/null
L282[14:57:21] <payonel> and 01_hw is what loads the adapters
L283[14:57:49] <peelz_> payonel: wait are you sure it's ìn `/lib/core/devfs/adapters/`?
L284[14:57:56] <peelz_> https://github.com/MightyPirates/OpenComputers/tree/master-MC1.7.10/src/main/resources/assets/opencomputers/loot/openos/lib/core/devfs/adapters
L285[14:58:07] <AmandaC> payonel: https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare
L286[14:58:23] <payonel> peelz_: yeah
L287[14:58:40] <payonel> the 01_hw 02_utils are core files to devfs, don't change those
L288[14:58:44] <payonel> i'm just explaining how it loads
L289[14:58:46] <AmandaC> It's not quite as seamless on linux as win/mac, but they're working on it.
L290[14:58:52] <peelz_> ah
L291[14:58:59] <peelz_> parent folder, gotcha
L292[14:59:01] <payonel> so 01_hw looks for all components it gets from component.list()
L293[14:59:16] <payonel> and if looks for ${type_name}.lua in that adapters folder
L294[14:59:17] <peelz_> ah great I see it now
L295[14:59:26] <payonel> yeah, don't modify those, though
L296[14:59:33] <peelz_> obviously haha
L297[14:59:34] <payonel> so if you have a new type, add it to adapters
L298[14:59:42] <peelz_> okay
L299[14:59:59] * payonel now catches up on AmandaC's cool comments
L300[15:00:20] <payonel> woah, made by msft?
L301[15:00:22] <payonel> golly msft
L302[15:00:26] <payonel> you be cool now
L303[15:00:34] <payonel> i've never been anti-msft, tbh
L304[15:00:38] <payonel> used to work there, in fact
L305[15:00:49] <AmandaC> heh
L306[15:00:50] <payonel> but i like the dev stuff they've been doing in the past few years
L307[15:01:28] <payonel> AmandaC: DEFINITELY worth looking into
L308[15:01:29] <payonel> thank you
L309[15:01:31] <AmandaC> on win/mac clicking a link causes vscode to launch, though it's not wired up in linux yet, it's marked for may 2018
L310[15:01:44] <payonel> i tutor a young women, in college, and we use discord to work on her assignments
L311[15:01:50] <payonel> she is using vscode, so this would be better
L312[15:01:54] <AmandaC> nice. :D
L313[15:02:02] <AmandaC> I used it with my co-admin to work on some of our ansible stuff
L314[15:02:17] <AmandaC> since he's much more familiar with that shit than me.
L315[15:02:38] * payonel fist bumps AmandaC
L316[15:02:40] <payonel> thanks for the ref
L317[15:02:47] <Xal> 2018: electron text editors
L318[15:03:01] <payonel> Xal: i dont really care what it is built on
L319[15:03:03] <payonel> i like it :)
L320[15:03:11] <AmandaC> It even supports forwarding ports, so if you're working on something webby you can even have it so they can access the dev instance on your machine with localhost:foo too
L321[15:03:22] <payonel> heh, fancy
L322[15:03:41] <payonel> that wouldn't affect me, but it is interesting
L323[15:03:45] <Xal> just means you'll have to deal with js when writing extensions
L324[15:03:56] <peelz_> but js is great >:(
L325[15:03:59] <Xal> lol
L326[15:04:16] <peelz_> Who doesn't need a little bit of js in their life?
L327[15:04:25] <AmandaC> js isn't as bad as vimscript, at least.
L328[15:04:27] * AmandaC hides
L329[15:04:49] <Xal> AmandaC: that is actually true
L330[15:05:07] <AmandaC> and most of the vscode stuff is written in TypeScript, which transpiles down to JS.
L331[15:05:19] <Xal> typescript is really just a bandaid
L332[15:05:26] <payonel> peelz_: the adapter functional interpreter is fairly advanced --
L333[15:05:46] <Xal> also
L334[15:05:51] <Xal> >optional static typing
L335[15:05:58] <payonel> it can handle a few different types of functions and is intuitive about types conversion (for some fixed cases)
L336[15:06:18] <peelz_> oh nice
L337[15:06:26] <payonel> peelz_: so, if you have a "file function" you need some guidance on, and the other adapters are confusing in that regard, feel free to poke me
L338[15:06:44] <peelz_> will do!
L339[15:06:45] <payonel> just as long as you don't assume this is an API :)
L340[15:06:54] <peelz_> I'm not there yet, I was looking into that since I got that idea yesterday
L341[15:06:58] <payonel> though, it'll be a LLOOOOONG time before i change this
L342[15:07:25] <peelz_> Hah, alright. Hopefully it can become a documented API at some point
L343[15:08:00] <S3> I think I'm too tired to write in Lua today lol
L344[15:08:17] <AmandaC> I should play with my KOS stuff some more
L345[15:08:25] <AmandaC> %choose servery or gamy
L346[15:08:25] <MichiBot> AmandaC: servery
L347[15:08:30] <AmandaC> hrm.
L348[15:08:46] <S3> https://www.irccloud.com/pastebin/8v71RWGZ/
L349[15:08:57] <S3> Does it olt work with number indexed tables?
L350[15:09:01] <S3> I didn't think so
L351[15:09:17] <AmandaC> `olt`?
L352[15:09:34] <AmandaC> oh, only
L353[15:09:50] <AmandaC> yeah # and table.len only work with sequentially-indexed tables starting at 1
L354[15:09:59] <AmandaC> same as ipairs
L355[15:10:25] <S3> I could have sworn I have used something to count the number of things in a table like this. weird.
L356[15:10:32] <S3> not even a month ago
L357[15:10:42] <AmandaC> Maybe usng metatable to overwrite #?
L358[15:10:46] <payonel> S3: there isn't. but you can check if a table is empty
L359[15:10:53] <S3> hm
L360[15:10:59] <S3> That's really all Iw ant to do
L361[15:11:01] <AmandaC> the metatable function __len overrides #
L362[15:11:17] <payonel> if not next(tbl) then print("it is empty") end
L363[15:11:45] <S3> I really just want to check if the table has no keys
L364[15:11:53] <payonel> well, that'll do it
L365[15:11:57] <S3> and tat's cool AmandaC
L366[15:12:03] <S3> I didn't know abut __len
L367[15:12:22] <S3> oh yeah I forgot about next
L368[15:14:44] <S3> I don't think I've used next in forever
L369[15:25:00] <payonel> peelz_: an rc script is a collection of functions. if you `enable` an rc script, the rc-manage attempts to call `start` when the system boots
L370[15:25:08] <payonel> that is the extent of an rc script, really
L371[15:25:17] <payonel> there is no process or stack or much else
L372[15:25:24] <peelz_> ah
L373[15:25:29] <payonel> once start() finishes, it is done
L374[15:25:43] <payonel> but during start(), the rc script may register stuff in the event system
L375[15:25:53] <payonel> that's generally how an rc script runs as a daemon
L376[15:26:08] <peelz_> this is how I implemented one of my daemons: https://hastebin.com/jidobarepo.lua
L377[15:26:11] <payonel> you'd normally expect to see some event.listen() calls in the rc script start, and some event.ignore() calls in the stop
L378[15:26:44] <peelz_> so if that daemon were to use vscreen, I'd need to spin up a process of its own in order to detach it from the OS?
L379[15:26:50] <peelz_> not sure if I understand correctly
L380[15:28:17] <payonel> you only need a new process if you want to do things to the process meta without affecting other processes
L381[15:28:49] <peelz_> so the way I made that rc script, I'd need to create a new process so that it can get a window of its own?
L382[15:28:49] <S3> I kinda wish you could concatenate a table to a string the way you can print a table address
L383[15:28:50] <payonel> what do you mean by "detach it from the OS" ?
L384[15:29:03] <payonel> S3: you can if it is an array
L385[15:29:17] <peelz_> well the process.info().data.window would be the same one as the shell?
L386[15:29:22] <payonel> peelz_: yes, but why does the rc daemon need a window?
L387[15:29:37] <payonel> peelz_: yes, in this case, same as the init process window
L388[15:29:52] <payonel> yeah, shell is running in init
L389[15:29:55] <payonel> why? because meh
L390[15:30:03] <peelz_> lol
L391[15:30:05] <S3> I'm using tables as pid numbers like you were suggesting a ways back, payonel but it'd be nice to be able to go 'cannot enqueue poccess with pid ' .. pid ': no such pid'
L392[15:30:07] <payonel> there are some protections, not a lot
L393[15:30:14] <S3> I typoed that
L394[15:30:17] <S3> but you know what I meant
L395[15:30:17] <peelz_> > why does the rc daemon need a window?
L396[15:30:22] <peelz_> That's why I'm making vscreen :P
L397[15:30:54] <peelz_> so that multiple processes can register their own screens without needing multiple physical screens
L398[15:31:02] <payonel> peelz_: your daemon keeps a connection to the clients?
L399[15:31:06] <payonel> that's where you manage the client list?
L400[15:31:20] <payonel> and vsmanage is just a tool to send commands to the daemon?
L401[15:31:22] <S3> maybe I should use decimals instead
L402[15:31:27] <peelz_> well not really
L403[15:31:42] <S3> where the whole number part is the cluster node ID
L404[15:31:48] <S3> and the fractional part is the pid on that node
L405[15:31:55] <S3> 0 is reserved for local system
L406[15:32:00] <peelz_> the daemon we're talking about in this scenario isn't related to the project
L407[15:32:03] <S3> 0.123 is pid # 1234 on the current node.
L408[15:32:04] <payonel> S3: so you'll have holes? in that case, yeah, there isn't a one-liner per se for that
L409[15:32:14] <peelz_> it's just a random dameon that uses vscreen
L410[15:32:23] <S3> payonel oh yeah I forgot about that problem
L411[15:32:25] <peelz_> programs have to opt into using vscreen
L412[15:33:13] <payonel> peelz_: but yeah, if you have a daemon that wants to write to a window and you want it to be a custom window, it should run in a process
L413[15:33:27] <payonel> peelz_: but rc's ... for me to explain this you're going to have to do deeper
L414[15:33:42] <peelz_> hm
L415[15:33:53] <peelz_> "to do deeper"?
L416[15:34:01] <payonel> yeah, i'll have to pull back the curtain more
L417[15:34:05] <payonel> openos arch
L418[15:34:06] <peelz_> haha
L419[15:34:33] <payonel> peelz_: so.......... event registration is the key to daemons
L420[15:34:40] <payonel> either you are running on a timer, or listening for signals
L421[15:34:55] <payonel> the event dispatcher runs on the root thread, which is init
L422[15:35:21] <peelz_> right
L423[15:35:21] <payonel> when ANY other process is running, the core event dispatcher is handling those signals and registrants on its own
L424[15:35:37] <payonel> that all happens in the scope of the init thread
L425[15:36:12] <payonel> anyways -- the point is
L426[15:36:38] <payonel> when your rc event registered handlers are running, you dont know nor own the process that might be executing
L427[15:36:55] <peelz_> right
L428[15:36:57] <payonel> in a better arch, i would gave made sure it is the same process each time
L429[15:36:59] <payonel> but it might not be
L430[15:37:02] <peelz_> but I could just process.load() it?
L431[15:37:03] <payonel> why? memory cost
L432[15:37:15] <peelz_> to spin a new process
L433[15:37:24] <payonel> peelz_: but when does that process return?
L434[15:37:31] <peelz_> it needs to return?
L435[15:37:40] <payonel> a process runs until completed
L436[15:37:44] <peelz_> oh yikes
L437[15:37:54] <payonel> yeah, not multi-threaded :)
L438[15:37:57] <peelz_> hmm
L439[15:38:02] <peelz_> it can't run detached and yield?
L440[15:38:14] <payonel> one step at a tiem
L441[15:38:15] <payonel> time*
L442[15:38:44] <payonel> so, after you create a process, you get back a coroutine, and you could resume and yield it as you would any other coroutine
L443[15:38:44] <S3> Well I don't have to randomize pids
L444[15:38:57] <payonel> peelz_: that's not NORMALLY what i do with processes, but you could
L445[15:39:12] <peelz_> oh so it's doable after all
L446[15:39:13] <peelz_> phew
L447[15:39:19] <payonel> normally, a process is run in process.internal.continue
L448[15:39:24] <payonel> and that runs it until completion
L449[15:39:30] <payonel> that is what technically is called for all processes
L450[15:39:33] <payonel> shell commands
L451[15:39:56] <payonel> but this is a bit low level imo, requires you to do a bit of lifting with these low level objects
L452[15:40:14] <payonel> what you really want here, is a thread
L453[15:40:18] <payonel> ~w thread
L454[15:40:18] <ocdoc> http://ocd.cil.li/api:thread
L455[15:40:27] <payonel> that is a process made for users
L456[15:40:30] <peelz_> threads are fairly new, right?
L457[15:40:34] <payonel> and it yield and resumes itself
L458[15:40:36] <payonel> yeah
L459[15:40:42] <peelz_> oh sweet
L460[15:40:50] <payonel> you have to still yield, such as via event.pull or what not
L461[15:40:53] <peelz_> and threads get a process of their own?
L462[15:41:00] <peelz_> s/process/window
L463[15:41:01] <MichiBot> <peelz_> and threads get a window of their own?
L464[15:41:01] <payonel> but inside your thread code, you are in a process and also completely isolated from the world
L465[15:41:11] <payonel> peelz_: they get a process
L466[15:41:17] <payonel> and all processes inherit meta from their parents
L467[15:41:21] <payonel> so, they do NOT get a window
L468[15:41:24] <payonel> but you could assign one
L469[15:41:27] <S3> payonel: I think I can just keep a free_PIDs table and a table of processes by pid. when you create a new process, it looks in the free pids table first. If there are none then it makes a new one one larger than the current cap
L470[15:41:28] <peelz_> perfect
L471[15:41:41] <payonel> S3: i think so, yeah
L472[15:41:49] <payonel> peelz_: so i do not recommend you create a new process
L473[15:41:52] <payonel> but a new thread
L474[15:42:06] <peelz_> yeah it just sounds like a workaround if threads weren't a thing lol
L475[15:42:15] <peelz_> or something I would've had to do before threads became a thing
L476[15:42:15] <payonel> yep
L477[15:43:22] <payonel> i have to run for a bit
L478[15:43:24] <payonel> good luck :)
L479[15:43:27] <S3> I can still use decimals too to recognize neighboring nodes.
L480[15:43:28] <peelz_> payonel: btw, I can explain the arch of the vscreen project a bit more if you want, just so you get the full picture
L481[15:43:31] <peelz_> ty :P
L482[15:46:01] <peelz_> vsmanage is a program that's shipped with the dev lib. It exists on all the client computers. When you run `vsmanage list`, it only lists the screens registered by processes on the computer.
L483[15:46:56] <peelz_> vsmaster is the daemon that runs on the machine with the screen, it receives and manages all the register and bind requests from the clients
L484[15:48:26] <peelz_> vsremote (might have to think of a better name) is the GUI that's used to control the vsmaster daemon. It can request displaying (i.e. `bind` command) a specific vscreen (with key combos like ^b, c)
L485[15:48:52] <peelz_> vsremote runs on the same machine as vsmaster
L486[15:49:03] <peelz_> for now anyway
L487[15:49:55] <peelz_> oh and when vsmaster sends a `bind` command to a client, it registers a new gpu component with the specified address (triggering `component_added`)
L488[15:50:54] <peelz_> so implementers are gonna have to make sure they're a) running in a process of their own; and b) they can handle dynamically rerenderieng the screen
L489[15:51:13] <peelz_> hopefully that makes sense
L490[15:53:43] <peelz_> multiple machines (clients) run `/usr/lib/vscreen + /usr/bin/vsmanage`, and only one master server runs `vsmaster + vsremote`
L491[16:05:34] <S3> Woops :D
L492[16:05:40] <S3> Can't enqueue pid 1: No such pid
L493[16:05:40] <S3> TESTING! My PID is: 1
L494[16:05:48] <S3> I got some logic going on here..
L495[16:05:54] <S3> problems*
L496[16:07:07] <S3> ok it works :D
L497[16:09:55] ⇦ Quits: ben_mkiv (ben_mkiv!~ben_mkiv@p57972032.dip0.t-ipconnect.de) (Ping timeout: 198 seconds)
L498[16:15:21] <S3> YAY
L499[16:15:26] <S3> https://www.irccloud.com/pastebin/e1vLfsQg/
L500[16:15:27] <S3> payonel: ^
L501[16:15:36] <S3> so now I just need to convert to decimals
L502[16:16:54] <S3> I believe the next step after that is to pcall all coroutine runs
L503[16:17:15] <S3> so I can catch process crashes and send an event for their supervisors to reboot them
L504[16:17:19] <S3> or ignore them
L505[16:21:15] <S3> decimals complete
L506[16:21:29] <S3> TESTING! My PID is: 0.001
L507[16:21:33] <S3> maximum of 999 processes :D
L508[16:22:09] <S3> (0.000 is an ilegal pid)
L509[16:22:20] <S3> or anything .000
L510[16:27:28] ⇦ Quits: Keridos (Keridos!~Keridos@static.56.72.76.144.clients.your-server.de) (Quit: ZNC - http://znc.in)
L511[16:27:59] ⇨ Joins: Keridos (Keridos!~Keridos@static.56.72.76.144.clients.your-server.de)
L512[16:37:22] <S3> It all works :D
L513[16:39:36] <peelz_> I keep writing "||" instead of "or". I can't help it
L514[16:39:37] <peelz_> D:
L515[16:52:24] ⇨ Joins: ben_mkiv (ben_mkiv!~ben_mkiv@p57972032.dip0.t-ipconnect.de)
L516[17:02:19] <S3> payonel: What do you think of this? :)
L517[17:02:23] <S3> https://www.irccloud.com/pastebin/zqm1lx0m/
L518[17:03:00] <S3> I don't want to have that local log handler there, but the idea is that this is the anatomy of a process
L519[17:03:58] <S3> callbacks are pretty easy to register, and the idea is that theres some meta table magic to do something kind of like actor.log("Test") and it will figure it out
L520[17:04:21] <S3> however there's challenges such as that pids are decimals not tables
L521[17:04:27] <S3> if pids were tables it would have worked great
L522[17:07:29] <S3> if you don't call spin, the process quits, which is good
L523[17:07:41] <S3> spin() is actually a helper for callbacks and handles yields for you
L524[17:33:00] <Izaya> AmandaC: I believe that compression setup has a not insignificant runtime, which is fine for 64k, but not for 4k
L525[17:33:13] <AmandaC> Izaya: ah
L526[17:34:50] <S3> Izaya: it's coming!
L527[17:35:01] <S3> the actor model stuff is working so far
L528[17:35:08] <Izaya> Ooooooo
L529[17:47:17] ⇦ Quits: Inari (Inari!~Pinkishu@p4FC1E088.dip0.t-ipconnect.de) (Quit: 'Flow, like the river.' - Hanzo (Overwatch))
L530[17:47:40] <S3> Izaya: what do you think of this for my OS though, two functions to spawn processes, spawn and dspawn. spawn will spawn a process on the current node, while dspawn will instead announce a process spawn broadcast on the network, all nodes in the cluster will hash the resource path (filename i.e.) and determine which node will load the lua code for the process via its clustering filesystem, Centrifuge FS. this way, processes get distributed around the
L531[17:47:40] <S3> network.
L532[17:48:34] <S3> the third is pspawn which loads and spawns a process on EVERY node.
L533[17:49:20] <S3> a process that does this on my OS is the combonent bus, which makes every component on the network appear to all computers as one computer's worth of components
L534[17:49:50] <S3> it's really just a way to prevent nodes from doing weird things to components attached to both nodes
L535[17:53:20] * Izaya nods
L536[17:53:53] <S3> I know I yabber
L537[17:58:10] <S3> My ISP keeps calling me asking if I want to purchase the same thing every time they call
L538[17:58:22] <S3> they're asking if I want voip phone service
L539[17:58:57] <S3> I have my own asterisk server, you can't top my prices, I pay less than something between .007 and .007 cents per minute per line with infinite phone lines
L540[17:59:15] <Skye> O_O
L541[17:59:18] <S3> that is what I tell them
L542[17:59:21] <Skye> how do you get that good deal
L543[17:59:28] <S3> and then they call back every day and say would you like voip service?
L544[18:00:44] <S3> https://www.twilio.com/sip-trunking/pricing
L545[18:00:53] <S3> scroll down and look at those :D
L546[18:01:29] <S3> ok 0.7 cents a minute now
L547[18:01:33] <S3> but it's still extremely cheap
L548[18:01:40] <S3> it used to be much cheaper
L549[18:02:49] <S3> Skye: the best part is unless the terms have changed and I havent noticed there's no monthly charge besides the phone numbers which are like a dollar a piece
L550[18:03:02] <S3> so you literally just pay for the line use pretty much
L551[18:03:42] <S3> you can also get vanity 1800 numbers for like $2
L552[18:04:18] <AmandaC> Izaya: https://gitlab.darkdna.net/amanda/oc-fileserver/blob/master/experiments/kos/libs/neoex.lua
L553[18:04:51] <Skye> https://www.aaisp.net.uk/telecoms.html vs https://www.twilio.com/sip-trunking/pricing/gb
L554[18:05:15] <S3> hm. I have an idea..
L555[18:05:56] <S3> Izaya: what do you think about being able to stack my OS under / on top of OpenOS, so that you can keep the OpenOS interface, and just start making calls to actors.
L556[18:06:01] <S3> from from your OpenOS programs
L557[18:06:10] <S3> in an automatic clustering system
L558[18:06:30] <Izaya> It'd be nice
L559[18:06:45] <Izaya> I tried to get OOS running on PsychOS once and it didn't work though
L560[18:06:56] <S3> Skye: whats that like
L561[18:07:07] <Skye> S3, haven't use AAISP yet
L562[18:07:14] <S3> what is that
L563[18:07:16] <Skye> but they do have number porting so I'm planning on using them
L564[18:07:21] <Skye> best UK ISP
L565[18:07:25] <S3> ah
L566[18:09:30] * AmandaC decides to go play some more Yonder instead of coding more, though
L567[18:10:13] <S3> what is yonder
L568[18:10:18] <S3> a game
L569[18:10:19] <S3> ?
L570[18:10:44] <AmandaC> Yes,
L571[18:12:06] <AmandaC> Specifically, this game: 1B95E0https://store.steampowered.com/app/580200/
L572[18:20:10] ⇦ Quits: Doty1154 (Doty1154!~Doty1154@c-73-189-164-179.hsd1.ca.comcast.net) (Quit: Leaving)
L573[18:38:52] ⇦ Quits: Corded (Corded!~MichiBot@eos.pc-logix.com) (Remote host closed the connection)
L574[18:39:00] ⇨ Joins: Corded (Corded!~MichiBot@eos.pc-logix.com)
L575[18:39:01] zsh sets mode: +v on Corded
L576[18:39:02] <Mimiru> working now @Forecaster ?
L577[18:39:31] <peelz_> how can I make a table return docs when evaluated throug the lua interpreter?
L578[18:40:05] <Forecaster> nope
L579[18:40:07] <peelz_> e.g. `=component` returns info about the methods, their signature and a comment explaining its purpose
L580[18:44:44] <peelz_> I figured it out -- docs are generated through native code magic ;w;
L581[18:44:45] <peelz_> https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/scala/li/cil/oc/server/machine/luac/ComponentAPI.scala#L82
L582[18:44:52] <peelz_> __tostring, here I come
L583[18:45:52] <Forecaster> Now it's working :D
L584[18:55:30] <Mimiru> I saw my message when I sent it
L585[18:56:31] <Forecaster> I think my desktop client was borked still
L586[18:56:43] <Forecaster> Cause nothing was showing up there
L587[18:56:51] <Forecaster> %loot
L588[18:56:51] <MichiBot> Forecaster: You get a loot box! It contains a expired lottery ticket.
L589[19:16:22] <S3> gah
L590[19:16:26] <S3> my init is crashing
L591[19:16:28] <S3> whyyyyy
L592[19:16:34] <S3> or something
L593[19:23:23] ⇦ Quits: Vexatos (Vexatos!~Vexatos@p200300C107179417E6752CEF91E246A9.dip0.t-ipconnect.de) (Quit: Insert quantum chemistry joke here)
L594[19:42:12] <S3> THERE
L595[19:42:17] <S3> OS is up and running
L596[19:43:10] ⇨ Joins: ben_mkiv|afk (ben_mkiv|afk!~ben_mkiv@p4fed41a6.dip0.t-ipconnect.de)
L597[19:44:51] ⇨ Joins: Cervator (Cervator!~Thunderbi@2601:4c1:4001:1d5d:f14c:e442:be77:2a5d)
L598[19:45:40] ⇦ Quits: ben_mkiv (ben_mkiv!~ben_mkiv@p57972032.dip0.t-ipconnect.de) (Ping timeout: 182 seconds)
L599[19:54:35] ⇨ Joins: DarkCow (DarkCow!~MrDark@2607:fcc8:d48b:eb00:3ca5:f1b:98e4:1af9)
L600[19:55:39] ⇦ Quits: Dark (Dark!~MrDark@2607:fcc8:d48b:eb00:f501:96a3:6707:2994) (Ping timeout: 202 seconds)
L601[19:58:09] ⇦ Quits: ben_mkiv|afk (ben_mkiv|afk!~ben_mkiv@p4fed41a6.dip0.t-ipconnect.de) (Ping timeout: 198 seconds)
L602[20:26:26] <S3> okay guys
L603[20:26:32] <S3> https://www.irccloud.com/pastebin/oOEzOFYp/
L604[20:26:34] <S3> What am I missing?
L605[20:26:47] <S3> Beside the code obviously
L606[20:26:51] <S3> these are the calls for my VFS
L607[20:27:14] <AmandaC> You're closing the register_sync before the callback
L608[20:27:32] <AmandaC> ( `),` )
L609[20:27:53] <S3> oh shit
L610[20:28:09] <S3> what I meant though was what what I missing for VFS functions :D
L611[20:29:31] <Brisingr Aerowing> @Skye In reference to your crypto convo above, there's a library called Pure Lua Crypto with a number of algorithms.
L612[20:29:31] <Brisingr Aerowing> https://github.com/philanc/plc
L613[20:29:56] <Skye> I know
L614[20:29:57] <S3> oh neat
L615[20:30:09] <Skye> But it has different algorithms to the data card
L616[21:09:15] <AmandaC> %choose accept 10$ or don't
L617[21:09:15] <MichiBot> AmandaC: don't
L618[21:09:21] <AmandaC> night nerds.
L619[21:09:29] <peelz_> night
L620[21:12:47] <S3> Almost...
L621[21:12:58] <S3> tryng to get callbacks to actually work
L622[21:23:46] ⇦ Quits: erratic (erratic!erratic@shells.yourstruly.sx) (Quit: this server has gone to sleep)
L623[21:30:48] <peelz_> I did it. I implemented docs __tostring printing in lua. If anybody is interested: https://gist.github.com/LouisTakePILLz/ac7ff23fa1c8498720628d38e9c99528
L624[21:57:15] ⇨ Joins: erratic (erratic!erratic@shells.yourstruly.sx)
L625[22:17:03] <MalkContent> anyone successfully made robots use tc gauntlets?
L626[22:18:30] <Izaya> but they don't have hands
L627[22:35:21] ⇦ Quits: Cervator (Cervator!~Thunderbi@2601:4c1:4001:1d5d:f14c:e442:be77:2a5d) (Quit: Cervator)
L628[22:53:17] <MalkContent> I.. uh.. huh.
<<Prev Next>> Scroll to Top