@ramin_hal9001@emacs.ch
@ramin_hal9001@emacs.ch avatar

ramin_hal9001

@ramin_hal9001@emacs.ch

I'm just some kind of nerd: software developer, big fan of functional programming, especially Haskell and Scheme. I also love old Macintosh computers. Haskell programming since 2007, Linux user since 2008, Emacs user since 2018. Currently working as an app developer at a small machine learning consultancy. You could call me a "full stack" engineer, but server-side is where I am really in my element.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

ramin_hal9001, to threads
@ramin_hal9001@emacs.ch avatar

is / using the old 4-E strategy strategy to destroy Mastodon:

  1. Embrace: what they are doing now, launch a competing but compatible service with that of Mastodon. The vast majority of users, most of whom don't care about the privacy and intimacy of the Mastodon network will go with the brand with the most name recognition.
  2. Extend: attract users to their centralized network with features like search, which they have the resources to do but the rest of the Mastodon network does not. But also include features for tracking and advertising, sell this as a good thing, "a better place to grow your perasonal brand, your business."
  3. Extinguish: after attracting a critical mass of users large enough to decimate the user base of the competing Mastodon network, queitly remove compatibility with the Mastodon network, this will effect only 10% of Mastodon users because the other 90% will be on Threads. "Who cares if we lose contact with that tiny minority of old Mastodon users, they should have just joined Threads by now anyways, they still can. It has search, and more people voted for it with their patronage it, and you don't have to think about what instance to join, its easier!"
  4. Enshittification: without any real competition to keep people from leaving for an alternative, start exploiting users for more and more content for ad revenue, exploit advertisers with ever-increasing costs of ad revenue.

They are scared to death about losing control over the Internet that they had gained over the past 15 years or so, and they are fighting to take that control back for themselves. We built this, but now a corporation like Meta/Facebook feels they have the right to exploit it for all its riches until it is destroyed.

Don't let it happen. is the only way to protect our home-grown community from corporate take-over.

ramin_hal9001, to python
@ramin_hal9001@emacs.ch avatar

Yet another rant about Python and JavaScript:

I hate it when someone tells me, "well Python and JavaScript can be programmed in functional programming style, so they are just as good as any other functional programming language," and "something something objects are the same thing as closures."

Then my program crashes and I spend 20 minutes debugging only to find that for the 100th time I wrote a method like this:

def getThing(self): self.thing

instead of like this:

def getThing(self): return self.thing

...where basically the problem is most of my program is written in functional programming style, except you STILL have to write the fucking "return" statement as the last line of the function.

If your language has "return" as a built-in control flow, it is hopelessly imperative not functional, and there is not a single monad framework or higher-order-function library anywhere that will make your language functional.

Stop telling me imperative languages like Python and JavaScript are just as good as functional languages, they are objectively worse than functional languages.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "Does that make ruby (more) functional?"

@Pitosalas I suppose so, Ruby was apparently inspired by Common Lisp. Although I still don't really like Ruby all that much for various other reasons, e.g. how it chooses to coerce values in what I would call "counterintuitive" ways. I will admit, I have not used Ruby very much at all beyond just learning how to solve practice programming problems.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "I teach and in python is far better known and popular."

@Pitosalas yes, it is a pitty that won the popularity contest.

It started out as a great language for teaching coding. Academics all thought, "well, lets start them out with an easy language, once they learn one language, they can learn other languages more easily. They will learn the correct language for whatever job they might need to do once they get a real job."

But as it turns out, people want to only use the first programming language they ever learn for everything. So then they do use their favorite (first) programming language for everything, even for tasks that the language is not well suited.

So now we have an industry-wide situation where instead of people learning the correct programming language for each task, they just try to hack and kludge Python until they can use it to solve any possible problem. Now Python is used in many thousands of code bases where it is quite probably the worst choice of programming language for the task that code is trying to solve. This is especially true of machine learning and AI.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "One of the reasons I like Python is that it can be used for so many different tasks, and without having to learn a new language.

