Things I want to figure out/see implemented eventually
These are mostly half baked, some are kinda weird, so even unclear if worthy of exercising. But if several people have similar idea, perhaps you are all onto something.
Priorities roughly indicate how important is the topic to me.
If you have thoughts on some of these, please don't hesitate to reach me!
Table of Contents
- TODO[B]distributed cloud sync (Dropbox/Syncthing)cloud
- TODO[C]instant messengers are too linearimcommunication
- TODO[C]structured VCSvcs
- TODO[C]human anatomy simulationhumanbodysimulationexercise
- TODO[C]programming language in which correct programs are feasible physical statespltphysics
- TODO[C]phone app for keeping sensitive dataprivacy
- TODO[C]OS should have better macro/keybindings capabilitieshotkeyssetup
- TODO[C]can we extend type theory derivatives to partial derivatives and manifolds?plt
- TODO[C]dependent type checker tool, similar to mypypltmypy
- TODO[C]how to generate/where to get reasonable showcase data for memex/quantified self tools?jdoequantifiedselfmemex
- STRT[D]share highlights from Kobo to Goodreadskobopkmreading
- TODO[D]continuous piano keyboard. When you press a 'key', the harmonics are highlighted as well as octavesmusic
- TODO[D]coffee brew simulationcoffeesimulation
- TODO[D]machine learning tool, showing muscles and bones on athlete in real time (e.g. as an overlay)humanbodymlar
- TODO[C]interactive simulator for impact of diet on the environmentenvironmentfoodsimulation
- TODO[D]better 'set topic' interface for Githubgithub
- Half baked stuffthink
- TODO[A]tinder for code reviews/testing projectsprogramming
- TODO[B]what would be a 2d analogue for yield?programmingpython
- TODO[B]sunk cost of lifedeath
- TODO[B]connections of Hamiltonian equations and programming?symplecticphysicsprogramming
- TODO[C]can we deep learn Newton's equations?mlphysics
- STRT[C]sync Github issues with a text file?github
- TODO[C]reverse debugging: set variables to specific values and then reverse program logic to get consistent execution?debug
- TODO[C]how to communicate experiences better?
- TODO[C]tower defense quantum fieldqftgame
- TODO[C]harmonic equation looks kinda like universe expansion?cosmology
- TODO[C]how does uncertainty principle apply to quantum information? What's the amount of information we can simultaneously know?quantum
- TODO[C]The Entertainer cover from Westworld got an extremely satisfying orchestra intro at around 0:26musicart
- TODO[C] Tiny Bombs in your Blood - The Complement Systemvishumanbody
- TODO[C]call/cc ; coroutine style thing but for defensive error handling/yielding? not sure how it'd looklisperrors
- TODO[C]hierarchy: byte -> character (e.g. unicode) -> ???? -> ASTprogrammingvcs
- TODO[D]natural language with optimal sounds set (in the sense of Huffman coding)language
- TODO[D]negative types, complex types. Is there something related to terms the same way as terms related to types?plt
- TODO[D]fiction story about someone who lost all the references and got garbage collected
- TODO[D]the set of computable numbers is represented by a computable number itself?
- CNCL[D]predictive keyboard exploiting grammarandroid
- TODO[D]speed up of sense of time with age: some sort of time dilation because of thinking 'velocity'?physics
- TODO[D]voice transfer HAL voiceml
- Shower thoughtsthink
- STRT[B]what occupations are the computer programming of 1980s?future
- STRT[C]how to spot a p-zombiesolipsismai
- TODO[C]wonder if with proper mypy stubs we can make datetime tz aware/unawaremypy
- TODO[C]why most popular music has such regular structure?music
- TODO[C]mind-melding and deathminddeathbci
- TODO[B]digital enzymes that act on the bits of information
- TODO[C]what if I suddenly go blind one day?healthprepping
- TODO[D]why are avocados fatty? They are literally the only fatty fruit I can think of.food
- TODO[D]do different amino acids matter for human body?nutritiondiet
- TODO[D]eating organ meat is more respectful for the slaughtered animals?food
- STRT[D]wonder how easier is it to aim for tie in chess than for a winthink
- Similar pages
Basically, continuous (e.g. inotify-backed), open source and always available file sync.
- Dropbox is continuous, but proprietary. It's not distributed, but central server tends to be very available.
Syncthing is continuous and open source, but only syncs among your own devices. If all of them are off, you wouldn't be able to access your files.
It's also not necessarily very friendly towards average user: it works best when you have a device that is always on like a VPS.
Ideally, it would be something based on Bittorrent, and the chunks of data would be distributed among participants with sufficient redundancy. So most of the time you would rely on your own devices like in Syncthing, but in case of device loss or temporary outage you'd be able to assemble the data from redundant chunks in the peer network. Not sure how much redundant it has to be and if that approach works in practice.
¶TODO[C]instant messengers are too linearimcommunication
You chat with someone and discuss something. Because conventional IM software imposes timestamp ordering, it often ends up interleaved with some ongoing things (e.g. "by the way remember about that thing tomorrow"), and you distract or switch. The discussion gets forgotten and/or the context is lost.
It's way worse in bigger Slack or Telegram channels (e.g. 15+ people). Sometimes you (well, at least I do) wait to post a message because you don't feel like interrupting some ongoing discussion and you don't want your message to be buried either. So you have to keep it somewhere and make a reminder or something, which is cognitive overhead. Because of the overall volume of messages people tend to mute group conversations, and then miss actually useful stuff.
Ideally, in a certain group chat/channel you should be able to:
- fork conversation off an arbitrary message, so you'd have a tree.
- view all the ongoing conversations/threads. Mute, mark as high priority, etc.
- perhaps archive the ones that are not relevant anymore.
Currently existing things I know of:
- Google wave?
- Telegram got replies which work in very few specific cases and not very sustainable for a proper conversation.
Slack got threads, which sort of solve this issue.
You can't turn old conversations into threads, but if you notice an opportunity early, or make a habit of spinning off early, you can work with it. It's not really used for personal conversations thought.
- XMPP is dead I guess, so not sure how easy it would be to prototype that.
Interesting enough, meatspace conversations also have this curse of linear order let alone other aspects that make them hard! But that's a whole different problem.
- Zulip looks promising
- Chatting with Glue: Cognitive Tools for Augmented Conversation: comic exploration into nonlinear messaging UI
Something that understands the syntax of programming language and operates on top of that. So for instance, reordering methods in a class would be trivial operation and not show up in diff. There are some caveats though: e.g. in some dynamic languages order of definition might matter, so you still want it to be backed by plaintext, probably. Perhaps it has to be a diff filter rather than full scale VCS.
¶TODO[C]human anatomy simulationhumanbodysimulationexercise
Kinda like a ragdoll with certain presets for muscle/skeletal configurations that allows you to mess with the model with realistic physics. If such a thing existed, it would help with:
- assessing safety of weight training
- safely of your seating/sleeping posture?
- increasing exercise efficiency. There is so much advice on the internet often claiming contradictory or hard to believe claims. If you could simulate the effect on the mode of your own body, it would make way more sense.
There are some reasonably interactive visualizations out there:
Looks pretty cool, but in my understanding it only results in realistic tissue movement (jiggling/bending) and you still have to take care of skeletal and tendon movements yourself (let alone nervous system)?
Is it very hard problem anatomically?
Where physics is described by some sort of Lagrangian, and the evaluation semantics would would be consistent with its dynamics. Wonder if that's possible without involving explicit computations via dependent types. I guess would also correspond to some sort of special logic. Also making sure the set of correct programs is exactly the set of feasible states is presumably way harder.
I sometimes find myself making a note or taking a picture or a voice recording which I wouldn't want to go public under any circumstances.
Relying on locking your phone is not really enough as it's easy to hack, or fail to lock, or reveal content by accident. What is worse, locking doesn't save you if if you're using some sort of cloud sync.
Of course, you can try and make sure you only keep it locally on phone, but you do need some means of syncing and arguably, waiting till you got a moment to transfer it via the cable bypassing network is even more insecure. Even if you're willing to do that, it turns out to be notoriously hard not to sync to the cloud by accident. Examples straight out of my head:
- You want to take an extremely private photo. If you take it with default Google camera app, it will immediately try to sync it to Google Photos. If you're like me and not using Google Photos sync, it's still quite useful to sync your whole photos directory automatically.
- You want to take an extremely private note. I'm not even sure that these days you can create an empty text file on an average phone (afaik, ipones didn't even have file system until recently), unless you've got a special app installed. All the default ones having note taking capabilities: Google Keep, Google Docs, email drafs, etc, all of them would get leak in the cloud immediately.
It sounds like a fairly general problem. So there are some criteria I want from such an app:
- allow taking pictures, notes, recordings etc from withing the container app, so intermediate data doesn't end up in insecure locations
handle content share intents in case for content that potentially can't be from within the app
Would be cool to prompt user to delete the original files afterwards, but not sure if it's possible in modern Android though.
use asymmetric encryption for keeping data in the secure container
Asymmetric is fairly important here, that allows to put data in container without actually asking for some sort of password every time, which would make using it way less frictionless.
backed by filesystem
That would allow actually synchronizing encrypted container through normal and less secure channels as long as you keep your private key safe. Not sure what to do with metadata though, but perhaps encrypting filenames with same key (with padding etc.) is not too bad.
So far I don't know any applications that match most of these criteria. Closest I know of are:
- open-keychain: you can share files so it encrypts them via PGP. That's the only thing that it does though, afaiu, it's more meant for integrating with other apps. It's open source though so would be good to use it as a library/intermediate.
- I'm personally using an Encfs container via EDS Lite and just use separate apps for secure photo taking and audio recording which don't have their content saved to cloud synced location.
If you know of something better, please let me know!
I got this thinking a while ago when I was keen on switching to Firefox, but it wouldn't let the user choose extension hotkeys, it was only added recently. And still, certain keys you just can't rebind (e.g. use Ctrl-Shift combinations), because they are hardcoded somewhere deep in the codebase.
It's pretty annoying that it's left to developer to think about providing hotkeys to the necessary bits of interface when the user can do same actions with mouse. Pretty sure X has got some kind of hierarchical abstract representation, would be nice to instead give users (or other developers, that don't necessarily have to be familiar with the app) ability to define arbitrary bindings or macros.
It's somewhat well known one can extend notion of derivative to abstract data types. Can we squeeze more from that?
¶TODO what would be an analogue of 3-sphere for data types? what are the different topologies of data types?
Haven't thought about that seriously yet, so not sure how much sense it makes to ask such questions.
Over the past few years there were few very successful examples of type checking implementations for languages without static types:
In some ways, these tools provide superior type systems (e.g. optionals/sum types) to many 'classical' statically typed languages like Java or C++.
One reason for success as I see it is that typing is optional and can be used where/when the programmer feel necessary. You get benefits of dynamic languages for fast prototyping and benefits of type checking when it's time to harden your program.
I wonder if dependent types will take over the world through some similar tooling.
¶TODO[C]how to generate/where to get reasonable showcase data for memex/quantified self tools?jdoequantifiedselfmemex
"Coming up with a showcase data" is such a common and tedious problem for tools like this, both demonstration and testing purposes.
One could generate some random data, but then it's not very relatable. Even if one is comfortable with demoing with some parts of their lifelog, still have to be really careful.
I wish there was some open source, curated and consistent dataset with a "made up" person's life events/messages/tweets/location/HR data.
It feels that all people who work on such tools could benefit from it.
Idea for the project name: "J. Doe".
¶TODOsome sort of anonymizer tool?
So it takes your data, and then tries to automatically 'anonymize' it in a completely agnostic way.
For example, all numbers/dates/strings are monotonically (i.e. preserving relative order) fuzzed and mapped onto different values.
Kobo doesn't have Goodreads integration like Kindle does. However sharing highlights is a great way to engage other people in the book you really like and want them to read. This can relatively easily be achieved via a script:
- run the script in kron or via udev rule configured to trigger on your Kobo device
query the highlights from Kobo (they are in a nice sqlite database)
I already have a local python script for that (
my.books.kobo), e.g. used here.
- choose which annotations you want to share. Some options are:
- based on a special marker word (e.g. if annotation includes 'kobo')
- interactively via prompting what you wanna share
send to Goodreads via
You are gonna need some method of comparing highlights you already sent and diff them.
Boring: just track annotation ids you already shared in some state file. Fun: use some elaborate comparison/hashing to match kobo annotations and goodreads ones.
Actually, this could even be useful for Kindle if you have a DRM free copy from elsewhere. Or for other ebook devices.
[X]reverse engineered 'started reading' and 'finished reading' events, so at least it's possible to mark them manually on goodreads now
¶TODO[D]continuous piano keyboard. When you press a 'key', the harmonics are highlighted as well as octavesmusic
- ableton push kinda does that
- not sure if it would be really beneficial for proper musicians, perhaps as a learning tool only?
¶TODO[D]coffee brew simulationcoffeesimulation
In the simplest approximation take some simple conical/cylindrical filter, water flow/temperature dependency and coarseness. As an output we get expected amount of caffeine, oils, some estimate of bitterness and acidity etc.
Some potentially relevant links:
this guide and surely coffee brewing doesn't have to be so elaborate!I ran into
I mean, seriously:
Pulse pour by adding 65g of water in 15 seconds, followed by a waiting period of 15 seconds and repeat 5 more times (pouring timeline below) . Each pour should begin in the center, work its way outward, and then return back to the center.
Come on. There is absolutely no way coffee taste depends on these intricate patterns of pouring water. A mathematical model would cast away this bro science at least to some extent.
I also can't really understand how is one capable of estimating coffee on the scale from 0 to 10, but perhaps that's just my unsophisticated taste buds, and I accept other people can train themselves to do that.
¶TODO[D]machine learning tool, showing muscles and bones on athlete in real time (e.g. as an overlay)humanbodymlar
¶TODO[C]interactive simulator for impact of diet on the environmentenvironmentfoodsimulation
One common issue I see very often when people advocate for vegetarian/plant based diets is comparing, impact of producing 1 kg of meat vs 1 kg of vegetables/plants, which is obviously wrong way to analyze it (good luck surviving on lettuce). At the very least it should be normalized per calorie, even better by protein amount (as other macronutrients are relatively easy to satisfy).
However, different people have different dietary preferences in terms of macro composition (and good luck convincing people to change two beliefs at once).
Next, different ways of producing food have different impact on environment.
A good way of proving feasibility of meatless diets is to develop some sort of interactive simulator. It would take into account macronutrient and micronutrient requirements. It should allow to vary assumptions for environmental impact as well, as first, they may depend on means of production, but what's even more important, people might have different beliefs about impact too, and that should be respected.
That would also allow to 'generate' environmentally friendly meal plans via optimization algorithm.
That would make the whole discussion more quantitative and civilized.
TLDR: it's annoying that you can't see how often each topic is used to use the most appropriate one. Ideally, I want something similar to Stackexchange interface.
Created a feature request here
However, this should be fairly easy to implement on client side (i.e. greasemonkey script). Considering that topics don't need to be set often, it should be okay performance wise.
Completely speculative and unprocessed straight out of my brain. Will get promoted above when I think a bit more about it.
¶TODO[A]tinder for code reviews/testing projectsprogramming
If you maintain a project on your own, it might be nice to have someone else to skim through your code and flag concerns.
If someone else maintains a project on their own, you could mutually benefit and review each other's code.
¶TODO[B]what would be a 2d analogue for yield?programmingpython
Reactive as Excel, powerful as Python.
could itertools.tee all iterators unless they are marked as unsafe (i.e. with side effects)?
Although tee is safe even in that case, just have to assume
__str__ is reasonable
It sucks to die early because of all the effort you invested in your future self.
¶TODO[B]connections of Hamiltonian equations and programming?symplecticphysicsprogramming
Not sure how to formulate the problem and how much sense it would make.
- A neural net solves the three-body problem 100M times faster, but it's unclear if this methods solves chaotic instances
- Toward an AI Physicist for Unsupervised Learning and a video: Steps toward building an AI physicist
This would make it possible to search through issues without having to leave your IDE and work with them offline. As a collateral also automatic backups and preventing vendor lock-in.
¶TODO[C]reverse debugging: set variables to specific values and then reverse program logic to get consistent execution?debug
That could be useful to eliminate undesirable situations in the program.
Difference from static analysis/model checking is that it could be more heuristic and dynamic, e.g. doing some sort of parameter space search.
¶TODO[C]how to communicate experiences better?
It's really useful. E.g. imagine going to hike in the mountains and when you're back, trying to convince someone else they should try it without photos? If experience communication was even better (e.g. wind/temperature/thrill) it would be even more convincing.
coolest/alternative visualizations for various mathematical/physical concepts videos, pictures, blog posts. basically anything unconventional intuition
d-cook/SomethingNew: Collaboration for reinventing software in human terms
hypotext/notation: Collection of quotes on notation design & how it affects thought
¶TODO[C]how does uncertainty principle apply to quantum information? What's the amount of information we can simultaneously know?quantum
¶TODO[C]The Entertainer cover from Westworld got an extremely satisfying orchestra intro at around 0:26musicart
What would be similar effect for other forms of art, e.g. visual?
Metamorphose, when abstract shapes transform into more realistic.For some reason thinking of Escher's
Holy fuck! That's so complicated and beautiful at the same time! I wonder if some sort of simulation is possible?
¶TODO[C]call/cc ; coroutine style thing but for defensive error handling/yielding? not sure how it'd looklisperrors
heh, actually algebraic effects could do it?
¶TODO[C]hierarchy: byte -> character (e.g. unicode) -> ???? -> ASTprogrammingvcs
At older times people would be more comfortable with seeing raw bytes in their code. Now we've all accepted unicode. Manipulating source blocks might be a bit too much. What's an intermediate unit? It's probably syntax dependent?
¶TODO[D]natural language with optimal sounds set (in the sense of Huffman coding)language
¶TODO[D]negative types, complex types. Is there something related to terms the same way as terms related to types?plt
think about isomorphisms? What is the essence of complex numbers that makes them so special?
maybe start with integer and positive only complex numbers? eh, that wouldn't make too much sense though would it? it's like inner product. what's an inner product of types?
¶TODO[D]fiction story about someone who lost all the references and got garbage collected
¶TODO[D]the set of computable numbers is represented by a computable number itself?
I suppose that's kind of solved itself by neural network
¶TODO[D]speed up of sense of time with age: some sort of time dilation because of thinking 'velocity'?physics
As in, what are some exciting fields where there is a lot of individual potential to be creative and contribute?
I've been thinking about solipsism lately.
Imagine a human baby. Up to a certain age they think their toys are alive and perhaps no less conscious than their parents.
These days, stuff like voice assistants, automatic email replies, Google Duplex, GPT text generation may seem like magic or machine possessing mind, but if you study these technologies, you won't have that illusion.
Now imagine you ask a stranger on the street for help to get around the city. You might interact for less than ten seconds, and for what it's worth they could easily be a bot.
What if sentient people around you are actually p-zombies, you're just not smart enough yet to understand it? Baby grows up, learns more how the world around them works and understands toys are not alive. What if it's similar with other minds: you (I mean, I, duh) grow up, learn more, and then you understand and unravel them?
NewType should be possible.. just need std library integrationwith
Most popular music (from traditional to classical to modern pop/electronic) seems to have regular beats, verse structure etc. What's about it that human brains like? Can someone write a very irregular but yet enjoyable piece?
Imagine that we achieved high level of mind-melding technology (e.g. through brain-computer interfaces).
The experiment: mind-meld younger brain (e.g. 30 years) and older brain (e.g. 90 years). Presumably, if they spend enough time like that, the brains end up with common memories and perception of self that would be preserved after brains are separated. Then after a while, the older body dies. In a sense though, both minds are still alive? Could it be used as a life extension technology?
Of course, minds wouldn't be quite the same after such a massive intervention.
On one hand for the older body it feels like a definite win if they are about to die anyway. On the other hand, it's morally dubious to let the part of younger mind to die in the older body. Isn't it kind of a massive sacrifice for the younger/healthier body?
¶TODO[B]digital enzymes that act on the bits of information
Can I prepare for it in terms of computer interfaces or something? Should I even prepare or my life is going to change so drastically that it isn't even worth it?
Different proteins contain different amounts of different amino acids. I know some of them are ketogenic and some glucogenic, but not sure if there is much difference nutrition wise.
Wonder if that matters if you follow a vegetarian/vegan diets?
- I guess this article could be a good start
Apparently I wasn't the first to think about that: