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

ArneBab, (edited ) to random German
@ArneBab@rollenspiel.social avatar

define-typed: a static type syntax-rules macro for to create API contracts and help the JIT compiler create more optimized code:

https://www.draketo.de/software/guile-snippets#define-typed

Improved thanks to feedback from Vivien and Zelphir in the Guile User mailing list.

Just 26 lines to get argument and return value typing without changing Guile.

I love the flexibility of ❤️

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@ArneBab this is awesome! I want to explore this type system a bit myself!

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@ArneBab I have been playing around with monadic code in Guile myself lately, and I can see a fairly easy way to incorporate type checking into my system as well, and you have already given me some ideas here.

What is nice is that if you make use of record types as a kind of Functor, and all of your monadic code constructs functors, and the compiler does constant folding and dead code elimination passes, the optimizer would probably be able to tell right away any time you use a procedure wrapped in the Functor type that a "cond" or "case" expression will always evaluate only along a single branch. So it should be able to eliminate code branches that cannot pass type checking.

But I have more experimentation to do before I can confirm whether this is the case. Also, I don't think those optimizations can apply everywhere, only at top-level declarations. But I could be wrong, it might work in arbitrarily nested closures as well.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@ArneBab that is precisely what I intend to do. Thanks for that link to David Thompson's article, I don't think I had seen that one before.

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. #Fediverse

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 fediverse
@ramin_hal9001@emacs.ch avatar

PC world has an article here about whether you can use a VPN to circumvent the .

No. Just, no. Not , nor any other technology is a solution, because the problem is much deeper than that. The US banning TikTok is just the beginning, they will simply continue expanding of any content the government finds objectionable. We may soon find governments like the US passing legislation that running an server of any kind is illegal "terrorist activity" before long, and all NATO countries will follow suit (they must, or else risk losing NATO membership).

And of course the stated reason for the US blocking whole portions of the Internet is for "cypersecurity" reasons. Anyone with half a brain knows the real reason is to try to prevent sharing knowledge across borders, because that is the real threat to the politicians and their bosses.

It is really no different than what countries like China does with their Great Firewall, or what Iran does whitelisting only certain blocks of the Internet that exists outside of their borders, also for "cybersecurity" reasons. Of course the US government will continue to cite censorship of free speech as a reason that countries like China or Iran are inherently evil. This deranged political double-speak is the norm nowadays, as "antisemitism" is used as a justification to arrest Jewish people who protest war at their universities, but I digress.

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.

louis, to linuxmint
@louis@emacs.ch avatar

I jumped ship and hopped over to the Linux Mint crowd. I used Pop_OS for ~3 months and it was an overall good experience on my ThinkPad X1 Gen 8.

But I always liked the Cinnamon desktop as I have used Mint for over a year before. And I didn't want to be part of the Rust-based re-invented desktop experience (COSMIC) driven by a company. Ultimately I believe that Linux is and should continue to be a community effort. Also, there were some minor annoyances (like the Pop_OS store eating up 1.2 GB of RAM all the time even when it is not running, an issue System76 is aware of for quite a while). And also, Snap.

If feels good to be back to a trusted distro whose maintainers generally make the right decisions (i.e. removing Snap).

Let's see how long it will last ;-)

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

@louis I am definitely going to switch from Ubuntu to another distro pretty soon, and I have been torn between standard Debian with Xfce, or Mint with Cinnamon. I think I will go with Xfce because they are mostly keeping up with the latest Gtk. They long ago moved to Gtk+ v3 and are gradually transitioning to Gtk4, probably to prepare for the larger transition to Wayland.

But Cinnamon has forked Gtk+ v2 into its own widget toolkit now, so it is kind of its own platform based on GLib and GObject, and it seems to be quite stable and over all a good user experience. It would be nice to have some of my apps programmed to work with either Cinnamon or Xfce. We will see if they will be able to port it to Wayland without the help of upstream Gtk.

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.

DrALJONES, to Israel
@DrALJONES@mastodon.social avatar

Report

As many as 300 protesters were arrested in Brooklyn on Tuesday night, where thousands of mostly Jewish New Yorkers gathered for a “Seder in the Streets” to stop arming Israel.

The demonstration was held one block away from the home of Chuck Schumer & came just hours before the Senate overwhelmingly approved $14 billion in arms funding to Israel.

https://www.democracynow.org/2024/4/24/schumer_seder

..

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "As many as 300 protesters were arrested in Brooklyn on Tuesday night, where thousands of mostly Jewish New Yorkers gathered"

@DrALJONES (emphasis my own), and these are the people Joe Biden is calling "antisemitic" when he says shit like:

> "I condemn the antisemitic protests. That's why I have set up a program to deal with that..."

This delusional political double-speak is just getting more and more absurd by the day, I just can't handle this, my reflexive face-palmming is starting to hurt.

sachac, to random
@sachac@emacs.ch avatar

Starting to learn 2x2 blindfolded following J Perm's tutorial. Day 2: I'm slowly getting the hang of moving pieces and moving them back during a sighted solve and I can sometimes close my eyes for one or two pieces in a row. Let's see if I can get the hang of it and if I can keep my brain on-task that long...

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@sachac I know there must be some mnemonic, some "words" you can say to yourself, for the moves of the algorithms that can help you remember how to do them forward and backward. But personally, I have not learned of any mnemonic that I can remember very easily.

Also, I am really bad at recognizing patterns on the cube that would let me predict which algorithm to use in a given situation. I have to apply the procedure and see if it gives me the result. I can't imagine trying to do it blindfolded.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "For pattern recognition, the tutorials tell you what colours to look for (ex: look for two corners of the same colour on one of the sides, put them in the back, then do this alg)."

