Manashunqa fuckuplardan kegin ham ishni davom ettirishni istayman.
Blya weekenda deyarli 1kun record syntax tanlashga ketdi.
Tanladimi ?
Yo'q albatta tanlamadim hechvaqo qilmadim...
Do'stim shunchaki lisp syntax qilib qo'yishni tavsiya etgan edi. Ammo o'zimga ML based syntax yoqadi. Shu sababli recordlar ham ML based bo'lishini istagan edim.
ADT uchun syntax muhim edi bo’lmasa grammar qilyotganimda tupikga kiraman deb o’yladim. Kimdir bilan maslaxat qilishni istamadim chunki hammasini o’zim qilib ko’rmoqchi edim.
Parsing yetarlicha qiyin va man oddiy parser combinatorlar bilan qilyabman hammasini. Eng qizig’i ham shunda hali type checker va yana boshqa narsalarni ustida ishlasam rossa ko’p nimadirni bir biriga moslash kerak bo’lishi mumkin. Ammo tayyorman.
Umuman olganda language development started successfully failed and fuck my life… bu expirementlar albatta o’z foydasini beryabti shu sababdan ham qilyabman.
Tanlovlar ham qiziq. Getting shit done va perfectionism orasidagi balansga harakat qilyabman. Bu esa juda muhim va bunday conflict manda juda ko’p bo’ladi. Ammo uzoqga olib bormaslik kerak degan fikrdaman va shu sababli balance muhim.
Loyiha shunchaki yosh bolani istaklariga ham o’xshaydi. Weekenda bir maqola o’qib typechecker yozdim va birdan til yozgim kelib qoldi ahvolni ko’ryabsiz.
Blya weekenda deyarli 1kun record syntax tanlashga ketdi.
Tanladimi ?
Yo'q albatta tanlamadim hechvaqo qilmadim...
Do'stim shunchaki lisp syntax qilib qo'yishni tavsiya etgan edi. Ammo o'zimga ML based syntax yoqadi. Shu sababli recordlar ham ML based bo'lishini istagan edim.
ADT uchun syntax muhim edi bo’lmasa grammar qilyotganimda tupikga kiraman deb o’yladim. Kimdir bilan maslaxat qilishni istamadim chunki hammasini o’zim qilib ko’rmoqchi edim.
Parsing yetarlicha qiyin va man oddiy parser combinatorlar bilan qilyabman hammasini. Eng qizig’i ham shunda hali type checker va yana boshqa narsalarni ustida ishlasam rossa ko’p nimadirni bir biriga moslash kerak bo’lishi mumkin. Ammo tayyorman.
Umuman olganda language development started successfully failed and fuck my life… bu expirementlar albatta o’z foydasini beryabti shu sababdan ham qilyabman.
Tanlovlar ham qiziq. Getting shit done va perfectionism orasidagi balansga harakat qilyabman. Bu esa juda muhim va bunday conflict manda juda ko’p bo’ladi. Ammo uzoqga olib bormaslik kerak degan fikrdaman va shu sababli balance muhim.
Loyiha shunchaki yosh bolani istaklariga ham o’xshaydi. Weekenda bir maqola o’qib typechecker yozdim va birdan til yozgim kelib qoldi ahvolni ko’ryabsiz.
1Fitni harkuni ochib aylabib chiqib ketaman.
Biratlar boshida call qilishar edi hamma raqamlarni block qildim.
SMS xabar yuborishsa ham block qildim.
Endi tinmay notify yuborishyotgan edi. Ha uniyam disable qildim 😁
Aslida dasturni o'chirib tashlasa ham bo'ladi, yaxshida zerikishda ochasiz. Callcenter xabar topadi siz appni ochganizdan ular call qiladi ammo tusholmaydi. Sizga totalni call qilishni o'chirmasligi uchun esa orada raqamlarni blockdan olib call qilishlariga ruxsat berasiz va telefon qilishsa ozgina gaplashib kegin telefoni qo'yasiz, umuman optinlar ko'p masalan manga telefon qilishganida harbalo gapirganman hullas ko'ngilochar qo'ng'iroq.
Boshida bularni bunaqa qilishi agressiv marketing yoqmagan edi. Endi manashu argressiv marketologlarni trolling qilaman. Maniyam asablarim tinchlanadi chunki yaxshilab alamimni olaman shulardan. Yaqinda sinab ko'rdim, qiziquvchi mijoz ro'ini o'ynab turib kegin aloqa uzulyotgandek ko'ratib telefoni o'chirsangiz yana telefon qilisharkan suxbatni davom qigani. Mazza biratga shuncha savol berdib(taxminan 10-15) ohiri tovarini olmayman degandim. Man nimadir rutine ishlarni qilyotib ham bazida bemalol gaplashaveraman, akalarga esa qiyin 20 daqiqalik suxbatdan kegin tovarini sotolmagani alam qiladi, bola uxlolmay chiqadi 😁 Man esa baxtliman ularni scam qilganimdan.
Biratlar boshida call qilishar edi hamma raqamlarni block qildim.
SMS xabar yuborishsa ham block qildim.
Endi tinmay notify yuborishyotgan edi. Ha uniyam disable qildim 😁
Aslida dasturni o'chirib tashlasa ham bo'ladi, yaxshida zerikishda ochasiz. Callcenter xabar topadi siz appni ochganizdan ular call qiladi ammo tusholmaydi. Sizga totalni call qilishni o'chirmasligi uchun esa orada raqamlarni blockdan olib call qilishlariga ruxsat berasiz va telefon qilishsa ozgina gaplashib kegin telefoni qo'yasiz, umuman optinlar ko'p masalan manga telefon qilishganida harbalo gapirganman hullas ko'ngilochar qo'ng'iroq.
Boshida bularni bunaqa qilishi agressiv marketing yoqmagan edi. Endi manashu argressiv marketologlarni trolling qilaman. Maniyam asablarim tinchlanadi chunki yaxshilab alamimni olaman shulardan. Yaqinda sinab ko'rdim, qiziquvchi mijoz ro'ini o'ynab turib kegin aloqa uzulyotgandek ko'ratib telefoni o'chirsangiz yana telefon qilisharkan suxbatni davom qigani. Mazza biratga shuncha savol berdib(taxminan 10-15) ohiri tovarini olmayman degandim. Man nimadir rutine ishlarni qilyotib ham bazida bemalol gaplashaveraman, akalarga esa qiyin 20 daqiqalik suxbatdan kegin tovarini sotolmagani alam qiladi, bola uxlolmay chiqadi 😁 Man esa baxtliman ularni scam qilganimdan.
🤣15😁8
Linter bilan manashunday o'zimizni std dagi funksiyalarni ishlatishga undaydigan qilishni boshlaganman.
Bu narsaning yaxshi tomoni bazi narsalarni shunchaki code rewiewda takroran aytib yuravermaymiz. Shunchaki manashunday qoidalar yozib qo'yamiz va linter ishlaganda yoki error yoki warn beradi. Manabunaqa LSP integrationlar bilan esa birdan autofix qivorish mumkin ))
Bazi convensionlarni hammaga takrorlash shart emas shunchaki linter o'rgatadi. G'alati ko'rinadiya agentlar zamonida biz linter ishlatyabmiz. Ammo boshqa tomondan qarasak bizda bu arzonroq chunki AI yetarlidan ko'p determenistic bir narsani ikki marotaba turlicha qilishi mumkin. A og'zaki qanaqadir qoidalaringizda esa qoidalar bir biriga contraversal bo'lishi mumkin bu invariantlarni va exeptionlarni ko'paytiradi.
Bizda esa sal boshqacharoq maksimal darajada invariantlarni kamaytiramiz va determinizmga xarakat qilamiz. Chunki bundan oladigan manfatlarimiz ko'proq. Masalan reproduce qila olamiz. Yoki kutilmagan xatolarsiz code yoza olamiz. Bu ham o'ziga yarasha tradeoff sababi barcha xatoliklarni oldini olish uchun ham haskell kuchi yetmaydi boshqa yanada kuchliroq tillar kerak. Ammo bizda to'liq xatolardan holi kod degan talab ham yo'q xozircha. Agar bo'lsa kegin o'ylab ko'ramiz )) Lekin juda ko'p turdagi common xatolar masalan null pointer exeption boshqa paniclar bizda deyarli chiqmaydi. Endi manashu linter qoidalari bilan esa yanada kamayadi. Chunki bazi exeption qaytaradigan yoki unsafe funksiyalar ishlatilsa linter detect qiladi va shapaloq uradi.
Bu narsaning yaxshi tomoni bazi narsalarni shunchaki code rewiewda takroran aytib yuravermaymiz. Shunchaki manashunday qoidalar yozib qo'yamiz va linter ishlaganda yoki error yoki warn beradi. Manabunaqa LSP integrationlar bilan esa birdan autofix qivorish mumkin ))
Bazi convensionlarni hammaga takrorlash shart emas shunchaki linter o'rgatadi. G'alati ko'rinadiya agentlar zamonida biz linter ishlatyabmiz. Ammo boshqa tomondan qarasak bizda bu arzonroq chunki AI yetarlidan ko'p determenistic bir narsani ikki marotaba turlicha qilishi mumkin. A og'zaki qanaqadir qoidalaringizda esa qoidalar bir biriga contraversal bo'lishi mumkin bu invariantlarni va exeptionlarni ko'paytiradi.
Bizda esa sal boshqacharoq maksimal darajada invariantlarni kamaytiramiz va determinizmga xarakat qilamiz. Chunki bundan oladigan manfatlarimiz ko'proq. Masalan reproduce qila olamiz. Yoki kutilmagan xatolarsiz code yoza olamiz. Bu ham o'ziga yarasha tradeoff sababi barcha xatoliklarni oldini olish uchun ham haskell kuchi yetmaydi boshqa yanada kuchliroq tillar kerak. Ammo bizda to'liq xatolardan holi kod degan talab ham yo'q xozircha. Agar bo'lsa kegin o'ylab ko'ramiz )) Lekin juda ko'p turdagi common xatolar masalan null pointer exeption boshqa paniclar bizda deyarli chiqmaydi. Endi manashu linter qoidalari bilan esa yanada kamayadi. Chunki bazi exeption qaytaradigan yoki unsafe funksiyalar ishlatilsa linter detect qiladi va shapaloq uradi.
⚡3
Qiziq tarix ushbu video hisoblash tarixi haqida. Ammo eng qizig'i bu videoda International Research Conferenceda eng birinchi marotaba computing history haqida gapirilgan. O'sha davrlarda ishlab chiqilgan hisoblash mashinalari yani computerlar xozirgilari bilan solishtirsangiz juda katta farqlarga ega. Ammo videoda analog computing ham biroz gapirilgan. Bu mavzuda ham o'z branchida davom etyabti xozirgacha.
Video juda qiziq ko'rishga arziydi.
https://www.youtube.com/watch?v=uS0OBi74hfM&list=PLQsxaNhYv8dajXDgwQzSKo1UyKmWpa9bI&index=9
Video juda qiziq ko'rishga arziydi.
https://www.youtube.com/watch?v=uS0OBi74hfM&list=PLQsxaNhYv8dajXDgwQzSKo1UyKmWpa9bI&index=9
YouTube
Computing Developments 1935-1955, as Seen from Cambridge, USA by Garrett Birkhoff
The First International Research Conference on the History of Computing was a milestone in the history of computing, drawing a global elite of computer pioneers from the first generation of electronic digital computing. Most talks are approximately 45 minutes…
❤1
Pandocga ham 20 yil bo’libti turli turdagi document filelarbi convert va parse qilgani juda ham kuchli instrument.
https://pandoc.org/twenty-years-of-pandoc.html
https://pandoc.org/twenty-years-of-pandoc.html
Pandoc
Pandoc - twenty-years-of-pandoc
A universal document converter
getUnindexedReports barcha indexlanmagan reportlarni olib keladi.Indexlash haqida qisqacha aytsam bizga kelgan reportlarni Opensearchga yozamiz. Bazida birnecha file gigabyte bo'lib ketadi. Opensearchga esa bu datalarni shunchaki save qimaymiz balki index pattern qilib dicover uchun url ham qoldirish kerak.
Asosiy ideya report qilingan loglarni analiz qila olishdan iborat
getUnindexedReports bizda barcha yangi indexlanmagan reportlani olib keladi va endi har bir reportni indexlanishi umuman processing ancha uzoq bo'ladi shu endi har bir reportni concurrent process qilish kerak. Manashu joyda haskellni yulduzli onlari concurrent qilishga man
forM ni shunchaki forConcurrently ga o'zgartirib qo'ydim va shu bilan endi hamma reportlar concurrent process qilinadi.😱3❤1
Man senior bo'lmaganman 🥲
Lekin rossa ko'p dolban seniorlarga shapaloq berganman.
😁11👏3🦄2
The State of Post-Quantum Cryptography
https://www.feistyduck.com/newsletter/issue_139_the_state_of_post-quantum_cryptography
https://www.feistyduck.com/newsletter/issue_139_the_state_of_post-quantum_cryptography
Ko'pchilik murakkab yoki juda nazariy deydigan mavzular industrialashuviga yaxshi misollardan biri bu algebraic effect handlers umuman effect sistemalar.
Effect sistemalar controlflow uchun alternativ sifatida qaraladi. Masalan siz bilgan, try/catch/finally vaxakazolar ham manashu alebraic effect handlerlarga misol. Effectlarga misol esa Fs, IO capabilietes deb qarashingiz mumkin. Masalan sizni funksiyada faylni o'qish kerak bo'lsa demak funksiyangizda FS capabilites bo'lishi kerak. Effect sistemalar esa manashuni ma'lum semantics asosida generalize ham qiladi. Aytaylik siz ni funksiyada faqat FS capabilites bor, demak funksiyada biror muammo chiqsa aynan FS related side effectlardan chiqadi va ushbu side effectlar compile timeda check va track qilinadi. Va invariantlar bo'lsa compile timeda yuzaga chiqadi. Bu bilan biz runtime emas compile timeda side effectlar xavfsizligiga erisha olamiz. Yani biz side effect qilishimiz uchun oldin ushbu side effect capabilitesni ishlatish kerakligini ham belgilashimiz kerak.
Effect sistemalarning yana bir kuchli tomoni bemalol mock ham qilish mumkin. Masalan biror effectni mock qilsangiz sizni dasturning holati o'zgarmaydi. Masalan
Agar effect system effectlarni yetarlicha yaxshi track qila olsa bazi holatlarda determinizmga ham erishish mumkin. Masalan Random(seed) agar seed fixed bo'lsa
Ko'p dasturlash tillarida esa bunday narsalar doyim ham inobatga olinmaydi. Kegin runtimeda turli muammolarga sabab bo'lishi mumkin. Effect sistemalar esa manashunday muammolarni aynan compile timeda topishga dasturni eng boshidan xavfsiz side effectlar qila olishiga kerakli imkoniyatlarni taqdim qiladi.
Rasmda Algebraic Effect handlersni mainstream qilishdan motivivatsiya bayon qilingan.
Effect sistemalar controlflow uchun alternativ sifatida qaraladi. Masalan siz bilgan, try/catch/finally vaxakazolar ham manashu alebraic effect handlerlarga misol. Effectlarga misol esa Fs, IO capabilietes deb qarashingiz mumkin. Masalan sizni funksiyada faylni o'qish kerak bo'lsa demak funksiyangizda FS capabilites bo'lishi kerak. Effect sistemalar esa manashuni ma'lum semantics asosida generalize ham qiladi. Aytaylik siz ni funksiyada faqat FS capabilites bor, demak funksiyada biror muammo chiqsa aynan FS related side effectlardan chiqadi va ushbu side effectlar compile timeda check va track qilinadi. Va invariantlar bo'lsa compile timeda yuzaga chiqadi. Bu bilan biz runtime emas compile timeda side effectlar xavfsizligiga erisha olamiz. Yani biz side effect qilishimiz uchun oldin ushbu side effect capabilitesni ishlatish kerakligini ham belgilashimiz kerak.
Effect sistemalarning yana bir kuchli tomoni bemalol mock ham qilish mumkin. Masalan biror effectni mock qilsangiz sizni dasturning holati o'zgarmaydi. Masalan
readFile mock qilinsa siz readFile chaqirganingizda olgan natijangizga qarab dastur ishi davom etaveradi. Agar biror muammo bo'lsa albatta effect throw qiladi siz esa uni catch qilasiz. Effect success bo'lsa sizni dastur ishini davom qialveradi. Agar effect system effectlarni yetarlicha yaxshi track qila olsa bazi holatlarda determinizmga ham erishish mumkin. Masalan Random(seed) agar seed fixed bo'lsa
nextInt doyim birxil inputga birxil output qaytaradi. Qiziq tomoni random funksiyasi nondeterministic ko'ringani bilan bu yerda deterministic ishlayabi sababi bu yerda nondeterminizm parametrlangan yani seedga bog'liq. Agar shunchaki Random() bo'lsa ham barbir seedni qayerdandir explicit oladi. Demak nextInt side effect qiladi ammo buning sababi bu yerda seed nondetermenistic ekanida. Ushbu misol yana bir qiziq narsaga etiborni qaratadi yani effectlar boshqa effectlardan foydalanishi mumkin. Effect sistemalarda aynan birnecha effectlarni compose qilish uchun ham turli yechimlar qilingan. Masalan bazi effectlar statega bog'langan bazilari orderinga bog'langan. Ko'p dasturlash tillarida esa bunday narsalar doyim ham inobatga olinmaydi. Kegin runtimeda turli muammolarga sabab bo'lishi mumkin. Effect sistemalar esa manashunday muammolarni aynan compile timeda topishga dasturni eng boshidan xavfsiz side effectlar qila olishiga kerakli imkoniyatlarni taqdim qiladi.
Rasmda Algebraic Effect handlersni mainstream qilishdan motivivatsiya bayon qilingan.
❤2