Умна шамандура, част 1

a.k.a. “инж.”, part deux

Преди време писах, че ще си водя бележки за дипломната, но се наложи да я зарежа и да не предам през януари, както беше първоначалния замисъл.

Първият draft на това е от втори януари 🙂

Ghetto-ass шамандура
“Шамандурата”, сглобена върху прототипна платка, две планки и няколко шпилки за закрепване на анемометъра, ветропоказателя, LoRa-та и GPS-а.

Ще я опиша тук, за да си припомням какви шарении съм правил преди да стана стар, циничен и (още по-) скучен. Записката излезе малко над 100 страници без задължителния пейстнат код. Освен многото приказки, има и 102 “фигури”, примери и таблици, солидна част от които си играх да рисувам.

Първоначалната идея беше следната – едно Arduino следи всички датчици и предава стойностите им безжично по LoRa радио. От другата страна да стои друг LoRa възел, който е свързан към PSoC 4 и приема данните. PSoC-ът ги предава по сериен порт към компютър, на който работи .NET-ско приложение, което ги обработва и ги тика в MS SQL баз от данни някъде. Визуализацията е с много форми, графики и т.н.

Проблемът с това е, че цялото нещо може да тръгне точно веднъж, защото има много зависимости от библиотеки, dll-и и т.н (това да се чете като “не ми се занимаваше с глупости”).

Тъй катo трябваше да напиша документацията и да направя всичко сравнително бързо, реших да не се затормозявам с излишно сложни неща и разделих работата на три части: “отдалечена станция” (a.k.a шамандура), наземна станция и уеб приложение.

Представено графично изглежда долу-горе така:

Шамандурата използва китайска имитация на Arduino Nano. Микроконтролерът е същият, но и ма малки разлики в пиновете. Когато паметта в един момент се запълни на 99%, контролерът спря да работи и да се разпознава от компютъра. Оказа се, че докато е в “bootloader” режим (или както се нарича, режимът, в който влиза, малко след като му се бутне Reset копчето), може да се програмира. Освен това се оказа, че Serial1.available() връща true, когато на серийния порт няма нищо. Дори когато RX пинът е с pull-down резистор. Благодарение на това се наложи да правя геройства като изчакване на някакви секунди време, когато си говоря с LoRa модула.

Така и не успях да подкарам GPS модула успешно, дори след като го изкарах на терасата и чаках 30 минути да търси сателити с неговия си софтуер. Хардкодването на NMEA данните, които очаквах, ми спести няколко байта и нещото заработи пак.

Тук е моментът да си призная как ме домързя да изградя LoRa мрежа само за едната дипломна работа. Добре, че модулите (RN2483) могат да работят като прости радиа. Цялата безжична комуникация се гради на две команди.
В изпращащата част:
mac pause\r\n
radio tx CAFEBABE\r\n

Където “CAFEBABE” е гениално построеният ми пакет от данни, разделени с точка и запетая, но представен като шестнадесетичните стойности на ASCII кодовете на всеки символ от низа.

Приемащата част прави това постоянно:
mac pause\r\n
radio rx 0\r\n
Втората команда отваря неограничен прозорец за приемане на данни и блокира модула, докато не дойде нещо.

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

Радвам се и, че нямах антени за радиата, защото иначе щеше да ми се наложи да вложа мисъл и да се боря със смущения, ако някой беше решил да предава произволни данни на 868 MHz. Вярно е, че щеше да ми е по-забавно да направя комуникацията с целия LoRa стек, но реших да не се хабя толкова. Някой ден ще си поиграя с истинското нещо, както трябва.

Като се замисля, че миналата година си играх да чертая схема на Proteus за това, ми става смешно.

В един момент мислех да сложа и LDR, за да следя видимостта и коя част от денонощието е в момента. (наблюдателните ще забележат, че някои букви имат фон, защото ме домързя да експортирам наново и трих фона, който слага Proteus, с GIMP)

