భారీ స్థాయిలో ముడి సంభాషణ లాగ్‌లు (Raw conversation logs) చదవలేనంతగా మారిపోతాయి. కొన్ని నెలల విపరీతమైన వినియోగం తర్వాత, మీరు వందల వేల లైన్ల సంభాషణలను చూస్తూ నిలుచుంటారు. వాటిని వెతకడం నెమ్మదిగా ఉంటుంది; చదవడం అసాధ్యం. దీనికి విరుద్ధంగా, ఒక Obsidian vault మీకు నిర్మాణాత్మకమైన దీర్ఘకాలిక జ్ఞాపకశక్తిని ఇస్తుంది: bi-directional links, tags, మరియు కనెక్షన్లను వెలికితీసే ఒక graph view. ఈ రెండింటి మధ్య ఉన్న తేడా స్పష్టంగా ఉంది. ఆ తేడాను తగ్గించాలంటే ఆటోమేషన్ అవసరం.

ప్రతి రాత్రి ఆ తేడాను పూడ్చే ఒక చిన్న పైప్‌లైన్‌ను నేను రూపొందించాను. ఇది ఎటువంటి మాన్యువల్ ప్రమేయం లేకుండా మూడు దశలను వరుసగా నిర్వహిస్తుంది. మొదటిది, ఇది తాజా సంభాషణ ఎగుమతులను (conversation exports) సేకరించి, వాటిని ప్రస్తుత స్థితికి అప్‌డేట్ చేస్తుంది. రెండవది, గత 28 గంటల ముడి సంభాషణలను Claude ద్వారా క్లుప్తీకరించి, ఆ నిర్మాణాత్మక సారాంశాలను నేరుగా Obsidian vault లో చేరుస్తుంది. ఆ 28 గంటల సమయం కావాలని నిర్ణయించుకున్నాను; ఇది మునుపటి పూర్తి రోజును మరియు ఆలస్యాల కోసం కొంత బఫర్‌ను కవర్ చేస్తుంది. మూడవది, మార్పులన్నింటినీ ఒక ప్రైవేట్ రిపోజిటరీకి కమిట్ చేసి పుష్ చేయడం ద్వారా బ్యాకప్ చేస్తుంది, ఇది ఆఫ్‌లైన్ స్టోరేజ్ మరియు అనుకోకుండా డిలీట్ అయిపోతే రక్షణగా పనిచేస్తుంది. ఈ మొత్తం ప్రక్రియ చాలా సాధారణంగా మరియు నమ్మదగినదిగా ఉండాలి. సాధారణ ఆటోమేషన్ (Boring automation) అనేది నా లక్ష్యం.

macOS మీ స్క్రిప్ట్‌ను నిశ్శబ్దంగా ఎప్పుడు చంపేస్తుందంటే

రాత్రిపూట జరిగే పనికి అతిపెద్ద శత్రువు అకస్మాత్తుగా క్రాష్ అవ్వడం కాదు. అది నిశ్శబ్దంగా ఆగిపోవడం.

macOSలో, Documents ఫోల్డర్ TCC రక్షణలో ఉంటుంది, ఇది సున్నితమైన ప్రదేశాలకు యాక్సెస్‌ను నియంత్రించే ప్రైవసీ సబ్‌సిస్టమ్. మీరు మీ స్క్రిప్ట్‌ను launchd ద్వారా షెడ్యూల్ చేస్తే, సిస్టమ్ మీరు గమనించలేనంతగా ఎటువంటి ఎర్రర్ చూపకుండానే ఆ ప్రాసెస్‌ను బ్లాక్ చేయవచ్చు. మీ లాగ్ ఫైల్ ఖాళీగా ఉంటుంది. మీ vault అప్‌డేట్ కాదు. పని విఫలమైంది, కానీ మీ నోట్స్ పాతబడిపోయాయని మీరు గ్రహించినప్పుడు మాత్రమే కొన్ని రోజుల తర్వాత ఆ తేడాను మీరు గుర్తిస్తారు.

