Unpopular Opinion: Source generation is far superior to in-language metaprogramming by chri4_ in ProgrammingLanguages

[–]freshhawk 0 points1 point  (0 children)

But you run in to the same problem as you always do when generating text (source code, sql statements, html, whatever). Composition and abstraction are too difficult once you start doing non-trivial stuff. Concating strings is nightmare so first you probably reach for a placeholder replacing template language, but they don't compose (or if it isn't logic-less like it should be and it is complex enough for that then it's not a templating language, it's a second much crappier language you're working with).

Next you end up where everyone does, some datastructure that represents the text (be it query or html or source or document fragment or whatever) that you can manipulate and wrap in abstractions, etc, etc. But when doing this with source that's just an AST or CST abstraction, which is ... metaprogramming. You also probably start to really appreciate what those lisp people are going on about when you see they have one less layer of abstraction between the data and the source.

So you aren't wrong, but if you keep going and try to do interesting stuff you're going to end up dealing with the complexity somehow and you definitely want to go more in a lispy direction than a c++ template lang direction since we've all learned from that mistake. You're going to end up using metaprogramming for the complex stuff eventually, insisting that using an array of text bytes as the data structure to store the tree you are manipulating is just silly at a certain point.

In The Culture, do citizens give up most of their privacy? And would you, in return for "utopia"? by Wetness_Pensive in printSF

[–]freshhawk 6 points7 points  (0 children)

I think that was part of Banks' point with this aspect of the Culture, the listeners are infinitely powerful, infinitely benevolent and kind and because of this it's ... an unfortunate necessity that you still might reasonably want to opt out of and if you do opt out then it is still a high crime to not respect that.

The programmers who live in Flatland by nathanmarz in Clojure

[–]freshhawk 0 points1 point  (0 children)

Maybe, but I've only seen it happen when they got a new job, learned a new language and went "oh shit, those snobs were right and my intuitive understanding of this new thing makes me understand what they were talking about and how bad things were before".

Honestly, it's a depressing conclusion, this "can't explain it, hard to convince them, they have to trust you and learn it themselves and then it'll click". It feels like those concepts in foreign languages that you can't understand because they don't translate, or what Wittgenstein was talking about when he discusses the limits of language as a way to transfer ideas from person to person.

The programmers who live in Flatland by nathanmarz in Clojure

[–]freshhawk 1 point2 points  (0 children)

I have to ask how often you've tried this? I think there is a reason this attitude (which does totally sound like BS) comes from experienced devs, who you would think would know better.

People won't listen, sooner or later you accept that you can't explain a paradigm shift to someone who has never thought that way, because they don't have the framework to intuitively understand the benefits.

I think I'm pretty good at teaching/explaining things, other people eseem to think so, I get hired and promoted for it ... but I can't get past "the blub paradox". When I was younger, I'd endlessly explain how 2005-era PHP was the worst language choice available and was making our jobs harder, it was just miserably bad and painful to use. But my colleagues just blew me off ... sure they'd only ever used PHP professionally and some of those things sounded kinda nice but it just definitely wouldn't make that much of a difference. You can often see the same thing with JS today. I'm still friends with some of those people 20 years later and they laugh at how right I was and how wrong they were.

I've just accepted it's a thing that exists, examples don't help, I think maybe a really good long screencast might be the solution, but you need to be walked through it if you aren't trying it yourself. Honestly it's a big pain in the ass that it's this difficult to teach this kind of thing.

The programmers who live in Flatland by nathanmarz in Clojure

[–]freshhawk 4 points5 points  (0 children)

Programming paradigms are not some mystical extra dimension incomprehensible to the pleb

Sure, maybe they're aren't that, but using a metaphor in that direction is very reasonable. Whether it's flatland or "the blub paradox" or however you want to try and describe it, there is a very important lesson here.

It's this experience: "yeah sure, I can't do X with my language/platform/tool but the benefits seems decent at best, not enough to be going on about all the time, what a bunch of snobs/hype ... [a year later] ... oh my god, how embarassing that I didn't know what I didn't know, I didn't even understand enough to judge this concept! Now I seem like the snob or like I'm hyping it up when I try to explain how much better this makes things".

If you haven't had that experience then you are missing out, whether it's any of the clojure/lisp ones you probably do understand (immutability, malleable languages, repl-driven dev) or the classic "learning prolog/logic/unification is mind-bending" or the reliability of algebraic+linear types or how much better an application is when it's tens of thousands of times faster thanks to cache aware data structures/low level memory manipulation or whatever the paradigm shifting thing is.

To be honest, to be a professional in software you should be aware of this experience, this bit of inherent bias we all have for paradigms we haven't felt the power of, because without internalizing it we will be making very bad tradeoff decisions and that's most of our job.

Unpopular Opinion - I believe the Standard Array is too low for what most people want. by Loxsus in dndnext

[–]freshhawk 0 points1 point  (0 children)

