Lisplog

Blogging in Lisp

Search

Feed Aggregator Page 683

Rendered on Tue, 08 Feb 2022 12:01:14 GMT  newer latest older 

Wordle in Elm (timelapse video)

via Elm - Latest posts by @system system on Tue, 08 Feb 2022 09:27:38 GMT

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.

How Do You Read Types?

via Elm - Latest posts by @r4z4 on Tue, 08 Feb 2022 04:09:48 GMT

@avh4 @pdamoc @plaxdan @Lucas_Payr @dta Thank you all! I think I was almost just relieved that I was not completely off in my own mind. Its one of those seemingly mundane things but I find myself questioning myself a lot when it comes to this particular practice, so just hearing how you all approach it really helps – especially knowing I’m not the only one doing the “okay okay” thing :slight_smile:

Thanks again all!

:studio_microphone: Episode 049: Optimizing Performance with Robin Hansen is out!

via Elm - Latest posts by @lucamug on Mon, 07 Feb 2022 20:57:42 GMT

@Laurent, communicating with Firebase through ports using a web worker seems a very interesting topic. Is there any post/article/repo where we can learn more about this?

State of JS 2021

via Elm - Latest posts by @system system on Mon, 07 Feb 2022 16:29:38 GMT

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.

Nicolas Hafner: Kickstarting the Final Stretch - February Kandria Update

via Planet Lisp by on Mon, 07 Feb 2022 09:50:03 GMT

https://filebox.tymoon.eu//file/TWpReU5RPT0=

January's already done with, and there's a lot of stuff brewing behind the scenes. One of those things I can already announce now, and I'm very excited to do so!

Kickstarter!

There will be a Kickstarter for Kandria in June! We're currently still preparing for it and working out all the details. We'll be sure to let you know once we have a "coming soon" page for it up and running.

The Kickstarter will come combined with a new demo on Steam Next Fest, as well as a brand new trailer. I hope you look forward to it, I know I sure am!

Horizontal Slice

The Horizontal slice is moving along according to schedule. All the areas for the main game are now playable, and all of the story content is almost complete. That still leaves a ton of work to finish the game though, don't get me wrong. We need to playtest it all to make sure the traversal feels right, that the pacing of the game works well, and that the progression is satisfying and fun to engage with. Then we need to polish up all the areas' visuals and make them really pop. That, especially, takes a lot of time on its own already.

https://filebox.tymoon.eu//file/TWpReU5BPT0=

We also need to add some side quests and deck out the areas with secrets and things to discover and investigate, to feed into that nice loop of one distraction leading to another that open world games tend to do well. And finally there'll be a long stretch of smoothing out corners, playtesting, fixing bugs, adding small bits, and localising the game.

https://filebox.tymoon.eu//file/TWpReU5nPT0=

To be honest, thinking about all the things we still have to do is making my head spin, but so far we've, miraculously, been able to stick very close to our planned schedules, so it seems like we're moving ahead at a good pace.

The bottom line

Okey, let's look at the roadmap from, uh, two months ago since I didn't include one in the yearly update.

  • Implement RPG mechanics for levelling and upgrades

  • Explore platforming items and mechanics

  • Practise platforming level design

  • Draft out region 2 main quest line levels and story

  • Draft out region 3 main quest line levels and story

  • Complete the horizontal slice

  • Polish up the lower part of region 1

  • Implement new enemy types

  • Complete the new demo

  • Create a new trailer and Kickstarter video

We've already started work on the new demo, which we need to have done at least a month before the Kickstarter launches in June. So much to do!

:studio_microphone: Episode 049: Optimizing Performance with Robin Hansen is out!

via Elm - Latest posts by @Laurent Laurent Payot on Sun, 06 Feb 2022 14:50:38 GMT

@dillonkearns I confirm that using workers is a great fit for Elm ports. In my app I’m sending Elm port messages to a web worker in charge of Firebase (auth, database, storage, server functions), and sending the results back to Elm ports. It’s a bit tricky because you have to assign unique IDs to messages, but that way the main thread is doing only UI and is not blocked by stuff in the background.

PS: Loved this episode, just like the others :+1:

