10 ms·
The Bipolar Lisp Programmer (2007)
- sph 3y agoI 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 hate with a passion. The separation between compilation and running is another that seemingly inescapable today. With languages like Lisp, I can code at the speed of thought from prototype to production. These days tech is advanced by FAANGs, so no one cares about removing the safeties from our languages; this is the reason the focus-challenged among us still go back to Lisp and other lost languages (Forth, Smalltalk, Self) that have disappeared from the mainstream. Rust, C++, Go, Python, etc. are good, but they're not made for us.
- 39 3y agoOkay, you made me want to try Lisp.
- stefcoetzee 3y agoFor a quick start, can recommend Clojure using VSCode as editor (with the Calva plugin).
- sph 3y agoThe 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 https://docs.racket-lang.org/quick/index.html and one to make web apps: https://docs.racket-lang.org/more/index.html https://docs.racket-lang.org/more/index.html (I don't mean to disparage Clojure, I'm sure it's great, but a newbie needs something easy to get excited about, not having to mess with JDK and setting up Emacs)
- Qem 3y agoI had the same experience. Spent over an hour trying to strap all the components into a working system just for it to trow error after error. So I gave up learning Clojure and instead went into Pharo. Self-contained environment trivial to set-up, same live environment typical of lisps, but approached from the Smalltalk side. I enjoy it.
- shrimp_emoji 3y agoClojure sucks. Go with Lisp instead. Or OCaml. Both are purer and leaner than the JVM-addled morass that is Clojure.
- spdegabrielle 3y agoand moving from Racket to Clojure is an easier step than straight to clojure.
- distcs 3y agoThis 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. Now don't get me wrong. I can write a lot of Go, Python, Rust, what have you on some days when I am working on a good problem and there are no meetings to distract me. On some days, I can do this for 6-10 hours straight with little breaks. So I don't think I have the ADHD problem that the parent or the OP is talking about. 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. But not so with Lisp. With Lisp, it's just me, the problem, the algorithms to solve it and the code. Nothing else. It is a feeling of hyperfocus (a word you so rightly chose). For some reason I cannot get into that state with other languages and I could never understand why. Your comment is on to something here and this might very well explain the zen-like hyperfocus feeling of immersing fully into the problem domain I get with Lisp.
- sph 3y agoSure, the ADHD thing might be a bit on the nose, but the thing is... you've just become really good at being productive with languages that constantly interrupt you for inane reasons. You're productive DESPITE the terrible tooling we have to deal with everyday. Sometimes it's nice to shed all that bullshit and just create something. Sometimes, only on languages with the least amount of syntax and semantics you're able to sculpt that fleeting idea you had. Inspiration is very delicate, and it doesn't take a lot for it to die down because you forgot to update npm and your Emacs config is borked.
- whartung 3y ago> 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.
- BoxOfRain 3y agoI do wonder if I’d be diagnosed with ADHD if I didn’t already have a fairly obscure neurological disorder. My visual cortex can’t filter its own noise out properly which causes a bunch of mostly migraine-like neurological issues including apparently making my focus unreliable and forcing me to work in a very “burst-then-rest” kind of fashion, but I was already that way beforehand it just got much worse when I contracted the disorder. Either way this comment makes me want to try a LISP! I might give Clojure a go, I daily drive another alt-JVM language at the moment so it’s a natural choice.
- AnthonBerg 3y agoThis is super interesting. Thank you. Feels similar to subtle patterns in my next of kin and their inner workings. So I can read more, would you mind sharing the name of the disorder?
- BoxOfRain 3y agoThe disorder’s called visual snow syndrome, it’s named after the main symptom that differentiates it from other disorders which is TV-static like visual distortion but it sometimes causes a lot of other things typically associated with migraine to the point before it was studied in its own right it was assumed to be an uncommon variation of migraine; unlike migraine though for many people it doesn’t produce any pain at all, just other migraine aura like neurological symptoms. I’m not so fortunate, I get a permanent one-sided headache, brain fog, occasional derealisation episodes, photophobia (that one’s fun but fortunately I live in usually grey Britain), and that general kind of thing. It was a migraine specialist researching the condition in the UK who eventually diagnosed which was good as at the time there was a fair bit of rubbish on the internet about the condition (though that’s a lot better than it used to be, I was sixteen when I got it and all the doctors could tell me at the time was ‘we have no idea what this is but it’s not going to kill you’). As for treatments there basically isn’t one. Among other things I experimentally microdosed quetiapine against it (under the theory dopamine might be involved) under the supervision of a doctor which basically cured the visual distortion but not the pain, but I quickly built a tolerance and binned it off because the side effects aren’t great. Some people benefit from anti-seizure medications but not everyone and the side effects can also be bleak. Fortunately medical cannabis is legal in the UK and it’s very effective against the pain, the amount of unsuccessful things I’ve tried qualifies me for it and the pain’s only a problem on very bad days now. Coding with the monofur font helps me too! Of course everyone has some noise in their visual system, a little bit of TV static isn’t necessarily indicative of disease. For reference I struggle to read when it’s bad, and my night vision is impaired quite a bit compared to what it was before so you’d definitely notice if it was problematic.
- brabel 3y agoI don't think the kind of student the author is talking about has ADHD symptoms or any sort of mental illness. I think they just have different personalities - and having a certain personality than the majority of people shouldn't be considered a mental illness or disorder. People are not all the same... at what threshold do we count difference in personalities as an issue?? As long as the person can keep functioning in society without major side effects (crime, extreme isolation, depression) the person is just "normal" even if they tend to work and act differently from the average.
- deleted 3y ago[deleted]
- mtreis86 3y agoI like to think I'm ADH, I've got everything ADHD except for the disorder
- galfarragem 3y agoRuby could be a good compromise. Unfortunately it lost the battle long time ago.
- stefcoetzee 3y agoWhich battle is that?
- galfarragem 3y agoThe battle for relevance. A language that isn't growing is dying.
- corinroyal 3y ago"Lost the battle?" Ruby is a far better ecosystem now than it was when it was getting popular. C is "dying" according to your definition. It's number 2 on the TIOBE index, while Ruby is in the top twenty. I'm using Common Lisp do build my product, and that one is long dead and buried according to popularity. Maybe there are business reasons to avoid less popular programming languages, but there aren't any programming reasons to avoid them. Maybe we should stop treating tools as if they were candidates for homecoming king and queen.
- ergonaught 3y agoI was wondering whether this sounded more like ADHD or ASD than "bipolar", then decided that he wasn't using the word in that sense and let it go.
- sph 3y agoADDENDUM: I love Lisp but I want to clarify that its secret sauce is that it enables exploratory programming: programming from inside the system. While most languages are akin to preparing a detailed blueprint and executing it (then stop to update the blueprint and try again), exploratory programming is like sculpture. You have an unformed mass full of unrealised potential, and you slowly carve it to shape. The ADHD/Bipolar mind of the article isn't great at making plans, it's great at following its gut instinct, making shit up step by step. Lisp enables this flow, but also Forth, Smalltalk, Self, etc., which I've been deeply obsessed with lately. Sadly, all we have today on the mainstream are basic REPLs which are a harmless, defanged version of these old environments promoting creativity and flow state.
- troupe 3y ago> programming from inside the system. Can you elaborate on that? I think you are saying that REPLs in other languages don't do what you can do in Lisp, but I don't think I know enough to fully understand why.
- unixr 3y agoImagine this: You start a fresh REPL session with a vague idea of something you want to build. You have good tooling that enables you to write code in your favourite editor and pipe it to the REPL through a socket. You write a couple of functions and send them to the REPL. You call them a few times with some test arguments, maybe define a couple global variables while testing, and realize one of the functions doesn't quite behave the way you want. You tweak the code and send it again to the REPL. The function is redefined and works properly now. You're happy with what you have for now, so you save the entire current environment of the REPL, functions and global variables and all, into a file (called an image) on your disk. The next day, you come up with a great new feature so you load up the image and continue exactly where you left off yesterday, with all your functions and even global variables as they were defined previously. You add your new feature, all while testing and tweaking your functions interactively, and then you save the new environment into an updated image. Any other code that loads that image will be able to take advantage of your updated functions and variables now. The power of lisp is not just the fact that there's a REPL — a lot of languages have that now. It's the ability to save and reload the entire current state of the REPL (interactively or programmatically), which enables the powerful interactive development that so many lispers, including myself, rave about.
- _ea1k 3y ago> 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.
- bloopernova 3y agoYour 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 :)
- sph 3y agoThose 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 decides to pester your about, a sort of a robotic grammar nazi. Computers are obtuse, the worst thing they can do is ignore your perfectly parseable and valid instructions for arbitrary reasons. Machine, if you know I'm not using a variable, kindly let me know and carry on doing your job.
- potta_coffee 3y agoI'm certain they're aware of the second modality; I just think that Go is narrowly focused in design and it's not really for that other kind of user.
- kragen 3y agoit is vanishingly unlikely that ken thompson and rob pike are unaware that people sometimes program to explore a problem space
- lars-b2018 3y agoThis comment is certainly true for me. The article really resonated for me.
- ska 3y ago> but I reckon they're talking about ADHD rather than "bipolar" mind I think while some of the people he describes may have ADHD, very few people with ADHD are this person. His description resonated with me as a particular archetype, one that often makes their way into grad school eventually. Often enough to be recognizable. I also don't think the author meant these people are bipolar in a medical sense, but used "bipolar" as the success+failure designation, perhaps unfortunate terminology.
- sudosysgen 3y agoIt's not necessarily technically impossible to make this work in Rust/C++/Python. Using something like rr, completely disabling all optimizations, and making all functions virtual should make this possible in theory, as long as you don't change data structures. I'm sure it is going to be extremely hard in practice, though. If you're interested in trying to make this work, we can try implementing it first in Python using a shim annotation on every function and making some changes to an existing debugger plugin, it will definitely be difficult to integrate but it should be doable. For C++, something similar can be done by hacking the compiler to make all functions virtual and then hooking up NativeJIT to recompile functions as-needed. Eventually using something like rr we can even replay execution after we change data structures. I really resonate with the idea of exploratory programming and find myself in a similar position to you - but I can't use Lisp for most of my work, so given the possibility, I really do think that making tooling that makes this kind of development environment possible is the best option, and I'm pretty sure it's possible to do it, so why not have the best of both worlds?
- wtetzner 3y ago> Rust, C++, Go, Python, etc. are good, but they're not made for us. I also don't see any technical reason you couldn't have the best of both worlds. E.g. a dynamic runtime environment that allows recompiling functions on the fly etc., but also have a separate batch compiler that can type check the program as a whole, do whole program optimizations, etc. So you can do exploratory programming while developing, and the run the batch compiler before committing changes, when doing releases, etc. I think the biggest challenge is simply the amount of effort required to design and implement it (and of course someone who's interested enough in it to do it).
- teddyh 3y agoSee also: The Lisp Curse: <http://www.winestockwebdesign.com/Essays/Lisp_Curse.html#main http://www.winestockwebdesign.com/Essays/Lisp_Curse.html#mai...>, which is a followup and commentary to this article.
- BaculumMeumEst 3y agothe mosaic background of this site is stunning, i need to figure out how to generate that
- lproven 3y agoIt's a photo, isn't it? I took it to be the ceiling of the dome of Hagia Sofia but I could be wrong. It definitely looks Moorish, though. A grand mosque dome of some kind. Not saying programmatic decoration would be a bad thing -- it wouldn't! But beware: much Islamic decoration is text. It's writing. You can't just programmatically generate that. Okay, "AI" chat bots can, but the _text_ is simple. It's the calligraphy that matters. Generating that would be very hard.
- zoom6628 3y agoI think the author would suggest painting your lentils before using the tweezers to place them :-p
- botanical 3y agoIt seems to come from here: https://en.wikipedia.org/wiki/Sheikh_Lotfollah_Mosque https://en.wikipedia.org/wiki/Sheikh_Lotfollah_Mosque https://commons.wikimedia.org/wiki/Category:Sheikh_Lotfollah_Mosque https://commons.wikimedia.org/wiki/Category:Sheikh_Lotfollah...
- mav88 3y agoI feel personally attacked :) Lots of symptoms of ADHD in here too as well as bipolar (I have both and enjoy Lisp too).
- tokai 3y agoThere 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.
- kayodelycaon 3y agoThe 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: mania and depression are not exclusive.)
- kdmccormick 3y agoEh, maybe it's coincidence, but I am Bipolar (type I) and I deeply relate to the personality type described by the article, including how the author relates ambition/boredom to mania/melancholia. 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.
- lproven 3y agoThis is from 2007, and it should say so, as it did one of the previous times around: https://news.ycombinator.com/item?id=13467473 https://news.ycombinator.com/item?id=13467473
- cgio 3y agoNot bipolar, but comfortably in the spectrum, and I matched the details pretty well. What he does not mention, which from my point of view is important , is the tendency to go down rabbit holes. Lisp is a shallow rabbit hole and you do get the satisfaction of getting it without an huge investment. And I do love lisp with passion, but never finished anything using it. Python is therapeutic in a way. It can get you to finish that “assignment” at last moment with less of a feeling that you should perfect it. If you are that eventually B student, do not fret, you can do quite well professionally when meaning is linked to livelihood.
- jwmcq 3y agoI get this. I've been programming Python (mostly) for the last few years, and it's honestly great for getting things done in places where most of what we're asked to do boils down to sticking lego bricks together. However, I'd strongly disagree with the assertion that lisp is a shallow rabbit-hole. It's probably one of the deepest I've ever been down. There's a good half-century of history there (much of which is even recorded!) - you'll end up learning about four or five different object systems and probably implementing your own, for example - and, even if you want to ignore the past, the accessibility of every level of a lisp system means that I probably know more about how SBCL turns my code into electricity than I ever will about Python, despite never having used the former professionally. Big big, very deep rabbit-hole filled with a lot of very interesting rabbits.
- deleted 3y ago[deleted]
- dj_mc_merlin 3y agoThis very much describes me to a T and I've come to realize I just have ADHD and (excuse the narcissism) above average mental capacity in some subjects. Haven't gotten diagnosed yet, but both my SO and my best friend have it, and the parallels are staggering and explain a lot about my behaviour. I've developed a shit ton of personal techniques to gain some focus even when it seems impossible and engage in humility to counteract my cynicism. It's only going half well, but a hell of a lot better than in university. Other people in this position, what did you do?
- mcluck 3y agoI keep seeing people say "I have X but I haven't gotten diagnosed yet". Pet peeve: you _think_ you have ADHD but you can't state that you have ADHD without a diagnosis. If you have a piece of bone sticking out of your leg, it's fair to self-diagnose with a broken leg. Mental conditions are much harder to lock down definitively, especially because ADHD, autism, and bipolar all share similar symptoms. My own personal anecdata is that the people I've known who suspected they had ADHD more often than not did but they (myself included) still needed a diagnosis before stating it as a matter of fact
- dj_mc_merlin 3y agoOK, I can say I don't have it if that helps. My point is that I share a lot of the problems that two important people in my life do, and seemingly the same way they think about stuff that other people find very weird, I also do. And it's been this way for a very long time. They are diagnosed professionally with ADHD. So, I think there's a high likelihood, but I don't know, obviously. I was asking for others experiences in handling said situations. edit: I'm also not interested in getting a diagnosis since I don't want it to be on any file in general. Call it paranoia, I don't want some medical file marking me as having a disorder or being mentally ill.
- the_sleaze9 3y ago> Call it paranoia, I don't want some medical file marking me as having a disorder or being mentally ill Not paranoia at all, I had a bored psychiatrist showing a wildly unprofessional amount of skin diagnose me with Bipolar type II after a single 15 minute interview, and now I have serious issues getting life insurance. Even with several other psychiatrists giving opposing diagnoses. Much better to suspect (and apparently trigger some people's disdain) than let someone write something down in permanent ink.
- reilly3000 3y agoThe DSM and its disciples are so focused on aberrant behavior that they neglect to explore the experiences and mental models of those they treat. What is it about having a mood disorder leaves one prone to eschew strong typing in favor of improv at the REPL? Is it the mood that makes the object more clearly visible, or what it does to a person when they delve into the abstract?
- bmitc 3y agoDoes anyone use Shen? I was looking into it recently and thus recognize the author of this post as the originator of Shen. https://shenlanguage.org/ https://shenlanguage.org/ Why would one use Shen over Common Lisp, Racket, Chez Scheme, or Clojure, for example?
- bsima 3y agoI love Shen and highly recommend the Book of Shen and Tarver's other book on Logic and Computation. The crazy thing about Shen is that its type system is sequent calculus, which means when you define your types, you are literally writing the same language that mathematicians use when they prove things about type theories. Why would you use it? Because you can leverage a crazy amount of power by writing your own type theories in your programs. Is it practical in today's corporate world? Probably not, but there is at least one case study in the real world https://www.youtube.com/watch?v=lMcRBdSdO_U https://www.youtube.com/watch?v=lMcRBdSdO_U
- bmitc 3y agoThank you for the link to the talk! I'll watch it for sure. If I am interesting in using functional languages (currently F#, Elixir, and Racket) to explore GUI systems, graphics, symbolic math, numerical computing like machine learning and swarm algorithms and automatic differentiation, agent-based modeling, fractals and general chaos theory stuff, etc., is Shen a good match for that type of exploratory, almost from first principles but towards something that is actually usable work? Is Shen closer to Scheme or Lisp? I typically fall in the Scheme side of things a la Racket. Thanks for all the information and help!
- bsima 3y agoDefinitely usable for those cases. You might have to do some extra work to build the necessary libraries though. It’s closer to scheme I think, being a lisp-1, even though it’s originally implemented in Common Lisp.
- 3y ago
- jakeinspace 3y agoI’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 simple from a language semantics level but incidental complexity is nearly unavoidable. I’m not sure if I have undiagnosed ADHD like many here are wondering, but I do wish I could go back to living in a REPL without giving up the joy of working on real hardware at the register programming level.
- Lyngbakr 3y ago> 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. Perhaps Fennel* fits the bill? * https://fennel-lang.org/ https://fennel-lang.org/
- sph 3y agoI 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.
- sitzkrieg 3y agoyea forth is amazing for that, i used to develop a lot of baseline or "test everything in the beard spin" type if firmwares in forth and miss it
- kragen 3y agoi'm sorry, i've been trying to tell people that for years (specifically with respect to forth)
- uticus 3y agowould enjoy seeing a write-up or blog on this
- rglullis 3y agoI 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 progressing there. This leads me to either quitting or getting fired, which brings me to the other side of the swing: I dive into another project where I try to do everything "my way", no compromises, no shortcuts, no justification of "best practices" because "that is how everyone else does it". While I am on this side, I feel incredibly productive and I am forced to grow/learn a lot of things that are required to the problem at hand. Yet, because of this hard-line stance on not compromising, my projects gets either out-competed by a startup that was (rightly) willing to take the shortcuts I didn't take, or I end up building something that had no market for, or (worse) there is a market and no strong competitor but I refused to pivot out of the original idea for a matter of "principle" that only I cared about - hub20 definitely fell into that category. When I am finally out of steam (or financial reserves), I go back into the job market, usually with a renewed set of skills which helps me land a job that was better than the previous one, and the cycle is complete. Honestly, I am tired of this. These swings were fun for the first 3 or 4 times but now I am increasingly feeling that my luck will run out soon and that I need to get out of this swing, no matter on what end. Either I finally make one of my projects more than a nice portfolio piece or I learn how to settle and navigate the corporate world without hating it and myself so much.
- Aerbil313 3y agoI'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 results but very few realized it's kind of a curse at the same time[1]. When you don't have a habit of working, you can't work hard when you need it. I think this can be a problem now as I'm entering university (it happened to be a mild problem in late HS too). I would not throw it all up with girls and beer (cos I'm muslim) but I don't know whether I will be bored, because I heard the curriculum isn't exactly full of shiny things. 1: Still I'm forever grateful to Allah for it, no complaints. Learned so much in my all free time not spent doing pointless homework.
- dermesser 3y agoOne piece of advice: some things in university might be pointless and/or hard. Treat it like a game, the goal is usually quite clear (grades, passing, etc.) and work as much as you can to achieve the best results. Don't think too much about whether there's a point, and if it's boring, find ways to not make it boring (read more literature about it, solve trickier problems)...
- talldrinkofwhat 3y agoDiversify, socialize, and start things before they're due*. Take classes / sit in on lectures from different fields (art history, painting, russian literature, architecture/furniture making... the list goes on, just make sure it's interesting to you). If you've got AP credits racked, your entire first year's worth of requirements just got freed. Use them piece-by-piece over your semesters to explore other avenues rather than graduating a year early. Don't be afraid of 300/400 level classes as a sophomore (assuming you're solid for the first 3 semesters). It's a great way to better integrate with upper classmen while you're still a fledgling. Join clubs that do different forms of the work you're interested (applications of theory vs problem sets), or entirely different skillsets**. You should be able to meet people above and below you, enabling avenues to learn and teach. *I never did figure out how deadlines work. **E.g. sports. "The mind cannot exist without the body" - Morbeus
- lampshades 3y agoI've never had a professor understand me like this. I picked up Lisp during my Freshman year when I bought SICP. If you look at my transcripts you can easily infer my mental state at the time. Some semesters all A's, others all F's (or W's), with no rhyme or reason. I graduated with a 1.7 GPA, showed up high to class (if I showed up at all), and barely made it through. It took me 9 years to graduate between all the stopping and starting, working at Pizza shops most of the way through. But I never had problems with the programming assignments or the labs, I enjoyed those. And when I finally got my degree, I found out that all it takes to make hundreds of thousands of dollars is to solve a couple of algorithms for someone. I guess it all worked out in the end, although I do hate the corporate world (and have trouble staying anywhere long) with a passion and would very much like to find a way out. Note: I was put on bipolar medication because of the wild swings in my grades during college, but I don't believe I am actually bipolar so I no longer take it.
- bsima 3y ago> I picked up Lisp during my Freshman year ... I do hate the corporate world (and have trouble staying anywhere long) with a passion and would very much like to find a way out. maybe we should work together
- convolvatron 3y agoI'm going to over-generalize and say that we are a type. while we don't really work that well with people who have different mindsets sometimes, we don't necessarily work very well together either :(
- generalizations 3y agoI think that type is "hacker". Welcome to the club! https://catb.org/jargon/html/personality.html https://catb.org/jargon/html/personality.html
- convolvatron 3y ago
- thanatropism 3y agoI used to be all in on the Blub Paradox discourse -- but I've been learning some C++ for the Arduino and the differences in power with, say, Python, are mainly related to how easy it is to think-as-you-code in a dynamic language. Of course, my life story is such that I've used Python professionally to the extent that I've started to forget all other languages -- so I naturally find the Blub Paradox Discourse favorable. But all the footguns that come with passing around pointers to memory addresses also come with a whole different way of expressing problems; whole different range of thoughts that are thinkable. (I valiantly await the Rust brigade in my replies...)
- netbioserror 3y agoI've found, as a Lisper, that the secret to being effective and valuable to a company such that you're both irreplaceable and not too much of a drag on the rest of the organization is to pick secret weapons that have slightly more overlap with the normal world than Lisp. Clojure, Nim, Elixir, and more faintly flirt with the true unbridled power of a CL environment, but primarily provide useful abstractions and some familiarity, compatibility, and/or killer features that can't be turned down as easily as a true CL environment. It works out, when the company is small enough that you're driving your own project. Just be sure do document what you did.
- potta_coffee 3y agoWhat do you like about Nim? I've started playing with it and it's quite comfy but I don't know much about it's capabilities yet.
- cb321 3y agoNim is terse yet general and can be made even more so with effort. E.g., You can gin up a little framework that is even more terse than awk yet statically typed and trivially convertible to run much faster like https://github.com/c-blake/bu/blob/main/doc/rp.md https://github.com/c-blake/bu/blob/main/doc/rp.md You can statically introspect code to then generate related/translated ASTs to create nearly frictionless helper facilities like https://github.com/c-blake/cligen https://github.com/c-blake/cligen . You can do all of this without any real run-time speed sacrifices, depending upon the level of effort you put in / your expertise. Since it generates C/C++ or Javascript you get all the abilities of backend compilers almost out of the box, like profile-guided-optimization or for JS JIT compilation. EDIT: There really is much more, as with any system - I was just trying to give a flavor of what appeals to me.
- netbioserror 3y agoI refer you to my post on the Nim 2.0 release: https://news.ycombinator.com/item?id=36956144 https://news.ycombinator.com/item?id=36956144
- ianandrich 3y ago
- dang 3y agoRelated: The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=21999802 https://news.ycombinator.com/item?id=21999802 - Jan 2020 (2 comments) The Bipolar Lisp Programmer (2007) - https://news.ycombinator.com/item?id=13467473 https://news.ycombinator.com/item?id=13467473 - Jan 2017 (57 comments) The Bipolar Lisp Programmer (2007) - https://news.ycombinator.com/item?id=8904208 https://news.ycombinator.com/item?id=8904208 - Jan 2015 (11 comments) The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=8801608 https://news.ycombinator.com/item?id=8801608 - Dec 2014 (25 comments) The Bipolar Lisp Programmer (2007) - https://news.ycombinator.com/item?id=3374849 https://news.ycombinator.com/item?id=3374849 - Dec 2011 (38 comments) The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=2275657 https://news.ycombinator.com/item?id=2275657 - March 2011 (86 comments) The Bipolar Lisp Programmer (an oldie but a goodie) - https://news.ycombinator.com/item?id=859669 https://news.ycombinator.com/item?id=859669 - Oct 2009 (22 comments) The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=187867 https://news.ycombinator.com/item?id=187867 - May 2008 (15 comments) The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=78739 https://news.ycombinator.com/item?id=78739 - Nov 2007 (32 comments) The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=20012 https://news.ycombinator.com/item?id=20012 - May 2007 (8 comments) (Reposts are fine after a year or so; links to past threads are just to satisfy extra-curious readers)
- drones 3y agoWhile there are definitely some tortured genius types out there, I think many of those who present as such described in the article really aren't. You know, it's pretty easy to appear like a genius when none of your peers have anything to show for it either. The only question I ask for genius is "What has this guy done?". Which is a pretty difficult question to answer when you're still at school and haven't lived a life yet. Our own self concept is based on the story we tell ourselves. This is an important emotional/intellectual regulatory tool we deal with in a daily basis. Evolution gave us self reflection because it's very useful to us. But it doesn't mean it's a reflection of reality.
- ablyveiled 3y agoGeniuses are Generative
- slushh 3y ago>The flip side of all that energy and intelligence - the sadness, melancholia and loss of self during a down phase. On that other side, the positive side, is there a self? >Another feature about this guy is his low threshold of boredom. He'll pick up on a task and work frantically at it, accomplishing wonders in a short time and then get bored and drop it before its properly finished. Working frantically at a task doesn't sound like self-realization.
- kdmccormick 3y agoWell, sometimes working frantically does get us bipolar folks somewhere, for example: * To a place where other people see the value and join into the project before we burn out. * To a place where a discovery or insight is made that is valuable without needing to be thoroughly polished. IMHO this is why so many brilliant mathemeticians are bipolar: once an insight is reached and communicated, value has been created. No debugging or security updates required :)
- bitwize 3y agoI remember this chestnut from back in the day. Sounds like a discipline issue. If Lisp really is the programming language that appeals to people with discipline issues, then were I a hiring manager a fondness for Lisp would be a no hire.
- d3ckard 3y agoThat's actually great, as you would be doing these people a favour by not hiring them.
- packetlost 3y agoAs someone with pretty bad ADD/ADHD, I sympathize with the other comments in this thread. I personally find languages such as FORTH to pretty "comfy", however I think it has more to do with the interactivity of the development cycle. There are other ways to get this interactivity without doing REPL-driven development. Test-driven development is can get you very, very close to the same thing with most languages.
- wildermuthn 3y agoThis tracks with my own experience, and I don’t believe he is literally saying people of this personality type are medically bipolar. I used Common Lisp for a few years and then switched to Clojure for another four years. At the time, it seemed that Clojure’s ecosystem could overcome the lone-wolf problems that CL faced. In the end, Rich Hickey made it clear that Clojure was his toy that we were lucky to use, and so its ecosystem never took off like it could have. It’s a real pity and a terrible lost opportunity. Since then I’ve gone all in on languages that I don’t particularly like, but whose ecosystems provide such value that the language itself is somewhat immaterial: JavaScript and Python. But I do think about lone-wolfing sometimes, in the context of building new products for myself, If I ever went down that path again, I’d choose Common Lisp over Clojure. Clojure is easier to use, has more libraries, and has JVM interop, but these benefits are outweighed by Clojure’s opinionated restrictions on the language itself. Ultimately, if I am going lone-wolf or nearly-lone-wolf, I might as well use the most powerful language that doesn’t force its opinions on me.
- kaveh808 3y ago"He can see far; further than in fact his strength allows him to travel. He conceives of brilliant ambitious projects requiring great resources, and he embarks on them only to run out of steam. It's not that he's lazy; its just that his resources are insufficient." This speaks to me. As I get older, I am tempted to start curating a list of my "failed" (or abandoned) projects. I have been fortunate enough to launch an open-source 3D graphics Lisp project late in life which has managed to keep my interest. Early on, I made a number of conscious decisions about how I would view this project and avoid some mistakes of my past. - No comparing to existing 3D packages. It's evident that I can't compete with commercial packages with decades of programmer effort. - No hunting for a "better" language (though this hasn't really been a problem). A goal of the project is to develop a system where I can bring the power of Common Lisp to bear on 3D graphics. In some ways this is a throwback of work I did developing 3D graphics on Symbolics Lisp Machines back at the MIT Media Lab [0]. Returning to my youth? - Keep it simple. Or, does it need to be more complicated? Understandable code is a benefit, as is code you can (mostly) keep in your head. Avoid excessively clever code, which I have been guilty of in the past (macros, anyone?). Also (more controversially) avoid dependencies where possible; keep it in house. - Build a community. Having others involved is the best way I have found for not running out of steam. My other projects have invariably been solo efforts. Now I am interested in creating something which will outlast me. Hence the decision to put the project on Github [1]. - This "thing" has value in and of itself, and doesn't need to be "better" than what is out there. By virtue of being different enough, it is a worthwhile project to bring into existence. The world probably doesn't need another browser-based JavaScript package. - Keep the momentum going by working on whatever interests me at the time. Avoiding tedious development and yak shaving keeps me from losing motivation. I do realize the article touches on this as a weakness of the Lisp developer mindset, and I admit to not being motivated to build an industrial-strength system. E.g. my half-baked GUI built on top of raw OpenGL. - Finally (have to stop sometime), don't overthink things. Enjoy the journey. I am enjoying enhancing the system while not fretting over who will use it or for what purpose. The journey is the destination. [0] https://medium.com/@kaveh808/late-night-lisp-machine-hacking-d22a0e2d83fa https://medium.com/@kaveh808/late-night-lisp-machine-hacking... [1] https://github.com/kaveh808/kons-9 https://github.com/kaveh808/kons-9
- YeGoblynQueenne 3y ago1 he is 2 his time 3 he or 4 his assignments 5 he doesn 6 guy is 7 his low 8 his guitar 9 guy and 10 him go 11 him then 12 he chooses 13 he goes 14 his natural 15 he can 16 he wants 17 he goes 18 he relies 19 his natural 20 him through 21 his assignments 22 He experiences 23 his usual 24 He can 25 his assignment 26 he hands 27 he doesn 28 his official 29 him too 30 his UNIX 31 he would 32 he could 33 his own 34 He flunks 35 He ends 36 He can 37 his strength 38 him to 39 He conceives 40 he embarks 41 his resources 42 his own 43 him so 44 he will 45 his sensitivity 46 he knows 47 he smells 48 He can 49 he is My conclusion: this is about something that only happens to guys.
- HymnOfCreation 3y agoI feel this hard, but It is very hard to do low level programming via lisp. I really need an alternate for lisp for low level stuff. Sucks that you dont really have much options. There is forth, but its not standardized like common lisp.