day #2
will you feed him ground meat?
day #1
Just put up my semi-annual post evangelizing the use of fennel and love2d for the lisp game jam
https://itch.io/jam/autumn-lisp-game-jam-2025/topic/5480272/making-games-with-fennel-and-love2d
Finally hacked mpv to play a directory of songs sorted by track number without relying on external tools like ffprobe!
🎬 💥 Live content alert! @Samsai is streaming on Owncast: https://cast.samsai.eu/
#Löve2D #Fennel #GameDevLive #SundayCoding #owncast #livestream #stream #selfhosted
ALGS Year 5 | Last Chance Qualifier Day 3 | マッチポイント決勝 | APAC-North #LCQ https://www.yayafa.com/2586569/ ##4rufa ##Lykq ##えぺ #1tappy #Anaya #APACNorth #Apex #ApexLegends #CR #CrazyRaccoon #escl #FENNEL #Fnatic #Game #gaming #GHS #HammerDrill #KaronPe #Meltstera #MiaK #NIRU #NOEZFOXX #Obly #Pro #reject #Riddle #Saku #SangJoon #satuki #scrims #tie #umichanloveti #YukaF #yukio #あぺ #エーペックス #エーペックスレジェンズ #スクリム #ドスコイ #フナティック #プロ #プロスクリム #リドル #公式大会 #大会 #競技 #練習試合 #試合
the monthly #fennel group is this Saturday!
10:00 US Pacific / 17:00 UTC
come hang out with us online: https://fennel-lang.org/events
#fennel 1.6.0 is out! https://fennel-lang.org/changelog#160--2025-10-13
main features include reading files from macros, --to-be-closed with-open, and the ability to disable lambda asserts
https://www.wacoca.com/games/1239877/ 【ガチギレ(?)】本気の喧嘩を始めた二人,,,しかし感動の結末が待っていた!?【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】 ##GAMING ##バロラント #FENNEL #Game #GameNews #games #GamingNews #GamingTrending #mittiii #TrendingGames #VALORANT #ゲーミング #ゲーム #ゲーム攻略 #ゲーム最新情報 #ドラゴンクエストV天空の花嫁 #ミッチー
【ガチギレ(?)】本気の喧嘩を始めた二人,,,しかし感動の結末が待っていた!?【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】 https://www.playing-games.com/831751/ #FENNEL #games #gaming #GamingTrending #mittiii #TrendingGames #VALORANT #ゲーム #ゲーム攻略 #ゲーム最新情報 #バロラント #みっちー
Turns out MPV embeds Lua PUC 5.2 as a scripting language!
So, here is a simple way to bootstrap the fennel compiler and repl within a running session.
【爆笑回】全ての責任を押し付けられそうなうる~かをみて ニヤケ続けるみっちーww【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】 https://www.playing-games.com/825599/ #FENNEL #games #gaming #GamingTrending #mittiii #TrendingGames #VALORANT #ゲーム #ゲーム攻略 #ゲーム最新情報 #バロラント #みっちー
https://www.wacoca.com/games/1236950/ 【爆笑回】全ての責任を押し付けられそうなうる~かをみて ニヤケ続けるみっちーww【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】 ##GAMING ##バロラント #FENNEL #Game #GameNews #games #GamingNews #GamingTrending #mittiii #TrendingGames #VALORANT #ゲーミング #ゲーム #ゲーム攻略 #ゲーム最新情報 #ドラゴンクエストV天空の花嫁 #ミッチー
Couldn't sleep
Ended up writing an erlang inspired binary decoder for #fennel
Now to wrap it in a macro and have some real fun!
Zipping and unzipping files in fennel has always given me headaches.
LuaZip, the default lua-zip available in Apt only allows you to read files, not write them.
Brimworks has a lua-zip library (my goto) that reads and writes, but has compatibility issue with emscripten in some browsers / operating systems.
This weekend I wrote my own minimal wrapper around lua-zlib in fennel that lets you read a zip file directly into a table of strings and vice versa.
in #clojure they overload parens for like six or seven distinct things and that bugged me a lot more; with #fennel we managed to mostly avoid that, with the one exception of multiple-value binds (which don't exist in Clojure)
but it sure would feel tidier to get rid of that one weird exception case
of course the proposed usage is not literally a call to the values special, but in the context of binding locals, it feels like (values a b) has the same construct/destructure symmetry as [a b] data structure notation
one of the things that's always bugged me a bit about the design of #fennel is that we use parentheses mostly for calls to functions/macros but they are also overloaded in binding context to allow binding to multiple values:
(let [input "whatever"
(v1 v2) (input:match "([aeiou]).*([aeiou])")]
(print :vowels v1 v2))
at a quick glance if you miss the context, it looks like the second line is a call to a v1 function where it's actually binding
I have been thinking it might be clearer if we bind to what looks like a "call" to values instead:
(let [input "whatever"
(values v1 v2) (input:match "([aeiou]).*([aeiou])")]
(print :vowels v1 v2))
it seems clearer and more consistent but I'm not sure it's worth the extra typing... thoughts?
I Tried Ina Garten’s One-Pot Pasta, One of Her Most Popular Recipes
2025-03-26T13:02:01Z Sha…
#dining #cooking #diet #food #Italianrecipes #BusinessInsider #easyrecipe #fellowgartensuperfan #Fennel #gotodinner #inagarten #Italia #Italian #italianfoodrecipes #italianrecipes #italiano #italy #mostpopularrecipes #onepotpasta #Pasta #Rigatoni #Sausage #TrentPheifer #ultimateranking #way #year
https://www.diningandcooking.com/2315076/i-tried-ina-gartens-one-pot-pasta-one-of-her-most-popular-recipes/