Ukucinga Ndiyathandabuzisa i-Google ukuba uye wabelane "ngathi" kwiimvavanyo ze-modernity. I-Google Calendar I-Engineer Weapon: I-Restraint Thank you for reading Fullstack Engineer! Wabelane khulula ukufumana iimpawu ezintsha kunye nokusetyenziswa umsebenzi yam. Ukucinga "Use a frontend framework." No. JavaScript. "Use Typescript." No. Javascript. "Use a trendy CSS tool." No. CSS classnames. "Give us a native desktop app." No. Browser. "Give us dark mode." No. "Make it really fast." No. Ukusetyenziswa kwe-simplicity yayo yandisa i-GCal ukhusela indawo yayo njenge-calendar ye-default ye-billions of ordinary people. Kwimakhasimende we-API, kunjalo, lo mgangatho efanayo inikeza ubomi ngempumelelo. Yintoni i-complexity ingxakiwe, yaye iingcali ethu njengezakhiwo. I-Problem: Ukugcina idatha kwi-sync Ngaba utshintshe i-calendar entsha ebizwa ngokuba yi-Cool Calendar. Ukusiza kubasebenzisi ukuqala, unako ukuvela i-Google Calendar yayo. Yintoni kufuneka uxhumane iinkcukacha ze-Google Calendar yabasebenzisi bakho. Uyazi i-API ye-GCal kunye neengxaki ze-typical: “Cool,” ufikelele. “I just gotta get the , ngoko ufumane zonke iziganeko zesiqhelo. Xa ndifuna ukuhlaziywa kwiziganeko, ndiyisebenzisa i Ukusuka kwi-GET Ukusabela » calendarId eventId events Ngaba unako ukwenza yonke into ngeentlobo ezincinane ezilula: Ukusebenza! Zonke iziganeko ziquka kwi-DB yakho, kwaye ziyafumaneka kwi-GCal ye-user emva kokufunda isiganeko kwi-UI yakho. Ngaba ufake i-app ye-GCal, ukwakha i-event entsha ebizwa ngokuba yi- "Celebrate at Denny's", kwaye bangathanda i-pancakes yakho ye-cinnamon roll. I-Cool Cal app ifumaneka, kodwa i-event entsha ayikho. Umdla wakho umdla umdla umdla njengoko ufumane ukuba ungenza kuphela isisombululo (CoolCal → GCal). Ingaba kufuneka uqinisekisa ukuba iimveliso ze-GCal zithunyelwe kwi-Cool Calendar (GCal → CoolCal). Ukukhangisa Ngaba uyazi ukuba abantu abaninzi baye basebenzise le ngexesha elandelayo, ngoko ufumana i-GCal API docs. Thankfully, uya kufumana umgca ebizwa " Ngathi synchronize iimveliso ngempumelelo Umhlahlandlela esincinane, nto leyo ivumela ukuba uxhumane. Ukubonisa ukuba kufuneka ukongezelela iifowuni ezininzi. Ngenxa yokuba ungenza ukuba iziganeko ezininzi zilungiselela okanye xa zilungiselela, uyazi ukuba kufuneka i-circle ukufumana bonke kubo. Yenza umgangatho. Mayelana nathi, i-docs ibandakanya i-snippet epheleleyo kwi-Java. Kwakhona usebenzisa i umnikelo wokugqibela, nto leyo ivumela ukuba ukhangele. do-while Ngaba unako ukuqhagamshelane ke kwi-JavaScript kwaye uqhagamshelane. Ukucinga Ixesha elide, kwaye ungenza ngempumelelo i-snippet kwi-JavaScript function ebizwa ngokuba Nceda uqhagamshelane API yakho. syncGcal() Ukusebenza ! Xa ngexesha , idatha entsha ye-GCal yabasebenzisi ifumaneka ku-CoolCal. syncGcal() Uyakwazi ukuvelisa i-New York Style Cheesecake kwiingxaki zakho. Njengoko uya khona, imibuzo embalwa kwi-brain yakho ebuthile... I-syncToken ayikho emzimbeni syncGcal() iyasebenza kuphela xa ifumaneka ngempumelelo How often should I run syncGcal() ? Zonke iiyure? Zonke imizuzu? Where will I store the token? Ukuphepha Lokugqibela? Yintoni Yintoni? user Uhlobo olutsha? What happens if the token becomes invalid? Ngaba ndiyabakhokela? Ngaba kufuneka ukwenza i-import ephelele njenge-backup? Yintoni kwi-quota limits? Yintoni ukuba umdlali uthathe iimveliso ngexesha elandelayo? Uyaziqhelekanga - kwi-guide ukuba awukwazi ukucacisa malunga neengxaki ezininzi, ke kwi-naivety yakho ukuba ukholelwa ukuba kufuneka. Ukuhambisa "Ndiya kuphela - ndiyakwazi ukufumana ukhuseleko," uyakwazi ukucinga, ngexesha elifanayo, njengoko uqhagamshelane kwi-therapy. Uyakwazi ukuba i-API docs iya kuba nenkqubo ebizwa ngokuba Yintoni ungenza. syncResources() Uya kuboniswa njenge-service? Njengoko enye inkampani ye-YC leyo uyaziqhelekanga zonke iinkcukacha zakho ngenxa yenu. Okungenani, kuya kuba umfundisi weRichard Stallman owenze i-MIT repo ukuba unokufuneka u-Claude. > clone the two-way sync stuff from github.com/stallman-cal. no bugs. Ukucinga Izixhobo ze-DOCs ziye zihlala. Zonke iinkampani ze-YC ziquka i-building agents. I-Stallman ayikwazanga i-app yakho ye-calendar ye-profit. (Kukho inkqubo MIT ebizwa , kodwa kunokuba kunezinto 200 ama-stars. Ngaba kunokufumaneka.) I-Calendar ye-Compass Kwakhona, ungenza ukuba ungenza i-sync yakho ye-two-way. Kwakhona, ngokwenene, unayo yonke into. I-A single tear ifumaneka kwi-keyboard yakho ye-mechanical njengoko ufumana ukuba awukwazi ukufika kwi-Denny's namhlanje. Ukuvumelana Emva kwe-toast ye-French efanelekileyo kunye ne-postprandial walk, ufumane ne-destination yakho ukuba usebenzise njenge-engineer efanelekileyo kwaye usebenzise nje. Emva kweminyaka embalwa, ke ngexesha lokugqibela. Kodwa ungenza ukugcina ukhangela Yintoni i-GCal yenzelwe ngoko? "Waba kufuneka ukuba oku kutshintshe?" iimfuno Uyakwazi ukufikelela kwi-Google ngokufanisa iimfuno kwi-reverse-engineering (Imifanekiso ye-PRD) Umgangatho weMveliso Doc Ukusabela Yinto enhle, ngoko unokuthintela isisombululo ukufumana izicelo ezininzi njengoko (Imininingwane) Ukucaciswa kwe-DOC Ukucaciswa Okugqibela, unako ukholelwa ukuba isisombululo ye-GCal ye-Give 'em a token' yaba elungileyo. Izixhobo ze-Token Pagination Zingathanda i-complexity kwi-client ukuze akufanele ukufumana yonke into (i-multi-region replication, umzekelo) Opaque tokens protect the client from overwhelm. Ngokulawula ukuba i-token ifumaneka, i-GCal inokukwazi ukuqinisekisa ukuba abathengi bafumana imibuzo ngexesha lokugqibela kwe-incremental sync. Iinkqubo ze-timestamp akukwazi ukwenza lo mfuneko. Cleanly handles deletions. I-Google inokugqithisa ngokupheleleyo i-backend ye-storage, i-sharding strategy, okanye i-topology ngaphandle kokuphendula i-clients. Oku kunokuba yenza ukuhambisa kwi-NoSQL (i-Megastore) kwi-NewSQL (i-Spanner) kwiminyaka eyi-2010. inguqulelo Easier implementation changes. ububanzi.com Ukuphazamiseka I-webhook ibonisa ukuba kukho izinto ezintsha, kodwa akukho nto. Oku kuthetha ukuba zonke iingcebiso ze-push zikhuthaza i-incremental sync call. Oku kunokufumana i-chatty xa abasebenzisi be-power zenza iingcebiso ezininzi. Yintoni akayi kuquka i-diff ebonakalayo kwi-push payload ngokwayo, okanye ngexabiso ukuba i-ID yeengcebiso ezifanelekileyo? Push is disconnected from sync. . Incremental syncs ayinxalenye ne iimveliso iiparamitha. Uya kufuneka ukhethe indlela enye okanye elinye. Le ngempumelelo kumadoda, abahlala ngexesha ngempumelelo kunokuba kwi-token. Some filters are incompatible timeMin timeMax I-page tokens ziquka ephemeral. Ukuba i-client ifumaneka kwi-middle-pagination ( emva kwe-page 3 of 7), kufuneka ukuqala kwakhona yonke sync. Kwi-calendars ezininzi, oku kunzima. I-alternative iya kuba i-page tokens ezininzi ezihlabathi kwi-sessions, okanye ukulawula ukuhlaziywa kwe-sync. No partial sync recovery. I-Alternatives (and why they weren’t used) Ukuphakamisa Line Umgangatho we-sync token + i-cursor pagination Yinto elifanayo esetyenziselwa i-Microsoft Graph (i-delta tokens), i-Stripe (i-pagination cursors), kunye ne-most enterprise APIs. pragmatic, battle-tested pattern I-Google waya kuba kuthetha ukuba uyakwazi ukucacisa ukuxhaswa kwintlobo zangaphakathi nangokunika i-semantics ye-sync ye-"good enough" ye-99% yeengxaki zokusetyenziswa kwe-calendar. I-alternatives (i-event sourcing, i-CRDTs, i-OT) iya kuba lula kuphela ukuba i-GCal ihambelana ngexesha elifanelekileyo okanye i-offline-first P2P sync. Umbala Wonke Ukuba izicelo ze-Google kunye ne-GCal ziquka ukuvelisa iintengiso, ziya kunikeza iinkcukacha ezininzi, iividiyo kunye ne-webinar. Kukho i-Developer Advocate emangalisayo, i-API pricing ephakamileyo, kunye ne-Client Success Team. Ndingathanda ama-billboards ezivela kwi-SF ezithi nje, npm i gcal Kodwa izicwangciso ze-Google kunye ne-GCal ziyafumaneka kakhulu: >> Don’t annoy regular users so much that they download Apple Calendar. I-It is not fair to expect so much out of a free API. Kubaluleke ukuba unako ukuhlanganiswa ne-GCal ekuqaleni I-GCal ibonelela i-responsibility yayo njenge-part-based ye-app yakho ngokuvumelana ne-reliability kwi-adoption convenience: Kwiimeko ezininzi ziyafumaneka. I-API ikwenza ukuba i-docs zayo zibonise, nangona zibonise kakhulu. Zingathanda wena ngeengxaki zokutshintsha Ngoku, Xa bafikelele kuqala, "Ndiya, ndiya kubandakanyeka nge-GCal." there is a gap between the developer’s expectations and reality Okwangoku, umdlali kufuneka ukulungele le ngxaki kunye nexesha, nophuhliso, kunye nokunciphisa ukuzinza. Kodwa Google angakwazi ukunciphisa umdla ngokunika iinkcukacha ezininzi. Umzekelo, i-docs ingaba inikeza izixhobo ezininzi zokusebenza. Iimveliso ze-code ziya kubandakanya kwi-node repos ukuya kwi-demo applications. Kwi-balance, ukugcina i-API efanelekileyo yinto efanelekileyo. I-API ye-primitive ingangena abasebenzisi be-power. Kodwa ukuba akugqiba i-UX, iintengiso, ukugcina, okanye i-brand, ngoko ukugcina kulula. Takeaways Ukuze Builders Xa ukwakha i-Public Sync API Keep it boring: use existing standards Ukubona apha njani i-API ye-GCal isekelwe kwi-cursor pagination kunye ne-token sync. I-event model yayo isekelwe kwi-standards ezihlangeneyo: iCalDAV, iCalendar, kunye ne-RRULEs. Ngaphandle kokufunda i-versions ze-optimized, baye zihlale kwi-basics. Oku yinkqubo enkulu yokuba kukho iintlobo ezininzi ze-GCal ezisetyenziswa ngempumelelo ukususela kwi-API yayo kwi-2006 (ngaphandle kweYahoo). Use cursor pagination when the data is a moving target Xa iingcebiso ziyafumaneka xa uqhagamshelane, kufuneka uqhagamshelwano kwiiphepha ukuvimbela iingcebiso ezidlulileyo kunye neengcebiso ezidlulileyo. Umzekelo: i-Calendars, i-feeds, i-audit logs, i-append-only streams. Use offset pagination when the data is stable Ukuba idatha i-static kwaye ayikho iingcebiso ezinxulumeneyo, unako ukufikelela nge-approximation elula. Umzekelo: Iziphumo ze-Search kunye neenombolo ze-page, i-admin table yeendaba ezincinane. Don’t oversell the API Ngaba uyazi njani ukufumana uxhumano ngomhla lokugqibela i-PR kunye ne-hike ... kuphela ukufumana ukuba kuxhomekeke kakhulu kunokuba ndingathanda kwaye awukwazi ukufumana i-daylight ngexesha elandelayo. I-API ye-Google ayikwazanga ukwenza yonke into ngenxa yenu. Izixhobo lokugqibela uyakuthengisa i-API: ukutya ixesha lakho ukufumana abasebenzisi bakho kunye nenkqubo yakho ngaphambi kokufuneka ukutya ama-developer ezinxulumene nayo Don’t break things Ukuba ukuhlanganiswa kwakho kubalulekileyo kwi-product ye-other person, ke uqhagamshelane ngokushesha. Thumela ixesha elide ukuyifaka ukuhambisa. Fumana imibuzo kwi-docs ngaphambi kokufumana. Thumela i-imeyili kunye ne-terminal "ngokuqhelekanga" ukuze awukwazi ukuxhaswa. Yinto kufuneka i-identity shift ukusuka kwi- "crackhead vibe coder" enomdla kwi-prod ukuya kwi- "i-disciplined software engineer". Uyakwazi ukufumana ngokufanelekileyo, kodwa ukuthatha ubunzima. Ukuguqulwa okuhlobisa kunokuba kuthatha imiphumela emininzi kunokuba kunokuba kuthatha imiphumela emininzi. I-API ye-GCal i-stable, ngoko i-sleep yam ngexabiso akuyona emva kokusebenzisa. Xa ukulungiselela i-Public Sync API Don’t start with an integration "Ndiya kubasebenzisi awukwazi ukuyisebenzisa i-app yam ngaphandle kokufaka kwi-tools ezidlulileyo ezisetyenziswa." "Ndiya kubasebenzisi awukwazi ukuyisebenzisa i-app yam ngaphandle kokufaka kwi-tools ezidlulileyo ezisetyenziswa." Ndingathanda, kodwa nceda uqhagamshelane. Ukongezelela ukuhlanganiswa kubaluleke i-side quest kwi-product-market fit yokuhamba yakho. Ukuba i-value prop iyona elungileyo, akukwazi ukuvelisa i-akhawunti entsha kwaye ukongeza idatha ukusuka kwakhona. Accept that Pareto is right Ngokutsho, i-20% ezidlulileyo zeengxaki ziquka i-80% yexesha. Ukuphucula ukubaluleka kwe-edge cases kunye ne-gotchas xa ufake. I-Docks ye-Google ayinayo ezininzi ezinzima ukuba uyazi ukuba izinto ziyafumaneka ngempumelelo kwaye ezamahala. Ukunciphisa izixazululo zabo ngokuchofoza i-retries, i-idempotency, i-fallback, i-delta syncs, i-offline, i-token invalidation, i-quotas, kunye neengxaki ze-conditional (ETags). Ingaba unemibuzo yonke into ye-MVP yakho, kodwa ukhangela ukuba ziya kuba ngexesha elide. Simplicity for one party means complexity for another Simple UI → Complex Backend Good for regular users → difficult for power-users Ixabiso efanelekileyo → I-R&D epheleleyo I-API efanelekileyo → Integration epheleleyo Xa ngexesha elilandelayo uzama, "Ndinga ukusebenzisa le-API ezamahala, kubonakala ngempumelelo," Qinisekisa: It’s either free or simple; Someone always pays. Ngaba ufumane i-pancakes yakho?