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

daviwil, to fediverse
@daviwil@fosstodon.org avatar

Any suggestions for good PeerTube (@peertube) instances that feature programming/computing content? I'd like to republish System Crafters and Flux Harmonic videos on a Fedi-friendly site.

Bonus points if the instance has live streaming enabled!

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@daviwil @peertube I have been pretty happy with https://diode.zone.

abcdw, to emacs
@abcdw@fosstodon.org avatar
ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@abcdw If only Emacs could render it this nicely.

BrodieOnLinux, (edited ) to linux
@BrodieOnLinux@linuxrocks.online avatar

If on a major update your desktop (GNOME, Plasma, Cinnamon, i3, etc) opened a popup asking you to donate, it only appeared once and if you don't ever want to see it there was an option to fully disable it, would you be opposed to this?

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@popey @BrodieOnLinux I would be opposed to pop-ups asking for donations after every update, even if you could disable permanently. If it were only the desktop environment asking you, then fine. But if this became common practice, every app you install on Linux might start asking for donations on every update, and then you would have to click "never ask again" on quite a lot of app donation request dialog boxes indeed.

(Also, the question was confusing. I almost clicked "no" as in I don't want this, but I caught myself and clicked "yes, I would be opposed to this." Lesson learned for how to phrase questions for online polls: don't phrase questions in the negative and ask "yes" or "no", ask "opposed" or "not opposed" instead.)

ramin_hal9001, to fediverse
@ramin_hal9001@emacs.ch avatar

David Pierce of

It is nice he thinks ActivityPub is the Internet of the future, calling it "the post-platform" world in which journalists, individuals, organizations all run their own ActivityPub services rather than create accounts on platforms like Ex-Twitter or Facebook. But his perspective is still limited to a world where all applications run on the HTTP protocol with DNS identifying services. He talks about the "Post On (your) Own (host), Syndicate Everywhere" (POSSE) model, and how organizations and individuals can deploy Mastodon instances on their own servers. They also interviewed @pluralistic (Cory Doctorow) which was nice.

They really should have interviewed the @spritelyinst folks to see the real Internet of the future, in which HTTP is replaced with the Object Capability Network (OCapN). But to be fair, this tech is still pretty new and maybe not yet to the point where tech journalists at The Verge would be interested in doing articles about it.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@spritelyinst @interpeer @pluralistic

> "Talking to folks like @interpeer made me realise that an Internet without DNS is possible. Something that didn't cross my mind."

@RyunoKi thanks for pointing me to @interpeer . I am very interested in all of these up-and-coming technologies.

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

Dear folks, believe it or not, it wasn’t until today that I looked at ‘project.el’!

Very nice, though I’m disappointed that it wouldn’t pick the ‘vc’ backend when it should, and that searching isn’t as good as with Counsel + Ivy.

Perhaps I’m missing tips and tricks?

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@ArneBab @daviwil @pkal

> "believe it or not, it wasn’t until today that I looked at ‘project.el’"

@civodul "project.el" is a relatively new addition to Emacs.

I have been on-and-off working on a thing that makes use of the "project.el" functionality. I call it dir-local-env.el which is supposed to work like direnv, but it is written in Emacs Lisp. It is not complete yet, my hope is that soon it will be able to detect if there is a .guix-profile directory in a project, run a command such as "guix shell -- printenv", capture the output, and automatically set the environment variables that Emacs uses to launch processes. So if you ever run a command such as "M-x compile" from within a file buffer that is part of your project directory, it will automatically set the correct environment variables for that project as they are set by the Guix profile.

The code is on my GitHub page. Again, it is not complete yet, but I thought I would mention it. It does allow you to define project-local variables so far, which operates using the same mechanism as dir-local variables but without the need for a ".dir-locals.el" file. When it is finished, I hope you can run the Compile command in one buffer and then and another, each in its own project, and each command invocation gets its own unique environment defined by the Guix profile.

nixCraft, to linux
@nixCraft@mastodon.social avatar

Fish (as in shell) is intentionally not POSIX-compatible 😉 #linux #unix #fish #opensource

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@nixCraft if you don't mind a non-POSIX compliant shell, I recommend using Emacs EShell.

I never understood why anyone would prefer Fish when it is restricted to an Ncurses user interface, and you have to program it in this really obscure non-Lisp programming language. Emacs EShell is superior to Fish in every conceivable way.

