OpenFest 2020

September 14th, 2020 by Vasil Kolev

Съвсем накратко.

Ще има online OpenFest 2020. Търсят се доброволци и лектори.

Най-вероятно и така ще е забавно, та – включвайте се:)

2020-04-15 Второ/трето online ИББ

April 15th, 2020 by Vasil Kolev

Ще пробваме тоя път в b.1h.cx – това представлява една bigbluebutton инстанция. Изглежда да се справя по-добре с много камери (jitsi-то подпалваше лаптопите) и яде по-малко CPU на сървъра.

2020-04-04 пробно online ИББ

April 4th, 2020 by Vasil Kolev

Преди някакво време затвориха “Кривото”, което беше на ъгъла на “Дондуков” и “Будапеща”, и с него изчезна и ИББ. Аз не бях успявал да стигна до там от много време и точно седмицата, в която обявиха пандемията се канех да ходя…

Та, има разговори да го възобновим, и понеже няма как на живо, тая вечер си направихме едно събиране на jitsi.ludost.net/ibb, експериментално, да видим как е. Бяхме десетина човека, поговорихме си за час-два, пихме по едно, хапнахме си и си отидохме да спим :) Та вероятно тая сряда ще направим пак сбирка, за който му липсва. Не изглежда да е възможно да си пуснем всички камерите и да не ни се подпалят машините, но само с аудио пак е добре.

Определено мисля да го броя в категорията неща, които ни помагат да не полудеем :)

Update: Добре, че ми напомниха: firefox има проблеми с webrtc-то дотолкова, че прави проблем на цялата конференция (в първия коментар тук има малко повече подробности), пуснете си chrome/chromium в един контейнер и елате през него:)

2020-03-21 threat модели

March 21st, 2020 by Vasil Kolev

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

В момента всички усилено търсят начин да си пренесат работата от вкъщи. Аз съм от щастливците – при нас по принцип всичко може да се прави remote и сме си направили така нещата (което е следствие от голямото количество админи на глава от фирмата, май сме над 50%). Също така заради естеството на работата сме обмисляли сериозно как да направим нещата, че да са сигурни, и първата стъпка в това е да се реши какъв е threat модела (т.е. “от какво/кого се пазим?”), понеже това определя смислеността на мерките, които се взимат.

Най-лесният въпрос е “от кого се пазим”, да преценим какви са му възможностите, и какви мерки да вземем. Базовите опции са “script kiddies”, “опортюнисти”, “конкуренцията”, “държавата”, “NSA”.

“Script kiddies” са най-лесни, и са в общи линии стандартните мерки, които всички взимат – от това да няма тривиални пароли и да няма не-patch-нати service-и, до това хората да знаят да не отварят опасни документи (или ако работата им е да получават документи, да имат среда, в която да ги гледат безопасно, което е случая с журналистите например).

“Опортюнисти” са хора на вярното място във верния момент. Пример за такова нещо са например работещи в datacenter, които знаят, че ей-сега ще ги уволнят, и си отмъкват диск от произволен сървър. Или крадци, които са се докопали до някакви ваши неща и са ги угасили и събрали, и не искате информацията там да попада в чужди ръце или да може да се открадне. Или някакви по-таргетирани scammer-и, и какво ли не. Тук се иска малко по-сериозно да се обмислят слабите места и да се вземат мерки (които може да са “пълним машината с бетон, завинтваме я за пода и я заваряваме”), които да са смислени за ситуацията.

“Конкуренцията” е много близко до горните, само че по-прицелена. Тук има и други пътища, като напр. легални – не съм запознат с българското законодателство по темата, но който му е важно, ще трябва да си го разгледа). Тук и средствата може да са повече, т.е. може конкуренцията ви да плати на някой от предната точка за нещо по-интересно.

