27th May 2025
Life navigation⚑
Life chores management⚑
dawarich⚑
-
New: Introduce dawarich.
Dawarich is a self-hostable alternative to Google Location History (Google Maps Timeline)
Tweak the official docker-compose keeping in mind:
- To configure the
APPLICATION_HOST
if you're using a reverse proxy
Then run
docker compose up
. You can now visit your Dawarich instance at http://localhost:3000 or http://:3000. The default credentials are demo@dawarich.app
andpassword
Go to your account and change the default account and password.
Be careful not to upgrade with watchtower, the devs say that it's not safe yet to do so.
Not there yet - Immich photos are not well shown: This happens when opening the map, or selecting one of the buttons "Yesterday", "Last 7 Days" or "Last month". If you select the same date range through the date-pickers, the photos are shown. - Support import of OSMand+ favourites gpx - OpenID/Oauth support
References
- To configure the
Technology⚑
Coding⚑
Forgejo⚑
-
New: Push to a forgejo docker registry.
Login to the container registry
To push an image or if the image is in a private registry, you have to authenticate:
docker login forgejo.example.com
If you are using 2FA or OAuth use a personal access token instead of the password.
Image naming convention
Images must follow this naming convention:
{registry}/{owner}/{image}
When building your docker image, using the naming convention above, this looks like:
docker build -t {registry}/{owner}/{image}:{tag} . docker tag {some-existing-image}:{tag} {registry}/{owner}/{image}:{tag}
Where your registry is the domain of your forgejo instance (e.g. forgejo.example.com). For example, these are all valid image names for the owner testuser:
- forgejo.example.com/testuser/myimage
- forgejo.example.com/testuser/my-image
- forgejo.example.com/testuser/my/image
NOTE: The registry only supports case-insensitive tag names. So image:tag and image:Tag get treated as the same image and tag.
Push an image
Push an image by executing the following command:
docker push forgejo.example.com/{owner}/{image}:{tag}
For example:
docker push forgejo.example.com/testuser/myimage:latest
-
New: Installing all the binaries the application installs.
If the package installs more than one binary (for example
ansible
), you need to use the--install-deps
flagpipx install --install-deps ansible
Configure Docker to host the application⚑
-
New: Push an image with different architectures after building it in different instances.
To push both an ARM and AMD Docker image to Docker Hub, from two separate machines (e.g., an ARM-based and an AMD-based instance), follow these steps:
Tag the image correctly on each architecture
On each instance, build your image as normal, but tag it with a platform-specific suffix, like
myuser/myimage:arm64
ormyuser/myimage:amd64
.On the ARM machine:
docker build -t myuser/myimage:arm64 . docker push myuser/myimage:arm64
On the AMD machine:
docker build -t myuser/myimage:amd64 . ocker push myuser/myimage:amd64
Create a multi-architecture manifest (on one machine)
If you want users to pull the image without worrying about the platform (e.g., just
docker pull myuser/myimage:latest
), you can create and push a manifest list that combines the two:Choose either machine to run this (after both images are pushed):
docker manifest create myuser/myimage:latest \ --amend myuser/myimage:amd64 \ --amend myuser/myimage:arm64 docker manifest push myuser/myimage:latest
-
Correction: Add note to run gitea actions runners in kubernetes.
Kubernetes act runner, there is a stale issue and an ugly implementation to run docker in docker inside the kubernetes node.
Streamlit⚑
-
New: Show a spinner while the data is loading.
st.title("Title") with st.spinner("Loading data..."): data = long_process() st.markdown('content shown once the data is loaded')
-
New: Deploy in docker.
Here's an example
Dockerfile
that you can add to the root of your directoryFROM python:3.11-slim WORKDIR /app RUN apt-get update && apt-get install -y \ build-essential \ curl \ software-properties-common \ && rm -rf /var/lib/apt/lists/* COPY . . RUN pip3 install -r requirements.txt EXPOSE 8501 HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]
While you debug you may want to replace the
COPY . .
to:COPY requirements.txt . RUN pip3 install -r requirements.txt COPY app.py .
So that the build iterations are faster.
You can build it with
docker build -t streamlit .
, then test it withdocker run -p 8501:8501 streamlit
Once you know it's working you can create a docker compose
services: streamlit: image: hm2025_nodos container_name: my_app env_file: - .env ports: - "8501:8501" healthcheck: test: ["CMD", "curl", "--fail", "http://localhost:8501/_stcore/health"] interval: 30s timeout: 10s retries: 5
If you use swag from linuxserver you can expose the service with the next nginx configuration:
server { listen 443 ssl; listen [::]:443 ssl; server_name my_app.*; include /config/nginx/ssl.conf; client_max_body_size 0; location / { # enable the next two lines for http auth #auth_basic "Restricted"; #auth_basic_user_file /config/nginx/.htpasswd; # enable the next two lines for ldap auth #auth_request /auth; #error_page 401 =200 /login; include /config/nginx/proxy.conf; resolver 127.0.0.11 valid=30s; set $upstream_streamlit my_container_name; proxy_pass http://$upstream_streamlit:8501; } }
And if you save your
docker-compose.yaml
file into/srv/streamlit
you can use the following systemd service to automatically start it on boot.``ini [Unit] Description=my_app Requires=docker.service After=docker.service
[Service] Restart=always User=root Group=docker WorkingDirectory=/srv/streamlit TimeoutStartSec=100 RestartSec=2s ExecStart=/usr/bin/docker compose -f docker-compose.yaml up ExecStop=/usr/bin/docker compose -f docker-compose.yaml down
[Install] WantedBy=multi-user.target ```
DevSecOps⚑
AWS⚑
-
New: Remove the public IP of an ec2 instance.
- Navigate to the network interfaces of the instance
- Click on the one that contains the public IP
- Actions/Manage IP addresses
- Click on the Interface to unfold the configuration
- Click on Auto-assign public IP
Operating Systems⚑
Linux Snippets⚑
-
file -i <path_to_file>
-
New: Simulate the environment of a cron job.
Add this to your crontab (temporarily):
* * * * * env > ~/cronenv
After it runs, do this:
env - `cat ~/cronenv` /bin/sh
This assumes that your cron runs /bin/sh, which is the default regardless of the user's default shell.
Footnote: if env contains more advanced config, eg
PS1=$(__git_ps1 " (%s)")$
, it will error crypticallyenv: ": No such file or directory
.
Wireguard⚑
-
New: More wg-easy configurations.
Configuration
Keep in mind though that the
WG_ALLOWED_IPS
only sets the routes on the client, it does not limit the traffic at server level. For example, if you set172.30.1.0/24
as the allowed ips, but the client changes it to172.30.0.0/16
it will be able to access for example172.30.2.1
. The suggested way to prevent this behavior is to add the kill switch in the Pre and Post hooks (WG_POST_UP
andWG_POST_DOWN
)Restrict Access to Networks with iptables
If you need to restrict many networks you can use this allowed ips calculator
Monitorization
If you want to use the prometheus metrics you need to use a version greater than 14, as
15
is not yet released (as of 2025-03-20) I'm usingnightly
.You can enable them with the environment variable
ENABLE_PROMETHEUS_METRICS=true
Scrape the metrics
Add to your scrape config the required information
- job_name: vpn-admin metrics_path: /metrics static_configs: - targets: - {your vpn private ip}:{your vpn exporter port}
Create the monitor client
To make sure that the vpn is working we'll add a client that is always connected. To do so we'll use linuxserver's wireguard docker
# References
diff --git a/mkdocs.yml b/mkdocs.yml index 77e5ba92b2..ef6703047d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -86,6 +86,7 @@ nav: - Trip management: - Route management: route_management.md - Map management: map_management.md + - dawarich: dawarich.md - Food management: food_management.md - Stock management: - Grocy: grocy_management.md @@ -212,514 +213,522 @@ nav: - Fitness Tracker: - fitness_band.md - Amazfit Band 5: amazfit_band_5.md - - Coding: - - Learning to code: - - code_learning.md - - Frontend developer: frontend_learning.md - - Languages: - - Python: - - python.md - - Project Template: - - coding/python/python_project_template.md - - Command-line Project Template: - - coding/python/python_project_template/python_cli_template.md - - Configure SQLAlchemy for projects without flask: >- - coding/python/python_project_template/python_sqlalchemy_without_flask.md - - Flask Project Template: >- - coding/python/python_project_template/python_flask_template.md - - Microservices Project Template: >- - coding/python/python_project_template/python_microservices_template.md - - Common configurations: - - Create the documentation repository: >- - coding/python/python_project_template/python_docs.md - - Load config from YAML: coding/python/python_config_yaml.md - - Configure SQLAlchemy to use the MariaDB/Mysql backend: - >- - coding/python/python_project_template/python_sqlalchemy_mariadb.md - - Configure Docker to host the application: >- - coding/python/python_project_template/python_docker.md - - Libraries: - - Alembic: coding/python/alembic.md - - asyncio: asyncio.md - - aiocron: aiocron.md - - Apprise: apprise.md - - aiohttp: aiohttp.md - - BeautifulSoup: beautifulsoup.md - - Boto3: boto3.md - - Click: coding/python/click.md - - Dash: coding/python/dash.md - - Dash Leaflet: coding/python/dash_leaflet.md - - DeepDiff: coding/python/deepdiff.md - - FactoryBoy: coding/python/factoryboy.md - - Faker: coding/python/faker.md - - FastAPI: fastapi.md - - Flask: coding/python/flask.md - - Flask Restplus: coding/python/flask_restplus.md - - Folium: coding/python/folium.md - - Feedparser: coding/python/feedparser.md - - Gettext: gettext.md - - GitPython: coding/python/gitpython.md - - Goodconf: goodconf.md - - ICS: ics.md - - Inotify: python_inotify.md - - watchdog: watchdog_python.md - - Jinja2: python_jinja2.md - - Maison: maison.md - - mkdocstrings: coding/python/mkdocstrings.md - - NetworkX: networkx.md - - Org-rw: org_rw.md - - Pandas: coding/python/pandas.md - - Passpy: coding/python/passpy.md - - pexpect: pexpect.md - - Prompt Toolkit: - - coding/python/prompt_toolkit.md - - REPL: prompt_toolkit_repl.md - - Full screen applications: prompt_toolkit_fullscreen_applications.md - - Pydantic: - - coding/python/pydantic.md - - Pydantic Field Types: coding/python/pydantic_types.md - - Pydantic Validators: coding/python/pydantic_validators.md - - Pydantic Exporting Models: coding/python/pydantic_exporting.md - - Pydantic Validating Functions: coding/python/pydantic_functions.md - - Pydantic Factories: pydantic_factories.md - - Pydantic Mypy Plugin: coding/python/pydantic_mypy_plugin.md - - Pypika: coding/python/pypika.md - - psycopg2: psycopg2.md - - Elasticsearch: python_elasticsearch.md - - python-gnupg: python_gnupg.md - - Python Mysql: python_mysql.md - - pythonping: pythonping.md + - Technology: + - Coding: + - Learning to code: + - code_learning.md + - Frontend developer: frontend_learning.md + - Languages: + - Python: + - python.md + - Project Template: + - coding/python/python_project_template.md + - Command-line Project Template: + - coding/python/python_project_template/python_cli_template.md + - Configure SQLAlchemy for projects without flask: >- + coding/python/python_project_template/python_sqlalchemy_without_flask.md + - Flask Project Template: >- + coding/python/python_project_template/python_flask_template.md + - Microservices Project Template: >- + coding/python/python_project_template/python_microservices_template.md + - Common configurations: + - Create the documentation repository: >- + coding/python/python_project_template/python_docs.md + - Load config from YAML: coding/python/python_config_yaml.md + - Configure SQLAlchemy to use the MariaDB/Mysql backend: + >- + coding/python/python_project_template/python_sqlalchemy_mariadb.md + - Configure Docker to host the application: >- + coding/python/python_project_template/python_docker.md + - Libraries: + - Alembic: coding/python/alembic.md + - asyncio: asyncio.md + - aiocron: aiocron.md + - Apprise: apprise.md + - aiohttp: aiohttp.md + - BeautifulSoup: beautifulsoup.md + - Boto3: boto3.md + - Click: coding/python/click.md + - Dash: coding/python/dash.md + - Dash Leaflet: coding/python/dash_leaflet.md + - DeepDiff: coding/python/deepdiff.md + - FactoryBoy: coding/python/factoryboy.md + - Faker: coding/python/faker.md + - FastAPI: fastapi.md + - Flask: coding/python/flask.md + - Flask Restplus: coding/python/flask_restplus.md + - Folium: coding/python/folium.md + - Feedparser: coding/python/feedparser.md + - Gettext: gettext.md + - GitPython: coding/python/gitpython.md + - Goodconf: goodconf.md + - ICS: ics.md + - Inotify: python_inotify.md + - watchdog: watchdog_python.md + - Jinja2: python_jinja2.md + - Maison: maison.md + - mkdocstrings: coding/python/mkdocstrings.md + - NetworkX: networkx.md + - Org-rw: org_rw.md + - Pandas: coding/python/pandas.md + - Passpy: coding/python/passpy.md + - pexpect: pexpect.md + - Prompt Toolkit: + - coding/python/prompt_toolkit.md + - REPL: prompt_toolkit_repl.md + - Full screen applications: prompt_toolkit_fullscreen_applications.md + - Pydantic: + - coding/python/pydantic.md + - Pydantic Field Types: coding/python/pydantic_types.md + - Pydantic Validators: coding/python/pydantic_validators.md + - Pydantic Exporting Models: coding/python/pydantic_exporting.md + - Pydantic Validating Functions: coding/python/pydantic_functions.md + - Pydantic Factories: pydantic_factories.md + - Pydantic Mypy Plugin: coding/python/pydantic_mypy_plugin.md + - Pypika: coding/python/pypika.md + - psycopg2: psycopg2.md + - Elasticsearch: python_elasticsearch.md + - python-gnupg: python_gnupg.md + - Python Mysql: python_mysql.md + - pythonping: pythonping.md + - Python Prometheus: python-prometheus.md + - Python Telegram: + - python-telegram.md + - pytelegrambotapi: pytelegrambotapi.md + - Python VLC: python_vlc.md + - Playwright: playwright.md + - Plotly: coding/python/plotly.md + - questionary: questionary.md + - rich: rich.md + - Ruamel YAML: coding/python/ruamel_yaml.md + - Selenium: selenium.md + - Streamlit: streamlit.md + - SQLAlchemy: coding/python/sqlalchemy.md + - sqlite3: sqlite3.md + - Redis-py: coding/python/redis-py.md + - Requests: requests.md + - Requests-mock: coding/python/requests_mock.md + - Rq: coding/python/rq.md + - python_systemd: python_systemd.md + - sh: python_sh.md + - Talkey: talkey.md + - Tenacity: tenacity.md + - TinyDB: coding/python/tinydb.md + - Torch: torch.md + - Typer: typer.md + - Yoyo: coding/python/yoyo.md + - Type Hints: coding/python/type_hints.md + - Logging: python_logging.md + - Code Styling: coding/python/python_code_styling.md + - Docstrings: coding/python/docstrings.md + - Properties: python_properties.md + - Protocols: python_protocols.md + - Package Management: + - python_package_management.md + - PDM: pdm.md + - pipx: pipx.md + - Pipenv: pipenv.md + - Poetry: python_poetry.md + - Lazy loading: lazy_loading.md + - Plugin System: python_plugin_system.md + - Profiling: python_profiling.md + - Optimization: python_optimization.md + - Anti-Patterns: coding/python/python_anti_patterns.md + - Pytest: + - coding/python/pytest.md + - Parametrized testing: coding/python/pytest_parametrized_testing.md + - Pytest-cases: coding/python/pytest_cases.md + - Pytest-HttpServer: pytest_httpserver.md + - Pytest-xprocess: pytest-xprocess.md + - Internationalization: python_internationalization.md + - Python Snippets: coding/python/python_snippets.md + - Data Classes: coding/python/data_classes.md + - Vue.js: + - vuejs.md + - Vue snippets: vue_snippets.md + - Vuetify: vuetify.md + - Development tools: + - Cypress: cypress.md + - Vite: vite.md + - Vitest: vitest.md + - Bash: + - Bash snippets: bash_snippets.md + - Bash testing: bats.md + - lua: lua.md + - JSON: coding/json/json.md + - SQL: coding/sql/sql.md + - SQLite: sqlite.md + - YAML: coding/yaml/yaml.md + - Promql: coding/promql/promql.md + - Logql: logql.md + - HTML: html.md + - CSS: css.md + - Javascript: + - coding/javascript/javascript.md + - Javascript snippets: javascript_snippets.md + - MermaidJS: mermaidjs.md + - Latex: latex.md + - Graphql: graphql.md + - Qwik: qwik.md + - nodejs: linux/nodejs.md + - JWT: devops/jwt.md + - React: coding/react/react.md + - Coding tools: + - IDES: + - Vim: + - vim.md + - Vim configuration: + - vim_config.md + - Vim Keymaps: vim_keymaps.md + - Vim Package Manager: + - vim_plugin_managers.md + - LazyVim: lazyvim.md + - Packer: vim_packer.md + - UI management configuration: + - Vim foldings: vim_foldings.md + - Vim movement: vim_movement.md + - Tabs vs Buffers: vim_tabs.md + - File management configuration: + - NeoTree: neotree.md + - Telescope: telescope.md + - fzf.nvim: fzf_nvim.md + - Editing specific configuration: + - vim_editor_plugins.md + - Vim formatters: vim_formatters.md + - Vim autocomplete: vim_completion.md + - Vim markdown: vim_markdown.md + - Vim spelling: vim_spelling.md + - Vim autosave: vim_autosave.md + - Coding specific configuration: + - vim_coding_plugins.md + - Treesitter: vim_treesitter.md + - LSP: vim_lsp.md + - Snippets: luasnip.md + - DAP: vim_dap.md + - Git management configuration: + - vim_git.md + - Diffview: diffview.md + - gitsigns: gitsigns.md + - Testing management configuration: vim_testing.md + - Email management: vim_email.md + - Other Vim Plugins: + - linux/vim/vim_plugins.md + - Vim Snippets: vim_snippets.md + - Vim Troubleshooting: vim_troubleshooting.md + - Neovim Plugin Development: vim_plugin_development.md + - Vi vs Vim vs Neovim: vim_vs_neovim.md + - Tridactyl: tridactyl.md + - VSCodium: vscodium.md + - Coding with AI: ai_coding.md + - Git: + - git.md + - Github cli: gh.md + - Forgejo: forgejo.md + - Gitea: gitea.md + - Radicle: radicle.md + - Data orchestrators: + - data_orchestrators.md + - Kestra: kestra.md + - memorious: memorious.md + - Scrapers: + - morph.io: morph_io.md + - ETL: + - Singer: singer.md + - Espanso: espanso.md + - Generic Coding Practices: + - How to code: how_to_code.md + - Program Versioning: + - versioning.md + - Semantic Versioning: semantic_versioning.md + - Calendar Versioning: calendar_versioning.md + - Use warnings to evolve your code: use_warnings.md + - Keep a Changelog: changelog.md + - Writing good documentation: documentation.md + - Conventional comments: conventional_comments.md + - TDD: coding/tdd.md + - GitOps: gitops.md + - Abstract Syntax Trees: abstract_syntax_trees.md + - Software Architecture: + - SOLID: architecture/solid.md + - Domain Driven Design: + - architecture/domain_driven_design.md + - Repository Pattern: architecture/repository_pattern.md + - Service Layer Pattern: architecture/service_layer_pattern.md + - Architecture Decision Record: adr.md + - Database Architecture: architecture/database_architecture.md + - ORM, Query Builder or Raw SQL: architecture/orm_builder_query_or_raw_sql.md + - Microservices: architecture/microservices.md + - Restful APIS: architecture/restful_apis.md + - OCR: + - Table parsing: + - Camelot: camelot.md + - Frontend Development: frontend_development.md + - Park programming: park_programming.md + - Sponsor: sponsor.md + - Issues: issues.md + - DevSecOps: + - devops/devops.md + - Infrastructure as Code: + - Helm: + - devops/helm/helm.md + - Helm Installation: devops/helm/helm_installation.md + - Helm Commands: devops/helm/helm_commands.md + - Helm Secrets: devops/helm/helm_secrets.md + - Helm Git: helm_git.md + - Helmfile: devops/helmfile.md + - Terraform: terraform.md + - Ansible: + - Ansible Snippets: ansible_snippets.md + - Molecule: molecule.md + - Nix: nix.md + - Dotfiles: + - dotfiles.md + - Home Manager: home-manager.md + - Chezmoi: chezmoi.md + - Dotdrop: dotdrop.md + - Infrastructure Solutions: + - Kubernetes: + - devops/kubernetes/kubernetes.md + - Architecture: devops/kubernetes/kubernetes_architecture.md + - Resources: + - Namespaces: devops/kubernetes/kubernetes_namespaces.md + - Pods: devops/kubernetes/kubernetes_pods.md + - ReplicaSets: devops/kubernetes/kubernetes_replicasets.md + - Deployments: devops/kubernetes/kubernetes_deployments.md + - Horizontal Pod Autoscaling: >- + devops/kubernetes/kubernetes_hpa.md + - Volumes: devops/kubernetes/kubernetes_volumes.md + - Services: devops/kubernetes/kubernetes_services.md + - Labels: devops/kubernetes/kubernetes_labels.md + - Annotations: devops/kubernetes/kubernetes_annotations.md + - Ingress: devops/kubernetes/kubernetes_ingress.md + - Jobs: devops/kubernetes/kubernetes_jobs.md + - Kubectl: + - devops/kubectl/kubectl.md + - Kubectl Installation: devops/kubectl/kubectl_installation.md + - Kubectl Commands: devops/kubectl/kubectl_commands.md + - Additional Components: + - Metrics Server: devops/kubernetes/kubernetes_metric_server.md + - Ingress Controller: >- + devops/kubernetes/kubernetes_ingress_controller.md + - External DNS: devops/kubernetes/kubernetes_external_dns.md + - Cluster Autoscaler: >- + devops/kubernetes/kubernetes_cluster_autoscaler.md + - Dashboard: devops/kubernetes/kubernetes_dashboard.md + - Storage Driver: devops/kubernetes/kubernetes_storage_driver.md + - Vertical Pod Autoscaler: >- + devops/kubernetes/kubernetes_vertical_pod_autoscaler.md + - Networking: devops/kubernetes/kubernetes_networking.md + - Debugging: kubernetes_debugging.md + - Backups: + - Velero: velero.md + - Operators: devops/kubernetes/kubernetes_operators.md + - Tools: + - devops/kubernetes/kubernetes_tools.md + - Krew: krew.md + - Ksniff: ksniff.md + - Mizu: mizu.md + - AWS: + - devops/aws/aws.md + - AWS Snippets: aws_snippets.md + - AWS Savings plan: aws_savings_plan.md + - Security groups workflow: devops/aws/security_groups.md + - EKS: devops/aws/eks.md + - EFS: efs.md + - IAM: + - devops/aws/iam/iam.md + - IAM Commands: devops/aws/iam/iam_commands.md + - IAM Debugging: devops/aws/iam/iam_debug.md + - S3: devops/aws/s3.md + - WAF: aws_waf.md + - Databases: + - Redis: architecture/redis.md + - RabbitMQ: rabbitmq.md + - Continuous Deployment: + - ArgoCD: argocd.md + - Continuous Integration: + - devops/ci.md + - Drone: drone.md + - Linters: + - Alex: devops/alex.md + - Flakeheaven: flakeheaven.md + - Flake8: devops/flake8.md + - Markdownlint: devops/markdownlint.md + - Proselint: devops/proselint.md + - Shellcheck: shellcheck.md + - Yamllint: devops/yamllint.md + - Write Good: devops/write_good.md + - Formatters/Fixers: + - Black: devops/black.md + - Yamlfix: yamlfix.md + - Pyment: pyment.md + - mdformat: mdformat.md + - Type Checkers: + - Mypy: devops/mypy.md + - Security Checkers: + - pip-audit: pip_audit.md + - Bandit: devops/bandit.md + - Safety: devops/safety.md + - Dependency managers: + - Pip-tools: devops/pip_tools.md + - Automating Processes: + - copier: copier.md + - cookiecutter: linux/cookiecutter.md + - cruft: linux/cruft.md + - renovate: renovate.md + - letsencrypt: letsencrypt.md + - Threat modeling: + - Privacy threat modeling: privacy_threat_modeling.md + - Storage: + - storage.md + - NAS: nas.md + - OpenZFS: + - linux/zfs.md + - OpenZFS storage planning: zfs_storage_planning.md + - Sanoid: sanoid.md + - ZFS Prometheus exporter: zfs_exporter.md + - Hard drive health: + - hard_drive_health.md + - Smartctl: smartctl.md + - badblocks: badblocks.md + - Resilience: + - linux_resilience.md + - Memtest: memtest.md + - watchdog: watchdog.md + - Magic keys: magic_keys.md + - Monitoring: + - Monitoring Comparison: monitoring_comparison.md + - Prometheus: + - devops/prometheus/prometheus.md + - Architecture: devops/prometheus/prometheus_architecture.md + - Prometheus Operator: devops/prometheus/prometheus_operator.md + - Prometheus Install: devops/prometheus/prometheus_installation.md + - AlertManager: devops/prometheus/alertmanager.md + - Blackbox Exporter: devops/prometheus/blackbox_exporter.md + - cAdvisor: cadvisor.md + - Elasticsearch Exporter: elasticsearch_exporter.md + - Node Exporter: devops/prometheus/node_exporter.md + - Process Exporter: process_exporter.md - Python Prometheus: python-prometheus.md - - Python Telegram: - - python-telegram.md - - pytelegrambotapi: pytelegrambotapi.md - - Python VLC: python_vlc.md - - Playwright: playwright.md - - Plotly: coding/python/plotly.md - - questionary: questionary.md - - rich: rich.md - - Ruamel YAML: coding/python/ruamel_yaml.md - - Selenium: selenium.md - - Streamlit: streamlit.md - - SQLAlchemy: coding/python/sqlalchemy.md - - sqlite3: sqlite3.md - - Redis-py: coding/python/redis-py.md - - Requests: requests.md - - Requests-mock: coding/python/requests_mock.md - - Rq: coding/python/rq.md - - python_systemd: python_systemd.md - - sh: python_sh.md - - Talkey: talkey.md - - Tenacity: tenacity.md - - TinyDB: coding/python/tinydb.md - - Torch: torch.md - - Typer: typer.md - - Yoyo: coding/python/yoyo.md - - Type Hints: coding/python/type_hints.md - - Logging: python_logging.md - - Code Styling: coding/python/python_code_styling.md - - Docstrings: coding/python/docstrings.md - - Properties: python_properties.md - - Protocols: python_protocols.md - - Package Management: - - python_package_management.md - - PDM: pdm.md - - pipx: pipx.md - - Pipenv: pipenv.md - - Poetry: python_poetry.md - - Lazy loading: lazy_loading.md - - Plugin System: python_plugin_system.md - - Profiling: python_profiling.md - - Optimization: python_optimization.md - - Anti-Patterns: coding/python/python_anti_patterns.md - - Pytest: - - coding/python/pytest.md - - Parametrized testing: coding/python/pytest_parametrized_testing.md - - Pytest-cases: coding/python/pytest_cases.md - - Pytest-HttpServer: pytest_httpserver.md - - Pytest-xprocess: pytest-xprocess.md - - Internationalization: python_internationalization.md - - Python Snippets: coding/python/python_snippets.md - - Data Classes: coding/python/data_classes.md - - Vue.js: - - vuejs.md - - Vue snippets: vue_snippets.md - - Vuetify: vuetify.md - - Development tools: - - Cypress: cypress.md - - Vite: vite.md - - Vitest: vitest.md - - Bash: - - Bash snippets: bash_snippets.md - - Bash testing: bats.md - - lua: lua.md - - JSON: coding/json/json.md - - SQL: coding/sql/sql.md - - SQLite: sqlite.md - - YAML: coding/yaml/yaml.md - - Promql: coding/promql/promql.md - - Logql: logql.md - - HTML: html.md - - CSS: css.md - - Javascript: - - coding/javascript/javascript.md - - Javascript snippets: javascript_snippets.md - - MermaidJS: mermaidjs.md - - Latex: latex.md - - Graphql: graphql.md - - Qwik: qwik.md - - nodejs: linux/nodejs.md - - JWT: devops/jwt.md - - React: coding/react/react.md - - Coding tools: - - IDES: - - Vim: - - vim.md - - Vim configuration: - - vim_config.md - - Vim Keymaps: vim_keymaps.md - - Vim Package Manager: - - vim_plugin_managers.md - - LazyVim: lazyvim.md - - Packer: vim_packer.md - - UI management configuration: - - Vim foldings: vim_foldings.md - - Vim movement: vim_movement.md - - Tabs vs Buffers: vim_tabs.md - - File management configuration: - - NeoTree: neotree.md - - Telescope: telescope.md - - fzf.nvim: fzf_nvim.md - - Editing specific configuration: - - vim_editor_plugins.md - - Vim formatters: vim_formatters.md - - Vim autocomplete: vim_completion.md - - Vim markdown: vim_markdown.md - - Vim spelling: vim_spelling.md - - Vim autosave: vim_autosave.md - - Coding specific configuration: - - vim_coding_plugins.md - - Treesitter: vim_treesitter.md - - LSP: vim_lsp.md - - Snippets: luasnip.md - - DAP: vim_dap.md - - Git management configuration: - - vim_git.md - - Diffview: diffview.md - - gitsigns: gitsigns.md - - Testing management configuration: vim_testing.md - - Email management: vim_email.md - - Other Vim Plugins: - - linux/vim/vim_plugins.md - - Vim Snippets: vim_snippets.md - - Vim Troubleshooting: vim_troubleshooting.md - - Neovim Plugin Development: vim_plugin_development.md - - Vi vs Vim vs Neovim: vim_vs_neovim.md - - Tridactyl: tridactyl.md - - VSCodium: vscodium.md - - Coding with AI: ai_coding.md - - Git: - - git.md - - Github cli: gh.md - - Forgejo: forgejo.md - - Gitea: gitea.md - - Radicle: radicle.md - - Data orchestrators: - - data_orchestrators.md - - Kestra: kestra.md - - memorious: memorious.md - - Scrapers: - - morph.io: morph_io.md - - ETL: - - Singer: singer.md - - Espanso: espanso.md - - Generic Coding Practices: - - How to code: how_to_code.md - - Program Versioning: - - versioning.md - - Semantic Versioning: semantic_versioning.md - - Calendar Versioning: calendar_versioning.md - - Use warnings to evolve your code: use_warnings.md - - Keep a Changelog: changelog.md - - Writing good documentation: documentation.md - - Conventional comments: conventional_comments.md - - TDD: coding/tdd.md - - GitOps: gitops.md - - Abstract Syntax Trees: abstract_syntax_trees.md - - Software Architecture: - - SOLID: architecture/solid.md - - Domain Driven Design: - - architecture/domain_driven_design.md - - Repository Pattern: architecture/repository_pattern.md - - Service Layer Pattern: architecture/service_layer_pattern.md - - Architecture Decision Record: adr.md - - Database Architecture: architecture/database_architecture.md - - ORM, Query Builder or Raw SQL: architecture/orm_builder_query_or_raw_sql.md - - Microservices: architecture/microservices.md - - Restful APIS: architecture/restful_apis.md - - OCR: - - Table parsing: - - Camelot: camelot.md - - Frontend Development: frontend_development.md - - Park programming: park_programming.md - - Sponsor: sponsor.md - - Issues: issues.md - - DevSecOps: - - devops/devops.md - - Infrastructure as Code: - - Helm: - - devops/helm/helm.md - - Helm Installation: devops/helm/helm_installation.md - - Helm Commands: devops/helm/helm_commands.md - - Helm Secrets: devops/helm/helm_secrets.md - - Helm Git: helm_git.md - - Helmfile: devops/helmfile.md - - Terraform: terraform.md - - Ansible: - - Ansible Snippets: ansible_snippets.md - - Molecule: molecule.md - - Nix: nix.md - - Dotfiles: - - dotfiles.md - - Home Manager: home-manager.md - - Chezmoi: chezmoi.md - - Dotdrop: dotdrop.md - - Infrastructure Solutions: - - Kubernetes: - - devops/kubernetes/kubernetes.md - - Architecture: devops/kubernetes/kubernetes_architecture.md - - Resources: - - Namespaces: devops/kubernetes/kubernetes_namespaces.md - - Pods: devops/kubernetes/kubernetes_pods.md - - ReplicaSets: devops/kubernetes/kubernetes_replicasets.md - - Deployments: devops/kubernetes/kubernetes_deployments.md - - Horizontal Pod Autoscaling: >- - devops/kubernetes/kubernetes_hpa.md - - Volumes: devops/kubernetes/kubernetes_volumes.md - - Services: devops/kubernetes/kubernetes_services.md - - Labels: devops/kubernetes/kubernetes_labels.md - - Annotations: devops/kubernetes/kubernetes_annotations.md - - Ingress: devops/kubernetes/kubernetes_ingress.md - - Jobs: devops/kubernetes/kubernetes_jobs.md - - Kubectl: - - devops/kubectl/kubectl.md - - Kubectl Installation: devops/kubectl/kubectl_installation.md - - Kubectl Commands: devops/kubectl/kubectl_commands.md - - Additional Components: - - Metrics Server: devops/kubernetes/kubernetes_metric_server.md - - Ingress Controller: >- - devops/kubernetes/kubernetes_ingress_controller.md - - External DNS: devops/kubernetes/kubernetes_external_dns.md - - Cluster Autoscaler: >- - devops/kubernetes/kubernetes_cluster_autoscaler.md - - Dashboard: devops/kubernetes/kubernetes_dashboard.md - - Storage Driver: devops/kubernetes/kubernetes_storage_driver.md - - Vertical Pod Autoscaler: >- - devops/kubernetes/kubernetes_vertical_pod_autoscaler.md - - Networking: devops/kubernetes/kubernetes_networking.md - - Debugging: kubernetes_debugging.md - - Backups: - - Velero: velero.md - - Operators: devops/kubernetes/kubernetes_operators.md - - Tools: - - devops/kubernetes/kubernetes_tools.md - - Krew: krew.md - - Ksniff: ksniff.md - - Mizu: mizu.md - - AWS: - - devops/aws/aws.md - - AWS Snippets: aws_snippets.md - - AWS Savings plan: aws_savings_plan.md - - Security groups workflow: devops/aws/security_groups.md - - EKS: devops/aws/eks.md - - EFS: efs.md - - IAM: - - devops/aws/iam/iam.md - - IAM Commands: devops/aws/iam/iam_commands.md - - IAM Debugging: devops/aws/iam/iam_debug.md - - S3: devops/aws/s3.md - - WAF: aws_waf.md + - Instance sizing analysis: devops/prometheus/instance_sizing_analysis.md + - Prometheus Troubleshooting: >- + devops/prometheus/prometheus_troubleshooting.md + - Grafana: grafana.md + - Log analysis: + - Loki: + - loki.md + - Logcli: logcli.md + - Promtail: promtail.md + - Graylog: graylog.md + - Elastic Security: elastic_security.md + - SIEM: siem.md - Databases: - - Redis: architecture/redis.md - - RabbitMQ: rabbitmq.md - - Continuous Deployment: - - ArgoCD: argocd.md - - Continuous Integration: - - devops/ci.md - - Drone: drone.md - - Linters: - - Alex: devops/alex.md - - Flakeheaven: flakeheaven.md - - Flake8: devops/flake8.md - - Markdownlint: devops/markdownlint.md - - Proselint: devops/proselint.md - - Shellcheck: shellcheck.md - - Yamllint: devops/yamllint.md - - Write Good: devops/write_good.md - - Formatters/Fixers: - - Black: devops/black.md - - Yamlfix: yamlfix.md - - Pyment: pyment.md - - mdformat: mdformat.md - - Type Checkers: - - Mypy: devops/mypy.md - - Security Checkers: - - pip-audit: pip_audit.md - - Bandit: devops/bandit.md - - Safety: devops/safety.md - - Dependency managers: - - Pip-tools: devops/pip_tools.md - - Automating Processes: - - copier: copier.md - - cookiecutter: linux/cookiecutter.md - - cruft: linux/cruft.md - - renovate: renovate.md - - letsencrypt: letsencrypt.md - - Threat modeling: - - Privacy threat modeling: privacy_threat_modeling.md - - Storage: - - storage.md - - NAS: nas.md - - OpenZFS: - - linux/zfs.md - - OpenZFS storage planning: zfs_storage_planning.md - - Sanoid: sanoid.md - - ZFS Prometheus exporter: zfs_exporter.md - - Hard drive health: - - hard_drive_health.md - - Smartctl: smartctl.md - - badblocks: badblocks.md - - Resilience: - - linux_resilience.md - - Memtest: memtest.md - - watchdog: watchdog.md - - Magic keys: magic_keys.md - - Monitoring: - - Monitoring Comparison: monitoring_comparison.md - - Prometheus: - - devops/prometheus/prometheus.md - - Architecture: devops/prometheus/prometheus_architecture.md - - Prometheus Operator: devops/prometheus/prometheus_operator.md - - Prometheus Install: devops/prometheus/prometheus_installation.md - - AlertManager: devops/prometheus/alertmanager.md - - Blackbox Exporter: devops/prometheus/blackbox_exporter.md - - cAdvisor: cadvisor.md - - Elasticsearch Exporter: elasticsearch_exporter.md - - Node Exporter: devops/prometheus/node_exporter.md - - Process Exporter: process_exporter.md - - Python Prometheus: python-prometheus.md - - Instance sizing analysis: devops/prometheus/instance_sizing_analysis.md - - Prometheus Troubleshooting: >- - devops/prometheus/prometheus_troubleshooting.md - - Grafana: grafana.md - - Log analysis: - - Loki: - - loki.md - - Logcli: logcli.md - - Promtail: promtail.md - - Graylog: graylog.md - - Elastic Security: elastic_security.md - - SIEM: siem.md - - Databases: - - PostgreSQL: - - postgres.md - - Postgres operators: - - postgres_operators.md - - Zalando Postgres operator: zalando_postgres_operator.md - - elasticsearch: linux/elasticsearch.md - - Oracle Database: oracle_database.md - - Authentication: - - Authentik: authentik.md - - API Management: - - devops/api_management.md - - Kong: devops/kong/kong.md - - Scrum: - - scrum.md - - Templates: - - Refinement Template: refinement_template.md - - Hardware: - - CPU: cpu.md - - RAM: - - ram.md - - ECC RAM: - - ecc.md - - rasdaemon: rasdaemon.md - - Power Supply Unit: psu.md - - GPU: gpu.md - - Pedal PC: pedal_pc.md - - Pentesting: pentesting.md - - Operating Systems: - - Linux: - - linux.md - - Linux Snippets: linux_snippets.md - - Distros: - - Libreelec: libreelec.md - - Tails: tails.md - - Recovery tools: - - finnix: finnix.md - - Security tools: - - fail2ban: linux/fail2ban.md - - pass: pass.md - - Wireshark: wireshark.md - - Canary tokens: canary_tokens.md + - PostgreSQL: + - postgres.md + - Postgres operators: + - postgres_operators.md + - Zalando Postgres operator: zalando_postgres_operator.md + - elasticsearch: linux/elasticsearch.md + - Oracle Database: oracle_database.md + - Authentication: + - Authentik: authentik.md + - API Management: + - devops/api_management.md + - Kong: devops/kong/kong.md + - Scrum: + - scrum.md + - Templates: + - Refinement Template: refinement_template.md + - Hardware: + - CPU: cpu.md + - RAM: + - ram.md + - ECC RAM: + - ecc.md + - rasdaemon: rasdaemon.md + - Power Supply Unit: psu.md + - GPU: gpu.md + - Pedal PC: pedal_pc.md + - Pentesting: pentesting.md + - Operating Systems: + - Linux: + - linux.md + - Linux Snippets: linux_snippets.md + - Distros: + - Libreelec: libreelec.md + - Tails: tails.md + - Recovery tools: + - finnix: finnix.md + - Security tools: + - fail2ban: linux/fail2ban.md + - pass: pass.md + - Wireshark: wireshark.md + - Canary tokens: canary_tokens.md
-
- Sysadmin tools:
-
- brew: linux/brew.md
-
- detox: detox.md
-
- Docker: docker.md
-
- Watchtower: watchtower.md
-
- Dynamic DNS: dynamicdns.md
-
- goaccess: goaccess.md
-
- Gotify: gotify.md
-
- HAProxy: linux/haproxy.md
-
- journald: journald.md
-
- LUKS: linux/luks/luks.md
-
- Outrun: outrun.md
-
- rm: linux/rm.md
-
- sed: sed.md
-
- Syncthing: linux/syncthing.md
-
- Tahoe-LAFS: tahoe.md
-
- Wake on Lan: wake_on_lan.md
-
- Wireguard:
-
- linux/wireguard.md
-
- wg-easy: wg-easy.md
-
- yq: yq.md
-
- zip: linux/zip.md
-
- Window manager tools:
-
- dunst: dunst.md
-
- ferdium: ferdium.md
-
- i3wm: i3wm.md
-
- rofi: rofi.md
-
- User tools:
-
- Browsers:
-
- google chrome: linux/google_chrome.md
-
- Chromium: chromium.md
-
- Hushboard: husboard.md
-
- Peek: peek.md
-
- Terminals:
-
- terminal_comparison.md
-
- Alacritty: alacritty.md
-
- Wezterm: wezterm.md
-
- Kitty: kitty.md
-
- Instant messaging apps:
-
- Delta Chat: deltachat.md
-
- Simplex Chat: simplexchat.md
-
- Sysadmin tools:
-
- brew: linux/brew.md
-
- detox: detox.md
-
- Docker: docker.md
-
- Watchtower: watchtower.md
-
- Dynamic DNS: dynamicdns.md
-
- goaccess: goaccess.md
-
- Gotify: gotify.md
-
- HAProxy: linux/haproxy.md
-
- journald: journald.md
-
- LUKS: linux/luks/luks.md
-
- Outrun: outrun.md
-
- rm: linux/rm.md
-
- sed: sed.md
-
- Syncthing: linux/syncthing.md
-
- Tahoe-LAFS: tahoe.md
-
- Wake on Lan: wake_on_lan.md
-
- Wireguard:
-
- linux/wireguard.md
-
- wg-easy: wg-easy.md
-
- yq: yq.md
-
- zip: linux/zip.md
-
- Window manager tools:
-
- dunst: dunst.md
-
- ferdium: ferdium.md
-
- i3wm: i3wm.md
-
- rofi: rofi.md
-
- User tools:
-
- Browsers:
-
- google chrome: linux/google_chrome.md
-
- Chromium: chromium.md
-
- Hushboard: husboard.md
-
- Peek: peek.md
-
- Terminals:
-
- terminal_comparison.md
-
- Alacritty: alacritty.md
-
- Wezterm: wezterm.md
-
- Kitty: kitty.md
-
- Instant messaging apps:
-
- Delta Chat: deltachat.md
-
- Simplex Chat: simplexchat.md
-
- Android:
-
- Android Tips: android_tips.md
-
- OS:
-
- GrapheneOS: grapheneos.md
-
- FuriOS: furios.md
-
- Apps:
-
- Cone: cone.md
-
- GadgetBridge: gadgetbridge.md
-
- LibreTube: libretube.md
-
- HappyCow: happycow.md
-
- ICSx5: icsx5.md
-
- Orgzly: orgzly.md
-
- OsmAnd: osmand.md
-
- Seedvault: seedvault.md
-
- Android SDK Platform tools: android_sdk.md
-
- Android:
-
- Android Tips: android_tips.md
-
- OS:
-
- GrapheneOS: grapheneos.md
-
- FuriOS: furios.md
-
- Apps:
-
- Cone: cone.md
-
- GadgetBridge: gadgetbridge.md
-
- LibreTube: libretube.md
-
- HappyCow: happycow.md
-
- ICSx5: icsx5.md
-
- Orgzly: orgzly.md
-
- OsmAnd: osmand.md
-
- Seedvault: seedvault.md
-
- Android SDK Platform tools: android_sdk.md
-
- Hardware:
-
- Redox: redox.md
-
- Vial: vial.md
-
- Rock64: rock64.md
-
- Filosofía:
-
- filosofía.md
-
- Amor: amor.md
- Arts:
- Writing:
- writing/writing.md @@ -746,9 +755,6 @@ nav:
- Calistenia: calistenia.md
- Aerial Silk: aerial_silk.md
- Meditation: meditation.md
- Writing:
-
- Maker:
-
- Redox: redox.md
-
- Vial: vial.md
- Sudokus: sudokus.md
- Drawing:
- drawing/drawing.md @@ -811,6 +817,7 @@ nav:
- Board Games:
- board_games.md
- Regicide: regicide.md
-
- Monologues: monologues.md
- Projects: projects.md
- Contact: contact.md
-
Hardware⚑
Rock64⚑
-
New: Install Debian in a rock64.
- Go to the rock64 wiki page to get the download directory for the debian version you want to install
- Download
firmware.rock64-rk3328.img.gz
andpartition.img.gz
- Combine the 2 parts into 1 image file:
zcat firmware.rock64-rk3328.img.gz partition.img.gz > debian-installer.img
- Write the created .img file to microSD card or eMMC Module using dd:
dd if=debian-installer.img of=/dev/sda bs=4M
. Replace/dev/sda
with your target drive. - Plug the microSD/eMMC card in the Rock64 (and connect a serial console, or keyboard and monitor) and boot up to start the Debian Installer
Notes:
- An Ethernet connection is required for the above installer
- Remember to leave some space before your first partition for u-boot! You can do this by creating a 32M size unused partition at the start of the device.
- Auto creating all partitions does not work. You can use the following manual partition scheme:
#1 - 34MB Unused/Free Space #2 - 512MB ext2 /boot (Remember to set the bootable flag) #3 - xxGB ext4 / (This can be as large as you want. You can also create separate partitions for /home /var /tmp) #4 - 1GB swap (May not be a good idea if using an SD card)
Software tools⚑
Liberaforms⚑
-
New: Usage of liberaforms.
Marked true
If you are a forms admin you can mark the answers which can be used to for example state that those have been checked and are not trolls, the user can then edit the answers through the magic link but it's not very probable that it becomes a trollo
Send edit email
If you want the users to receive an email with the magic link so that they can edit their answers you need to add a "Short text" field of type "Email" and then in the Options you need to enable the setting to send the users the magic link
Extract the results through API
Each form at the bottom of the Options tab has a section of API endpoints, once enabled you can extract them with curl:
BASE_URL=https://forms.komun.org form_id=478 curl -sqH "Authorization: Bearer ${JWT_TOKEN}" "${BASE_URL}/api/form/${form_id}/answers"
That will give you an answer similar to:
{ "answers": [ { "created": "2025-04-25T15:05:02.384121", "data": { "radio-group-1712945984567": "Hitzaldia--Charla--Xerrada", "radio-group-1713092876455": "55", "radio-group-1713373271313": "Castellano_1", "radio-group-1713382758036": "Si_1", "radio-group-1744968040362-0": "d8b35c755d9d41e2a844a344ae2494d6", "text-1712945594310": "Historia de la criptograf\u00eda", "text-1712945631444": "", "text-1712945663611": "user", "text-1712947404812": "user@sindominio.net", "text-1744967213162-0": "Divulgativa", "text-1744967571620-0": "Ninguno", "textarea-1712945646944": "Aproximaci\u00f3n hist\u00f3rica a la criptograf\u00eda, desde la Antig\u00fcedad a d\u00eda de hoy", "textarea-1712945755946": "", "textarea-1712945806547": "HDMI", "textarea-1712945865865": "Privacidad, criptograf\u00eda, matem\u00e1ticas, historia", "textarea-1713380502724": "" }, "form": 478, "id": 36148, "marked": false } ], "meta": {} } `` As you can see the fields have weird names, to get the details of each field you can do the same request but to `${BASE_URL}/api/form/${form_id}` instead of `${BASE_URL}/api/form/${form_id}/answers` ```json { "form": { "created": "2025-04-25T11:45:43.633038", "introduction_md": "# Call4Nodes Hackmeeting 2025", "slug": "call4nodes-hackmeeting-2025-cas", "structure": [ { "className": "form-control", "label": "T\u00edtulo", "name": "text-1712945594310", "required": true, "subtype": "text", "type": "text" }, { "className": "form-control", "label": "Descripci\u00f3n", "name": "textarea-1712945646944", "required": true, "type": "textarea" }, ...
Filosofía⚑
-
- En el episodio de Ver al otro: narrativa y democracia de punzadas sonoras hacen un análisis muy interesante sobre cómo la literatura puede ser un mecanismo muy potente de transformación social.
Amor⚑
-
En el episodio Amor no correspondido: ¿Por qué? de punzadas sonoras hacen un análisis muy interesante. Puedes escucharlo directamente desde aquí.
Arts⚑
Cooking⚑
Cooking Basics⚑
-
New: Todos los cortes para una cebolla.
Picada
- Dividir la cebolla por la raiz
- apoyar cada mitad en la tabla con la raiz en perpendicular a ti
- cortes grandes perpendicular a la raiz
- poner la raiz en tu dirección
- cortes grandes paralelos a la tabla
- cortes grandes perpendiculares a la tabla
Juliana
- Dividir la cebolla por la raiz
- apoyar cada mitad en la tabla con la raiz en paralelo a ti
- cortes al gusto de grosor perpendiculares a la tabla
Media luna
- Dividir la cebolla por la raiz
- apoyar cada mitad en la tabla con la raiz en perpendicular a ti
- cortes al gusto de grosor perpendiculares a la tabla
Brunoise
- Dividir la cebolla por la raiz
- apoyar cada mitad en la tabla con la raiz en paralelo a ti
- cortes al gusto de grosor perpendiculares a la tabla sin llegar hasta el final
- poner la raiz en perpendicular
- cortes al gusto de grosor paralelos a la tabla sin llegar hasta el final
- cortes al gusto de grosor perpendiculares a la tabla
Discos
- Sin dividir la cebolla, poner la raiz paralela a la tabla y en perpendicular a ti
- cortes al gusto de grosor perpendiculares a la tabla
Aros
- Corte de discos
- desmontar los discos
Relevant content⚑
Videogames⚑
Age of Empires⚑
-
New: New teutons vs portuguese video.
Monologues⚑
-
New: Add Sammy Obeid.
- Sammy Obeid: Antizionist comedian