mark4 changed the topic of #forth to: Forth Programming | do drop >in | logged by clog at http://bit.ly/91toWN backup at http://forthworks.com/forth/irc-logs/ | If you have two (or more) stacks and speak RPN then you're welcome here! | https://github.com/mark4th
<veltas> I do this too, I prefer less head-scratching with stack contents
<veltas> Lots of stack comments
<veltas> Well where the content changes from one line to next
<KipIngram> tabemann: I also found the 64-line block to be much more "capable" than the 16-line block. Not much really fits in 16, but a lot fits in 64.
<KipIngram> And it just so happens that 64 lines fit on my screen with comfy font size.
<mark4> i prefer flat files to blocks :)
<KipIngram> I actually don't, but I certainly understand why files are the mainstream way.
<mark4> kip, are you secretly CM? :)
<veltas> Must be
<KipIngram> No, but I've sipped long and deeply from his writings, and from the ones that Fox has provided.
<veltas> The 64-bytes-per-line format is very wasteful
<mark4> fox died didnt he?
<mark4> veltas not if you dont do indentations and things :)
<veltas> mark4: I was searching for a suitable forth today and came across an old email you sent on comp.lang.forth
<veltas> Talking about an older forth you worked on
<mark4> oh god that must have been deades ago lol
<mark4> FPC?
<mark4> or is it isforth because isforth is x4
<veltas> I think isforth
<mark4> i renamed it because i want x4, x64, t4, n4 (ndk), a64 etc etc
<mark4> so a naming convention
<veltas> I think it was a discussion about GPL
<KipIngram> The whole "simple elegance" statement really resonates with me.
<KipIngram> To have a system I can fully understannd every single bit of - very gratifying. And that I can create myself, without outside fragments.
<KipIngram> veltas: sure it is. It obviously is compared to variable length lines.
<KipIngram> But holy cow - we have an infinity of storage on modern systems.
<KipIngram> You can waste lines your whole career and never make a dent in a modern drive.
<veltas> True, and ultimately a file with a newline token is still inferior to a compressed text file
<KipIngram> But hey - some people just find the principle of it (waste) offensive, and that's ok too.
<KipIngram> Very true.
<veltas> On the subject of being offensive, I think CM writes a lot of nonsense, but he is a genius and manages to sneak in a lot of quality with all the noise
<KipIngram> Our SSDs that we make at work sport hardware compression.
<veltas> I'm in awe of him but I've never found myself consistently nodding along with him
<KipIngram> We have a 38.4TB physical space drive that we have advertise over 80 TB of logical space.
<KipIngram> That's a 38.4TB physical drive in a 2.5" format.
<KipIngram> So if you've got that it doesn't really matter what you do - the algorithm will save your space for you.
<KipIngram> You could still argue, though, that you have to scan over all those spaces when loading source.
<veltas> What if I want to store random data samples
<veltas> Stuff that *looks* like noise, but nevertheless must be captured
<KipIngram> Yes. Good point. Well, you're certainly free to let your data span across contiguous blocks.
<veltas> I wonder how many drive manufacturers are lying about capacity
<KipIngram> You're free to do anything you want - that's one of the things I love about Forth.
<mark4> all of them lol
<KipIngram> I should say, though, that really making deep use of 1k blocks or 4k blocks or whatever is not something I've done an awful lot of.
<KipIngram> I mostly use the block to hold source code.
<KipIngram> Haven't like implemented a database system or anything like that.
<veltas> Blocks are great I just think the format sucks
<KipIngram> I've trained myself to live within those 64-character lines. I just got used to them after a while.
<KipIngram> That's why I target 45-50 chars - so even my "long lines" still fit.
<veltas> Better than 32-character lines
<KipIngram> I HATE having a definition spill beyond one line.
<KipIngram> veltas: do you have a preference for how your dictionary is organized in RAM?
<KipIngram> I put code, definition word lists, and storage space in one section, and the linked list and CFA/PFA pairs in another section.
<KipIngram> Primarily because it makes it easy to have words with multiple entry points.
<veltas> Not particularly no, as long as I can use it like normal
<veltas> Nighty night
<KipIngram> I can define a new word at any time, and it doesn't jam anyting into my definition stream.
<KipIngram> Night!
dave0 has quit [Quit: dave's not here]
tech_exorcist has quit [Quit: tech_exorcist]
xek_ has joined #forth
xek has quit [Ping timeout: 244 seconds]
boru` has joined #forth
boru has quit [Disconnected by services]
boru` is now known as boru
dave0 has joined #forth
sts-q has quit [Ping timeout: 265 seconds]
sts-q has joined #forth
spoofer has quit [Quit: Lost terminal]
spoofer has joined #forth
gravicappa has joined #forth
f-a has joined #forth
EasyAsPie has joined #forth
EasyAsPie has left #forth [#forth]
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
hosewiejacke has joined #forth
hosewiejacke has quit [Remote host closed the connection]
hosewiejacke has joined #forth
hosewiejacke has quit [Ping timeout: 268 seconds]
f-a has quit [Quit: leaving]
tech_exorcist has joined #forth
tech_exorcist has quit [Remote host closed the connection]
hosewiejacke has joined #forth
tech_exorcist has joined #forth
tech_exorcist has quit [Remote host closed the connection]
tech_exorcist has joined #forth
tech_exorcist_ has joined #forth
tech_exorcist has quit [Quit: tech_exorcist]
<proteus-guy> neuro_sys, hey - that's an application, not your own custom forth implementation! You can't do that! ;-)
<neuro_sys> How do you mean? :D
<neuro_sys> I'm writing a simple polygon based 3d renderer with Forth, so this is the piece that loads the mesh data into memory.
tech_exorcist_ has quit [Remote host closed the connection]
tech_exorcist_ has joined #forth
<neuro_sys> I'll write some more comments at the header for context
<neuro_sys> So far this is how it looks though, it's fun! https://imgur.com/p2UuPYn
tech_exorcist_ has quit [Remote host closed the connection]
tech_exorcist_ has joined #forth
<veltas> I'll look after work
tech_exorcist_ has quit [Quit: tech_exorcist_]
tech_exorcist has joined #forth
<neuro_sys> I'm still getting away without CREATE DOES>, I'm sure there's a use case for that I'll benefit at some point.
hosewiejacke has quit [Ping timeout: 245 seconds]
<inode> neuro_sys: cool project
<inode> looks like "2dup >r >r swap drop -" and "r> r> 1 /string" are common between slurp-float and slurp-integer, you could factor those out into their own words
<neuro_sys> Thanks! That's true, I'll do that.
<inode> also ">r >r" could be 2>R and "r> r>" could be 2R> if you wanted
<neuro_sys> Right, fixed
<inode> did you choose repeated slurp-float in add-vertex and repeated slurp-interger in add-face as an optimisation instead of looping?
<neuro_sys> Good point. I think it's just that I have a tendency to keep some of the repeating things as it reads more explicit/clear to me that way. Although it's not a very rational decision.
<neuro_sys> I'll convert them to do loop though
<inode> well it's your code, so if you prefer it that way no reason to change it :)
<veltas> Sometimes explicitly writing stuff multiple times is 'neater' IMO
f-a has joined #forth
proteus-guy has quit [Remote host closed the connection]
proteus-guy has joined #forth
hosewiejacke has joined #forth
f-a has quit [Ping timeout: 256 seconds]
f-a has joined #forth
f-a has quit [Read error: Connection reset by peer]
f-a has joined #forth
f-a has quit [Client Quit]
<mark4> just performed a successful open heart surgery on my mx master mouse. took the failing 500mah battery out and put a shiny new 800mha batter in its place
hosewiejacke has quit [Ping timeout: 245 seconds]
dave0 has quit [Quit: dave's not here]
proteus-guy has quit [Ping timeout: 260 seconds]
hosewiejacke has joined #forth
hosewiejacke has quit [Ping timeout: 260 seconds]
hosewiejacke has joined #forth
hosewiejacke has quit [Ping timeout: 245 seconds]
f-a has joined #forth
gravicappa has quit [Ping timeout: 260 seconds]
f-a has quit [Quit: leaving]
<KipIngram> Cool.
<KipIngram> So, mark4, what is the "gist" of your approach to error recovery? As we compile lines or blocks, the system gets modified. Then an error occurs and we restart the interpreter, but the system is in some different state from when we started.
<KipIngram> On my last one (and I'm planning to do this again), I took a snapshot of the entire system before I started interpreting a line of text.
<KipIngram> If an error occurs anywhere on the line, I restore the system from that snapshot, so that everything reverts to the beginning of line state.
<KipIngram> Then I can just curor up into my command history, fix the error, and hit Enter.
<mark4> define state?
<mark4> oh
<KipIngram> Everythingn.
gravicappa has joined #forth
<KipIngram> Vocabulary structure, variable values, etc.
<mark4> lost of new code compiled thats now deadwood
<mark4> empty
<mark4> or forget blah
<mark4> or marker blah ...... oopts
<mark4> blah
<mark4> forgets everything from blah on
<KipIngram> Prior to taking that fairly drastic step I had real trouble with errors.
<mark4> resets dictionary to preious state
<KipIngram> Yes.
<mark4> that step is not automatic
<mark4> you have to type empty
<KipIngram> Say your code creates a new vocabulary, makes it current, and then an error occurs.
<mark4> or forget blah
<KipIngram> So now your "current" is changed.
<mark4> easy. my forget handles forgetting of vocs
<mark4> and if a voc is forgotten forth is made current
<KipIngram> Ok, good.
<KipIngram> So you just try to "take care of everything that needs taking care of."
<KipIngram> I could never seem to get to that - there was always some subtle wrinkle that would eventually cause a problem.
<KipIngram> So I built myself a sledgehammer.
<mark4> well im hoping that a build wont crap out other than at developemnt time. so the developer will be able to chose
<mark4> inspect memory to see why it crapped out
<mark4> using dump etc
<KipIngram> Obviously if no error occurs I just forget about the copied image.
<mark4> or empty and start over
<mark4> look at how x4 implements forget
<KipIngram> It'll get overwritten the next time I snapshot.
<mark4> theres a variable called fence that you are not allowed to forget below
<KipIngram> Right, I remember FENCE.
<KipIngram> Anyway, the snapshotting thing worked well; I'll almost certainly do it that way again.
<KipIngram> Of course I have to write any registers with long term values to RAM before snapshotting, and restore them if I recover.
<mark4> really you only need to snapshot the contents of dp and every vocab array
<mark4> you dont need to erase memory
<mark4> im assuming you have a reveal similar to the way its done in x4 ?
<mark4> : foo ..... ; <-- till you hit ; this definition is not visible in the dictionary
<mark4> ; stuffs the name field address in the vocab at the slot specified by its hash value
<KipIngram> No, I'm not sure what "reveal" is.
<KipIngram> And yes - copying the whole thing definitely is overkill.
<KipIngram> It's just "easy."
<mark4> : foo ... foo ... ; wont work for recursion because foo is not in the dictionary yet
<KipIngram> And there is a certain "satisfaction" to knowing that the system is reverted completely to the initial state if a load operation leads to an error.
<KipIngram> Just fix the error, and repeat exactly what you were trying to do.
<mark4> what i do is at head creation time i calculate the hash for the word foo, create the header for it and what ever word address is in the voc at that hash bucket is put in the new words link field address
<KipIngram> Recursion works for me.
<KipIngram> : foo ..... foo ;
<KipIngram> makes an infinite loop.
<mark4> but the new words nfa does not overwrite the vocabs bucket yet
<KipIngram> I have a special word me that does that too.
<mark4> that would cause a stack overflow in x4 :)
<KipIngram> I can attach conditional behavior to me, like 0=me will loop back to the start if TOS == 0.
<mark4> : foo .... recurse .... ;
<mark4> works
<mark4> unless i commented out recurse :P
<KipIngram> Yes.
<KipIngram> Right. My system has the label visible immediately as soon as it's created.
<mark4> thats dangerous
<mark4> : foo ..... [ abort ]
<KipIngram> Well, it's different.
<mark4> now you can say foo and crash
<KipIngram> Yes - that's one of the things my error recovery fixes.
<KipIngram> It backs the system up to the beginning of the line.
<KipIngram> Completely and wholesale.
<mark4> well you dont want to lose everything prior to foo just because compilation of foo aborted
<KipIngram> Why?
<KipIngram> Maybe you do.
<mark4> you lost the definition of foo but not anything else?
<KipIngram> I like being able to just cursor up to the line that failed, fix the error, and hit enter.
<mark4> : blah ..... ;
<mark4> : fud ..... ;
<mark4> : fooo .... abort here
<KipIngram> : foo ... ; : bar ...<error>... ;
<mark4> are blah and fud lost?
<KipIngram> That will lose foo to in my system.
<mark4> ok thats good
<KipIngram> If I'm loading a bunch of screens it loses all of it.
<KipIngram> Everything is set for me to repeat the exact thing I just did.
<mark4> because xyz load <-- thats the line it backtracks to
<KipIngram> The last action *I* took was to hit enter.
<KipIngram> It backs up to there.
<mark4> right
<mark4> i get that
<KipIngram> So, the way I look at it, I did something that eventually caused an error.
<mark4> but that can also make debug difficult
<KipIngram> I fix the root cause, and then I can try the same action, exactly, again.
<mark4> you might have a definition : broken .... ;
<KipIngram> Yeah, I see what you mean.
<mark4> that was the cause of the problem
<KipIngram> There are pros and cons, I guess.
<mark4> : foo ... broken <craps out here>
<mark4> now you dont know it was broken that cause the problem
<KipIngram> I can always put "snap" somewhere in there, and that will reimage the system.
<KipIngram> So I can override the process as desired.
<mark4> kk
<KipIngram> But if I do that, I have to know that the system has advnced to the snap point, so I need to modify my followinng actions to account for that.
<mark4> so before i replaced my mouse battery it would take 2 days to fully charge and would last half a day lol
<KipIngram> Ouch - that really was getting dire.
<KipIngram> You'll be much happier.
<mark4> just put this new 800mah to replace the 500 and it charged from the 50% i got it at to 100% in an hour
<mark4> yea it was an annoyance lol
<mark4> charged it to 100% about an hour ago and its still on 100%
<mark4> they claim the original battery should last a month
<mark4> so this should last almost 2? :)
<mark4> mental note to self: fully charged mousie on 3/25
* mark4 taps foot waiting for battery to discharge
<mark4> the mouse feels slightly heavier now too.
ecraven has quit [*.net *.split]
lispmacs has quit [*.net *.split]
lispmacs[work] has quit [*.net *.split]
nitrix has quit [*.net *.split]
proteusguy has quit [*.net *.split]
wineroots has quit [*.net *.split]
bluekelp has quit [*.net *.split]
pareidolia has quit [*.net *.split]
tolja_ has quit [*.net *.split]
phadthai has quit [*.net *.split]
patrickg has quit [*.net *.split]
jn__ has quit [*.net *.split]
TangentDelta has quit [*.net *.split]
ornxka_ has quit [*.net *.split]
koisoke has quit [*.net *.split]
bluekelp has joined #forth
phadthai has joined #forth
ecraven has joined #forth
TangentDelta has joined #forth
ornxka has joined #forth
nitrix has joined #forth
tolja has joined #forth
koisoke has joined #forth
jn__ has joined #forth
pareidolia has joined #forth
proteusguy has joined #forth
lonjil has quit [*.net *.split]
a3f has quit [*.net *.split]
veltas has quit [*.net *.split]
veltas has joined #forth
lonjil2 has joined #forth
a3f has joined #forth
<veltas> Is there still a limit to the number of users in this channel?
siraben has quit [Ping timeout: 240 seconds]
<astrid> /mode will tell ya
jimt[m] has quit [Ping timeout: 244 seconds]
<mark4> looks like they are shutting down the internet in a few minutes :)
<mark4> i set it to 83 on the day i created the channel
<mark4> my JOKE about limiting the channel to the 83 standard lol
<mark4> which is a hard fast rule i never intended to enforce :)
<astrid> heh
<mark4> are we at that limit?
<astrid> i see 63 people joined
<mark4> the limit can be cleared any time it needs to be lol
<mark4> but my "funny" has stood for almost 20 years without one person getting it lol
lispmacs[work] has joined #forth
wineroots has joined #forth
nitrix has quit [Read error: Connection reset by peer]
f-a has joined #forth
nitrix has joined #forth
lonjil2 has quit [*.net *.split]
gravicappa has quit [*.net *.split]
Lord_Nightmare has quit [*.net *.split]
neuro_sys has quit [*.net *.split]
guan has quit [*.net *.split]
wineroots has quit [*.net *.split]
proteusguy has quit [*.net *.split]
koisoke has quit [*.net *.split]
spoofer has quit [*.net *.split]
remexre has quit [*.net *.split]
APic has quit [*.net *.split]
rpcope has quit [*.net *.split]
Vedran has quit [*.net *.split]
dnm has quit [*.net *.split]
ovf has quit [*.net *.split]
rprimus has quit [*.net *.split]
cmtptr has quit [*.net *.split]
ornxka has quit [*.net *.split]
TangentDelta has quit [*.net *.split]
xek_ has quit [*.net *.split]
Gromboli has quit [*.net *.split]
dzho has quit [*.net *.split]
koisoke_ has joined #forth
EPic has joined #forth
cmtptr has joined #forth
rpcope has joined #forth
rprimus has joined #forth
rprimus has joined #forth
rprimus has quit [Changing host]
Vedran has joined #forth
neuro_sys has joined #forth
dzho has joined #forth
spoofer has joined #forth
TangentDelta has joined #forth
remexre has joined #forth
guan has joined #forth
lonjil has joined #forth
dzho has quit [Changing host]
dzho has joined #forth
xek_ has joined #forth
wineroots has joined #forth
neuro_sys is now known as Guest15985
gravicappa has joined #forth
dnm has joined #forth
Guest15985 has joined #forth
Guest15985 has quit [Changing host]
ovf has joined #forth
ornxka has joined #forth
Lord_Nightmare has joined #forth
rann has quit [Ping timeout: 257 seconds]
rann has joined #forth
siraben has joined #forth
jn__ has quit [*.net *.split]
tech_exorcist has quit [*.net *.split]
fiddlerwoaroof has quit [*.net *.split]
WilhelmVonWeiner has quit [*.net *.split]
cp- has quit [*.net *.split]
_whitelogger has joined #forth
cp- has joined #forth
fiddlerwoaroof has joined #forth
Keshl has joined #forth
djinni has joined #forth
jedb_ has joined #forth
patrickg has joined #forth
jimt[m] has joined #forth
jn__ has quit [*.net *.split]
mstevens has quit [*.net *.split]
a3f_ has quit [*.net *.split]
jimt[m] has quit [*.net *.split]
rann has quit [*.net *.split]
Lord_Nightmare has quit [*.net *.split]
inode has quit [*.net *.split]
astrid has quit [*.net *.split]
jn__ has joined #forth
mstevens has joined #forth
rann has joined #forth
a3f_ has joined #forth
jimt[m] has joined #forth
astrid has joined #forth
Lord_Nightmare has joined #forth
inode has joined #forth
jedb__ has quit [Read error: Connection reset by peer]
rann has quit [Max SendQ exceeded]
mstevens has quit [*.net *.split]
a3f_ has quit [*.net *.split]
jimt[m] has quit [*.net *.split]
Lord_Nightmare has quit [*.net *.split]
inode has quit [*.net *.split]
astrid has quit [*.net *.split]
a3f has joined #forth
mstevens has joined #forth
krjt has joined #forth
astrid has joined #forth
Lord_Nightmare has joined #forth
lonjil has quit [*.net *.split]
dnm has quit [*.net *.split]
ovf has quit [*.net *.split]
siraben has quit [*.net *.split]
lonjil2 has joined #forth
dnm has joined #forth
ovf has joined #forth
jimt[m] has joined #forth
cantstanya has quit [*.net *.split]
rann has joined #forth
siraben has joined #forth
tech_exorcist has joined #forth
pareidolia has quit [*.net *.split]
boru has quit [*.net *.split]
MrMobius has quit [*.net *.split]
nihilazo has quit [*.net *.split]
mark4 has quit [*.net *.split]
joe9 has quit [*.net *.split]
rixard has quit [*.net *.split]
jyf has quit [*.net *.split]
dys has quit [*.net *.split]
dddddd has quit [*.net *.split]
klys has quit [*.net *.split]
xybre has quit [*.net *.split]
lispmacs[work] has quit [*.net *.split]
veltas has quit [*.net *.split]
ecraven has quit [*.net *.split]
bluekelp has quit [*.net *.split]
phadthai has quit [*.net *.split]
cantstanya has joined #forth
sts-q has quit [*.net *.split]
klys_ has joined #forth
joe9 has joined #forth
phadthai has joined #forth
mark4 has joined #forth
veltas_ has joined #forth
bluekelp has joined #forth
xybre has joined #forth
rixard has joined #forth
pareidolia has joined #forth
MrMobius has joined #forth
ecraven has joined #forth
jyf has joined #forth
dddddd has joined #forth
f-a has quit [Quit: leaving]
boru has joined #forth
nihilazo has joined #forth
sts-q has joined #forth
siraben has quit [Ping timeout: 258 seconds]
patrickg has quit [Ping timeout: 258 seconds]
jimt[m] has quit [Ping timeout: 258 seconds]
Zarutian_HTC has joined #forth
siraben has joined #forth
inode has joined #forth
patrickg has joined #forth
jimt[m] has joined #forth
EPic is now known as APic
hosewiejacke has joined #forth
hosewiejacke has quit [Remote host closed the connection]
gravicappa has quit [Ping timeout: 248 seconds]
dys has joined #forth
lispmacs[work] has joined #forth
veltas_ is now known as veltas
<veltas> mark4: Yeah I think it would be good to remove the limit, it can only cause trouble
<mark4> BUT ITS FUNNY!!!!! lol
<mark4> someone who knows how can remove it :)
mark4 has quit [Remote host closed the connection]
kipingram1 is now known as KipIngram
Zarutian_HTC has quit [Ping timeout: 240 seconds]
Zarutian_HTC has joined #forth
tech_exorcist has quit [Remote host closed the connection]
tech_exorcist has joined #forth
tech_exorcist has quit [Remote host closed the connection]
tech_exorcist has joined #forth
tech_exorcist has quit [Remote host closed the connection]
tech_exorcist has joined #forth
* crc will remove it if it becomes an issue
<remexre> is there a standard name for the word equivalent to NOT NOT
<inode> 0<> ?
<remexre> ah, thanks
tech_exorcist has quit [Remote host closed the connection]
tech_exorcist has joined #forth
<veltas> crc: My concern is that we won't realise it's an issue until a bunch of people have not been able to join
<veltas> It's not exactly going to notify people sitting in here when the limits reached (as far as I know?)
<crc> We're at 65 people, if the number rises into the mid 70's, I'll remove the limit
* crc should add something to his next bot to watch and report if the limit is getting close to being hit
X-Scale` has joined #forth
X-Scale has quit [Ping timeout: 258 seconds]
X-Scale` is now known as X-Scale
Zarutian_HTC has quit [Remote host closed the connection]
mark4 has joined #forth
<tabemann> why have a limit?
<mark4> it was a joke. limit the channel to the 83 standard lol
<tabemann> then you should have a limit of 65535
<mark4> it was an anti ans forth joke :P
<tabemann> yes, and Forth 83 mandated a 16-bit cell size
<mark4> at least it didnt have invert (limp wristed), postpone or any of that garbage i loathe and despise