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

This absolute madness

brought to you by @ghostzero: https://androidblog.a.pinggy.io/> This blog is hosted on my Android phone

This blog is running on my $180 Android phone running Android 11. This post describes how I turned my Android device into a web server which can be accessed from a public URL, and how you can do it too.

aurynn, to random

why are computers

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@aurynn

why are computers

Computers started out as code breaking tools in World War II. Then the military contractors realized you could use sell them to organizations interested in doing accounting. Accounting is the belief that all of humanity can be reduced to a number, in particular, the dollar value they cost to a corporation, or the dollar value of their bank account.In other words, computers are a war-time technology that was then turned against public, to turn humans into money-making resources.

liztai, to random
@liztai@hachyderm.io avatar

"You call someone a fascist or antifa, those are meant to convey bad things ... You're saying someone has adopted a foreign ideology that will destroy the United States. ... Typically these are just insults without meaning."

We shouldn't cheapen the words Nazi, Fascists like this.

The argument I get in return is "but you must point out these evils cos fascism is rising in the world."
Ok, you somehow think your armchair raging is going to change this movement somehow?

https://www.today.com/tmrw/fascism-socialism-liberal-correct-way-use-political-terms-t191527

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@liztai Governor of Florida Ron DeSantis signed into law a $100 million allocation for a militarized police force with the right to make arrests, that acts on DeSantis' own authority, and has otherwise no other checks and balances (according to the ACLU).

It is a little difficult not to compare this to the Waffen S.S. of the Third Reich... just saying.

hellomiakoda, to random

If you thought the components stuck to my bedroom wall I use as a server was bad, take a gander at my workbench PC in the basement.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@tylermumford @hellomiakoda I like how you have two fans, one mounted right on the CPU, and a second fan for increasing airflow through the case — but you don't have a case.

amcooper, to random

I'm in an alternate universe where I have time to learn , wondering how people choose a first Lisp dialect to learn.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@rml @amcooper I second Scheme.

If you are mostly interested in trying new things and expanding your way of thinking about the very nature of computer programming, and less interested in learning Lisp for finding a job, Guile Scheme is what I would recommend most strongly. There are tons of implementations, but Guile has the most useful features ready for you out of the box. It is even better if you use as your package manager.

If you are looking for learning a language in the Lisp family for the purpose of finding a wider range of job opportunities, probably Common Lisp and Clojure are the most often-used in production systems. So I would also recommend Common Lisp and Clojure.

Honorable mention for Racket, but it deviates too far from the standard Lisp languages in my opinion, in the pursuit of making it easier to use.

daviwil, to random
@daviwil@fosstodon.org avatar

I don't care if "Scheme is not a Lisp", the only thing that matters to me is that Scheme is beautiful and fascinating.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@dekkzz76 @daviwil

  • S-expressions, macros, DSLs
  • inspired by Lamdba Calculus
  • tail recursion
  • minimal specification
  • developed by iterating on the programs image in memory

That makes a pretty solid language in my book.

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!

ramin_hal9001, to random
@ramin_hal9001@emacs.ch avatar

Spring Lisp Game Jam 2023!

Starts 19 hours from the time of this post.

  • Must be written in any dialect of Lisp. This includes, but is not limited to , / , , , , or even your own new custom lisp you've made just for this game!
  • You may use existing libraries, third-party or self-created, as long as they have an open-source license.
  • (...click link above to see more rules...)

amszmidt, to random
@amszmidt@mastodon.social avatar

The reason Schemers insist on saying Scheme is "Lisp" is that they want to get exclusive membership to the club. But thankfully, it is guarded by .

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@amszmidt Usually when I tell people I use Lisp, they don't think of me as some elitist, they look at me like I am crazy. And then they will all but demand I explain why I don't just use Python or JavaScript. ("Because that is what everyone uses!")

So then I have to explain what differentiates Lisp from Python and JavaScript, and that is when I enumerate the four features I mentioned in the other thread (homoiconicity, macros, lambda calculus, image-based development).

You rejected all four points. As a result, I think you would have a very hard time explaining to anyone why they should use Lisp over Python or JavaScript. Any other feature of Lisp that you could possibly offer them (except maybe macros) are features that are also provided by both Python and JavaScript. So you would not be able to differentiate Lisp from those other languages.

So that is kind of the origin story of "my definition" of Lisp. And I am still interested to hear your definition.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@amszmidt So, are you referring to the 1979 paper, "A History of Lisp"?

I agree that this is a good definition of Lisp, but I think it contradicts what you said in the other thread about Lisp not having anything to do with Lambda calculus or being a functional language. In the paper, JMC writes the following:

D.M.R. Park pointed out that LABEL was logically unnecessary since the result could be achieved using only LAMBDA -- by a construction analogous to Church’s Y-operator, albeit in a more complicated way.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@amszmidt Woah, Zmacs! Awesome!

You will use SETQ, you will use LOOP/DO. Even recursion is often avoided. ... Lisp is a sponge language

I think I see what you are saying. Wikipedia calls Lisp a "multi-paradigm language." So yes, you can use Lisp as an imperative language with macros (an "obsolete JavaScript-like language with a weird syntax," as some unenlightened people might call it). But you can also use it as a functional language, and do so in an much more elegant way than JavaScript ever could.So that goes back to why I include that as a distinguishing feature of Lisp, and why I emphasize those features in discussions of Lisp in comparison to modern popular programming languages.

amszmidt, to random
@amszmidt@mastodon.social avatar

Scheme is not Lisp. Bite me.

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