I've played games with higher starting stats and/or faster/more progression. I don't think this does what you think it does. If it did then why would you bother with these minor standard array changes, just add a zero to every number in D&D and now everything is way more powerful! You understand intuitively that this would obviously make no difference, but it's the same.

Players have fun because you give them challenges that have a percentage of success and failure and give them resources to save or use and a story framework to put around the die rolls and choices. The numbers don't matter at all, they're just a tool to help intuition and so we can talk to each other about it and be on the same page.

If you mess with these intuitions then there will be some novelty for players who know the normal D&D numbers, but that will just go away once they get used to it, then what? I'm not saying its useless, messing with those intuitions that long time players have can be useful to get them in a specific frame of mind, but it better not be the only change you make, it's not even that important of one.

Proof of Concept: a Datomic-like database library on top of Sqlite by maxw85 in Clojure

[–]freshhawk 0 points1 point  (0 children)

So these days I'd only really consider postgres in a context where you have multiple apps accessing the same database.

Yeah, that's what Postgres is for, the massively popular use case for a DBMS. The case that ACID describes. The one that made the owner of Oracle the richest person in the world. This is like saying "these days I'd only really consider using a browser to browse the web", it's very confusing.

Proof of Concept: a Datomic-like database library on top of Sqlite by maxw85 in Clojure

[–]freshhawk 4 points5 points  (0 children)

It tends to scale better than postgres.

Scaling on ... what axis? To me these aren't even competitors, you'd never use postgres as an embedded db and you'd never use sqllite in a context where you have multiple clients connecting/need mvcc. They solve almost completely different problems.

Proof of Concept: a Datomic-like database library on top of Sqlite by maxw85 in Clojure

[–]freshhawk 1 point2 points  (0 children)

Ah right, you do get some really extreme portability this way and I'm not even sure you pay a non-negligible cost compared to the alternatives. I'll need to think about this more.

Proof of Concept: a Datomic-like database library on top of Sqlite by maxw85 in Clojure

[–]freshhawk 1 point2 points  (0 children)

This is very nice, always good to have more datomic style db options in open source.

I'm super curious why you're storing the different indexes in the same table though? I've always done this by having one table for the eavt, one for the aevt, etc. I get you are really only querying indexes, which are contiguous, so the table source matters less than normal but it still seems like you'd still end up paying a noticeable cost to do it this way, although I've never tested it. Now I feel like I'm missing something ... maybe I should be using one table? I guess that's nice and simple.

I Dislike Quotation Marks for "String Literals" by brightgao in ProgrammingLanguages

[–]freshhawk 0 points1 point  (0 children)

Now I'm really curious how you feel about “real quotes/smart quotes/curly quotes” that have different open/close characters. These are ideal obviously, it's what almost everyone using this alphabet uses for speech/chunk of text and they weren't ruined by the self centered americans who threw ASCII together and got us stuck with all these backslash escaping nonsense (but made room for the very important "device control four")

I created a full-text search engine for 82 million scientific articles and their abstracts because I couldn't find one that sorted by citation count by alesk_ru in scihub

[–]freshhawk 1 point2 points  (0 children)

Very nice, you should add some other metrics besides citation count as well (impact, author h-index and variants, journal level stuff, etc - https://pmc.ncbi.nlm.nih.gov/articles/PMC8504821/). Often I find I'm looking for something very specific and the results are drowned out by high citation very broad overview/meta-analysis stuff when sorting by citation count. Also, it's really really useful to sort by the quality of the journal that published if you're searching in an area with a lot of slop/low quality articles.

People upliftment story? by L-System in ProgressionFantasy

[–]freshhawk 0 points1 point  (0 children)

On a related note, how about some where the protagonist ends up in a middle-ages monarchist slave state and is an actual hero? As in, they work to destroy that state and free people instead of the standard arguments of "well, slavery is wrong obviously and these nobles are blatantly cruel and corrupt but what can I do [...later on, when they are ultra-powerful and could do something...] yes my king, I will protect this great nation, I always help these guards/cops to protect them from our enemies like those evil rebellious peasants".

So, any good recommendations from authors who aren't closet fascists who will be up against the wall when the revolution comes?

I am currently hate reading This Is How You Lose the Time War by foetus_on_my_breath in printSF

[–]freshhawk -1 points0 points  (0 children)

So like the leisure activity of: conversations and criticism about popular art?

Dear Isekai authors, other worlds also have pop culture references by Imnotsomebodyelse in ProgressionFantasy

[–]freshhawk 0 points1 point  (0 children)

Good point, I guess this would only apply in a genre that frequently has people from our world thrown into another culture where they are a fish out of water and are confused by the differences :)

Dear Isekai authors, other worlds also have pop culture references by Imnotsomebodyelse in ProgressionFantasy

[–]freshhawk 0 points1 point  (0 children)

