Page 12 of 51

Говорих пред деца за ИТ и останах изумен

Миналата неделя бях поканен да споделя част от опита си със завършващите курса на https://kiber-one.bg с възрастова група от 6 до 14 и да раздам дипломите на най-малките. Реших да говоря за това как съм започнал аз, как любопитството ме е тласнало напред, как сме играли игри на черно-зелени екрани от дискети, как сме си писали сами игрите на BASIC и сме чели документация от хартиен носител, какво правя сега, сегментирането на сектора (често споменавам като говоря пред ученици това, че IT не е само програмиране, да им покажа част от спектъра включвайки дизайн, QA, програмиране, PM и т.н. и т.н.) съответно с опит това да звучи колкото се може по-близко до наруталния език.

Отивам в юнашкия дом във Варна и ме посрещат 50-тина деца, които си стоят по столовете и чакат, родителите бяха на втория етаж и все пак нямаше нито едно дърпане на коси, сбиване или лигавня. Повечето деца бяха в границата между 6 и 9 годишна възраст.

Започна събитието и имаше демо на 5 проекта на деца от 7 г. до 9 г. С огромен интерес наблюдавах какво правят децата и след второто демо си зачеркнах половината ключови думи по които щях да говоря. Нямаше да им кажа нищо ново. Демата бяха на Scratch и Tynker и след като едно момиченце на 7 години показа демо пред 100+ човека на имплементация на Flappy Bird в която си имаше своите условия, sprites, различни екрани и т.н. аз бях – “Чакай, чакай”, дойде друго дете, показа 3D модел на Tynker на слънчевата система с акуратни размери на планетите, орбитите и скоростта на движението им, показа кода, обясни го. Бях супер приятно изненадан.

Това, което видях са деца, които:

  • Правят неща, които им харесват
  • Могат да работят в екип
  • Имат логическо мислене
  • Разбират основите на програмирането
  • Имат презентационни умения и не изпадат в паника като говорят пред хора (за разлика от мен)
  • Разбират англисйки на ниво, което им върши работа

Ето, че има надежда, просто трябва да знаем накъде да гледаме.

Edit – Забравих да добавя, че след края на цялото нещо излизам от залата и едно момченце (7-8 да речем) се отдели от родителите си, дойде при мен и каза – “Господине, много хубава реч, хареса ми.” Прибрах се нахилен като пача. Явно е имало смисъл.

100 Days of HomeLab – The HomeLab Challenge

TechnoTim даде една страхотна идея. Сто дни биха били достатъчни човек да изгради солиден навик. И понеже той е tech youtuber на който доста се кефя се зачудих като видях заглавието на клипа. Оказа се обаче, че не е само той, а буквално ВСИЧКИ технически youtubers,които говорят зa homelabs, инфраструктура, proxmox и хардуер. Ако сте фенове ви го препоръчвам.

Та по негов пример смятам да ъпдейтвам тук в блога какво съм правил и правя по моя homelab. Ще зацапам блога с много и кратки постове, но е по-добре отколкото един огромен пост тип changelog. Мислих си и за едно git repo (или gist), но така exposure-a ще е много по-малък и няма да усещам peer pressure-а :D Понеже няма как да правя всеки ден неща в продължение на толкова време си слагам таргет от 3 пъти седмично като това може да включва целия спектър – от стратегия през provisioning, хардуер и до networking. Надявам се да ви в полезно и да надъхам някой да направи същото или поне да се зачете за контейнери/хардуер/networking и т.н.