Custom slider for elm-ui using SVG

via Elm - Latest posts by @perty Per Lundholm on Sun, 06 Feb 2022 13:11:32 GMT

Thanks. If I had made the control myself, it would make perfect sense. But now I have only slapped an illustration on top of an elm-ui control.

Custom slider for elm-ui using SVG

via Elm - Latest posts by @lucamug on Sun, 06 Feb 2022 11:28:47 GMT

Very nice! A small thing, when I move my mouse below the slider I was expecting the needle to go flat, either to 0 or to 1, depending if I am on the left or on the right. In other words I think you should account also for the vertical position of the mouse

Discovered a Compiler Message Issue...Now What?

via Elm - Latest posts by @system system on Sun, 06 Feb 2022 01:06:10 GMT

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.

Elm Online Meetup - December 2021 - Videos

via Elm - Latest posts by @Atlewee Atle Wee Førre on Sat, 05 Feb 2022 18:02:38 GMT

Really cool! Thanks for hosting, recording and sharing :ok_hand::grinning:

Joe Marshall: Imperative vs. Declarative

via Planet Lisp by on Sat, 05 Feb 2022 13:49:00 GMT

I saw this recently:

    token = request.headers.get('Authorization')
    token = token.split(' ')[1]

From an imperative programming point of view, there is nothing wrong with this. We assign to the token variable the contents of the Authorization header, then we assign to the token variable the second substring after splitting along spaces. After executing these two statements, token will contain the desired value.

From a declarative programming point of view, this is terrible. The first statement binds the name token to the Authorization header, but the second statement contradicts the first by changing the binding of token to mean something else. Thinking declaratively, we'd much prefer either

    header = request.headers.get('Authorization')
    token = header.split(' ')[1]
or
    token = request.headers.get('Authorization').split(' ')[1]

The first option avoids the contradition and reassignment by simply using a separate variable. The item we get from request.headers isn't a token, it's a header, so we should name the variable appropriately. The token is a separate quantity that we compute from the header and the code directly reflects that.

The second option just avoids the intermediate variable and lets the compiler choose how to deal with it. Again, there is no contradiction or reassignment, token receives its final value when it is bound.

The problem is this: in the original pair of statements, the first statement

    token = request.headers.get('Authorization')
while imperatively a valid command, is declaratively a lie. It says that token is literally the Authorization header, but it isn't. The second statement patches things up by fixing the value of token to be what it ought. It seems poor practice to deliberately put these sorts of lies in our programs. We can make the first statement true by simply renaming the variable.

Any luck with Protobuf?

via Elm - Latest posts by @SirJohnPeters on Sat, 05 Feb 2022 15:49:02 GMT

I found this package: https://package.elm-lang.org/packages/tiziano88/elm-protobuf/latest

My issue is how do I decode the response exactly on Elm’s side? My server is returning the following encoded string: “\u001a�\u0007\n�\u0007\n�\u0007eyJraWQiOiJXRlRZNjc0REhad2FLamZlUDhsT3pJXC81eEpuY29CZUJcL2lMdUpmNmt6Mjg9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJjN2JjYTAxZi1jMmE1LTQ0MWMtYmEzOS1iZmQ1N2MzMzc1ZTkiLCJhdWQiOiI1cWc5cHBtMXJ1Ymd1OGsxNXFqYXVuamFiZyIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZXZlbnRfaWQiOiIyZmI2ZGM4Zi1mMWQ2LTRjOTEtYTE1Ny0zOGM3OTk0N2VhZjEiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY0NDA3NDc2NSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLXdlc3QtMi5hbWF6b25hd3MuY29tXC91cy13ZXN0LTJfZHNYQVV0WWgxIiwiY29nbml0bzp1c2VybmFtZSI6Im5pY29sYXMiLCJleHAiOjE2NDQwNzgzNjUsImlhdCI6MTY0NDA3NDc2NSwiZW1haWwiOiJ0ZXN0QG9uaW50aW1lLmNvbSJ9.muyiCfI9NzAzKPQMUJiPZpwKLao3jJMlVu8FiG_fIOpwZ2dyF8MRnL898w5wstQDI64KNJwixIxVhqVXGohJx_qR1Mq51h_xc9AV-zEyefN0qxJClOwtxGH7EjJVX47pb5XKdK6FqbGjn9SvXWPNNOdPX9Oh8ZPoWb6HMydKW3pQNItoxcsEYVxoOJlCTFgAs0SZopVEi9z9uCE-goKNhyitl2Hx1PxWrvf_XRg2ED7Uc2TlnRvV-Y9pohnAuA9t2DP1K7QQwR5SmU_HQ-uWiprioce0QkXWHWerYunhY4l7wQv5oGKMMHi2HtDZ2FwC0RRaXtHthsEZ9YXKL4KVKA”