ramin_hal9001, to random
@ramin_hal9001@emacs.ch avatar

@cwebber Quick question: do you know of any ActivityPub servers written in Guile? And I guess more importantly: should there be one? Or do you think it would be better to start again from scratch, a kind of ActivityPub 2.0, with OCapN and Goblins as a foundation? Is this part of Spritely's roadmap for Goblins?

louis, to random
@louis@emacs.ch avatar

Wow! I just realized that it is possible to post to a Lemmy group from your existing Mastodon account:

https://vijayprema.com/using-lemmy-from-my-existing-mastodon/

Summary:
First line of post is the title
A link or image will be attached to the post
Mention the group in your post on the last line in the usual Mastodon way, i.e. (at)lisp{at)lemmy.ml

When you delete your post, it will also disappear from Lemmy.

This way, you don't need a separate account on Lemmy and can use your favourite Mastodon client: Emacs.

@ramin_hal9001

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@louis wow, thanks for letting me know! I didn't know this either!

I am just beginning to understand that ActivityPub is really a model for a wide variety of social networks, and Mastodon, Lemmy, Kbin, Calckey/Firefish, Pleroma, and PeerTube are all just different "views" of this model.

So far, however, Mastodon has provided the nicest view of them all. I like Lemmy and PeerTube just as well, and Kbin shows a lot of potential, but I think the Mastodon user experience is generally the most sociable one.

I wish it were possible (maybe it is) to run a general ActivityPub service and run multiple front-ends to the same service, so have PeerTube, Mastodon, Lemmy, Kbin, Firefish, and Pleroma front-ends all using the same ActivityPub back end with the same user accounts, the same posting database, the same commenting format, and so on.

daviwil, to emacs
@daviwil@fosstodon.org avatar

🔴 Today on Live, we'll take a closer look at GNU Hyperbole, a package for Emacs that aims to streamline your Emacs workflow with unique features like smart keys, hypertext-style navigation, a note-taking outliner, and more.

Let's see if this package is a good fit for your workflow!

Join us on YouTube or Twitch:

🕐 in your time zone: https://time.is/compare/1800_in_Athens

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@daviwil I wrote a basic overview of Hyperbole on my blog if you are interested.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@rasur @daviwil my talk at EmacsConf 2022 was about how to use Hyperbole HyRolo as a Zettelkasten.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@daviwil @rasur

> "That's really interesting! I wish I had watched this before the stream"

Thanks! I enjoyed making that presentation, although it was quite stressful getting the last of the video editing in during the crunch time.

Hey, you can always give Hyperbole another go on another stream — I am really curious what was causing so many of those links in the demo files to fail the way they did. I am guessing it might have been Evil-mode, but I am not sure. But what I am sure of is that if you invited Bob Weiner to participate in an interview he would be more than happy to indulge you. I talk with him on video chat every so often, he is a pretty good guy.

Anyway, it was a good stream, thanks for doing it!

ericsfraga, to emacs
@ericsfraga@fediscience.org avatar

This is so true:

"Only a tiny part of written text is printed on paper, so the What You See is What You Get (WYSIWYG) approach does not make much sense in the digital age. Plain text uses the What You See Is What You Mean (WYSIWYM) approach. "

from https://lucidmanager.org/productivity/why-use-emacs/

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

@publicvoit @ericsfraga @hajovonta

@lproven One final note: you misuse the word "mansplaining." You and Karl Voit are on equal footing, so neither of you can "mansplain" to the other.

And yes, I realize the irony of me explaining this to you, but I must please insist that you not misuse the word in a way that erases the feminist nuances. Only if you were at a disadvantage due to systemic bias and oppression while having more expertise than Karl, and Karl were assuming your ignorance because of his personal bias against your race/gender/orientation/etc., could he be said to be "mansplaining." The feminist political context is essential to the meaning of the word.

linuxiac, to linux
@linuxiac@mastodon.social avatar

GNOME Project’s Unexpected CEO Choice: A Bold Move or Misstep?
https://linuxiac.com/gnome-projects-unexpected-ceo-choice/

Holly Million, new to software, now leads GNOME. It is a curious choice for one of the biggest open-source projects, wouldn’t you say?

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@linuxiac I know not how Gnome governance works or how they select their CEO, but if I had to guess, it probably has more to do with fundraising skills, and possibly also wanting the software project to have inroads toward certain communities with a potential clientelle who would be interested in using Gnome and backing it financially.

