<<Prev Next>> Scroll to Bottom
Stuff goes here
L1[00:54:39] <Amanda> %8ball space
cats?
L2[00:54:39] <MichiBot> Amanda: [ The
Bowling ball doesn't answer ]
L4[02:04:00] <MichiBot> Amanda: Inari will
be notified of this message when next seen.
L5[02:04:16] ⇦
Quits: expert975 (~expert975@189.74.134.153) (Quit: WeeChat
2.6)
L6[02:12:04] ⇨
Joins: Codian (webchat@58.174.170.52)
L7[02:16:09] <Codian> Hey, so I'm trying to
edit files for my computers from outside of the game (just because
coding in an actual IDE is easier). I looked up how to do it and
disabled bufferChanges in the config. However, I can't seem to find
any folder which would contain the files. All of the tutorials say
that it should be in .minecraft/saves/worldname/opencomputers
L8[02:16:10] <Codian> /driveid/ but my
opencomputers folder only contains the directory "states"
and in there there are three folders containing unreadable files.
Any help would be appreciated, thanks.
L9[02:17:41] <Mimiru> single player
world?
L10[02:17:45] <Codian> yep
L11[02:18:46] <Codian> i'm very new here,
coming from computercraft
L12[02:19:31] <Mimiru> the state files are
the lua states that get resumed when OC starts back up.. if you
have any computers with hard drives.. there should very much be
UUID folders in there
L13[02:19:43] <Mimiru> I... don't actually
have MC installed right now to test
L14[02:20:18] <Mimiru> (Not in the state
folder, but in the opencomputers folder)
L15[02:20:18] <Codian> Wait a minute, they
just appeared! I guess I had to start the singleplayer world to get
them after making a config change.
L16[02:47:43] ⇦
Quits: Thutmose (~Patrick@host-69-59-79-181.nctv.com) (Quit:
Leaving.)
L17[03:22:03] ⇨
Joins: AdorableCatgirl
(~sam@pool-74-110-180-14.rcmdva.fios.verizon.net)
L18[03:30:58] ⇦
Quits: ben_mkiv (~ben_mkiv@88.130.158.136) (Ping timeout: 190
seconds)
L19[03:33:35]
<Kleadron>
just a note, not saying i'm going to do anything this instant about
it but coming from a friend, the documentation is extremely
unhelpful and vague to new people coming to the mod and trying it
for the first time
L20[03:35:47]
<AdorableCatgirl> the docs could be
better, but at least there are docs
L21[03:37:43]
<Kleadron>
computercraft has an entire wiki and a page on nearly every API
function showing how to use it with an example
L22[03:37:54]
<Kleadron>
and it has tutorials im pretty sure
L23[03:39:19]
<DaComputerNerd> The wiki is a different
format. Some pages could use more examples, true
L24[03:39:26]
<DaComputerNerd> But it does have all the
needed info
L25[03:39:40]
<DaComputerNerd> And some pages could use
updating, too...
L26[03:40:07]
<Kleadron>
compared to the OC documentation? just a note of almost all the api
functions with examples on some, and according to my friend it's
also vague
L27[03:40:28]
<Kleadron>
there's an ingame manual but that's unhelpful
L28[03:41:57]
<Kleadron>
Im looking at the page for the 3d printer and i see nothing showing
how to properly use it
L29[03:42:04]
<DaComputerNerd> Yea the in game manual is
a bit useless
L30[03:42:08]
<DaComputerNerd> What page exactly?
L31[03:43:59]
<Kleadron>
in general, at least for some of the API pages
L32[03:44:18]
<DaComputerNerd> I'm asking about the 3d
printer page
L33[03:44:52]
<DaComputerNerd> Because most functional
blocks have two pages
L35[03:45:47]
<DaComputerNerd> That has the needed info
from what I can tell
L36[03:45:56]
<DaComputerNerd> What are you stuck on
with it?
L37[03:47:03]
<Kleadron>
Im not having a problem right now but im seeing no mentions of how
im supposed to use the API or how to write a program to use
it
L38[03:47:39]
<Kleadron>
`commit(count:number):boolean`
L39[03:47:39]
<Kleadron>
Commit and begin printing the current configuration.
L40[03:47:40]
<Kleadron>
what's the configuration supposed to mean or do?
L41[03:47:53]
<Kleadron>
how do i use this "configuration"
L42[03:48:26]
<DaComputerNerd> Using the methods listed
later
L43[03:48:53]
<DaComputerNerd> Particularly
addShape
L44[03:49:29]
<Kleadron>
it says it adds a shape to the printer's configuration
L45[03:49:36]
<Kleadron>
i still don't know what the configuration is or does
L46[03:51:01]
<DaComputerNerd> It's just all the shapes
set to be printed. Hence why addShape adds to the configuration.
And why the getShapeCount method's description refers to shapes in
the configuration.
L47[03:51:38]
<DaComputerNerd> It's not really critical
to using it. It's the configuration of the block you're going to
print
L48[03:52:22]
<Kleadron>
why not put a paragraph on the top of the page explaining all of
the terms used like "Configuration" and what it
means
L49[03:52:30]
<Kleadron>
"cols" and "rows"
L50[03:52:37]
<DaComputerNerd> And I figured that out
without having used a 3d printer entirely from that page
L51[03:53:08]
<Kleadron>
a new person wouldn't figure that out
L52[03:53:31]
<Kleadron>
they need everything explained
L53[03:54:11]
<DaComputerNerd> There is a github for the
website, isn't there?
L54[03:54:51]
<DaComputerNerd> Or was that another mod's
docs
L55[03:55:10]
<Kleadron>
idk, but you can make an account for the wiki and modify some of
the pages
L56[03:55:46]
<Kleadron>
i might do that but i'm going to reevaluate the situation and see
what actually needs explanation
L57[03:55:54]
<Kleadron>
and i might get my friend to help me with that
L58[04:38:23]
<Kleadron>
time to implement a new drawing system for window content
L59[04:38:54]
<Kleadron>
and a question for "security"
L60[04:39:56]
<Kleadron>
should i have almost everything be global so that technical
programs can mess with the shell and mess with stuff they
shouldn't, or should i keep all of the important stuff under
lockdown and only expose the window API for the windows
themselves?
L61[04:40:29]
<Kleadron>
should i have almost everything be global so that technical
programs can mess with the shell and mess with stuff they
shouldn't, or should i keep all of the important stuff under
lockdown and only expose the window API for the programs
themselves? [Edited]
L62[04:49:13]
<The_Stargazer> do both
L63[04:49:23]
<The_Stargazer> allow technical programs
to mess with stuff you allow
L64[04:49:32]
<The_Stargazer> but keep important stuff
local
L65[05:10:20]
<Ariri> i
love having an ai as a copilot while i explore the galaxy
L66[05:10:24]
<Ariri> and
a fren!
L67[05:14:01] <Amanda> Hey wait. How'd it
get so late D:
L68[05:14:44] <Amanda> I could have sworn I
paused the Earth before I started reading my story
L69[05:17:03] <Izaya> Ariri:
VoiceAttack?
L70[05:17:43] <Izaya> Codian: if you
haven't created any files on the drives the folders won't be
created
L71[05:17:56] <Izaya> if you have installed
OpenOS on a computer though, yeah, that's wonk
L72[05:18:59] *
Amanda curls up, zzzmews
L73[05:23:34]
<Ariri>
Izaya: Yup, customized KICS 4.1
L74[05:24:00] <Izaya> been meaning to write
my own tooling for E:D
L75[05:24:16] <Izaya> the game itself works
fine on Linux but VoiceAttack and all the mapping programs and
stuff don't
L76[05:24:25] <Izaya> only thing that
"works" is EDMC but that's pretty broken
L77[05:24:28]
<Ariri> no
Linux tts?
L78[05:24:44]
<Ariri>
also, do you use EDLauncher?
L79[05:24:53] <Izaya> TTS is no problem but
WINE doesn't implement the speech recognition APIs
L80[05:25:03] <Izaya> so no
VoiceAttack
L81[05:25:26] <Izaya> I used to but I've
just chmod -w the config files now that I've set up stuff
nicely
L82[05:25:28]
<Ariri> Er
yeah, thats what I meant
L83[05:25:52]
<Ariri> You
can still do macros for docking requests and stuff
L84[05:26:09]
<Ariri>
Might add ship variables for my repeated boost and takeoff
commands
L85[05:26:14] <Izaya> oh yeah that's no
problem
L86[05:26:34]
<Ariri> I
have her read stuff like in Star Trek when i say Engage or
Warp
L87[05:26:37] <Izaya> I can't use
voiceattack of course but like
L88[05:27:01] <Izaya> I have xdotool so
without the voice part it's superfluous anyway
L89[05:27:19]
<Ariri> IE
Maximum Warp, (countdown) Preparing for LS travel, (before
complete) Exiting, and other Impulse stuff
L90[05:27:49]
<Ariri>
Speech Recognition is the one time I liked having bloatware
preinstalled
L91[05:27:59]
<Ariri>
(Not many people use it afaik)
L92[05:28:09] <Izaya> yeah windows speech
recognition is really neat
L93[05:28:15] <Izaya> they originally
developed it for Windows CE
L94[05:28:37] <Izaya> (Oh yes, what Google
and Apple have datacentres for, Microsoft was doing on ARM PDAs
with double digit MBs of RAM)
L95[05:28:42]
<Ariri> I
used to use it back during Vista and it was a bit more messy
L96[05:29:04]
<Ariri>
Yup^ and its pretty accurate
L97[05:29:23] <Izaya> I mean it isn't
perfect but it's pretty good for stuff that's entirely
on-device
L98[05:29:29]
<Ariri> Im
talking on discord and other than the occasional mishaps (minor and
I could fix them) its great
L99[05:29:38]
<Ariri>
only uses 1% of cpu on avg
L100[05:29:49] <Izaya> all the linux voice
recognition stuff is machine learning garbage
L101[05:30:20] <Izaya> hi no I'm not going
to feed it a TB of audio data to teach it to recognize "engage
frame shift drive"
L102[05:30:26]
<Ariri> Do
they use the 'read sentences' training?
L103[05:30:33]
<Ariri>
XD
L104[05:30:47] <Izaya> no they use
"provide audio files with a transcription"
L105[05:30:53]
<Ariri>
ah
L106[05:31:13] <Izaya> I had issues with
the Windows speech recognition stuff because apparently it doesn't
expect an Australian accent
L107[05:31:20] <Izaya> so some words it
just
L108[05:31:25] <Izaya> can't recognize
properly
L109[05:31:51] <Izaya> you say x and it
will always hear y, and no matter how clearly you say it, it
doesn't hear you properly
L110[05:32:03] <Izaya> bloody american
shitware
L111[05:32:22]
<Kleadron>
well it's american and you're trying to use american technology in
australia
L112[05:32:35] <Izaya> if I turn it upside
down will it work better
L113[05:33:54]
<Ariri>
Might help with the reception
L114[05:37:26]
<The_Stargazer> how do I colour `$PS1`
like it is normally?
L115[05:38:17] ⇦
Quits: Codian (webchat@58.174.170.52) (Quit:
webchat.esper.net)
L116[05:38:37]
<The_Stargazer> i'm writing a login
program and have `$PS1` set up like a Linux shell prompt
L117[05:38:52]
<The_Stargazer> (`$USER@$HOSTNAME $PWD
$`)
L118[05:39:04] <Izaya> \[33[01;32m
L119[05:39:14] <Izaya> VT100 escape
codes
L120[05:39:32]
<The_Stargazer> ah, thanks\
L121[05:40:06] <Izaya> any particular
reason for using something nonstandard like that?
L122[05:40:16]
<The_Stargazer> nope that just adds
`[33[01;32m` to `$PS1`
L123[05:40:21]
<The_Stargazer> what do you mean
nonstandard?
L124[05:40:42] <Izaya> well on basically
any unix-like system
L125[05:40:52] <Izaya> \u will do what
your $USER thing does
L126[05:41:19] <Izaya> the $PS1 on my
machine is "[\u@\h \W]\$ "
L127[05:41:37]
<The_Stargazer> openos doesn't have `\u`
does it?
L128[05:41:46] <Izaya> Most likely
not
L129[05:41:57] <CompanionCube> fancy zsh
$PS1 best $PS1
L130[05:42:01] <Izaya> [user@host
basename]$
L131[05:42:15] <Izaya> obnoxious prompts
considered distracting and distasteful
L132[05:43:42] <Izaya> also in a Lua
string you may want to do \27[nn;nnm for colour
L133[05:43:55]
<The_Stargazer> thanks
L135[05:44:42] <Izaya> friendly reminder
that unless you're doing multiple sections updated independently,
you don't need the term API on OpenOS
L136[05:45:02]
<The_Stargazer> ok `\27[33` doesn't work
but the rest of the string works and it sets it to green
L137[05:45:32] <Izaya> shiny
L138[05:45:37] <Izaya> yeah not sure what
the 33 is
L139[05:45:40] <Izaya> probably a bash
quirk
L140[05:45:49] <Izaya> also
L141[05:45:50] <Izaya> exciting
L142[05:45:54] <Izaya> new pizzabox
computer post
L144[05:46:23]
<The_Stargazer> OH GOD
L145[05:46:25]
<The_Stargazer> IT'S ALL GREEN
L146[05:46:36] <Izaya> add \27[m to the
end of the prompt
L147[05:46:46] <Izaya> wait
L148[05:46:48] <Izaya> no
L149[05:47:06] <Izaya> \27[0m
L150[05:47:11]
<The_Stargazer> thanks
L151[05:47:50] <Izaya> none of my software
uses the term API because VT100 stronk
L152[05:48:07] <Izaya> can happily set
colours and move the cursor around with just escape codes
L153[05:48:58] <Izaya> christ it's hot
enough that the water is evaporating out of my glass
L154[05:58:34] ⇦
Quits: Backslash (~Backslash@d75-156-174-126.abhsia.telus.net)
(Read error: Connection reset by peer)
L155[06:05:09]
<The_Stargazer> how do you destroy a
drone
L156[06:07:51]
<The_Stargazer> also, can drones be
programmed to kill things?
L157[06:32:27]
<Forecaster> Shift right click with a
scrench
L158[06:32:31]
<Forecaster> And no
L160[06:33:09] <MichiBot> Tue Jan 07
19:04:19 CST 2020 @MadRadhu: @gravislizard I keep my word
L161[06:36:24]
<The_Stargazer> i thought there was a
`swing()` func?
L162[06:40:39]
⇨ Joins: MajGenRelativity_
(~MajGenRel@c-73-123-203-209.hsd1.ma.comcast.net)
L163[06:40:59] ⇦
Quits: MajGenRelativity
(~MajGenRel@c-73-123-203-209.hsd1.ma.comcast.net) (Ping timeout:
202 seconds)
L164[06:41:41]
⇨ Joins: AmandaC
(~quassel@c-73-165-85-199.hsd1.pa.comcast.net)
L165[06:45:04] ⇦
Quits: Amanda (~quassel@c-73-165-85-199.hsd1.pa.comcast.net) (Ping
timeout: 378 seconds)
L166[07:00:08] ⇦
Quits: cpup (~cpup@68.118.179.32) (Ping timeout: 200
seconds)
L167[07:09:17]
⇨ Joins: cpup (~cpup@68.118.179.32)
L168[07:48:20]
<Forecaster> it's in the robot API I
think, not in the component
L169[08:07:18] ⇦
Quits: Kleadron (~kleadron@c-73-254-147-9.hsd1.wa.comcast.net)
(Quit: Xbox overlords taking over the planet)
L170[08:27:51]
<Kleadron>
That quit message is going to forever haunt me as i have forgotten
how to change it
L171[08:38:59] <Lizzian> lol
L172[08:41:52]
<ThePiGuy24> rip
L173[08:54:03] <Izaya> you can give drones
projectile weapons
L174[08:54:51]
<ThePiGuy24> railgun?
L175[08:55:03] ⇦
Quits: gamax92 (~gamax92@c-73-153-119-160.hsd1.co.comcast.net)
(Read error: Connection reset by peer)
L176[08:55:11] <Izaya> >:D
L177[08:55:44]
<ThePiGuy24> oh yes i know what im doing
when i get back in the server
L178[08:56:32]
⇨ Joins: regakakobigman
(~regakakob@c-73-174-187-176.hsd1.pa.comcast.net)
L179[09:13:33]
<Forecaster> %sip
L180[09:13:34] <MichiBot> You drink a
gloomy yellow potion (New!). Everything Forecaster says is now in
Wingdings until their next sip of water.
L181[09:13:34] ⇦
Quits: cpup (~cpup@68.118.179.32) (Ping timeout: 378
seconds)
L182[09:14:21]
<Forecaster> ⚐︎♒︎■︎□︎
L183[09:16:26]
⇨ Joins: cpup (~cpup@68.118.179.32)
L184[09:55:07]
⇨ Joins: Inari
(~Pinkishu@pD9E8F18F.dip0.t-ipconnect.de)
L185[10:24:34]
<Forecaster> %fling random potion at
Inari
L186[10:24:36] <MichiBot> Forecaster
flings random potion in a random direction. It hits the ground near
Inari
L187[10:24:47]
<Forecaster> oh
L188[10:24:55]
<Forecaster> right, I thought about making
that work but never did
L190[10:30:00] <Inari> AmandaC: thats al
ot of kitties
L191[10:40:30]
<Kristopher38> Drones can actually be
programmed to kill stuff
L192[10:40:56]
<Kristopher38> There exists
component.drone.swing() function
L193[10:41:26]
<Kristopher38> You could install motion
sensor in a drone for example, to make it follow an entity and
repeatedly swing() it
L194[10:41:54]
<Kristopher38> But it would be very
tedious to kill an entity that way since drones can't equip
tools
L195[10:42:56]
<Kristopher38> I did a test once, one
drone repeatedly attacked a blaze, it took the drone about 100 hits
to kill it
L196[10:43:22]
<Kristopher38> One blaze has a health of
20 so that would be 1/5 health taken per hit
L197[10:46:17]
<Forecaster> that's not possible, health
is an int, the minimum damage you can take is 1
L198[10:46:35]
<Forecaster> unless 4 fifths of the
attacks don't do any damage
L199[10:47:11]
<Forecaster> which might be the case if it
attacks too fast due to the invulnerability frames
L200[11:15:36]
⇨ Joins: ben_mkiv (~ben_mkiv@88.130.158.136)
L201[11:19:18] ⇦
Quits: Fridtjof (znc@thonk.9net.org) (Ping timeout: 190
seconds)
L202[11:19:35] ⇦
Quits: Stary (znc@thonk.9net.org) (Ping timeout: 202
seconds)
L203[11:19:43] ⇦
Quits: CompanionCube (znc@thonk.9net.org) (Ping timeout: 190
seconds)
L204[11:32:36]
⇨ Joins: OCTS (webchat@183.78.52.79)
L205[11:33:06] <OCTS> anybody here?
L206[11:36:26]
<Forecaster> NOPE
L207[11:47:31] ⇦
Quits: ben_mkiv (~ben_mkiv@88.130.158.136) (Killed (NickServ (GHOST
command used by
ben_mkiv|afk!~ben_mkiv@88.130.156.158)))
L208[11:47:37]
⇨ Joins: ben_mkiv|afk (~ben_mkiv@88.130.156.158)
L209[12:14:43]
⇨ Joins: expert975 (~expert975@191.223.109.106)
L210[12:15:12] ⇦
Quits: OCTS (webchat@183.78.52.79) (Quit:
webchat.esper.net)
L211[12:45:20]
⇨ Joins: Thutmose
(~Patrick@host-69-59-79-181.nctv.com)
L212[12:51:48] ⇦
Quits: AdorableCatgirl
(~sam@pool-74-110-180-14.rcmdva.fios.verizon.net) (Ping timeout:
190 seconds)
L213[12:58:38] <ironmountain> %tonk
L214[12:58:38] <MichiBot> I'm sorry
ironmountain, you were not able to beat CompanionCube's record of
23 hours, 1 minute and 57 seconds this time. 16 hours and 29
seconds were wasted! Missed by 7 hours, 1 minute and 28
seconds!
L215[12:58:46] <ironmountain> ;-;
L216[13:00:21]
<Forecaster> %tonkattempts
L217[13:00:22] <MichiBot> You have 2
attempts left.
L219[13:03:03] <expert975> You can't make
the variables global
L220[13:03:42] ⇦
Quits: Thutmose (~Patrick@host-69-59-79-181.nctv.com) (Quit:
Leaving.)
L221[14:54:24] ***
AmandaC is now known as Amanda
L222[15:11:06]
<Ocawesome101> expert975: replace some
newlines with semicolons and get it down to one line.
L224[15:11:37] <Amanda> That's not really
saving bytes.
L225[15:11:41] <expert975> That does not
reduce the character count
L226[15:11:57]
<Ocawesome101> Oh ok
L227[15:12:10]
<Ocawesome101> In that case I don’t think
it’s possible.
L228[15:12:55] <Amanda> I mean,
technically on windows it'd save n-lines bytes, but on any sane OS
It'd not save anything. and I'm pretty sure OC uses just \n for
newlines.
L229[15:13:12] <Amanda> rather OpenOS
does
L230[15:16:13] <bauen1> expert975: yes,
remove the last \n from the file to save 1 byte
L231[15:17:05] <expert975> bauen1: lines
end with a newline, not sure that's a good idea
L232[15:17:35] <bauen1> (unless there is
code that follows) you can remove the newline on the very last
line
L233[15:18:13] <expert975> If I remove the
local, function and return keywords it could go down to 255 bytes,
allowing the program to fit in the data section of the EEPROM
L234[15:18:48]
<DaComputerNerd> but then you'll
undoubtedly have someone say how terrible globals are
L235[15:19:05] <expert975> Not if that's
the code for a decompressor ;)
L236[15:19:20] <bauen1> also, if it is a
file in itself, you can replace 'return function(a)local
f,b,c,d,e=string,1,{},'' * end' with 'local
f,b,c,d,e,a=string,1,{},'',... * end' (untested, but should save a
few bytes)
L237[15:20:08]
<DaComputerNerd> could be designed to be
`require()`ed
L238[15:22:49] <expert975> DaComputerNerd:
Oh, I misunderstood your statement. Yes, globals are bad, that's
why I'm looking for another way
L239[15:25:31] <bauen1> expert975: replace
'if g then ... end' with 'c[#c + 1]=g d=g and h(d..g,-4096)or d'
(since a nil does not count against the length, should be
equiviallent)
L240[15:30:06] <bauen1> expert975: if you
can also assure, that one variable is always of type string, you
can just use that instead of 'f' to access string methods
L241[15:30:53] <expert975> bauen1: nice
idea
L242[15:31:25] <bauen1> e.g. replace
'f.unpack(...)' with 'e.unpack(...)' (in this case
`('>I2'):unpack(a,b)` is also possible)
L243[15:31:35] <bauen1> what exactly does
the code do ?
L244[15:31:58] <expert975> bauen1: it gets
the raw data from a string
L245[15:32:45] <bauen1> is there an
ungolfed version ?
L246[15:32:57] <expert975> bauen1: There
is
L248[15:34:13] <expert975> The code is an
lzss decompressor
L250[15:38:12] <bauen1> expert975: if you
care about locales, declare 'j' and 'k' on the first line of
locals, also k might be unecessary, since it is only used
once
L251[15:38:38] <expert975> bauen1: It is,
let me send you my current state
L253[15:40:15] <expert975> bauen1: I've
changed the c from a table to a string
L254[15:41:33] <expert975> bauen1: I'm
trying to figure out how to remove the 'if g then' part as you
said
L255[15:44:26] <bauen1> expert975: now
that 'c' is a string it's no longer possible to save bytes that
way
L256[15:45:43] <expert975> bauen1:
converting to a string saved 8 bytes. How much would removing the
if save?
L257[15:47:22] <bauen1> 2
L258[15:48:11] <expert975> bauen1: that's
all?
L259[15:51:59] <bauen1> expert975: replace
'local j=...' with 'j=...' and add 'j' to the local declaration on
line 1 without value
L260[15:52:28] <expert975> bauen1:
Nice!
L261[15:53:21] <bauen1> same procedure
with i
L262[15:56:15] <Amanda> I love when in a
litrpg story, The System is a sarcastic little shit.
"Classification: E+ [A Chicken could eliminate you with a
fart... you're still too weak ]"
L263[15:56:23] <expert975> bauen1: then
share equal sign between i and j
L264[15:56:48] <expert975> bauen1: Oh, no.
It can't
L265[15:57:47] <expert975> bauen1: b and j
can
L266[15:57:48] <bauen1> you can, lua seems
to only "assign" after all have been computed, e.g.
'a,b="a",a..b' => error since a is still nil
L267[15:57:54] <bauen1> it doesn't get you
anything though ...
L268[15:58:14] <bauen1> expert975: do you
know that the input to this function will always be free of errors
?
L269[15:58:56] <Amanda> %choose hack-cat
or halucinate-cat
L270[15:58:57] <MichiBot> Amanda: If I
had a gold nugget for every time someone asked me about
"hack-cat"
L271[15:59:21] <Amanda> Hrm. I'll log in
and check my honeypots for any flies
L272[15:59:44] <expert975> bauen1: the
build system uses the compressor on the code then embeds the
decompressor on the final ROM, so if the compressor on the code
I've sent is correct, that's the one that will always be used
L273[16:00:24] <bauen1> so you could just
remove the 'if offset < #input' checks (i think)
L275[16:01:30] <bauen1> expert975: remove
'b<=#a' on line 4, replace 'elseif .. then' with 'else' on line
6
L276[16:02:15]
<Bob>
defining g as nil is completly useless
L277[16:02:22]
<Bob> so
you can just make it local and not bind any value to it
L278[16:02:35]
<Bob> so
`local h,g=c.sub`
L279[16:03:02] <bauen1> ^ just move the g
to the first local declaration
L280[16:03:17]
<Bob> from
the frist *
L281[16:03:21]
<Bob> its
alraedy in the frist
L282[16:03:23] <expert975> Bob: the
variable doesn't get defined every loop iteration, and it's checked
if it's nil.
L283[16:03:55] <bauen1> oh right
L284[16:04:07] <expert975> bauen1: I
suppose I could move g declaration up and remove the local
L285[16:04:16]
<Bob> its
within the loop scope so each new iteration its getting
nilled
L286[16:04:29]
<Bob> you
may want to move it up yeah
L287[16:04:29] <bauen1> not if you move
the declarations up
L288[16:04:46] <bauen1> expert975: paste
an updated version ?
L289[16:04:52]
<Bob> well
in the latest snipet its clearly inside
L290[16:05:16] <expert975> bauen1: I can't
remove the local, it has h=c.sub
L291[16:05:20] <bauen1> maybe you can
rework the `if-else if g then ... ` logic a bit to reduce the
amount of ifness
L292[16:05:58] <bauen1> expert975: if you
declare h on the first line (+2) and just assign it later you can
save 'local ' (-6)
L293[16:06:34] <expert975> bauen1: I can't
define c and use it on the same line
L294[16:06:40] <expert975> bauen1:
*statement
L295[16:06:56] <bauen1> which is why you
declare it first and assign it later so you can save the 'local
'
L296[16:07:59] <bauen1> e.g. add 'h' to
the first local: 'local a,b,c,...,h ...' and just leave the
assignment 'h=c.sub'
L297[16:08:11] <expert975> bauen1: Oh, I
see
L298[16:08:29] <expert975> bauen1: no need
to define, only declare
L300[16:10:42] <expert975> Only 1 local
remaining, how ideal
L301[16:11:05] <expert975> Now if we only
could remove some of those ifs
L302[16:12:04] <bauen1> expert975: as i
already said you can probably remove the ' and b<=#a' on line 4
(-10) and 'if b<#a then' line 6 (-1=)
L303[16:12:28] <bauen1> but then you need
to ensure that this function only gets "good" input
L304[16:12:38] <bauen1> else it may error
or just never return, i'm not sure \o/
L305[16:13:02] <bauen1> after that, since
g should never be nil, the 'if g then ... end' can be removed
L306[16:13:41] <bauen1> yielding -14
L307[16:18:18] <expert975> Something went
wrong, I it doesn't unpack grep anymore. I must walk back
L308[16:18:41] <bauen1> rip
L309[16:19:10] <expert975> That's what git
is for :D
L310[16:20:55] <bauen1> ah right, did
someone actually start writing a git-client for OpenOS / lua
?
L311[16:21:40] <expert975> bauen1: if not
we should, I have some knowledge on the its internals
L312[16:21:52] <expert975> bauen1: g can
be nil
L313[16:22:33] <expert975> bauen1: [[if
g==nil then print("g is nil")]] prints 4 times
L314[16:23:05] <expert975> *on its
internals
L315[16:28:39]
<Kristopher38> I think nobody bothered to
write git for OC cause editing in-game is crap and most people do
that stuff (talking about local save) in their save folder, so you
can use normal git
L316[16:31:05] <expert975> bauen1: it
unpacks grep. It was a silly mistake. Back on it
L317[16:35:12] <bauen1> true, but having a
git client that can clone and checkout would be quite nice
L318[16:35:57] <bauen1> expert975: new
version ?
L319[16:37:46] <expert975> bauen1: not
yet, I'm analyzing the elseif
L320[16:40:43] <bauen1> 291, getting close
to 255 lol
L321[16:42:59] <expert975> bauen1: Yep
:)
L322[16:43:35] <expert975> oppm has a
package called gitrepo. Its description says it downloads git
repositories
L323[16:45:23] <expert975> bauen1: offset
is incremented every while loop iteration, it doesn't come from
input
L324[16:45:29]
⇨ Joins: Ariri
(uid378594@id-378594.hathersage.irccloud.com)
L326[16:51:36]
<Kristopher38> What else would you
expect?
L327[17:00:23]
⇨ Joins: gamax92
(~gamax92@c-73-153-119-160.hsd1.co.comcast.net)
L328[17:00:23]
zsh sets mode: +v on gamax92
L329[17:01:19]
⇨ Joins: regakakobigman_
(~regakakob@c-73-174-187-176.hsd1.pa.comcast.net)
L330[17:01:23]
⇨ Joins: Vexatos
(~Vexatos@port-92-192-27-80.dynamic.as20676.net)
L331[17:01:23]
zsh sets mode: +v on Vexatos
L333[17:05:17] <bauen1> expert975: does
'b<#a' ever not apply for a valid compressed file ?
L334[17:06:34] ⇦
Quits: regakakobigman
(~regakakob@c-73-174-187-176.hsd1.pa.comcast.net) (Ping timeout:
378 seconds)
L335[17:09:13] <expert975> bauen1: I was
thinking that evaluated to false on the last iteration of the while
loop, but I guess it does not
L336[17:10:27] <bauen1> also the 'b<=#a
' of the first if might never match
L337[17:10:51] <bauen1> but your test
showing that g equals nil some times means that one of them has to
match
L338[17:11:33] <expert975> bauen1:
replacing b<#a with true in the first if works
L339[17:11:35] <expert975> bauen1: what do
you mean?
L340[17:14:43] <bauen1> if neither of
these matches matter (as i suspected they are just to prevent the
original function from crashing on invalid input) you can remove
them
L341[17:15:33] <bauen1> after that 'g'
will only ever be nil if one of the calls to string.sub actually
returns nil, and i don't think that can actually happen, so
removing the 'if g then ... end' should be possible
L342[17:18:58]
<ThePiGuy24> what does that program even
do?
L343[17:19:14]
<ThePiGuy24> and i have a way to make it 1
byte even shorter :p
L344[17:19:22]
<ThePiGuy24> it involves maths
L345[17:19:30]
<ThePiGuy24> and shit
L346[17:19:57] <expert975> ThePiGuy24:
It's an lzss decompressor. Maths are fun, do it
L347[17:20:14]
<ThePiGuy24> how to test it?
L348[17:20:24]
<ThePiGuy24> so i know whether i broke it
or not
L349[17:20:48] <expert975> bauen1: offset
is incremented in the inner loop, and seems to make sure that
string.sub does not try to read past the end of the input.
L350[17:21:31] <expert975> ThePiGuy24: I
guess the easiest way would be to use my OC computer on my MC
server
L351[17:21:51]
<ThePiGuy24> hm
L352[17:22:14] <expert975> bauen1:
string.sub corrects the input to be the last string position if
it's greater than its lengh, so there's no need! Let me check if
string.unpack does the same correction
L353[17:22:49] <expert975> bauen1: if that
check can be removed the 'if ifelse' becomes an 'if else' and
matters are much simple
L354[17:23:48]
<ThePiGuy24> any way to test with ocvm so
i dont have to boot up the game?
L355[17:24:03] <expert975> ThePiGuy24: you
could use the compressor I've sent earlier to compress some data
then use the decompressor we're playing with to decompress. Compare
input and output data
L356[17:24:20]
<ThePiGuy24> ok
L357[17:24:29] <expert975> ThePiGuy24: You
can use any Lua5.3 interpreter
L358[17:24:39]
<ThePiGuy24> ok
L360[17:30:41]
<ThePiGuy24> replaced -4096 with
-4^6
L361[17:31:43] <expert975> ThePiGuy24:
Nice, I had only thought of using base 2 xD
L362[17:33:17] <expert975> That kills a
byte xD
L363[17:33:22]
<ThePiGuy24> yes
L364[17:33:30]
<ThePiGuy24> this is like
speedrunning
L365[17:33:33]
<ThePiGuy24> speedbyting
L366[17:35:01]
<ThePiGuy24> bytechasing
L367[17:35:09]
<ThePiGuy24> yes thats what we should call
it
L368[17:36:13] <expert975> bytechasing,
yes
L369[17:36:20] <Mimiru> code golf.
L370[17:36:26] <expert975> Mimiru:
xD
L371[17:36:30] <Mimiru> It's a
thing.
L372[17:36:33] <expert975> o.o
L373[17:36:34] <Mimiru> %g code golf
L374[17:36:35] <MichiBot> Mimiru:
https://codegolf.stackexchange.com/ - *Code Golf
Stack Exchange*: "What's my telephone number? code-golf
sequence · 27 mins ago Galen ... a 10 by 10 grid of asterisks ·
code-golf kolmogorov-complexity · 2 hours ago
sporeball."
L375[17:36:56] <expert975> Of course it
is
L376[17:37:00] <Mimiru> do thing in least
bytes
L377[17:37:10] <Mimiru> there are even
languages that are MADE for it.
L378[17:37:12] <bauen1> unless you're
trying to golf brainfuck code it can be quite fun too
L379[17:37:24] <Mimiru> stuff that uses
UTF-8 and the like to do functions in single characters
L380[17:37:26]
<ThePiGuy24> ono not brainfuck
L381[17:37:47] <Mimiru> %bf
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
L382[17:37:48] <MichiBot> Hello
World!
L383[17:38:09]
<ThePiGuy24> e
L384[17:39:10] <Mimiru> %bf
+[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.
L385[17:39:18] <Mimiru> welp, I angered
MichiBot
L386[17:39:20] <Mimiru> %test
L387[17:39:20] <MichiBot> Mimiru:
Success
L388[17:39:27] <Mimiru> Well, theres that
atleast.
L389[17:41:07] ***
MajGenRelativity_ is now known as MajGenRelativity
L390[17:41:47]
<Forecaster> %sip
L391[17:41:49] <MichiBot> You drink a
gloopy dalekanium potion (New!). After the first sip the potion
poofs away.
L392[17:41:53]
<Forecaster> aw
L393[17:46:55] ⇦
Quits: max (~m@irc.everythingisawesome.us) (Ping timeout: 202
seconds)
L394[17:47:13]
<ThePiGuy24> %sip
L395[17:47:13] <MichiBot> You drink a
slimy oculemon potion (New!). ThePiGuy24 grows whiskers until
Sozin's Comet returns.
L396[17:47:24]
<ThePiGuy24> well shit guess im a furry
now
L397[17:48:22]
⇨ Joins: maxpowa (~m@irc.everythingisawesome.us)
L398[17:50:13]
⇨ Joins: Backslash
(~Backslash@d75-156-174-126.abhsia.telus.net)
L399[17:58:21] ***
maxpowa is now known as max
L400[17:58:23] <expert975> bauen1: I can't
prove b<=#a == true, and string.unpack fails hard if you try to
index beyond the string
L401[17:59:39] <expert975> bauen1: in my
tests b<=#a is always true, but I didn't test every possible
input
L402[18:01:03] <expert975> bauen1: oh,
wait, it isn't always true
L403[18:04:58] <bauen1> you can only
remove both together, not one only (except if you can prove it is
always true, then you can probably change the logic a bit
around)
L404[18:08:29] <expert975> bauen1: If I
remove them both then the string.unpack and string.sub might read
past the string
L405[18:10:19] <expert975> bauen1: in that
case string.sub returns an empty strings and string.unpack
errors
L406[18:10:33] <bauen1> hm, so it could be
possible to remove the one around string.sub then
L407[18:12:40] <bauen1> which means that
in cases of 'b<=#a' g will not be nil, which also means that in
those cases the 'if g then' can be optimised away
L408[18:17:05] <expert975> bauen1: in that
case, g would be nill if not b<=#a and not e&1~=0
L409[18:17:34] <expert975> bauen1: in
other words, if it doesn't hit the if or the elseif
L410[18:40:34]
<Ocawesome101> How many bytes are you at
now?
L411[18:41:15]
<Ocawesome101> And what exactly is this
decompressor for?
L412[18:42:55] ⇦
Quits: Vexatos (~Vexatos@port-92-192-27-80.dynamic.as20676.net)
(Ping timeout: 202 seconds)
L413[18:45:01] <expert975> This compressor
is for storing compressed code in EEPROMs
L414[18:45:44] <expert975> It's at
289B
L415[18:45:44]
<Ocawesome101> Ah. That could be very
useful.
L416[18:46:07] <expert975> If I can get it
down to 256 I can store it in the data section of the EEPROM
L417[18:46:12]
<Ocawesome101> Have you removed the
if-else stuff that bauen was talking about removing?
L418[18:46:32] <expert975> I couldn't do
that yet, but I'm staring at it
L419[18:49:45]
<Ocawesome101> Hmm... could one do a
compressed kernel in this way?
L420[18:50:25] <expert975> You could
compress any lua code
L421[18:50:41]
<Ocawesome101> Perhaps using a slightly...
less miniscule bit of code
L422[18:51:14] <expert975> This on does
it, why need a less minuscle code?
L423[18:52:07] <expert975> The thing is:
you can't compress the decompressor. It better be small xD
L424[18:52:43] <expert975> I mean,
technically you *can* compress the decompressor, but then...
L425[18:52:58]
<Ocawesome101> You need a decompressor to
decompress the decompressor
L426[18:53:05] <Mimiru> Yo dawg.
L427[18:53:16] <Mimiru> I'm gonna date
myself here...
L428[18:53:22]
<Ocawesome101> ?
L429[18:53:43] <Mimiru> I once used a
spanned archive to split a zip program across floppy disks..
because I needed a zip program on the destination computer
L430[18:53:52] <Mimiru> then, I had no way
to re-assemble the spanned archive
L431[18:53:53] <expert975> lol
L432[18:55:09] <expert975>
7zip-installer.7z
L433[18:56:38] <bauen1> expert975:
actually, by "mergeing" the inner if-conditions i think
you already broke the logic in some way
L434[18:57:19] <bauen1> sinf 'if true then
if false then return end else assert("should not happen")
end' != 'if true and false then return else assert("should not
happen") end'
L435[18:57:24]
⇨ Joins: Vexatos
(~Vexatos@port-92-192-70-125.dynamic.as20676.net)
L436[18:57:24]
zsh sets mode: +v on Vexatos
L437[18:57:28] <bauen1>
s/sinf/because/
L438[18:57:29] <MichiBot> <bauen1>
because 'if true then if false then return end else
assert("should not happen") end' != 'if true and false
then return else assert("should not happen") end'
L439[18:57:29] <expert975> bauen1: not the
'else if' into 'elseif'
L440[18:57:44] <bauen1> yes, but the first
one
L441[18:58:41] <expert975> bauen1: my
truth table says I didn't
L442[18:58:47] <expert975> bauen1: they
are equivalent
L443[18:58:48] <bauen1> but i'm not sure
if '(flags & 1) ~= 0' will be true while 'offset <= #input'
will be false for valid input
L444[18:59:08] <bauen1> oh yeah
L445[18:59:18] *
bauen1 blames too much looking at code
L446[18:59:18] <expert975> bauen1: that's
where we could gain those pesky bytes
L447[18:59:46] <expert975> bauen1: maybe
checking out the compressor could help understanding if this
condition ever happens
L448[19:00:32] <bauen1> now, if 'offset
<= #input' is false, the function will terminate anyway, so i
think that condition can be happily removed (since string.sub will
just return '')
L449[19:05:16] <expert975> bauen1: what
about the nil check?
L450[19:06:02] <bauen1> true, you probably
can't remove it, since it would then override the 'window' which
could technically still be used ._.
L451[19:19:01] <bauen1> i wonder how much
of a full-blown "operating system" you can cram into an
eeprom
L452[19:20:04] <expert975> bauen1: minify
and compress everything all the code and you might have a
chance
L453[19:22:03] <expert975> hmm, let me
chack how much data you can store in the label :D
L454[19:23:19] <expert975> *check
L455[19:23:34] <bauen1> lol
L456[19:24:09]
<Ocawesome101> I want OpenOS on an EEPROM
ASAP
L457[19:24:51] <Mimiru> how big is
OpenOS?
L458[19:25:32] <expert975> Mimiru: OpenOS
is 374.6kB on my floppy
L459[19:25:55] <expert975> The EEPROM
label can store 25 bytes. So I got that going for me
L460[19:25:57] <Mimiru> Not bad, 400K
eeprom coming up.
L461[19:26:21] <Mimiru> meh, I'll go 512k
just to be nice.
L462[19:26:40] <expert975> EEPROM
RAID
L463[19:26:54]
<Ocawesome101> Through minification,
ofc
L464[19:27:03]
<Ocawesome101> Minification and
compression
L465[19:27:56] <expert975> I wonder how
small could OpenOS go with only minification and compression
L466[19:30:34] <bauen1> actually, i should
spent my time on implementing a huge storage system first ...
L467[19:31:38]
<Kristopher38> Storage on hard
drives?
L468[19:32:40]
<Kristopher38> In that case there was some
filesystem already written which presented all connected RAIDs as
one big filesystem
L469[19:43:19]
<AdorableCatgirl> did someone say large
EEPROMs
L470[19:43:30]
<AdorableCatgirl> also LZSS is super
neato
L471[19:46:25]
<AdorableCatgirl> someone ported XZ to lua
in another guild
L472[19:46:41]
<AdorableCatgirl> xz is yucky but it's
still neat
L473[19:47:30]
<AdorableCatgirl> it was only a
decompressor
L475[19:51:00] <Mimiru> Well, I mean...
OpenSec has a config option to let you write 8k EEPROMs
L476[19:51:05] <Mimiru> but yes, I said
512K eeproms.
L477[19:52:40]
<AdorableCatgirl> that reminds me
L478[19:52:44]
<AdorableCatgirl> i never finish
shit
L480[19:53:08]
<AdorableCatgirl> i need to get my flash
memory update to OSSM ouy
L481[19:53:11]
<AdorableCatgirl> *out
L482[19:53:49]
<AdorableCatgirl> oh yeah, 8 to 32KiB of
R/W memory for EEPROMs and tablets
L483[19:57:26] ⇦
Quits: Victor_sueca (~Victor_su@90.165.120.190) (Ping timeout: 378
seconds)
L484[19:58:05]
⇨ Joins: Victor_sueca
(~Victor_su@90.165.120.190)
L485[20:01:24]
⇨ Joins: Stary (znc@thonk.9net.org)
L486[20:02:16]
⇨ Joins: Fridtjof (znc@thonk.9net.org)
L487[20:02:55]
⇨ Joins: CompanionCube (znc@thonk.9net.org)
L488[20:04:02] <CompanionCube>
%oclogs
L490[20:08:49] <bauen1> @Kristopher38 yes,
but with RAID and friends you have multiple issues (scalability and
what to do if one drive fails or becomes unavailable), i was
thinking about something similiar to ceph (think amazon s3 like)
where you can have multiple networked computers with multiple disks
create a common pool for objects (that can be distributed for
high-availability or speed)
L491[20:10:18] <expert975> bauen1: sounds
fun!
L492[20:13:52] <bauen1> yeah, i still
haven't managed to actually implement the necessary algorithm from
the scientific paper ._.
L493[20:14:56] <expert975> Why not? What
paper?
L495[20:35:14] ⇦
Quits: ben_mkiv|afk (~ben_mkiv@88.130.156.158) (Ping timeout: 200
seconds)
L496[21:05:08] <bauen1> actually, the more
important part of the crush algorithm is the ability to use disks
of different sizes
L497[21:05:11] <bauen1> floppy cluster
here i come
L498[21:07:27]
⇨ Joins: Kleadron
(~kleadron@c-73-254-147-9.hsd1.wa.comcast.net)
L499[21:14:36] ⇦
Quits: CarlenWhite (~CarlenWhi@60.sub-174-241-128.myvzw.com) (Ping
timeout: 198 seconds)
L500[21:19:07]
<Forecaster> dammit google... -_-
L501[21:19:44]
<Forecaster> why do you keep adding more
and more restrictions to apps forcing them to become less
useful
L502[21:19:48]
<Forecaster> ug
L503[21:19:52]
<Forecaster> ugh [Edited]
L504[21:20:09]
⇨ Joins: CarlenWhite
(~CarlenWhi@15.sub-174-231-128.myvzw.com)
L506[21:21:03]
<Durex77>
How long do you think it takes to move a stack of items from the
lower chest to the upper?
L507[21:21:43]
<AdorableCatgirl> also i just thought
about something with flash memory in OSSM
L508[21:21:45]
<AdorableCatgirl> fuckin
L509[21:21:48]
<AdorableCatgirl> cache
L510[21:23:23]
⇨ Joins: Thutmose
(~Patrick@host-69-59-79-181.nctv.com)
L511[21:25:06]
<Forecaster> my mobile data tracker app
just updated and said that google changed the policy so they
"couldn't identify individual sim cards" anymore, which
for some reason meant it had to reset and delete the plan I'd
configured...
L512[21:25:09]
<Forecaster> :|
L513[21:26:10]
<Forecaster> so frustrating
L514[21:35:06] <CompanionCube> that's
telling in a bad way
L516[21:38:55] <CompanionCube> was it a
particularly large amount of data?
L517[21:39:42]
<Forecaster> several years worth of usage
history and this months usage
L519[21:45:49]
<Kristopher38> But I'm curious to know,
tell me more
L520[21:48:27]
<Kristopher38> Also I bet floppy cluster
would sound awesome
L521[21:48:48]
<ThePiGuy24> yes
L522[21:49:03]
<Kristopher38> What do you want to store
since you need that much storage?
L523[21:58:08] ⇦
Quits: Kleadron (~kleadron@c-73-254-147-9.hsd1.wa.comcast.net)
(Quit: Xbox overlords taking over the planet)
L526[23:11:18]
<Ocawesome101> expert975: I think you can
remove the `nil` at the end of line 4
L527[23:11:59]
<Ocawesome101> expert975: I’m pretty sure
you can remove the `nil` at the end of line 4 [Edited]
L529[23:15:23] ⇦
Quits: Vexatos (~Vexatos@port-92-192-70-125.dynamic.as20676.net)
(Quit: Insert quantum chemistry joke here)
L531[23:23:56] <Amanda> %8ball laptop goes
bye-bye?
L532[23:23:56] <MichiBot> Amanda: Reply
hazy, try again
L533[23:23:58] <Amanda> %8ball laptop goes
bye-bye?
L534[23:23:59] <MichiBot> Amanda: [ The
Bowling ball doesn't answer ]
L535[23:24:06] *
Amanda puts the laptop under the bowlinng ball
L536[23:28:12]
<Ocawesome101> expert975: How many bytes
are you down to?
L537[23:29:58] <expert975> 278B, 22 bytes
away from the data section of the EEPROM
L538[23:30:26]
<Kristopher38> why are you so motivated to
fit into the data section
L539[23:30:29]
<Ocawesome101> Ooo, getting closer
L540[23:30:54] <expert975> Kristopher38:
because I can
L541[23:31:20]
<Kristopher38> sure, does it provide any
benefits though?
L542[23:31:27]
<Kristopher38> like practical
benefits
L543[23:32:19]
<Kristopher38> you want to fit into the
data section so the whole user program fits in the normal eeprom
memory?
L544[23:33:01] <expert975> Yes
L545[23:33:56]
<Kristopher38> I see
L546[23:34:05] <expert975> It will be like
the decompressor is not even there and the user can magically run
compressed code :)
L547[23:34:10]
<Kristopher38> that's kool actually
L548[23:34:37]
<Kristopher38> 22 bytes to shave off seems
like a lot at this stage
L549[23:34:44] <expert975> It does
haha
L550[23:34:57] <expert975> I'm analyzing
the algorithm to see if I can change anything
L551[23:35:02]
<Kristopher38> good luck then, I'd like to
see it happen
L552[23:38:08]
⇨ Joins: Kleadron
(~kleadron@c-73-254-147-9.hsd1.wa.comcast.net)