Otabek’s I/O
1.92K subscribers
63 photos
4 videos
90 links
I write about Backend, Infrastructure, Math, ML/AI, and Computer Science.

The views are my own and do not represent my employer.
Download Telegram
Kutish javob bermaydi

Maqolani o'qish
🔥35👍114🗿3
Promotion oldim 🎉

Dropbox'da ish boshlaganimga ko'p bo'lmadi. Shu paytgacha Core Team a’zosi sifatida 2 ta katta loyiha ustida 2 jamoa bilan ishladim: Network Engineering Team va Infrastructure Team.

Ha Big Tech'da (hammasida ham emas) siz asosiy va qo'shimcha loyiha sifatida yana bir loyiha bilan ishlasangiz bo'ladi va biz uni ToD (Tour of Duty) deb ataymiz.

Polshada hiring juda ko'paydi va bu interviewer bo'lish uchun zo'r imkoniyat ochdi. Hozirgacha 5 ta interview o'tkazdim. 2 tasida shadow va 3 ta interviewer sifatida. Yaxshi tomoni ko'p narsa o'rgandim. Yomon tomoni men o'tkazgan intervyulardan kandidatlar yaxshi perform qila olishmadi (yaxshi kandidat uchramadi).

Sizni o'sishingiz doim ham siz ishlayotgan loyihaga bog'liq emas, balkim menejeringizga ham juda katta bog'liqligi bor. Meni omadim kelib, yaxshi menejerlar uchrab qoldi. Va bugun ularni menga bergan yordamlari bilan Staff Software Engineer (IC5) lavozimiga ko'tarilayabman (Avgust oyidan).

Yaxshi loyihada ishlash yaxshi, ammo loyihani o'sishini (company impact) va loyiha menejerini jamoaga bo'lgan e'tiborini ham inobatga olish juda muhim ekan. Shuning uchun intervyuda faqat kompaniya/menejer sizni emas, siz ham kompaniya/menejerni intervyu qilishingiz muhim.

To'g'risi, agar kimdir "24 yoshingda Staff Software Engineer bo'lib ishlaysan" deyishsa "qo'ysangizchi-ye" degan bo'lardim.

Yig'ilgan tajribalarni esa tez kunlarda 42.uz va otabek.io da bo'lishib o'tamiz.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥153👍31166
#experience

Ikki hafta oldin kompaniyada TechTalk’da "Memory leak" mavzusida ma’ruza berdim. 51 ta turli xil jamoalardan muhandislar kirib eshitishdi, to‘g‘risi ancha qo‘rquv bosdi. Memory leak juda nozik mavzu, agar siz ishlatayotgan tilni mohiyatini yaxshi bilmasangiz xotira bilan ishlashda juda chiroyli muammolarga duch kelishingiz mumkin. Biz asosan Python va Go tillaridan misollar ko‘rib ketdik.

Online meeting orqali qatnasha olganlar juda ajoyib feedback yozishdi. Ularni har hafta o‘qib maza qilyapman. Ma’ruzamning videosi chiqqanidan so‘ng tomosha qilganlar ham yaxshi xabarlar yozishdi, ammo bir yigitni xabari e’tiborimni tortdi. U bu ma’ruzadan keyin tizimdagi memory leak’ni topishga muvaffaq bo‘lgan. 

Ular ishlaydigan tizim kodi Java’da yozilgan ekan. Bilamizki Java ham Garbage collected til hisoblanadi. GC xotirani tozalash uchun reference counting dan foydalanadi. Agar obyekt ishlatiladigan bo‘lsa uni reference count odatda +1 ga teng bo‘ladi. GC juda aqlli bo‘lgani bilan, benuqson emas. 

U yozgan xabarda inner class yozish va uni xotiraga ta’siri haqida gap ketgan. Men uning ma’ruzamda memory leak’ga sabab bo‘lishi mumkinligi haqida misollar bilan yoritib o‘tgan edim. 

Muamo outer class obyekti o‘chib ketganiga qaramay inner class obyekti ishlatilishda davom etishida. Qanday qilib inner class obyekti o‘chib ketmadi deyishingiz mumkin. Sabab, unga reference saqlanib qolgan (ref count +1). Dastur to‘laoqnli to‘g‘ri ishlashini ta’minlash uchun uni o‘chib ketishini ham o‘zingiz dasturlashingizga to‘g‘ri keladi. 