“Държавата” е супер интересна, понеже тук си проличава утопичното мислене на хората. Криптирани файлове, секретни канали и т.н. – голяма част от това пази от предните точки, не от тази. От метода на гумения маркуч (т.е. да те бият докато си кажеш) не се пазим с технически средства, а много повече с оперативни, като например никой в засегнатата юрисдикция да няма достъп до нещата, които се пазят. Особено текущата ситуация с карантината и извънредното положение го показва много добре – ако приемем, че сме на територията на противника, който има няколко порядъка по-големи ресурси от нас, и като изключим хората, които обучават специално за целта (т.е. шпиони), които имат зад гърба си сериозна поддържаща система, и при които има над 10% заловяемост (защото оперативната сигурност е много трудно нещо), няма някой друг, за който да е смислено да мисли подобни мерки.
Или с по-прости думи, ако всичко ви е в държава в извънредно положение, колкото да са и некадърни в някакви отношения органите, със сигурност умеят търсенето и биенето и всякакви мерки трябва да взимат това предвид, например да се стараем да не ни е противник държавата…

“NSA” е по-скоро събирателно за това, което се нарича “APT” (Advanced Persistent Threat, т.е. хора с много акъл, желание и ресурси), и е пример за това кога трябва да имаме airgap firewall-и и други подобни крайни мерки, като фарадееви кафези, неща които изискват минимум двама човека и т.н.. Ако се занимавате с платежни системи и подобни неща, това в общи линии ви влиза в threat модела, иначе е много малко вероятно и много скъпо да се пазите от тях.

Така че, ако си планирате как организацията ви да работи от вкъщи, изяснете си от какво сте се пазили досега, постигнете същото (което в повечето случаи са едни VPN-и, малко обучение и малко хардуер като микрофони), и чак след това решете дали всъщност това е адекватно и го подобрявайте. Но е важно да не се взимат мерки само заради самите мерки.

2020-03-20 първа седмица

March 20th, 2020 by Vasil Kolev

Интересна седмица.

Една прилична част мина в настройване на звука на хора – първо на преподаващите в курса по операционни системи във ФМИ, после на всичките хора от фирмата, наваксване с работата, готвене, още работа, и всякакви неща “какво можем да направим в това положение, което да е смислено”.

В момента курсът по операционни системи ползва за част от нещата комбинация от live streaming (с около 10 секунди латентност, може да се опитаме да го смъкнем) и irc, и за някои други неща jitsi meet (подкарах едно при мен на jitsi.ludost.net, който иска може да го ползва). Като цяло гледаме да ползваме локални ресурси, и от гледна точка на латентност, и от гледна точка на това да не удавим външните тръби без да искаме.
(това с тръбите май малко се преувеличава де, в България има бая хубав интернет и това, че netflix ограничиха да stream-ват само SD по време на пандемията по-скоро говори за липса на капацитет при тях)
(но е доста важно да не зависиш от твърде много външни ресурси)

Jitsi-то и irc-то също са доста полезни, като гледам, а хората за да не полудяват си правят сутрешното кафе по видео конференции. Други хора се организират да сглобяват emergency вентилатори (има някъде fb група по темата, в която се намират и малко медицински лица), някои печатат на 3d принтери компонентите за предпазен шлем при интубиране и подобни (друг линк до файлове за такова нещо) (даже мисля, че принтера в initLab вече е впрегнат по темата).

Забелязах и как като една от бабите излизаше от входа (някъде в началото на седмицата), една от съседките и предложи да и взима отвън каквото и е нужно, да не се излага на риск, накратко, въпреки че има някакви идиоти, времената изглежда все пак да изкарат и хубавото в повечето хора.

Та оцеляхме една седмица. Остават поне още 7. Аз лично ще броя за голямо постижение, ако не се стигне до изкарването на армията по улиците (което може да се случи и без наложителна причина, просто за да се опита някой да трупа политически капитал) или не полудеят всички.

Наздраве и лека нощ.

2020-03-13 streaming по време на чума

March 14th, 2020 by Vasil Kolev

Живеем в интересни времена. Даже идват от Китай.

