Real World Haskell was pretty good last time I read it. It has lots of concrete code examples that you can use in real world applications. It won't bore you to death with abstract theory and instead it will blend it with real world problems and make learning both fun and useful at the same time.
Coroutines are good for modelling concurrency which is different from parallelism. Concurrency is useful for abstraction and expressiveness. Parallelism is useful for making your code run faster by running parts of it in parallel on multiple cores. You could make concurrent programs run faster on multiple cores by distributing the coroutines which don't share state on multiple working threads in a thread pool, thus mixing concurrency and parallelism...but they are still two different things with different purposes.
Lisp is great for creating your own domain specific languages. S-expressions are basically abstract syntax trees written as code. Thus you can take any code written in any language and "lispify" it into an S-expression. Then you can apply various transformations/analyses on this expression to achieve various goals:linting, semantic modeling, compiling to machine code/bytecode, transpiling to another laguage, interpreting, optimizing, etc. Common Lisp also has the possibility of on-the-fly recompilation of classes and methods/functions which can be useful for debug and incremental development.I don't have much experience in the web development area but I would incline to think that you won't get much added value from using CL compared to other languages/frameworks. It can be useful if you want to develop your own framework with custom language constructs and features. But if you want to fast prototype a webapp idea you're better off trying the more popular solutions.
Just have the user calculate an average difficulty integral. If he/she succeeds they are of legal age or very close to it. Even if they use Wolfram Alpha that still denotes some level of maturity which is consistent with legal age.
HN is my goto place whenever I feel bored, sad, lonely, without purpose, lacking inspiration etc. It's amazing how a single website with such a minimalistic design can condense so much quality content and quality people in a single place for the whole world to enjoy free of charge. Thanks and Happy New Year!
Mastodon is amazing as it offers the same perks as mainstream social media but without all the privacy issues and big tech exploitation of users. But it still feels very detached from the real world. I use facebook or meetup to discover social events near me where I can find like minded people to talk to. There are so many things which I first learned from face to face meetings with real people. Things which I never would have discovered by simply browsing the web on my own. I wish the fediverse and the indie web would provide some simple safe decentralized means to connect real people in the real word the same way mainstream social media did.
I'm not a fan of any IDE brand or company. I'm a fan of features. Any respectable IDE must have the following features:
- jump to declaration
- autocomplete of fields and methods of an object
- autocomplete or tool tips for function arguments
- code templates
- find all the usages of a variable, type or function
- rename variables, function, types etc. all over the code base(and do it correctly not blindly like with sed)
- select a piece of code and extract it into a function
- select multiple fields and methods and extract them into a separate class
- highlight pairs of parentheses, brakets, curly braces and be able to jump between them
- highlight searches
- show line numbers
- search/replace text in current file or over multiple files(aka grep and sed but integrated into the UI)
- be able to open a terminal in a pane
- search for a type all over the code base
- search for a global function or variable all over the code base
- display tree of included files(for languages that allow including other source files like C++)
- display tree of subtypes/supertypes of a specific type
- display a list of all overrides of a method and be able to jump to them
- semantic checks(e.g. check that the types of the arguments in a function call match those from the function declaration - of course for languages that have a type system)
- display syntax/semantic errors as I type
- a file explorer should always be easily accessible
- automatically select the current file in the file explorer; be able to turn this behavior on or off
- Copy the full path of the current file to clipboard
- Copy the name of the current file to clipboard
- Autoformat the code
- Autoindent
- Syntax highlight
- debugger integration
- build system integration
- display an outline tree of the source code ine current file
- have a local history of all the changes to a file
- version control integration
- diff between current and previous version of the current file
- search files by name in the entire code base
- when many editor tabs/buffers are opened, search through them by file name
- spell checking in comments, be able to turn it on/off
- generate documentation from comments
- fold/unfold code blocks
- replace tabs with spaces
- show special characters
- block editing
- place coursor in multple places and perform the same editing changes in multiple places at once(like in sublime)
- jump over paragraphs
- jump to beginning/end of file
- open documentation of function/class/type/etc. under the coursor
- set bookmarks in code
- have a history of searches and be able to redo older searches
- list all TODOs/FIXMEs from all over the code base
- split panes vertically/horizontally
- textual autocomplete (meaning autocomplete if identifier is already present in current file)
- linter integration
- UML diagram generation
- erase the current line with a single key binding
- move current line up/down with a single key binding
- display object instance tree
- and possibly many others that I just can't remember right now...
Now I don't care if it's vim, emacs, vscode, eclipse or jetbrains offering these features. From experience I learned these features make me most productive...coupled with command line tools it gets even better. So if these features/tools are available in an IDE/tool suite then I'm a happy programmer and I will use them. I don't have time to be a fan of this editor or that editor...even though I do like to enable vim key bindings if they're available once in a while.
You would need to be able to predict when and where these plumes will take place and then calculate the orbital maneuvers needed to intersect the spacecraft with those plumes. This will be very hard to achieve with a 1+ hour communication delay. Most likely you'll have to rely on some autonomous AI based on some sort of reinforcement learning algorithm. Also, orbital maneuvers that involve changing the orbital plane are very expensive in terms of fuel consumption. So first there will have to be an observation stage to determine which orbital plane is most likely to encounter a plume and then explore various orbit trajectories inside that plane until enough samples are collected.