@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.

krusynth, to random
@krusynth@mastodon.publicinterest.town avatar

Happy 40th Anniversary of the day the Breakfast Club had their detention.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@msquebanh @krusynth "The Breakfast Clib" movie still feels fairly modern, it is kind of hard for me to beileve that the kids in the film (if they are the same age as their fictional characters) would be 57 or 58 years old now.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "Who was your fave character/actor in it?"

@msquebanh

> "i think i could relate to the goth girl (Ally Sheedy), but tbh it's been so long, i would have to see the movie again."

@blogdiva

> "that was who I related to most - I loved Ally Sheedy in that role."

@msquebanh Oh jeez, I still have a crush on Ally Sheedy's character in Breakfast Club, she is so beautiful. I don't know if she was supposed to be goth per say, but they referred to her as "a basket case" in the letter to the principle at the end of the film, so maybe? But yeah, I related mostly to Ally Sheedy's character, and to a lesser degree, the nerdy kid who admitted to suicidal thoughts.

@krusynth

noondlyt, to fediverse
@noondlyt@mastodon.social avatar

You know what's nice about here...knowing I can criticize and call out any corporation, politician, or wealth hoarder without being suppressed, hidden, etc at the whim of advertisers or megalomaniacs.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@noondlyt I like the fact that I can learn about transgender issues and use the word "cisgender" without having my post flagged or my account suspended...

unlike at that other site...

ramin_hal9001, to linux
@ramin_hal9001@emacs.ch avatar

Guix maintainers Janneke Nieuwenhuizen @janneke and Ludovic Courtès @civodul have announced just today that their "seed" C compiler "Mes" is now in production in Guix OS. Mes can, after several boostraping stages eventually compile GCC which in turn compiles Linux, Guile, and Guix. The bootstrap program (as I understand it) is written in Guile Scheme, and compiles to a 357 byte binary. Now when you do guix pull you will see that the entirety of the core operating system (some 22,000 expressions) all depend on that single 357-byte bootstrap program. The idea is to eliminate the footprint of trusted binaries that build the software for the OS and compiler toolchain -- the famous "Trusting Trust" problem outlined by Ken Thompson which he presented while receiving his Turing Award. Thanks to their hard work, we now have an operating system for which every stage of the build can be verified by a human. https://guix.gnu.org/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/

Nix OS people do not need to feel left out, a new issue on the Nix OS GitHub page has announced that they will begin a similar project. https://github.com/NixOS/nixpkgs/pull/227914

ramin_hal9001, to random
@ramin_hal9001@emacs.ch avatar

For anyone interested in reading Abelson and Sussman's, "The Structure and Interpretation of Computer Programs" (SICP) while doing the exercises in , you can install the whole textbook into your Emacs Info documentation pages by intalling the "sicp" package from the MELPA Emacs package repository.

ramin_hal9001, to reddit
@ramin_hal9001@emacs.ch avatar

Louis Rossman talks about Reddit's apparent refusal to comply with data privacy laws

This video has probably crossed your feed a few times already, but I thought I would share anyway. Louis shows this YouTube video by Thomas Hunter II called "Reddit Violates CCPA in which he shows officially requesting Reddit delete his data, and when they did not comply, he hand-deleted every single post he had ever made. Later on, he saw his posts still existed. Louis believes Reddit might be only in compliance with the CCPA law in letter, not in spirit ("malicious compliance" he calls it).

Louis also reminds us that the CEO of Reddit, Steve Huffman, once altered comments someone had made that were critical of him, without logging those alterations (according to this article from The Verge). Huffman seems to think he is entitled to all the data and content you created for Reddit, so much so that he is willing to risk being punished for violating the law.

I have been slowly but surely deleting my posts off of Reddit. First I make sure to edit the comment and replace it with the text "(DELETED)", then wait for a while for the changes to be registered in their databases. After a short time, I delete the post that was edited. It will probably take a year or so to get through all of my comments, especially since I have been taking the trouble to save each one on my computer before I delete it.

ramin_hal9001, to random
@ramin_hal9001@emacs.ch avatar