Anyway. В последните няколко дни имам различни разговори по темата как може да се продължат различни преподавателски дейности online. Почти сме сглобили нещо за упражненията по “Операционни системи” във ФМИ, и си говоря с един приятел, който обмисля да сглоби нещо такова за училището си.

Ще напиша нещо по-подробно с как/какво може и т.н., но понеже не съм виждал преподаване в последните 10 години, и училищно такова от 20, много ще се радвам, ако някой каже от какво има нужда – доколко да има обратна връзка/да се виждат учещите, какви неща за показване (т.е. нещо да играе ролята на бялата дъска), дали трябва да се вижда самия преподаващ или дъската/екрана му стигат, и такива неща.

2020-02-20 “Лично досие”

February 20th, 2020 by Vasil Kolev

(имам да пиша и за FOSDEM, ама като стигна до там)

От миналата година от двете наистина важни излезли книги – биографията на Едуард Сноудън и Mindf*ck за историята около Cambridge analytica, първата тия дни излиза на български (издават я Егмонт, което мен много ме учуди). Ако не сте я чели в оригинал и/или имате познати, които не могат да я четат в оригинал, определено си струва.

(моето общо с това е, че съм технически редактор на българския превод, та всякакви оплаквания по темата – към мен)

Комбинацията от двете книги показва нещо много важно – колко лесно може да се събира ефективно масово информация за всички хора по света, и как може да се използва срещу тях. Съответно може да замените “тях” с “вас” за да усетите по-добре какво значи на практика.

2019-12-25

December 25th, 2019 by Vasil Kolev

Изминалата година най-добре може да се опише с текста от коледната ми картичка от фирмата: “Пожелаваме ти да се наспиш и да можеш да си работиш на спокойствие” :) Друго, доста очевидно нещо е как за пръв път чета по-малко от 30к страници за една година.

Вероятно ще напиша по-пълна равносметка в идващите дни, и идеи какво искам да свърша догодина (може даже да прегледам какво съм бил планирал за тая и какво съм свършил), но само ако намеря време.

StorPool-ската игра на OpenFest 2019

November 5th, 2019 by Vasil Kolev

В последните няколко годинии (2017, 2018) сглабям по някаква online игра за щанда на StorPool на OpenFest. Тази година пак сглобих нещо такова, и понеже изисква някаква сървърна част, просто ще му напиша описание, а който иска, може да го setup-не някъде, всичките му неща могат да се свалят от quiz.storpool.com/of2019.tgz.

Играта изглеждаше по следния начин: в началото човек се логва на един сървър, и в motd-то го посреща описание от “предишния човек”, който е hack-вал машината:


yo

i kept working on this, but what i've seen that there's
a strange firewall, and we need to get to port 3xxx. there's
some readme in a weird encoding, no idea how to read that.

the guys that wrote this system are the worst, it's a patch
over duct tape over bad stitching.

looking at the way i got this password, they know nothing
about crypto, anyway, so it should be easy.

gl

Информацията в този текст в общи линии е “нещо слуша на порт 3xxx, има странен firewall, има документация във формат, който не мога да прочета, и тия хора от криптография не разбират”.

В директорията освен този файл (“y00dud3”) има още два – kdctl.dump и manual.EBCDIC-INT. kdctl.dump е strace на /opt/kd/linux-x86_64/devel/bin/kdctl, който може да се види как прави connect() до localhost на порт 3xxx (където “xxx” е номерчето на user-а, имаше отделен порт за всеки участник). Ако човек се опиташе да пусне kdctl, му даваше permission denied (и такова нещо няма, сложих просто permission-и 000 на една от директориите по пътя), така че човек трябва сам да се прави на клиента.

manual.EBCDIC-INT представлява малко документация, обърната в EBCDIC, която човек може да си конвертира обратно с iconv (или както се оказа, с dd). Вътре има описание на системата, с която трябва да се говори, и малко development информация за протокола, като част от информацията е криптирана:


KroberDyne access terminal v2.1.18-fcdb1fa
==========================================

!!! This document is property of KroberDyne corporation. A license is
!!! granted to the purchaser of this system for 1 (one) copy. All
!!! unauthorized copies must be destroyed.

