Add fuuka-juno reference
This commit is contained in:
parent
017edb09fe
commit
b7db275207
3 changed files with 172 additions and 1 deletions
86
notes/coping mechanisms/Tiding up the todos list.md
Normal file
86
notes/coping mechanisms/Tiding up the todos list.md
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
## TLDR
|
||||
|
||||
1. Create or update a task/note as your _"True North"_.
|
||||
2. Delete old task that doesn't align with your current _"True North"_, Also rephrase/separate hard, un-actionable, un-enjoyable, or complex task.
|
||||
3. Orginize:
|
||||
1. Group and move task to projects / tags.
|
||||
2. Sequence tasks
|
||||
3. Give priority to tasks
|
||||
4. Give each tasks a due date and duration estimation
|
||||
|
||||
## 1. Before you start, visualize your destination
|
||||
|
||||
Before you even start looking at your tasks, write down what having a neatly organized and prioritized to-do list would mean for your life. Maybe you want to run a successful business, get in shape, be more present with your family, have closer relationships with friends, or lead a more adventurous life.
|
||||
|
||||
Find a medium that lets you truly envision the details. You can describe it in words, mind map it, draw it out, create a Pinterest board, collect YouTube videos, or brainstorm in whatever form suits you.
|
||||
|
||||
But don't stop there. "Your next step is to identify why you want to live like that."
|
||||
|
||||
Why do you want to get in shape? The answer might be "to have more energy and feel more confident." Why do you want to have more energy and feel more confident? Maybe the answer is "to be more fully yourself and stop worrying about what other people think of you." Ask yourself "why" 3-5 times for every item in your vision.
|
||||
|
||||
> As you continue to explore the reasons behind your ideal lifestyle, you will come to a simple realization. The whole point in both discarding and keeping things is to be happy. It may seem obvious, but it is important to experience this realization for yourself and let it sink into your heart. Before you start tidying, look at the lifestyle you aspire to and ask yourself, “Why do I want to tidy?”
|
||||
|
||||
Keep your "why" top-of-mind as you tidy and after by creating task/note that represents your final vision. If you have an accompanying document or image, link to it from your task or attach it to your task/note comments. This is the _"True North"_ that will help you determine whether a task is worth doing. If you’ve written out an all-encompassing vision, break it down into [several goals for each area of your life](https://todoist.com/inspiration/goals-todoist/), and create a task for each.
|
||||
|
||||
You may want to give your task a recurring due date to review the vision you set out for yourself at the start of each day.
|
||||
## 2. Finish discarding first
|
||||
|
||||
Right now, your todo's may be stuffed with half-baked ideas, empty projects, and tasks you forgot to check off.
|
||||
|
||||
You need to do a full cleanup of the task and cut out the non essential things that doesn't align with your _"True North"_. And yes, you need to let some stuff go so you can focus on the stuff you **actually want/need to do**.
|
||||
|
||||
Letting go of old tasks and projects teaches you how to create space for what’s important to you now. As you go through your old tasks, acknowledge that there was a purpose when you added it, but it’s no longer relevant to the life you’re striving for today.
|
||||
|
||||
You’re going to run into tasks that you _want_ to delete, but let’s face it, grunt work is necessary for any significant achievement. Try reframing the tasks that don’t excite you. While “run every day” may feel like a chore, “try to run a 10-minute mile today” may be a more specific and motivating challenge.
|
||||
|
||||
For work like taking out the trash or doing your taxes, create a separate project called “responsibilities” and pare it down to the things that, while they don’t bring you joy, you just have to do anyway. This is a good exercise to check in on and see how much of your to-do list is things you _get_ to do vs. things you _have_ to do.
|
||||
|
||||
## 3. Give every task a place
|
||||
|
||||
Now is time to organize the tasks, use any method that makes sense to you, this can be:
|
||||
|
||||
- Move tasks to projects
|
||||
- Group tasks within a list inside a project
|
||||
- Use a kanban board to organize the status
|
||||
- Add a tag to a task
|
||||
|
||||
### Some stuff to keep in mind while orginizing
|
||||
|
||||
#### Keep your projects visible
|
||||
|
||||
At this point, it’s tempting to start creating a bunch of sub-projects that you can hide from view. Just as seeing every physical object you own keeps you from accumulating too much stuff, seeing every project you’ve committed to can be a helpful reminder to stay focused on what’s important and not let new tasks and projects clutter up your list.
|
||||
|
||||
#### Sequence your tasks
|
||||
|
||||
A great way to stay in the flow of a project is to finish one task and immediately move on to the next. Take the time to sequence your tasks in a logical order before you get to work.
|
||||
|
||||
#### Add priorities
|
||||
|
||||
There are some tasks that are more essential to your goal than others. Set task priorities to keep track of which is which is a must.
|
||||
|
||||
Task can be categorized with the folliwing priorities
|
||||
|
||||
| Level | Name | Meaning |
|
||||
| - | - | - |
|
||||
| 0 | non-processed | The only task with no priority should be the non processed, if they exist for too long, they are not important, delete them. |
|
||||
| 1 | **High** | Must finish ASAP. |
|
||||
| 2 | **Medium** | Needs to be done, the default. |
|
||||
| 3 | Low | Finish if there is time available, can wait. |
|
||||
|
||||
#### Give each task a due date
|
||||
|
||||
Finally, set a date to complete each task. A handy tip is to make an estimate for how long a task will take to complete and then double it. It’s better to overestimate and finish early than to underestimate and finish late. Give each task a due date and schedule repeating tasks with a recurring due date.
|
||||
|
||||
## Make sure your to-do list “sparks joy”
|
||||
|
||||
Aesthetics affect our mindset. Give your todo's a style that will put you in a positive mindset whenever you open it. Here are a few tips:
|
||||
|
||||
- Write clear, specific, and motivating project and task titles. For example, instead of naming your task “Go for a jog,” try “Take a morning jog through the forest” or “Explore a new running route today”
|
||||
- Add text formatting and emojis to give them life: “Take a morning jog through the forest 🌅🏃🌲”
|
||||
- Use a color theme that matches your style or mood
|
||||
- Arrange your projects in an intuitive way
|
||||
- Continually let go of the projects and tasks that don't excite you
|
||||
|
||||
## Resources
|
||||
|
||||
- [The Life-Changing Magic of Tidying Up Your To-Do List](https://todoist.com/inspiration/life-changing-magic-tidying-todoist)
|
||||
85
notes/references/fuuka-juno.md
Normal file
85
notes/references/fuuka-juno.md
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
# Project Radio
|
||||
|
||||
- En primera instancia utilizar librerías de apoyo para cosas demasiado complejas, especificas o que requieran mucha investigación para poder tener algo funcfunctionalpoco tiempo. Luego ir remplazando estas librerías por código propio
|
||||
|
||||
## Music Player - Juno
|
||||
|
||||
Code name: Juno, like Fuuka's ultimate persona, that she use to communicate with the others
|
||||
|
||||
Este servicio debe ser **solo** un reproductor de música, Debe poder funcionar de manera independiente, y poder integrar distintos frontends para un futuro
|
||||
|
||||
Features:
|
||||
- Lenguaje: Rust, que sea lo más eficiente posible para manejar posibles colas de miles de elementos y poder modificar estas colas rápidamente.
|
||||
- Interacción con MPRIS
|
||||
- Audio Input:
|
||||
- Local file
|
||||
- Remote stream?? -> Youtube lofi re-stream for example
|
||||
- Audio Output:
|
||||
- Localmente
|
||||
- Strimear por red
|
||||
- Funcionalidad cliente - servidor dinámica. Al iniciar el proceso, se deberá revisar si el socket provisto (el por defecto o custom) está corriendo ya un servidor de Juno, de ser el caso el proceso se ejecutará en modo "cliente", del contrario se ejecutará en modo "servidor"
|
||||
- Modo servidor:
|
||||
- Al invocarse abrirá un socket en la máquina, por defecto será un socket de unix a no ser que se especifique (un path para crar un socket en especifico o un puerto para escuchar en red)
|
||||
- Por defecto el proceso terminará al terminar de reproducir todos los elementos en la cola, como es un server se pueden añadir más elementos mientras el proceso no haya terminado
|
||||
- Debe tener un modo "daemon" en donde el proceso no termine al finalizar la cola y se quede esperando nuevas instrucciones
|
||||
- Al iniciar el proceso en modo "daemon", se debe pasar un path (por variable de entorno o como parametro del flag "daemon") para solo poder reproducir canciones dentro de este path. Esto reducirá problemas cuando un cliente quiera agregar elementos
|
||||
- El servidor debe tener una manera de entregar las canciones disponibles en el path especificado
|
||||
- Modo cliente:
|
||||
- Puede ejecutar modificaciones sobre la cola, operaciones básicas de un reproductor de música (play-pause, next, prev, add, remove, etc)
|
||||
- "current" que imprima información actual de lo que está sonando, con una opción de "follow" para que sea continuo
|
||||
- Comunicación entre cliente - Servidor con gRPC
|
||||
|
||||
## Cliente, Frontend y orquestador - Fuuka
|
||||
|
||||
Code name: Fuuka, the navi of SEES, you can ask her to change the musing in tartarus.
|
||||
|
||||
Este servicio será el encargado de orquestrar la música con el servidor.
|
||||
|
||||
- Debido a la funcionalidad de indexación, es necesario un lenguaje de backend eficiente
|
||||
- Rust
|
||||
- Go
|
||||
- Mantener una DB:
|
||||
- Debe poder indexar una carpeta y todas las subcarpetas recursivamente para obtener una lista de canciones con su path y otros
|
||||
- Si Juno lo soporta, lista de fuentes remotas para re-strimear, con un botón de acceso rápido (como youtube lofi or synthwave streams)
|
||||
- Almacenar playlist junto con su programación
|
||||
- Scheduler:
|
||||
- Correr escaneo e indexación cada x tiempo
|
||||
- Ejecutar programación de playlists
|
||||
- Se debe maneter el frontend actualizado en todo momento en cuanto cambien los datos del servidor de Juno:
|
||||
- NextJS puede realizar actualización de UI dinámicamente, pero esto nos añade un 3 servicio
|
||||
- Web sockets creo que deberían bastar, implementados en Vanilla JS del lado del cliente
|
||||
|
||||
### Stack
|
||||
|
||||
| Type | Tech |
|
||||
| - | - |
|
||||
| DB | [SQLx](https://github.com/launchbadge/sqlx) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- [gRPC](https://grpc.io/)
|
||||
|
||||
Bacon es una extensión del LSP que provee mejores mensajes de error para entender los mensajes de compilación, además provee un "watch mode" para el código
|
||||
|
||||
## Features
|
||||
|
||||
* Docker Service
|
||||
* REST API
|
||||
* Web UI
|
||||
* HTTP Audio Stream
|
||||
* File Scan to get the path to audio files
|
||||
* Playlists
|
||||
* Schedule Playlists
|
||||
* Repeat Schedule
|
||||
* upload files?
|
||||
|
||||
## Proyectos similares
|
||||
|
||||
- [Navidrome](https://www.navidrome.org)
|
||||
- [Azuracast](https://www.azuracast.com/)
|
||||
- [Cadence](https://github.com/kenellorando/cadence) (Use Icecast and Liquidsoap)
|
||||
- [forte](https://github.com/kaangiray26/forte)
|
||||
- [Simple MPD in Rust](https://dev.to/tsirysndr/how-i-built-a-simple-music-player-daemon-in-rust-with-a-cliweb-ui-51e0)
|
||||
Loading…
Add table
Add a link
Reference in a new issue