Help with potential disastrous data loss?

I have a externally powered SATA backplane with 4 drive bays that attaches 3 hard disks, and 1 SSD (used as a cache) to my Ubuntu Linux computer via USB. The operating system sees each device as an external USB device. I have created a RAID-Z pool with all of the devices attached to this backplane.

This morning I was running a "scrub" when a rolling blackout occurred. When I rebooted, I got this message:

``

root@ubuntusys:/# zpool import
   pool: aquifer
     id: 5891443854XXXXXXXXX
  state: FAULTED
 status: The pool metadata is corrupted.
 action: The pool cannot be imported due to damaged devices or data.
        The pool may be active on another system, but can be imported using
        the '-f' flag.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-72
 config:

        aquifer      FAULTED  corrupted data
          raidz1-0   ONLINE
            sdb      ONLINE
            sdc      ONLINE
            sdd      ONLINE

I have already tried zpool import -f -Fn, and it immediately comes back with the same error message.

According to ZFS-8000-72, this is a totally fatal error with no way to recover without some other backup (I have no other backup).

It is pretty incredible to me that a single power failure can completely nuke a previously healthy RAID-Z system. I have to be missing something here.

Is there really nothing I can do?

daviwil, to random
@daviwil@fosstodon.org avatar

Rust, Go, or Zig?

If you have an opinion (or two, or three), I want to hear it.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@daviwil I would avoid Go simply because it is a language "blessed" by Google, which is a company I would never want to depend on for any reason.

Rust is great for its fantastic type system, and seems to have gained a ton of momentum in the hearts and minds of programmers lately, but the Rust community seems to make no attempt to make Rust binary compatible with other programming languages. The language is too different from C to be able to easily interface other languages (scripting languages) to it without automated foreign function interface generators to generate Rust code to which other external libraries can interface.

Zig is great, but not quite as popular as Rust, and does not have a really nice type system. On the other hand, it does produce very efficient binary code and is fully compatible with C libraries, so you can easily interface languages like Guile or Lua to Zig libraries without having to generate any foreign function interface code on the Zig side. And I am told that it has some pretty nice, modern tooling that helps debugging a lot to make up for the fact that it does not have Rust's type system that can catch such errors before compilation completes. Honestly, Zig just seems to be a much more useful language than Rust. But I would use Zig as a language target for Scheme, sort of like how Gambit or Chicken generates C.

If I were forced to choose between Rust and Zig, I would go with Rust just so that I could get to know its borrow checking type system, but my end game would be try to emulate that borrow checking in a Scheme compiler like PreScheme.

ramin_hal9001, to scheme
@ramin_hal9001@emacs.ch avatar

Hey, all you Scheme programmers...

Do you frequently visit srfi.schemers.org to see if there is already an commonly used implementation of a particular algorithm or code pattern? Would you like to be able to search these documents offline?

Well all you have to do is download this file: https://srfi.schemers.org/srfi.tgz ! Now you can search through it with grep!

I wish more websites with lots of static content provided a public link to a tar archive of all of their content. I do that for my own blog by the way. Someone should write an RFC about that.

ramin_hal9001, to random
@ramin_hal9001@emacs.ch avatar