Audience
========

This document is for use of the commander of the operation in which
the KroberDyne terminal is used. A simplified version is avaiable
for the operation personnel.

Introduction
============

The KroberDyne(tm) access terminal provides accesss credentials to
authorized users to be able to interact with KroberDyne(tm) Semi-
Autonomous Unmanned Aerial Vehicles. Its goal is to provide the
sufficient authentication of a pilot to provide it back with the
proper codes to authorize the activation of different sensors
and activators.

The terminal authentication is certified to be used with UAVs
that carry nuclear and biological weapons. Please refer to document
KD-25.8069 for more details.

Usage
=====

The terminal is to be used mostly via the main client, kdauth.

Usage: kdauth

The tool will prompt with the relevant codebook names and will
request a password that matches. On success, it'll provide back the
allowed credentials.

Development
===========

The protocol to communicate with the device is line-based and
follows the basic notations of IETF protocols, for convenience.
Return codes in the 2xx mean no problem, 4xx are authentication-
related, and 5xx non-transient errors.

Commands:
AUTH - requests authentication data
PASS - sends password
LANG - sets protocol language for some messages. Currently only
English ("en") is supported.
HELP - short list of commands.

The following extra commands are available for support purposes.
As their usage is dangerous, the following information is encrypted.
Please contact KroberDyne for key access.

JNVG - gur npprff grezvany vf ol qrsnhyg qrynl-yvzvgrq gb abg
biresybj fybj frevny yvaxf. Guvf cnenzrgre pbagebyf qrynl
va zf. Hfntr erfgevpgrq gb grpuavpvnaf.

QOHT - qhzcf n fcrpvsvp gnoyr va fbsgjner.
HFNTR ERFGEVGRQ GB XEBOREQLAR FRPHEVGL FGNSS BAYL.

All rights reserved, KroberDyne corporation(tm)

(“Kroberdyne” е някаква комбинация от cyberdyne (корпорацията във филмите за Terminator) и крокодил)

“Криптирането” е ROT13 (което мисля, че дори се вижда) и вътре има следното:


WAIT - the access terminal is by default delay-limited to not
overflow slow serial links. This parameter controls delay
in ms. Usage restricted to technicians.


DBUG - dumps a specific table in software.
USAGE RESTRITED TO KROBERDYNE SECURITY STAFF ONLY.

И така, имаме протокол, с който да си говорим с един демон локално, и да се опитаме да вземем някакъв auth code. Като направим telnet localhost 3xxx, получаваме:


$ telnet localhost 3001
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
200-KroberDyne terminal VT18. Unathorized access prohibited.
200 Welcome 001
>

Тук има няколко неща, не всички са задължителни:
– LANG en, и след това HELP ще ви даде един списък от команди (иначе казва, че няма такъв файл);
– WAIT 0 ще махне забавянето при печатане (което е random wait м/у всеки 2 букви и изглежда бая странно);
– AUTH ще ви каже 3 codebook-а, от които да извадите парола;
– DBUG codebook ще ви извади всичките пароли от определения codebook, и
– PASS парола (която се среща и в 3-те codebook-а) ще ви даде код да си получите тениската.

(това с DBUG може да ви се струва невероятно, но е по съвсем истински случай, използван от първия worm в Internet)

Няколко неща може би не бяха ясни – например имаше 30-минутен time limit за всички пробващи се и после им lock-ваше account-а (което май не сработи точно както трябваше), и може би не беше ясно до какво точно трябва да се стигне. Хората, решили задачата са малко, доколкото знам, та явно догодина ще трябва повече подсказки. Портовете бяха филтрирани така, че всеки да може да се връзва само на собствения си, и всъщност имах и идеята да изисквам определен range за source port, но не намерих за краткото време, което имах лесен начин човек да си намества source port-а от telnet, и реших да го прескоча.

Иначе, интерактивен сървър с команди се оказа тривиален за правене, с малко python и един rlinetd да се занимава с TCP-то отпред, може да видите колко е тривиален кода вътре.

