Archived messages from: gitter.im/red/sandbox from year: 2018

gltewalt
01:22Need an Owl for a mascot
01:23Rufus the Red 🦉
greggirwin
22:51We're on HN again! https://news.ycombinator.com/item?id=16046218

9214
08:05triple kill
gltewalt
19:18Gregg Irwin had a blog. And said the same things that I think but am afraid to say to people
9214
19:19Gregg is just a Greg who grew a g, yo
gltewalt
19:19Evolution
greggirwin
19:20I am older. Maybe you'll get another g someday @gltewalt.
gltewalt
19:25Yeah, if I mind my Ps and Qs
greggirwin
19:25Dot your Is and cross your Ts.
9214
19:32@gltewalt it should be jpegg though
greggirwin
19:33Watch what you're sayingg!
9214
19:33gee :eyes:
gltewalt
19:51It should be, but the rest of the world disagrees
9214
19:53if you have a program that
* in the (very) best-case scenario is used once in 1-2 years for less than 30 seconds
* have relatively readable sources

is it worth the effort to go all fancy and rewrite everything from scratch using all the tricks I've learned?
gltewalt
19:55I think it is, because you'll probably learn more things
greggirwin
19:57@9214, if it makes you happy, or if you want to write it up as a "then and now" article or something.
9214
20:07it's just that coming up with data format and maintaining fanciness/ease-of-rewrite balance is hard :confused:
gltewalt
21:33Hey it doesn't look like save/as with none works correctly either
greggirwin
21:37Doesn't work how?
gltewalt
21:38It prints none in the text file
21:38(writes none)
21:39 /as => Specify the format of data; use NONE to save as plain text.
greggirwin
21:41And what do you think it *should* do?
gltewalt
21:46Save the data as plain text
21:46In which case don’t need save/as
greggirwin
21:46Isn't that what "none" is? Or maybe I don't understand.
gltewalt
21:48The way I read it, should be able to do this
save/as %test “aaaaaa” none
21:49And have %test have the content “aaaaaa”
greggirwin
21:51Correct, you don't need /as then, but it can make things easier sometimes. Propagating refinements can lead to more complex code. By having a refinement that lets you *optionally* include an arg (effectively), any wrappers can just always use /as.
21:51Is that not what it does (your example)?
21:52AH! Now I get it! Yes, bug.
21:53*Really* good catch.
gltewalt
21:56But I caught that one ‘after’ I did my PR
greggirwin
21:57Looks like either as should be either all [as word? format]
21:57That's fine. If you do another PR while this one is open, same branch, it should add to it.
21:58Then the if word? format check can go away.
gltewalt
22:02Out driving around atm
22:05Can I edit my own PR later?
greggirwin
22:06Yes. Your next PR should add to this one, if it's still open.
gltewalt
23:01/all is TBD
23:01did you mean either as [as word? format]

gltewalt
00:18Similar thing with load/as but it returns none if the codec isn’t supported. And load/as %my-file none works
greggirwin
04:37I meant all as in the standard function, which is a good catch, as it would need to be system/words/all due to the refinement of the same name.
07:07I'm working on this now @gltewalt, so it we don't forget your find.
gltewalt
07:09Qxtie already pulled in the one change, so I guess it will be an additional
greggirwin
07:09Yes, but that's OK.
07:14Now my turn to mess with git.

gltewalt
03:17Is GUI writing console-cfg.red in rich text?
03:19Looks malformed in notepad, even though it works .
greggirwin
05:53Uses LF for line term, not CRLF, don't know why they aren't localized. Notepad is simple, and doesn't know what to do.

gltewalt
02:41I don't understand this. From Carls makedoc2.r
emit: func [data /line] [
	; Primary emit function:
	insert insert tail out reduce data newline
]
02:42What's /line for? It isn't used in this func block
03:06New entry in script error table:
script: object [
				code:				300
				type:				"Script Error"
				wat:     ["wat?"]
				no-value:			[:arg1 "has no value"]
				need-value:	       [:arg1 "needs a value"]
greggirwin
12:42@gltewalt, could just be a change in the make-doc code that never got cleaned up, as it won't cause an error.
gltewalt
22:28I'm ahead of @9214 in the contributors listing :sparkles:
22:29:dancer:
22:30:clap: Your fix is now in there @greggirwin

9214
06:22@gltewalt uuuuuunstopable :horse_racing:
gltewalt
20:24So much more activity

9214
08:10how do you guys feel about all the people popping around in /blockchain, asking about crypto but having absolutely zero interest in language itself?
greggirwin
08:11Unsurprised. :^\
9214
08:11@9214 grumble-grumble
08:39I also feel that I might miss a lot of opportunities while ignoring all the hype around RCTs and upcoming ICO
08:40need to sat down and learn a bit about these technologies, but don't have much time for that
rebolek
08:41I will certainly miss a lot of opportunities because of the stupid asynchronous javascript callback hell.
9214
08:42@rebolek why you're in JS land?
rebolek
08:43Because I'm trying to make stats bit nicer.
gltewalt
09:26Can’t do stuff like emit in makedoc2.r ?
09:28How do they wind up in /blockchain without seeing the main articles? Is it linked to that room in twitter or Facebook posts?
rebolek
09:48Probably because of https://globenewswire.com/news-release/2017/12/28/1275069/0/en/Red-open-source-project-goes-on-blockchain-a-new-full-stack-toolchain-for-smart-contract-development.html
9214
17:40### Julia vs Python: Julia language advantages
...
* Metaprogramming

### Python vs Julia: Python advantages
...
* Julia arrays are 1-indexed

Jeez, what a price! Awesome whichever way you look at it :joy:
gltewalt
17:43 Off by one errors are an advantage? :smile:
9214
17:45they have an interesting [Docathon!](https://github.com/JuliaLang/julia/projects/8) github project which IMO we should adopt sooner or later

gltewalt
01:13I think I’m about to sign on to do phone work - tech support for military contract, but I don’t wanna do phone work and I don’t want to mess with Security+ recertification. :worried:
Somebody save me.
01:22Someone really knows their html+css stuff for https://ico.red-lang.org
Looks awesome
05:44bootstrap and fontawesome ftw
9214
10:31> Red is a simple but powerful core, used to build specialized languages for each domain, from metal to meta

I really love "from metal to meta" part, this should be our go-to slogan
13:36 1 ETH = 76,854.12 RUB

welp
greggirwin
17:14It was noted that the ETH minimum was to keep them from being too overloaded, since the KYC is a manual process.
9214
17:15@greggirwin I just counted how many months of total non-existing (only breathing and lying on the floor) I need to get 1 ether :D
17:17so for me "go RED" :point_right: "go PVS" :leaves:
17:18nevermind, I'm actually more intereted in what will come after ICO
17:30s/intereted/interested/ dang
greggirwin
17:50I have to wait for secondary markets as well.

gltewalt
00:53A rectangle is an angle that has been reduced to a state of ruin
02:02What the heck? I wonder why this has stalled?
https://github.com/jneen/rouge/pull/818
02:03At least @rebolek could use it for gitlab since gitlab uses rouge for syntax hilighting
02:03And I could have mastered the little dsl and made it way better by now if I knew it was just going to sit there for months
9214
13:14@gltewalt maybe we can comment on PR to speed up the process or something?
gltewalt
16:11maybe

are1000
11:35:tada: :sparkles:
11:36continuing: I'm going to create a Red dialect, that allows you to program with emojis
rebolek
11:38That sounds extremely useful
are1000
11:38**extremely**
PeterWAWood
11:39@are1000 Are you really going to create a dialect or sneakily use macros?

11:39From the blog

One possible use of macros can then be word-aliasing, for example translating words at compile-time (using French words here):
#macro si: func []['if]
#macro affiche: func []['print]
#macro vrai: func []['true]

si vrai [affiche "Vive Red !"]
will result in:
if true [print "Vive Red !"]
are1000
11:40I can't imagine writing Dapps and Red/C3 contracts without Red/☺️
9214
11:40you can just emoji: :function
are1000
11:40@PeterWAWood @9214 macros and substitution is for weak, this will be a full blown dialect with new, emoji-friendly syntax!
9214
11:41@are1000 we need a sales pitch for our private investors!
11:41this is gonna be BIG
are1000
11:41it will be called 🅱️ed dialect
PeterWAWood
11:42Will it be statically typed? That's all the rage these days.
9214
11:42JS interop please
are1000
11:42Of course, with built-in types like :pizza:!
9214
11:42I wonder if there's a J variation with emojis...
are1000
11:43There is that https://github.com/anowell/emoji-lang
PeterWAWood
11:43I hope you will have a 🎦 type in Full HD
are1000
11:44Definitely! Type unions will be there as well
11:45🎦❗: 🎥❗ + 💰❗
PeterWAWood
11:45:clap:
11:46@rebolek Will want both of these - 🎹 and 🎤
are1000
11:46Of course, built in support for tags and mentions
11:47By the way @PeterWAWood, did you have a chance to check out https://redbot.iama.re? Or maybe did you miss it in the torrent of messages?
9214
11:47allow be to butt in a little :alien:
,.([:<@:|.1{.~])"0>:i.5
┌─────────┐
│1        │
├─────────┤
│0 1      │
├─────────┤
│0 0 1    │
├─────────┤
│0 0 0 1  │
├─────────┤
│0 0 0 0 1│
└─────────┘
rebolek
11:47@PeterWAWood :bangbang:
PeterWAWood
11:48@rebolek Is that good or bad - I'm a real newbie at these emojis
9214
11:49@PeterWAWood it's the sound that @rebolek makes when he squeaks out of joy
PeterWAWood
11:55@Are1000 I haven't looked at it yet (too busy getting nothing done). Gregg and I discussed the bot and Gregg has asked the ICO people to confirm that they are happy to have the bot. There has been no response yet.
are1000
11:58@PeterWAWood it's ok! I just wasn't sure if anything is going on - I am aware that there may be refusal - and it's ok! :D I have made this bot for the community :) (I just want to know because it is currently residing on a server with limited resources)
rebolek
11:58@9214 exactly
9214
12:01@9214 [s/be/me/](https://gitter.im/red/sandbox?at=5a58a056ba39a53f1a089971)
are1000
12:44I was also thinking of making a bot that (with a proper command) evaluates Red code on gitter
12:45But the longer I think about it, I'm more and more concerned about all those hackers that would try and circumvent all safety measures (looking at you @9214 )
9214
12:45:neckbeard:
rebolek
12:49https://github.com/rebolek/gritter/blob/master/redbot.red
are1000
12:52That is great! Although not very safe? :P
rebolek
12:52No :)
are1000
12:52One could just eat up all of your resources because of lack of GC (or is it one instance of Red for every message?)
rebolek
12:52It should start another process with calland kill it when not responding.
9214
12:52@9214 rubs his hands
are1000
12:53or read all of your sensitive data?
rebolek
12:53I have POC somewhere.
are1000
12:54People of color?
rebolek
12:54Of course it redefines things like read, writeor call to none.
12:54Proof of concept
are1000
12:54One frame before you responded I did a mental facepalm and remembered what is POC
rebolek
12:55I finally found my rPi, so I have hardware where the bot can live.
12:55(those damn small computers)
are1000
12:56What model do you have?
rebolek
12:56rPi 2
are1000
12:56I could definitely imagine Red/OS for RPi
12:57that would be absolutely cool, like absolute zero cool
rebolek
12:57It was very great buy, week before rPi 3 was announced.
are1000
12:57Imagine Red being the operating system
12:58The amount of tomfoolery that you would be able to do is mindblowing
rebolek
12:59That's the original idea behind Rebol
12:591) develop language
2) write OS in it
9214
14:58then develop a language on that OS
are1000
14:59Redception
9214
14:59https://inception.davepedu.com/
ne1uno
greggirwin
23:53As @PeterWAWood noted, we haven't gotten a response from the team, but I feel it's safe to post what was suggested, knowing it's not officially sanctioned.

> The "official" Telegram chat is Public. It is open to anybody with a Telegram account. Any bots used to gather and re-publish information from Telegram are outside the purview of the Red team, and so are neither endorsed nor restricted by the team, but should honor any rules or limitations Telegram imposes for bots and content extraction. If you operate a bot against a Telegram room, it would be polite to inform the members of that room of the bot's existence. People are discussing ICO transactions and other potentially sensitive information, possibly based on current room membership, not with the expectation that it will be made more public.
23:54As you might all guess, the team is very busy. :^)

