I 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.
ADDENDUM: 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.
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. 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.
> 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.
I 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.
> 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.
I 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.
It'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?
> 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).
While 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.
I'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.
Diversify, 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
One 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)...
I think you're right to be concerned. I coasted through secondary school with a 4.0..and when I reached undergrad I didn't have the tools to apply myself. I wasn't a big fish in a small pond anymore, I was near the bottom of the heap. first year I did ok, but by the end of the second I was irrecoverably lost.
my advice is to figure out what you want to get out of it. sure, maybe you need a degree, but that's a really big space. most of it seems like a pointless sysiphysian exercise. but there are some really great teachers and peers in there, and a lifelong passion if you can find it.
Not 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.
I 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.
I 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.
> I inevitably end up calling out their bullshit and/or start seeing the pointlessness of it all
The fundamental point to keep in mind is that it does not matter. The only thing you are entitled to in a corporation is your salary. Interesting projects and things making sense all over are just side perks. They are very nice perks, I have to say, but they don't pay your rent or put food on your table.
That pretty much describes my "career" of the past 20 years. Lately it's been getting harder and harder to get _any_ job. These days it's either web dev which has reached unbearable levels of idiocracy with its endless tail-chasing web frameworks, microservices and even the platform itself (DOM/CSS), or it's million-line C++ legacy-on-arrival abstraction shitfests written by OOP-heads. It feels like there's nowhere to run.
1 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.
I’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.
I'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.
This 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.
I 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
Got medicated, and reduced the amount of billable hours to a minimum that lets me make rent, and gives me a ton of unstructured fun time to pursue today's source of dopamine. Today it's one library, tomorrow it's hacking on a project, next week, who knows?
In other words, make it so programming is a way to express your creativity, rather than simply your day job.
There 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: mania and depression are not exclusive.)
This 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.
The 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?
I 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...)
As 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.
>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.
Well, 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 :)
I 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.
Shen does something unusual in deployment. Their idea is to write a smallish number of intrinsics and data structures in your main language, and then import the shen interpreter on that. This gives you code written in shen, callable from the host language.
This is interesting for sharing code across multi-language projects, e.g. as a JavaScript library and a Java one, where the shen interpreter gets written once per language and now all your library code is callable from any of them.
I think it's a minor misfire that this is an interpreter, as opposed to a compiler from shen to whatever language, but that would be fixable. I'd rather compile the shared definitions to raw c++ code ahead of time than run an interpreter.
Aside from that, the definition is mostly in shen (modulo said primitives) so it has an axiomatic angle to it, and the type checker is a prolog. Compiler and prolog engine both available to user code of course.
I 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.
[+] [-] sph|2 years ago|reply
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.
[+] [-] sph|2 years ago|reply
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.
[+] [-] distcs|2 years ago|reply
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.
[+] [-] _ea1k|2 years ago|reply
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.
[+] [-] BoxOfRain|2 years ago|reply
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.
[+] [-] ska|2 years ago|reply
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.
[+] [-] brabel|2 years ago|reply
[+] [-] sudosysgen|2 years ago|reply
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|2 years ago|reply
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).
[+] [-] 39|2 years ago|reply
[+] [-] ergonaught|2 years ago|reply
[+] [-] galfarragem|2 years ago|reply
[+] [-] lars-b2018|2 years ago|reply
[+] [-] drones|2 years ago|reply
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|2 years ago|reply
[+] [-] teddyh|2 years ago|reply
[+] [-] dang|2 years ago|reply
The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=21999802 - Jan 2020 (2 comments)
The Bipolar Lisp Programmer (2007) - https://news.ycombinator.com/item?id=13467473 - Jan 2017 (57 comments)
The Bipolar Lisp Programmer (2007) - https://news.ycombinator.com/item?id=8904208 - Jan 2015 (11 comments)
The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=8801608 - Dec 2014 (25 comments)
The Bipolar Lisp Programmer (2007) - https://news.ycombinator.com/item?id=3374849 - Dec 2011 (38 comments)
The Bipolar Lisp Programmer - 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 - Oct 2009 (22 comments)
The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=187867 - May 2008 (15 comments)
The Bipolar Lisp Programmer - https://news.ycombinator.com/item?id=78739 - Nov 2007 (32 comments)
The Bipolar Lisp Programmer - 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)
[+] [-] Aerbil313|2 years ago|reply
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.
[+] [-] talldrinkofwhat|2 years ago|reply
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
[+] [-] dermesser|2 years ago|reply
[+] [-] convolvatron|2 years ago|reply
my advice is to figure out what you want to get out of it. sure, maybe you need a degree, but that's a really big space. most of it seems like a pointless sysiphysian exercise. but there are some really great teachers and peers in there, and a lifelong passion if you can find it.
[+] [-] spazmoth|2 years ago|reply
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!
[+] [-] cgio|2 years ago|reply
[+] [-] jwmcq|2 years ago|reply
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.
[+] [-] rglullis|2 years ago|reply
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.
[+] [-] pif|2 years ago|reply
The fundamental point to keep in mind is that it does not matter. The only thing you are entitled to in a corporation is your salary. Interesting projects and things making sense all over are just side perks. They are very nice perks, I have to say, but they don't pay your rent or put food on your table.
Keep this is mind and life will get easier.
[+] [-] capr|2 years ago|reply
[+] [-] adrianN|2 years ago|reply
[+] [-] YeGoblynQueenne|2 years ago|reply
[+] [-] kragen|2 years ago|reply
[+] [-] jakeinspace|2 years ago|reply
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.
[+] [-] netbioserror|2 years ago|reply
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|2 years ago|reply
[+] [-] ianandrich|2 years ago|reply
[+] [-] dj_mc_merlin|2 years ago|reply
Other people in this position, what did you do?
[+] [-] mcluck|2 years ago|reply
[+] [-] sph|2 years ago|reply
Got medicated, and reduced the amount of billable hours to a minimum that lets me make rent, and gives me a ton of unstructured fun time to pursue today's source of dopamine. Today it's one library, tomorrow it's hacking on a project, next week, who knows?
In other words, make it so programming is a way to express your creativity, rather than simply your day job.
[+] [-] tokai|2 years ago|reply
[+] [-] kayodelycaon|2 years ago|reply
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.)
[+] [-] wildermuthn|2 years ago|reply
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.
[+] [-] reilly3000|2 years ago|reply
[+] [-] thanatropism|2 years ago|reply
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...)
[+] [-] packetlost|2 years ago|reply
[+] [-] slushh|2 years ago|reply
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|2 years ago|reply
* 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 :)
[+] [-] mav88|2 years ago|reply
[+] [-] bmitc|2 years ago|reply
https://shenlanguage.org/
Why would one use Shen over Common Lisp, Racket, Chez Scheme, or Clojure, for example?
[+] [-] bsima|2 years ago|reply
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
[+] [-] JonChesterfield|2 years ago|reply
This is interesting for sharing code across multi-language projects, e.g. as a JavaScript library and a Java one, where the shen interpreter gets written once per language and now all your library code is callable from any of them.
I think it's a minor misfire that this is an interpreter, as opposed to a compiler from shen to whatever language, but that would be fixable. I'd rather compile the shared definitions to raw c++ code ahead of time than run an interpreter.
Aside from that, the definition is mostly in shen (modulo said primitives) so it has an axiomatic angle to it, and the type checker is a prolog. Compiler and prolog engine both available to user code of course.
[+] [-] HymnOfCreation|2 years ago|reply