10:58:43
##forth
<veltas>
crc: Maybe `manual` should have link highlighting?
10:59:09
##forth
<veltas>
I suggest it because it feels like it would be a little easier to read with all the punctuation if the punctuation or whole links were a different colour
10:59:36
##forth
<veltas>
Also have you considered printing a space at the end of output, or after n:put etc?
11:00:03
##forth
<veltas>
It feels a bit cramped when the 'prompt' ends up being right next to start of input, but that's just my opinion
11:01:49
##forth
<veltas>
It's also interesting that words like * get to be punctuation, but n:add is needed to add two numbers together, but I guess you can define that sort of vocabulary if desired
11:04:00
##forth
<veltas>
So far I've mostly been reading the manual, and browsing the catalogue, and those are both huge hits. Every Forth should have something like this.
11:05:18
##forth
<veltas>
E.g. PolyForth has INDEX which is quite good, but `catalogue` is much nicer for interactive browsing
11:07:03
##forth
<veltas>
You might have chosen a shorter name for the reference, in context of the start of the manual *Language would have made just as much sense as *LanguageReference
11:08:07
##forth
<veltas>
It might be good to let you create a stack of visited manual pages, e.g. 2 to 'push' and 7 to 'pop', so you can easily go 'back' while browsing
11:17:25
##forth
<crc>
veltas: hit ^ in the manual; this should toggle color output
11:20:57
##forth
<veltas>
Nice
11:24:35
##forth
<veltas>
*StringIteration line c typo 'provdes'
11:24:56
##forth
<veltas>
I find it's easier often to read the manual in the editor to go to next/prev
11:25:16
##forth
<veltas>
Might be worth just supporting next/prev in the manual
11:28:11
##forth
<veltas>
*Strings links to *StringComparison but it's called *StringComparisons and is unfinished
11:31:11
##forth
<user51>
[bot]dpans: SEE
11:31:35
##forth
<user51>
[bot]dpans: see
11:32:04
##forth
<user51>
Guess that's a gforthism.
14:28:04
##forth
<veltas>
[bot]dpans: SEE SEE
14:29:04
##forth
<veltas>
!dpans SEE
14:29:08
##forth
<veltas>
.dpans SEE
14:29:22
##forth
<veltas>
I don't know the syntax for the bot, but SEE is in dpans94
14:29:49
##forth
<veltas>
In Tools word set
14:35:17
##forth
<veltas>
dpans: SEE
14:35:17
##forth
<[bot]dpans>
15.6.1.2194 SEE TOOLS
14:35:18
##forth
<[bot]dpans>
( "<spaces>name" -- )
14:35:18
##forth
<[bot]dpans>
Display a human-readable representation of the named word's definition.
14:35:18
##forth
<[bot]dpans>
The source of the representation (object-code decompilation, source
14:35:29
##forth
<veltas>
user51: ^
14:41:19
##forth
<veltas>
crc: In *Start the HTML link to +manual is broken, because of the comma maybe?
15:11:49
##forth
<veltas>
Have you ever defined a clock device for a konilo system?
15:24:58
##forth
<cleobuline>
ForthBot: SEE FIBONACCI
15:24:58
##forth
<ForthBot>
: FIBONACCI DUP 0 = IF DROP 0 EXIT THEN DUP 1 = IF DROP 1 EXIT THEN DUP 2 = IF DROP 1 EXIT THEN 1 1 ROT 2 - 0 DO OVER + SWAP LOOP DROP ;
16:13:24
##forth
<veltas>
Wouldn't `'hello &s:put curry` stop working after rotational buffer was overwritten?
17:48:16
##forth
<crc>
[bot]dpans: help
17:48:17
##forth
<[bot]dpans>
not found
17:48:30
##forth
<crc>
[bot]dpans: see
17:48:30
##forth
<[bot]dpans>
not found
17:53:19
##forth
<crc>
[bot]dpans: help
17:53:19
##forth
<[bot]dpans>
I'm a bot for looking up entries in the ANS FORTH standard. Send a request of the form:
17:53:19
##forth
<[bot]dpans>
[bot]dpans: wordname
17:59:09
##forth
<veltas>
[bot]dpans: COMPARE
17:59:09
##forth
<[bot]dpans>
17.6.1.0935 COMPARE STRING
17:59:09
##forth
<[bot]dpans>
( c-addr1 u1 c-addr2 u2 -- n )
17:59:09
##forth
<[bot]dpans>
Compare the string specified by c-addr1 u1 to the string specified by
17:59:10
##forth
<[bot]dpans>
c-addr2 u2. The strings are compared, beginning at the given addresses,
18:00:53
##forth
<veltas>
This bot would be more helpful if I was capable of remembering it existed
18:01:35
##forth
<veltas>
[bot]dpans: FILL
18:01:35
##forth
<[bot]dpans>
6.1.1540 FILL CORE
18:01:35
##forth
<[bot]dpans>
( c-addr u char -- )
18:01:35
##forth
<[bot]dpans>
If u is greater than zero, store char in each of u consecutive
18:01:36
##forth
<[bot]dpans>
characters of memory beginning at c-addr.
18:01:39
##forth
<veltas>
[bot]dpans: ERASE
18:01:40
##forth
<[bot]dpans>
6.2.1350 ERASE CORE EXT
18:01:40
##forth
<[bot]dpans>
( addr u -- )
18:01:40
##forth
<[bot]dpans>
If u is greater than zero, clear all bits in each of u consecutive
18:01:40
##forth
<[bot]dpans>
67
18:01:45
##forth
<veltas>
[bot]dpans: BLANK
18:01:45
##forth
<[bot]dpans>
17.6.1.0780 BLANK STRING
18:01:45
##forth
<[bot]dpans>
( c-addr u -- )
18:01:45
##forth
<[bot]dpans>
If u is greater than zero, store the character value for space in u
18:01:46
##forth
<[bot]dpans>
consecutive character positions beginning at c-addr.
18:04:49
##forth
<veltas>
I wonder if I sat down with a pen and paper, how many of the ANS words I could recall from memory
18:07:29
##forth
<crc>
re: curry; yes, that would break in that case. I updated the example to add an s:keep to fix it.
18:08:32
##forth
<crc>
re: clock; not as part of the standard set of minimal i/o devices, but I do have words for accessing & setting the RTC on the teensy4.1 variation, and have implemented accessor words & a clock device under unix, though not in the published vm copies.
18:08:58
##forth
<veltas>
Clock would be good, I like being able to get the time/date, even on a minimal computer
18:09:17
##forth
<veltas>
I've implemented clocks on the ZX Spectrum using the display interrupt
18:09:17
##forth
<user51>
0 days without a stack underflow :)
18:09:36
##forth
<veltas>
Yup
18:10:51
##forth
<crc>
I'm planning to add a standard interface for this, just haven't had enough time to actually work out the details for all of the systems I support yet.
18:11:10
##forth
<veltas>
Are you going to base it on a typical RTC device map?
18:12:42
##forth
<crc>
I haven't made any real decisions on it yet
18:16:35
##forth
<veltas>
For some reason RTCs tend to store/retrieve time broken down into the individual components of seconds, minutes, hours, etc
18:17:34
##forth
<veltas>
And can't go above 2099
18:20:59
##forth
<veltas>
If I made an RTC it would just increment a 64-bit seconds count, I don't really know how you can go wrong with that, uses exactly 1 more byte and lasts *292 billion years*
18:21:44
##forth
<veltas>
And you don't need to read the whole 8 bytes if you don't want them, can leave the most significant byte if you want, or anything after first 5, and still out-do a normal RTC
18:26:24
##forth
<veltas>
I think another alternative would be to provide an interface to read the 'date' in minutes since 1970, because a 32-bit value for that is quite useful and has lots of room
18:27:34
##forth
<veltas>
And then 32-bit precision date in nanoseconds or microseconds, mod 1 minute, if seconds or smaller are necessary
18:29:07
##forth
<crc>
apart from occasional benchmarks I don't need seconds or smaller
18:29:30
##forth
<veltas>
Exactly, most timestamping doesn't need it
18:33:19
##forth
<crc>
my son & I have been (on unix & windows), using an external process to update time data in a specific block that we are loading & reading from when necessary
18:35:54
##forth
<crc>
we've been experimenting with this, on occasion, for several years. I've used it to allow konilo to interface with external things and not require vm changes. (e.g., accessing files on the host and sending graphics to a display system)
18:36:14
##forth
<veltas>
I do think 32-bit is the sweet spot for most personal computing
18:36:27
##forth
* crc likes 32-bit
18:37:29
##forth
<veltas>
Especially if you can support larger physical addresses, i.e. more than 4GB RAM, but support 32-bit addresses for each process
18:38:04
##forth
<veltas>
Although 4GB ought to be enough for most things, it just isn't with e.g. the state of the web today
18:41:58
##forth
<user51>
I'm on 16 and it's kinda low.
18:42:45
##forth
<user51>
You'd quickly run into memory limits if you say, run a VM. One of those things that hit you when you least expect it.
18:44:40
##forth
<veltas>
I basically only run a VM at work, because I am stuck using Windows
18:44:48
##forth
<veltas>
I don't have OS envy at home, that's for sure
18:45:21
##forth
<crc>
I run with fairly low amounts of RAM. Most of my systems have 1-4GB; the exceptions are my mac mini (8gb), and my phone (12gb)
18:46:13
##forth
<xentrac>
"running light without overbyte"
18:46:16
##forth
<crc>
I think my new work computer has 8gb, but haven't verified this. Other than work applications, I only use it to access SSH or VNC connections to my other systems.
18:46:50
##forth
<veltas>
I have a laptop with 2GB of RAM, that I do use sometimes, and it is a stretch to do much with it
18:47:01
##forth
<veltas>
I find myself running firefox with 1-2 tabs and restarting it regularly
18:47:15
##forth
<veltas>
And closing firefox entirely if I'm not actively using it
18:47:27
##forth
<user51>
Do it the apple way.. never close :)
18:49:03
##forth
<veltas>
I only stopped using this laptop because I stupidly broke the battery at some point, and don't want to spend money unnecessarily while I'm preparing to buy a different house
18:50:50
##forth
<veltas>
So I'm currently using a nice Coffee Lake Refresh Dell XPS laptop I purchased a few years ago, which I never feel entirely comfortable with
18:51:10
##forth
<veltas>
Which is unusable on Windows (not that I'd use it), because it runs too hot. On Linux I have specifically tuned the kernel to underclock the CPU and it runs nice and fast without burning me
18:53:45
##forth
<crc>
I'm currently using an eink device w/2gb ram. It's a bit sluggish at times, but the screen is comfortable to read on
18:55:10
##forth
<veltas>
Which eink device?
18:55:55
##forth
<crc>
this is a boox go 6
18:56:24
##forth
<veltas>
Yeah new laptops are weird, because they are technically very fast and also energy efficient, but you couldn't tell from the infertility and burn marks. I don't know why more people don't underclock them.
18:58:01
##forth
<user51>
crc: I've got a Boox as well, but it's 4 years old and I haven't used it in a long while. Maybe they improved since then, wasn't a great experience.
18:59:21
##forth
<veltas>
What do you do on your boox go 6, do you run konilo? Or just some stuff like IRC?
19:00:34
##forth
<crc>
I don't need a lot from it. Koreader for books, temux to run konilo, irccloud, moshidon for social stuff occasionally, and the included neobrowser when I need to look up something online
19:01:15
##forth
<veltas>
I would be interested if you're willing to take a photo of it running konilo, I am tempted by this
19:01:38
##forth
<veltas>
But don't worry if you don't want to / can't
19:04:19
##forth
<user51>
Any recommended way to have my forth read input on a character by character basis on Linux? I've copied a termios snippet from kilo, but it's a bit messy.
19:04:44
##forth
<crc>
user51: stty cbreak
19:05:13
##forth
<user51>
Currently it reads line by line -- something to do with the terminal. This termios stuff feels more like bondage than security.
19:07:36
##forth
<user51>
crc: Thanks, that's much nicer. Does it mean I'll have to process things like backspace as well?
19:07:43
##forth
<crc>
yes
19:08:17
##forth
<crc>
when you move to character by character input you'll have to handle all the editing side of things yourself
19:08:45
##forth
<user51>
Fair enough, I had a feeling I might need to handle I/O better in the future.
19:09:13
##forth
<crc>
veltas: I use it with a keyboard when at home; I only use the onscreen keyboard when traveling with it & away from a desk
19:10:52
##forth
<user51>
crc: Perfect - first time my own forth was useful to me. I had a KEY word and didn't know the number for backspace, so I used KEY and had it on my stack :)
19:15:07
##forth
<
crc>
user51: http://forth.works/temp/termios.txt is the termios stuff from my system; it's pretty simple; it() initializes the terminal; rt() resets the original state
19:16:36
##forth
<crc>
It clears ICANON (setting character mode instead of line buffering), and ECHO (for display of characters, which I handle separately to give more control)
19:16:40
##forth
<user51>
crc: Heh, that V there looks straight out of a IOCCC entry.
19:16:50
##forth
<crc>
V is void
19:17:09
##forth
* crc uses I = int, C = char, V = void in his C
19:32:14
##forth
<user51>
crc: Thanks again -- it's pretty nice to get a feel for VT100 escape codes with just reading a character and printing here and there
19:41:07
##forth
<veltas>
crc: It's a good thing you made a nice programming language because you're banned from using C :P
19:41:30
##forth
<crc>
:)
19:42:20
##forth
<veltas>
I'm slowly grokking the konilo manual etc, not written much yet, not sure what would be good to try first
19:42:46
##forth
<veltas>
But so far I approve of most of the decisions, the only things I don't like are naming, but that's always going to be a compromise if you prefer systematic names
19:44:04
##forth
<veltas>
Do you have a word that just searches the blocks for a given string?
19:44:14
##forth
<crc>
the only real caveat with using symbols for names is that they can't also be sigils (since sigils are checked before the dictionary is searched)
19:46:31
##forth
<crc>
blocks-containing (takes a string) or blocks-containing: (parses ahead)
19:47:12
##forth
<user51>
veltas: Konilo manual link?
19:47:25
##forth
<crc>
you might need to load this first, I think it's block 38 in the nightly snapshots
19:48:46
##forth
<crc>
'(opt:nonix) needs or #38 use should work to load it
19:49:52
##forth
<user51>
crc: Hope you won't mind me stealing some inspiration :)
19:49:53
##forth
<crc>
(in an upcoming update, these will be loaded by default, and are renamed to blocks:containing and blocks:containing:)
19:50:00
##forth
<crc>
user51: pleae feel free to do so
19:51:01
##forth
<crc>
*please
19:52:24
##forth
<crc>
user51: I haven't written that page yet
19:52:40
##forth
<crc>
the manual is a work in progress, unfortunately
19:53:16
##forth
<veltas>
I have also been finding a lot of typos and broken links, I think as more people use it and give feedback it will get better
19:53:24
##forth
<veltas>
crc obviously doesn't need to read his own manual much
19:53:43
##forth
<veltas>
But he also is very good at updating based on feedback
19:53:47
##forth
<user51>
Need to add some javascript - it loads too fast.
19:53:51
##forth
<crc>
I tend to work on it when my rsi pain isn't bothering me, so larger improvements tend to happen in somewhat random jumps
19:53:59
##forth
<crc>
no javascript for me
19:54:36
##forth
<crc>
user51: each page is just an HTML version of a block, so ~1k text + whatever the markups & CSS add
19:56:54
##forth
<user51>
crc: 'Forward parsing' refers to words such as CREATE?
19:57:01
##forth
<crc>
yes
19:57:44
##forth
<user51>
I call 'em parsing words, but if I want to make people uncomfortable, I say 'negative arity operation' :)
19:58:15
##forth
<veltas>
crc are there any processes/tools for submitting patches to konilo?
19:58:26
##forth
<veltas>
Are patches even a good thing given it's a personal environment?
19:59:56
##forth
<veltas>
I mean konilo.blocks
20:23:37
##forth
<crc>
I'll have some tooling for this (external to konilo) soon. My son has been writing something to find modified blocks, create exports/diffs, and copy exported blocks into the block set.
20:24:27
##forth
<crc>
with regards to patches, I'm willing to consider them, though offer no guarantees that I'll accept them into the blocks I provide
20:26:18
##forth
<crc>
(I did see your request for some history functionality in the manual; I'll try to work on this in the next week or two, if I have time; I've been traveling for work, helping to build a new store & setup a new warehouse, so time has been very limited the last few weeks)
20:44:50
##forth
<veltas>
Yeah I don't have any expectations, I am just sending that feedback
20:45:20
##forth
<veltas>
If it goes into the void, or into a big TODO block and never looked at again, or whatever then it's fine
20:45:49
##forth
<veltas>
It's always a nice surprise when anything is acted on because I certainly don't feel entitled to any of it
20:45:56
##forth
<veltas>
So it's a gift really when you do something
20:46:17
##forth
<veltas>
But also sometimes might be mutually beneficial if it's actually a good feature that other people will use
20:46:52
##forth
<veltas>
The idea for history just seemed to make sense for a stack system because it's just a stack of blocks you've visited
20:47:04
##forth
<veltas>
Has return stack stashing vibes
20:47:42
##forth
<veltas>
And also because I was doing a lot of back and forth and that's not very efficient right now
20:48:11
##forth
<veltas>
The catalogue is much better at this because you can enter the editor from overview, and return, so there is a bit of hierarchical traversal going on
20:48:35
##forth
<veltas>
The catalogue is really nice, the manual's great too but I really like the catalogue
20:51:18
##forth
<crc>
The catalogue was something I knew I wanted when I decided to do a block based system. I haven't really seen anything like it in other forths, but the idea made sense to me
20:51:51
##forth
<veltas>
It feels like what Forth Inc would have done if they had stuck with blocks
20:52:06
##forth
<veltas>
Which is a good thing
20:52:21
##forth
<veltas>
It's a solid interactive improvement over INDEX
23:40:46
##forth
<crc>
A downside to an irc based interface is that things using the escape sequences don't really work