|
00:48
melezhik_ joined
00:50
melezhik_ left
01:49
melezhik_ joined
01:51
melezhik_ left
02:04
Aedil joined
02:12
vrurg left,
vrurg joined
02:28
arkiuat left
02:30
arkiuat joined,
justache left
|
|||
| disbot6 | <jubilatious1_98524> @Voldenet Why should that matter? A bad name is a bad name. | 02:30 | |
|
02:31
justache joined
02:35
arkiuat left
02:46
arkiuat joined
02:50
melezhik_ joined
|
|||
| disbot6 | <frostcod> Hi, I am reading today's raku advent, and what's going on here? | 02:51 | |
| <frostcod> what's going on here | |||
| <frostcod> cdn.discordapp.com/attachments/633...653be& | |||
|
02:51
arkiuat left
|
|||
| disbot6 | <frostcod> so many " " | 02:52 | |
|
02:55
hulk joined,
melezhik_ left,
kylese left
|
|||
| Voldenet | jubilatious1_98524: it's already there in Promise, but I'd argue that it serves similar purpose for promises | 03:12 | |
|
03:15
hulk left,
kylese joined
|
|||
| Voldenet | m: 2 + 3 andthen * + 5 andthen * ** 2 andthen .say | 03:17 | |
| camelia | 100 | ||
| Voldenet | m: await Promise.kept(2 + 3).andthen({ .result.Int + 5 }).andthen({ .result.Int ** 2 }).andthen({ .result.say }) | 03:19 | |
| camelia | 100 | ||
| Voldenet | new andthen lifting simply removes that .result | ||
| because this is only invoked when you get the result and promise is kept | |||
|
03:20
arkiuat joined
|
|||
| Voldenet | and since it's not specified yet, it can be fully changed | 03:21 | |
|
03:26
arkiuat left
|
|||
| disbot6 | <jubilatious1_98524> @Voldenet My question is more general: are there design principles in Raku that guard against mistakes that were made with Perl? There were many complaints about 'overloading' in Perl, and I thought the Raku designers decided to steer clear of that. | 03:26 | |
| Voldenet | …overloading? | 03:28 | |
| that's why I explicitly stated that nobody is proposing to change andthen | 03:30 | ||
| disbot6 | <jubilatious1_98524> But you create confusion in the minds of new users who now have to differentiate dotted-.andthen from undotted-andthen. So you are "overloading" andthen (by adding the dotted"-.andthen form) even if it might not bother you so much. | 03:43 | |
| Voldenet | well: github.com/Raku/old-design-docs/bl...oading.pod | ||
|
03:46
arkiuat joined
|
|||
| disbot6 | <jubilatious1_98524> Well, you're talking programming and I'm talking linguistics. English has ~500,000 (?) words: can't you pick another one? What's wrong with the .subsequently() and .non-subsequently() keywords I suggested on Github? | 03:47 | |
| Voldenet | it's very lengthy and difficult to type | 03:48 | |
| I'd rather have js-esque .then/.catch | |||
| disbot6 | <jubilatious1_98524> My goodness! | ||
| Voldenet | but .then is already taken and specified, unfortunately | 03:49 | |
| disbot6 | <jubilatious1_98524> Why does Raku have to be like C++ or js? Why can't you have Raku autocomplete make light work of it? | 03:50 | |
| Voldenet | it's still lengthy | ||
|
03:51
melezhik_ joined
|
|||
| Voldenet | because of that, you get monstrosities like `await Promise.kept(2 + 3).subsequently({ .Int + 5 }).subsequently({ .Int ** 2 }).subsequently({ .say })` | 03:52 | |
| disbot6 | <jubilatious1_98524> Oh yeah, andthen and notandthen are taken, too. They have nothing to do with Promises. If you want people to activate a different part of their brain when working with Promises, give them a different vocabulary to play with. | ||
| <jubilatious1_98524> m: "andthen".chars.say; "subsequently".chars.say; | 03:53 | ||
| Voldenet | on the other hand having different api for very similar purpose | ||
| disbot6 | <jubilatious1_98524> 5-character difference. | 03:54 | |
| Voldenet | it's a lot when working with promises | ||
| disbot6 | <jubilatious1_98524> m: "notandthen".chars.say; "non-subsequently".chars.say; | 03:55 | |
| Voldenet | wait wait, "notandthen"? | ||
| .orelse | |||
| disbot6 | <jubilatious1_98524> 6-character difference. | ||
|
03:56
melezhik_ left
|
|||
| disbot6 | <jubilatious1_98524> The converse of andthen is notandthen. This is where your proposal will confuse the he** out of new users. | 03:56 | |
| <jubilatious1_98524> docs.raku.org/routine/notandthen | 03:57 | ||
| <jubilatious1_98524> docs.raku.org/language/operators#i...notandthen | |||
| Voldenet | I'm not against having different naming | 03:58 | |
| but it'd be nice to have it sane | |||
| and not do-on-kept({ }).do-on-broken({ }) | 03:59 | ||
| disbot6 | <jubilatious1_98524> Sane...I agree! | ||
| <jubilatious1_98524> Ouch! | |||
| Voldenet | also, newcomers won't be able to use promises at all | 04:00 | |
| disbot6 | <jubilatious1_98524> brb... | 04:01 | |
| Voldenet | sadly, I've seen seasoned programmers not using jquery's animations properly because of promises-based api | 04:06 | |
| disbot6 | <jubilatious1_98524> The point is to not scare-off new users by having documentation that is too difficult to read, what might be called "Snake-Eyes Syndrome". | ||
| <jubilatious1_98524> The blithe term "snake-eyes" comes from Steve Yegge's analysis of Perl's .. "Range Operator" : sites.google.com/site/steveyegge2/...uages-perl | 04:07 | ||
| <jubilatious1_98524> Yegge points out that it takes ~530 words to explain to a new user how to use the .. operator properly. Some learn it, some don't even try. | 04:14 | ||
| Voldenet | heh, there's healthy balance between convenience and simplicity and perl took the convenience route on every turn | 04:19 | |
| disbot6 | <jubilatious1_98524> I'm not trying to harsh on Perl. | 04:20 | |
| Voldenet | I know, the point is that raku is not especially striving for convenience | 04:23 | |
| disbot6 | <jubilatious1_98524> What about .affirmed and .excused ? | ||
| Voldenet | long, uncommon | 04:27 | |
| disbot6 | <jubilatious1_98524> Long? | 04:29 | |
| Voldenet | I'd think of something like `.ok/.do/.got .fail/.err/.oops` | 04:30 | |
| disbot6 | <jubilatious1_98524> (Oh for anyone reading along at home, I vehemently disagree with Yegge's attack on Larry Wall. Full stop.). | ||
| <jubilatious1_98524> My goodness! | 04:31 | ||
| Voldenet | or more verbose .apply/.rescue | ||
| disbot6 | <jubilatious1_98524> You affirm a promise, or make an excuse why one was broken. | 04:33 | |
| <jubilatious1_98524> Better yet, a Promise is eventually fulfilled or unfulfilled. | 04:34 | ||
| Voldenet | essentially, you .map the result or cause of the error | 04:35 | |
| and promise is kept or broken | |||
| except, of course, Any.map is taken | |||
| disbot6 | <jubilatious1_98524> According to whom? JS-people? | ||
| Voldenet | in raku, it's already how it is | 04:36 | |
| js calls it 'fullfilled' or 'rejected' and you have Promise.resolve to create fulfilled promise ;> | 04:37 | ||
| disbot6 | <jubilatious1_98524> Hopefully JS spelled it fulfilled. I'd hate to think they've been needlessly typing an extra character! 😃 | 04:38 | |
| Voldenet | fulfilled, even ;D | 04:39 | |
| fully filled | |||
|
04:39
lichtkind_ joined
|
|||
| Voldenet | but of course, js has .then/.catch for promises | 04:40 | |
| and you rarely see "fulfilled" anywhere | |||
|
04:42
lichtkind left
|
|||
| Voldenet | rust has .ok_then and .err_then, that is nice | 04:43 | |
| disbot6 | <jubilatious1_98524> It's pretty short compared to the German translation: bekräftigen and entschuldigen. | 04:44 | |
|
04:45
melezhik_ joined
04:47
mehbark left,
mehbark joined,
mehbark left,
mehbark joined
|
|||
| Voldenet | at least it's not worse than java's exceptionally | 04:49 | |
|
04:50
melezhik_ left
|
|||
| disbot6 | <jubilatious1_98524> .okey-dokey? .otNay-eptKay? | 04:52 | |
|
04:52
melezhik_ joined
|
|||
| Voldenet | .yay .nay, very playful but I'd have no idea what it does | 04:52 | |
| disbot6 | <jubilatious1_98524> I'm confused about tense then. In Grammars you have make and made, but with Promises you have kept without keep. | 04:55 | |
| <jubilatious1_98524> Shouldn't it be keep(): kept, unkept? | 04:56 | ||
|
04:56
melezhik_ left
|
|||
| Voldenet | not only java is terrible, in C# there's promises api that I avoid with all my might | 04:57 | |
| verbose and inconvenient - shares many qualities with raku's `then` | 04:58 | ||
| unkept would imply that the api hasn't finished | 05:01 | ||
| so you have <Planned Kept Broken> | |||
| Unkept would mean Planned or Broken | 05:02 | ||
| disbot6 | <jubilatious1_98524> So why did you write await Promise.kept(2 + 3). yada yada yada? | 05:03 | |
| <jubilatious1_98524> Should that be `await Promise.planned(2 + 3). | 05:04 | ||
| Voldenet | Well, you create promise that's already in state "Kept" | ||
| so it's kept already | |||
| with .broken you create one that's already broken - planned is the one that was not finished | 05:06 | ||
| disbot6 | <jubilatious1_98524> await Promise.planned(2 + 3) ?? do-this !! do-that; | ||
| Voldenet | promise is already settled, you schedule what to do after it's kept or broken | 05:08 | |
| in fact `Promise.kept(2 + 3).&await andthen .say` would work | 05:10 | ||
|
05:18
Guest35 joined
05:20
Guest35 left
|
|||
| disbot6 | <jubilatious1_98524> I can't read that. Oh well, time to re-read the docs! | 05:29 | |
|
05:54
melezhik joined
06:29
Aedil left
06:38
Aedil joined
|
|||
| ab5tract | keep is a method on Vow | 06:51 | |
| I honestly had never seen notandthen and I have no idea what the point of it is. | 06:52 | ||
| m: 0 notandthen “what”.say | |||
| camelia | ( no output ) | ||
| ab5tract | Is there any difference between notandthen and orelse? | 06:54 | |
| Both require undefined | |||
| The argument that andthen/orelse cannot be reused is not very convincing IMO | |||
|
06:55
melezhik_ joined
|
|||
| ab5tract | We re-use language terms for similar uses all the time | 06:55 | |
| See the statement modifier forms of if/for/unless | |||
| Or start vs Promise.start | 06:56 | ||
|
06:59
melezhik_ left
|
|||
| ab5tract | Okay, this documentation rings a bell, now that I've had a sip of coffee: docs.raku.org/routine/notandthen | 06:59 | |
| "The notandthen operator is a close relative of the without statement modifier, and some compilers compile without to notandthen, meaning these two lines have equivalent behavior:" | 07:00 | ||
| great, thanks, I really needed a different but (maybe) equal syntax | |||
| "At first glance, notandthen might appear to be the same thing as the orelse operator. The difference is subtle: notandthen returns Empty when it encounters a defined item (that isn't the last item), whereas orelse returns that item." | 07:03 | ||
| This kind of keyword is exactly the kind of design creep that gave Perl its difficult reputation | 07:04 | ||
| Any time an example needs to use a reduce operator to demonstrate some difference between two operators, an angel loses its wings and is banished to the hell of compiler maintenance | 07:05 | ||
| And I'm all out of wings | |||
|
07:08
arkiuat left
07:21
arkiuat joined
07:30
arkiuat left
07:35
Geth joined
|
|||
| disbot6 | <jubilatious1_98524> You're calling it design creep but it is because under some circumstances Raku enforces binary logic, while under other circumstances Raku enforces ternary logic. The pair notandthen vs orelse illustrates this dichotomy. | 07:36 | |
|
07:43
arkiuat joined
07:48
arkiuat left
07:56
melezhik_ joined
07:58
melezhik_ left
08:00
arkiuat joined
|
|||
| disbot6 | <jubilatious1_98524> Also, the languages that will win out are the ones that are 1) the most powerful/capable and 2) easiest to train LLMs on. A massively-larger sub/method/function/routine vocabulary will make it easier to train LLMs on Raku. | 08:00 | |
|
08:02
mehbark left
08:03
mehbark joined
08:04
mehbark left,
mehbark joined
08:05
arkiuat left
08:24
Sgeo left
08:34
arkiuat joined
08:39
arkiuat left
|
|||
| ab5tract | I don't think that is a given at all | 08:44 | |
| It seems just as likely to inspire even more hallucination | |||
| disbot6 | <jubilatious1_98524> ~$ raku -e 'my @a = 1...14; for @a -> $a,$b { print ($a,$b,"\t"); ($a.is-prime orelse $b.is-prime).say };' 1 2 False 3 4 True 5 6 True 7 8 True 9 10 False 11 12 True 13 14 True | ||
| <jubilatious1_98524> ~$ raku -e 'my @a = 1...14; for @a -> $a,$b { print ($a,$b,"\t"); ($a.is-prime notandthen $b.is-prime).say };' 1 2 () 3 4 () 5 6 () 7 8 () 9 10 () 11 12 () 13 14 () | 08:45 | ||
| ab5tract | I don't see any utility over grepping for | ||
| False and replacing with Empty | |||
| but clearly I'm not the intended user of notandthen | 08:46 | ||
| disbot6 | <jubilatious1_98524> Maybe an easier example for the notandthen Docs page? | ||
| ab5tract | Could be.. but | 08:47 | |
| the sensors version has a "story" to it, which is kind of nice | |||
| FWIW I've only ever understood this operator family to be useful when one wants to topicalize the LHS for use on the RHS | 08:48 | ||
| So probably there is a lack of imagination on my part as to the utility of these things | 08:49 | ||
|
08:53
evalable6 left
|
|||
| disbot6 | <jubilatious1_98524> I'm trying to rewrite the examples I posted to return a prime number or () Empty, as opposed to prime number and 0. I think that's sort-of the intended use? I'll probably have to pick it up again tomorrow. | 08:54 | |
|
08:54
quotable6 left,
committable6 left
08:57
evalable6 joined,
melezhik_ joined,
committable6 joined
08:59
quotable6 joined
09:01
melezhik_ left
|
|||
| ab5tract | Thanks for your efforts here, jubi (may I call you that? your Discord name is hard to type out in its entirety) | 09:01 | |
| I wonder if its better to add your example as a clarifier in the docs, rather than a replacement | 09:02 | ||
| My thinking here is that it eases the pressure off of your example to carry the weight of the entire explanation | 09:03 | ||
| disbot6 | <jubilatious1_98524> (I've seen people type J1 ... if that helps). | 09:04 | |
| <jubilatious1_98524> (or j1, or j-one. TMTOWTDI). | 09:05 | ||
|
09:05
arkiuat joined
|
|||
| ab5tract | J1: got it, thanks | 09:06 | |
| disbot6 | <jubilatious1_98524> Thanks for the feedback. Your call on the Docs. We have more eyeballs here and I'm sure others will chime in. | 09:07 | |
| ab5tract | Right now the docs are lacking an example which demonstrates the difference between orelse and notandthen when not chained | 09:09 | |
| So I expect an example that does so would be welcome | |||
|
09:09
bdju left
09:10
arkiuat left
09:11
Aedil left
|
|||
| disbot6 | <librasteve> Apologies to the advent Raku email subscribers, early viewers and Marcel (the author) of today's raki-advnet.blog post for the Grinch has been sprinkling   s (with a missing ;) ... I am now running around with my Grinch hammer | 09:12 | |
| ab5tract | behold the Grinch hammer! | ||
| disbot6 | <librasteve> ... hoping to restore colour vision | ||
| <librasteve> oh, I mean MorayJ, not Marcel | 09:14 | ||
|
09:15
dakkar joined
09:16
librasteve_ joined
09:24
melezhik left
09:34
dakkar left
09:41
lizmat_ left
09:42
lizmat joined
09:48
arkiuat joined
09:52
melezhik joined
09:54
arkiuat left
09:55
melezhik_ joined
09:57
melezhik_ left
10:03
melezhik_ joined
10:08
melezhik_ left,
melezhik_ joined
10:20
melezhik_ left,
melezhik_ joined,
arkiuat joined
10:24
bdju joined
10:25
arkiuat left
10:32
melezhik_ left,
melezhik_ joined
10:47
melezhik_ left
10:49
arkiuat joined
10:54
arkiuat left
11:08
arkiuat joined
11:13
arkiuat left
11:17
sibl joined
11:22
sibl left,
sibl joined
11:26
arkiuat joined
11:35
arkiuat left
11:51
arkiuat joined
11:56
arkiuat left
12:02
sibl left
12:12
melezhik left
12:16
librasteve_ left
12:19
arkiuat joined
12:23
arkiuat left
12:51
arkiuat joined
12:56
arkiuat left
13:07
arkiuat joined
13:12
arkiuat left
|
|||
| tbrowder | cool article, too bad Wordpress has such a crappy editor. being able to upload a valid PDF file would be very slick... | 13:34 | |
| i tried to comment but WP got hung up in a "loading...." loop | 13:35 | ||
|
13:38
arkiuat joined
|
|||
| tbrowder | i would love to see us have an advent blog site that would accept rakudoc or pdf or any of several aother well-known formats. i would contribute $ to the project. | 13:38 | |
| tonyo i think has demoed something like that in an advent post a few years ago | 13:42 | ||
|
13:43
arkiuat left
|
|||
| disbot6 | <antononcube> @trbrowder Being able to upload a valid Jupyter notebook would be even slicker! | 14:00 | |
|
14:02
melezhik joined
14:03
swaggboi left
14:05
arkiuat joined
14:14
arkiuat left
14:19
swaggboi joined
|
|||
| disbot6 | <librasteve> tbrowder: this is my dream for the HARC Stack - mainly due to the Muellenweg driven Wordpress implosion saga - I have had a link to this page raku-advent.blog/2019/12/02/crud-c...-tutorial/ in my bookmark favourites for a year now ... HARC can already deal well with code highlighting and markdown content (on raku.org), and Richard showed me a draft of his Rakudoc Air::Component last weekend ... SmokeMachine has | 14:26 | |
| added permissions to Cromponent routes (v0.0.14), but I have not had a chance to move the pin up from 0.0.13 yet (Air::Component is a wrapper on Cromponent), arun is working on Red migrations. There is a well defined Air::Plugin interface (we can already exchange Rakudoc and HARC stack plugins such as Hilite). We are already at a point where if you want a custom component to (say) embed a PDF or a Jupyter Notebook viewer, then if you can | |||
| render it to HTML you can write one. Let me know and I will happily support that effort. | |||
|
14:33
arkiuat joined
14:41
arkiuat left
14:53
arkiuat joined
14:57
orangebot joined
14:58
arkiuat left
15:02
Sgeo joined
|
|||
| disbot6 | <librasteve> the Grinch hammer found a   (no ;) in the code for Hilite::Simple ... v0.0.4 is the fix - also i learned how to do Wordpress email preview | 15:02 | |
|
15:12
arkiuat joined
15:17
arkiuat left
15:18
arkiuat joined
|
|||
| disbot6 | <antononcube> @librasteve So, now "Hilite::Simple" works with WordPress? | 15:37 | |
| <antononcube> Meaning, exprorts / HTML code generated by "Hilite::Simple" if pasted in WordPress produces higlighted code. | 15:38 | ||
| ab5tract | the Grinch hammer strikes again :) | 15:40 | |
| ab5tract is a fan of the Grinch hammer | 15:41 | ||
| hunting always reminds me of the output of Microsoft FrontPage ;) | |||
|
15:43
maskd left
|
|||
| timo | frontpage had a "show me a graph of all the connections of my website" and that completely blew tiny timo's mind back then | 16:03 | |
| disbot6 | <librasteve> @antononcube - one thousand times yes - go zef install Hilite::Simple && hilite mycode.raku > mycode.html then paste the (very compressed) HTML into the HTML field of a Wordpress Custom HTML block | 16:05 | |
| <librasteve> make sure you have Hilite::Simple v0.0.4 | |||
|
16:17
arkiuat left
16:20
arkiuat joined
16:36
andinus left,
andinus joined
16:41
andinus left,
andinus joined
16:47
andinus left,
andinus joined
17:06
mahlay left
17:08
mahlay joined
|
|||
| tbrowder | so if i have a way to get a pdf2html converter, its output is what i need first? | 17:12 | |
| disbot6 | <librasteve> I would just embed the PDF somehow - you know, like a Wordpress PHP plugin - but depends on your use case | 17:26 | |
| Voldenet | pdf is terrible format for web publishing, markdown is a bit saner but the best format for web publishing is *drumroll* html directly | 18:11 | |
| it's as if it was created for web, amazing | |||
| pdf has binary compressed blobs of text, polygons, images, describes absolute coordinates - it's basically forcing the screen to render scrollable paper of specified format | 18:15 | ||
| and rendering markdown into html is surprisingly difficult, because of multiple markdown flavors, \t and \n in random order being interpreted differently :/ | |||
| disbot6 | <librasteve> Voldenet: on PDF, I agree - I gather that tom's use case would be to write a blog post as a PDF and then to translate it to HTML and serve as a webpage - I 110% agree that this is going to look very bad thanks to the reasons you outline | 18:17 | |
| Voldenet | an interesting thing for html - libreoffice writer has "preview in browser" option that renders pretty good html | 18:21 | |
| the result is not perfect, but it's quite clean | 18:22 | ||
| disbot6 | <librasteve> otoh, I think it is fairly common to see PDF files served as a webpage - or embedded in a page (often in a viewer where you can scroll / page) | ||
| Voldenet | it's convenient for documents that are supposed to be printed, but doesn't render well on mobile sadly | 18:24 | |
| disbot6 | <librasteve> where I depart from is Markdown - I think if you simply use markdown as originally specified (# => h1, ## => h2, - => ul, links and so on) then it maps 1:1 to HTML and is much nicer to type and to read in the source | ||
| <librasteve> psibar-compressors.co.uk/technical/ by PDF viewer for Elementor | 18:32 | ||
| [Coke] | I agree on markdown for simple formatting. easy, short. | 18:40 | |
| Voldenet | in markdown if you for example have blocks of code inside numbered lists, numbered lists may get reset or not for example, depending on the markdown parser | 18:48 | |
| or if you have tables | 18:49 | ||
| [Coke] | Yup, that's already too complex, agrred | ||
| disbot6 | <librasteve> ++++ | 18:50 | |
| Voldenet | that's why for anything more complex I prefer html directly | ||
|
18:52
melezhik left
|
|||
| disbot6 | <antononcube> HTML code can be used in Markdown files. | 18:54 | |
| <antononcube> Also, as far as I know tables are not standard Markdown feature. | 18:55 | ||
| <antononcube> Hence, using HTML tables makes sense. To a large extend that is why I implemented "Data::Translators", to be able to render Raku data structures to HTML, | 18:56 | ||
| <antononcube> R, Python, etc. | |||
| <antononcube> So, Raku arrays of hashmaps can be converted to HTML tables. | 18:57 | ||
|
18:59
melezhik joined
|
|||
| tbrowder | chatgpt tells me prog pdf2htmlEX was pretty good | 19:00 | |
| disbot6 | <antononcube> Hmm... ChatGPT can probably convert PDF to HTML pretty well. But for these conversions I would use pandoc. (Which may or may not use other pdf* programs. | 19:03 | |
| Voldenet | yeah tables are not standard sadly, so using html is valid idea too | 19:05 | |
| disbot6 | <librasteve> haha - I am very happy to support anyone to make a HARC plugin to do anything ... | 19:06 | |
| <librasteve> HARC uses Text::Markdown ... no tables yet ... | 19:10 | ||
| tbrowder | hm, git markdown does tables... | 19:12 | |
| disbot6 | <antononcube> @librasteve If your HARC uses my "Markdown::Grammar" then it will have tables. | ||
| <antononcube> @tbrowder Yes, GitHub supports tables and Mermaid diagrams. Very useful for documentation... | 19:13 | ||
|
19:19
arkiuat left
19:25
arkiuat joined
|
|||
| tbrowder | doing "raku --f | 19:30 | |
| doing "raku --doc=Markdown soms | 19:31 | ||
|
19:33
arkiuat left
|
|||
| tbrowder | anyhow, that works pretty well with most of my tables. there is a bug i filed that's still opened but the use case was pretty weird | 19:33 | |
|
19:52
arkiuat joined,
Pixi left,
Pixi joined
|
|||
| disbot6 | <librasteve> @antononcube - I have swapped out Text::Markdown for Markdown::Grammar - md tables now work (part of a major upgrade to Air so will take a few days to filter through) | 20:27 | |
| tbrowder | bril: @antonaoncube could improve Pod::To::Markdown | 20:33 | |
| disbot6 | <librasteve> @antononcube I guess this will work for jupyter -> html ... BUT the use case for markdown is "I am making a HARC stack website, I write a HEREDOC block in my raku source instead of writing content like Air::Functional librasteve.github.io/Air/docs/Air/...onal.html, it renders as a text component on the site" ... however the use case I see for jupyter is "here is a .pynb file, please render it as an embedded block | 20:43 | |
| in an HTML page" - comment? | |||
| <antononcube> The Jupyter framework knows how to export Jupyter notebooks to Markdown. I have low-priority TODO item to program Jupyter to Markdown converter in Raku, but I have found much need for it so far. | 21:02 | ||
| <librasteve> well Air is about website, so Jupyter => HTML | 21:03 | ||
| <antononcube> I see then, yes, "Jupyter::Grammar" has to be implemented, with actions to Markdown, HTML, Org-mode, Pod6, and Mathematica. 🙂 | 21:05 | ||
| <antononcube> As for the use case -- if I understand correctly -- of heredocs content being converted from Markdown to whatever (say, HTML) this can be done with the sub from-markdown for "Markdown::Grammar". | 21:06 | ||
| <antononcube> BTW, "Markdown::Grammar" convert Markdown files to Jupyter. That was easy to do, that is why I think "Jupyter::Grammar" would be easy to do also. | 21:07 | ||
| <librasteve> cdn.discordapp.com/attachments/633...0859f& | 21:12 | ||
| <antononcube> In case it is not clear/known -- a Jupyter notebook is "just" a JSON string. A JSON array of dictionaries (i.e. cells) with some conventions about the keys and values. | 21:13 | ||
| <librasteve> cdn.discordapp.com/attachments/633...b6f5d& | 21:14 | ||
| <librasteve> ^^ this is the code that I just committed | 21:15 | ||
| <librasteve> and how it is consumed (see raku.org/learn for the result) | |||
| <librasteve> Air is just a nice way to write websites in raku | 21:16 | ||
| <antononcube> I see -- great! | |||
| <librasteve> my point is that, in general, you are not going to take the .ipynb json and paste into a main jupyter q::to/END/; stanza ... more likely you will want to just "include" the .ipynb file eg in resources | 21:18 | ||
| <librasteve> no, not resources, but docs | 21:19 | ||
|
21:20
social joined
|
|||
| disbot6 | <antononcube> Which -- the way I see it -- means that you have a sub from-jupyter(to => ...) that you can use however you see fit. Right? | 21:21 | |
|
21:21
social left,
social joined
|
|||
| disbot6 | <librasteve> hmm - need to think of a better name - docs is used elsewhere - the concept I have is "here is a root dir, walk it and render as a tree of html pages with optional nav and breadcrumbs - filetypes supported are md, pynb, pdf, html | 21:22 | |
| <librasteve> yes - pandoc/Markdown::Grammar/Jupyter::Grammar are all good engines | 21:23 | ||
| <librasteve> would run once on first access | |||
|
21:24
social left
|
|||
| Voldenet | that sounds amazing, consider customizable rendering | 21:24 | |
| disbot6 | <antononcube> What is the of higher priority: (1) implementation of "Jupyter::Grammar", or (2) finishing the advent article for Dec 6th ? | ||
| <librasteve> could point at a gh repo as the root | |||
| <antononcube> (Unfair question, I know...) | |||
| <librasteve> oh, mebbe rakudoc | |||
| <librasteve> 222222222222222 | 21:25 | ||
| Voldenet | e.g. `host-dir("/", :extensions(md => MarkdownRenderer.new, avi => FfmpegMp4, dwg => DwgToJpeg))` etc. | ||
| disbot6 | <librasteve> .oO | ||
| Voldenet | with some sane default implementations, but also some customizability | 21:26 | |
| having one .render method could also mean that the rendering pipeline can be composed a bit | 21:27 | ||
| so `(md => ComposeRendering.new(AddBreadcrumbs.new, AddHtmlStyling.new, MarkdownRenderer.new)` | 21:28 | ||
| disbot6 | <librasteve> s/render/RENDER/ | ||
| Voldenet | either would work, I'm unsure on whether binary files rendering should be supported or not | 21:29 | |
| e.g. it'd be awesome to have font preview or autocad files work ootb | |||
| in browser | |||
| but that might even require rendering into multiple files | |||
| some of them binary | |||
| disbot6 | <librasteve> github.com/librasteve/Air-Plugin-Hilite is one pattern, however, I think this deserves a different (more like a Cro transformer) pattern ... so maybe Air::Transformer::XXX | 21:31 | |
| Voldenet | so `/car.dwg` becomes html, but has also `/car.dwg/areas.js /car.dwg/preview.jpg` and so on | ||
| though I'm just throwing the ideas out, wouldn't want to make it too bloaty | 21:32 | ||
| disbot6 | <librasteve> Air::Plugin:: already has HTML, SCRIPT, CSS, SCSS as an interface - would need to add PREVIEW maybe THUMB | 21:35 | |
| Voldenet | what I'm describing may as well be very out of scope, tbh. | 21:36 | |
|
21:36
social joined,
social left
|
|||
| disbot6 | <librasteve> the new thing would be "here's a root dir, propagate one child level to the parent nav" | 21:37 | |
| Voldenet | attaching files could be done with something like `method RENDER { add-file("preview.jpg", :bytes(Buf…)); img :src("preview.jpg") }` OR `method RENDER { add-file("preview.jpg", :renderer(DwgToJpeg.new) }` | ||
| so RENDER would return html, but also hint that it has "subfiles" | 21:38 | ||
| disbot6 | <librasteve> no, your thinking is a stretch - but 100% on message | ||
| Voldenet | also, there could be cases where buffering in-memory and range operator would be needed (FfmpegMp4 obviously, if you wanted to share proprietary digicam video for browsers) | 21:39 | |
| erm, not buffering | |||
| disbot6 | <librasteve> well - yeah - suggest we leave video streaming to v0.0.2 | 21:40 | |
| Voldenet | or where you really want to host symlink to /proc/meminfo :p | ||
| and want to have it in realtime | |||
| disbot6 | <antononcube> I thinking now that "Jupyter::Grammar" is misleading, since no grammar is used or leveraged. So, maybe "Jypyter::Converters" is better, but I do not like much either. | 21:41 | |
| Voldenet | I don't mean to implement dwg and mp4 conversion, just to make it possible via api somehow | 21:42 | |
| disbot6 | <librasteve> well, yes - a symlink to a streaming url (looks at wordpress youtube embed block) | ||
| Voldenet | but now that I can imagine rendering directory as gallery, media host (a'la youtube), wiki pages through only various top-level renderers, it's amazing | 21:43 | |
| disbot6 | <librasteve> yep!! | 21:46 | |
| <antononcube> @librasteve Coming soon: github.com/antononcube/Raku-Jupyte.../tree/main | 21:51 | ||
| <librasteve> ++ | 22:15 | ||
|
22:42
melezhik left
23:08
eseyman left
23:11
manu_ joined
23:20
manu_ is now known as eseyman
|
|||
| disbot6 | <librasteve> news.ycombinator.com/newest … please upvote DOSH | 23:23 | |
| <librasteve> if you liked it … | |||
|
23:23
librasteve_ joined
|
|||
| disbot6 | <antononcube> Which one? | 23:48 | |
| Voldenet | it says dosh in the title | 23:49 | |
| disbot6 | <antononcube> Yeah, found it. | ||
| <antononcube> Hm... "LLM::DWIM" fails to install, when trying to install "dosh". | 23:51 | ||
| <antononcube> Correction -- "LLM::DWIM" installs, "Test::META" installs, but I have to run them separately. | 23:54 | ||
| <antononcube> After installing those, "dosh" installs too. | |||
| <antononcube> Hmm, "dosh" might be Linux-tested and not that much on macOS... | 23:57 | ||
| <antononcube> And yes, I like it -- it was in my TODO list try it out. | 23:58 | ||
| Voldenet | I did 'zef install dosh' and it all installed on the first attempt | 23:59 | |