Yana bir bola o‘zining frontend loyhasidan memory leak topganini yozibdi. Closures - outer scope’dagi o‘zgaruvchilarni eslab qola oladi. Agar obyektni saqlab qolsangiz, u reference qilgan qiymatlar ham o‘chmay saqlanib turaveradi degani. Agar ehtiyot bo‘lmasangiz Javascript kodingiz, browser’da leak’ga sababchi ishlar qilishi juda osonligini ko‘rdim. U yuborgan koddan parcha:


function setup() {
  const bigData = new Array(1e6).fill(’leak’);

document.getElementById(’btn’).addEventListener(’click’, function () {
    console.log(bigData[0]);
  });
}


Bunday muammolar ko‘p. Ma’ruza berish orqali faqat o‘rgatmadim, balkim ko‘p o‘rgandim ham. Videoni ommaviy ulashish imkoni bo‘lsa, ulashishni reja qilib turibman. Sizga ham bir parcha tajriba ilindim : )
👍110🔥3814🗿2
Claude 4 sinab ko'rdim, u qilgan ishlar miyyamni portlatvoray dedi 🤯

Butun boshli codebase'ni bitta prompt orqali yangilab chiqdi. Kodlarni modular qilib ajratdi, test yozdi va katta chalkash funksiyalarni, kichik va chiroyli funksiyalarga bo'lib chiqdi.


git add -A
git commit -m "enhance code quality and modularity"


Kodni ishga tushurib ko'rganimda hech nima ishlamadi 😬, lekin malades, shuncha yaxshi ish qilib chiqdi. Ha do'stlar, biz shunday ajoyib AI davrida yashayabmiz.


git reset --hard HEAD~1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁148🤣90👍132
VeriFy AI

Ochiq kodli, hech qanday kutubxonalarsiz, va o'rganish maqsadida qurilgan scam detector.

Loyiha har qanday AI va ML o'rganmoqchi bo'lganlar uchun. Loyihani tushunish uchun kodni va uyerdagi izohlarni o'qish kifoya qiladi.

1. Loyihani kompyuteringizga clone qiling
2. Uni ishga tushuring va train bo'lishini kuting
3. Xabar yozing, u sizga scam yoki scam emasligini aytadi
4. Va albatta ⭐️ bosishni unutmang.
5. Ko'proq open source loyihalar uchun, [follow me]

Batafsil: https://github.com/otabekswe/verify
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍76🔥205🗿2
#experience

Software engineering is all about choosing the right trade-off

degan gapni eshitgan bo'lsangiz kerak. Eshitmagan bo'lsangiz, keling men birinchilardan sizga buni isbotlab beray.


AWS, GCP kabi cloud servislar 99.95% SLA taklif qilishadi. Ya'ni service yil davomida qancha vaqt up & running bo'lishini xisoblaydi. Qanchalik 9 lar soni ko'p bo'lsa, bu yil davomida servisda kamroq down time bo'ladi (yumalab qoladi) degani. Misol uchun:

☹️ 99.9% (uchta to'qqiz) yiliga 8.77 soat yumalab yotadi,
🙂 99.99% (to'rtta to'qqiz) 52.6 minut yumalab yotadi,
😇 99.999% (beshta to'qqiz) 5.26 minut yumalab yotadi,

... va bu ko'rsatkich to'qqizlar soniga qarab pasayib boraveradi. Ammo to'qqizlarni qanday oshiradi u servislar? Well, vertical va horizontally scale qilish kerak bo'ladi. Bu ko'proq pul (serverlar, tarmoqlar, elektr ta'minotlari, ...), fault-tolerant design, failover systems, va ko'plab ishlar qilinishi kerak degani. Bular tekinga bitmaydi. Va siz high availability'ni taminlash uchun ko'proq pul sarflashingiz kerak bo'ladi. Yo tizimni boricha qabul qilishlarini so'rab pul ishlaysiz, yoki pul ishlatib tizimni yaxshilab keyinchalik pul ishlashni tanlaysiz.


Tasavvur qiling, siz database, table yaratdingiz va ichiga ma'lumotlar yozdingiz. Ketidan ushbu query'ni yuritsangiz nima bo'ladi?


SELECT * FROM students WHERE name = "Otabek"


Butun table'ni scan qilib sizga to'g'ri, siz so'ragan row'ni qaytaradi. Agar ma'lumotlaringiz juda ko'p bo'lsa (100 million row), qidiruv ko'proq vaqt olishi mumkin. Agar name column'ni indekslasangizchi? Xuddi o'sha query endi tezroq yurishni boshlaydi (query o'zgarmadi, ammo o'qish tezlashdi). O'qish tezlashgani bilan yozish, o'chirish va yangilash (indekslash xisobiga) sekinlashadi. Chunki endi bir emas ikki joyda o'zgarish sodir bo'ladi (index va table o'zida ham). Biriga erishish uchun ikkinchisiga ko'z yumayabsiz.


