“Using the REPL” actually means typing your code in your favorite editor. However, one sends the code to evaluate in a REPL, which may not even be visible at all. Once the code is evaluated, the results immediately show up in the editor, so you get the feedback right away. Obviously, this requires some upfront setup, but a proper Clojure REPL setup exists in all major editors. Just google it.
Note that one normally sends the code to evaluate with a single key stroke. Note also, a very important point that people often miss, is that this “sending code to evaluate” is uniquely convenient in Lisp because of the parentheses.
There’s a notion of “form” in Lisp, that is the code enclosed between a pair of parentheses, which can be independently evaluated. So, when next time someone insists that their favorite non-Lisp language also has a REPL, ask them, does it have a notion of “form”?
The benefit of a form, is that one no longer needs to use a mouse or some awkward key combinations to painstakingly select a region of code first, before sending it out for evaluation. Instead, one can use a single key stroke that means “evaluate the form under the cursor”, or “evaluate the form before the cursor”, etc, to precisely define the scope and send the code at the same time. — How much can a Clojure developer do alone?
Ironic as this may sound, my first suggestion for how to write programs that are supposed to be random is to make them deterministic. — Probabilistic Programming Habits
2021-06-05: Unix Shell Programming: The Next 50 Years (PDF, 8 pp.).
Ipomea on the loggia
2021-06-06: The new Firefox UI (v89) is quite nice actually. At least on Ubuntu, with a 16:9 13 inch display. I found it less appealing the first time I saw the new tab on the Developer version on my Macbook last week.
2021-06-06: Turning 47 today. At least a prime number.
2021-06-06: Common JSON patterns in Haskell, Rust, and TypeScript.
2021-06-06: Comparison of Common Lisp Testing Frameworks.
2021-06-06: F*dging up a Racket.
2021-06-07: The Ghost, War Kids.
2021-06-08: Marianne Faithfull, Give my Love to London.
2021-06-08: 10 underused features of modern Python.
On IRC, features like embedded images, a nice UX for messages longer than a few lines (e.g. pasted code), threaded messages, etc; are absent. Some sort of “graceful degradation” to support mixed channels with clients which support these features and clients which don’t may be possible, but it still degrades the experience for many people. By instead making everyone work within the limitations of IRC, we establish a shared baseline, and expressing yourself within these limitations is not only possible but makes a better experience for everyone. — Absence of certain features in IRC considered a feature
So what does it mean to always be quitting? It means “making yourself replaceable”; “deprecating yourself”; “automating yourself out of your job”. — Always be quitting
2021-06-10: Causal Inference for The Brave and True.
2021-06-11: So true.> This blog serves as my way to give back to all of the people who taught me something over my career. It all started in 2007 when I needed a way to keep track of all the information I learned during my daily work as a systems administrator. — https://major.io/
I could say that Twitter, Facebook, Youtube, and Google helped ruin the internet, but really it was that everyone started using it. The internet used to be a haven for nerds, geeks, artists, and bohemian misfits until the cool kids crashed it. Now the internet is dull and stale and overly commercialized. — I miss the old internet
2021-06-14: It’s been hot today! Meanwhile, plants keep being happy…
Email is not a hard problem. This is a more than fifty-year-old tool.
Chat is not hard either. This is a more than forty-year-old tool. — Some random sketchy thoughts on Unix, web-apps and workflow
If we think about privacy and the future, I don’t want to be the next KFC Girl, so I clean up my drivel. Many of the posts I create on social media have very little thought go into them, so once they’ve served their purpose, they can be deleted. — Why I Delete Old Content
2021-06-15: R packages that make ggplot2 more beautiful: Vol. I and II.
2021-06-15: R tip of the day (thanks to Pr. Brian Ripley): the equivalent of
paste) in IPython appears to be
source("clipboard") (or equivalently,
source(pipe("pbpaste")) for Mac users).
2021-06-15: Trying out mpv as an alterntive to cmus for isolated playlists. Looks really good!
2021-06-15: Maths in a minute: The positive predictive value.
2021-06-15: Modern Unix.
2021-06-15: Serving WebP & AVIF images with Nginx.
The problem with most of these comments is that they convey very little information. Often it is just a repetition of the method name and parameter names in a few more words. These comments may be useful for API:s exposed externally, but in an application where you have access to all the source code, they are mostly useless. If you wonder what the method does, or what the valid input range for a parameter is, you are better off just reading the code to see what it does. These types of comment take up a lot of space without providing much value. — On Comments in Code
Lisp is the result of taking syntax away, Perl is the result of taking syntax all the way. — Doug HoyteCited in Lisp’s nested syntax, by Daniel Szmulewicz.And ensure you added https://stackoverflow.com/feeds/user/69545 to your RSS feeds, if that’s not already the case.
2021-06-17: > Not only in a professional context, but also for private purposes it does make sense to actively read your books/articles. Try to apply some analytical reading, a concept I’ve read about for the first time in How to read a book (book). The idea is to interact with the content you’re reading about: Ask questions, try to link ideas in your mind, make notes, lookup complex definitions. The worst thing you can do is to just passively read something, finish it and then you move on to your next reading. — Note taking in 2021
2021-06-17: Got my nice playlist on the Ubuntu laptop, added a crappy script, and it’s working fine!
2021-06-17: A beginner’s guide to modern art jazz.
2021-06-17: Git for Computer Scientists.
2021-06-17: The most copied StackOverflow snippet of all time is flawed! Lovely.
2021-06-18: Larry Willis, I Fall in Love Too Easily.
The only browser that does not use Google’s web engine (blink) is Firefox. So if you really want some kind of privacy I’d recommend you switching to Firefox or something Firefox based. — Brave, the false sensation of privacy
When you are a kind of old school, modern times means a bit of pain in some way. Your soul is mostly seeking inner peace but on the other hand, as someone that works with technology, you wouldn’t stay freeze.
And sometimes the thing is the other way around, it feels that the old-school-world you’re living with is good but not as great as it should and you need to move a bit forward yourself to - wrongly - have a feeling of progress. — Mattermost and Matterbridge
Bunch of years ago, when social networks did not exist (wow) the web prettended to be pretty simple. As simple that some content management systems were designed to do a kind of hard work: build a static site from the dynamic one. Easier to be served, maintained and much much faster… win-win!. — Stay static
“I had an obsessive-compulsive streak that drew me to digital, discrete problems. And I loved poring over large collections of information,” Knuth said. — The Computer Scientist Who Can’t Stop Telling Stories
Two things Perl 5 got right was its lexical scoping rules and support for anonymous functions (“lambdas”). Combine those features and you can make closures. And just what are closures good for? Well it turns out they’re pretty damn powerful; powerful enough, in fact to make a better object system than Perl’s built-in offering. — Perl Closures As Objects
2021-06-21: Git is my buddy: Effective Git as a solo developer.
2021-06-21: Parallel processing with unix tools.
2021-06-21: Representing SHA-256 Hashes As Avatars.
2021-06-21: The Evolution of the Unix System Architecture.
2021-06-21: Three ways to bulk rename files.
2021-06-21: Wald tests via statsmodels (python).
2021-06-23: Shahin Novrasli, From Baku to New York City.
For simple expressions, parentheses are a form of static typechecking. If you model a Lisp as a stack language that evaluates from right to left, each parenthesized block must push exactly one value onto the stack, and must not consume any values. — Parentheses are Just Typechecking