@louis @rml @amszmidt
If we are going to argue the semantics of the name "Lisp", the uniquely defining features of it are:

  1. Homoiconicity — data is code is data
  2. Macro programming
  3. Modeled on lambda calculus
  4. Iterating on a mutable image of the program in memory with a REPL

All else are implementation details (garbage collection, byte code, control structures, anonymous functions, eval and apply, concurrency) which exist in dozens if not hundred of other languages, especially more popular languages. I don't see a practical reason to restrict the definition of "Lisp" to those implementation details that were unique to some of the original Lisp implementations of the late 1950s and early 1960s which where amalgamated into Common Lisp.That is not to deride Common Lisp. If code written decades ago runs mostly without trouble even today, that is a testament to the design of the X3J13 standard. I know of no other language more resilient to bit rot. I just don't see the utility in restricting the definition of "Lisp" to that standard when it's uniquely defining features aren't unique to Common Lisp.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@amszmidt @louis @rml

Now you are just redefining the term to fit your plot.

Guilty as charged, this is a debate over semantics after all. I would argue it is not just "my plot" though, but that there is a consensus around "my" definition.1. I am curious: why do you think Common Lisp is not homoiconic? It does have eval and apply after all.
2. "Fails for Scheme," but this isn't 1975 anymore, so this isn't true nowadays.
3. This is true of McCarthy't original Lisp implementation for the IBM 704, but this isn't1959 anymore. The use of the keyword lambda is attributed to Church by McCarthy himself, albeit after he understood the relationship between Lisp and Lambda calculus.
4. Without image based development, your Lisp implementation does not have many interesting features to compete with the likes of Python or Ruby or JavaScript. The fact that the notable Lisp family languages do have image based development set them apart from other languages that merely provide REPLs.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@amszmidt @louis @rml

there is absolutely no such consensus.

I invite you to ask other professionals what makes Lisp unique, I would wager that you may find many people who agree with the "uniquely defining" features of Lisp I enumerated. But I admit that my evidence of this is purely anecdotal.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@louis @amszmidt @dani @rml

AI doesn’t lie. Scheme IS a Lisp. And we all knew it.

LOL! Good one!Although, since AI is going to output what the statistically most common belief about Lisp is, this is some good evidence that there may actually some kind of consensus about Scheme being a kind of Lisp.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@ksaj @amszmidt @louis @rml

I'm a CL coder, but this thread is exasperating for all its moving targets.

That's fair. Maybe I should just say that I am using the word Lisp as a shorthand for the "Lisp family of languages," and that is why Scheme gets pulled in under the "Lisp" umbrella. There are others who insist that "Lisp" exclusively refers to "Common Lisp," and we end up arguing across purposes.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@ksaj @amszmidt @louis @rml

CL is a Lisp.

I realized I never properly asked you @amszmidt how you define "Lisp."

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@amszmidt @louis @ksaj @larsbrinkhoff @rml

It is the only group that tries to define the language not by its actual definition

That is because not everyone agrees with the definition that you are calling "[Lisp's] actual definition." In all honesty, I think "the actual definition" you posit is a bit archaic.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@amszmidt @louis @ksaj @larsbrinkhoff @rml

If we cannot even let the people who make a language decide what it is, then we might as well forgo all logic and just make up words with random definitions.

I accept the definition of Lisp as you posited, but it is too exclusive. I think the definition of Lisp should be a bit more broad. A dictionary is not an authority on the definition of words, it merely describes how words are used with example usages as evidence.Here is an example usage that I was just about to post: The Spring Lisp Game Jam 2023. In the rules of the competition, at the very top it is clearly stated:

Must be written in any dialect of Lisp. This includes, but is not limited to Common Lisp, Racket/Scheme, Emacs Lisp, Fennel, Clojure, or even your own new custom lisp you've made just for this game!

Green_Footballs, to random
@Green_Footballs@mastodon.social avatar

totally sure i don’t want the whole united states to be like florida

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@Karoli @Green_Footballs

I have to admit he’s exceeded my expectations in many ways, with some reservations.

He almost exceeded my expectations in student loan forgiveness, but then failed to follow through. So no, Biden has FAILED to meet my expectations.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@pixelpusher220 @DJDynamicNC @Karoli @Green_Footballs

YES! it's not just the hugely impressive array of achievements, but he also did it all with a 50/50 Senate and an extremely narrow house majority, which is remarkable political skill

Brandon, Dark Brandon! He likes his ice cream cold

You guys are beyond parody.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@DJDynamicNC @pixelpusher220 @Karoli @Green_Footballs

If by "beyond parody" you mean "work in politics and closely follow legislative achievements" then sure!

That explains why you are beyond parody. You are immersed in the milieu of party politics propaganda to the point where you actually believe their delusions are real.

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@DJDynamicNC @pixelpusher220 @Karoli @Green_Footballs oh that is another thing I forgot to mention on my laundry list: the Willow Oil Project. Seriously, and you wonks have actually convinced yourselves that what Biden is doing is good for the environment. I could have a more enlightening conversation about politics with ChatGPT than with you.

davidbisset, to random
@davidbisset@phpc.social avatar

"Now we'll see who wrote all this terrible code."

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@futurebird @davidbisset This is exactly the reason I comment every single last thing I write into my code. Because I know that I am going to completely forget why I put it there a mere two weeks later, if even that long.

dekkzz76, to random
@dekkzz76@emacs.ch avatar

OK Lispers is GNU Clisp any better or worse than any other implementation ?

ramin_hal9001,
@ramin_hal9001@emacs.ch avatar

@louis @amszmidt @dekkzz76

I think you should migrate your account to our @emacs.ch instance.

But if he does, we must make sure not to lose his post history, or this thread.

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