I have been doing something like this, every day, for several years now. I started with a more gentle kind of tape that doesn't go over your lips. But after trying different kinds of tape, I just stick a small piece of medical tape over my lips now.
I don't have sleep apnea but had a tendency to breath through my mouth at night. It worked almost immediately for me. And what's more, after my body got used to it, I could have a stuffy nose before sleeping, stick on the tape, and when I lie down, my nose would clear up, like it was conditioned to do that.
I use nix-shell when possible to specify my entire dev environment (including gnumake, gcc, down to utils like jq)
it often doesn't play well with venv and cuda, which I get. I've succeeded in locking a cuda env with a nix flake exactly once, then it broke, and I gave up and went back to venv.
over the years I've used pip, pyenv, pip env, poetry, conda, mamba, younameit. there are always weird edge cases especially with publication codes that publish some intersection of a requirements.txt, pyproject.toml, a conda env, to nothing at all. There are always bizarro edge cases that make you forget if you're using python or node /snark
I'll be happy to use the final tool to rule them all but that's how they were all branded (even nix; and i know poetry2nix is not the way)
I generally use nix-shell whenever I can too, only resorting to `uv` for projects where I cannot expect others to neccessarly understand Nix enough to handle the nix-shell stuff, even if it's trivial for me.
AFAIK, it works as well with cuda as any other similar tool. I personally haven't had any issues, most recently last week I was working on a transformer model for categorizing video files and it's all managed with uv and pytorch installed into the venv as normal.
I like this, but forgive me for asking a bunch of obvious, ungrateful armchair questions
- what are the core concepts that you've distilled from 15 years of hosted lisp?
- are these thus the most foundational types?
- how fundamental is cross-language data interop in your design so far / in the future?
- what are the main driving principles in eli (as compared to say shen)
- will there be host language interop?
- what main use cases are you targeting with eli?
clojure has been my poison, but as I've worked with teams I swung back on types and almost entirely stopped using it. but its hosted implementation, syntax, and data interop (edn) is probably the most usable in my experience, although something has always been missing, and in python land hylang is the most credible, but the DX never feels quite right
It is what it looks like, I'm not here to prove or sell anything.
Which is my main issue with Clojure, as well as Rust any many others these days; too religious for me, too much of an agenda. I like powerful tools for solving problems, hacker tools.
My main use case is embedded scripting, but I'm also using it as a more convenient Common Lisp for prototyping ideas and solving quirky problems.
The flake is unfortunately stuck on an old version (v2.0.0), since they changed how it's built with v2.1.0 and I haven't gotten around to fixing the flake, I'll try to see if I can get an update for it soon.
I might sound like heretic but as someone who always keeps an eye out for configuration systems (I've tried edn, raw json, dhall, cue, hcl to name a couple) over the years, I'm sticking to jsonnet + jsonschema. Some reasons in favor of what might seem like an antiquated / type-poor system:
- jsonnet fixes almost all of the superficial complaints people have about json (no comments, invitations to inconsistent layouts, no composition, no functions)
- jsonnet has a very handy formatter and has trailing commas (simple diffs)
- jsonnet can import jsonnet as well as json so you can "refactor" your configs using code and/or plain data
- json is everywhere and nearly every language has a parser the standard libraries
- jsonnet is not turing complete; I consider this a huge plus as effectively you are always operating in "data space"; everything is a shape transform, nothing more, nothing less
- you can do further slicing and dicing with other mature tools like jq, jc, yq, gron, whatever
- your outputs being plain old json, leverage whatever json schema ecosystem tools you have
- json schema being old, you have lots of codegen tools available
- the jsonnet library has go, python, node, C++ bindings
- super easy to learn and run interactively
the biggest thing that's sorely lacking in this ecosystem are whatever jsonschema doesn't support in its spec for validation, like complex XOR relationships. Sometimes I wish these are declarable in data space, but on the other hand, configs with complex relationships like these often have business code backing them. Another weakness is if you have a large anthology of schemas/templates/source data you need to figure out a management method and hierarchy yourself.
Maybe pkl has a nice answer to these but J+J is really quite robust. I'd even go further and say it's beneficial to adopt a schema-first mindset and make it a habit to generate schemas. These tools are so lightweight and ubiquitous, it makes quick work for cranking out a schema and validating everything as you go.
edn + clojure was the most pleasant configuration system I've worked with, but I have never convinced anybody else to use it. Jsonnet on the other hand, people get productive in it pretty quickly. It's my default choice for all configuration now.
I wonder, what would happen if Clojure was marketed as a configuration file format from the very start, without mentioning persistent immutable data structures, software transactional memory, and other scary words. Would it have more adoption now?
I doubt it; edn seemed like _that_ rebranding effort. It looked json-like enough, but clearly didn't have the draw. People who complain that json has no comments obviously have a secret list of other gripes.
The general tooling wasn't there, apart from clojure. I tried one of the edn libs for python/node and it always felt second class. The full power was just never there outside of clojure projects.
It's like how everybody still uses QWERTY (including me) and are happy to buy better keyboards, but they must still be in QWERTY
I use jsonnet for templating and transformation and jsonschema for validation. Very happy with this combination. One big reason is that there are lot of libraries and codegen tools to choose from once you have the JSON generation pipeline (including schema generation) down.
I started learning the soroban (Japanese abacus) 2 years ago because I wanted to understand how people used it to perform calculation feats. I spent a year practicing using the abacus mechanics, and another year replacing the physical abacus with a mental abacus, so I can operate it all in my mind.
So here's some analysis of my progress. My results aren't impressive, but cultivating the mental abacus has been quite interesting!
I used it for a few research projects around the same time. Overall it was a good experience, even after wresting with the macro system, and I was very sad it didn't reach wider adoption.
A few years later I tried to rebuild an old project running openfl 3.0 and failed miserably. I ended up building a docker running an old base image to get it working. That made me realize that the haxe community toolchain also evolves quickly in a non-compatible way.
The TypeScript ecosystem already way too large and way too fast. It's hard to follow both. It's also harder to find collaborators / hires.
In a fantasy world a megacorp would pick up haxe as a main driver and pump money into the ecosystem and make lots of people haxers.
I don't have sleep apnea but had a tendency to breath through my mouth at night. It worked almost immediately for me. And what's more, after my body got used to it, I could have a stuffy nose before sleeping, stick on the tape, and when I lie down, my nose would clear up, like it was conditioned to do that.
10/10 would recommend