@steriana @Pitosalas here is the thing though, Python is one of the worst languages for trying to adapt it to many different tasks.

If you want a truly general purpose high-level language that can be adapted to many different tasks, Common Lisp or Scheme is considerably better. The interpreters and compilers for these languages actually provide carefully designed mechanisms, like macro expansion and pattern matching, specifically for adapting the language to different tasks. This is possible because the syntax of the language is so simple and minimal that it is very easy to devise embedded domain specific languages (EDSLs) with very little effort, and without requiring people to expend the effort of learning whole new languages.

Python's syntax is relatively complex compared to Lisp, and its APIs for modifying the compiler and interpreter are not at all well-designed for adapting the language to various tasks compared to those of Common Lisp or Scheme. Creating EDSLs is for Python is not idiomatic coding style and discouraged, but people try to adapt it to every possible task anyways, and it becomes a horrible mess.

So you or anyone else, adressing the software industry as a whole, wanted to learn just one high-level language to solve every problem for you, it ought to have been or . Relatively speaking, is so incredibly limited in what it can do compared to those languages, Python was objectively the wrong choice for this "lets adapt it to all purposes" way of thinking. The software industry is truly in a horrible mess as a result.

By the way, languages like Racket and Gerbil which are both built on top of Scheme are very easy to learn for beginners.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "I've worked with of every stripe, age, background, education... and I don't think any of them was stuck on whatever their first language was. In fact, I'm sure of it."

@cazabon @Pitosalas well, it isn't entirely the fault of software engineers. In the world of machine learning Python dominates, and this is because most people with expertise in machine learning have a statistics background, and Python has since become the language of choice for statisticians, and largely because of how it is used as a first language academia.

These statisticians aren't at all interested in software engineering, even though they work entirely in software. They want to get their AUC/ROC curves just right, and they don't care about whether their code is following best practices, only that they can get started using the machine learning framework without learning any new languages.

It used to be Matlab and R, but thanks to Google and Facebook both independently deciding on Python as the scripting language for their machine learning frameworks (Tensorflow and PyTorch, respetively), everyone uses Python now, and because it is used everywhere, people look at me sideways wheneve I try to explain to them that Python is probably not the best language to use if you want to create a nice fancy GUI around your awesome Python machine-learning program.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "but that isn't going to make it a viable choice outside of hobby projects."

@cazabon @Pitosalas what sucks is that the only reason these languages aren't viable is because of political and economic reasons, and has nothing to do with factual, engineering properties of the languages. Ironically, the economic waste that results from using the wrong language (especially in man-hours lost) is certainly very large.

I sure as hell know my time is being wasted working with this Python bullshit. It probably wouldn't bother me as much if I were being paid by the hour, but no, I have a fixed salary and deadline, and Python does fuck-all to help me meet those deadlines. Therefore I fucking hate Python.

I also know that if I were allowed to use Haskell or Lisp, 99% of these bugs (especially null pointer errors) that are plaguing me would have been solved weeks ago and I could have moved on to something more interesting.

Sorry to be so negative, but this is my rant thread so I am going to take the liberty.

nixCraft, to linux
@nixCraft@mastodon.social avatar

Try the nifty dstat utility. It is a versatile replacement for vmstat, iostat, and ifstat to view your system resources instantly on your , , , and .

Try the nifty dstat utility. It is a versatile replacement for vmstat, iostat, and ifstat to view your system resources instantly on your , , , and .

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@nixCraft I am more interested in what the background music was that was used for this video.

davidrevoy, to DigitalArt
@davidrevoy@framapiaf.org avatar
ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@davidrevoy the way that the lighting and the color has been rendered in this image is so perfect, it is as good as if it were modeled in Blender, but I know that is now how you made it!

timnitGebru, to random
@timnitGebru@dair-community.social avatar

There was a Venture Beat hit piece by Sharon Goldman on a number of us, calling the letter we signed from the responsible AI community antisemitic & platforming a number of Israeli researchers who have been incessantly harassing us, & of course, you can guess how many Palestinians were platformed (hint ZERO). But there was so much gold that was comically evil. Lets start with this one. I'll let you process that an article said that "AI" & surveillance tech is saving Palestinian lives right now.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "I have been working on an AI dashboard to monitor collective consciousness on the Israel-Hamas war on TikTok and suggest counter narrative social media compaigns to combat negative sentiment towards Israel. It's a copilot for the information war...."

@timnitGebru Yes, I am sure Hamas with all of the billions of dollars of free funding from various imperialist nations have the resources to fight an "information war," as she calls it. All of that anti-Israel information she is talking about, for example the recorded speeches from Netanyahu's cohorts unabashedly saying the most abhorrent, racist, genocidal things ever heard from a US ally nation, and all the most heartbreaking imagery of the Palestinian civilians suffering and mourning their dead children is "propaganda" and "fake news" generated by Hamas in the propaganda war, that must be it.

The way Shira describes it, reminds me a lot of what they call "social engineering," but its OK if Israel does it since Hamas is doing it first, right? (sarcasm)

ramin_hal9001, to Lisp
@ramin_hal9001@emacs.ch avatar

The Scheme language's small size isn't necessarily a strength

So I was reading through part of the EmacsWiki and in the article on the Scheme programming language there are references to this ancient online debate from August of the year 2000 at the comp.lang.lisp Usenet group started by the late Erik Naggum, who was apparently a somewhat opinionated and inflammatory individual, who brought up the Scheme/Common Lisp debate on comment thread about someone being confused about how the CASE clause works.

The Scheme language standard at the time was R5RS, Naggum's argument is a common refrain from Scheme fans such as myself, and he was arguing with Kent Pitman ( @kentpitman ) who was one of the sub-committee chairs of the Common Lisp X3J13 standardization process, and is the editor and maintainer of the Common Lisp HyperSpec, an online form of the Common Lisp specification. Kent Pittman's reply I thought was very well-reasoned, and worth re-posting here (quote):

I just absolutely don't believe the Scheme standard is fairly cited as a model of a "better" standard. It is enormously vague on numerous matters of consequence. It omits really essential functionality that would be needed to write any seriously portable programs. It was stagnant for years on quibbles over some of the silliest syntax details. In my opinion, it's a toy language. There are real commercial Scheme implementations, but only by the sheer will of those implementers who've gone beyond the so-called standard and written in the things that the standard ought to have said in order to make the language finally useful. It achieves its "prettiness" and its "smallness" on the back of just plain leaving stuff out where it would appear to "clutter", and whatever you think of CL, I personally reject any claim that the Scheme is a model of improvement.

(end quote)

I wouldn't go so far as to call Scheme a "toy language" because the parts of the standard that are well-defined are solid and very useful. But yes, it seems the only useful implementations do solve these problems not addressed by the standard in completely different ways that makes it very difficult to write a Scheme program on one implementation that runs on another. Try to write one program that runs on MIT Scheme, Guile, Chez, Racket, Bigloo, Cyclone, Stklos, and Gambit. Try to even compute what set of SRFI (language extensions) are common to all of them. Most Scheme programmers have to pick just one implementation and stick to it without much hope of ever porting their programs to other implementations. It is possible to do it, easier than porting a program from Python to C++, but still not at all as easy as running the same Common Lisp program on SBCL, ECL, ABCL, or Franz.

So I do agree with @kentpitman that there are some pretty important details left up to the implementers simply because none of them could agree on what to do and punted the issue rather than resolve it. Later (after the aforementioned Usenet debate) R6RS would try to solve these issues, but that standard was mostly rejected by the larger part of the Scheme community due to a lack of consensus. Much of that work lives on in the SRFIs, while Chez Scheme (R. Kent Dybvig) seems to be sticking to R6RS and is one of the most well-respected Scheme implementations, and a kind of flagship of that standard.

