Celem projektu jest stworzenie systemu do gromadzenia i analizy danych telemetrycznych dotyczących aktywności użytkownika w systemie macOS. Zgromadzone dane posłużą do obiektywnej oceny, identyfikacji wzorców i optymalizacji alokacji czasu oraz zasobów poznawczych.
Projekt opiera się na następujących pryncypiach:
- Kwantyfikacja jako podstawa optymalizacji: Decyzje dotyczące optymalizacji muszą być podejmowane na podstawie mierzalnych, obiektywnych danych, a nie subiektywnych odczuć czy błędnych oszacowań pamięciowych.
- Integralność i surowość danych: System priorytetyzuje zbieranie surowych, niskopoziomowych danych (np. nazwa procesu, tytuł okna, timestamp) bez wstępnej kategoryzacji. Interpretacja i klasyfikacja odbywa się w fazie analizy, co zapewnia elastyczność i minimalizuje błędy na etapie zbierania.
- Modularność: Architektura systemu jest rozdzielona na trzy niezależne komponenty: kolekcję, przechowywanie i analizę. Umożliwia to niezależny rozwój i modyfikację każdej części.
- Prywatność i lokalność: Cały cykl życia danych (od zebrania po analizę) odbywa się lokalnie na maszynie użytkownika. Żadne dane nie są wysyłane do zewnętrznych serwisów.
System składa się z trzech głównych modułów:
- Funkcja: Skrypt działający w tle, dokonujący próbkowania stanu systemu w regularnych, zdefiniowanych interwałach czasowych (np. co 15 sekund).
- Zbierane dane:
- Timestamp (Unix epoch)
- Nazwa aktywnej aplikacji (np.
Google Chrome,Visual Studio Code) - Tytuł aktywnego okna (np.
[Tytuł wideo] - YouTube,[Nazwa pliku] - [Nazwa projektu])
- Technologia: Python z wykorzystaniem
pyobjc-framework-AppKitdo interakcji z API macOS.
- Format: Logi zapisywane jako sekwencja obiektów JSON w pliku tekstowym (JSON Lines,
.jsonl). Alternatywnie, lokalna baza danych SQLite. - Uzasadnienie: Format
.jsonljest prosty, czytelny dla człowieka i łatwy do parsowania strumieniowego. SQLite oferuje bardziej zaawansowane możliwości kwerendowania bezpośrednio na etapie przechowywania.
- Funkcja: Zestaw skryptów lub notatnik Jupyter do przetwarzania surowych logów w celu ekstrakcji użytecznych informacji.
- Przykładowe Analizy:
- Agregacja czasu spędzonego w każdej aplikacji.
- Kategoryzacja aktywności na podstawie słów kluczowych w tytułach okien (np. "praca", "social media", "nauka").
- Generowanie raportów dziennych/tygodniowych.
- Identyfikacja najczęściej używanych programów i dokumentów.
- Analiza wzorców przełączania kontekstu (context switching).
- Technologia: Python z bibliotekami
pandasdo manipulacji danymi orazmatplotlib/seaborndo wizualizacji.
Faza koncepcyjna i rozwój podstawowego modułu zbierania danych.