SuperFola

joined 2 years ago
 

The article ArkScript September 2025 update is the last one I wrote, covering all the changes I made on the language this summer.

Finally, I have released this huge set of breaking changes that makes ArkScript v4, and I'm pretty proud of it. I won't stop working on the language, however it's a big milestone for me: I've reach a point where the language is more than decent to use every day, errors are correctly reported, and the documentation is pretty good too (I might be biaised, I wrote it myself so I don't have an objective point of view): https://arkscript-lang.dev/

I've also written an article comparing ArkScript with other Lisps (which is still a WIP but is already good enough) for the curious ones here.

[–] SuperFola@programming.dev 2 points 2 months ago (1 children)

Hi there (a bit late, my bad) ; I've composed a short blog post about the language, comparing it with Clojure and Common Lisp: https://arkscript-lang.dev/blog/comparison-with-other-lisps/

[–] SuperFola@programming.dev 2 points 3 months ago (1 children)

Thanks, I’ll check it out!

 

As many others here, I have a home lab at home, with various containers like FreshRSS, Ampache…

I also have a netdata dashboard to monitor CPU and temps, disk usage… that sometimes send me alerts without me having configured anything, eg too much CPU used for more than 15 minutes.

However it doesn’t seem to cover log monitoring, or at least not in the way I want. I have a job and can’t dedicate thousands of hours to building something myself, nor configuring deeply some software stack.

All I want is my services to be monitored log-wise, with a single docker where you could mount multiple log directories, and have a simple interface that filters through the logs (based on their type/name, eg nginx logs aren’t treated the same way as kernel or auth logs, but without me having to configure more than the source type), to tell me if something is weird or just bad (eg someone logged in).

Does it exist without installing grafana + Prometheus + this and that + doing a shit ton of configuration and crying?

[–] SuperFola@programming.dev 7 points 4 months ago

And I must say that MKW is pretty fun, I love roaming around the world just doing tricks and exploring hidden areas!

It adds something’s that I found lacking in MK8, I would only play MK8 for Cups or Online, now there is an environment which ties everything together, with Easter eggs and collectibles, and I can learn the tracks without the pressure of a timer or a race ending soon.

[–] SuperFola@programming.dev 1 points 4 months ago (8 children)

I find this paper false/misleading. They just translated one algorithm in many languages, without using the language constructs or specificities to make the algorithm decent performant wise.

Also it doesn’t mean anything, as you aren’t just running your code. You are compiling/transpiling it, testing it, deploying it… and all those operations consume even more energy.

I’d argue that C/C++ projects use the most energy in term of testing due to the quantity of bugs it can present, and the amount of CPU time needed just to compile your 10-20k lines program. Just my 2 cents

[–] SuperFola@programming.dev 2 points 4 months ago

Thanks for the idea, I’ll try to add a comparison page soon!

The vertical alignement is now fixed, I got lucky with bootstrap ; it looks way nicer, thanks!

[–] SuperFola@programming.dev 4 points 4 months ago

Jokes on them, I don’t use this AI bullshit.

[–] SuperFola@programming.dev 1 points 4 months ago

« America, fuck yeah » takes a whole new meaning

[–] SuperFola@programming.dev 2 points 4 months ago (1 children)

Also, just to check, do you have a time limit set for the Playground so that people do not over-tax your system?

I double-checked, and it seems my timeout command was incorrect. I set it up again (with additional testing), and it now properly kills the container(s) after 20 seconds.

[–] SuperFola@programming.dev 3 points 4 months ago (2 children)

Thanks for your comment!

That’s a tough question, because it often boils down to preferences. I think a beginner developer or even someone fed up with the complexity of modern languages could be interested in the language, as it is very small but still more than usable. Only 9 keywords, no hidden meaning, everything follows the same rules : open a paren, then the first thing is a function call, the rest are arguments. I think the « lisps have too many parentheses » is a false problem only used by trolls. I won’t say that you have to understand the flow or fall into the matrix to use it and avoid the parens, it’s more about having a consistent coding style so that you don’t have to care about the closing parentheses. Plus with a modern editor, parentheses groups have different colors and are easy to match, you can navigate to the starting / closing paren with a keybind (% in vim, command/ctrl M in jetbrains IDE).

I’m no frontend dev, so I battle a lot with it so it displays how I want ; I tried with flex to center vertically the « getting started » section, will have to try again.

Yes, there is a time, cpu and memory limit to the playground, no worries! I started the playground about a year ago but only just recently managed to compile to wasm, I’ll see in the future if I can swap the docker integration for it.

 

I’ve been working on this (not so little anymore) project for some time now, and I’m finally happy with the branding, UX and docs state.

It’s a scripting language I made at first as a toy, to learn new parsing methods, explore compiler optimizations, and go back to VM land where everything is low level and amazing (at least for me) ; it’s now a fully fledged language that can be used as a scripting language like Python or Ruby, and can also be very easily embedded inside a project, as one would do with Lua.

Let me know your thoughts and opinions on the project!

[–] SuperFola@programming.dev 3 points 4 months ago (3 children)

First of all, the language is lisp inspired. ArkScript has s-expressions and code as data via its macros, its reads the same (left to right, prefix notation).

Keywords wise, we are not the same, which is a small but striking difference when comparing them side by side.

ArkScript has no classes nor structures, and no quoting/quasiquoting.

AFAICT both ArkScript and Common Lisp (a big lisp contender) have lexical scoping, so no real difference here.

ArkScript has strong dynamic typing too, like many other lisp.

The big advantage I would say ArkScript has, is its embedded capabilities. You can very easily use it in a project, as its C++ API has been designed for this.

 

I’ve been working on this (not so little anymore) project for some time now, and I’m finally happy with the branding, UX and docs state.

It’s a scripting language I made at first as a toy, to learn new parsing methods, explore compiler optimizations, and go back to VM land where everything is low level and amazing (at least for me) ; it’s now a fully fledged language that can be used as a scripting language like Python or Ruby, and can also be very easily embedded inside a project, as one would do with Lua.

Let me know your thoughts and opinions on the project!

 

ArkScript is an interpreted/compiled language since it runs on a VM. For a long time, runtime error messages looked like garbage, presenting the user with an error string like "type error: expected Number got Nil" and some internal VM info (instruction, page, and stack pointers). Then, you had to guess where the error occurred.

I have wondered for a long time how that could be improved, and I only started working on that a few weeks ago. This post is about how I added source tracking to the generated bytecode, to enhance my error messages.

 

I finally found a better memory layout to store variables in ArkScript, and I got a 76% performance boost on the binary tree benchmark, and a 21% perf boost on Ackermann(3, 7) Who knew using a contiguous storage buffer could be beneficial? 🤡

I retraced all the performance improvements I applied to ArkScript through the last five years, with updated benchmarks, AND DAMN what a journey.

 

Generating swaggers at compile time

Hi everyone!

I’m sharing with you a solution I designed for generating swaggers (http4s, tapir, open api) for apps.

At work we always had to remember to launch the app and all the databases containers, which was cumbersome and we would often forget to update the swaggers (which led to generated code for clients that wasn’t up to date).

[–] SuperFola@programming.dev 2 points 1 year ago (1 children)

To me (on voyager and on programming.dev website), !programming_languages@programming.dev still seems down

[–] SuperFola@programming.dev 2 points 1 year ago (3 children)

That doesn’t solve communities being inaccessible though, does it?

 

I wanted to design a funny keyboard with an alternative to TRRS, so I made this floppy disk sized keyboard! (Perfect replica, under 10cm x 10cm)

I made a build guide for it too: https://lexp.lt/posts/floppy_keyboard/

 

I tried accessing https://programming.dev/c/programming_languages but it tells me that the community can not be found. Is that a lemmy bug?

view more: next ›