K8S orqali servis deploy qilayabsiz. Rolling Update strategiyasini tanladingiz. Yangi deployment incremental (birma-bir) yangilanadi va config yozish ham juda oson. Eng asosiysi bu sizga Zero downtime (odatda) xissini beradi. Ko'rinishidan juda oson va xavfsizdek. Agar tassavvur qiling, servisingiz noto'g'ri ishlashni boshlasa pod'larni rollback qilish ham incremental sodir bo'ladi. Va ba'zilarda bu nostabil ishlashga sabab bo'lishi mumkin (chunki rollback qilish vaqt oladi va ba'zilarda yangi, ba'zilarda eski versiya ishlagani sabab vaqtinchalik inconsistency sodir bo'ladi).


Dasturlashda til, texnologiya, strategiya, tizim, servis, operatsion tizim va har qanday narsani tanlash bu nimagadir ko'z yumish degani (mindey o'ylab qarasam hayotda ham shunaqa ekan). Qaysi biriga ko'z yumishni bilish uchun esa, sizga tajriba kerak. Tajriba qiling!
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥74👍22🤯31
#randomThoughts

Hamma havotir olayotgan, katta kompaniyalar tinimsiz bozorda raqobatlashayotgan narsa bu hozir AI. Sizu-biz ishlatayotgan LLM'lar ham aslini olganda bir til. Ularni linguistic, coding, communication, translation, explanation va e.t.c language yo'llarida ishlatishingiz mumkin. Dasturlash sohasini o'sish tarixi doim ajablantirib keladi.

Tarixda ilk yaratilgan dasturlash tillaridan biri bo'lmish FORTRAN (FORmula TRANslation) ham asosan matematik xisoblash va shu kabi yo'nalishlarda ishlatilgan. Assemblyda kod yozish juda katta intelektual kuch talab qilinishi xisobiga bunday tillar ishlab chiqilgan. Ha compiler dasturlash tillaridan oldin odamlar 0 va 1 larda kod yozishgan (adashmasam).

Tillar sekin-asta yaxshilanib inson tiliga yaqin tarzda kod yozish imkonini berishi o'sib boraverishini tillarni syntax'idan ko'rsangiz bo'ladi. C'da yozilgan kodni tushunish qiyin ammo Python kabi tillardagi kodlarni shunchaki o'qib tushunish osonroq. Hozir esa AI davridamiz. Siz to'laqonli inson tilida kod yozasiz (deyarli).

"Python bo'lmaydi, C++ o'rganish kerak", "Hech kim C da kod yozmay qo'yadi" kabi so'zlarni deyarli 20-30 yildan beri aytib kelishayabdi ammo ular akutalligini yo'qotishmadi. Xuddi shunday AI ham sizni ishingizni olish uchun emas, balkim siz uchun qulayroq ish muhiti yaratish uchun ishlab chiqarilayabdi deb o'ylayman.

