It is quite long, well written and shares some personal anecdotes, so I really recommend it for anyone interested in the history of the language and its influence.
643 karma · joined April 29, 2022
It is quite long, well written and shares some personal anecdotes, so I really recommend it for anyone interested in the history of the language and its influence.
I am really looking forward to learn more about this language when 1.0 comes out, especially because of its ambitious feature list [3] (programming across the low/high-level spectrum, etc.), Lisp influences and the Logo-like syntax inherited from Rebol.
- [1] https://www.red-lang.org/2022/07/the-road-to-10.html - [2] https://www.red-lang.org/p/roadmap_2.html - [3] https://github.com/red/red
Many people (especially those in a lucky environment) can just try to draw realistically (which is actually not that hard, given a good teacher/instruction), study a “hard” topic in philosophy, get good at playing a “hard” song on an instrument or even learn how to prove mathematical statements or how to model and analyze complex systems. We can just try, there is nothing at stake except our time and energy.
When something is really interesting to me, I try not to stop myself from pursuing it just because it is considered “hard”. I have many mental issues (executive dysfunction, bad memory, etc.) but I am also stubborn and curious enough to try anything, again and again if I have to, which I never regretted. It doesn’t hurt and it can be so much fun with a humble and relaxed attitude and especially if I don’t try to compare myself to others, which might be one of the main things that is holding most of us back.
I also have the habit of avoiding most news, but I believe it did not serve me well, since I have been ignorant about many current issues and often feel ashamed when I don’t know things that are very relevant to the lifes of people around me that I may talk to. Especially when there was a recent disaster or political event that made a huge impact and I just missed it and thereby fail to sympathize with someone who is directly affected by it.
But I also see how reading the news can really drag me down and feed into my depression, so a healthy balance always worked best for me, like catching up once or twice a week. I have yet to find a good aggregate source of quality, independent news though.
So many very valuable or important things are just not profitable, but that doesn’t mean they should not be pursued.
Reagent has a nice intro tutorial (classic todo-app): http://reagent-project.github.io and many other helpful tutorials and resources for beginners: https://cljdoc.org/d/reagent/reagent/1.2.0/doc/documentation...
However, since Reagent is still stuck with class-components for more complex behavior and relies on Hiccup, which is nice but has a performance cost compared to pure React, I am unsure about its future. Like some others in the Clojure community, I have moved to thin React wrappers like Helix and use Refx to integrate those with re-frame. It may be a bit confusing right now for beginners since there is no “golden path”.
Also, unfortunately, many smaller libraries are poorly documented and it seems like it is expected from the developer to dig into the source code to find out what’s going on.
What I found the most difficult as a beginner was how to setup a project in ClojureScript in the first place, like all the configuration in shadow-cljs, how it interacts with deps.edn, how it integrates with npm, the REPL, etc. But dev/build config has always been a weak spot for me, so it might be just that.
Overall, I still very much enjoy working with Clojure(Script), more than in any other language. Anyone who likes Lisps and functional programming should give it a try (and be sure to watch Rich Hickeys amazing talks!).
However, Melange seems to head in a good direction too and I guess it would be amazing for people who are already familiar with OCaml and want to integrate with libraries and codebases there. So I think both projects are valuable in their own right for different use-cases.
Modern note-taking tools help our brains with their limited capacity to manage greater complexity, discover obscure connections and, of course, safely forget to free working memory for other things.
However, if you just write down some ideas from time to time that are not really related to each other or stash resources like interesting weblinks without making an effort to organize and connect them in meaningful ways, fancy new apps and features won’t really provide much value beyond just using a plain old notebook.
Overthinking really seems to be an issue with users of networked notebook apps and it can waste a lot of time and money. We should stop building elaborate systems or focussing on complicated workflows unless we really have a strong motivation, such as deep, long-term research and study. Serving this motivation will then be the actual focus of our efforts, not the tools or workflows themselves. It can be fun to explore “tools for thought” on their own, but they will not magically change our lifes if they cannot solve a problem that is meaningful to us.
Love this metaphor. Hiding the main nav behind a generic button always gives me the impression that the designers don’t really see it as an important part of the website. Imagine you’d have to open up an unlabeled closet to find the navigation signs in a public building that actually show you what is where. Or if the table of contents in a book was hidden inside the folded cover.
I can see the problem with space and touch target size on mobile and don’t really have a better solution for that (maybe call the button “menu” instead and limit the number of top-level items like you would in a “proper” nav), but I hate to see hamburger icons on desktop screens.
However, it is not the most accessible of websites and I certainly wouldn’t want to have e.g. Wikipedia be designed like this (oof), but I don’t mind the occassional quirky rebellious web design adventure.
We have to know our target audience well and always question our assumptions about them, because sometimes it may be surprising to see what users are willing to learn if they feel it is worth the effort. And sometimes it may be worth losing a part of that audience while the ones that stay will be much more convinced about what the product can give them back.
> “I think we project grids outwards onto the world from within ourselves, shining their structure from our minds. We radiate grids.”
I don’t know if the author is aware of this, but neuroscientists discovered what they call “grid cells”: “a type of neuron within the entorhinal cortex that fires at regular intervals as an animal navigates an open area, allowing it to understand its position in space by storing and integrating information about location, distance, and direction.” [1]
I believe grid cells, together with place cells [2] may explain a lot about not only how we make use of diagrammatic tools but also how we form and navigate our more abstract conceptual spaces. For anyone interested, I recommend this great article on Quanta: https://www.quantamagazine.org/the-brain-maps-out-ideas-and-...
[1] https://en.wikipedia.org/wiki/Grid_cell [2] https://en.wikipedia.org/wiki/Place_cell
This is a design challenge: crafting tools that are laser-focussed on their actual purpose and trying to make it as straightforward as possible for users to do what they intent to do. It takes empathy and clear, simple and pragmatic thinking, which can be surprisingly hard for many people and I believe it becomes harder the more we become entrenched in our profession and its way of doing things.
In my own experience, if I had not discovered Processing I am not sure if I would have actually gone down this path and become a developer. Before that, I had so many frustrating experiences with tools and especially the command line. Everything was just so opaque to me, since I had no one with programming experience to guide me through and when I tried looking something up, I felt like I was going down a neverending rabbit hole. Now I really enjoy digging into the most obscure tools and programming languages, use Vim and Emacs daily (yes, you can like both) and actually enjoy writing shell scripts.
I think if beginners actually get to experience what it is like to program something that is meaningful to them, that they care about or just enjoy, they will become motivated to learn all the hard and annoying things as well. But they should not be stopped by hundreds of landmines and roadblocks before they even get there.
I just love how simple it is to stick anything together via the universal plain text interface in the shell and even pipe this text/dataflow through interactive tools like fzf, as you just mentioned.
fuzz() {
file=$(fzf)
if [ ${#file} -gt 0 ]; then
nvim "$file" # or any editor you prefer
else
:
fi
}When I saw it the first time, it was unclear to me that I can even click on it, since it doesn’t look much like a button. They shouldn’t hide such important settings in a tiny icon or at least should have made it much more apparent that it is clickable.
Couldn’t find any settings related to the closed lid though.
Vimium has a lot of other great functions, but I don’t use them often enough to remember them, maybe I should.
However, I have to exclude it for a lot of webapps and websites where keybindings are used to trigger different events, which is sometimes annoying if you don’t know or forget about it.
Check out the course outline as well as the links on “Lectures with drawings”, “Vocabulary” and “Directory for Program Files”. There are also some links to Clojure resources in there that may be useful as well as some study guides and questions.
I might just try to work through the PDF, looks like a pretty interesting course.
But it has also been a fun and liberating experience, after I went down the static type route for some years. I feel like Clojure just doesn’t get in my way and doesn’t force me to follow a certain style or paradigm; it provides many different choices (“providing more” instead of “taking away”) and treats you like an adult who can make responsible decisions on their own.
Although I missed the linguistic art of domain modelling through type definitions, spec gave me some of that back and even provides stuff like generative testing, which is pretty awesome. Of course, it is not meant as a replacement for static typing and has a different philosophy (see Rich Hickeys talks about it), but for me it is the best of both worlds.
The dynamic development style is something that I experienced before through learning Lisp/Scheme and it is also one of the thing that I enjoy most about Clojure. Coding “experimental”, building functions from individual pieces that I iteratively design using the REPL as my assistant (which actually means - as parent wrote - communicating with it from the editor itself, which we mostly do), feels so natural and I would miss it now that I am so used to it.
When I was young, generating visual things was my gateway-drug to programming. With all the tooling, frameworks, workflows, concepts, etc. that you have to learn today in order to do even simple things, programming can become pretty overwhelming to someone who is just starting out. Processing is like a sandbox that is simple, but still keeps you close to the metal and provides a fun and liberating environment to grow your skills.
It may not be for everyone, which also depends on what your son is interested in building, but creative/artistic expression through code is something that I believe everyone should experience at some point.
There are many great learning resources for Processing that cover the whole spectrum from very easy stuff to more advanced projects that involve physics simulation, fractals, 3D graphics, etc. I especially recommend the video lectures by Daniel Shiffman, who teaches even advanced topics in a fun and engaging way: https://processing.org/tutorials
I’ve been using TheBrain (previously called “PersonalBrain”) for more than a decade now and got a lot more value out of its graph-based navigation and spatial linking concept than I would have with any of the text/outliner-based tools that have been popping up recently (although I use some of them too, for different reasons).
So if you would also do it just for fun and fun is the main reason why you do it, I would say that “play” is an accurate description – which seems to be the case from what I read in your post.
However, my definition immediately rules out any activity enforced by a company that may be labeled as “play”, but actually feels more like work for the people involved for the reasons mentioned above. People may also feel forced to create play projects because they want to get hired by you – also not “play” in this sense.
Sometimes when I don’t see any progress, this thought is what really brings me down. It feels pointless and makes me want to do more enjoyable things.
One of the hardest things in life is to recognize when you really should give up, because you are holding on to something just because you want to persevere to reach some questionable goal in the future, but in the end it just makes your present more miserable. Of course, this is not to say that there are goals that are really worth the sweat and tears.
It uses paredit (among others) for its low level functionality, but the vim-style modal interface allows you to manipulate the tree structure with single keystrokes in a precise and very expressive way. Keep in mind that you have to actively learn how to use it and it will feel awkward at first (similar to how vim feels for beginners), but I find the editing experience very pleasent and smooth after I got used to it.
Another thing I really like about it is that you can still switch to normal mode and it doesn’t get in your way like other plugins where I had to change my keybindings all the time because the amount of convenient shortcuts is still quite limited in the end. This modal switching to different editing contexts (or languages?) is something I feel should be explored much further.