Четири числа на тема броя хора в IT-то

October 11th, 2019 by Vasil Kolev

Днес ми изпълниха заявка от НСИ по темата “колко системни администратора има в България”.

Искам преди това да кажа, че това са едни прекрасни хора – след като си подадох online заявка в свободен текст (“колко човека е имало на трудов договор през годините с код на длъжноста 2522* и 25*)”, те ми се обадиха да ми кажат какво имат (че данни за нещо такова се събират на 4 години, и още не са обработени тези за 2018, тях ще ги има догодина), и след като ми взеха невероятната сума от 1.86лв (платими през epay, тривиално online) ми пратиха данните.

Самите данни са 4 числа: през 2010та на код 2522* е имало 3478 човека, на код 25* – 20360 човека. През 2014та на код 2522 е имало 4847 човека, на 25* – 29413 човека.

Гласуване за лекции за OpenFest 2019

October 7th, 2019 by Vasil Kolev

TLDR – Гласуване за лекциите за OpenFest 2019.

Както всяка от последните години, имаме едно консултативно гласуване за лекциите за OpenFest 2019, резултатите от което ни помагат да подредим лекциите по зали и да избегнем колкото можем конфликтите.

2019-09-08 нов мрежов setup в 3dc

September 8th, 2019 by Vasil Kolev

Преди някакво време с Мариян си взехме половин rack в 3dc, за да си слиожим там разни машини (и подслоняваме други проекти, последно linux-bg.org). Свършихме малко интересни неща с мрежата и ми се ще да ги разкажа, заедно с разни бъдещи планове.

В началото бяхме на един гигабитов switch (Quanta LB4m, стои ми в момента в краката). От там тръгна setup-а с няколко vlan-а – един за публични цели (/27), едни за ipmi, и разни за външните връзки. От самото начало две машини бяха router-и и за всяка връзка навън или навътре се правят сесии и до двата.

Последва разширяване, първо с един, после с втори 10gbe switch – Arista DCS-7050S-64 и DCS-7050S-52 (имаше и някакъв междинен, който не мога да си спомня). Самите switch-ове имат много приятен начин за настройка, понеже на практика са откраднали Cisco CLI-то и са го направили приятно за ползване. В началото използвахме основно единия, после закачихме всичко на двата, взехме една кофа медни SFP-та и махнахме гигабитовата Quanta.

За redundancy (понеже веднъж се случи да crash-не единия switch), първоначално направихме setup-а с active-passive bond-ове с miimon (arp_monitor щеше да е трудно заради неяснотата какво точно да се пингва, вероятно трябваше да са самите switch-ове). Не сме мислили за идеята за MLAG и клъстериране на switch-овете, понеже поне моя опит показва, че няма никой производител, който да може да си направи правилно клъстерирането и отпадането на единия switch да не повлияе на другия (и вероятно мога да напиша един blog post по темата).

Текущата стъпка е active-passive bond-а да се замести от отделни BGP сесии през двата switch-а до двата router-а, т.е. общо 4 сесии. Създадох по един vlan на switch (за да не пипам съществуващия трафик), peer-нах там машините с двата router-а и те си анонсират на /32ки адресите, които имат. Така се постига по-добро redundancy, понеже всяка машина има 4 пътя и при отпадане на каквото и да е може да знае кои други пътища и работят.
(има пуснато и BFD в схемата, на което Мариян ме открехна, и сесия се усеща, че е умряла за около секунда, вместо стандартните BGP timeout-и)

С този setup също така може да се пусне ECMP (equal-cost multipath) и да се ползват и двата интерфейса едновременно (не че някой пълни и един 10gbps интерфейс, но принципът е интересен).