stdevel, to emacs German
@stdevel@chaos.social avatar

🤫

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@karlnepomuk @stdevel is it true that Emacs with JIT always depends on the full GCC toolchain, and not just libgccjit? Or has Emacs simply not been packaged correctly in this software repo for this Linux distro?

ramin_hal9001, to scheme
@ramin_hal9001@emacs.ch avatar

Why Program in C+Python when you can program in Zig+Scheme?

Another bit of gold from by Pjotr Prins of the University of Tennessee. The actual title of the talk is "Why code in Python+C if you can code in Lisp+Zig?" but the "Lisp" in this case is actually Guile Scheme. I didn't know this, but Zig uses the C ABI so it binds to any language that can do FFI bindings to C, including most Scheme and Common Lisp implementations. But why don't I just post the abstract here:

> "Most bioinformatics software today is written in Python and for performance C is used. Lisp has been around for over half a century and here I don’t have to tell how or why programming Lisp is great. I will talk about Zig as a minimalistic new language that is unapologetically focused on performance, tellingly with a blazingly fast compiler. It is advertised as a replacement for Thompson, Ritchie, and Kernighan’s C, but it may even replace C++ in places. Zig uses the C-ABI and does not do garbage collection, so it is ideal for binding against other languages. In this talk I will present combining GNU Guile Lisp with Zig. I’ll argue that everyone needs two languages: one for quick coding and one for performance. With Guile and Zig you get both at the same time and you won’t have to fight the Rust borrow checker either."

ramin_hal9001, to FunctionalProgramming
@ramin_hal9001@emacs.ch avatar

Please watch the ICFP 2023 Keynote "Functional programming for the planet," by Anil Madhavapeddy

He talks about how he takes modern functional programing techniques from all walks, so not just monads, but reproducible builds (e.g. Nix, although Nix is not yet used), and building these very complex data processing pipelines. He talks about how at Cambridge he has to often sit down with scientists to discuss with them how they gather and process data and produce visualizations.

He then takes the code they have written, often in languages like R and Python, and translates the stateless, functional essence of it into OCaml, and then takes the references to the datasets (often hard-coded URLs) and turns them into proper data sources. The OCaml is annotated with symbols that allow for automatic generation of GUIs.

The data sources are incredibly diverse. Many of them come from scientific experiments that have been ongoing for decades, many of the sources come from multiple generations of measuring devices, where older devices give lower-accuracy information and newer sources give higher accuracy. He also talks about the importance of security for some data sources, e.g. the location of critically endangered animals that would almost certainly be poached if photographs of these animals leaked to the public, what with how easy it is to localize nowadays.

He also inspires computer scientists to use their talents to start talking with activists, and possibly even policy makers, directly to learn what their needs are and see how you can apply yout own skills.

WIlliam Byrd was in the audience and during the Q&A session informed the audience of a workshop related to this kind of intersection of technology and activism at the DECLMed workshop ("Declarative Programming for Biology and Medicine") colocated with ICFP2023, so please check that out as well.

Read the abstract for this talk at the ICFP 2023 home page.

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

Congratulations to @alex for being reported on here to the admins (which includes Alex), for speaking up against the genocide of Palestinians. Top notch 👍

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@timnitGebru @alex

Palestine is definitely the litmus test of our time, and seeing many people's behavior has clarified so much for me.

Very true. I was just learning about pre-world-war-2 Japan and how the liberals so seamlessly shifted from apparently left-leaning sympathies to outwardly fascist sympathies. We see this same transition happen all the time among the neoliberals of the US political class, especially with regard to the human rights of Palestinians.

Mastodon is not immune. I worry that with enough pressure, the DAIR-Community instance could be de-federated from the majority of the Mastodon community, especially if it ends up on a block list. Of course if that happens, I bet 9 to 1 odds the stated reason will be "violates code of conduct with respect to violence and hate speach," the implication being that you are all terrorists sympathizers.

I just hope that you are not targeted by the well-funded Israeli bot army who polices the Internet for people like you. It seems like you might have already caught their attention.

ramin_hal9001, to gardening
@ramin_hal9001@emacs.ch avatar

: looking for a Mastodon instance