@sachac yeah, I guess my problem is that I really only know 3 algorithms for the 3-cube, which is enough to solve it, but I should probably learn more if I want to solve it faster. I know all algorithms are basically "merging" of those basic 3 algorithms, but it limits my ability to recognize patterns and determine which algorithm to apply.

DrALJONES, (edited ) to random
@DrALJONES@mastodon.social avatar

For those enquiring:

A partial list of US client states & their aquisition dates ⬇️

Note Israel, UK, France, Germany, Canada, Japan, Australia, etc. not just the old banana republics.
(some end dates might be missing, eg, Iran, 1979)

Source
https://faculty.washington.edu/majeski/isa03.pap.pdf

..

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@DrALJONES next to "Iran" it should say "ends 1979".

ZacBelado, to firefox
@ZacBelado@hachyderm.io avatar

Giving @librewolf a try. I like the idea of a browser specifically hardened against browser fingerprinting and tracking. Runs all of my existing Firefox plugins with no problems

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@baritone_edge Some of the "hardening" that @ZacBelado is talking about is making sure not to report any information about plugins, installed fonts, or other things, it produces a false report when this information is requested. Also @Apollo2323 LibreWolf forges its signature, making itself appear to be like that of Chrome running on Windows. Occasionally while I use it, I see websites conform themselves to this signature, e.g. offering me Windows versions of apps to download.

I have also heard LibreWolf praised by differently-abled people for its good accessibility features as well.

hanspeter, to random
@hanspeter@emacs.ch avatar

Hmm, how can one write intelligibly on the (web) walls for all to see AND at the same time prevent the 'datavores' (@thegibson) from devouring it and getting stronger by it???
(referring to chatGPT and all..)

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@louis @hanspeter @thegibson I have been meaning to create a procedural nonsense generator from something like GPT2 or some LLM that is small enough to run on a laptop. Then I am going to flood my online content with nonsense at a 1/100 signal/noise ratio and let the LLM scrapers have at it. Of course I'll make it easy for a human to filter out, by placing the noise content in hidden <div>s, or by removing it with a bit of JavaScript, or coloring it the same as the background.

Gopher is a good idea too, I could put non-obfuscated versions of my documents there.

louis, to emacs
@louis@emacs.ch avatar

Haven't used VS Code a single time for over two months now. All Emacs now. Since I switched to LSP mode, Makefiles and Dap.

I think it's time to press the delete button now with confidence.

Congratulations appreciated 🙂

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@louis congratulations! I tried VSCode a few years ago, and honestly it was pretty good. But I won't use it unless you are paying me good money to use it, and besides Emacs has me covered on just about everything.

rml, to emacs
@rml@functional.cafe avatar

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

louis, to random
@louis@emacs.ch avatar

Or, we could just build our own Mastodon client with Common Lisp.

Took me less time to build this with than desparately trying to fetch that data in the Web UI.

Who knows what this will morph into. :p

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "Or, we could just build our own Mastodon client with Common Lisp."

@louis this would be my solution. Although I would go with Guile Scheme instead of Common Lisp, because of Guix packaging. And I would make a server too, and make it more like Kbin where you can do both Mastodon and Lemmy like posing.

civodul, to random
@civodul@toot.aquilenet.fr avatar

In Nixpkgs, the ‘shepherd’ package is not what I’d expect.
https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/sh/shepherd/package.nix

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@civodul "shepherd" in NixOS is a little dissapointing:

"A utility for applying code changes across many repositories"

@Mehrad that's nice, if there were a copyright battle, GNU Shepherd would win.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@Mehrad @civodul it is true, Guix will need a lot more engineering resources (full-time, paid software developers) before it could become useful. It especially lacks hardware support unless you go out of your way to setup non-free software package channels.

For the most part, if you stick to only using the main package channels, and don't do anything fancy for developing your own apps like changing package dependencies or build options, everything just works. This at least gives you access to instant roll-backs, and things like GNU Shepherd.

I prefer to use Guix as a package manager, in particular, I will use Guix as an alternative to FlatPak, Snap, and AppImage. It co-exists perfectly with any Linux distro's native package manager. So I let my Linux distro handle my operating system and desktop environment, and I install my favorite apps with Guix.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@Mehrad @civodul I think if you go to the Guix hompage, there is a "Help" menu, and there are links there to a Guix reference card, the Guix cookbook, and the Guix manual. So this serves as a single entry point, does it not?

Part of the problem is that Guix can be used as an Linux distro and a package manager, and the package manager is highly configurable with various channels. So your "entry point" to Guix might be different from other people, depending on how you want to use it. I think the Guix homepage does a pretty good job of providing resources for general purpose use cases. It seems to me that if you are using the HPC channel, you are not in the group of people who use Guix for general purposes.

> "For example as one of the most confusing parts: there is https://packages.guix.gnu.org/ and https://hpc.guix.info/browse to search for packages, (why?)"

The reason why is because there are multiple channels for packages. I recommend you use Guix command line tools to search for packages, rather than using the websites, because the Guix command line will search all the channels that you have access to, rather than you needing to know which channel provides which package and searching the channel website.

guix package --search='name-of-thing*'

> "Guix extremely relies on info pages. But that is not well known to 99.9% of world population."

For what it's worth, I really love the Info manual pages, it is very easy to find all the information I am looking for in this documentation, as long as you use Emacs (which I do) or the stand-alone "info" CLI utility. All you need to do is use the search features: index search (press "i" and type your query with tab completion) and menu search (type "m" and type your query with tab completion). The "index" is the index of all keywords in the manual, it is good to use if you do not yet know what you are looking for. The "menu" is a list of all documentation subsection titles, it is good to use if you already know what you are looking for.

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.

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

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

rml, to random
@rml@functional.cafe avatar

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

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

> "2023: Guile , 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.

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

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