А защо го правя ще се запитате? Ще попитате нямам ли дете, бременна жена, семейство, хоби и т.н.? И ще ви отговоря. Освен, че ми е супер интересно тези предизвикателства са и супер полезни в професионален план. Пример – всеки е разцъквал docker, но до къде? Да вдигне един hello world или както направих аз да взема един прост ruby script и да го изпълня? Хубаво ама в реални условия може да речем да вдигнете един домашен plex за да си имате библиотека с филмите и сериалите, но искате достъпа до persistent volume-а да става от друга машина? Или да се стартира автоматично при пускането на машината? Или да се вдига наново ако нещо се строши? Това са елементарни примери, но са извън обикновеното – “Я да разгледам тоя docker” и всичко да приключи след 2 примера от нета. А кога сте правили конфигурирали VLAN за да сегментирате трафика между устройства? Това са все неща, които всеки е чувал как работят, някои са цъкали малко, но рядко някой е поддържал такива системи и лично е отговарял за тях поради една или друга причина. И точно тук идва моето нещо – цяла екосистема, която да е съвсем истински production за който аз да съм отговорен и да съм направил цялата архитектура и всичко около него. Това за мен би било супер близко до това, което правя на работа.

Най-накрая излезе Apple silicone M2

Версията на тази статия я има записана и в подкаста за по-голямо удобство

Чаках повече от година докато се наканя да взема Apple Air M1 като чаках основно за втората генерация на процесора, който създаде солиден buttpain на Intel и разбута доста пазара на performance ultra-low voltage процесори (демек леки, но бързи лаптопи и ултрабуци чиито батерии държат повече от един работен ден). Та бях убеден, че ще итерират нова версия след година, но се оказа, че пуснаха performance версиите Pro/Max). Малко отклонение, но се оказа, че М серията е измислена бриляантно, защото може да се закачат серийно n-брой процесори и така MAX представлява ъпгрейд по силата на два или повече М1 base процесора. Това осигурява почти безкрайни възможности за ъпгрейд. Минуса е, че използва unified memory, която е много бърза (в процесора), но до 16ГБ (при М1) така и не може да се ъпгрейдва. Може би към момента М серията не би била готова за sever grade решения (но съм убеден, че ще видим и това в някакъв момент, както виждаме Atom процесори в server grade инфраструктура).

Та чаках новия М2, чаках и накрая си взех М1, която е бру-тал-на машина, страхотно тънка, лека, по-бърза от моите така или иначе високи очаквания и невероятно тиха защото единственото подвижно нещо в нея е … копчетата на клавиатурата :D MacBook Air в комбинация с M1 или М2 процесор няма вентилатор. Toва, без да влизам в подробности, е заради двата вида ядра в процесора, подобни на тези, които имаме в телефоните – такива, които отговарят за леките операции и performance ядра, които се включват само като пуснете нещо тежко. Иначе като съпоставка можем да сравним М1 с предишния top of the line Intel i7 (използван Macbook Air от 2018г.) като М1 държи 7 вата (!!!) в idle и 39 вата максимум натоварване, докато i7 държи 20 вата в idle и 122 в максимум натоварване.

Apple Macbook Air M2

