Another bit of gold from #ICFP2023 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."
I just opened registration for the June iteration of the "Hands-On Guile Scheme for Beginners" course!
This is an 8-week course that is a mixture of on-demand learning content, live Q&A sessions, practical exercises, and a private forum where I answer all your questions.
This iteration officially begins on June 8th, full details and schedule can be found here:
I just opened up registration for the March iteration of the "Hands-On Guile Scheme for Beginners" course!
This is an 8-week course that is a mixture of on-demand learning content, live Q&A sessions, practical exercises, and a private forum where I answer all your questions. We had a great time in the February iteration so I'm looking forward to running it again!
Come learn Scheme and functional programming with us!
Violation of Section 241, Title 18 "The Stop The Count Scheme"
Experts, have focused on false electors, DOJ pressure, Pence pressure, and Capitol attack.
But there was a #scheme that preceded all these, and #DoJ can charge it. The scheme was the effort to "stop the count" on election night.
Donald Trump was told he would lose by his campaign before the election, he knew early counts would show him leading, he knew he would falsely claim victory before the votes were counted to spread his lies & incite his followers.
In a recording of Steve Bannon speaking to a group from China makes it clear that Trump had every intention of installing himself as dictator & subvert the will of the voters.
Listen to the plan, the #conspiracy to defraud the United States and it's citizens. #TheBigLie
If you've got questions about Emacs, Guix, Guile, or other related topics and want a friendly place to ask them, come check out the new System Crafters Forum!
What makes the #Guix System so cool is that almost all of it is just #Scheme code. This opens up a LOT of possibilities, like for example quickly writing a web interface for package-management.
You can see this idea in action in guix.el, which lets you manage all your Guix packages through a powerful #Emacs interface.
We are 1 month away from the next Lisp Game Jam! Make a dating sim in Emacs Lisp. Or make a Souls-like in Chicken Scheme (aka Chicken Scheme for the Souls.) Or make a kart racer in Fennel. Or make a post-apocalyptic action platformer in Common Lisp. Or make a roguelike in Racket. Or make a farming sim in Guile. Or make a strand type game in Clojure.
“GnuCash […] is designed to be extensible by end users. The unfortunate part is that the extension language is Scheme […] Scheme looks like Lisp but isn't really Lisp; the number of people who know it well is sure to be small.” https://lwn.net/Articles/925782/
It's not yet on MELPA, but hopefully will be soon.
This is the third library in the series, after the #commonlisp and #fennel implementations. Next are some extensions for #clojure , and then a return to Guile #scheme .
I recently opened registration for the April iteration of the "Hands-On Guile Scheme for Beginners" course!
This is an 8-week course that is a mixture of on-demand learning content, live Q&A sessions, practical exercises, and a private forum where I answer all your questions.
This iteration officially begins on April 20th, full details and schedule can be found here:
“Each of the 16 defendants has been charged with eight #felony counts, including #forgery and conspiracy to commit forgery, for allegedly signing documents attesting falsely that they were Michigan’s “duly elected and qualified electors” for president and vice president.”
#Michigan Charges 16 in False Elector Scheme to Overturn trump’s 2020 Loss
In about 15 minutes, I'll be live on Flux Harmonic to try some new, unreleased features of Guile Hoot to rewrite parts of my Autumn Lisp Game Jam entry Cybersol from JavaScript to Scheme!
This will give us a good sense for how much more elegantly we can express the same logic in an objectively better language :)
I have learned a lot about the Guile platform recently, and it is starting to feel a bit more familiar to me now. The #Scheme programming language does have support for multithreading, but in classic Scheme fashion, is much more minimal than what something like #Haskell provides (Haskell concurrency is what I know best). What Haskell calls a "mutex variable" or MVar is actually a combination of two fundamental components: "mutexs" and "condition variables." After coding my own Haskell-like MVar, I feel like I understand Scheme multithreading well enough to implement any concurrent algorithm...
...which I don't need to do because Guile Scheme provides just about every single #ConcurrentProgramming algorithm to you already, between Andy Wingo's (@wingo) Fibers library, and the Actors Library, which they describe as "a standard library of sorts ... for a variety of common actor model patterns." I can see why @cwebber occasionally shows bouts of hubris over this project, it is truly an achievement! With a little more work, Guile could become a fully networked software platform, like the World Wide Web itself.
I am also working with the Guile-GI library to program GUIs using Gtk. At the moment I am trying to figure out how to define my own class of Goblins "Vat" objects using GLib Threads so I can run a Gtk application within a Vat. I want to update the Gtk Application view from the Scheme REPL. (Any help is appreciated.)