4 ms·
I'm making an editor, Freja, which is like a tiny Emacs with graphical support. Makes it fun to create gui apps and games. :) Ultima Underworld inspired game I
by saikyun 5y ago
I'm making an editor, Freja, which is like a tiny Emacs with graphical support. Makes it fun to create gui apps and games. :)
Ultima Underworld inspired game I'm making for a game jam: https://youtu.be/1fWsV83P-S8 https://youtu.be/1fWsV83P-S8
Demo of pixel editor: https://www.youtube.com/watch?v=KOBi805nxNc https://www.youtube.com/watch?v=KOBi805nxNc
Freja: https://github.com/Saikyun/freja https://github.com/Saikyun/freja
---
My experience has overall been very nice. I come from Clojure, and comparing to that:
- so nice and small! Clojure is great but has a lot of baggage from JVM, for good and bad
- very easy to get started interoping with C. You need to manually wrap libraries, but I think it's pretty easy. As a benefit, you are able to throw exceptions from C that can be catched from Janet. The C support is what sells me on Janet over Clojure
- repl:ing works well, but you can get tripped up by early binding and lack of namespaces. There are ways around it, but when coming from Clojure it was a bit hard to wrap my head around
- many libraries that you'd want are already wrapped, like http-servers and postgresql connections. But ofc this is an area that is thinner than older languages. It's decently easy to wrap C-libs though
- easy to understand data structures if you've used JS / Lua -- "everything is a hashmap" (but there are also arrays and strings)
- diskzero 5y agoFreja looks really cool! Thanks for sharing it. I find these types of projects very inspiring. They bring back the wonder and joy that I felt when I first discovered computers in the early 80s. You felt like you were in control of a whole new world and anything was possible.
- saikyun 5y agoThank you! That is exactly what I'm going for. :) My friend said "so you're just making basic?", haha. I didn't get to experience C64 / Amiga era, but after having listened to 100s of interviews with swedish game developers it seems that the automatic (or even required) access to a coding environment sparked a lot of creativity and imagination. :) I hope Freja can capture at least a part of that.
- spsesk117 5y agoWow! Some really cool projects, thanks for sharing, I'll definitely check out Freja later this evening! Thanks so much for the info and commentary!
- saikyun 5y agoThank you. :) If you do try it out, I'd be happy for any feedback on Freja! :) I should mention that Windows support is currently a bit behind, so if you're on Windows I could fix that then comment here again when it's done. :)
- sesm 5y agoWhy do you mean by ‘throw exceptions from C’? C has no exceptions.
- ahungry 5y agoIn libjanet you can use a C call like janet_panic() that'll "panic" and throw an exception/error up in the active Janet runtime (so when something bad/unexpected happens in your C code you are providing an API to from Janet, you'd use this).
- saikyun 5y agoThis is what I was referring to, sorry for being unclear. :)
- swdunlop 5y agoThat is like saying Scheme does not have exceptions, except in C, we have setjmp instead of call/cc. It is technically correct, but there is something more flexible that can be perverted into doing the same thing. https://en.wikipedia.org/wiki/Setjmp.h#Exception_handling https://en.wikipedia.org/wiki/Setjmp.h#Exception_handling