Earlier quoted context omitted.
Your comment and the grandparent comment have both really validated me. I know that's weird to say, but I really thought I was just Wrong about the linters/LSPs and unfinished lines or unused variables. Thank you :)
Those that implemented the unused variable feature are completely unaware that there are two modalities of programming: exploring a problem space, and building a solid product. When you're exploring, you don't want your compiler to stop you in your tracks to warn you about pedantic nonsense. It's not a syntax error that prevents your compiler from understanding, it's just arbitrary restriction that the compiler decid…
The Bipolar Lisp Programmer (2007)
91–100 of 136 posts
Re: The Bipolar Lisp Programmer (2007)
#92I’m fairly annoyed with myself on my worse days for heading into embedded as a career path when Lisp (clojure mainly) is the only development process I’ve really ever felt fit my brain. I’m positive that there is a Lispy language out there (actually in existence, or the aether) that is appropriate for embedded work, but the constraints of the target make it difficult to envision. I like C and assembly because they’re…
I just got a Pico W to run Forth on. It's like a REPL for low level hardware, and I'm unreasonably excited to play with it this weekend. Somehow I've gone 36 years without anyone telling me I could do explorative programming on bare metal, and now I can't shut up about it.
Re: The Bipolar Lisp Programmer (2007)
#93I quite enjoyed this article, but I reckon they're talking about ADHD rather than "bipolar" mind. Seen under that lens, I resonate with his caricature. Focus is a precious, rare resource outside my control. Mainstream languages, made for collaboration in big teams rather than maximum personal freedom, soon impose restrictions that kill hyperfocus. The "unused variable is an error" is the most egregious of them that I…
This is a great perspective. I am not focus-challenged... at least I don't think I am, but your comment has been a revelation. I always had this nagging feeling about myself that I don't find myself fully immersed in the problem domain when working Go, Python, Rust like the way I feel while working with Lisp. When I am programming in Lisp, I enter a sort of zen like state where my mind becomes one with the problem. N…
> But I still have this nagging feeling with other mainstream languages that their tooling, their ecosystem, the breaking dependencies, the "making the compiler happy", the stupid language restrictions and such things distract me from my problem domain.
I can relate to this in a different way.It seems the vast majority of work today is not "the problem", per se, it's the interface that exposes the problem (or solution) to others. Shoving stuff in and out of format (JSON, SQL, etc.), marshaling the data over interfaces, or building UIs to expose and work with it, etc. The problem domains themselves, for a lot of systems, can be pretty simple.
But with CL, with the reader, and things like Emacs, a lot of that falls into the background -- with the caveat "as long as you're willing to work with native representations", i.e. S-expressions.
I have an "application" in CL, and it's 1500 lines of code. Outside of a couple prints for debug, there is no I/O. No user interface. Nothing. It's all "just code". It's all "just problem".
Meanwhile, I have a Java program I wrote. It wraps a 1000 line Java utility into a GUI. There's 4000 lines of code to present that GUI. It's a not quite fair comparison, as the entire purpose of the application is to expose this utility into a "usable form".
But, with Java and other languages, there's always going to be some level of that. With CL, again if it fits within the confines of the REPL and S-expressions, you get all of that "for free".
Trivial case with a simple Java command is you need some way to parse the command line options. Extended lambda lists give you that "for free" in CL. Named parameters, optional parameters, default values, etc. Arguably the entire point of the extended lambda list descends from their use within environments like Lisp Machines, where the function arguments WERE the "command line", and that's why its so robust. Those are all nice features when writing code, but they're really nice when you have to type stuff in all the time.
And this ability to not worry so much about external representation, and moving and converting data, instead just focusing on what's being done to the data, in native terms, it's very liberating.
There is no "impedance mismatch". Just code, just data, and code is data.
Re: The Bipolar Lisp Programmer (2007)
#94I'm exactly this type of student. 18 yo, just starting university next month. Any advices? Every single thing in the article fits my life so far, the boredom, the pointlessness of all things, the ease of brilliance, 1 to 1, sans the sadness because I'm still hopeful that the world can be fixed and am still an idealist. (I attribute this to my faith.) My classmates always envied how little or none I work for the same…
If something isn't practical and it doesn't bring you joy then it isn't worth your time. Don't fool yourself into wasting time!
Re: The Bipolar Lisp Programmer (2007)
#95I wonder if I could write the story of the BBM once he left the university and went on to work in Corporate Land. My career (if may be called that) can be summarized by a constant swing. On one side, I have a "job" where I start well but after a while I fall out of grace from higher-ups because I inevitably end up calling out their bullshit and/or start seeing the pointlessness of it all and lose interest in progress…
Re: The Bipolar Lisp Programmer (2007)
#96Earlier quoted context omitted.
> The "unused variable is an error" is the most egregious of them that I hate with a passion. Same. That has tripped me so many times when trying out something simple in golang. I get why they are undesirable in the long run, but in the short run I'm often trying out a fragment and don't have the users of every variable written yet.
Your comment and the grandparent comment have both really validated me. I know that's weird to say, but I really thought I was just Wrong about the linters/LSPs and unfinished lines or unused variables. Thank you :)
You guys want to have your cake and eat it too -- to be correct despite being lazy and sloppy.
It makes no sense. Bite the bullet. Don't have unused variables. There's no such thing as "exploration". After you've "explored" enough (where "explored" means "coded sloppily"), you've quickly exhausted your mental buffer, and it's suddenly expensive to go back and polish what you've done, making yesterday's exploration today's (hopefully not too creaky) foundation.
Re: The Bipolar Lisp Programmer (2007)
#97Re: The Bipolar Lisp Programmer (2007)
#98I’m fairly annoyed with myself on my worse days for heading into embedded as a career path when Lisp (clojure mainly) is the only development process I’ve really ever felt fit my brain. I’m positive that there is a Lispy language out there (actually in existence, or the aether) that is appropriate for embedded work, but the constraints of the target make it difficult to envision. I like C and assembly because they’re…
I just got a Pico W to run Forth on. It's like a REPL for low level hardware, and I'm unreasonably excited to play with it this weekend. Somehow I've gone 36 years without anyone telling me I could do explorative programming on bare metal, and now I can't shut up about it.
Re: The Bipolar Lisp Programmer (2007)
#99There is no such thing as "bipolar personality". People should seriously refrain from using the term bipolar when they clearly don't have any understanding of the disorder. At least he didn't get it mixed with borderline I guess.
The kind of personality he describes does exist but it has little relation to bipolar disorder. Given how he defined the term, I suspect he is using the word bipolar in its general meaning of having two states. Bipolar is a bit of a misnomer as is, multi-polar is a better descriptive what what the disorder actually is. There are not two states, there are several overlapping, non-exclusive “states”. (For example: mani…
Interestingly enough, I also had a favorite professor in college who mentored and looked out for me to a certain extent, who was big into Lisp and Haskell, and who was quite acquainted with bipolar disorder himself due to other people in his life.
Re: The Bipolar Lisp Programmer (2007)
#100Earlier quoted context omitted.
Okay, you made me want to try Lisp.
The sibling comment suggests Clojure, and last time I tried I lost all patience after having to deal with setting up Java, lein (it's been quite a while). If you want the least amount of friction possible, install Racket and run DrRacket. Here's a tutorial: https://docs.racket-lang.org/quick/index.html and one to make web apps: https://docs.racket-lang.org/more/index.html (I don't mean to disparage Clojure, I'm sure…
Go with Lisp instead. Or OCaml. Both are purer and leaner than the JVM-addled morass that is Clojure.