Threads for mankyKitty

  1. 5

    Myself and a few colleagues all run NixOS. I use home-manager to manage the finer things. At $work we use nix for everything. All projects must be able to go from zero to running/built with a nix-build.

    One of the important trade-offs (imo) is that everything a thing needs is laid bare by using Nix to wire it all together.

    This can be super annoying (see other comment regarding the sad state of Python packaging), but the flip side is that you have what you need pinned down and can then rely on them being fixed.

    • Nothing side-loading crap without you knowing about it.
    • Easier to leverage upstream fixes because you can pin even dependencies of your dependencies.
    • Since everything is pinned (as long as you avoid diamond paths: <nixpkgs> etc) then Sally will see identical output to Bob. Modulo the ebb and flow of servers on the internet.

    Other comments here make the point that the learning curve is a cliff and that’s not too far wrong. There is more and more information available to ease this process, but it’s still a process. The pay off in the end is well worth it however.

    1. 19

      TIS-100 doesn’t fit all the criteria but definitely the game end of programming.

      On a slightly different tangent, things like PICO-8 is pretty fantastic for programming for fun. :)

      1. 5

        I’ll add that TIC-80 is great if you don’t want to pay for PICO-8.

        Also, the CHIP-8 family (CHIP-8, SCHIP, and XO-Chip) are great if you enjoy programming in assembly with no stack, multiplication, or division.

        1. 3

          TIS-100 is really good. Steam tells me I’ve played 149 hrs in the past 2 weeks, but I kind of just alt-tab and leave it open. Surely, I’ll beat it soon…

        1. 3

          Now I wish there were an agda2java tool that I could use to deceive my boss.

          1. 5

            There’s always Frege

            1. 2

              Looks interesting, but as it says on the page, it’s more of a Haskell than an Agda.

              1. 3

                True, but it’s a step closer.. There’s also Flix, though again, not Agda.

                Can’t have all the nice things :<

          1. 2

            I put my mobile phone in the washing machine over the weekend (my brain is a bit fried at the moment), so I’m looking at options. My old phone was a OnePlus 5T, which I’ve basically been happy with (running LineageOS). The 8T looks nice, but it only has LineageOS 18.1, not 19.1. I’m also pondering a new iPhone, because I don’t really want to care about the OS that my phone is running and I don’t really trust Android security. There are basically two things that I’d miss on iOS from Android:

            • I have a couple of machines around the house using MusicPD. The iOS client that I use on my iPad (MaximumPD) is fine, but not as nice as M.A.L.P., but I really like having a widget on a screen on my phone for controlling the music without having to launch an app.
            • The Work Profile stuff on Android lets me install all of the work stuff in an isolated namespace so that no traffic from non-work things goes over the VPN and none of my personal documents are exposed to the compliance tooling that the work stuff installs. I don’t think there’s an iOS equivalent of this, so I’d need to give InTune complete access to all of my personal data.

            Has anyone here got experience using iOS devices with InTune (sorry, Microsoft Endpoint Manager)?

            1. 4

              FWIW the refurb’d and second hand market for iPhones is pretty amazing. You can net late model iPhones for good prices. Just be sure to pack your best careful shopper hat.

              1. 1

                Thanks. It looks as if neither my personal nor work provider offers an eSIM option at the moment, which probably rules out getting an iPhone this time - it doesn’t look as if any of the models other than special Chinese variants supports two physical SIMs.

              2. 1

                I recently made the switch from LineageOS to iOS and don’t hate it. I’m quite annoyed that Firefox isn’t actually Gecko but that’s it. Feel free to ask.

                1. 1

                  I mostly use Firefox Mobile because I don’t want to give data to Google. I’m equally happy with Mobile Safari, with one exception: I really like the self-destructing cookies plugin on Firefox. This is the only sane cookie management policy that I’ve seen for any browser:

                  • When you close a tab, it move all of the cookies to a backup location.
                  • Next time you visit the site, you don’t see any cookies.
                  • If you discover that you actually wanted to keep them, there is an undo button to restore them and preserve them for that site.

                  For 99% of the sites I visit, I’m very happy for them to treat me as a new user every time I visit. I only want sites that I’ve explicitly logged into to persist.

                  I’ll probably pop into cex today and see what they have in stock. They give a decent warranty and generally have a decent selection. I’m quite tempted by the camera on the newer ones though, and since I tend to upgrade my phone once every 5 years or so, the amortised cost of a new phone isn’t that bad.

                  1. 2

                    It’s unfortunately hard-or-impossible to bring something like Firefox Total Cookie Protection (which isolates each third-party cookie in their own cookie jar - i.e., storage is double-keyed with the first-party domain) to iOS, because it’s WebKit and not Gecko.

                    However, Firefox for iOS can make use of WebKit “Intelligent Tracking Protection”, which blocks all third-party cookies unless opted out with Storage Access API. It’s pretty OK when paired with setting the Tracking Protection in Firefox for iOS to “strict”.

                    That’s nowhere near as close to any of the explicit and specific privacy controls you mention above, but it’s sure better than the defaults.

              1. 2

                My older child did some programming in Khan Academy; their environment is JavaScript, I think based on Processing. My younger child is currently obsessed with Scratch. I think both of these environments are kind of reasonable for children programming on modern hardware and operating systems. They both kind of remind me of Logo on the Apple II.

                The biggest problem I experience with them is that both environments come with a social platform with tons of games written by more advanced users. And that would be great if my kids would dig into those games and fork and mod them, or if they would use them to learn things for their own games, but mainly they just play them. And the big jump in complexity might be discouraging, like how do I go from my little animations to these complete games.

                1. 3

                  Yeah, i wanted to get my kids into that, but with all the distractions, I was thinking of getting an old school thing like a Speccy that I had. There’s nothing else to do but hack at it :)

                  1. 1

                    I’m not sure how much of a jump this might be for them, but the PICO8 ‘fantasy console’ is fantastic for being able to (A) play the games, but often also (B) crack open the games and see how they tick. The community is also pretty fantastic and very helpful, in my experience.

                    1. 1

                      I have heard of it, but never looked into it. Perhaps it is time for me to do so.

                  1. 1

                    There’s ANOTHER week? … sigh … Maybe poking some Fennel & Love2D and seeing if I can’t establish some non-terrible system for deciding when to stop trying/wanting to do something.

                    1. 1

                      Have you been able to get your feet under you as far as getting a basic setup up and going for Fennel and Löve?

                      1. 1

                        It’s still in the early stages, I’m using this example project. I run NixOS so hopefully should be straight forward to get all the various ducks in a row.

                        1. 1

                          That is what I would have linked anyway, just wanted to make sure you had a starting point.

                          I’m willing to answer basic/intermediate Löve questions, there’s also a Discord for it, and Matrix room for Fennel, if you’ve not gone there already.

                    1. 3

                      I’ve picked up the Practical TLA+ book and will be starting that as a not-work curiosity. I don’t have a specific end-goal but this sort of thing has always been interesting.

                      1. 1

                        Feel free to message if you have any questions!

                      1. 3

                        So you’re saying we should stop parsing our own JSON inputs and push everything into a ‘in-memory’ SQLite DB as an input buffer and then read from there? I’m okay with that.

                        :p

                        1. 4

                          SQLite is a very accessible (low effort) & powerful REPL.

                          1. 3

                            I’m doing it as an on-disk database (mostly so that you can change your mind later and glean more data out of the JSON should you need to), but sure yeah whatever

                            1. 1

                              I’m totally ok with this too, I’d trust the SQLite devs with… most things more than many other devs. I feel like learning how to use SQLite specifically should be required for all CS/IT students, it’s just so versatile.

                              Why am I not surprise this comment was made by you mankyKitty <3

                            1. 3

                              I would like to keep poking my SDF / Raymarching renderer. I have the initial fragment shader written, but it only runs in a shadertoy and I’d like to actually use it for things. Figure I’m going to use this as an excuse to learn Nim. I use Haskell at work and it’d probably be fine, but then it might feel like work. :p

                              I’m curious to see what I can build with it.. Current goals are a tiny game of some kind, and possibly a UI framework.. utilitarian, but fast and tiny. Since I can combine it with SDF font rendering for some interesting possibilities.

                              1. 2

                                I would love to see an SDF-based UI framework — I’ve thought a tiny bit about this, but haven’t actually tried anything. Very curious if there’s a nice way to deal with color or images without giving up the wealth of shape combinators.

                              1. 2

                                This is very cool. I think Haskell has a (somewhat rudimentary) version of this called ‘golden tests’ .

                                1. 3

                                  I went for the (Vector ...) approach in Waargonaut. Then provided the tools to give the library consumer all the choices when it comes to deciding which structure to finally end up with. Worked out well, I think, given all the contortions I went through to allow for preserving total information when decoding and handling those weird arse JSON “strings”… ><”

                                  1. 2

                                    Waargonaut looks so good! Can’t wait for the Stackage release, we’d like to use it at Flipstone :)

                                    1. 3

                                      There’s a PR that loosens a few of the bounds and increases the number of GHCs that it will build with… Not sure if that’s enough to push it over the line? There are a few packages it depends on that can be difficult to build so Stackage might be choking on them, not sure.

                                  1. 6

                                    Working on a little toy game. I don’t know why, but it has been a lot of fun.

                                    Last weekend I wrote a little on-GPU raycaster thing in an attempt to render soft shadows from the game scenery (read: squares and circles). It’s a “stealth” game, so light and shadow are very important, and you can turn lights on/off or shoot them out. Anyway, it worked okay, but there were a lot of quality tradeoffs to get decent performance with multiple lights (I got up to 7 at 60fps). But I had never done graphics or written fragment shaders or anything before so I was pretty proud and pleased with how it looked.

                                    I showed it to a friend who does Actual Graphics Programming to ask about optimizing it. And he laughed, and held me in his arms, and whispered that it was going to be okay. And then he introduced me to signed distance fields. So yesterday I replaced my little hand-rolled crappy raycaster with something that uses 3D SDFs to cast shadows (even though it’s a 2D game… it makes sense) and the difference is unbelievable. Sharp, pixel-perfect shadows from arbitrary scene geometry, and I can do 17 lights at 60fps. But the quality difference is so large that it doesn’t even seem fair to compare – it’s not shadowing a low-resolution occlusion map; it’s shadowing the actual scene geometry.

                                    I found this article to be a very good overview of the general technique:

                                    https://www.rykap.com/2020/09/23/distance-fields/

                                    With interactive demos that explain the general idea behind SDF raymarching.

                                    (Although I use Aaltonen’s “improved” soft shadows, and I came up with a better technique to mitigate banding (I should email the author about that…). Also I am doing it in 3D, so some objects cast longer shadows than others, but the conversion to 3D is completely trivial… SDFs are crazy.)

                                    Anyway, this weekend I’m going to integrate the new “lighting engine” into the actual game and then I can stop futzing with lights. And also tell everyone I meet how cool SDFs are. Then I can move on to procedural level generation. I found this paper:

                                    http://chongyangma.com/publications/gl/

                                    To be the most compelling procedural level generation technique that I’ve heard of so far. I’m very attached to the idea of generating a level using a graph with production grammars, and then realizing that graph into a game. The “easy” version of this is a rectilinear planar embedding, where each “room” in the level is a square and they’re connected by corridors. But that’s boring. Ma et al.‘s technique is the only interesting example I have seen of this approach. So I’m going to implement something similar, although I have a lot of ideas that I think might improve the final output.

                                    1. 1

                                      That sounds like so much fun. SDFs are freaking awesome. Valve used them for the custom sprays in Team Fortress 2, I think. More resources:

                                      Been struggling with the motivation to actually build something to use them in however, life, pandemic, etc etc…

                                    1. 3

                                      Work is steady as she goes.. For not work however, I’ve started learning about InfoSec and ‘White Hat’ hacking. Even managed to complete a tiny CTF! Only starting out but it’s still super interesting so far.

                                      1. 1

                                        Hooray, I also got into infosec through ctf. I’ve always been mostly web hacking, but let me know if you need some tips for cool challenges and programs!

                                        1. 3

                                          I’d appreciate any and all tips and pointers!

                                          I’ve been playing with tryhackme.com and eyeing off hackthebox.eu.

                                          1. 4

                                            imho there are better community developed & maintained platforms out there and I’d personally prefer them over the commercial offers you have found. E.g.;

                                            1. 2

                                              Sweeeeeeet, thanks for the links!

                                              Finding good resources always seems to be half the battle.

                                      1. 2

                                        I’m not sure I remember… It was one of two compilers, weirdly … Lisp Flavoured Erlang, or Rust…

                                        1. 3

                                          Explore what it is like to write full-stack apps in F#, with the frontend compiled to WASM (eg: Bolero). And as well as cross-platform desktop apps using the same.

                                          Even though I’m already quite satisfied with Haskell, I feel that F# might have a better story for full-stack app development than Haskell (the future of GHCJS is uncertain and seems to be maintained mostly by one company; Tweag’s asterius is still in development).

                                          1. 2

                                            I’d like to hear about these adventures. :)

                                            1. 1

                                              If it gets to somewhere interesting, I’ll be writing about it in www.srid.ca - which now has RSS feeds if you wish to subscribe :-)

                                          1. 2

                                            Work game-jam and then probably way, WAY too much ‘Oxygen Not Included’ … That game .. just… so good.

                                            1. 2

                                              Apparently … trying to recite the correct litanies to breath life into a clangd+emacs+c++ development environment in a nix-shell…

                                              1. 3

                                                Partly, in my best possible orc peon voice: “werk, werk!”

                                                For !$werk: learning C++ and more Unity for game dev shenanigans. Still undecided about learning Rust for gamedev as I’m weary from past projects where I spent all my WeirdBudget on a ‘not quite there language/ecosystem’. :<

                                                1. 3

                                                  There is nothing like C++ and Unity in the Rust realm currently. If that’s your intent, just learn modern C++, and ignore Rust for now. Transitioning to Rust will not be so bad if you learn modern C++ constructs.

                                                  1. 1

                                                    This is true, I’ve already started down the modern C++ path, but still wonder occasionally.

                                                    1. 2

                                                      Learning Rust after having used modern C++ is fairly simple. I wouldn’t worry about it.

                                                  2. 1

                                                    I use a part of the Rust game-dev ecosystem in my full-time role, and I love it! I’d strongly recommend taking a look into some of the recent Bevy tutorials to see how it feels. It depends on your goals (learning, career, the kind of game) to whether you should learn Rust and build more tools for yourself or stick with the larger languages and ecosystems.

                                                  1. 2

                                                    Starting to walk the dark path of C++ out of sheer curiosity and game development reasons. :) In a weird twist, the language I use professionally is primarily Haskell. Heh.