I thought it was worth sharing the work of @amszmidt here for anyone not familiar (which I wasn't until a chance encounter with him here on Mastodon!) He has been resurrecting the MIT "CADR" Lisp Machine, salvaging old software, getting it working in emulation, and even recreating the circuitry of the computer in HDL so it can be programmed onto an FPGA.

This is some truly amazing reverse engineering and historical preservation work. Definitely worth checking out!

LeftistLawyer, to random

Precisely.

"I really do hope that in the future kids in school will learn about the Holocaust and German nationalism together with Jewish nationalism and zionism and Israel's ethnic cleansing campaigns. The two are the ultimate dialectical event, bound together for all time. It’s depressing. But it is what it is. You can’t ignore it."
-- Yasha Levine

https://yasha.substack.com/p/the-dialectics-of-nationalism

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "When we abhor, we become abhorrent."

@LeftistLawyer isn't it OK to abhor fascism, racism, genocide?

ramin_hal9001, to Lisp
@ramin_hal9001@emacs.ch avatar

New PeerTub channel

So I asked Will Byrd if I could re-upload his YouTube videos to PeerTube and he said it was OK, so I created a PeerTube channel called "Unofficial William E. Byrd" and am going to upload as many of the videos he makes to this channel that I can. (We'll see how diligent I can be about that.)

Will recently decided to just create 2 or 3 videos every day for the next year, he is hoping to create 1024 videos this year.

ramin_hal9001, to opengl
@ramin_hal9001@emacs.ch avatar

Question:

Does anyone know of an APL compiler or transpiler that can generated Vulkan or OpenGL shader scripts? (Free/libre would be most appreciated.) I think Aaron Hsu might have engineered something like this at some point, but I can't find anything about it at all right now, probably thanks to our amazing new "AI-enhanced" search engines.

ramin_hal9001, to linux
@ramin_hal9001@emacs.ch avatar

I just switched to Linux Mint

Wow! This is so much nicer than Ubuntu! The default theming, appearance, color schemes, icon themes, all of it is much more beautiful. And their "Welcome to Mint" screen that you get on the first boot-up is really helpful.

ramin_hal9001, to ubuntu
@ramin_hal9001@emacs.ch avatar

ItsFoss reporting: disappointed with Ubuntu 24.04

The problem: the Ubuntu app store will no longer install ".deb" files, only Snaps. If you are a Linux "power user", this isn't much of an issue, Ubuntu is still based on Debian package management after all, and you can still use the "apt-get" command in the CLI. And you can still install FlatPaks.

But as Abhi points out, this could cause problems for people looking for an alternative to Windows or iOS. They are now pretty strongly locked-in to the Snap format and the Ubuntu's official app store unless they bother to learn about and install alternatives.

I think I am going to start recommending Fedora or Mint as my best Linux distro for beginners from now on.

ramin_hal9001, to fediverse
@ramin_hal9001@emacs.ch avatar

Bonfire: a general server with pluggable front-end modules

...and it is programmed in Elixer!!! This typed programming language that runs on the Erlang platform automatically gives it a powerful advantage over more mainstream programming languages like Go or Ruby, through type safety and a language runtime that is built from the ground-up to be massively parallelizable and upward scalable, and easy to debug and patch running systems without downtime.

But from an end-user perspective, this is a social network framework in which you can install whatever front-end features you want through pluggable modules. If you want a Mastodon-like module, install that, if you want a Lemmy-like, or a Pixelfed-like, or a Frendica-like, you can theoretically just plug those in as well. From administrative tools to search and post indexing to social graph analysis, there are as many as 75 currently listed plug-ins. For anyone interested in technology, this is definitely a project to watch, and possibly even to which to contribute.

See also this article by Sean Tilly.

Radical_EgoCom, to random
@Radical_EgoCom@mastodon.social avatar

The Capitalist Cycle

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "In American mythology, people are rich because of "hard work" yet nobody can explain why those who do all the actual work have no money."

@bhasic @Radical_EgoCom the scripted reply to this is "some people work smarter, not harder." But then you have to ask, is a CEO really 1000 times smarter than one of his employees, or is it just that how "smart" or "intelligent" a person is is defined by the amount of money they have?

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

> "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.

seachanger, (edited ) to random
@seachanger@alaskan.social avatar

For every $1000 you purchase at a small business...

pay by credit card: about $30 to credit card corporation, $970 to small biz

pay by cash or paper check: $1000 to small biz

pay by e-check: about $10 to banks, $990 to small biz

most small businesses have 10-30% profit margin, so a 3% credit card fee may actually be 1/10 -1/3 of their profit on your transaction

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@seachanger but that is just the free market, these don't count as taxes, so its totally OK. (sarcasm)

Seriously, the "small government, less taxes" people are always complaining about the wrong thing.

freakazoid, to random
@freakazoid@retro.social avatar

Until the kids started using the Xbox again I had no idea how many games these days are networked and "multiplayer" except that the presence of other players seems to add very little value to the game, because even though the game might show them, you don't actually interact with them in any way. The networked nature of the game doesn't change the gameplay at all except for leaderboards or whatever. It's like in The Sims where other Sims from the same install (perhaps belonging to other players) would occasionally interact with yours.

Kids who grow up loving these games aren't going to be able to play them later, because many of them won't work at all when they're not networked even though being networked didn't really matter to the game, all in the name of "engagement" or encouraging in-game purchases or whatever. And that's before even considering DRM.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@freakazoid I got my kids on Minetest (the free Minecraft) from a young age. They play minecraft now, but they will always be ablt to go back to Minetest.

rml, to random

Under communism will be the mandatory first programming language for all aspiring programmers.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "Legend has it that intermittently flashes the word across the screen as a subliminal "fuck you" to the man. I think its working."

@rml "git grep" wont work as-is because it is encoded in the source code with ROT-13, so you would have to grep for the ROT-13 encoded string for "COMMUNISM" in order to find it. They aren't stupid enough to leave a subliminal clue like that as plain text right there in the source code.

LBH UNIR ABGUVAT GB YBFR OHG LBHE PUNVAF

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "2023: Guile #scheme, Guix

> 2024: Stalin scheme, Red Star OS"

@rml ah, the compiler that single-handedly defeated the Nazis during the second world war. I get the sense that we again have a need nowadays for some good Nazi-smashing technology.

I have never tried Stalin, but I think it is R5RS only, and that would make it a bit difficult to run on the majority of my code which is R7RS.

rml, to emacs

about every two years I ditch my init.el and build back up from scratch, and every time it feels great. I'm finally breaking off from org-roam which, for all the good its done me, has become a thorn in my side due to the centralized store. about to give a try, which I've been interested in for a while now.

learning via @ramin_hal9001's presentation a couple years ago at conf
https://emacsconf.org/2022/talks/rolodex/

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@dekkzz76 Hyperbole creates a set of rules for identifying links which are only activated when you press the hyperlink activate key chord "M-RET" key. Of course, Emacs can already assign hyperlink properties to arbitrary text, but Hyperbole provides two advantages over an ordinary hyperlink:

  1. Since the Hyperlink rules are only applied on the "activate" key chord, you can apply very sophisticated rules to just the text under the cursor without having to parse the whole buffer and assign hyperlink properties to text, which would be very slow. This makes the Hyperbole hyperlinking rules much more versatile.
  2. The key chord is enabled as a global minor mode, so the hyperlink rules work in any buffer, regardless of what mode the buffer may be in. It is basically a markdown for links that can be included anywhere. The advantage of markdown is of course that it is human-readable, even if your editor does not recognize it as markdown. So you can include Hyperbole links in the comments of source code, in e-mail messages, or as the output of shell scripts, and the hyperlinks all just work (as long as you are in Emacs).

@rml

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "If I'm understanding links/buttons correctly, it would enable me to create commands from text (and at any point I want to do so)?"

@zyd yes, there are two button markups for calling arbitrary Emacs Lisp commands:

  • Curly bracket-delimited key chords will run whatever command is bound to those key chords, for example {C-20 M-g M-g} will call "goto-line" with 20 as an argument. (Make sure the cursor is placed somewhere within the brackets, not on or before the brackets).

  • Angle bracket notation executes arbitrary Emacs Lisp code within the brackets. (It is safe because you can see what code will be executed.) For example:

    <mark-whole-buffer>

    <eval (save-excursion (goto-char (point-max)) (insert "Hello, world!n"))>

And of course you can define your own functions and commands with descriptive names:

<my/git-fetch-and-pull-here>

@dekkzz76 @rml

pmidden, to haskell
@pmidden@fosstodon.org avatar

Structured logging in without unnecessary dependencies? Apparently not a thing. :/

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@pmidden I am not sure what you considere to be "unnecessary dependencies" (I supposed you wouldn't want a web server like Wai), but would log-base get the job done for you?

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