Agender sheep-thing | { it they } >>pronouns I'm a coder, artist, and game dev. Currently interested in stack based programming.
Public Key
npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z
Profile Code
nprofile1qqspjyewhaqk8g3ejxgmeyxz8uearljfgh97njq8krgedvtj5fcpjcgpz4mhxue69uhhyetvv9ujumt0wd68ytnsw43qdzvtcn
Author Public Key
npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Show more details
Published at
2024-01-08T23:26:36+01:00 Event JSON
{
"id": "0654d3e490a5569ea71eb920e34d67fd9160149a62aca1aedcea3a1fe25e46de" ,
"pubkey": "19132ebf4163a2399191bc90c23f33d1fe4945cbe9c807b0d196b172a2701961" ,
"created_at": 1704752796 ,
"kind": 0 ,
"tags": [
[
"proxy",
"https://furry.engineer/users/CapitalEx",
"activitypub"
]
],
"content": "{\"name\":\"Capital\",\"about\":\"Agender sheep-thing | { it they } \u003e\u003epronouns \\n\\nI'm a coder, artist, and game dev. Currently interested in stack based programming.\",\"picture\":\"https://cdn.pawb.social/mastodon-fe/accounts/avatars/109/344/342/761/478/354/original/528ac4d80b9e1249.png\",\"nip05\":\"[email protected] \"}" ,
"sig": "08401d46315475522d2d66f0fbe1a7243b6b15e48d983d2cd946122a366ed53280cf8436b105e315d5c82390dd4b195c672fd28601ff1feda3e8c50ff595fa48"
}
Last Notes npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1zt2…ccgj Well, the admin pays for a .gay domain. And, you know how that plays into my character analysis of people 😶 npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1zt2…ccgj :: Preemptive and tactical blocking of cringe 💀 Jokes aside, that kinda of behavior is why I had to leave types.pl npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital So excited to have code blocks and (eventually) longer post. I can finally include small code snippets in well formatted code blocks: : hypot ( a b -- c ) [ sq ] bi@ + sqrt ; :blobfoxcomfyhappy: npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1z70…jtuz :: Hopefully it can see it's moment. It's a nice language to us. It has (almost) the exact type system I want in a compiled language. There are two languages with all the parts I want. But, one of them is Scala which has a lot of parts I don't want. And parts like dependent typing, are done better in a language like Idris. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1z70…jtuz :: As someone that's dabbled with Haskel, I think GHC is going reign supreme over Haskell until the sun explodes, lmao. I could see someone making a code generator for Agda (theorm prover) that spits out verified Rust code. (assuming someone isn't already working on that) npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1z70…jtuz Rust gets a lot of it's function flavour from it's OCaml roots. The first compiler was written in OCaml. And, both OCaml and Haskell take influence from ML. One being impure functional programming, the other being pure functional programming. So, there is a lot of overlapping and shared ideas among the 3. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1z70…jtuz :: The only counter example I can think of off the top of my head is Haskell. It was born by the functional programming community rallying around one language instead of fragmenting themselves around many similar ones. Apparently, Lisp came from MIT. Honestly assumed that one just manifested itself into existence. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1z70…jtuz :: It also doesn't have a strong benefactor behind it. For example... Both C and C++ came from AT&T Bell Python came from Centrum Wiskunde & Informatica a member of the Netherland's national research counsel. Java had Sun then Oracle C# has Microsoft Go and Dart have Google Rust had Mozilla and now the backing of Google, MS, and other major orgs Ada and COBOL had the US Department of Defense behind them npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1z70…jtuz :: lol, same. I had a small error where I forgot the self. before greet. Since modules can be added into a class (mixins), they can hold instance methods despite having no means to create a new instances of a module. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1z70…jtuz :: Heavily, so. But, the two languages do diverge by nature of crystal being compiled and statically typed. I've only used Crystal, so I can't say how different it feel from Ruby. https://crystal-lang.org/reference/1.8/crystal_for_rubyists/index.html npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1z70…jtuz :: It was meant to be Crystal, but I realized after the fact without type annotations there is nothing to distinguish them, lol. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital :blobfoxbongo: npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital module HelloWorld def greet(x) puts "Hello, #{x}" end greet("Glitch Social") end npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub12wj…wn2p https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/667/712/725/189/091/original/097e60e3f9ca0926.webp npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub10lz…sedh :: Mouse wants to be musky wusky. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub10lz…sedh :: #AltText A mouse looks at a battle of musk on a mouse trap that heath cliff set. The mouse say out-loud to another mouse, "is it wrong that I'm tempted?" npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1gut…l2n7 :: Lovely color palette! npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Me: I should implement a Tiled library for Crystal *An hour of defining types later* Me: I do not want to implement a Tiled library for Crystal https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/658/568/658/142/872/original/bd9c9f50940291ff.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub12gs…3cnh @npub10lz…sedh :: I was just poking at that. The latest version even a single function that returns a string. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Does anyone know of good #Python libraries that can find text on an image? Ideal something the runs entirely locally (no cloud dependencies) and can run on a RPi 4. My BF made @npub10lz…sedh, and it'd be cool if it could (try) to auto-add alt text. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1udx…3lhc :: Is, is this for Windows 11? npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1vkv…g48n :: Same on that first part. Like, I *only* use it to make heterogeneous data structures. And, that is a really bad reason to use a feature that has multiple levels of asterisk attached. The code re-usage line is almost always in reference to re-using behavior. Even trying to "re-using structure" has better options than inheritance. (Which are in my opinion are mixins for behaviors and structural types for structures) npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I have used my custom style sheet plugin (stylus) to make a small adjustment to sourcehut's UI. And, it is a tremendous improvement for me. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/656/674/092/995/961/original/32cb03d3bcbeb99b.png https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/656/674/453/406/205/original/0e34d054d2d1bce6.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Tileset is by Sniffer Dragon: https://snifferdragon.itch.io/tiny-tileset-and-sprites npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Continuing to work on game dev libraries for Crystal. Currently fiddling with Tiled's JSON format. #Crystal #GameDev https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/656/285/873/464/443/original/4ad7c037e7735f7f.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital *sigh* which is unfortunately Scala. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I honestly just want a functional programming language that has the following: - Flow-sensitive typing - Intersection and Union types (with an ADT short hand) - Polymorphic record types npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I can't help but feel like I write Crystal wrongly. For the most part I ignore inheritance and just use mixins and unions types. My brain has never understood inheritance as a means of code re-usage. And, building class hierarchies has always felt tedious and error prone (e.i, having to re-structure cause of some early decision that no longer holds up). Like, when I'm working on Godot, I only extend a base-type to use its API. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1h2y…jlsd :: Attracted like flies to shit. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital The Nim community is a great example of the Nazi Bar analogy. This account was made literally an hour before making its posting. If you run a FOSS community, do not be like Nim. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/652/092/724/661/736/original/c0a82a07c9f53291.jpg npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1udx…3lhc Technically desktop wall paper, but I position the krita icon so it looks like an acid tab. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/651/302/264/007/955/original/7c0dbc763e40f386.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1vkv…g48n :: Sadly it's hard to find a deep dive into the details of the law in English. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1vkv…g48n :: Actually, the full law has two parts: training and generation. The training/research side has be relaxed, but the generation side has been given strict legal penalties for using copyrighted while training. The end result is academic researchers have been given free reign to study AI techniques, but commercial work could result in civil and criminal punishment if caught violating copyright. https://www.siliconera.com/ai-art-will-be-subject-to-copyright-infringement-in-japan/ npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub189a…hpsa :: Outside of talk about the BDFL, it has always felt off to me. I could never quite places it? Like lots of ideas that could be interesting and mesh together, but feels more like eating a cheap salad that has too many lettuce stems in it. This isn't even aimed at it's promises about performance, but my general interest in PL design. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Me: Oh yeah Nim exist, why don't I use Nim again? Nim Lead Developer: https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/650/687/551/726/291/original/470ed77dfb1efd0e.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Source code: https://codeberg.org/CapitalEx/bump_cr npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I finally got BumpCr fully working :blobfoxdealwithit: Had to patch an issue that the test cases didn't catch. But, finding errors through play-testing is the heart of game dev. #Crystal #GameDev https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/648/444/192/581/953/original/436036aadd757798.mp4 npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital :blobfoxangrylaugh: https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/647/413/181/727/981/original/aedc8b00a82d1aa9.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1076…a033 :: Living their best life. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital If you want to know an ugly of Crystal, I am currently doing this to get the LSP to type check my code. I just have a `if false` block at the end of my library that causes Crystal to think all these functions are being used. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/645/852/494/779/822/original/20e99b6c1690969f.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I am mentally keeping note of the "good, bad, and ugly" sides of Crystal as I do this port. One thing I have very much enjoyed is post-fix if/unless. Combining with flat_map, I've managed to turn 5 levels of nesting in Lua into 1 level of nesting with Crystal. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/645/555/596/211/502/original/bbeca5f258f9c32c.png https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/645/555/752/703/395/original/dd59170e69579bed.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1kf5…477g :: Have you already joined one of the many furry mastodon relays? npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I am once again remembering why I pathologically avoid using the pattern "item => items" to refer to a member of a collection and the collection. I just spent like 30 minutes wonder why something was raising an error when I had a stray S at the end of a variable. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1xgl…j0w2 :: I remember the first time I booted up a NSFW VR game. The lack of tactile feed back has ruined any sort of VR stuff for me. Cause my brain just *knows* there is no sense of touch. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital The #Crystal code format tool should probably add a line length limit, lol https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/642/751/557/507/497/original/a9683d45d0c66794.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1lnh…96ts :: JavaScript took ideas from Lua and Scheme, implemented them worse, wrapped it all up in a Java shaped skin suit, and slapped a layer of weak-typing on top. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Try Not To Explode at Your Queer Friends for Still Using Twitter as It Get Worse, But Alternatives Will Never Be Good Enough Challenge (I'm am Seconds from McLosing It) npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital bump.lua takes advantage of this to allow for (very) lazy management of entities in a collision world. Tho, there are many spots where bump.lua will keep entities alive. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I have finally ran into a unit test that test for behavior that Lua has but Crystal doesn't. Lua has the concept of weak tables that allow the garbage collector to remove member from a table automatically. Crystal, however, has no such feature. You can make a type like Hash(T, WeakRef(U)) in Crystal. And this hash-map will not persist the value referenced by WeakRef(U). However, unlike crystal, when a WeakRef(U) is empty, it is not removed from data structures. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1wgz…k7g6 :: I'll probably stay using it until things I need don't function anymore. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Do you are a love one have X11 based mesothelioma? You may be entitled to free compensation. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1y2y…u6r7 :: Also hoping to take advantage of Crystal's syntax sugar to flatten a lot of conditionals down. It's not uncommon to find methods that go 5 ~ 6 nesting levels deep. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1y2y…u6r7 :: Currently, I want to get all of the original bump.lua test working before I start cleaning up the types and data structures. Named tools are purely short term convenience. Tho, anytime I notice a lua table with object keys and boolean values, I'm replacing it with Set(T). There are some memory leaks I found in the lua code I'm hoping to fix using Set(T). Object keys in a hashmap is an easy recipe for accidentally keeping objects alive. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital It also helps that Lua and Crystal are just similar-ish enough to dump the source code into a crystal file and start porting. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Continuing porting code from Lua to Crystal. And I don't think I could do this port in any other statically-typed language without going insane. I'd probably have given up by this point. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/636/524/650/261/091/original/9786e6957a1e2464.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1udx…3lhc :: An event more catastrophic than when Photobucket destroyed countless forum post. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I will say one fun thing of porting dynamically typed Lua code to statically typed Crystal is remove various test cases that wouldn't even compile. Calling functions with the wrong arity and calling functions with the wrong types. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Gonna go on a walk and brainstorm a new word brb. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Waiting impenitently for the day "and/or" gets reduced into something simpler. It's basically the he/she of conjunctions, and it sucks. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1lnh…96ts :: Game development. There is a Raylib library as well and it takes me back to the days of using LOVE + Lua. But, I've grown to like static typing for computer assistance in function look up. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1lnh…96ts :: currently I just make a dummy call to the method I want type checked. Then, type checking information will cascade through all the other used functions. Basically, I dumped all the Lua code into a Crystal file and fixed all the immediate syntax errors. However, the tools for generating the "type context" of a function are not co-operating. I can get it to work in small test situations. But not in my actual library. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1lnh…96ts :: The best analogy I can give is Crystal functions are like C++ templates. If they aren't used, they simple are not checked because the compiler will never generate code of them. Normally it's not a problem. But in this cause I don't have any code being "used" by my library. So, nothing gets checked. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Butting heads against some of Crystal design decisions again. And, it's once again the fact that type checking is reserved for only used functions. But for some reason your test files (spec) don't mark functions as used to crystal. I'm trying to port bump.lua to crystal having to work around this is annoying. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1lnh…96ts :: The main thing I like about unions is the free association of types. It allows me to write a function that takes in a subset of a larger type. With enum/ADTs, you have to handle every member or select which underlying type you want to operate on. If I only care about "colors with a red channel", I still have to deal with HSL and CMYK in Rust, even if it's just adding a default match. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/625/249/548/072/305/original/9ee7235e86ad0c6a.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1lnh…96ts :: I'm actually trying to implement a feature Rust and Idris lack natively. Crystal has the ability to combine types into an anonymous tagged union types. Since it's tagged, you can match against the type like you would an `enum` type in Rust. However, unlike Rust, each member of a union in Crystal is a separate type. This allows you to recombine types into new unions. I'm sure you could hack together something in Rust, but out-of-the-box, no support. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/623/958/059/314/821/original/9c509f49b14ce1ac.png https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/623/972/393/137/769/original/ce30e3fd9392dfab.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I am once again fucking around with Union types in Idris. I think this time I actually have something that doesn't immediately fall apart :blobfoxcomfycomputer: https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/620/373/577/509/343/original/48a3e0924abf3514.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1udx…3lhc :: IPv4 will die with the last COBOL program terminates npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub156p…ek6w :: Honestly in my head I was literally just thinking of a link on a website to a zip file or something. It'd definitely take some work to define what is good enough public access. Geoblocks, embargoes, and internet blackouts shouldn't fall on to the developers as legal liability. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital With the whole #RHEL kerfuffle, is there any #FOSS license with a requirement of public availability regardless of who can access the distrusted builds? For the most part, publicly hosting code is kinda a convention. And 3rd parties with enough money will try to find any reading of your license install barriers to source access. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1vkv…g48n @npub1udx…3lhc :: I feel like Erlang (and Company) fits into this group with the "Let It Crash" philosophy, too. If something goes wrong, just restart the whole process instead of trying to recover. Which avoid recoving into a even more invalid state. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Me: I am going to use C# with Godot Project: *takes an extra second to run* Me, having flashback to Unity development: Never fucking mind. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1udx…3lhc not stack based, very cringe take, please delete, I am rapidly approaching your location :blobfoxyandere: npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1udx…3lhc :: I'm pretty sure the reason GDScript doesn't implement exception handling is "games should have exceptions". Which tbf, if a important file can't be loaded, you are already in an unfixable and invalid state. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub122d…a54u @npub12gs…3cnh :: I should probably learn to re-pack stuff. I tend to build from source if it's available in these cases. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Love when software says they "support Linux" when they really mean they support Ubuntu... As someone that will never touch Canonical's Canonicrap, it's so annoying. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Someday I will have the mental energy to remove nix and the 32 user accounts it added to my fucking Arch system. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Factor is a cool language, but damn is it's implemention hard to figure out. The bread crumbs left behind feel quite sparse at times. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Having to log into an account you haven't used in ages to then be forced to 2factor through Yahoo is not a ring of hell I would have thought of, but yet here I am. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I might just resign myself on this endeavor. I cannot figure out what's going wrong with the linking process. And, I don't know if I have it in me to decipher Factor's VM. (Which isn't a VM in interpreted language sense) npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I am having a perfectly normal one doing things I'm not sure actually work anymore :blobfoxnerd: https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/591/318/986/385/026/original/6ce3e14d31611524.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital The only reference to embedded Factor is the old C API that got replaced with a C++ API. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Status update, I could not get the embedded Factor API to work. Nor do I have any idea why it segfaults when running factor_eval_string or crashes to the low level debugger when trying to run a standalone instance. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Someone random: *has animal profile picture* Me, a chronic furry: So is that like your fursona? npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1xgl…j0w2 :: It's why I like the language cause it's super easy to lift a string of words into their own definition and/or insert additional operation between words. Every time I have to introduce a new variable to my program, my brain cries a little bit. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1xgl…j0w2 :: With both GDScript (2.0) and C#, the translation process would probably be the easiest part to crack. C# might be a bit easier. I was trapped in Unity hell which (I think) is still stuck on 4.0. The harder part for both languages would be transforming Factor from stack-based to SSA form. The hardest part would be making it well optimized SSA form. Factor is a language where code is data and any repeated pattern of flow control can be re-factor until it's gone. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/588/686/237/298/462/original/bfac891fbaf1fd8d.png https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/588/686/690/822/214/original/105d53d9a2d840e6.png https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/588/687/054/154/442/original/03ccf58b42442129.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1xgl…j0w2 :: Off the top of my head, this mock Factor code would roughly translate into the following C#. Assuming that the Sequences vocab already exist. C# might work out better since dynamic values can still use types for dynamic dispatch. I also forgot that (thankfully) Func<...> exist. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/588/558/758/260/769/original/69b502ca7355a150.png https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/588/559/333/583/604/original/9077eccaa03e0f4c.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1xgl…j0w2 :: Honestly transpiling to either would be hard because... 1) Factor is functional. Iterators and recursion are the primary means of preforming loops. 2) Dynamic typing. Tho, this is only really a problem for C#. 3) Quotations. They'd be *extremely* hard to translate to C# cause delegates fucking suck. 4) Methods. They aren't part of a class, but dynamically dispatch on their input. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I have a really dumb I idea I am absolutely fixated on now. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Thought: Factors embedded API doesn't allow you to register external functions into Factor. Additionally, you can't reach in an access Factors internal state. HOWEVER! I can write Factor code the exposes callbacks from C to Factor. I can write C code that exposes functions from Factor to C. THUS! I can store those callbacks in memory in a way the C side can access them again later. Giving me a way to expose Factor code through a C API. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Working with non-concatenative languages always leaves me missing Factor. Part of me daydreams about having some kind of GDFactor set up, where I transpile a subset of factor into GDScript. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub12gs…3cnh :: They appeared to me through the YouTube Algorithm. It decided to grace me with a very interesting and relaxing channel to watch. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Here's a fun bird theme youtube channel about physics, math, computers, and more: https://www.youtube.com/@physicsforthebirds npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1vkv…g48n :: At some point, Signal integrated MobileCoin. A shitcoin that can only be exchanged at some sketch ass exchanges. I have no idea who is using this. https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/580/574/495/944/601/original/364826c66b9579af.jpg https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/580/574/635/513/853/original/23d4bb4866f36a2e.jpg npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Sometimes I remember Signal has a cryptocurrency wallet attached to it. And that is uses some coin called "MobileCoin". npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital @npub1udx…3lhc https://cdn.pawb.social/mastodon-fe/media_attachments/files/110/579/508/440/536/352/original/4a02e36cf66a6147.png npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Anyways that's all I had in my head I have to go to bed its like 3:30am. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital Well, C is valid for A, and B is valid for A, and obviously A is valid for A. So the set of types that A equals is... { A B C }. Oh no. That's not a set. A set can't contain itself by definition. So our data types have to be indivisible. You can't have a hierarchy of types. Thus, this hypothetical language also lacks Inheritance. Types are just free-floating things you re-arrange as needed. npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I've been thinking about the type system of #CrystalLang. It's got me wanting a language where types are grouped exclusively through sets. This can be either explicitly defined unions, interfaces, or something else. But, there has been something bothering me. Something always felt off about inheritance under this model. And, I think I have finally figured it out! Let's say you've got class A. You then derive classes B and C from A. If the type A is set of types, what would that be set? npub1ryfja06pvw3rnyv3hjgvy0en68lyj3wta8yq0vx3j6ch9gnsr9ss2wur9z Capital I hate mobile development so much. Setting up the SDK suck, exporting your app sucks, debugging why shit isn't connecting sucks, learning that your phone may have a defect triggered by an Android update really sucks.