I still have hope for R7RS-large though, which might end up being even larger than X3J13 when all is said and done. Unfortunately, recently John Cowan, chair of the R7RS-large standardization committee threw his hands up in resignation a few months ago after almost 10 years of trying to hammer-out consensus over details of the new R7RS-large standard. Daphne Preston Kendal ( @dpk ) has taken over and is fully capable of continuing the work.

It might be interesting if some Schemers could get together and write a new fully R7RS-compliant Scheme-to-Scheme compiler in R7RS-small Scheme, with all of the COND-EXPAND expressions in place to run on all of the major R7RS-compatible Scheme implementations. This compiler would simply translate its input into code that the host Scheme compiler can compile, deferring low-level implementation details to the host. The compiler should be one massive file that you could just load into any Scheme compiler and it just works. Then this compiler maybe, just maybe could become The Scheme Standard. A good starting point would be the work of Marc Nieper-Wißkirchen who has written Rapid Scheme which compiles R7RS Scheme to another host Scheme, but it only supports Chibi and Larceny as the hosts.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "But besides C, CL and Java, what general purpose languages also have a diversity of implementations along with easy portability?"

(Not sure if @dpk and @kentpitman want to keep getting notified about this thread, but they can mute it if not interested, so leaving them in for now).

@rml that is a very good point, actually. I had not thought of it that way. In fact, even Java probably does not have more than 2 separate up-to-date implementations at this point, one by Oracle, one by IBM. JavaScript also only has 2 now: Mozilla and Google.