...to recommend someone in my family who is into gardening, sustainable farming, forest farming, rewilding, permaculture, native plants — and also photography. Geographically, North America anywhere proximate to the eastern US/Canadian border would be preferable, so Minneapolis, Chicago, Milwaukee, Detroit, Toronto, Montreal, New York.

rml, to Germany
@rml@functional.cafe avatar

As a Jew, watching the horrific racism Germans feel confident in spreading about Palestinians when paying lipservice to "Israel" reminds me that you all were never punished for your crimes against us. Instead, you settled on upholding a new lebensraum project lead by the same Zionists who collaborated with Goebbels on the Haavara Agreement 15 years prior in order to pay for 60,000 Zionists to move to Palestine in 1933; this was universally decried by Jewish antifascists, as the strategy was clearly advanced by Goebbels as an effort to destroy Jewish antifascist resistance in (which has since been proven by Nazi correspondence, as well as articles advertising Nazi support for a Jewish National project in Palestine in Goebbel's newspaper)

And what for? In order to assure that Palestinians, who played no part in the Holocaust, would be the ones to pay for your crimes against us. It absolutely repulses me to watch so-called left leaning Germans uphold a modern white supremacist state. And yes, that is exactly what is. The fact that you didn't learn your lessons beyond a performative posture can be gleaned from the fact that you still don't consider we Ashkenazim to be white.

have nothing in common with fascism whatsoever. Thats YOU. The Holocaust was colonialism at home, blaming the colonized for the violence of decolonization is a despicable new low.

Your utter lack of empathy when it comes to non-white people makes me incredibly concerned about how many of you will in a decade's time be lining up to join the

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@rml very well said.

Pinging my friend @jhlagado who I think would be interested to read this.

rml, to rust
@rml@functional.cafe avatar

deleted_by_author

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

    @rml @civodul there is an old quote I remember hearing about capitalists selling rope... I can't remember how it goes... but it might be applicable to these projects like L4 which are used by organizations that commit crimes against humanity like genocide and such.

    rml, to random
    @rml@functional.cafe avatar

    something I didn't realize about is that seamless c++ interop is its prime motive

    https://github.com/clasp-developers/clasp
    cc: @ramin_hal9001

    ramin_hal9001,
    @ramin_hal9001@emacs.ch avatar

    @rml I will have to investigate this one as well.

    I was a little disappointed to discover that although ECL can compile to C code, and you can to some degree control the transpilation by declaring certain inlinable forms, it will not generate C++ classes, and there is no DSL for generating a C++ API that I can find.

    I will give Clasp a try, they seem to have the same goals as I do when it comes to using C++ from Common Lisp.

    ramin_hal9001, to random
    @ramin_hal9001@emacs.ch avatar

    "Learn Common Lisp by Example: QtGUI with EQL5"

    (On Matthew D. Miller's blog, from a series of articles on GUIs and Lisp.)

    After a bit of searching around on DuckDuckGo, I ran across this fantastic blog post on how to use EQL5 for the ECL compiler and transpiler. EQL5 is a Common Lisp wrapper around the Qt C++ library. I had already gone through the preliminaries of building EQL on my Debian box and reading through the examples and tutorials. But this fellow goes into further detail about how to use QML to design the user interface.

    I had never heard of Matthew D. Miller, his blog profile says he's from Oklahoma, and "I'm a DBA by day and a youth pastor by night. I love Perl." and also "Part-time dragon slayer," but his blog is full of posts on Common Lisp and Scheme. And he seems to have a talent for explaining things, because the blog post was well written and easy to understand. I hope I can find him on the fediverse.

    rml, to random
    @rml@functional.cafe avatar

    The worst advice I was ever given by a professor is that Gang of Four is the only programming book worth reading. After that, its just a matter of practice 🙃

    ramin_hal9001,
    @ramin_hal9001@emacs.ch avatar

    @screwtape @mzan @hayley @rml garbage collection is good, except when you want to write operating system kernels, especially for real time applications. For OS applications, I think it is better for the compiler be able to provide some guarantees that memory isn't just being allocated on the heap without being able to prove some programmatic path exists to the end of life of that allocation.

    I haven't tried playing with it yet, but I understand that PreScheme which was a subset of Scheme used to compile the Scheme48 compiler, is a non-garbage-collected Scheme that you might be able to use to program an OS microkernel.

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