If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: strangelyconsistent.org - Main page :: Strangely Consist.

site address: strangelyconsistent.org

site title: Main page :: Strangely Consistent

Our opinion (on Thursday 15 October 2026 23:55:04 UTC):

GREEN status (no comments) - no comments
After content analysis of this website we propose the following hashtags:



Meta tags:

Headings (most frequently used words):

epoq, diary, strangely, consistent, continuations, faq, 013, scatterbrained, 012, error, messages, 011, theory, practice, and, languages, braided, together,

Text of the page (most frequently used words):
the (217), that (92), and (78), you (52), this (35), but (34), with (33), continuations (32), what (29), one (26), code (24), not (22), error (22), some (22), just (22), stack (22), for (21), function (21), are (20), was (19), have (18), like (18), when (17), they (17), bel (17), all (16), thing (15), from (15), about (14), call (14), things (13), get (13), here (12), interpreter (12), work (12), been (12), #continuation (12), need (11), next (11), well (11), think (11), source (10), would (10), there (10), quite (10), value (10), really (10), other (10), language (10), stacks (10), these (9), way (9), might (9), its (9), make (9), let (9), good (9), nil (9), raku (9), program (8), only (8), more (8), because (8), can (8), how (8), those (8), kind (8), almost (8), catch (8), while (7), say (7), caller (7), calls (7), information (7), out (7), which (7), line (7), where (7), srrecip (7), wrong (7), could (7), doesn (7), did (7), much (7), had (7), after (7), them (7), throw (7), alma (7), messages (6), possible (6), even (6), message (6), look (6), has (6), your (6), first (6), type (6), maybe (6), example (6), implementation (6), going (6), don (6), than (6), then (6), api (6), yes (6), were (6), functions (6), name (6), bit (5), problem (5), any (5), user (5), seems (5), needs (5), predicate (5), column (5), called (5), use (5), above (5), today (5), list (5), right (5), instead (5), passed (5), blog (5), based (5), guess (5), never (5), picture (5), down (5), whole (5), post (5), statement (5), return (5), lot (5), fastfuncs (5), cps (5), control (5), javascript (4), world (4), will (4), definitely (4), between (4), time (4), run (4), point (4), part (4), doing (4), sure (4), too (4), file (4), once (4), style (4), also (4), both (4), running (4), better (4), sense (4), body (4), off (4), take (4), mean (4), still (4), believe (4), now (4), using (4), easy (4), epoq (4), diary (4), weird (4), exactly (4), mix (4), try (4), into (4), didn (4), each (4), sounds (4), flow (4), exceptions (4), implemented (4), foo (4), bar (4), very (3), generated (3), simple (3), computer (3), target (3), together (3), two (3), happens (3), whatever (3), who (3), making (3), failed (3), typecheck (3), trying (3), looking (3), fact (3), mistype (3), programming (3), again (3), normal (3), happen (3), should (3), repl (3), built (3), structures (3), far (3), went (3), another (3), ways (3), theory (3), hand (3), argument (3), parameter (3), already (3), through (3), explanation (3), may (3), works (3), details (3), def (3), hint (3), end (3), hard (3), along (3), show (3), elm (3), drop (3), possibly (3), bad (3), big (3), notes (3), carl (3), mäsak (3), few (3), idea (3), current (3), thought (3), yet (3), happy (3), png (3), always (3), magenta (3), gets (3), represent (3), before (3), back (3), needed (3), compose (3), ago (3), regular (3), their (3), script (3), around (3), tell (3), values (3), loop (3), explain (3), why (3), usually (3), know (3), consistent (3), somehow (3), prn (3), monads (3), helpful (2), same (2), reason (2), compile (2), found (2), opposite (2), expect (2), shows (2), full (2), access (2), format (2), anyway (2), course (2), evaluating (2), without (2), something (2), able (2), nothing (2), four (2), used (2), excellent (2), straightforward (2), cons (2), pairs (2), internal (2), aren (2), itself (2), change (2), people (2), blame (2), against (2), anything (2), front (2), calling (2), though (2), haven (2), started (2), does (2), mine (2), important (2), couldn (2), issue (2), add (2), long (2), fine (2), non (2), real (2), machine (2), order (2), create (2), number (2), zero (2), side (2), blaming (2), currently (2), lines (2), sorry (2), main (2), 1st (2), toint (2), int (2), handle (2), errors (2), chosen (2), giving (2), see (2), says (2), proud (2), years (2), invalid (2), couple (2), moments (2), thinking (2), 2020 (2), space (2), ideas (2), practice (2), during (2), algorithm (2), meta (2), pretty (2), write (2), slow (2), experience (2), drawing (2), old (2), basic (2), dedicated (2), cga (2), warm (2), colors (2), wanted (2), little (2), canvas (2), realized (2), neat (2), least (2), image (2), render (2), math (2), random (2), drawcircle (2), fill (2), stroke (2), small (2), being (2), reader (2), substitute (2), continue (2), catching (2), inferior (2), runloop (2), mixing (2), causing (2), phrase (2), parrot (2), heart (2), extra (2), term (2), trick (2), short (2), robot (2), jump (2), map (2), help (2), implement (2), test (2), ran (2), months (2), new (2), waiting (2), transformed (2), recursive (2), limited (2), switch (2), manually (2), convert (2), arrange (2), state (2), came (2), said (2), level (2), understand (2), whether (2), uses (2), natural (2), mind (2), direction (2), expects (2), shape (2), interesting (2), coroutines (2), within (2), internally (2), fairly (2), concept (2), await (2), actually (2), page (2), isn (2), condition (2), yourself (2), model (2), appropriate (2), named (2), languages (2), mystical (2), strangely (2), illusion, mapping, south, causes, convenient, pretend, exists, human, deal, squish, worlds, runtime, friendly, happening, showing, sort, separation, interested, interpreting, evolve, incrementally, eyeing, register, juggled, delicate, arguments, evcall, either, reconstruct, surrounding, location, robust, typechecking, hey, thrown, depths, utility, predictably, build, emit, consider, matter, tedious, comes, immediate, gnarly, pocket, universe, doable, representing, completely, carrying, hidden, mark, files, case, simplistic, luck, future, biggie, stating, obvious, representation, argue, python, traces, innermost, last, bottom, clues, clearly, rests, sending, match, probably, load, perspective, executing, noticed, starts, focusing, callee, feeling, emphasis, suggestion, detailed, polite, empathic, english, arrow, marker, pointing, operator, applied, added, splash, color, ansi, terminals, dunno, certainly, differ, became, dreaming, following, satisfy, checker, reduced, except, bind, skipping, tries, unlawfully, rational, denominator, bright, spend, mainly, utter, silence, golden, cases, sad, command, deliberate, mistake, open, reproduce, most, phew, love, pull, come, steps, delightful, included, evident, syntax, highlighting, web, site, mismatch, string, userinput, produces, withdefault, title, goes, digging, monopoly, nor, undisputed, regard, service, statistically, likely, available, contextual, below, terminology, puts, unrecognized, cannot, clear, ideal, required, minimum, quality, awesome, less, bug, offering, hints, trifecta, complete, input, prototypical, implementations, informative, nos, simply, charm, overlook, lately, 011, nov, hence, ethos, eopq, diaries, paper, enough, meet, sparks, fly, somewhere, minute, increments, precious, evening, weekend, inspiration, visits, easily, dozen, ones, past, week, deriving, queens, solver, principles, starting, loose, description, refining, fast, yesterday, wrote, object, protocol, darn, nice, effortless, kinda, sums, reminds, turbo, dialect, weren, forms, feels, wasteful, decadent, circle, extol, virtues, hopeless, redeeming, qualities, whatsoever, makes, draw, vision, speculative, fiction, alternate, timeline, screens, evolved, beyond, 320x200, pixels, ill, palette, want, stage, ended, cute, onto, jquery, react, coolest, directly, umpteenth, frustration, antialiasing, guy, library, actual, changed, slightly, competent, 100, setpixel, 320, 200, white, 260, 199, 120, cyan, culminates, rest, done, series, regularly, iteratively, simplicity, care, scatterbrained, 012, dec, pass, summarily, recruited, ahem, great, glad, blogging, winter, solstice, sabattical, turns, debug, problems, takeaway, composes, rather, unwell, google, documentation, tickets, else, episode, reminded, heard, community, hear, lesson, wine, beer, slowdown, hole, head, slower, removed, longer, hoping, transform, brain, accidentally, principle, remove, solve, straight, hilarity, ensued, written, perl, versions, many, ins, such, faster, mechanism, resembles, worked, coded, interaction, usual, unlocked, scripts, sidelines, finally, writing, earlier, demonstrated, finished, moves, board, land, since, insist, immediately, wouldn, war, stories, horribly, subtle, put, storing, note, approach, won, conceptually, leave, cool, introduce, variable, changing, transformation, helped, book, unlike, plain, related, knuth, tree, traveral, algorithms, passing, having, emulate, mechanisms, speak, data, property, ten, event, horizon, blowing, further, callees, weightless, invoked, leads, onwards, difference, closures, crucial, present, close, closure, returning, hands, over, runs, realize, different, groove, fall, mentioned, terms, composability, dealing, funny, business, resumable, nest, perfectly, form, self, reinforcing, universes, own, strengths, points, wean, sake, remember, forget, playing, pointless, convince, necessary, lots, independently, common, demoninator, break, paradigm, fame, async, stuff, prefer, gather, yield, examples, harmful, high, yep, captures, combination, invokes, reached, classic, allow, massive, amount, expose, class, trivial, refactor, seem, recall, tuits, pointers, leaves, flexibility, tie, returns, sometimes, depends, truthy, involve, top, iteration, imagine, tying, primitive, operation, decide, under, circumstances, grab, sequentially, execute, building, punchline, involving, similar, felt, relevation, throwing, higher, advanced, fun, options, limiting, straitjacket, simplest, imaginable, ties, compiler, questions, face, grows, shrinks, worry, times, forgot, stopped, understanding, perfect, doubt, grok, mostly, due, unfortunate, saying, technical, leibniz, seriously, fuzzy, easier, hyped, guilt, association, magical, fairy, beings, whose, contours, near, pools, water, dark, forests, involved, considered, heap, yeah, represents, challenge, nay, similarly, earth, curse, overly, explanations, satisfactory, decades, pop, culture, reference, disappointing, morpheus, matrix, made, virtual, currenly, residing, vat, snot, plugged, receiving, stimuli, life, unfortunately, told, welcome, dear, author, insert, aww, warms, cockles, passes, fictional, mood, faq, 013, jan, 2021, archive, home, braided,