So you're right: C, C++, and Common Lisp are the most portable programming languages that I know of. All else are either:

  • unique to some huge corporation that backs them (C#, Swift, Kotlin, Go, Dart, Erlang, GraphQL)
  • are dominated by a single non-portable implementation from a single organization (Rust, Python, Ruby, OCaml, Haskell, Clojure, PHP, Haxe, Zig)
  • or have multiple non-portable implementations like Scheme (Lua, SQL, Bourne Shell, Forth, Prolog)

So big portable languages like C, C++ CL, are big and hard to implement because they have all the features that make them useful to industry but can get the necessary resources to develop them, whereas a small language like Scheme is so small that anyone can (and many do) just roll their own.

C, C++, and Common Lisp are the products of great wealth, and the power to command large teams of well-trained engineers. Scheme is the product of pure Anarchy. I get the sense that if society as we know it collapses and all we have left of this era are a few hardy, low-power computers that run on solar energy with no means to build new ones, languages like Scheme and Forth might be the only ones small enough that could still be programmed in the assembly language of those few surviving computers, and thus survive the collapse.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "I don't agree that its a product of anarchy at all.... for me, its C++ and Haskell, always adding features on top of features, that seem like pure anarchy."

@rml sorry, I meant "Anarchy" in the more political sense of the term. Anarchy is mistakenly thought of as "without rules" or "chaotic." When I say capital-A "Anarchy" I mean it is the simplest, most minimal set of rules upon which the entire community can agree, in the most democratic way possible, and from that simple set of rules emerges all the complexity of a living system. This also explains why so many years elapse between revisions of the standard and why the standardization process is so mess and frustrating. Anarchist collectives are all like this.

Contrast this with these large languages driven by capital interests.

ramin_hal9001, to emacs
@ramin_hal9001@emacs.ch avatar

#Magit is too easy to use sometimes: almost lost an important bug fix to a hard reset

I was trying to reset just one file, for that you press X f but I absentmindedly pushed X h instead which deleted all changes. Fortunately #Emacs saved me, I was able to remember all of the files I had changed, visit each of those buffers and press C-/ (undo) in each of them to recover my work. The correct copy of my files were on the Undo stack. I can see why some people love those backup files with the tilde characters at the end of the file name.

But then again, #Emacs , or rather #Magit was the problem to begin with. Is there any way to configure it to ask for confirmation before doing a hard reset?

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "There's always the reflog, right?"

@janneke in this case I pressed reset before adding things to the current commit so it was not in the reflog as the bug fixes had never been added to a commit, not even a staging commit. What Magit hard reset does is resets to the commit that you select, but first you choose if you want only one file, or if you want to reset all files. That is the difference between hard and soft reset.

It is something I do not very often, so I don't think I would get used to just pressing "yes" reflexively. The problem here was I didn't realize I had pressed X h instead of X f until after I selected the reset commit and all my changes suddenly dissapeared.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "Ah scary...but then all the changes are still in your buffers, right?"

@janneke yes and no. Magit automatically updates your buffers whenever the HEAD changes (including after a hard reset). But fortunately the bug fixes were in the undo history, so yes, they were in the buffers and I got them back.

ramin_hal9001, to guix
@ramin_hal9001@emacs.ch avatar

Somebody uploaded video of the SICP lectures by Sussman and Steele recorded at MIT in 1986 to PeerTube!

Here ⮕ sicp_lectures@diode.zone

I don't know how long these videos have been on the Internet, but I am amazed that this is the first time I ever learned about their existence.

blogdiva, to random
@blogdiva@mastodon.social avatar

Microsoft is coming for your unpublished copyright and intellectual property whether you want CoPilot or not.

the Operating Systems as parasite or PaSS ―Parasite As a Service

Libre Office forever and ever, rahmen!

❝ Microsoft's next Windows 10 update could see Copilot come to a billion more users
https://www.techradar.com/pro/microsoft-is-bringing-copilot-to-windows-10-in-new-update

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@UweHalfHand @blogdiva my recommendation to anyone who has to use Windows: install the native builds of Emacs or Vim on Windows. These apps alone, even without Windows Subsystem for Linux, make Windows about 10x more useful than it is without.

aeveltstra, to haskell
@aeveltstra@mastodon.social avatar

I may bitch and gripe a bit about the insane learning curve of programming languages like ... but I cut my teeth on and : I've seen worse. Of all the languages I've used, my favorite by far is , but only for processing. What's yours, and why?

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@crmsnbleyd @aeveltstra actually, Haskell is my favorite language. It took me some 15 years to get the hang of it (fortunately, I started young).

My next favorite language is Scheme (a Lisp dialect). The interactive nature of Lisp languages (Scheme, Clojure, Common Lisp) puts Python's interactivity to shame.

Python is my least favorite, mostly because I must use it in my day job and it causes me no small amount of stress. When I give an estimate for delivering code, I usually need to add about 1 week for every 200 lines of Python code that I write just for finding bugs. Bugs in Python are nearly impossible to find and fix, even with decent test suites in place. Contrasting this to Haskell which finds 99% of the bugs in your program for you automatically even before you run your test suite. I wish I could use Haskell for everything.

LeftistLawyer, to mastodon
@LeftistLawyer@kolektiva.social avatar

deleted_by_author

  • Loading...
  • ramin_hal9001,
    @ramin_hal9001@emacs.ch avatar

    @seachanger @LeftistLawyer I am guessing it might have something to do with the fact that Mastodon is based on ActivityPub technology, which is relatively new, and it's federated nature makes it fundamentally very different from the centralized client-server nature of similar online platforms like Ex-Twitter or Reddit. As a result people who are naturally interested in (and comfortable with) technology will gravitate toward this new big thing before anyone else will. I think the fact that Mastodon has won over so many tech folks, who are usually pretty conservative in the tools they choose to use, is a good sign that the technology is solid and could appeal to more general not-as-tech-saavy demographic.

    ramin_hal9001,
    @ramin_hal9001@emacs.ch avatar

    > "They want it "so easy a caveman can do it" and are willing to sell their souls to billionaires because they're lazy.">

    @LeftistLawyer @seachanger yeah, probably a result of most people being the victims of capitalism. They have been subject to a lifetime of conditioning that has taught them that everything is transactional, and that if something is hard you can just buy things that make it easier for you, and that things that are easy are good because they are well-designed by genius inventors or something. So of course most people in such a society would think that if anything requires effort to learn, or any community which requires some effort to be a member, is just a waste of their time.

    > "Thanks for the followback"

    My pleasure!

    ramin_hal9001, to scheme
    @ramin_hal9001@emacs.ch avatar

    I have been giving MIT/GNU Scheme a try

    TL;DR it is pretty amazing!

    According to the Ecraven's Scheme benchmarks, MIT/GNU Scheme is the 6th fastest major Scheme implementation (Guile is the 7th), and I have found it has several incredibly nice, ergonomic features unique to it. It even has its own text editor built-in (Edwin) which is a clone of Emacs 18, so it is quite archaic, but still gets the job done when you need to debug your Scheme programs. MIT/GNU Scheme is also quite minimal, which is good, but it unfortunately does not have as big a package ecosystem as Guile, Racket, or Chez.

    I wrote a library for Functional Lenses in Guile Scheme, and I was going out of my way to stick to the R7RS standard, and to only use SRFIs (official Scheme language extensions), and not use absolutely any feature specific to Guile or the Guile namespaces. Then I tried to port my library to MIT/GNU Scheme, putting in the necessary "cond-expand" expressions... and it didn't work at all, even though MIT/GNU Scheme is in fact R7RS compliant. To be fair, I could probably make it work with a little more effort, for example, I have not yet learned how to use the debugger, and without the debugger, MIT/GNU Scheme tells you nothing when an error occurs.

    I am just a little disappointed with how much effort it takes to make a R7RS compliant Scheme program work across just two different implementations. I hope I might have more luck building it with Larceny, Gambit, Racket/CS, Loko, and STklos. If I ever get my Lens library to work across all of the R7RS compatible implementations listed at docs.scheme.org, I'll report on what steps I had to take in order to make my R7RS Scheme code truly portable.

    ramin_hal9001, (edited )
    @ramin_hal9001@emacs.ch avatar

    @rml hmm, I was going by the information on docs.scheme.org about which implementation support R7RS, but it sounds like this information might be slightly oversimplified. For example, they say Guile and Gambit are both R7RS compliant when you set compiler flags, the Loko website also claims to support R7RS "as a second language."

    For the most part, the R7RS parts of Guile that I have tested are working according to the spec, but it dose have issues with reloading code, it seems to not work consistently. If I ever figure out what is going on, I might file a bug report. Maybe MIT/GNU Scheme follows the spec more closely and this might be the source of my problems, perhaps I should build my library against MIT first, and then try to port it to Guile.

    I noticed that Akku has a the "https://akkuscm.org/packages/akku-r7rs/" library which makes other Schemes r7rs compliant, which is quite nice. I will try building my code with the Akku package manager as well, it sounds like a good idea. I will also check if Goran Weinholt has publishd any reports on R7RS compliance across compilers.

    ramin_hal9001, to fediverse
    @ramin_hal9001@emacs.ch avatar

    EDIT 2023-11-13:

    I am soft-deleting this post because of recent controversy around the Nivenly project all detailed here: https://twokitties.neocities.org/

    (Original post)

    Keeping bad actors away from the is a problem that cannot be solved with alone. However technology is one tool we can use to reduce the negative impact of bad actors as a first line of defense.

    For anyone interested using technology for keeping bad actors off of and the fedeiverse to the greatest extent possible, check out (at)Are0h(at)ubiqueros.com website: https://thebad.space/about . It has an block-list API which in my opinion should be incorporated into the Mastodon reference implementation to make it easier for instance maintainers and system operators to share and coordinate efforts. Since (as far as I can see, at the time of this writing) these features are NOT built-in to the current Mastodon reference implementation, which shows an unfortunate lack of concern and understanding by the maintainers of mastodon.social, we have to resort to these round-about means to keep malicious users from attacking our communities.

    Also related is the work of @oliphant who has created a similar blocklist: https://writer.oliphant.social/oliphant/the-oliphant-social-blocklist

    ramin_hal9001,
    @ramin_hal9001@emacs.ch avatar

    > "This aged like milk"

    @melanie how so?I still follow @Are0h but not all that closely, so I don't fully understand the recent controversy surrounding him. I tend to give him the benefit of the doubt though.

    ramin_hal9001,
    @ramin_hal9001@emacs.ch avatar

    @Are0h Thanks for replying! I am definitely still giving you the benefit of the doubt here.

    I understand you're a busy man, but if you happen to have read either of the links above and already posted a rebuttal to them on your blog or wherever else, and you can link me to them here in this thread, I would be happy to read your point of view, and boost them if you'd like. Here are the links I mentioned again:

    1. https://thegoodspace.neocities.org/
    2. https://twokitties.neocities.org/

    The second link https://twokitties.neocities.org/ explains definitions, and then gives a timeline of events starting in the section titled "Why was Nivenly's FSEP accused of transphobia?" They also explicitly state that their critique is of Nivenly and not of you specifically:

    > "We believe @Are0h has acted as a lightning rod for criticism due to his brash personality, and that his role must be de-emphasized. It is Nivenly that should have been criticized, rather than a lone public figure allowed to take the focus while Nivenly maintains radio silence. Nivenly should have taken over the conversation, de-escalated it, and addressed in good faith the concerns of the queer community. We wish to broaden the conversation to hold accountable those who find it convenient to scapegoat a single Black person for transphobia on Mastodon, and also convenient to scapegoat the queer community as responsible for anti-Black abuse on Mastodon."

    slice, to NixOS
    @slice@chitter.xyz avatar

    📝 an overview of nix in practice

    nix is weird, awesome, frustrating, and there's really nothing else quite like it. i wanted to try to explain it and show off specific scenarios where i thought it helped me personally

    https://slice.zone/blog/nix-in-practice/

    ramin_hal9001,
    @ramin_hal9001@emacs.ch avatar

    > "When I, like many other computer programmers, tell my friends who don’t write code that “it’s a miracle that modern technology even works”, Nix is one of those things that I’m referring to."

    @slice that is kind of funny because usually when I say "it's a miracle that modern technology even works," I am usually referring to things everything that does NOT use Nix, Guix.

    The big selling point of Nix and Guix (apart from the fast, painless roll-backs) is that you can verify that every single last ingredient, every single package dependency, that goes into a working piece of software forms a sort-of Merkle Tree of hashed references that include the entire code base of every dependency and every single intermediate build step. With this Merkle tree you can prove that bit-for-bit the software you built contains exactly the code that you requested in the derivation.

    This is what they call "reproducible builds." And in my mind, if a piece of software works without is build being fully reproducible, that is something of a miracle that it would work at all. Because without Nix or Guix, basically all your are doing is just linking libraries together and praying that the version numbers are an honest accounting of the ingredients to the build. The only time you actually ever verify the code that goes into the build is what it claims to be is when you download it and verify the accompanying MAC for the thing archive file downloaded. All other information about the build, like whatever build flags were set, none of that not recorded at all. It is not at all surprising to me, given this state of affairs, how often we hear the term, "but it works on my computer," in response to someone reporting that their software isn't working on some other computer.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • rosin
  • Durango
  • osvaldo12
  • khanakhh
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • magazineikmin
  • thenastyranch
  • cubers
  • Youngstown
  • slotface
  • kavyap
  • JUstTest
  • GTA5RPClips
  • anitta
  • tacticalgear
  • modclub
  • ethstaker
  • cisconetworking
  • InstantRegret
  • everett
  • provamag3
  • normalnudes
  • Leos
  • tester
  • lostlight
  • All magazines