566 karma · joined July 2, 2017
For example, let's say your language had 'if' but not 'case', then it would be possible to write a case macro that in the end transforms at compile time into a bunch of ifs. Macros allows you to create new language syntax and express your intent more clearly.
When removing a feature, you have to understand all the real world use-cases, before you can kill it. This is a lot of work, therefor it is much easier to not touch it and work on the next feature.
Microsoft -> The name of the format is 'comma separated values' not 'semicolon separated values'!
The future is long term probably in the web, I'm just not sure we are there yet.
Stopped reading here. It's not about ideas, it's about having an understanding what could be done. If thinking is grounded in reality and your resource constrains, ideas are worth a lot. Otherwise all your company would do is copy other companies.
That's what I currently use to switch quickly:
(use-package ace-window
:defer t
:init (key-chord-define-global "ii" #'ace-window)
:config
(setf aw-scope 'frame))Today some tasks like mass renaming of files of a certain type require an extra tool for a casual users, which is in most cases not available and the task therefor not doable. This is a pity and wastes a lot of potential/productivity.
If programs where things you could easily talk to - and I don't mean by using a programming language - then filtering and renaming some files should be easy.
This kind of mechanism would also allow to blur the line between the traditional desktop, the cloud and AI (something that has been tried before, but failed because the use-case where not compelling). For example, if Microsoft would update Windows in such a way, every user could have some cloud points for AI image recognition per month. If for some reason you needed to do a lot of image recognition, you would have to pay extra. Which would be okay, since using "more resources" creates costs somewhere and we as society agree that someone has to pay for it -> capitalism. This blending of ecosystems and capabilities is where things should be going, but strangely none of the big tech companies seem to pursuer such a path.
I'm thinking more and more about doing the same. But – there is always a but – I also dislike some other things:
Fix procedure signatures → Why is there 'remove' and 'delete'? Scheme is not statically typed, but strangely enough, this fact in not exploited often. There should be only one word with the meaning "delete" in the programming language.
Fix argument positioning → The order should always be: proc-name, main-object, arguments... Ideally one should be able to guess the name and arguments of a procedure.
Fix procedure names → Some procedure names are too long or have strange names. List procedures should have a list- prefix, only Transducers or generic procedures should have no prefix.
Also maybe stop supporting a :key argument and design everything to use lenses to target sub-structures.
Some handy general purpose procedures are missing here and there, so an improved prelude should come with them, too. I don't want to import multiple string/list/whatever-libraries to handle a task. The nice thing about Scheme is, all of this is doable.
If you speak different languages, the left hand bar is very useful to switch between different language versions of an article.
For example: If I get a file via email, I might also have a local copy that got updated and is newer. Part of the conversation might not have happened on email but on [random messenger app] and on one of the many [things with a CPU] that I own. Even with a Hey like system, the situation stays almost the same → the user has to remember "stuff" and look-up different places to find what he is searching for → this is sooo 1990. </rant>
I've even read most Nix Pills posts, but didn't like them much. Too many details about things that I didn't understand at the time of reading, so the why got lost. In Nix you get a lot of details, what is missing is often the why and how. For example I wanted to have a CLI command available with a binary build, finding out how to add the CLI tool to the package through wrapProgram in postInstall wasn't fun. Overall Nix is awesome, but here and there it is hell of a lot frustrating. After reading so many hours I should not have to ask how to install a custom package the right way.
function nix-local-build
nix-build --no-out-link \
-E '(import <nixpkgs> {}).callPackage ./'$argv[1]' {}'
end
To build and install something I run: nix-local-build some.nix
nix-env -i [store-path-from-build]
The .nix file is in the same format as e.g. pkgs/tools/misc/bat/default.nix.Question 2 - How to include such a derivation into configuration.nix?