However, the protobuf generated decoders seem like ordinary json decoders (as they’re literally importing Json.Decode as JD). I get the following error when I try to decode the message: “This is not valid JSON! Unexpected token in JSON at position 0”

Do I really have to decode it through JS and pass the response back to elm?

Debounce as an effect

via Elm - Latest posts by @romper stomper on Sat, 05 Feb 2022 15:40:34 GMT

There are several topics here and as well as designed packages related to the problem of debouncing/throttling messages. So we all understand what we mean by debouncing: if we have consequent events with intervals between them less than a certain time value, we want to consume only the last ignoring the rest.

So the question: why is would be not a good idea to have debounced/throttling capabilities made available as effects for example exposed through the Time module? The question is not a proposal, but it means like it sounds, what would be architecturally/ideologically wrong to assume/do such a thing?

Elm Alternative Package (Mirror) Live

via Elm - Latest posts by @rupert Rupert Smith on Sat, 05 Feb 2022 12:34:55 GMT

That is the main reason for starting this project, as having in-house packages that are managed with semantic versioning is something that I would really like to make possible.

Elm Online Meetup - December 2021 - Videos

via Elm - Latest posts by @supermario Mario Rogic on Sat, 05 Feb 2022 09:40:51 GMT

The videos from the last Elm Online Meetup are now up! :clapper:


Learning Elm while launching a project, good idea? - Loïc Knuchel

https://www.youtube.com/embed/9yCw_ut9Ik8

Look Ma no graphics card! Software-based 3D rendering in Elm - Julian Antonielli

https://www.youtube.com/embed/-4lyp9pVKE0

Custom slider for elm-ui using SVG

via Elm - Latest posts by @perty Per Lundholm on Sat, 05 Feb 2022 07:54:27 GMT

Quite seldom that I need a slider for input but when I do, I want it to look specific. :smile:

Well, I had seen that elm-ui has possibilities to design both the background and the knob of a slider. So for a game where users are selecting probability, I came up with this solution.

slider

The user can adjust value by pressing and moving, as slider normally work.

The knob, or thumb, is invisible but that required that the focus style was set or a small blue square would appear.

Here is the Ellie: https://ellie-app.com/gBks2hGX6Yta1

As you can see in the code, I used elm/svg but it is of course possible to use an external image. Mind that some of the function names in that package overlap, eg style, with other packages functions.

When I was looking for a linear gradient, I bumped into this site https://cssgradient.io/ where you can interactively design your gradient.

Elm Alternative Package (Mirror) Live

via Elm - Latest posts by @perty Per Lundholm on Sat, 05 Feb 2022 07:15:47 GMT

This is interesting if this means that we could have in-house packages.

Bcrypt implementation in Elm

via Elm - Latest posts by @sebbes Sébastien Besnier on Fri, 04 Feb 2022 18:33:38 GMT

I’d like importing user account from a php project to a lamdera one, so I’d like being able to still check password for previous users. Does anyone has a bcrypt implementation written in Elm somewhere?

Elm Online Meetup - February 2022

via Elm - Latest posts by @system system on Fri, 04 Feb 2022 09:36:25 GMT

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.

Travelm-Agency now supports Fluent including usage of the Intl API with Elm 0.19!

via Elm - Latest posts by @francescortiz Francesc Ortiz on Fri, 04 Feb 2022 08:13:33 GMT

Indeed. My question was more about any prior experience you might have with these services rather than technical.

 newer latest older