నేను దీనిని ఒక కఠినమైన ప్రీఫ్లైట్ రూటీన్ (preflight routine) ద్వారా నిర్వహిస్తాను. ప్రధాన పని ప్రారంభం కాకముందే, స్క్రిప్ట్ టార్గెట్ డైరెక్టరీలో ఒక చిన్న రైట్ ఆపరేషన్‌ను ప్రయత్నిస్తుంది. macOS దానిని నిరాకరిస్తే, ఆ వైఫల్యం వెంటనే గుర్తించబడుతుంది మరియు ఒక డెస్క్‌టాప్ నోటిఫికేషన్ వస్తుంది. అది నిశ్శబ్దంగా ముగిసిపోదు. తదుపరి, షెల్ ఇంటర్‌ప్రెటర్ (shell interpreter) కు System Settings లో Full Disk Access అనుమతి ఉండాలి. ఆ అనుమతి చాలా విస్తృతమైనది, కాబట్టి నేను అన్ని ఆటోమేషన్ స్క్రిప్ట్‌లను రక్షించబడిన Documents ఫోల్డర్ ట్రీ వెలుపల ఉంచడం ద్వారా రిస్క్‌ను తగ్గిస్తాను. అవి వేరే చోట ఒక ప్రత్యేక డైరెక్టరీలో ఉంటాయి మరియు vault పాత్ స్పష్టంగా పేర్కొనబడుతుంది. ముందస్తు గుర్తింపు, నోటిఫికేషన్లు మరియు జాగ్రత్తగా ఫోల్డర్లను అమర్చడం అనే ఈ కలయిక నిశ్శబ్ద వైఫల్య సమస్యను పరిష్కరిస్తుంది.

స్లీప్, టైమౌట్స్ మరియు ఫ్రోజన్ జాబ్స్ కోసం డిజైన్ చేయడం

లాప్‌టాప్‌లు స్లీప్ మోడ్‌లోకి వెళ్తాయి. నెట్‌వర్క్‌లలో అంతరాయాలు కలగవచ్చు. API కాల్స్ నిలిచిపోవచ్చు. ఒకే ఒక ఫ్రోజన్ జాబ్ వల్ల మొత్తం సిస్టమ్ అనవసరంగా ఆగిపోకూడదు.

పైప్‌లైన్‌ను స్థిరంగా ఉంచడానికి నేను నాలుగు ఆచరణాత్మక పద్ధతులను ఉపయోగిస్తాను.

బహుళ టైమ్ స్లాట్లు (Multiple time slots). ఉదయాన్నే ఒకేసారి రన్ అవ్వడంపై ఆధారపడకుండా, షెడ్యూలర్ రోజులో వివిధ సమయాల్లో మళ్ళీ ప్రయత్నిస్తుంది. తెల్లవారుజామున మెషిన్ క్లోజ్ చేసి ఉంటే, మధ్యాహ్నపు సమయం దానిని కవర్ చేస్తుంది.

డన్ మార్కర్లు (Done markers). ఒక రన్ విజయవంతమైనప్పుడు, అది ఒక స్పష్టమైన గుర్తును (breadcrumb) వదిలివేస్తుంది. తదుపరి షెడ్యూల్ చేసిన ప్రయత్నం మొదట ఆ మార్కర్‌ను తనిఖీ చేస్తుంది. పని ఇప్పటికే పూర్తయి ఉంటే, అది కొన్ని సెకన్లలోనే క్లీన్‌గా ముగిసిపోతుంది. ఇది అనవసరమైన API కాల్స్ మరియు పునరావృత ప్రాసెసింగ్‌ను నివారిస్తుంది.

mkdir ద్వారా ఫైల్ లాక్స్ (File locks through mkdir). ఒకేసారి రెండు పనులు జరగకుండా ఉండటానికి, నేను డైరెక్టరీ ఆధారిత లాక్‌ను ఉపయోగిస్తాను. లోకల్ ఫైల్‌సిస్టమ్స్‌లో డైరెక్టరీని సృష్టించడం అనేది అటామిక్ (atomic), కాబట్టి రెండు ఏకకాలపు జాబ్‌లు ఒకే లాక్ పాత్‌ను పొందలేవు. ఒకవేళ డైరెక్టరీ ఇప్పటికే ఉంటే, రెండవ ఇన్‌స్టాన్స్ వెంటనే ఆగిపోతుంది. మొదటిది పూర్తయినప్పుడు, అది డైరెక్టరీని తొలగిస్తుంది. ఇది PID ఫైల్‌ల కంటే తేలికైనది మరియు కఠినమైనది.