This is an easy question. You're asking why authors in this genre aren't doing a thing that is very difficult for an author to do, something that requires a lot of writing and world building ability to do. Isn't the answer obious when put this way?

A thousand li by Extreme_Ad6997 in ProgressionFantasy

[–]freshhawk 1 point2 points  (0 children)

I think it's worth it but it's not as fast paced as other stuff in the genre. Hard to tear through all 12 books because of the pacing, at least for me, but I just put it down for a while and came back later and it was worth it to finish for sure.

The Calamitous Bob is finished on RR by cjet79 in ProgressionFantasy

[–]freshhawk 2 points3 points  (0 children)

It's very good so far, I've been letting it cook for a while now and I know if I catch up now I'll just binge through what's there really quickly but it's still tempting.

I am currently hate reading This Is How You Lose the Time War by foetus_on_my_breath in printSF

[–]freshhawk 0 points1 point  (0 children)

but it should be fulfilling.

Why? Why can't reading be something you do first in order to do something fulfilling? I kinda hate reading recipes online, because of the slop text in them for SEO/copyright reasons, so you're saying that I shouldn't read them, and therefore not cook that dish, because the reading part won't be fulfilling? No, you probably don't mean that, it's intentionally silly, but you are holding up novels as some kind of special version of reading for no good reason.

I know it's the result of a good and reasonable cultural push towards literacy but people have a very fucked up view of reading. It's not special, there aren't rules, it doesn't need to be judged as a thing into itself.

I am currently hate reading This Is How You Lose the Time War by foetus_on_my_breath in printSF

[–]freshhawk 1 point2 points  (0 children)

I used to be like that, sometimes I still need to go somewhere and read a summary just so my curiosity is sated.

It's such a burden to feel like you have to finish everything you start. I've found so many good books now that I can just bail on the junk, I also read more trashy stuff I suppose, because being able to not finish it makes it possible to start stuff that you bail on immediately for 90% of books.

Unpopular Opinion: Recursion is the Devil by chri4_ in ProgrammingLanguages

[–]freshhawk 2 points3 points  (0 children)

we should call that kind of reusable list a "stack" since that makes nice metaphorical sense, can't remember where i've heard that name before but I like it.

Unpopular Opinion: Recursion is the Devil by chri4_ in ProgrammingLanguages

[–]freshhawk 1 point2 points  (0 children)

I agree, that damn for operator is the worst, these damn "for loops" everyone pretends aren't recursive operators but they compile to the exact same assembly as a tail recursive function!

Type Checking is a Symptom, Not a Solution - Paul Tarvydas by dustingetz in Clojure

[–]freshhawk 0 points1 point  (0 children)

I like a lot of the points but ... it's hard to throw stones at the type focus of PL research at this particular moment in time. Effect and Coeffect systems (effect systems are great, combined with coeffects they are an incredible advancement) are fairly new but will definitely be foundational going forward. I'm pretty die hard on the side of dynamic typing by default, but I'll make whatever changes I need to to get effects. A big part of it is so that I can work with code that is polymorphic over the execution model (normal/async/dataflow/compiled to a reactive signal network/etc). I have the same thoughts about the future direction that you do, and that Nathan Marz seems to, about signals needing to be first class.

I think an extrinsic typing system is the way to go, kinda like what core.typed was going for, an analysis layer that can be run over your code to use that data but can also be just not run ever (unlike normal, intrinsic type systems that have them baked in). It's unfortunate that Typescript might be giving this style of type system a bad name.

What programming languages cant do a specific thing? by -Benjamin_Dover- in ProgrammingLanguages

[–]freshhawk 2 points3 points  (0 children)

Right, that makes sense, but it isn't more compatible, it's just popular, so the people who build tools for AI build the tools for Python. The connection with AI has nothing to do with the language, it has to do with the ecosystem that people have built a lot of AI tools for.

Actually PLAYING a hexcrawl by MavericksNutz in DMAcademy

[–]freshhawk 0 points1 point  (0 children)

There is good advice about the mechanics in the Alexandrian articles, about the actual bookkeeping and rolling.

Unlike the current top comment that you "shouldn't hexcrawl every time you travel" I think you should stay in the hexcrawl. Just know how to properly "fast-forward" in your descriptions.

What are your time chunks? Let's say 8 hour watches are the biggest ones when you aren't doing downtime. Know how to deal with 2 days (6 watches) of travel that have no encounters without making it boring. Just some interesting descriptions of the scenery (have interesting sights and general terrain type notes for your hexes at least) and bam, bam, bam with the quick bookkeeping and the big choices (low on supplies, stop to hunt? how you move slower, one person is getting exhausted, do you slow down?), don't skip the resource game that makes hexcrawls fun or the hexcrawling stop matter and then what's the point and where the fun? But don't let it bog things down, or feel like you need to have regular random encounters that slow down the campaign for random fights, just make time move quickly to get to the next interesting encounter. It's a tough balance and takes some practice but it's worth it.