Обмислях да направя директно следващата стъпка вместо тази, която е вместо с двата router-а машините да говорят BGP директно със switch-овете, като така се намалява броя сесии. Това обаче изисква малко tooling, за да мога да синхронизирам конфигурацията на двата switch-а по темата и доста внимание да не изтърва пълна таблица натам, защото ще клекнат (така като гледам, на пръв поглед поддържат до 16к пътя). В този случай обаче все пак ще трябва да оставя L2 нещата по switch-овете за външните връзки, т.е. не мога да мина изцяло на route-нат setup (защото не мога и да терминирам сесиите директно в switch-овете, въпреки че обмислям хакове да прекарвам многото трафик директно през switch-овете, с VRF-и).

Също един от следващите планове е cloud-тип нещо – три железа (с най-вероятно StorPool за storage), около 1 TB памет, 100-ти на core-а и изцяло route-ната мрежа, до самите виртуалки. Също така обмислям и router-ите да са 2 и да са пак виртуалки, с PCI pass-through на мрежови интерфейси, но това трябва да си го досглобя в главата – има разни подробности за най-подходящия point-to-point интерфейс за вътре във виртуалките, и за начина на реализация на вътрешни мрежи.

(
Дълго време гледам как чисто layer2 мрежите имат купчина неудобни проблеми от гледна точка на redundancy и използване на целия си ресурс. Редовно виждам как в datacenter мрежи STP-то, клъстерирането и подобните неща убиват някакви услуги, и пробутвам на разни хора идеята да минат на layer3 мрежи – от много време няма някаква разлика в performance на двете. Явно е по-правилно да дам пример :) )

2019-08-04 единичен апокриф

August 4th, 2019 by Vasil Kolev

От серията апокрифи, с добавка.

Преди година-две се возех с един приятел, и той ми разказа следната история: българска фирма, която едно време продаваше много мрежов хардуер на isp-та, си поръчала много оптични конвертори от Китай.Пазарили се здраво с китайците за отстъпки, и накрая китайците казали – добре, за тия пари ще ви направим конвертори, и им ги пратили…

Пуснали те първите конвертори за разни потребители, и дошъл въпроса “защо през тая връзка мога да сваля zip файл, ама doc не мога?”… И тук човека ме пита – сещаш ли се какво е станало?

И аз си спомних как преди много години, около 1998, почти всичкия internet беше серийни връзки, и бяхме намерили начин да качваме серийния асинхронен сигнал в/у радио и да го носим на някакви сериозни разстояния, но имаше малък проблем – като пуснеш само нули или само единици, и те потрошаваха сигнала, понеже нямаше какво да му поддържа нормално нивото. Нещо като manchester encoding щеше да реши проблема (и да ни смъкне двойно bandwidth-а), но тогава такива неща не ни бяха във възможностите, за това написах малко демонче, наречено lfld (“line-fill daemon”), което в моментите, в които няма сигнал от серийния порт, да бълва “U” (01010101 в binary, 0x55), та да държи линията в нормално състояние, и на pppd-то беше обяснено да escape-ва 0x00, 0xff и 0x55. Тия дни дори си видях кода някъде, и е средно зле, ако има интерес към подобно нещо, мога да го кача някъде (може да се наложи допипване, че да работи на kernel > 2.0)
(синхронен сериен порт също би трябвало да ни реши проблема, ако си носеше clock-а със себе си, но тогава тия неща бяха ужасно скъпи)

Та, какво се оказало – китайците спестили от едни регулатори на волтажа, та нещо с голяма ентропия е ок (като zip-а), нещо с много повтарящи се битове – не толкова. Та фирмата организирала работилница, и половин София им помагала да patch-ват с поялниците всичките тия хиляди конвертори…

Учудващо как някакви проблеми не изчезват :)

НАП Leaks

July 20th, 2019 by Vasil Kolev

Та, leak-а от НАП.

(никак не съм благодарен на хората, дето са ми дали телефона на разни журналисти, които да ми задават умни въпроси от ранната сутрин, без аз да имам никаква идея от нещата)

