X → Graph → Effect<A, E, R>
│ │ │ │ │
│ │ │ │ └─ what each node needs (§5)
│ │ │ └──── where the graph breaks (§4)
│ │ └─────── what flows through nodes (§2)
│ │
│ └─ nodes = functions, edges = data flow
A self-hosted, compounding-memory AI assistant running on a Raspberry Pi.
NanoClaw is a personal AI assistant built on Anthropic's Claude that runs entirely on a Raspberry Pi. It connects to messaging channels (WhatsApp, Telegram, Slack, Discord), processes voice and images, schedules recurring tasks, and — unlike a standard chatbot — accumulates knowledge over time through a structured memory system.
Nothing novel here, just want these instructions all in one place for my own use. Using poetry now.
1.) Ensure everything is pushed to master and is working
2.) Ensure CHANGES.md is up to date with latest
3.) Ensure version in setup.py is incremented
4.) Tag the repo - e.g., git tag 0.2 && git push origin 0.2
| from rest_framework import status | |
| from rest_framework.response import Response | |
| from rest_framework_simplejwt.authentication import JWTAuthentication | |
| # parametre olarak verilen methodlara sadece admin user erişebilir demek | |
| # db ile iletişim kuruluyor, admin kullanıcısı olduğu için db ile iletişimini önemsemedim | |
| def only_admin(methods=[], err_message="Admin authorization required."): | |
| def decorator(view_function): | |
| def decorated_function(request, *args, **kwargs): |
- Microservices are independently deployable services modeled around a business domain
- Microservices are technology-agnostic
- Microservices communicate with each other via networks - making them a form of distributed system. They also encapsulate data storage and retrieval, exposing data, via well-defined interfaces. So databases are hidden inside the service boundary
- The GOAL of microservices is to have as small an interface as possible
| layout | post |
|---|---|
| title | xss cheat sheet |
# xss-cheat-sheet
# Basics Xss
HTML Context - Simple Tag Injection
| import speech_recognition as sr | |
| # obtain path to "Daily_English_Conversation_02_Do_you_speak_English.wav" in the same folder as this script | |
| from os import path | |
| AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "Daily_English_Conversation_02_Do_you_speak_English.wav") | |
| # use the audio file as the audio source | |
| r = sr.Recognizer() | |
| with sr.AudioFile(AUDIO_FILE) as source:namelist2.wav | |
| print("Say something!") |
1.) Download a Nerd Font
2.) Unzip and copy to ~/.fonts
3.) Run the command fc-cache -fv to manually rebuild the font cache