Новия Apple MacBook Air идва с новия M2 чип като освен това разликите са и:

  • Нов дизайн с по-тънка рамка (bazel), идва с notch (на който вече са му оправени голяма част от първоначалните софтуерни проблеми, а зад notch-а се крие и новата 1080Р камера. Лаптопа вече прилича повече на два iPad-а един върху друг – няма скосяване при китките, изглежда доста квадратен, но с приятен дизайн. Линията има и нови цветове – silver, space gray, starlight, midnight. Няма вече розов цвят така, че сори, Злати, но следващия лаптоп няма да ти е розов.
  • Нов порт – така желания magsafe се връща обратно в играта и така лаптопа става с два Thunderbolt/USB type-C и един аудио жак. Magsafe зарежда вече с цели 64 вата (около 50% за час) като ще има и версия с два Thunderbolt/USB type-C за да си зареждате две устройства едновременно, но с мощност до 35 вата
  • Колонките, които са абсурдно добри за такава машина вече ще са разпределени на четири части, а микрофона, който също е доста добър вече поддържа и beamforming audio
  • Дисплея по традиция е нечовешки като в новия MacBook Air M2 ще е, както написах и по-горе, с по-тънък безъл, 13.6″ размер на дисплея, по-ярък с до 500 нита (като 13″ MacBook Pro), bazel и нова 1080Р камера
  • Процесора е вече с 4 милиарда транзистора в повече, до 2 GPU ядва отгоре повече, TDP и честота още не са анонсирани в сайта на Apple, 8 TOPS повече (Trillion Operations per Second) за neural engine процесора, до 24ГБ unified RAM (преди максимума беше 16GB), memory bandwidth-а е ъпгрейднат до жестоките 100GBps (за справка преди беше 68,25GBps използвайки LPDDR4X RAM) с поддръжка на новата LPDDR5 RAM, процесора, както и предшественикът му използват 5nm процес, М2 е с около 20% по-бърз и между 30 и 35% по-бързо GPU
  • Батерията продължава да е жестока и с 18 часа живот (при video playback, 15 при браузване) и е 52.6 watt-hour
  • Разновидности на MacBook Air m2 – разликите са малки, по-скъпата версия има две GPU ядра в повече, 512GB SSD (и двете версии могат да се конфигурират до 2ТБ)
  • Цените са $1199 за базовата версия с М2 чип, 8GB RAM и 256GB SSD и $1499 за версията с повече GPU cores, 16GB RAM и 512GB SSD
  • Fun fact – MacBook Air M1 2020 ще продължи да се продава, но цената му остава същата – $999.
  • Ще има и MacBook Pro 13 М2 като разликата с MacBook Air М2 са потресаващи и на 90% в полза на Air. Същия разполага с нов дизайн, по-лек е, по-добър дисплей, има magsafe, по-бърз fast-charge, нова камера, повече портове. Toва в което Pro е по-добър е, че има вентилатор и малко по-голяма батерия…
  • Не толкова fun fact е, че М2 продължава да поддържа само един външен дисплей (до 6К резолюция).

A заслужава ли си?


Според мен – зависи. М1 е изключително адекватна машина, която има много плюсове и макар и М2 да е добра не е с порядъци за да бъде следващото нещо, което бих искал да си купя. А и с цена от $200 повече не е първото нещо, което бих избрал.

Edit – Linux Tech Tips имат стра-хот-но видео с много повече информация и по-дълбок поглед над новия MacBook Air M2, препоръчвам ви го:

19.05.2022 – git и търсене по commit

Днес ми се наложи да търся дали някой commit е влязал в tag-ната версия в git и понеже е лесен onliner споделям с вас.

Отбелязка, че много зависи какъв ви е git workflow-а. Проектът, който си избрах на рандом е този – gRPCurl.

Та имаме commit ID да речем 8ee6c9. Единия начин е да отидем в Releases на проекта и да търсим на ръка в ляво, изглежда ей така:

Но вече се досещате, че ако работите в някой огромен проект не можете да търсите на ръка 150 страници с релийзи, а за това идва в помощ git cli tool-a:

[email protected]:[~/repo/code/grpcurl] $ git log --oneline | grep "8ee6c94"

8ee6c94 can't build s390x docker images; skip for now (#265)

Ето, че виждаме съобщението, а сега вадим и таг-а:

[email protected]:[~/repo/code/grpcurl] $ git tag --contains 8ee6c94 | head -1
v1.8.5

Без head -1 вади всички тагове, които съдържат този commit (благодаря на Владо за дописването и коригирането)

[email protected]:[~/repo/code/grpcurl] $ git tag --contains 8ee6c94 | head -1
v1.8.5
v1.8.6

13.05.2022 – docker stats

Днес трябваше да дебъгвам малко докер images и се сетих за нещо, което е полезно, но не винаги е очевидно при дебъгването. Днес ще си говорим за docker stats.

nedko@vortex$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b1075225ec45 dreamy_blackwell 1.07% 599.2MiB / 7.697GiB 7.60% 18.2MB / 9.06MB 53.1MB / 23.1MB 132
36d367f20b13 zealous_elbakyan 1.20% 585MiB / 7.697GiB 7.42% 29.1MB / 20MB 67.9MB / 23.1MB 131
16b464b3eadc relaxed_bell 1.20% 640.9MiB / 7.697GiB 8.13% 30.7MB / 21.5MB 118MB / 23.1MB 130
b139b36a1c5c focused_night 1.22% 602.2MiB / 7.697GiB 7.64% 18.5MB / 9.44MB 119MB / 23.1MB 132

И ето, че имаме статистики за CPU/Memory usage/limits (ако не е сме ограничили използването на RAM памет на контейнера обикновено е лимита на хоста върху който върви), Network и Disk usage и PID.

Като изпълните docker stats ще се учудите защо премига така – това е заради постоянния refresh на статистиките. docker stats приема и четири много полезни параметъра, които често използвам и аз:

-aПоказва всички контейнери, пo default показва само тези, които са running
-formatМожете да използвате Go template за да изберете какво точно да виждате, пример по-долу
–no-streamДа покаже само първите резултати и да не рефрешва постоянно
–no-truncДа показва пълните ID-та на контейнери, например 7c37df0bd781b924e92218bd006a950fcc2871e26f17886f98c281de49c91216 вместо 7c37df0bd781
docker stats parameters

Както видяхте по-горе в импровизираната табличка можем да използваме –format и да output-нем JSON dada например.

Това е една малка, но съществена стъпка в дебъгването на проблеми свързани с докер контейнери. Скоро смятам да разпиша една по-подробна статия с моя начин за дебъг.

Следващ епизод на подкаста: Да бъдеш татко

От много, много време искам да напиша, да говоря, да разказвам за това колко е трудно да бъдеш баща, колко е непосилно понякога да се разкъсваш между работата, стария си живот преди бебенцето и вкъщи, да успокояваш бебенце на 3 седмици, 5 месеца или годинка и половина, да те боли като го видиш как него го боли, да се смееш с идиотщините, които правите заедно, да му избираш дрешки, да разбираш какво значи АМ, номера на памперси, мазане с всичките 5 крема и кой за какво е, морки кърпички, ако, много ако, сълзи, да ти се плаче когато разберете, че има температура, да искаш да се застреляш като видиш, че може да му дадеш повече и повече, но да нямаш сили да го направиш.

Когато решихме със Злати, че освен, че искаме и че е време да имаме дете не намерих нито едно място с подредена, сбита информация за това какво ме чака. Неща, които сега са ми common sense трябваше да ги уча когато вече Борко се беше родил, а нещата, които Злати знаеше още и още не мога да ги науча. Не знаех и за следродилната депресия, бърнаута при родителите, за подсичането и за коликите, не знаех и за това как се къпе бебенце на чешма, за това кога, по колко и как трябва да яде и спи, какъв номер обувки носи. И това с времето ме накара да усещам, че колкото и да опитвам не мога да настигна образа на бащата, който искам да бъда. Сега, вече знаейки много от тези неща бих искал да споделя с всички татковци защо понякога ни е по-лесно да носим 4х18″ зимни гуми 600 метра в посока отколкото да се погрижим за час и половина за бебенцето (и не се шегувам за това), за това как да помагаме наистина на майките на нашите деца и за това къде да не пилеем силите си и къде можем да си починем (аз лично няколко дни след като вече изписаха Борко и Злати почти не спах за да ги гледам и да съм нащрек ако някой издаде звук или има нужда от нещо.


Ще се радвам и на вашата гледна точка, мои читатели, за да сметна, че епизода не е само моята ограничена гледна точка, а и такава, която би била нова за мен. Коментарите може да оставяте тук или в страницата на блога във Фейсбук.

Procol Harum

На работа съм, главата ми пуши, аз (и краката ми) още преживявам карането от вчера (за което пиша статия (под 5000 думи, обещавам!)) и youtube ми предложи нещо, което не бях слушал от много години – единствената песен, която знам на Procol Harum, тяхно изпълнение от 2006 г. в Дания с филхармоничен оркестър. Звуците на цялото нещо, гласът на Гари Брокър, всичко е един голям, страхотен синхрон.

Бих искал да бъда някъде, където мога да чуя нещо подобно с наистина добра техника, да се потопя и да ударя един ром, да речем (ромът (не човека, а питието) ми дойде от книгата, която слушам – “Неграмотното момиче, което можеше да смята” на Юнас Юнасон).

25.03.2022

Айде започвам с новините като Ана Цолова и Юксел Кадриев:

  • Microsoft потвърди, че са ги издумкали от Lapsus$ – 37GB включително и сорс код на Bing, Cortana, Bing и множество вътрешни проекти;
  • На трети март пък хакнаха nVidia и изтеглиха данните на 71000 служителя, пак от същата група – Lapsus$;
  • Интересно четиво за outage-а на github от преди няколко дни;
  • Ако помните преди година се запали datacenter-a на OVHcloud та направиха репорт по темата. До сега никога не съм присъствал физически в datacenter, но съм чел и гледал доста и там нещата са наистина сериозни във всяко едно отношение – от UPS-ите, през системите за безопасност и 1000-та защити от пожар. Е – единия datacenter на OVHcloud се оказа, че е живял в сграда с дървен таван, БЕЗ поражогасители и без cut-out (което е нещо като физически бушон, който прекъсва тока до част или целия datacenter преди да стане съвсем лошо). Та колкото повече човек чете толкова повече стига до извода, че сървърите не са най-скъпото в тези DCs.

24.03.2022

Вчера ми излезе спомен от фейсбук като ходихме с Дидо във ВИНС-а и Технически Университет – Варна да говорим на студентите за бранша – какво да очакват от бизнеса и какво бизнеса би очаквал от тях. И в двата университета се получи доста добре, но ТУ имаха предимство – първо залата беше огромна и имаше хора, второ – бяха вече на вълна, че като завършат ще се наложи да работят и няма да е зле ако някой им каже дали са на правилния път плюс им беше искрено интересно. Е – не ги закарахме на биропой след това, че беше от сутринта лекцията (когато говорих във ВИНС преди няколко години в техния Master Class след часът в който никой не каза и дума ги закарах в Алба-та и след няколко бири разговорите се случиха доста по-добре), но пак се получи.

Така, че съвет от мен – когато имате възможност – ходете по такива събития, защото биснесът, в случая аз и Дидо говорихме от името на Немечек, много компактно обяснява какви очаквания има към бъдещите си колеги, а това е безценно. По мое време, с риск да прозвуча като пенсионер, такива неща не е имало (или поне в Добрич е нямало …) и когато започнах първата си работа имах ОГРОМНИ дупки в някакви common sense неща – офис пакет (преди да сте се заляли от смях макросите в Ексел могат да бъдат сравнени с нисък левел демон от някоя особено гадна точка на дупката в която живее), комуникация с колегите (няколко години бях най-малкия от почти 200-те колеги и ми беше наистина трудно да започна да си говоря за тях на теми като смяна на ангренажни ремъци, болки в колената или някакви там други неща) и т.н.

19.03.2022

Така както съм започнал ще обърна блога на tutorial сайт (в което няма нищо лошо).
Използвате ли vim в ежедневието си? Знаете как да излезете от него? Чудесно, този пост е за вас.

Наложи ми се днес да заменя много стрингове с други такива та реших да го направя под vim и споделям с вас.

Отваряме файла, който искаме да редактираме и натискаме : (за да влезем в режим на приемане на команди, баси комунистическото прозвуча):

%s/False/true/g

Този regex ще потърси целия файл за стринг False и ще го промени на True. Може и само ред по ред, а не всички наведнъж като махнете /g накрая, а можете и да му кажете само върху кои редове да направи промяната с:

:6,10s/False/True/g