Върви много спам по темата, няма да преповтарям неща от там. По-скоро ми се мотае въпроса, този набор от файлове от къде точно в НАП идва? Би било много интересно някой да анотира и напише какво има там като типове справки/данни, понеже поне по някакъв начален поглед и малко разпитване, онова там е тюрлю-гювеч (да използваме техническия термин). Изглежда като “staging” за раздаване на поискани справки по неофициална линия (особено файла QNEQNEV.CSV), и това изглежда като по-интересния момент – кой, какви справки и защо си е вадел от там.
(също така, някой да вземе да публикува какъв е тоя неофициален ред за искане на справки – от много време ми е интересно колко човека в България се водят на sysadmin-ска длъжност (даже не ме интересува кои са, просто числото))

А колкото до хлапето, което са събрали и са тормозили цяла нощ да си признае, няма да се повтарям, че тия освен, че не са хора, не са и особено грамотни.

Sysadminday 2019

July 15th, 2019 by Vasil Kolev

26-ти юли, петък, 19:30, “Кривото” на ъгъла на “Дондуков” и “Будапеща”, в мазето – събираме се за деня на системния администратор.
update: коригирано юни на юли…

2019-07-14 разни

July 13th, 2019 by Vasil Kolev

(днес имаше ден на отворените врати в initLab, но май никой не беше разбрал, основно обичайните заподозрени свършихме малко работа. По принцип е всяка втора събота на месеца, за заинтересуваните)

За рождения ден (някакво време след като излязох от болницата) група хора ми подариха квадратен монитор, да работя на него (след като си смених лаптопа с нещо много странно с 4:3 екран, щото 16:10 ми беше писнало). С няколко фалстарта (видеокартата ми на текущия не обичаше конвертори, прекъсващ кабел и т.н.) в момента съм на него на работа, и тотално не мога да си обясня как може да се работи по друг начин. Виждам си всичкия код, мога паралелно с него да гледам някакви логове, схемите ми се събират на екрана и не трябва да ги сплесквам по вертикала, изобщо радост за душата. Препоръчвам на всеки, дето върши някаква работа.

По темата се зарових да видя какви са опциите, и явно единственият монитор в тоя размер е този – човек може да си купи панел с тоя размер и LVDS (или по-нормален) интерфейс от китайците, но ще трябва да си направи и стойка (или монитор като за авиодиспечер, или медицински цели). Предполагам, че повечето хора се справят с много широки монитори, за да си докарат нужния вертикален момент, или правят както Кънев едно време в initlab (два 16:9 монитора на 90 градуса и още един в нормална позиция, за тестване).

Явно индустрията се е ориентирала към гледането на филми, дано не дойде момента, в който неща като Cinerama (2.59:1) станат модерни, тогава всички, дето трябва да вършим работа, ще трябва да си купуваме медицински монитори.

Хрумна ми също така, че перфектния ми лаптоп би имал подобен монитор, който да може да се сгъва на 4, т.е. да имам квадратен малък, и разгънат квадратен голям такъв (когато имам място), но това отива в научната фантастика (заедно с model M клавиатура в лаптопа, и вероятно екзоскелет, че да мога да го нося без да ми се строши гръбнака).

(in other news, ако някой му хрумва клавиатура с подобен размер и усещане като model M, но по-тиха, да каже, че ще вземат да ме изгонят от офиса)

OpenFest 2019 – CfV, CfP

June 20th, 2019 by Vasil Kolev

Та, ако някой се е съмнявал, да кажа – ще има OpenFest 2019. Тази година имаме някаква насоченост към бъдещето, и едната посока е човешкото бъдеще, т.е. ученици и други деца, та от там и голямото “Tomorrow” в страницата. Очаквайте по-ясно описание на самия сайт (аз малко недоспивам тия дни).

Както винаги си търсим доброволци и лектори.

Посещение от НПМГ в лаба

June 16th, 2019 by Vasil Kolev

(чак сега успявам да пиша)

Преди няколко седмици организирахме посещение на ученици от НПМГ в лаба – един техен учител (Теодор Катранджиев) се свърза с нас и пита дали може да но посетят и да видят какво правим.