Приемащата част на това беше изключително лесна – PSoC 4, който само праща команда за чакане към LoRa-та, приема, каквото дойде и го предава към компютъра. В PSoC Creator това изглежда като два UART блока и малко код за комуникация.

На компютъра работи .NET (C#, разбира се) приложение, което слуша на някой COM порт, обработва данните и ги хвърля към уеб приложението. Изглежда така:

Token-ът е md5 на “suck my dick”.

Първата версия се казваше “Shamandura Control Center” и използваше DevExpress. Имаше няколко екрана за управление на всичките данни, но не ми хареса колко много работа трябва да се свърши, за да изглежда добре и зарязах.

Най-забавната ми част от това е, че BackgroundWorker-а, който се грижи за серийната комуникация, има методи “worker_Suffer” и “worker_Whine”, съответно за DoWork и ProgressChanged. Голямата хитрост тук е, че използвам ProgressChanged метода, за да си пращам съобщения, които да вършат нещо в UI нишката. Това е, за да избегна всички красоти около делегатите и другите C# неща за достъпване на контрол от не-UI нишка.

Така нареченото уеб приложение е Symfony проект с няколко контролера, генерирани с app/console generate:doctrine:crud и един, който се грижи да приеме и обработи заявката от десктоп приложението. Бидейки почти арт директор, намерих готова bootstrap-ска тема и я орязах, докато заприлича на нещо.

След логин излиза това.

Скоро не си бях играл с Google Maps, затова след логин в системата се показва карта с всички шамандури и по тях може да се цъка. В страницата с “детайли” на шамандура има няколко графики и карта с история на местоположението.

Тук скрих sidebar-а.

Това е.

Смятам, че си заслужих шестиците. Заедно с мен шестиците си заслужиха и проекти, които работят само на хартия и такива, на които дизайнът включваше форми, подредени с <br/> и много &nbsp;, както и черен цвят на тъмнозелен фон. Всички сме инженери 🙂

От въпросите, които ми зададоха, ми беше интересен следния: “Добре, де, виждам, че сте използвали всякакви езици: C, C#, PHP, има сайт… Защо не го написахте цялото на C#?”. Това зададено с леко тъп, снизходителен тон.

Bullshit mode: ON.

Както писах, горе – мързел. Използвайки суперсилата ми за празни приказки, “мързел” се превърна в обяснение как няма смисъл да товаря компютрите на хората със зависимостите, които води със себе си сложния .NOT проект. Всички имат браузър => сайт.

Приключвам с училището след близо 18 години. Ако се пречупя, може да изкарам и PhD, но това е прекалено ниско в приоритетите ми засега.

return; return; и обратно към интересните неща.

Програмата за геодезически задачи и за Android

Тъй като виждам, че доста често се тегли desktop версията на програмата за геодезически задачи, реших да я напиша набързо и за Android. Все пак, след като имаше версия за MIDP 2.0 телефони, защо не и за нещо по-модерно 🙂

Оказа се забавна играчка и смятам да добавя още доста неща, но първо ще трябва да намеря учебниците по геодезия, за да си припомня кое какво беше.

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

Може да се свали от Google Play от тук:
Get it on Google Play

Умна шамандура, част 0

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

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

Планът в момента е да има това:

  • Метеорологична станция (частта за “наблюдение на морската среда”), която ще мери следните неща:
    • посока и скорост на вятъра,
    • температура на водата,
    • температура и влажност на въздуха,
    • атмосферно налягане,
    • видимост (т.е. дали има мъгла)
  • GPS, който да следи дали шамандурата не се е откачила от котвата
  • Радиовръзка до “наземна станция”. Това ще са две LoRa радиа (RN2483 на Microchip), които ще си говорят (засега еднопосочно). Най-вероятно “шамандурата” ще праща към приемащото радио, което ще е закачено по сериен порт към компютър
  • Светлинна и (може би) звукова сигнализация, което е силно вероятно да са мощен светодиод и “сирена”

За реализацията смятам да използвам един PSoC 4 и малко Arduino. Още не съм решил какво ще представлява “наземната станция”, но най-вероятно ще е PSoC-а, който взема данните от радиото и ги предава по UART към компютър с някакъв софтуер. Този някакъв софтуер най-вероятно само ще рисува карта и шамандурите върху нея с проста база от данни отзад за добавяне, редакция и т.н. на шамандури.

Към момента имам почти всичко за шамандурата готово – едно Arduino Micro Pro събира данни от всичките датчици, пакетира ги и ги праща по серийния си порт към компютъра, където си представям, че са дошли по радио.
Остава ми да направя GPS-а, да започна да чета данните за посока и скорост на вятъра и комуникацията с компютъра.

Ако не бях изгорил GPS модула, можеше и да съм готов вече. Кой да предположи, че като размениш VCC и GND платката ще замирише…

Spotify shower

(Това стана дълго. Директно към свалянето)

Преди (вече доста) време в офиса ни отрязаха YouTube и Facebook. И двата сайта редиректват към jobs.bg. Колкото и да е хитро и да ме радва идеята, основният ми източник на музика от 9 до 6 дотогава беше YouTube. Докато съществуваше Grooveshark, се преживяваше, но го убиха и трябваше да търся други решения.

Основното ми изискване към плеърите, които ползвам, е да мога да следя какво съм слушал в last.fm. Често това доста ми ограничава избора.

Първо на едното OLinuXino пуснах ampache, което stream-ваше от външен диск. Като изключим всичките грозни хакове покрай подкарването му да го виждам на работа, всичко беше идеално. Ако не се бъркам, имах ReverseProxy на едно apache някъде, което водеше до единия рутер, който препращаше към OLinuXino-то. Дори да бъркам за проксито, накрая със сигурност имаше SSH с port tunneling през PuTTY и слушах музика на http://localhost:8008/ampache. Гениално, да, но малко след това ми омръзна да слушам едно и също. Защото дори краденето законното сваляне на нова музика изисква известна липса на мързел.

През цялото време бягах от Spotify, защото рекламите не ми действат добре и не ми се занимаваше да плащам такса всеки месец. След известно време с реклами накрая се прекърших и от няколко месеца използвам Spotify Premium. С малки изключения съм доволен и не мога да измисля много неща, от които да се оплача. Може би случаят, в който някой ми открадна акаунта и го напълни с немска чалга, е причина за оплакване. Намирането на контактите на support-а им се оказа трудна задача, но накрая ми оправиха проблемите приемливо бързо.

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

 

rage_preview
Между taskbar-а и desktop-а

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

На скрийншота горе се вижда, че спокойно мога да си виждам песента. Така е, но той е от лаптопа, върху който не ползвам Windows често. Taskbar-ът ми на работа изглежда долу-горе така през по-голямата част от времето, когато нямам осем отворени инстанции на Visual Studio:

20160422desktop
Когато “Close to tray” не се чупи, нямам и Spotify прозорец.

Първо опитах да ползвам API-то, което предлагат от Spotify, но липсата на продължаваща поддръжка и огромния overhead ме спряха. Няма смисъл да включа огромна библиотека, да се занимавам с автентициране, токени и т.н., само за да взема името на текущата песен. С 15 секунди търсене попаднах на SpotifyToaster, който взема името на песента по хитър начин. Програмата се закача за процеса на Spotify и започва да слуша за Name Change събития. При всяко такова се опитва да вземе името на песента и го показва.

settings_screen
Главният прозорец с “настройките”

В момента приложението показва песните по два начина – с “overlay” и “проста форма”. При първия се пуска отделен процес, който рисува директно върху Desktop-а, а при втория излиза недекорирана форма. Отделният процес се наложи, защото се оказа, че само със C# не мога да сляза толкова надолу (въпреки, че викам същите Win32 функции от същите DLL-и) и нещото се рисуваше върху taskbar-а вместо под него. Дори с допълнителното приложение има тъпи проблеми, които не ми се занимава да решавам, защото не ми пречат.
Ефект на рисуването по този начин е, че всяко опресняване на област, върху, която съм рисувал, затрива това, което е имало преди това. Пример:

overlay_before_screwup overlay_screwupРешавам, че това не ми пречи, защото винаги рисувам под taskbar-а, а там не бутам кой знае колко често.
Освен това имаше случаи, в които заглавието на предната песен не се зачистваше правилно и се получаваше тъпо застъпване. В момента съм си решил проблема като рефрешвам около правоъгълника, който се рисува. Ако някога реша да си доразвия приложението, ще го направя по-умно, но към момента си върши работата идеално.

Вторият вариант за показване на песните използва проста форма без декорация, която пак навирам под taskbar-а, за да я виждам постоянно. Не мога да избера кой вариант ми харесва повече. Ако стигна до release, най-вероятно ще оставя само формата, защото пускането на отделен файл като дъщерен процес може да направи проблеми при определени тъпи настройки и permission-и (или поне както го пусках в началото). И без това с два изпълними файла ми се струва прекалено претрупано.


Още не съм решил как да си кръстя приложението. В момента се казва SpotifyShower, но не като душ, а като “показвател”. Не знам и дали иконките, които му избрах, са достатъчно различни от оригиналната. Важното е, че ми върши работата, която искам.

Последната версия може да се свали от тук (zip, ~178KB).
Трябва инсталиран .NET 4+. Ползвал съм го само на Windows 8.1 и не гарантирам, че ще тръгне навсякъде.

Когато се пусне, излизат настройките, от които се избира къде да се показва песента и начинът на показване. При “Save” или минимизиране се скрива в notification area-та, за да не ми пречи. Когато се освободя, ще му сложа възможност за локализация, защото само с хардкоднати текстове не става.

Все още има някои проблеми, които трябва да реша, за да съм напълно доволен. Например, от време на време закачането към евента гръмва и приложението крашва или пък заглавия на песни, които имат специални символи в името си, излизат наполовина. Според скромните ми наблюдения останалите подобни приложения имат същите проблеми, така че не смятам да си давам много зор с това. Поне не за момента.

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

Докато пишех това, видях, че в новия WordPress paste-ването на URL при отбелязан текст прави линк автоматично. Ще ме накарат да мисля повече неща за писане.

Privacy fuckup

Днес към 11 ме посрещна следният имейл: “Your Mojang password has been changed”. Не бях бутвал Minecraft или каквото и да е свързано с Mojang от няколко месеца, затова очевидно няма как аз да съм сменил паролата.

В имейла имаше линк за директна смяна на паролата, затова нещастникът е имал по-малко от час да се радва на акаунта ми. За това време е сменил всичко, което може да се сменя, с изключение на имейла. След като се логнах, смених всичко без името ми в играта, което може да се сменя веднъж на 30 дни. Писах на Mojang, но благодарение на Коледната им почивка все още отговарят на ticket-и от 24-и януари. Най-вероятно боклукът ще играе с моя акаунт и тъпото име, което е сложил, поне седмица, докато не се изясни всичко.

Реших да сменя всичките си пароли и попаднах на интересни неща, докато ровех из опциите за сигурност на facebook. Оказа се, че всякакви малоумни сайтове успяват да ми източат данните. Въпреки пуснатия adblock с добавени филтри за това. Не точат нищо, което да не е публично, но пак са утрепки, защото го правят неявно.

Решението е лесно – в настройките за приложения -> Apps, Websites and Plugins -> Edit -> Disable Platform.

Tough choice...
Tough choice…

Любимата ми част е “Your friends won’t be able to interact and share with you using apps and websites”. Звучи добре. Не знам защо не съм се сещал по-рано, че може да има такова нещо.

Стигнах и до частта за рекламите, но там нацелих еднорог:

Това не се случва често.

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

securityexpert

Остава само да подкарам нещо подобно на pi-hole върху някое от OLinuXino-тата.

“инж.”

Завърших. От две седмици съм инженер. Остава само да ми дадат дипломата.

Темата на дипломната ми работа беше “Проектиране на микропроцесорна система за управление на безпилотен летателен апарат”. Исках да е нещо с “летателни машини” и “21-и век”, но само на мен щеше да ми е забавно. Oбикновено това не ми е проблем, но имайки предвид, че трябваше за десетина минути да убедя 5-6 души, че заслужавам да стана инженер, остана това заглавие. Не щеш ли ми се получи и ми писаха две шестици.

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

Основната цел на контролера е според наклона и ускорението на дрона по дадена ос да изчисли скоростта на всеки мотор.
Звучи просто – четеш датчиците, смяташ, казваш на моторчетата да се въртят и толкова. Да, ама не е точно така.
Четенето на жироскопа, акселерометъра и компаса отнема време. След като се прочетат всичките състояния, трябва да се комбинират и да се разбере точното положение на обекта в пространството. Когато най-накрая се разбере колко и накъде се е накривило нещото, трябва да се реализира PID алгоритъма, от който пък ще излязат нужните стойности за контролерите на моторите (или ESC-та). Докато става всичко това, трябва да се следи какво се бута по дистанционното и да се реагира подобаващо.

Преди да се стигне до правенето на дипломната, се наложи да си купя една камара чаркове и да сглобя готовия дрон с готов контролер, за да се науча да го управлявам. Резултатът след близо два месеца чакане на доставки беше бързо сглобяване и първи опит за истински полет. След като успях да го задържа във въздуха с почти никакви настройки на PID-а, говедото реши да се преобърне с перките надолу. Не знам дали заради вятъра или гениалния пилотаж. Няма значение.

Да не се кара в некомпетентно състояние!
Да не се кара в некомпетентно състояние!
2015-04-26 16.27.32
От друг ъгъл също е прецакано, да

В последствие се оказа, че едното моторче не стартира, както се очаква от него. Едно чакане на доставка по-късно се сдобих с по-големи моторчета, нов дисплей за контролера и по-големи перки.

2015-05-18 15.43.00
Новите са малко по-бавни, но по-големите перки и по-голямата мощност на моторчетата (252W-285W!) компенсират

За да се избегнат евентуални по-лоши падания, трябваше да го сглобя по малко по-добър начин. В първата версия контролерът и платката за разпределяне на захранването (Power Distribution Board, PDB) бяха вързани със свински опашки и тиксо. Професионална работа, да. В текущата версия контролерът и PD платката са закрепени с болтове една върху друга и директно върху рамката.

Кабелаците малко преди да се изприберат
Кабелаците малко преди да се изприберат. В момента приемникът е вързан със свинска опашка, не с тиксо.
Power Distribution Board-а изглежда по-добре закрепен с болтове, отколкото вързан с тиксо.
Power Distribution Board-а изглежда по-добре закрепен с болтове, отколкото вързан с тиксо.
От по-близо. С бонус - косъм.
От по-близо. С бонус – косъм.

След многото падания и счупен крак на рамката май успях да докарам настройките на PID-а до приемливи за летене нива. Далеч е от перфектно, но вече поне се задържа повече във въздуха.

За контролера за дипломната работа първо мислех да използвам Arduino, но ми се стори скучно, затова скочих на PSoC 4. Цялата работа се оказа прекалено лесна. Използвах готови модули за комуникацията с акселерометъра и жироскопа (MPU-6050). Общо взето ми се наложи да сглобя елементарна комуникация и да си напиша супер прост PID контролер. PSoC 4 Pioneer Kit-а, който използвах, поддържа Arduino shield-ове, затова си начертах платка, върху която да сложа IMU-то и хедърите за ESC-тата и радиото. Добре че имаше кой да ми каже колко е тъпа платката и да я оправи преди да я ецне.
Накрая нещото не литна както исках. IMU-то се оказа с прецакан чип – отчетите от жироскопа подскачат от единия край на скалата до другия. Мислех си, че е заради инициализацията, но като го вързах за Arduino-тата, пак го имаше. Без значение от настройките и библиотеката. Ефектът е, че моторчетата не поддържат постоянни обороти, а имат пикове. Ако не ме домързи, ще пренапиша изцяло контролера, защото в момента не става. Докато ме мързи, ще си играя с готовия и може би ще сглобя gimbal-а.

Българска клавиатура за FirefoxOS като приложение.

Преди време писах за клавиатурните подредби, които трябваше да влязат във
FirefoxOS 1.3. Тъй като последните месеци са ми пълна каша, нямах никакво време да се занимавам с тези неща и се оказа, че във FirefoxOS 2.0 българските подредби ги няма по подразбиране.

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

Днес одобриха приложението и може да се свали от Firefox Marketplace-а.

Далеч не е перфектно, но е достатъчно ползваемо като се има предвид колко малко време му отделих.
При първа възможност ще му добавя останалите неща. Като за начало ще изчистя дизайна.
След което остава да се добавят другите неща, които правят клавиатурата удобна. В TODO-то в момента стоят: допълнителни символи, които да се показват при задържане върху буква, речник с подсказки и още няколко интересни неща.

Засега е тествано само на Firefox OS 2.0. По-късно ще видя как се държи и при другите версии.

CyanogenMod experience

Преди около две седмици ми писна от stock-овия Android на телефона и реших да го разкарам.
От доста време търся добър custom ROM и основният ми източник беше един spreadsheet със сравнения между различните. Първо си харесах Pac-man ROM, но реших да пробвам CyanogenMod. Основното нещо, което ме спираше да пробвам CM по-рано, беше че камерата е много зле. Това се оказа и една от основните причини да го разкарам.

Флашването мина много добре. CyanogenMod са си направили инсталатор, с който целият процес е около пет минути. Учудващо лесно.

Въпреки че телефонът ми вървеше в пъти по-бързо, се наложи да махна CM. Едната причина е, че след цяла нощ на зарядно и цял ден без бутане (с изключение на един-два кратки разговора), вечерта имам останали 30-40% батерия.
Другата причина – в петък се опитах да снимам нещо и попаднах на тъп бъг в камерата – фокусът се размества точно преди да снима.
Резултатът е това:
2014-02-28 22.56.24

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

След ровене из разни форуми, се оказа, че най-лесно stock ROM-а се възстановява с Kies. Добре, че имам и windows на лаптопа.
Всичкото хубаво, но Kies реши да ми сложи версия La Fleur.
След два неуспешни опита телефонът ми изглеждаше така:
2014-02-28 22.55.35

Ефектът от bloatware-а се усети веднага – докато се теглеха приложенията, телефонът беше почти неизползваем.
И в момента няма кой знае каква голяма разлика – от време на време засича, анимациите не са гладки и дргуите стандартни проблеми.

Въпреки лагването и ненужните глупости батерията не мърда. За цял ден небутане вчера беше паднала на 93%. Днес играх и в момента е на 71%. Определено ще потърпя този ROM известно време. След това може да пробвам да разкарам ненужните глупости и ако не стане, да пробвам Pac-man или нещо друго. Стига да си намеря време.

Най-гадно ми е, че си затрих сейфовете на The Minish Cap от последния месец и половина.

Firefox Monument, San Francisco

На Summit-а миналата година споменаха, че ще правят нещо пред офиса на Mozilla в monumentedСан Франциско. Нещото е супер як монумент, на който са изписани имената на всички мозилианци (които са се се съгласили на това).

Вчера видях, че вече е поставен официално и че има приложения, от които мога да видя къде се намира името ми – цък
Направили са и хубаво видео по въпроса.

Пожелавам си да отида да го видя на живо:)

 

Българска клавиатура за FirefoxOS

От следващата версия на FirefoxOS вече ще има българска клавиатура. Даже 3 🙂
Screenshot from 2013-11-30 21:56:34
Ще са налични БДС, нормална фонетична и другата фонетична (която на места пишат като БАН)

Не можах да измисля по-къси имена, затова името на нормалната фонетична подредба не се вижда изцяло в списъка.