gltewalt
00:55Just remember that I warned you all almost a year ago about the Rails effect.
https://youtu.be/lmuKsI5kcKw

gltewalt
05:41https://www.damiencosset.com/trying-understand-blockchain-making-one/
9214
16:23Okay fellas, I finally rewrote my stuff (decoder) from scratch - the main idea was to decouple [specification](https://github.com/9214/daruma/blob/master/src/datasheet.red) from [implementation](https://github.com/9214/daruma/blob/master/src/decoder.red). It turned out as an interesting design challenge, but in the end I'm proud that project is now re-organized, looks fancier and runs as fast as before.
18:05How can I call a situation when server allocates all its resources to one user but dismisses all other users? Bottleneck?
ne1uno
18:06prioritize
greggirwin
18:13@9214, does the server do that on purpose, or just not protected from a single user consuming all resources?
18:14I'm excited to read your new code. I remember the project, but also, I think, that I didn't take time to understand it all.
9214
18:14@greggirwin kinda in between (it's not a real situation, just a narrative I'm coming up with *wink-wink* ;))
greggirwin
18:17Ah, right. "Preferential treatment" is a way to say some people are given preference. "Bottleneck" implies it's not in the servers control, as in not being the chokepoint by choice. If it's by choice, it's like a "gatekeeper", or whatever they call the people who let you into the dance club, or not, based on how sexy you are.
dander
18:18@9214 maybe "the resource is drained by the user"? But I think what @greggirwin was implying that if it is on purpose, it might be more like "resources are allocated to user x"
9214
18:19Thanks! I just wonder if there's one technical term for that situation or not.
dander
18:19bouncer?
greggirwin
18:23@dander, I was thinking that, but they never let me in, so I haven't been able to ask.
18:23@9214, if it's the server's choice, "favoritism" is a good word.
9214
18:24*technical* term which tech-savvy persons use
greggirwin
18:29You keep making the question harder! ;^)
9214
18:30[![images.duckduckgo.com.jpeg](https://files.gitter.im/red/sandbox/L8fo/thumb/images.duckduckgo.com.jpg)](https://files.gitter.im/red/sandbox/L8fo/images.duckduckgo.com.jpeg)
greggirwin
18:30@ne1uno may be right then, priority.
9214
18:31so, troubles with priority management... will do, thanks @ne1uno !
greggirwin
18:32"Fair queueing" is a term used in scheduling systems as well, but doesn't exactly roll off the tongue.
ne1uno
18:39I think it happens more often in the reverse, slower connections getting less access so they timeout. they should get less data more often. with net neutrality out the window, that is never going to happen. servers will know who has a higher priority and may have to cater to them or pay the consequences.
gltewalt
9214
19:41ting go skrra
gltewalt
19:42Resource Allocation Policy
9214
19:43life will never be the same

9214
10:50Luna goes beta
http://www.luna-lang.org/#Overview
are1000
10:51Finally!
10:52(although for a language that tries to be as human readable/visual as possible, they sure don't care about accessibility)
Phryxe
12:31It would be nice to include Red in listings package (https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings) for LaTeX so we can use syntax coloring in PDF documents.
are1000
14:06Does anyone here is familiar with a concept of transducers?
9214
14:29all I know is that it's some Hickey stuff
greggirwin
17:30@are1000, I've looked into them a bit. Can't say they grab me yet.
17:34@Phryxe, what would be involved? The format doesn't look hard from the examples there, but details are often the death of us. Need someone to take the lead on it. While it might be nice, it's not going to bring anyone new to Red, for us to spend core resources on it right now.
Phryxe
21:46@greggirwin Well, I now see at the bottom of the page I linked to that *minted* package is an alternative that uses *Pygments* which supports 300 languages, including Red and REBOL.
greggirwin
21:52Great! https://github.com/red/red/wiki/Editor-Integrations may not be exactly the right place to note that, but if you add a note there, we can always move it later.
gltewalt
21:58That reminds me - thanks @9214 for commenting on the rouge commit.
She left a little response but I don’t think anything has changed
21:58Er, rouge PR

Phryxe
09:23@greggirwin I added it to the wiki. I mentioned listings even though it doesn't support Red, as this package doesn't require extra installations. Maybe someone in the future adds Red to its supported languages.
greggirwin
18:51Thanks!
gltewalt
23:43This might be an interesting project to see if it can be done withe view/vid:
"keystroke dynamics measures the pattern and rhythm as a user types on a keyboard. It measures details such as speed, dwell time, and flight time. Dwell time is the time a key is pressed, and flight time is the time between releasing one key and pressing the next key. Many security professionals refer to this as behavioral biometrics because it identifies behavioral traits of an individual."
greggirwin
23:58
key-log: copy []

log-key: func [key dir][repend key-log [now/precise key dir]]

view [
    area hint "What are your thoughts?"
    on-key-down [log-key event/key 'dn]
    on-key-up   [log-key event/key 'up]
    button "Show Log" [print mold new-line/skip key-log on 3]
]

greggirwin
00:00I guess hint doesn't work on area.
gltewalt
00:01Did you already have this?
greggirwin
00:01Nope.
gltewalt
00:01:clap:
00:02The other part might get hairy though. Identifying someone based on that
greggirwin
00:03Well, yeah, but now you have data. I have old aggregator funcs which might be useful in this, but you need a set of rules to start. e.g. dn-up pairs vs dn-dn*/up-up* runs, avg vs quantize, etc.
00:04That is, turn those rules and timings into a pattern signature. When you see a new message, you run through the same rules and compare to all the people-patterns you have, looking for the closest match.
are1000
14:57I wonder how hard would it be to create a Red interpreter in BASIC.
9214
14:57@are1000 let's see...
are1000
14:57Specifically some kind of "embarrasing" BASIC, like SmileBASIC
rebolek
14:57harder than doing BASIC interpreter in Red.
9214
14:57http://www.red-lang.org/2016/12/entering-world-of-macros.html
14:57scroll down to "A DSL compiler"
are1000
14:58@9214 in the opposite direction :P
9214
14:59ah, misread
greggirwin
21:36@are1000, start with the lexing. How hard to do numbers and strings? Does it have structs or objects? At a glance SmileBASIC doesn't seem to, so how are you going to represent "compound" types? Lex all those. Now you can load all Red data, including nested blocks and objects, cool! How hard was that? Now all you have to do is implement all the datatypes to handle their actions, and natives. From their it's as easy as any other interpreter for a multi-paradigm language that uses definitional scoping. ;^)
21:39Maybe look at it like this, Rebol was the best and easiest language with which to build Red. Eliminate the compiler from Red, and you have a working model. That is, I don't think it can be any *easier* than the current Red interpreter, and likely a lot harder.

What you need to ask then, is how much you can remove, to start small.

gltewalt
02:04:smiley_cat:
>> system/console/history: ""
== ""
>> "hi"
== "hi"
>> system/console/history
== "^G^@^@^@^@^@^@^@ð1^M^B^@^@^@^@^G^@^@^@^@^@^@^@Ø1^M^B^@^@^@^@"
>> clear system/console/history
== ""
>> type? system/console/history
== string!
greggirwin
07:28Enough rope to blow your foot off.

gltewalt
00:03Search on Quora "What is the best programming language for text processing?"
greggirwin
07:30I guess I should give Haskell a closer look. I had no idea it could give REXX a run for its money.

9214
20:00are there any explanations on how AltMe works, aside from http://www.altme.com/guide/ ?
rebolek
20:01you download it and request an account
9214
20:01and configs are all in Rebol, right?
20:02jeez, I miss old days :(
20:02wish I was older
greggirwin
20:02It's Rebol all the way down.
20:04Data, configs, mods/extensions, client, server.

gltewalt
00:17@toomasv are you around?
01:50Man... I'm super unhappy. Can't get anywhere when standing in shifting sand.
02:27I got it.
02:27It's unless sub? [stack/set-last stack/top]
toomasv
04:06@gltewalt Yes, Greg?
gltewalt
04:09Are you using Win10 or Win7? I forget
toomasv
greggirwin
05:14If you've nailed it @gltewalt, that's a great fix. You'll be a hero.
gltewalt
05:16Yeah but I can’t test it cuz my tests are broken
05:17I can do ‘another’ PR and break things again if it doesn’t pass
05:19unless sub? [stack/set-last stack/top] fixes all the examples I could find in 3156, 3128, and your closed 3098.
greggirwin
05:21Let's hope you can get the tests working then. I feel your pain.
gltewalt
05:22Is there a way to grab rebol 2.6?
ne1uno
05:51http://web.archive.org/web/20081001000000*/http://rebol.com/download.html
05:562.62 http://web.archive.org/web/20070224001323/http://rebol.com/download.html
gltewalt
06:23got it after some fighting on a rickety Tower that has Win10
PeterWAWood
07:43@gltewalt I'm sorry, I typed 2.6 instead of 2.7.6 which you can get from http://static.red-lang.org/build/rebview.exe
9214
10:31@gltewalt who are you and what have you done to cuttlefish?
10:35@gltewalt I can check out tests with your fix if you still need it (once I get home)
10:47you just fixed it by trial and error after looking at all either sub? [stack/push parent][stack/set-last parent] in the code?
ne1uno
15:48just for the record, rebol-view v262 from webarchive can't even start to run tests or build red. invalid path near: copy functions/-**
9214
15:50I believe Nenad uses custom baked Rebview because of some cryptic bug in 2.7.8
rebolek
15:51No, you can't custom-bake Rebol. IIRC, he uses 2.7.6
9214
15:52yeah, my bad
15:52I just recall something in the lines of "custom version"
ne1uno
15:52could that be why I get random hangs when running the tests? the stock rebol view or core build red gui console ok and the test hello and console
17:22rebview.exe 276 also random hangs running tests so it must be something el;se. I use call and never had it not work that I noticed
gltewalt
17:41A little bit of trial and error - after looking at other comments in the source, and sub? With my limited debug statements in console.
Kind of a goose chase - I had it right the first time except exactly backward because I’m dumb and unless tripped me up
greggirwin
17:42I dislike unless.
gltewalt
17:43I had unless sub? [stack/push...blah blah]. Needed unless sub? [stack/set-last....]
17:48Ended up more like old time Diffing because the tests are broke on my win7
ne1uno
18:09would it make sense to add one or more tests for each ticket closed? to give an indication that they pass and continue to pass
9214
18:09makes sense
ne1uno
18:17I see random hangs on win7 but sometimes they do run through without error. I don't think clean is doing what it should. after the first time 0 files are generated
gltewalt
19:52@9214 You can run tests if you like.
Appveyor got stuck after 56 ok - not-compile......................................1 / 1.
Tests passed on this perilous Win10 tower.

19:52I mean....
19:52@9214 Ack! Ack!
9214
19:55@gltewalt just do %run-all.r from R2?
gltewalt
19:55I did
19:55Oh, yeah. Do that
19:56Takes a long-ass time to run though on a fresh pull
9214
19:58apparently there's some problem with tests on my machine
19:58bash can't find some ./r2 directory and because of that all test fails
20:00in fact it tries to find a directory with a name of rebol executable
gltewalt
20:01Hmmm
20:02@PeterWAWood said he hasn’t changed any of the test suite stuff for months
20:03Very stressful when tests don’t work right or lie
rebolek
20:04I had my moments with test suite...
gltewalt
20:04I have a mint Linux tower that I might be able to get to tonight. But I’m kind of fried with fighting tests
20:05Linuxmint I guess is the proper name
9214
20:13
text
** - Complete Red Test Suite**********************34057 / 34269 **
       in 0:02:45.292298
20:14failed tests haven't passed because of the bash error
20:15
text
/bin/bash: ./rebol: No such file or directory
20:16should I add rebol interpreter in some specific path?
20:19with your fix I think it's better to wait for a review from Doc than to rely on tests
20:19because obviously there weren't any tests that would catched this regression
gltewalt
20:26Right. I expect a review and I’m fine with a “No”.
But folks aren’t even supposed to submit unless their local tests pass, and I don’t expect test suite hell
21:02I thought Rebol was supposed to be able to run from any path
21:04Maybe it expects ./rebview, like it shows in the appveyor console
9214
21:05huh http://www.red-lang.org/
21:05logo changed
21:07per quick-test docs

> This must be a REBOL/View console session under Windows.
21:09okay, now it works flawlessly
21:09under Wine
PeterWAWood
22:27[![Screen Shot 2018-01-25 at 06.26.42.png](https://files.gitter.im/red/sandbox/Uyip/thumb/Screen-Shot-2018-01-25-at-06.26.42.png)](https://files.gitter.im/red/sandbox/Uyip/Screen-Shot-2018-01-25-at-06.26.42.png)
gltewalt
22:51the call issue was something I stumbled onto, and Qxtie just made a change. I never made a ticket

PeterWAWood
02:32@gltewalt The Red & Red/System test suites are regression tests. We don't have unit tests for the toolchain or the runtime. (This is not uncommon for programming languages. Lua does not have unit tests. Its regression tests are extremely rigorous though. [We need a big effort to improve our regression tests.]

It might be worth trying some local testing on your changes and only running the regression tests once you think your changes are working.
gltewalt
02:40I did a bunch of manual testing. Then hit a wall with the run-all stuff.
03:09I still have lists of all the functions, ops, actions, etc. I think I will make a function that just fires off ever one of them

9214
18:26never thought that refactoring could be so addictive
n=: 5
   (!2*n)%(!n)*(!n+1)
42
   (!2*n)%(n*&:!n+1)
42
   (!2*n)%([*&:!+&1)n
42
   (([:!2&*)%[*&:!+&1)n
42
   (!@:(2&*)%[*&:!+&1)n
42
   (!@+:%[*&:!+&1)n
42
   (!@+:%[*&!>:)n
42
   (!@+:%[*&!>:)i.10
1 1 2 5 14 42 132 429 1430 4862

https://en.wikipedia.org/wiki/Catalan_number

9214
14:23is there any way I can subscribe to red tag on SO questions?
rebolek
14:24Edit your favourite tags
9214
14:25@rebolek
14:25[![image.png](https://files.gitter.im/red/sandbox/D5HH/thumb/image.png)](https://files.gitter.im/red/sandbox/D5HH/image.png)
rebolek
14:25@9214 yes, that should be it
9214
14:27guh, only email notifications?
14:27I want just an indicator on SO site
14:29nevermind, found RSS feed
rebolek
14:29:+1:

9214
12:01[The Cuttlefish, a Master of Camouflage, Reveals a New Trick](https://www.nytimes.com/2018/02/15/science/cuttlefish-camouflage-neurons.html?rref=collection%2Fsectioncollection%2Fscience&action=click&contentCollection=science®ion=rank&module=package&version=highlights&contentPlacement=2&pgtype=sectionfront)
12:01@gltewalt
greggirwin
17:13I'm sure I saw that behavior in an older documentary. Maybe they mean learning more about how the process works. Or how @gltewalt uses it to remain low profile in coffee shops.
gltewalt
19:54:smile:

9214
20:53trying to cope with @toomasv's fanciness, I implemented traffic light in 8051 assembly
20:54[![Peek 2018-02-18 01-51.gif](https://files.gitter.im/red/sandbox/mdET/thumb/Peek-2018-02-18-01-51.gif)](https://files.gitter.im/red/sandbox/mdET/Peek-2018-02-18-01-51.gif)
toomasv
20:56 :hushed: :+1:

greggirwin
01:32@greggirwin thinks @9214 may be gearing up to work on new Red back ends.
9214
05:55@greggirwin was it before or after you started to drool on keyboard?
PeterWAWood
07:52@9214 The output looks cool. Aren't you going to share the Red code with which you generated the assembly code?
9214
09:42@PeterWAWood Red code that emits assembly currently resides in my cerebral cortex :smile:
PeterWAWood
10:32So Gregg was correct!! You have come up with a Red back end that emits cerebral code ;-)
9214
11:37ceRedral code
PeterWAWood
greggirwin
19:37Insert tokens, out comes code.
gltewalt
23:03I can't see where the error should be fired from with to float! "". It does get fired with a string of length 1 or greater.
23:03There is no error checking at all in string/to-float
23:03Errr, no error throwing
23:08I either never knew that there was a none! or I forgot... hmmm

greggirwin
01:32I believe the to float! "" issue is a regression. Haven't dug in to look at the causal source though.

9214
11:44[Problem 21](https://projecteuler.net/problem=21)
+/(#~(2 3$1 0)-:"2[:="1([:+/i.([#~0=|)])^:(<3))"0 i.1e4

after this line of code I was like, [well...](https://www.youtube.com/watch?v=cB_AnteqNJ0)
toomasv
11:49 :hushed:
9214
16:01How do you guys manage to crave some time for personal projects? (@toomasv :exclamation:) Whenever I have free time on my hands I either want to sleep more than to live or need to work other things out :(
toomasv
16:22@9214 I have to be careful here, tending to ignore other thing, when I get involved in something. This can be dangerous.
greggirwin
17:44I feel out of balance at times, but try to be aware of when it's happening. There are times when I'll dive deep into something, and other times when I'll, for example, take time to do a show and then feel like I'm out of balance the other way, and need to code again. Changes and stages in life too. It's just a flow and you have to accept it. There are times when I feel like I am the least productive dev on the planet, and other times when the joy and pleasure of creating makes me proud of what I accomplished. I want to do some more of the hundreds of fun ideas I have, but time is always against us.

If you need to sleep, sleep. Staying healthy is important. There were times in the past when I worked *far* too much, and that wasn't good. Accept your humanity (even you @9214) and all that comes with it.
9214
18:03it's just the part where you need to prototype a lot of things and in the end nothing really works that saddens me
greggirwin
18:12Things that don't work are just waiting for their day in the sun. I have loads of partially implemented ideas, or things I thought would change the world (or at least my life). Sometimes they rise at unexpected moments. All those snippets I post? Yeah. :^)
dander
18:15Even if they aren't finished, or no one has ever seen them, they have still contributed to your personal growth. Still there is some pain when things don't reach their potential
18:21Over the past few months I've been realizing that lack of sleep was really negatively affecting me. And on top of that, when I'm sleep deprived, it's harder for me to notice the effect or have the self control to get myself to bed, as weird as that sounds. I've been trying to find a better balance lately.
ne1uno
23:11you can eat better to make up a little sleep but you have to do one or the other faithfully

gltewalt
00:42Could you make a camera based sign language interpreter ?
00:44@9214 I’m more of a pruner, scripter, figure-out-er.
I’ve never done big projects
00:44At least not what I’d consider a big project
ne1uno
01:13OHR, optical hand recognition
gltewalt
01:13But I also have the thing where if I’m into something, I’ll zone out forever and do that instead of tending to other life things.
Problem is I don’t get a lot of alone time when I’m home, and it takes awhile to get into the zone out phase
ne1uno
01:16hospitals put doctors & nursers on insane 36 hour shifts and get away with it. absorbing the cost of mistakes apparently worth it to them
01:17helps to be young too
gltewalt
01:28Any of you try supplements that are supposed to boos the brain?
01:28Boost
greggirwin
05:00Caffeine is one of the best. A good diet, exercise, and sleep are also reasonable substitutes.
toomasv
06:51:wine_glass:
9214
07:09@gltewalt music :notes:
greggirwin
08:40A little wine, a little music...it's downright romantic in here.
9214
08:40red/sandbox is gentlemans club after all
greggirwin
08:41Indeed. Perhaps @toomasv is drinking cognac or whiskey, neat.
9214
10:10:beer: :bear: @rebolek
rebolek
9214
10:24our bear is two months old btw
10:24was reported on 21 Dec
rebolek
toomasv
11:15If 21 Dec was hir's birthday, then hir's conception may be mourned on 1st Dec.
rebolek
11:176th Nov IMO.
toomasv
11:20Gee, do these bears have a long gestation time!
rebolek
11:22They also live very long!
9214
11:22I'm a half-breed now, neither :japanese_ogre: nor :alien:
11:22[![изображение.png](https://files.gitter.im/red/sandbox/YrVQ/thumb/___________.png)](https://files.gitter.im/red/sandbox/YrVQ/___________.png)
11:22sorry to butt in your bear talk
rebolek
11:23you should write Jed
9214
11:24what would that be?
rebolek
11:24J dialect for Red?
9214
11:24IMO it's more reasonable just to call one from another
rebolek
11:25have you tried that?
9214
11:25Q is more adequate target for a dialect, it's more readable
11:25not yet, I have a few ideas though :)
toomasv
11:26@greggirwin What do you mean: "**a little** wine"?
greggirwin
18:00Well, it was only one glass. My wife works at a winery.
9214
19:41http://red.qyz.cz/stats/
19:41https://www.youtube.com/watch?v=CwnsPLn6hdY
rebolek
19:43That must be some kind of bug, I guess ;)
9214
19:44my thought too, this was unexpected
19:44are you sure that no one hacked your blog *again*?
rebolek
19:45Red/System article is not deleted from index, so I think it's safe ;)
19:46OTOH Nenad wasn't here for some time, so it's understandable that he's lacking.
greggirwin
20:48@9214, you've been very active lately.
9214
20:49it's more of a habit than anything
21:04https://trello.com/b/tCypaglW/ideas-for-red-contributors
21:04why it's stalled? :(
greggirwin
23:02Why is *what* stalled?

gltewalt
04:28I didn’t know about bugs room
PeterWAWood
04:53@9214 It is stalled because the people who created it, for a variety of reasons, are no longer involved with Red.
gltewalt
04:56What happened to the JavaScript guru guy?
PeterWAWood
04:56Who was the JavaScript guru guy?
gltewalt
04:58Uhh... that guy that helped out with the red stats site. Can’t remember the name.
PeterWAWood
05:00red stats site? I can't remember that.
gltewalt
05:20are1000
rebolek
07:03I don't know, he rewrote my JS code and then disappeared.
9214
07:39I wonder why @are1000 disappeared too, he seemed to be really interested in Red
gltewalt
07:49He touched your sight then mysteriously disappeared. Hmmm
07:49Site
rebolek
07:49I should probably insept the code for hidden miners and other stuff ;)
are1000
12:21I'm here (kinda)! I just had a really tough January/February and didn't have much time left for Red :(
9214
12:21:tada:
are1000
12:21But I'm not going to disappear! I'm not going to leave @9214 <3
12:23btw, what is wrong with the Red Chat Stats?
rebolek
12:23ha, cool!
are1000
12:23@rebolek I can fix it since I broke it?
rebolek
12:23@are1000 I'm afraid you can't fix it. @9214 is first now.
12:25also, the links [by messages] [by characters]do not work now, but that's not such big problem as @9214 taking first place ;)
are1000
12:27Trust me - I can fix your EVERY problem. At least as long as it begins with J and ends in avaScript. And involves manipulating data so @9214 is accidentally filtered out.
12:27Of course, I would never do it. But I could.
rebolek
12:28I think that you can add the code to filter @9214 out, but not enable it, so I can trust you.
are1000
12:31And I could also put a mechanism that enables the "Grand Filtering" by correct key combination, pixel-perfect scroll positions and a payment in RED tokens.
rebolek
12:31that's the spirit!
are1000
12:32"Tired of @9214 chat domination? Trying really hard but you just can't seem to beat him? Donate NOW to fix this problem once and for all!"
9214
12:38Didn't know that I bother everyone so much
are1000
12:39You don't @9214 :(
12:40It's us who are failures...
rebolek
12:40@are1000 let's just focus on fixing the buttons for now, we don't want to lose @9214
9214
19:34just a side note about [J's IDE](http://prog21.dadgum.com/48.html), to which I can highly relate, it's easily customizable and feature complete, both as an editor and learning environment
19:35and Red certainly can take an inspiration from that
19:36oh, and DrRacket of course
gltewalt
20:51@greggirwin I have a good business for ya.
Develop gps tracker for special needs kids that isn’t essential big rubber encased cell phone
20:51Essentially
greggirwin
21:22@gltewalt, 'round here we just use a cowbell, which works for anyone.

Is there really not something out there already that does that?
21:24Nice to see you again @are1000! I think the only adjustment we need to make is to subtract digit based username values from the total. Or maybe weight things by age, so you young guys have to work harder. ;^)
gltewalt
21:56There are a few smart watch type of devices but they’re more limited than the AngelSense trackers.
Problem with AngelSense is that the devices are so big. Their app is pretty good, but their devices and accessories aren’t so good.

The smallest things are Bluetooth which will not help you track down anyone if they run off
21:58If something unobtrusive could be invented that worked reliably that had as good of software as AngelSense - it would be a godsend
21:59Remind me when I go to return your book and I’ll bring the device and stuff
greggirwin
22:15Sounds good. IoT wearables seem like a great fit for this kind of thing.
gltewalt
22:55Maybe next week sometime if you’re un-swamped

gltewalt
09:26The biggest, silliest thing for me with JS or some other mainstream language - I revert back to trying to set variables (er, words) with = when I jump back over to Red
rebolek
12:10@gltewalt
>> =: make op! func [this that][set this that]
== make op! [[this that]]
>> 'x = 1
== 1
>> x
== 1
gltewalt
18:05lol, I don't wan't to do 'x = 1
greggirwin
22:17@rebolek -1 token for you!

9214
18:27https://crime.team/~hypercard/ looks interesting
18:31[grumble-grumble](https://redmonk.com/sogrady/2018/03/07/language-rankings-1-18/) :^/
greggirwin
19:03Ah, Hypercard.
9214
19:03@greggirwin lol, we "Ah"-ed synchronously in two separate rooms :^)
greggirwin
PeterWAWood
23:44[Hypercard's Liveliest Descendant](https://livecode.com)

Phryxe
10:24Trello/Kanban stuff on Github ... https://www.gitkraken.com/glo
greggirwin
20:32Wow, that is some slick marketing. Lovely.

Phryxe
07:27I thought so.
Oldes
12:21I'm now forced to write some objective-c code and I cannot help myself and write my feelings here: it is SO ugly language! I really wonder what drugs their were using when they were defining its syntax.
9214
12:22@Oldes subjective opinion on objective C, I like your style ;)
Oldes
12:23Is there anybody who likes objective-c? Is something like that possible?
rebolek
12:24Apple fanboys?
Oldes
12:25Real apple fanboys don't know, what is Terminal.
9214
12:25Let it out. Let it aaaaaaaall out.
Oldes
12:28I would like to, but it is so obscure that I really must know, WHY it was designed as it is.
12:40If [in Objective-c](https://en.wikipedia.org/wiki/Objective-C) is:
- (return_type)instanceMethod2With2Parameters:(param1_type)param1_varName param2_callName:(param2_type)param2_varName;

same like this in C++:
return_type instanceMethod2With2Parameters (param1_type param1_varName, param2_type param2_varName=default);

What is purpose of the param2_callName?
12:41Ok.. I will let it out.
12:42_interleaving of selector segments with argument expressions_
12:42I will have to make job fast and quit as soon as possible.
gltewalt
14:59Trying to mash C syntax together with smalltalk syntax?
rebolek
18:42So, können wir sprachen hier на разных языках?
18:43I would love to dust off my German and Russian.
9214
18:43If you're слегка не в себе, はい
toomasv
18:43@rebolek Did it mean something like: If I spoke in my native language, I am afraid nobody would understand my native tongue. (?)
9214
18:44It could be useful, at least for naming - sometimes I'm looking for some catchy words and wonder how they sound in other languages.
rebolek
18:44@toomasv basically yes, it's a dialect of Czech that most Czechs don't understand :)
18:45@toomasv but it's interesting that most Czech Redbolers do.
toomasv
18:46Nay, it is more like: "That I would speak in .."
rebolek
18:46@toomasv did you found some hantec translator?
toomasv
9214
18:47oh, interesting
https://en.wikipedia.org/wiki/Hantec_slang
toomasv
18:47But I have an interest in languages
9214
18:47me too, although a casual one :)
rebolek
18:49@9214 yep, it's a mix of Czech, German, Yiddish and also Gipsy. Basically everyone who lived here contributed.
18:50Also, HanTec sounds like some evil company from William Gibson's novel.
BeardPower
19:05@lepinekong_twitter Sorry, here I am :D
9214
20:32@rebolek for some reason, [this track](https://www.youtube.com/watch?v=Rv-6kVUht5M) strongly reminds me about Czech and you :)
20:33title and cover are slightly rude though, no offense here!
BeardPower
20:39So sandbox is "do whatever you want", right?
9214
20:40it's anarchy here, though, @greggirwin is still watching over his kids :^)
BeardPower
20:40:baby_chick:
20:42I thought it was about testing out some Red code :D
9214
20:44let's pretends that we're using a dialect
BeardPower
20:44:+1:
greggirwin
21:27All good here. Small group for now, so we can be free.

@Oldes, I feel your pain just a bit. I had to do some ObjC work a few years back and even just ramping up to do some testing and debugging was painful.
BeardPower
21:31I just went through he Blend2D giitter room, examples, screenshots. This thing is really amazing :)
21:32This also caught my attention:
>There are more companies interested about this as well, so I'm working hard on releasing the lib
21:32The more I think about the more I feel that "AGG" should return to Red as Blend2d :D
21:33A Vulkan backend is also considered.
greggirwin
21:40Indeed. Very nice work.
BeardPower
21:41I will collect the screenshots in the wiki entry as well.
21:44Regarding a binding. The lib does not use exceptions, only error messages, which is good. Need to look into it.

lepinekong_twitter
07:49@Oldes I'd really have the concept of message sending at runtime (without the ugly objectiveC syntax) integrated with a language not even having actor/concurrency stuffs.

gltewalt
02:48How come @9214 doesn't show up on contributors data?
02:48https://github.com/red/red/graphs/contributors
greggirwin
05:17Shows commiters only, not thousands of chat messages.
PeterWAWood
05:22Harsh
greggirwin
05:34:^) Indeed.
gltewalt
06:04😂
06:07He used to be on there. Is it because he changed his name?
9214
07:09@gltewalt I think github tracks contributions based on e-mail, I changed mine not so long ago and disappeared
10:24and because I'm not cool, @gltewalt unfollowed me :wink:
lepinekong_twitter
11:38Crazy distributed database https://gun.eco interview of the guy here https://changelog.com/podcast/236 I don't even understand how it works in principle but I like the idea of no server, do you think it would be easy to reimplement in red :smile:
gltewalt
19:55I didn’t unfollow
BeardPower
20:04@lepinekong_twitter
>Crazy distributed database https://gun.eco interview of the guy here https://changelog.com/podcast/236 I don't even understand how it works in principle but I like the idea of no server, do you think it would be easy to reimplement in red :smile:

There is no such thing as "no server". Every node is a server, it's master-to-master replication.
Should not be a problem with ports.
20:04And thanks for sharing :D
lepinekong_twitter
21:35@BeardPower as I understand no central server in traditional sense ;)
BeardPower
21:37Yes. There are many "instances" running, which will synchronize through P2P with a consensus algorithm based on strings.
21:40Like a decentralized open source Firebase/RethinkDB.
21:40It's implemented in JS.
greggirwin
21:50> Crazy distributed database ...I don't even understand how it works in principle...do you think it would be easy to reimplement in red

Really hard to answer without digging in, but it's a small graph database written in JS, so should be possible. Anytime the words crazy distributed database appear, easy doesn't come to my mind when playing word association.

The real question is not how hard, but how valuable.
BeardPower
22:04It's time we drop ancient http/html and come up with some new tech :smile:
lepinekong_twitter
22:14Another crazy one https://medium.com/@aboodman/noms-init-98b7f0c3566 :smile:
22:16@greggirwin there is some explanation here https://gun.eco/distributed/matters.html
BeardPower
22:16@lepinekong_twitter All I would need is [RRDtool](https://oss.oetiker.ch/rrdtool/) :)
lepinekong_twitter
22:20@BeardPower what I need is a distributed knowledge management system ;)
BeardPower
22:21The internet? ;-)

toomasv
04:31@lepinekong_twitter Have you exhausted [semanitc web](https://www.w3.org/standards/semanticweb/)?
lepinekong_twitter
07:21@toomasv at the moment I'm not focused on semantic yet, I'm more on collecting, storing, organizing, publishing and sharing knowledge.

lepinekong_twitter
10:57If it is of any interest for Red ;) https://github.com/google/kythe as for me I'm building some facilities to analyze my own red code but with red kythe seems too a giant beast for me but it should become a standard maybe !

gltewalt
22:41Is this the result of a handful of motor mouths, or a major increase in activity from last year?

https://imgur.com/a/zcgHl
dander
22:48@gltewalt I think there is a little bit of both :wink:
rebolek
23:24@gltewalt I will update stats and you can decide for yourself :)
23:26I would love to provide stats automatically, but that's not possible, until https://github.com/red/red/issues/3223 is fixed :(

greggirwin
23:54@dander +1. And it will probably grow throughout the upcoming year quite a bit.

gltewalt
00:04He said you can use load instead or read for the 3223 problem

gltewalt
23:37@greggirwin I would have liked to have stayed for all of the talks, but I had to run and tend to the kid. I had about 2 hours of 'get-out-of-jail-free' time.
23:38I don't think I got to relax once from 11:30 until 10:00pm

greggirwin
18:10I'm glad you made it at all. We'll get together soon.
9214
18:10@greggirwin wrong chit-chat :smirk:
gltewalt
18:13You should tell everyone how packed it was since you associated the talk(s) with blockchain
greggirwin
18:27:^) Only the first talk was packed, the others were lightly attended. Head of BSU Comp Sci was in the first talk, too, and stayed the whole time.
9214
18:28@greggirwin did you burn the tapes?
gltewalt
18:29Wasn't the second talk blockchainy?
greggirwin
18:33@9214 I ate the SD card, but it was full size so...
18:33@gltewalt, yes, but on FOSS tokenomics, so few people cared. :^\
9214
18:34> so few people cared

@greggirwin did you burn them?
gltewalt
18:34Oh, is it the cryptocurrency allure?
greggirwin
20:20Yes, crypto is the key.
20:21Call your talk "One weird trick to get rich with blockchains" and you'll sell out.
BeardPower
20:22Buy low and sell high? :smile:
20:22The trend is your friend?
20:22Never buy the tops, but the dips?
9214
20:24Puuuuuuuuuump!
BeardPower
20:25And dump, yep.

gltewalt
17:49yijjjjjjjjjjj
BeardPower
17:52Not hot, will not invest.
gltewalt
17:53Sorry - my son grabbed the laptop
BeardPower
17:54😄
9214
17:57GRT/YIJ is low
17:57on which exchanges?
17:58Market promoting this project. Everything is SON
17:59it should be SON/YIJ tho'
18:00When Initial Laptop Grabbing?
BeardPower
18:01It should definitely be on Loopring.
gltewalt
18:01Already happened
BeardPower
18:02SON/CAT is definitely interesting as well.
9214
18:06let's bring son to the moon
rebolek
19:25my wife is hodling son until July, cat is available thought, but very cautious

toomasv
19:08A [date-picker](https://gist.github.com/toomasv/1234d616d8e43a4e49efaa7c1a06c9c9) (Warning: loads range from web):
[![date-picker](http://vooglaid.ee/red/date-picker.gif)](http://vooglaid.ee/red/date-picker.gif)
greggirwin
20:53Niiiice!
dander
22:12really great! It's so nice having all these useful examples from you, @toomasv
x8x
22:40lovely! :+1:
greggirwin
22:48When I dust off my requestors gist, that's the next thing I'm going to steal...er...leverage.

toomasv
02:51Thanks guys!
rebolek
05:28:+1:
BeardPower
08:56Very nice!

toomasv
14:28For some time already I have thought about a diagramming tool. Now decided to try. Here is a first skech:
[![diagram](http://vooglaid.ee/red/diagram.gif)](http://vooglaid.ee/red/diagram.gif)
ne1uno
15:06untitled? graphwizard?
15:07graphwiz for short
x8x
15:12:+1:
BeardPower
15:50Nice.
gltewalt
17:03:fire:
greggirwin
22:02Nice, again, @toomasv !

rebolek
08:46:+1:

toomasv
17:06Interludium
[![diagram2](http://vooglaid.ee/red/diagram2.gif)](http://vooglaid.ee/red/diagram2.gif)
dander
17:30@toomasv as always, your work is really interesting. I've been recently looking at ways of processing structured log data, and I've found that Windows Performance Analyzer has some very powerful graphing capabilities, but seems limited to ETW events. Anyway, I guess it's probably not the use case you are thinking of, but this made me think of that.
toomasv
17:55@dander Thanks! I'll look into this WPA. Seems interesting.
dander
17:58it definitely has a bit of a learning curve. This guy has a lot of good info on the topic https://randomascii.wordpress.com/2015/09/24/etw-central/
toomasv
18:12@dander Thanks for the link, very interesting!
dander
21:05[![image.png](https://files.gitter.im/red/sandbox/OMnj/thumb/image.png)](https://files.gitter.im/red/sandbox/OMnj/image.png)
21:08This is an example with WPA where I was looking at the performance of doing a multi-part download from S3. You can see where 'chunk 3' hung the transfer for a significant amount of time because it was going so slowly...
These graphs are generated using 3 events for chunk started, chunk completed, and number of bytes that were read into the read buffer
21:09it has really opened my eyes to the possibilities of structured logging

toomasv
03:49@dander Thanks! LG-WT :)
dander
05:08LG-WT?
toomasv
05:46Looks great - will try

toomasv
19:29Do you have your reduce-in-place funcs? Not sure how useful it is but here is one thought:
reduce-in-place: func [block [block!] /local pos][
   while [not empty? block][
      block: change/part block do/next block 'pos pos
   ] head block
]
>> reduce-in-place b: [does [print "hi"] f: func [a][a + 2] "probe [me]" f 1 b/2 3]
== [func [][print "hi"] func [a][a + 2] "probe [me]" 3 5]
>> b/1
hi
>> :b/1
== func [][print "hi"]
>> :b/2
== func [a][a + 2]
>> do b/3
[me]
== [me]
20:15Version with /deep:
reduce-in-place: func [block [block!] /deep /local pos][
	while [not empty? block][
		block: either all [deep block? block/1][
			change/only block reduce-in-place/deep block/1
		][
			change/part block do/next block 'pos pos
		]
	] head block
]
>> reduce-in-place/deep b: [does [print "hi"] [func [a][a + 1] [b/2/1 7]]]
== [func [][print "hi"] [func [a][a + 1] [8]]]
greggirwin
21:37Nice one @toomasv.

toomasv
04:44@greggirwin Thanks! Third line should be block: either all [deep block? :block/1][ though. Then this works too:
>> reduce-in-place/deep b: [does [print "hi"] [func [a][a + 1] 3 [b/2/1 7]]]
== [func [][print "hi"] [func [a][a + 1] 3 [8]]]
>> reduce-in-place/deep b
hi
== [unset [4 [8]]]
04:58What would be a good name for such func? evaluate? Or just valuate?
06:09Settled with [revalue](https://gist.github.com/toomasv/90c9c85431ea9bcdb7f26b36599e1f37)
greggirwin
23:21Revalue is fun, especially since replace is taken. :^) Reassess?
gltewalt

toomasv
03:24Thanks! reassess is good too.

toomasv
06:29Back to incrementation funcs:
inc: func ['val][set val (get val) + 1]
dec: func ['val][set val (get val) - 1]
incr: func ['val step][set val (get val) + step]
decr: func ['val step][set val (get val) - step]
++: make op! :incr
--: make op! :decr
increment: func ['val /by step][set val (get val) + any [step 1]]
decrement: func ['val /by step][set val (get val) - any [step 1]]
>> e: 0
== 0
>> inc e
== 1
>> incr e 5
== 6
>> decrement e
== 5
>> increment/by e 22
== 27
>> e ++ 3
== 30
>> e -- 28
== 2
>> e
== 2
>> e: 1-May-2018 loop 5 [print also e inc e]
1-May-2018
2-May-2018
3-May-2018
4-May-2018
5-May-2018
>> e: #"a" loop 26 [prin also e inc e]
abcdefghijklmnopqrstuvwxyz
dander
18:47@toomasv interesting use of op!
greggirwin
19:18Can't remember if mine are in a gist @toomasv, but we should charge this banner forward.
9214
19:25@BeardPower :smirk:
BeardPower
19:25@9214 Damn, he saw my BS :smile:
9214
19:25@BeardPower just enough RED will seal my mouth forever :japanese_ogre:
BeardPower
19:27@9214 :rocket: :full_moon_with_face:
9214
19:27:hotsprings: :chart_with_upwards_trend:
19:28:clock3: :car: :question:
BeardPower
19:29Master of Pictionary

toomasv
11:45Playing with range shorthand:
system/lexer/pre-load: func [source part /local int i1 i2 i3 blk len][
	int: charset [#"0" - #"9"] 
	parse source [
		some [
			ahead [some int ".."] 
			s: [copy i1 some int ".." copy i2 some int (i3: 1) opt [#"|" copy i3 some int]] e: (
				i1: to-integer i1 i2: to-integer i2 i3: to-integer i3 
				blk: make block! len: i2 - i1 / i3 + 1 
				change/part s repeat i len [mold append/only blk i1 + (i - 1 * i3)] e
			) 
		| 	skip
		]
	]
]
>> foreach i 0..10|2 [print i]
0
2
4
6
8
10
>> reduce [5..9 4..8|2 reverse 3..15|3]
== [[5 6 7 8 9] [4 6 8] [15 12 9 6 3]]
15:07Two corrections:
int: charset [#"-" #"0" - #"9"]

and
mold repeat i len [append/only

...
>> -1..5
== [-1 0 1 2 3 4 5]
>> -1..5|2
== [-1 1 3 5]
>> 10..5|-2
== [10 8 6]
gltewalt
17:36That’s 😎
toomasv
20:24 :recycle:

greggirwin
17:46Very nice @toomasv.

toomasv
06:33Made [short-range](https://gist.github.com/toomasv/fcceab33fb88c80a8c3a4ecff97587cd) variable:
try: does [foreach i a..b|c [print i]]
>> a: 5 b: 15 c: 3 try
5
8
11
14
>> a: 15 b: 5 c: -3 try
15
12
9
6
greggirwin
16:42Very nice @toomasv. That addresses (kind of like my intupelate) one of my big issues with the value of literal ranges. They are literal. We do use those, but they're not nearly as useful as parameterized ranges.
toomasv
21:02@greggirwin Thanks! Yes, without variability it would not be of much use.

gltewalt
04:19system/console/eval-command "1"
04:20In cli console
>> system/console/eval-command "1"
*** Script Error: set does not allow error! for its word argument
*** Where: set
*** Stack: load
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== ""


But in GUI Console, stack overflow

>> system/console/eval-command "1"
*** Internal Error: stack overflow
*** Internal Error: stack overflow
*** Where: set
*** Stack:  

== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== 1
== ""
>> 
*** Script Error: value out of range: 37
*** Where: poke
*** Stack: ask do-events do-actor do-safe
greggirwin
17:04That should not be exposed. I think there's a ticket for that already. If not, please note it.

rebolek
12:33Unofficial builds page is running for a month now, so it's time for some basic stats, here are downloads by system:
linux: 304
    win: 57
    macos: 178
    rpi: 108
BeardPower
13:21Wow, so most users are *NIX people.
rebolek
13:37Most downloads from that page, to be precise.
13:38I also should filter bots, to get better results, I doubt the high numbers for rPi.
BeardPower
19:45Yeah, that one is a little suspicious.

toomasv
19:59Basic logic-gates:
[![logic-gates](http://vooglaid.ee/red/logic-gate1.gif)](http://vooglaid.ee/red/logic-gate1.gif)
BeardPower
20:22@toomasv great
x8x
21:00@toomasv Wow!! :thumbsup:

greggirwin
02:28Wow indeed! Very cool @toomasv !
toomasv
04:33Thanks! [Code is here](https://github.com/toomasv/gates) (buggy still). I started tinkering with logic gates while reading biography of [Claude Shannon](https://www.goodreads.com/book/show/32919530-a-mind-at-play) (thanks Gregg!). Never delved into these before. Any ideas for interesting circuits? Resources? Suggestions for improvement? (Plannning to griddify the canvas and make connections orthogonal)
greggirwin
05:21Shannon, woohoo! It's a good read.
gltewalt
06:43How about a railroad diagram generator that we can use for docs?
06:52https://imgur.com/a/qekAwzr
06:54Or a drag-n-drop railroad diagram maker
toomasv
08:03@gltewalt Hmm.. Another graph-project
BeardPower
10:31@toomasv create a d-flip-flop, half- and full adders, LEDs and prepare a CPU :smile:
10:35Red needs some SPICE simulator.
ne1uno
12:30netlist input output
toomasv
17:58Three half-adders (should add labels):
[![logic-gates2](http://vooglaid.ee/red/logic-gate2.gif)](http://vooglaid.ee/red/logic-gate2.gif)
gltewalt
19:39Very cool
greggirwin
21:04@toomasv, less than 200 LOC for this. So cool. It reminds me that the remove find idiom is common enough that delete could be implemented for series values to do that. Delete is informally categorized as an I/O action, but what do others think about that?
21:18@gltewalt @toomasv, a RR diagram generator has been on my wish list for a long time. For ren-data.org I used http://www.bottlecaps.de/rr/ui (which is great), but I think it could be very useful in Red, because of dialects. It will help people document their dialects.
21:19@toomasv, this logic gate example is definite showcase material.

toomasv
19:54@greggirwin
As delete is taken already, I implemented expunge :-)
expunge: func [face /from pane][pane: any [pane face/parent/pane] remove find pane face]
greggirwin
20:02@toomasv, nice. :^)
20:03It would be an issue for delete, because of the arity. Unless we add something like a /part refinement.
20:04Then we could also just use remove and add the refinement there.
toomasv
20:15About showcase - I put it now into [Projects showcase](https://github.com/red/red/wiki/Projects-showcase-(links-to-remember)) but it is raw still.
BTW, it seems using panethesis in link names is not good for referencing, as above. Should be https://github.com/red/red/wiki/Projects-showcase-(links-to-remember)
greggirwin
20:19The link syntax always messes with me, beyond simple single-word values.
toomasv
20:35^ "panethesis" hi-hi
20:38It would be nice to have delete for face-deleting also -- less to remember.. Want to delete something? -- delete

greggirwin
00:58Except you need to know the series holding the reference to <it>. That's the catch.

toomasv
14:44Exploring the rgb-cube:
[![rgb-cube](http://vooglaid.ee/red/rgb-cube.gif)](http://vooglaid.ee/red/rgb-cube.gif)
9214
14:44@toomasv https://github.com/red/red/wiki/[LINKS]-Projects-showcase-(links-to-remember)
:+1:
toomasv
14:49@9214 Needs some work still, rotations are tricky. These three sides work well though. (And cover all the color-space)
greggirwin
21:57Very cool @toomasv !

toomasv
18:31From today's discussion in help room - function with memory:
memorize: function [arg1 arg2 /recall n][
   history: [] 
   if recall [return new-line/all/skip case [
      n = 'all [history] 
      n = 'last [at history (length? history) - 1] 
      block? n [copy/part at history 2 * n/1 - 1 2 * n/2] 
      integer? n [copy/part at history 2 * n - 1 2]
   ] true 2] 
   append append history arg1 arg2 
   [do something with args]
]
memorize 1 2
;== [do something with args]
memorize 3 4
;== [do something with args]
memorize 5 6
;== [do something with args]
memorize 'a 'b
;== [do something with args]
memorize/recall none none 'all
;== [
;    1 2 
;    3 4 
;    5 6 
;    a b
;]
memorize/recall none none 'last
;== [
;    a b
;]
memorize/recall none none 2
;== [
;    3 4
;]
memorize/recall none none [2 2]
;== [
;    3 4 
;    5 6
;]
9214
18:32@toomasv conventionally, memoize should accept a function and return its memoized version.
18:33At least that's the way I've learned the concept in functional programming.
toomasv
18:38Ah, yes, memoization ... didn't rememoiz that.
greggirwin
19:45@9214, have you written a function memoizer for Red?
toomasv
20:11Tried direct memoization for factorial:
factorial: function [n][
   values: [1.0] 
   either val: pick values n + 1 [val][
      while [
         n + 2 > l: length? values
      ][
         append values l * val: last values
      ]
   ] 
   val
]
gltewalt
20:14How can you do optional?
20:15memorize: function [/opt arg1 arg2 /recall n][
toomasv
20:20Optionals *per se* can be added without problem, but how to memorize calling without arguments... Have to record counting incrementals AND optionals. Needs some meditation
gltewalt
20:25Or optional if /recall
toomasv
20:27Order of magnitude quicker:
factorial: function [n][
   values: make hash! [1.0]
   ...
]
greggirwin
22:43A memoizer would be a pretty cool example, because of Red's free ranging evaluation, refinements, and reflective abilities. Good challenge for some big brain.

toomasv
03:34And with map it is 3x faster than with hash:
factorial3: function [n][
   values: #(1 1.0) 
   either val: values/(n + 1) [val][
      while [
         n + 2 > l: length? values
      ][
         values/(l + 1): l * val: values/:l
      ]
   ] 
   val
]
gltewalt
04:11Yeah, associate arrays should be O(1)
04:11For lookup
toomasv
04:32Oops! make hash! was plain stupid as it makes new one on each run :flushed:
Otherwise, block is only slightly slower than map, probably because the size of block/map is small.
gltewalt
04:36I believe it is because of the size
04:36You could fill it up with 1000 values and run the profiler on it
04:39Or 100 values. Might be waiting awhile for 1000
greggirwin
04:44For small sizes, blocks are fine. At some point, we could profile to determine guidelines for when to think about switching.
04:45e.g., I don't know if hash! has different performance characteristics when used with parse.
gltewalt
05:04I'm also dumb... time isn't going to be the issue. Number size is
05:07Run in to 1.#INF at factorial3 171
9214
07:28@greggirwin I wrote ad hoc versions here and there, but it's a bit tricky to do in general case, because you must know in advance which argument to memorize.
07:28e.g. in func [a b][...]. is it a, b, or combination of both?
07:29Should refinements play their role?
07:33In the simplest case it's just
map: #()
any [
    map/:arg
    map/:arg: foo arg
]
greggirwin
07:39@9214 could be interesting for memoize to take a list of args to act on. e.g. /with, where the default is to memoize all args.
9214
07:42@greggirwin that's what I'm thinking too. Problem is that with list of args you won't get perfomance of map and hash, because they explicitly forbid series as keys.
dander
16:41@9214 what about using nested maps?
9214
17:09@dander either this or a simple block of key / value pairs with select/only/skip ... 2, where keys are reduced argument lists and values are associated results, previously returned from a function.

I'm swamped without a trusty working station right now and leave it for curious minds to figure out.
17:09I believe list of arguments is called *domain* of a function?
17:43@dander and how nested maps would work anyway? Arguments can be of any datatype, even those that can't be used as map keys.
gltewalt
17:48The only many-to-one option we have is the block setup you mentioned
9214
17:55Take a function, clean up its spec from docstrings and typesets, convert refinements to words, handle lit- and get- arguments. Reduce this block and check if its a key in your "memo" - if it is then return associated value, otherwise extend "memo" with key / value pair and return value <-- this logic should be embedded in a newly constructed version of a function that you should return back.

dander
00:35@9214 good point on the data types issue. That would defeat the single level map too wouldn't it? Was there some discussion about more general support for key types in maps? I suppose you could hash the values yourself and use that to look up values.

toomasv
15:27How about adding /only refinement to to-block?
to-block: func ["Convert to block! value" value /only][
    either only [append/only copy [] :value][to block! :value]
]
to-block "c"
;== [c]
to-block/only "c"
;== ["c"]
to-block [c]
;== [c]
to-block/only  [c]
;== [[c]]
greggirwin
15:51To- functions are automatically generated, so it's not as easy as just changing that one func.

I'm also not sure it makes sense in the context of converting values. That is, to-* should be idempotent if the arg is already the target type (ignoring copying), where your last example would create deeper and deeper nestings with /only.

What is the use case behind it? Your ideas most often come from real world use, so let's look at that.
toomasv
16:19I'm thinking about remove-from-map by values, by keys, by datatypes. Will show soon. The question above was a by-product, not vital. Thanks for explanation!
greggirwin
16:20:+1:
toomasv
17:32@greggirwin Here it is:
remove-from-map: function [map vals /keys /local skp1 skp2][
	unless block? vals [vals: append copy [] vals]
	set [skp1 skp2] either keys [[0 -2]][[1 -3]]
	block: skip body-of map skp1
	forall vals [
		while [
			block: find/skip/tail block vals/1 2
		][
			put map first skip block skp2 none
		]
		block: skip body-of map skp1
	]
	map
]
>> remove-from-map #(a 1 b 2 c "c" d g "e" :f 1 10) "c"
== #(
    a: 1
    b: 2
    d: g
    "e" :f
    1 10
)
>> remove-from-map #(a 1 b 2 c "c" d g "e" :f 1 10) get-word!
== #(
    a: 1
    b: 2
    c: "c"
    d: g
    1 10
)
>> remove-from-map #(a 1 b 2 c "c" d g "e" :f 1 10) [1 10]
== #(
    b: 2
    c: "c"
    d: g
    "e" :f
)
>> remove-from-map #(a 1 b 2 c "c" d g "e" :f 1 10) reduce [string! get-word!]
== #(
    a: 1
    b: 2
    d: g
    1 10
)
>> remove-from-map/keys #(a 1 b 2 c "c" d g "e" :f 1 10) set-word!
== #(
    "e" :f
    1 10
)
>> remove-from-map/keys #(a 1 b 2 c "c" d g "e" :f 1 10) [1 "e"]
== #(
    a: 1
    b: 2
    c: "c"
    d: g
)
>> remove-from-map/keys #(a 1 b 2 c "c" d g "e" :f 1 10) reduce [string! integer!]
== #(
    a: 1
    b: 2
    c: "c"
    d: g
)

greggirwin
04:42Thanks! Will try to review tomorrow, after meetings.

toomasv
05:25I wonder if within? works correctly. E.g. following pic is from the code
>> view/no-wait [box 101x101 draw [b1: box 0x0 100x100 pen red b2: box 0x0 10x10 b3: box 90x90 100x100]]
== make object! [
    type: 'window
    offset: 902x505
    size: 130x121
== make object! [
    type: 'window
    offset: 902x505
    size: 130x121
    te...
>> 
>> within? b2/3 b1/2 b1/3
== true
>> within? b3/3 b1/2 b1/3 - b1/2
== false
>> within? b3/3 - 1 b1/2 b1/3 - b1/2
== true

[![image.png](https://files.gitter.im/red/sandbox/DAIN/thumb/image.png)](https://files.gitter.im/red/sandbox/DAIN/image.png)
05:29within? is currently defined as
within?: func [
    {Return TRUE if the point is within the rectangle bounds} 
    point [pair!] "XY position" 
    offset [pair!] "Offset of area" 
    size [pair!] "Size of area" 
    return: [logic!]
][
    to logic! all [
        point/x >= offset/x 
        point/y >= offset/y 
        point/x < (offset/x + size/x) 
        point/y < (offset/y + size/y)
     ]
]

Problem is < in last two comparisons, instead of <=.
rebolek
05:29Is it?
05:30https://doc.red-lang.org/en/draw.html#_box
05:30You don't define box' size, but it's bottom right corner
toomasv
05:34Sorry, corrected my example. Problem is still same.
rebolek
05:37You are computing size as b1/3 - b1/2. Let's have a small box that starts at 1x1 and goes to 2x2. If I compute size as you do, I will get that the size is 1x1. That's obviously wrong.
toomasv
05:40So, you suggest that size should be calculated as end - start + 1?
rebolek
05:41Yes.
toomasv
05:46Then to find end from start and size, which I would intuitively do as start + size, should instead be calculated as start + size - 1?
rebolek
05:48Intuition isn't always right :) See the 1x1 - 2x2 example. If you count it as end - start, you get 1x1 size and if you count it as start + size, you'll get 3x3 as end.
toomasv
05:56OK, that's also why to see whole box 0x0 100x100 face shoud be one px bigger, e.g. in view [box 101x101 draw [box 0x0 100x100]], for box's size is 101x101. Got it. Thanks :)
rebolek
05:58you're welcome!
06:00We are so used to indexing from 1 in Red, that the fact that images are indexed from 0x0 can throw us bit off rails ;)
toomasv
16:15Cryptic dir-tree, just for fun:
dir-tree: function [][p: :parse a: :append c: :copy o: c {} pr: c [] d: :read e: :either m: :remove h: :change-dir
p p d %. r: [collect some [s: keep file! [if (dir? s/1) keep (h s/1 p d %. r) (cd ..) |]]] 
r: [some [s: file! (a o a e dir? s/1 [also a c pr s/1 a pr #"^-"][a c pr s/1] #"^/") | block! (p s/1 r) (m pr)]] o]
greggirwin
16:18@toomasv, I'll have to come back to that, after a brain transplant. ;^)
toomasv
16:19Don't worry, I'll be waiting.

toomasv
10:58Parsing backwards. Handy e.g. if you bump on some value in draw block and want to know which keyword it is attached to:
backward-rule: [collect some [l: keep word! to end | [pair! | integer! | end] (l: back l) :l]]
parse tail [box 1x1 2x2 10] backward-rule
;=[box]
parse skip [line 1x1 2x2 10x20 1000x600] 4 backward-rule
;=[line]

Or if you want to check wether it is certain kind of thing:
parse tail [line 1x1 2x2 10x20 1000x600] [some [l: 'line to end | [pair! | integer! | end] (l: back l) :l]]
;== true
parse tail [box 1x1 2x2 10x20 1000x600] [some [l: 'line to end | [pair! | integer! | end] (l: back l) :l]]
;== false
greggirwin
17:22I don't think I've seen anyone do that before @toomasv. It opens up new ways of thinking about debugging parse rules.

toomasv
13:49Example of usage. Play with clickin' and draggin' w/wo ctrl:
view [
	box snow 300x300 draw [
		fill-pen 0.0.0.254 box 50x50 250x250 
		fill-pen 0.0.0.254 box 100x100 200x200
	] 
	on-down [
		set [series				failing							ending] 	reduce either event/ctrl? [
			[tail face/draw		[(l/-1: 0.0.0.254 l: back l) :l]	[if (head? l) to end | (l: back l) :l]]
		][
			[face/draw			[(l/-1: 0.0.0.254)]				[skip]]
		]
		parse series [
			some [
				l: 'box set s pair! set e pair! [
					if (within? event/offset s sz: e - s + 1)(
						ofs: event/offset - s
						l/-1: 'red
					) break 
				| 	failing
				] 
			|	ending
			]
		]
	]
	all-over on-over [
		if event/down? [
			l/2: event/offset - ofs
			l/3: l/2 + sz
		]
	]
]
greggirwin
17:02Wow! I love how you think outside...inside...and around the box.
BeardPower
17:02 @greggirwin There is no box :-)
9214
17:03@BeardPower there is no 'there'.
BeardPower
17:05@9214 Who said that? :-)
greggirwin
17:05It clearly wasn't me.
9214
17:06@BeardPower whom are you talking to?
BeardPower
17:06@greggirwin That's what the Illuminati would say.
17:06@9214 It's my daily rant ;-)

toomasv
18:09POC of live layout editing
[![layout-editor](http://vooglaid.ee/red/lay-tree.gif)](http://vooglaid.ee/red/lay-tree.gif)
greggirwin
18:12Woohoo! Very cool.
toomasv
18:32:smile:
dander
18:40wow, really neat!
toomasv
19:41Thanks!
rebolek
22:00@toomasv :clap:

toomasv
20:02Some developments:
[![lay-tree2](http://vooglaid.ee/red/lay-tree2.gif)](http://vooglaid.ee/red/lay-tree2.gif)
rebolek
20:49really nice
greggirwin
23:08"Some" developments he says, as if it's not almost an IDE. OK, I know it's *not* almost an IDE, but almost an IDE for building a live coding IDE. ;^)

These examples really show the power of Red. So cool.

dockimbel
01:01@toomasv Very cool, great job! :+1: You should re-post it in red/red, so that everybody can see how flexible GUI can be.
toomasv
03:24Thanks all! :smile: I'll repost it then.
BeardPower
17:10@toomasv Nice GUI designer!

x8x
12:32Always great stuff @toomasv ! Congrats! :thumbsup:
toomasv
12:37@x8x :point_up: [October 2, 2018 9:54 PM](https://gitter.im/red/red/gui-branch?at=5bb3bed4c7bf7c3662a6e110)

toomasv
11:43Micro browser:
ws: charset reduce [space newline tab]
rule: [
	remove thru {<div class='blog-posts hfeed'>}
	some [
		remove [{<div class='blog-pager' id='blog-pager'>} thru end]
	|
		remove [
			"<script" thru "script>" 
		| 	"<style" thru "style>" 
		| 	#"<" thru #">"
		] 
	| 	change " " #" "
	| 	change "&" #"&"
	|	change ["&#" s: to [e: #";"]] (to-char to-integer copy/part s e) 
	| 	skip
	]
]
view/flags [
	on-resizing [
		foreach-face face [
			either face/type = 'field [
				face/size/x: event/window/size/x - 20
			][
				face/size: event/window/size - face/offset - 10x10
			]
		]
	]
	below 
	field 400 default https://www.red-lang.org focus on-enter [
		parse tx: read face/data rule
		parse tx [some [2 newline change [newline some ws] newline | skip]]
		ar/text: tx
	] 
	ar: area 400x400 wrap
] 'resize
greggirwin
15:42:+1: I tried http://www.rebol.com and got quite a bit of markup in it though. Might need a few more lines of code. ;^)
toomasv
15:58@greggirwin Nope, there were too many lines :wink: (I added some site-specific criteria to above). Following works ok with rebol.com (and in general, I hope):
Red [Needs: View]
ws: charset reduce [space newline tab]
rule: [
	;remove thru {<div class='blog-posts hfeed'>}
	some [
	;	remove [{<div class='blog-pager' id='blog-pager'>} thru end]
	;|
		remove [
			"<script" thru "script>" 
		| 	"<style" thru "style>" 
		| 	#"<" thru #">"
		] 
	| 	change " " #" "
	| 	change "&" #"&"
	|	change ["&#" s: to [e: #";"]] (to-char to-integer copy/part s e) 
	| 	skip
	]
]
view/flags [
	on-resizing [
		foreach-face face [
			either face/type = 'field [
				face/size/x: event/window/size/x - 20
			][
				face/size: event/window/size - face/offset - 10x10
			]
		]
	]
	below 
	field 400 default http://www.rebol.com focus on-enter [
		parse tx: read face/data rule
		parse tx [some [2 newline change [newline some ws] newline | skip]]
		ar/text: tx
	] 
	ar: area 400x400 wrap
] 'resize
greggirwin

toomasv
15:52Poor man's micro-browser vol2:
[![nano-browser](http://vooglaid.ee/red/micro-browser.gif)](http://vooglaid.ee/red/micro-browser.gif)
x8x
17:54:thumbsup:
BeardPower
18:10@toomasv :+1: But can it run Crysis? ;-)
toomasv
18:21:joy_cat:
BeardPower
18:23We need a great Browser in Red. I hate this Firefox, Chrome, Edge etc. bloat. "All" we need would be a great and W3C standard conform layout engine.
toomasv
18:24Well, my 200 LOC is far cry from this.
BeardPower
18:25Well, it's great for what it is.
18:25Any stats on resource usage?
toomasv
18:32But there are some daring steps toward the goal [picbrowser.red](https://github.com/toomasv/learning/blob/master/browser/picbrowser.red):
[![picbrowser](http://vooglaid.ee/red/picbrowser.gif)](http://vooglaid.ee/red/picbrowser.gif)
x8x
18:35Smart and useful! :thumbsup:
toomasv
18:45[![image.png](https://files.gitter.im/red/sandbox/sjWk/thumb/image.png)](https://files.gitter.im/red/sandbox/sjWk/image.png)
18:45@BeardPower I'm bad on this. Suggest, how do I measure it. CPU usage (three pikes are fetching new pages):
18:46No change in memory consumption, as far as I can tell.
BeardPower
18:49@toomasv You can just open the Task Manager and click on the "Red Browser" process.
toomasv
18:5112MB CPU 4,6% on feching new page.
18:59Firefox is curently taking 3 giga, but gee, I have tons of pages open :flushed:
ne1uno
19:04gc versions eat some few percent CPU doing nothing now, so that's not much different than idle. scripts/js css eat memory
BeardPower
19:04> 12MB CPU 4,6% on feching new page.

Thanks!
toomasv
19:06Nie-za-što!
19:37@x8x Thanks! :smile:
dander
20:14@toomasv as always, very interesting demos! Sidenote: for very detailed process information, https://processhacker.sourceforge.io/ is fantastic.
toomasv
20:44@dander Thanks! This shows 17,4 MB (initially starting from ~12), max CPU 9,4% and 1MB I/O on feching new page.
BeardPower
20:57@toomasv I also recommend https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer

dander
02:33@BeardPower yeah, both are great. I think process hacker has quite a bit more information in the single app (though not so much if you combine the other sysinternals tools)
ne1uno
02:38process explorer has the old regmon/filemon builtin for tracking registry and file access/requests. it's worth having just for those
dander
02:40@ne1uno do you mean sysinternals? Those are separate tools in the suite, right?
ne1uno
02:44@dander: not sure about the suite, last I remember they rolled those tools that stopped working after Xp into process explorer. at some point microsoft bought them out, I haven't really kept up
dander
02:53Maybe I just didn't notice them in there. Anyway, there are several gems. It's worth noting that though Microsoft did buy them out, it's still maintained somewhat by the same authors.
ne1uno
03:13@dander: it looks like procmon is what I was thinking of, I must have installed the suite, it's been awhile since I thought about it
03:16https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
dander
03:41There are some cool demos using procmon and some other tools in the [case of the unexplained](https://docs.microsoft.com/en-us/sysinternals/learn/webcasts) videos. I have found procmon to be a bit intimidating to use in the past
ne1uno
03:51it's a little shocking when you first see how much goes on in a few seconds
03:52need to filter well
toomasv
04:37@dander @BeardPower @ne1uno Great tools all! Thanks!
greggirwin
17:13@toomasv, if possible, we should set aside some RedCon time for the team to talk about a Red "Browser" project.
17:14As always, really exciting to see what new things you ad overnight.
toomasv
17:18@greggirwin Jawohl.

toomasv
14:31Playing with a stick:
[![stick1](http://vooglaid.ee/red/stick1.gif)](http://vooglaid.ee/red/stick1.gif)
BeardPower
14:43@toomasv So this is THE stick to poke things with :smile:
toomasv
14:43It is!
BeardPower
14:44Nice experiments :+1: Is it snapping to the center of the circles?
toomasv
14:45Nope. You have to drive the other end EXACTLY on the point.
BeardPower
14:45Pixel exact?
toomasv
BeardPower
14:46When Appstore? ;-)
toomasv
14:48My personal [appstore](https://gist.github.com/toomasv/d687889418ebb3c21c03e1745bbbb47f)
ne1uno
14:48stick based gui testing?
toomasv
14:49:smile_cat:
BeardPower
14:58Next: beating a dead horse ;-)

greggirwin
21:07I sense a game...

BeardPower
09:57@greggirwin The game title "The Stick of Truth" is already taken, unfortunately.
greggirwin
14:50Divining Rod?

9214
16:11Here's my first draft of [memoization](https://github.com/9214/whatnot/blob/master/red/memoize.red). It doesn't handle 'quoted arguments well, raises a couple of design questions (order of refinements in function call, treating series arguments with same? comparator), but overall seems quite robust (although I haven't check anything much).
inspect: func [function][
    probe new-line/skip 
        get in context? first select body-of :function 'any 'memory
        on 2
]

factorial: memoize func [n][
    if n <= 1 [return n]
    n * factorial n - 1
]

>> factorial 10
3628800
== 3628800
>> inspect :factorial
[
    [1] 1 
    [2] 2 
    [3] 6 
    [4] 24 
    [5] 120 
    [6] 720 
    [7] 5040 
    [8] 40320 
    [9] 362880 
    [10] 3628800
]

Will appreciate any stress-testing :)
greggirwin
17:14Very cool. :+1:

geekyi
09:03Hi all!
rebolek
09:06Hi @geekyi
geekyi
09:14@rebolek Have to catchup with all the cool stuff you guys have done!
rebolek
09:38@geekyi Cool! If you have any questions, feel free to ask!
9214
15:08Hey @geekyi, glad to see you again.

greggirwin
17:42Indeed!

gltewalt
02:19Biggest downfall of gitter... no stickers
02:21@geekyi Were you off working at that company that was using Rebol?

geekyi
21:41@gltewalt no, had changed tact and been using R for some time.

toomasv
12:59AoC Day 10 Viz:
[![d10](http://vooglaid.ee/red/day10.gif)](http://vooglaid.ee/red/day10.gif)
rebolek

toomasv
21:22AoC Day 12
[![day12](http://vooglaid.ee/red/day12.gif)](http://vooglaid.ee/red/day12.gif)
greggirwin
21:32Go @toomasv, go!

toomasv
15:03AoC d20 maze:
[![maze](http://vooglaid.ee/red/maze.gif)](http://vooglaid.ee/red/maze.gif)
Phryxe
15:24Cool stuff :)
toomasv
16:16:smile:
greggirwin
17:47@toomasv Woohoo!
17:47It's like a Zen river.
toomasv
17:50It is zen er.. consciousness :innocent: (-lessness)

dander
16:34mesmerizing. I watched the whole thing

BeardPower
00:52Nice!
gltewalt
19:46http://www.businessinsider.com/high-resolution-photo-lets-you-zoom-in-on-peoples-faces-2018-12
greggirwin
20:53We talked about doing something like that for iBEAM. Not quite at that scale, but that was because of cost. You pay for precision, but panning and stitching isn't rocket science.
20:53And you can use zoom-tiling, like maps do.
20:58Their demo pic and UI is really nice. I can't remember the project, but more than one of the big 3 were doing stuff with contributed pics, stitching and creating 3D simulations based on camera position projections. I don't see the use of images slowing down.