Дойдоха в лаба, показахме им различните неща, които имаме и правим, обясних неформалния характер на мястото, и ги позабавлявахме с разните странни неща, които имаме – разказах им за системата за отваряне на вратата и контрол на лампите, показах им едно софтуерно радио, и един стар MFM-RLL харддиск (питаха ме колко е голям, казах – 10 или 20, и Теодор ми напомни да спомена, че това са мегабайти).

После отделихме едно прилично количество време да ни задават въпроси – в лаба бяха хората от camplight и те доста помогнаха. Имаше въпроси по темата работа, къде да учат след училище и всякакви такива неща (където обяснявах, че в България ФМИ на СУ е най-малко зле). Разказахме им за всякакви хакатони, за различни компании, които си търсят хора и всякакви такива неща, и се надявам че им бяхме полезни.

(и тия дни като обявим официално call for volunteers за openfest, ще им го пратим и на тях)

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

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

2019-04-26 две събития

April 20th, 2019 by Vasil Kolev

Изпратих семейството надалече и ми остана малко време за социални събития, та за един ден отидох на две (вместо да си отспя).

Първо сутринта отидох до ТУЕС, където имаше ТУЕСФест – интересната част беше, че навсякъде по стаите и коридорите ученици бяха изложили проекти, които бяха направили. Имаше толкова забавни неща, че ме хвана детска радост:
– машина за организиране на drinking game;
– група осмокласници бяха изкормили и mod-нали кафе машина, така че да могат да я командват гласово;
– имаше няколко security-ориентирани дипломни работи – IDS, reverse VPN, нещо, дето атакува wireless мрежи;
– излъчвател на DCF77;
– софтуерно радио – човекът с един RTL2832U си беше направил вузиализация на ефира и възможност за слушане на FM радио;
– минималистичен компютър от breadboard-ове и интегрални схеми, който наближаваше turing-complete машина;
… и някакви други, дето не съм запомнил, ТУЕС ще направят едно добро дело като публикуват списъка.

Следобеда отидох на Uber Open Source Summit в CityStage, където ме бяха поканили да участвам в панел на тема “Contributing to Open Source”. Дискусията се надявам да е била полезна на присъстващите, ще видя като излезе записът какви глупости съм говорил. Самото събитие беше приятно и се намериха доста хора, с които да си поговорим, та с удоволствие бих отишъл пак на нещо подобно. Като цяло имах очакването, че като събитие, организирано от голяма компания няма да ми е особено интересно/приятно, но тук се бяха справили и нямаше разните дразнещи спамерски моменти, които съм виждал на други места.

Update: Списък с проектите от ТуесФест.

2019-04-19 FizzBuzz 3

April 19th, 2019 by Vasil Kolev

(предхождащи post-ове по темата: FizzBuzz, FizzBuzz 2)
Задачката продължава да води до интересни идеи, та ще публикувам някои от тях.

В последно време търсим java програмист, та в едно от решенията имаше следното:

try {
	errorNumber=  1/(tmpNum%15);
} catch (ArithmeticException ae) {
	return "AB";
} 

Това за мен беше съвсем неизвестен начин да се напише if() :) Ползването на exception-и е страшно неефективно (поне под Linux генерира SIGFPE, т.е. ще мине за малко и през kernel-а), но е още един начин да се промени пътя на кода.

Също така, в езиците, в които няма goto цикълът може да се реализире с рекурсия, като функцията, в която се влиза се избира от масив (идеята дойде на Slackware, който написа реализация на php), и изглежда горе-долу по следния начин:

function printto99($i) {
	global $funcs;
	....
	$funcs[$i % 100]($i+1);
}
function print100($i) {
	global $funcs;
	....
	return;
}

$funcs = array(0 => printto99(), 1 => print100());

$funcs[0](1);

В …. частта се слага логиката какво да се печата, което ме мързи да разписвам пак.

В Java тази конкретна идиотщина може да се реализира, като вместо масив от функции се направи масив от обекти с общ родител, който има два наследника – printto99 и print100 и така да се направи цикъла.