Text of the page (random words):
eader substitute could guess i was in the mood to explain continuations today you re welcome dear author insert so how about it sure thing unfortunately no one can be told what continuations are i see a decades old pop culture reference disappointing by the way morpheus could have just said the matrix is a machine made virtual world that your real body currenly residing in a vat full of snot has been plugged into and receiving stimuli from all your life right there s no need to get overly mystical when good explanations are all that more satisfactory ok so i challenge you nay i curse you to be similarly down to earth and non mystical with your explanation of continuations all right the continuation represents a running program at some point during its run that s it that sounds almost too easy there are some details involved like how the stack is usually considered to be part of the continuation and the heap isn t but yeah that s it i thought continuations were these magical fairy like beings whose contours one could only make out near pools of water in dark forests and in fp languages they sure get hyped up a lot maybe it s the name or possibly some kind of guilt by association do you think they have the wrong name somehow kind of like with monads with that really technical name leibniz seriously maybe if they did name them warm fuzzy things they d have been easier to understand somehow i doubt monads are hard to grok mostly due to an unfortunate name not saying monads couldn t have been named better mind you continuations on the other hand might have the perfect name they are named exactly after the thing they represent what to continue with oh no what i think i forgot what they were i think i just stopped understanding continuations again ok don t worry take it easy this happens the first few times let me tell you about the alma implementation will that help i believe it might alma is implemented in the raku language it s a simple interpreter not a compiler there s a lot of ways you can arrange for the interpreter to work but one of the questions you need to face is how do you represent the alma stack the call stack the thing that grows when you call functions and shrinks when you return from them the alma interpreter does the simplest thing imaginable it ties alma s stack to raku s the implementation language ok so you implement a stack using a stack sounds both meta and kind of appropriate it sounds appropriate but it s actually kind of limiting bit of a straitjacket i mean it gets you fairly far but for any advanced fun control flow you have very limited options in alma it felt like a relevation when i realized that return and exceptions could be implemented within the stack model by throwing exceptions up raku s stack and catching them higher up but that s about as far as you get with that model you can t use a similar trick to throw yourself down the raku stack i sense you re building up to some kind of punchline here possibly one involving continuations yes imagine a better way where instead of tying yourself to the call stack of the implementation language you let each primitive operation in the implemented language decide what to do next usually under normal circumstances what to do next is just grab the sequentially next statement and execute it but sometimes it isn t what to do next in an if statement after evaluating the condition depends on whether the condition was truthy or not what to do next after the body of a loop might involve going back to the top of the loop and running it another iteration what to do next after a function returns is the thing to do next after the function call in the caller these what to do next pointers they are the continuations making your interpreter use them internally leaves you with a lot of flexibility and doesn t tie you down to the implementation language s call stack neat so why didn t you change alma to work that way i started out making a big refactor once but i didn t make it all the way i seem to recall i just ran out of tuits it was definitely possible to do anyway the bel interpreter works much more along this idea of continuations which is why it was trivial easy not a massive amount of work to expose continuations as first class values in the language ok so continuations allow you to do weird things with control flow is that it yes well no well yes do you have an example of a weird thing with control flow just so we re on the same page here i guess exceptions are the classic example here let me bel it for you def foo prn called foo bar def bar prn called bar throw some error prn this line never reached catch foo called foo called bar some error let me guess catch and throw uses a continuation somehow yep catch captures its current continuation the one that expects a return value from the catch combination and throw invokes it i was going to show how catch is implemented but that might actually be more harmful than helpful than the above high level explanation any other examples hm coroutines you know things with yield and stuff or gather and take if you prefer something like await of async await fame i guess the common demoninator here is things that break out of the regular stack based paradigm continuations are good at that who came up with this continuations concept lots of people independently it s a fairly natural concept almost a necessary one let s just say for the sake of it while i still remember what continuations are and before i forget it again that i think all this playing around with continuations seems a little pointless and that call stacks are all you need what would you say to convince me well i m not going to try to wean you off stacks but it s almost like they form two self reinforcing and internally consistent universes each with its own strengths and interesting points i mean stacks on the one side and continuations on the other if you think in terms of composability stacks are really good at dealing with regular functions no funny business no resumable exceptions or coroutines or anything like that when function calls nest perfectly within each other stacks work really well continuations get into their groove exactly where stacks fall short when the control flow gets a bit weird and interesting in the above mentioned ways i think what s important to realize there is that continuations compose really well too they just happen to have a different shape than function calls do shape at the front a continuation expects zero or more values kind of like a parameter list and then it runs some code kind of like a function body instead of returning up the stack to some caller at the end the continuation just hands over to some other continuation you know when you present it in that way it sounds really close to what i think of as a function or a closure i know it is the one crucial difference is that up the stack thing which functions closures have but continuations don t in the stack world there s always an up direction back to the caller and a down direction further into callees in the continuation world it s better to think of it as being weightless and each new invoked continuation just leads onwards ten years ago this was mind blowing to me now i ve passed through the event horizon and it seems almost natural almost can you convert code between stack style and continuation style well yes but before we do you have to understand that this is usually a property of the language whether it uses a stack or continuations having said that we can almost always emulate these mechanisms one level up so to speak using data structures and control structures manually in the language when we do it with continuations we call that continuation passing style i did the transformation to cps with one of knuth s tree traveral algorithms and i m quite proud of how it all came together and helped explain to me at least why the algorithm in the book could look so unlike a plain recursive function and yet be related to it in order to manually convert some code to cps you introduce a state variable like in the example and a switch statement in a loop and then you arrange to jump around between your continuations by changing the value of state cool yes i happen to think so note that this approach is limited to one function only it won t work if the function calls other functions because then we conceptually leave the switch statement and the cps transformed code in the example there were recursive calls and those are quite straightforward to handle with some extra thought to storing stack values on a dedicated value stack ok so let me get this calling other functions from a cps transformed function is a bad idea i would put it like this continuations do not mix well with normal stack based function calls it might be more subtle than that but this is my experience they do not mix i would say i believe you immediately but i sense that if i did you wouldn t tell me any war stories about the things that can go horribly wrong fine since you insist a couple months ago i was quite happy to land continuations in bel as usual that unlocked some new scripts that had been waiting in the sidelines and so i could finally try out the bel script that moves a robot around on a board that i had been writing months earlier it used catch and throw demonstrated above and so it had been waiting on continuations to be finished i ran it and the script didn t work not because i had coded the script wrong it didn t work because of a bad interaction between continuations and stacks the whole bel interpreter works using a mechanism that resembles continuations very much so catch and throw were no problem to implement they worked with regular bel code and all their test passed well their one test passed but then there were the fastfuncs these are hand written perl versions of many of the bel built ins such as map which currently help run bel code a bit faster these functions are stack based though the robot code had a throw try to jump straight through a map to its catch hilarity ensued how did you solve it short term i had to remove all the fastfuncs that call another function those were the one causing the problem longer term i m hoping to be able to cps transform those fastfuncs and re add them i just need to trick my brain into not looking while i accidentally get that to work in bel but the principle of it is simple make fastfuncs work with the bel continuation based thinking instead of against it did bel get slower when you removed those fastfuncs yes and it was already quite slow i needed the extra slowdown like i needed a hole in the head ok i ll try to take this lesson to heart and never mix wine and beer stacks and continuations in my language implementation that s good to hear this whole episode reminded me of the phrase inferior runloop that i heard long ago in the parrot community in fact if you google for that phrase you still get a lot of parrot documentation and tickets and not much else the inferior runloop it turns out was exactly that problem a mixing of stacks and continuations causing a lot of hard to debug problems my takeaway from all that was that the mixing itself just doesn t work stacks compose well continuations compose well but a mix of them composes really rather unwell look it s been great catching up i m glad you re back to blogging after what i m sure was a much needed winter solstice sabattical i m going to return ahem i m going to continue on with whatever it was i was doing before i was summarily recruited to be a reader substitute you may pass 15 dec 2020 by carl mäsak no notes scatterbrained epoq diary 012 here have a picture of space this picture along with the rest of this post gets to represent a few things i haven t done yet the whole epoq diary series is all about doing small things but doing them regularly iteratively and they end up being a big thing this picture is one of those small things a return to simplicity i don t care if you don t like the colors they make me happy how did i create it there s some code which culminates in these lines for let i 0 i 100 i setpixel math random 320 math random 200 white drawcircle 260 199 120 fill magenta stroke magenta drawcircle 50 50 40 fill cyan stroke magenta not the actual code the code has been changed to look slightly more competent than my current api the coolest thing about it at least i think so is that the picture has been generated directly as a png image by some javascript code after my umpteenth frustration with the canvas api and trying to render things without antialiasing i found this guy s png javascript library and it s exactly what i always wanted now i can write some javascript code and render a png image but that s not even what i want to blog about i wanted to stage a blog post where i ended up with a cute little api for drawing things onto this cga canvas but then realized that my api was all wrong because it was like jquery when it should really be like react that would still be a pretty neat post or a whole blog post where i extol the virtues of cga this hopeless format with no redeeming qualities whatsoever and yet it makes me warm and happy to look at and to draw with i have this weird vision of a speculative fiction alternate timeline where screens never evolved beyond those 320x200 pixels and that ill chosen palette of four colors in fact much of the drawing api reminds me of old turbo basic a dialect of basic where line and circle weren t just api calls but dedicated statement forms just the thought of that feels wasteful today decadent and would you believe it yesterday i wrote almost a whole meta object protocol in bel that would make a pretty darn nice blog post as well it was effortless to write and kinda slow to run which sums up the current bel experience i think i also had this idea about deriving a good n queens solver from first principles starting with just a loose description of the problem and then refining down to a fast algorithm and easily a few dozen other ideas right now the above are just the ones from the past week or so but the ethos of these eopq diaries is that ideas on paper aren t enough theory and practice need to meet sparks need to fly and it should be possible to get somewhere in 30 minute increments during those precious evening and weekend moments when inspiration visits hence the picture of space today 25 nov 2020 by carl mäsak no notes error messages epoq diary 011 i ve been thinking about error messages lately error messages from programming language implementations need to be good informative there are a couple of big no nos that you simply never do but also a number of moments of charm that are easy to overlook here is the prototypical bad error error invalid input the trifecta is complete in this one computer says no while blaming the user invalid but offering no hints or details one of the things i ve been proud of with raku s error messa...
Thumbnail images (randomly selected): * Images may be subject to copyright.GREEN status (no comments)

    No Images


    Verified site has: 8 subpage(s). Do you want to verify them? Verify pages:

    1-5 6-8


    The site also has 1 references to other resources (not html/xhtml )

     homepages.inf.ed.ac.uk/wadler/papers/p___.pdf  Verify


    Top 50 hastags from of all verified websites.

    Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

    Header

    HTTP/1.1 200 OK
    Date Thu, 15 Oct 2026 23:55:04 GMT
    Content-Type text/html
    Content-Length 29408
    Connection keep-alive
    Last-Modified Thu, 28 Jan 2021 15:20:01 GMT
    ETag 72e0-5b9f76bde2d95
    Accept-Ranges bytes
    Server HTTP Server

    Meta Tags

    title="Main page :: Strangely Consistent"
    charset="utf-8"
    name="viewport" content="width=device-width, initial-scale=1"

    Load Info

    page size29408
    load time (s)0.040944
    redirect count0
    speed download735200
    server IP 213.133.104.48
    * all occurrences of the string "http://" have been changed to "htt???/"