AI ishni olib qo'yish xavfi bormi? Albatta, ammo yangi ish o'rinlari yaratish ehtimoli ham bor (balkim yo'qdir, aniq aytish qiyin). Aniqroq nimani ayta olish mumkin? AI shunchaki yordamchi bo'lib qoladi, to AGI yoki ASI yaratilmaguncha. Chunki AI o'zi, erkin harakat qila olmaydi, fikrlay olmaydi (hozircha).

AI qurish uchun eng zo'r til bu Python deyishadi. Menimcha unchalik ham emas. Shaxsan hozircha ko'rgan katta loyihalarim source kodi asosan Rust yoki C++ da (Dropbox'da ham). Adashmayotgan bo'lsam Anthropic (Claude) va Github (Copilot) ham asosan shu tillardan foydalanadi. Buni sabablari ko'p (qoidalar qattiqligi, xotira boshqaruv, xavfsizlik, resurslar, e.t.c.).

Bu post nimadir o'rgatish uchun emas, shunchaki fikrlarimni yozib qo'yish uchun yozildi. "Nimadir" yozgim kelmadi, o'rniga "random thought of mine" yoza qoldim 🙃
2🔥62👍1710🗿2
#computerNetworking

System Design intervyularda asosan katta tizimlarni qurish haqida gaplashiladi. Butun katta tizimni 45 daqiqada qurish qiyin, ammo uning qaysidir muhim qismiga diqqat qaratish va o'sha qismini yaxshiroq qilib berish nisbatan osonroq.

Siz har qanday servis qurishingizdan qat'iy nazar sizni servisingiz tashqi servislar bilan aloqa qila olishi kerak. Buning uchun sizdan Networking bilimi talab qilinadi. (Ha hozir hype bo'layotgan AI, cloud provider, cloud computing, frontend, backend, devops, ... larni barcha networking siz oddiy narsalar bo'lib qolishadi)

Interviewer: servisingiz low bandwidth xolatida ham yaxshi ishlay oladimi?
Siz, ichingizda: WTH, low bandwidth nima?

Bandwidth bu berilgan vaqt oralig'ida network connection orqali qancha ma'lumot yubora olishingiz xisoblanadi. Misol uchun siz wifi o'rnatish uchun kelishga ISP servis 100Mb/s degan bo'lsa, demak sizni tarmoqingiz ISP dan sekundiga 100 Megabits ma'lumot yuklab ololadi yoki yubora oladi.

Ammo menda bir muammo bo'layabdi. Kecha do'stim yuborgan linkga bosganimda sahifani ochishga 5 soniya vaqtim ketdi. Sahifada katta fayllar mavjud emas ekan. Bu holatda, meni internetim yomon ishlayabdimi?

Yo'q, high bandwidth degani har narsani tez yuklaydi/yuboradi degani emas. Bu yerda latency degan tushuncha kirib keladi. Network latency bu so'rov yuborish va qabul qilish jarayoni uchun ketkazilgan vaqtga nisbatan aytiladi.

High latency keltirib chiqaruvchi omillar turli xil bo'lishi mumkin: serever side dynamic content'ni compile qilinishi, server-client o'rtasidagi masofa, browser render qilish vaqti, va boshqa faktorlar ham bo'lishi mumkin. Agar software tomonda hammasi yaxshi bo'lsa, demak gap aniq masofada bo'ladi.

Misol uchun Google har qanday mamlakatda yaxshi ishlaydi. Buning sabablaridan biri bu masofa. Ya'ni sizni ISP servisingiz eng yaqin Google servislariga so'rov yuboradi. Shunda low latency bo'lgani xisobiga sizga garantiya berilgan internet o'z o'rnida ishlayotgandek ko'rinadi. Eng yaqin serverlarni joylashtirish jarayoni esa CDN ya'ni Content Delivery Network (Kontent yetkazuvchi tarmoq) deb ataladi.

Global servis qurayotganingizda masofaga albatta e'tibor bering. Chunki dasturingiz qanchalik yaxshi bo'lmasin, masofa uni sekinroq yoki yomonroq ishlar ekan degan tushunchaga sabab bo'lib qolishi mumkin.
🔥4514👍14🤯1
#randomThoughts

Bozorda "sun'iy intelekt poygasi" boshlangan. Hamma AI haqida gapirayabdi. Meta eng yaxshi mutaxasislarni jalb qilishga qattiq bel bog'lagan.

Jensen Huang (CEO at Nvidia) Machine Learning va Computing uchun eng foydali yo'l bu CPU bilan emas, balkim GPU bilan ekanini qisman bo'lsa ham ko'ra olgan inson sifatida bilaman. Hozir Nvidia kompaniyasi bozor narxi $4 trillion dan oshibdi, bu Google + Meta va yana bir nechta kompaniyalarni bozor narxi degani.

Hamma AI uchun kurashayotgan bir vaqtda meni bir narsa ko'p e'tiborimni tortayabdi - "Quantum Computing". Agarda kelajakda AGI balkim, ASI ishlab chiqariladigan bo'lsa ular albatta ko'p quvvat va tezlik talab qilishni boshlashiga olib boradi. Bunda GPU lar qanchalik darajaga bora olishini bilmayman, ammo ular nazarimda Quantum chip'larchalik kuchli bo'la olishmaydi deb o'ylayman.

Agar kelajak uchun yaxshi investitsiya qilmoqchi bo'lsangiz, qanchadir vaqtingizni shu sohani o'rganishga ham investitsiya qiling.

Let me know if I am wrong.
1👍6510🗿8🐳5
Problem

Har qanday kompaniyada "onboarding" jarayoni bor ya'ni sizni kompaniya, jamoa, muhit, va ish qurollari bilan yaxshilab tanishtirishadi. Mobal.io kompaniyasidan oldingi barcha ishlagan joylarida o'zimga bir xil gapni takrorlar edim:
- Tezroq hamma narsani o'rganishim va code contribution qilishim kerak!

Biror yangi mavzuni o'rgansam "obsessed" bo'lib qolar edim. Kunlar emas, haftalarni sovurib yuborardim. Bunga asosiy sabab bu berayotgan xato savollarim bo'lardi:
- How it works (internally)?
- Why it works (that way)?


Experience

Bu qilgan qarorlarim xatoligini kech tushundim. Ba'zilari esa menga juda qimmatga tushgan. Texnologiyalarni ichini qanday ishlashini tushunish yoki yodlab olish sizni Senior qilib qo'ymaydi. Texnik bilimlarni kuchliligi sizni Senior qilib qo'ymaydi. Ishonavering, Senior bo'lish uchun ko'plab omillar kerak, yaxshi komunikatsiya, jamoa bilan ishlay olish, to'g'ri paytda to'g'ri yechim qilishni ko'ra olish va boshqa (Soft skill) tajribalar ham talab qiladi. Men buni kech angladim.


Solution

Onboarding vaqtida sizdan hech kim, hech qanday ortiqcha ishlar kutmaydi. Siz shunchaki o'zingizdan ko'p narsa kutishingiz mumkin. Jamoa sizni tezroq moslashishingizga yordam berish uchun doim tayyor bo'ladi. Ko'p vaqtingizni tejamoqchimisiz? Unda ushbu 2 savolni bering:
- What and Where?

- Bu servis o'zi nima?
- Nimaga mavjud?
- Qayerda ishlatishim kerak o'zi buni?

... degan savollar to'g'riroq bo'ladi. Har qanday kompaniyada ko'plab texnologiyalar va servislar ishlatiladi. Ularni nimaligi, qayerda ishlatishingizni bilish, sizga boshqa bilimlardan ustunroq xisoblanadi.

Muhtojlik xis qilmaguncha tegmang. Ha bu xuddi "kod ishlayabdimi, demak tegmang" degan gapdek eshitiladi va bu juda to'g'ri fikr. Siz servislarni optimizatsiya qilaman deb ishlab turgan narsani buzishingiz mumkin. Bu esa ishlab turgan biznesni buzishdek gap. Buni premature optimization deyishadi (kerakmas bo'lsa ham optimizatsiya qilish).

Ko'plab muvaffaqiyatli startup'lar o'zlari ishlatayotgan servis yoki texnologiyalarni to'liq yoki qisman bo'lsa ham tushunishmaydi. Ammo ular bu servis/texnologiyalarni qayerda ishlatishni, qanday ishlatishni bilishadi.

Dropbox'ga ilk bor qo'shilganimda Networking & Automation Team a'zosi edim. Asosiy loyihalarimiz ko'lami cheklangan edi. Ko'p jamoalar, tizimlar bilan ishlash uchun loyiha berishdi. Jamoani bu tizim/texnologiya bilan tajribasi yo'qligi va men ularni o'rganib, tadbiq qila olishim ham ko'p qo'l keldi. Bu tizmlarni qanday ishlashini aniq bilmayman, ammo ularni ishlatish bizdagi muammoni yecha olishini sezib turar edim. Bu ish ham promotion olishga katta xissa qo'shgan. Bilaman boshqa omillar ham bor, misol uchun ko'plab TechTalk'lar berish va jamoalarni bilmlarini oshirish ayniqsa juda katta role o'ynaydi. Kompaniyamiz CTO'si bilan tanish bo'lishim ham sababchi bo'lishi mumkin : )
43👍9🔥85
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3393😁3
Boshqalar: Hamma narsani zo'r eplayabdida shu yigit, malades.

Men: 🥲
😁93🤣32👍96
#experience

Let's talk about distributed systems.

Siz distributed system backend qismini qurayabsiz. Client serverga request (so'rov) yuboradi - API, message queue yoki event bus orqali. Ammo bir muammo bor, qanday qilib request'ni serveringiz aniq bir marta process qilishini ta'minlaysiz?

Eng qiziq muammolar bu yerda faqat u emas balkim:
- Network paketlarni drop qilishi mumkin (tashlavoradi)
- Client retry qilishi (qayta so'rov yuborishi) mumkin
- Server process qilish jarayonida crash bo'lishi (buzilishi) mumkin
- Message ketma-ketligi buzilishi, kech kelishi, yoki 2 marta kelishi mumkin

Agar yuqoridagi muammolarni oldini olmasangiz:
- Client'dan 2 marta to'lov yechishingiz mumkin
- Duplikat ma'lumot yaratib qo'yishingiz mumkin
- Mahsulotni 2 marta yuborishingiz mumkin
- 50 marta notification yuborishingiz mumkin (Twitter bir yili shunday qilgandi, foydalanuvchilar retry sababli chatiga bir xil xabarlar bilan to'ldirilgandi)

Distributed tizimlarda "At-most-once", "At-least-once" va "Exactly-once" degan tushunchalar mavjud. "At-most-once" holatida xabarlar/so'rovlar 0 yoki 1 marta yetkaziladi. Duplikatlarsiz, ammo siz uni yo'qotishingiz (drop) mumkin. "At-least-once" holatida xabarlar 1+ marta yetkaziladi. Yo'qotish yo'q, lekin takrorlanish mumkin. "Exactly-once" holatida xabar bir marta yuboriladi (bu ko'rsatkichga erishish qiyin).

Exactly-once holati deyarli mavjud emas. Siz user'ni idempotent qilib fake qilib turasiz. Ya'ni HTTP headerga doim idempotency token qo'shasiz. Process qilingan ID'lar tarixini saqlab borasiz. Outbox patter ya'ni event (xodisa)lar ma'lumotlar omborida saqlaysiz va ularni o'sha yerdan olib process qilasiz.

Misol uchun, S3, Google drive, Dropbox kabi tizimlarga ko'pchilik fayllarni yuklashadi. API'lari doim ham barqaror ishlamaydi. Xuddi o'sha PUT yoki POST request bir necha marta yuborilishi mumkin. Har bir obyekt uchun maxsus key va ETag (content caching) bilan yuborishadi. Bu esa content-based idempotency deyiladi. Yanada chqur kirsak, kontentlarni bitta qilib yubormaydi, TCP ni chegarasi (65KB) tufayli kontentlar bir nechta iteratsiya qilib yuboriladi va buni MTU deyishadi. Endi tasavvur qiling, brinchi yuklashda 20% yuklandi va crash bo'ldi, 2chisida esa 40% bo'lib crash bo'lsa nima qilasiz. Bu holatlarda ham content-based idempotency key ishlatish ko'p muammoni yechadi. Keyingi marta qayta urinishda siz kelgan joyidan davom eta olasiz degani.

System Design intervyularda ko'p yordam bergan shu mavzular menga. Sizga ham foydali bo'lishi mumkin. Bugunchalik kallangizni achitish uchun shu yetadi : )
1🔥63👍1387
Google'ga yo'q dedim.

Ha, noto'g'ri eshitmadingiz, Google bergan taklifni rad qildim. Qancha yoshlarni orzusi bo'lgan kompaniyaga men rad javobini berdim.

Google bilan pishirgan ilk oshimiz o'tgan yili bo'lgandi. Kompaniyadan ishga taklif kelgan ammo L4 (middle) lavozimiga, Dropbox taklif qilgan IC4 (Senior) lavozimi balandroq bo'lgani uchun Google bilan karyeramni davom etmadim.

Ammo Google bas kelmadi, men uchun Tizim Dizayni intervyusini tashkil qilib berdi. Undan yaxshi o'ta oldim, bu safar L5 (Senior) lavozimiga taklif oldim, ammo Dropbox IC5 (Staff) lavozimga taklif bilan Googleni ortda qoldirdi yana.

Google'dan keyingi qadamni kutib qolaman.

Google'dagi akalar, rekruiterlarga aytinglar, yaxshi oylik va sharoit qilib bersa boraman.
1🔥151😁72🤯14🏆8
#announcement

cloud.42.uz bir vaqtni o'zida 500 ta odamga xizmat ko'rsata olardi. Nimaga ko'proq emas? Chunki cloud tekin emas, 500 ta odamni har biriga VM (virtual machine) bering. Va har bir VM narxi $5 xisoblaganizda ham jami $2500 har oy pul to'lashingizga to'g'ri keladi.

Biz jonajon talabalarimiz uchun, jamoamiz bilan yangicha yechim ishlab chiqdik. Endi u 500 ta emas, 5 million odamga ham xizmat ko'rsata oladi.

Bu yechim, bizga qanday qiymat olib keladi? Sizga biz yanada ko'proq Cloud, AI, Security, DevOps, Backend, Frontend va boshqa bilmlarni amaliy yetkazishimizdagi to'siqlarni olib tashlaydi.

Sinab ko'ring
🔥8216🎉9👍5
#experience

Yaqinda jamoamiz Dropbox va OpenAI bilan integratsiya qilish ustida ishladik. Bizni vazifamiz ML muhit (environment) yaratish kerak edi. Aniqroq qilsak OpenAI ChatGPT'ni Dropbox serverlarida ishga tushirish haqida gap ketayabdi. Nimalarni o'rgandim:

ML environment deganda hayolingizga istalgan katta LLMni deploy qilish, train qilish, kerakli ma'lumotlarni olib o'tish va kerakli dasturlarni run qila olish imkonini beruvchi tayyor infrastruktura kelishi kerak. Buning uchun biz juda ko'p resurs ajrtadik. GPU haqida eshitgandim ammo TPU (Tensor Processing Unit) haqida eshitmagandim, buni ham o'rganib oldim. Btw, OpenAI ni Python ko'tarib turibdi ekan. Pythonchilar bir yayrasin : )

Secuirty for AI haqida ajoyib hikoyalar eshitdim. Adversarial attacks, Data poisoning, model stealing va privacy attack haqida ko'p gap ketdi. Maqolalar o'qib ularni tahlil qilib chiqdik. AI'ga user qo'pol so'zlar aytsa yoki so'kinsa AI sizni qaytarib so'kmasligi ham security ekan, qiziq. Prompt hacking ham ozgina ko'rib chiqdik.

Yana bir qiziq o'rgangan narsam AI for security bo'ldi. Ya'ni AI'ni kiber xujumlarni qaytarishda ishlatish, misol uchun tarmoqdan kelayotgan nomalum so'rovlar, phishing email'larni topish va h.k.z. Bunday business modellar juda kam, hozir boshlasangiz yaxshilardan biriga aylanishingiz mumkin ekan.

AI deploy qilayotganda uni izolyatsaladik, firewall bilan in va out trafiklarni chekladik. To'g'ri OS tanlash ham muhim ekan bu yerda. AI faqat API bilan ishlaydi, firewall kirayotgan va chiqayotgan trafikni to'liq nazorat qiladi. Modelni og'irligi (weight) bu uni bilimi degani. Uni ham encrypted storage'da saqlash kerakligini o'rgandik. Ancha praktikaga boy bo'ldi. Katta modeldan kichik model yasashni ko'rib chiqdik. Bu orqali ancha cost va performance optimization qilsa bo'lar ekan.

Xulosa:
Eng katta xulosam AI yaxshi yordamchiligicha qoladi. Eng yaxshi injenerlar yaxshi debuger'lar ekan. AI debugging da juda oqsaydi. Debug qilishni o'rganing. Agar hali ham AI'dan kodingizni debug qilishini so'rayotgan bo'lsangiz, juniorlik zindoniga bir umr ravona bo'lasiz.
🔥67👍153🤣2
#failure

Omadsizliklarim haqida qisqacha (hammasini yozsam sig'maydi ekan):

・Matematikadan yechgan ilk 10ta testimni natijasi tahmin qilib chiqsa ham, yaxshiroq natija olsa bo'ladigan darajada yomon bo'lgan. Buning uchun ustozimdan ko'p kaltak yer edim.

・SJTU Universitetida hamma yaxshi o'qib, imtixon topshirgan fandan yiqilganman. O'sha 1ta yomon o'quvchi men bo'lganman.

・Ilk loyihamni backend qismini juda yomon yozganman, bunga sabab shoshqaloqlik edi. Shuning uchun ham ko'p yiqilar edi va foydalanuvchilar arz qilardi.

・25ta open-source qilaman deb yozgan loyihalarimni 10% github'da private repo bo'lib turibdi, qolgalari github'ga ham yuklanmagan. Ularni kodini ko'rib yig'laydi kishi.

・Mobal.io ishlagan vaqtlarim katta change qilib uni production'ga yuborganimni eslayman. Shunda serverimiz 1 kunga meni deb ishdan chiqgan.

・Dropbox'da 50k config fayllarni o'chirib yuborib, data center (ma'lumotlar markazi ya'ni serverlar) qurish jarayonini 1 haftaga muzlatib qo'yganman.

・42.uz da ham ba'zi qismlarni tuzataman, yaxshilayman yoki tezlashtiraman deb ko'p buzganman.

Siz nimalar qilgansiz?
24👍21🔥8😁5
Kun meme'i
2🤣75😁6
DNS qanday ishlashini bilasizmi?

Google Chrome dasturini ochdingiz. Search Bar'ga "otabek.io" deb yozib enter tugmasini bosganingizda nimalar sodir bo'ladi? Qanday sodir bo'ladi? Avvalroq yozgan dnsql dasturimni yaxshiladim va Open-Source qilib githubga yukladim.

U yerdagi kontentni o'qib siz ham DNS query resolver dastur yasab ko'rsangiz bo'ladi. Keyinroq bu haqda to'liqroq blog yozishga harakat qilaman.

Contribute uchun ochiqmiz:
Github: https://github.com/otabekswe/
👍369🔥7
#experience (1-qism)

Senior darajadan keyin sizda odatda 2ta yo'l bo'ladi (kompaniyaga qarab). Biri Management (odamlar bilan ishlash), boshqasi Staff (texnik liderlik). Ikkisida ham o'ziga yarasha qiyinchiliklari bor. Biz ushbu postda Staff Engineer yo'li haqida gaplashamiz.

Staff Engineer bizni kompaniyada 3ta eng asosiy narsaga qarab tanlanadi.
- U bog'liq tizimlarni yaxshi tushunadi (Ownership scope)
- U kompaniyaga nima foyda olib kelishini ko'ra oladi (Impact)
- U bir necha komandalar bilan ishlay oladi (Collabration)

Ishga ilk bor kirganimda onboarding jarayoni uchun 3 oy vaqt berilgandi. Shu 3 oyni men 2 qismga bo'lib chiqdim. 1-oy asosan onboarding bosqichini tugatish. 2 va 3-oy jamoamiz ishlaydigan tizimlarni arxitekturasini ko'rib, undagi komponentlarni o'rganib chiqish. Asosan bergan savolim "why" bo'lgan, "how" emas.

Nega "why"?
Tizmlar va undagi komponentlar nega mavjudligini bilish boshqa ishlardan ancha muhimroq. Nega aynan bu komponent yaratilgan? Nega u bunday algoritm asosida ishlaydi? Nega u error'larni bunday handle qiladi? Bu savollar ancha ko'proq qamrovda savollarga javob bera oladi. Agar shuni "how ...?" ga o'zgaritganimda men tizim qanday ishlashi va qanday handle qilishini bila olardim xolos. Bu faqat texnik savollarga javob beradi xolos, ammo qarorlarni kelib chiqish sababiga hech qachon javob topa olmaysiz. To'g'risini aytaman, tizimlarni qanday ishlashini bilish sizni qimmatbaho dasturchi qilmaydi, chunki bu yodlanadigan bilm, qayta ishlatiladigan bilm emas.

What makes you best engineer?
Men bilgan eng zo'r injinerlarni hammasida 2ta odatni ko'raman. Debugging va yozish. Debugging shunchaki koddagi xatolikni topish emas, balkim tizimni qanday ishlayotganini ko'ra olish degani. Katta tizmlarni yaratish oson bo'lishi mumkin, ammo ularni tuzatish ancha murakkabroq. Tizimni qayerida xatolik bo'layotganini topish va uni ertaroq oldini olish juda katta tajriba talab qiladi. Yaratishdan ko'ra debug qilishga ko'proq vaqtingiz ketadi odatda.

Debug qildingiz endichi? Endi ularni log qilib qo'ying. Ha biror daftaringizni oching va shu xatolik nimaga, qanday sodir bo'lgani va uni tuzatganingiz haqida to'liq yozib qo'ying. Bu juda muhim. Bilmlar xiralashadi. Bugun aniq detallarini ayta olasiz. Ammo kunlar o'tgan sari siz kam-kamdan mayda detallarni unutib boraverasiz. Yozganingizni ertaga o'qib oson yodga solasiz. Yozishni foydalari ko'p. Yozayotganda yaxshiroq yechimlar ham kelishi mumkin (shaxsan o'zimda shunday bo'lib turadi). Yozganingizni ulashish ham osonroq bo'ladi. Yozing.
1👍72🔥1283